Compare commits

...
Author SHA1 Message Date
Lukas Bockstaller 5c57c9706e tests 2026-07-20 16:51:56 +02:00
Lukas Bockstaller cc280d5f6c prefetching and documenting stuff 2026-07-09 17:15:11 +02:00
Lukas Bockstaller a6b5cef3b6 big restructuring and conceptual cleanup 2026-07-08 17:50:01 +02:00
Lukas Bockstaller 7761387d07 Merge branch 'master' into self-service-storno 2026-07-06 12:53:57 +02:00
3270c4e583 Bank transfer: Fix incorrect HTML escaping in QR Code (fix #4780) (#6201)
* Fix EPC QR beneficiary escaping

* Fix EPC QR script encoding

Keep EPC QR helper output as a plain string and serialize payment QR payloads as JSON script data before the QR replacement JavaScript parses them. This preserves apostrophes without relying on mark_safe in the helper.

Assisted-by: OpenAI GPT-5 <noreply@openai.com>

* "type safety"

---------

Co-authored-by: Puneet Dixit <236133619+puneetdixit200@users.noreply.github.com>
Co-authored-by: Raphael Michel <michel@rami.io>
2026-07-06 12:52:29 +02:00
3b285a89dd Sentry: Optionally enable sending logs (#6222)
* Enable sending logs to Sentry

* change to info

---------

Co-authored-by: Raphael Michel <michel@rami.io>
2026-07-06 12:38:28 +02:00
sweenuandGitHub c1683df1fd Allow to update -> Allow updating (#6131) 2026-07-06 11:54:33 +02:00
Kian CrossandGitHub 6fdcbcebd2 Add typeahead suggestions for voucher tag field (#6058)
Suggest existing tags as the user types in the voucher tag field.
Waiting list voucher tags are excluded from suggestions.
2026-07-06 11:42:05 +02:00
Kian CrossandGitHub ddbea7c32e Customer login during checkout: Display SSO login errors inline (#5840)
Replace the JavaScript alert used for SSO popup login errors during the
checkout flow with an inline HTML error message.
2026-07-06 11:38:43 +02:00
luelistaandGitHub 3f8ed0f722 Only set vat_id_validated if vat_id non-empty (#6210) 2026-07-06 11:21:53 +02:00
sweenuandGitHub 388eb7de96 BasePaymentProvider: Fix type hinting on execute_payment() (#6078) 2026-07-06 11:19:53 +02:00
dependabot[bot]andRaphael Michel df4c83d849 Update pillow requirement from ==12.2.* to ==12.3.*
Updates the requirements on [pillow](https://github.com/python-pillow/Pillow) to permit the latest version.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/12.2.0...12.3.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-version: 12.3.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-06 11:12:11 +02:00
Benedikt BormannandRaphael Michel fa4cec8a2d Translations: Update German
Currently translated at 100.0% (260 of 260 strings)

Translation: pretix/pretix (JavaScript parts)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/de/

powered by weblate
2026-07-06 11:11:51 +02:00
943b319557 use cookieretry only on presale event pages (Z#23236752) (#6297)
* use cookieretry only on presale event pages

* use csrfcookieretry only on event index page

* include static tag

* include csrfcookieretry in order.html as well

* Update src/pretix/static/pretixpresale/js/csrfcookieretry.js

Co-authored-by: Richard Schreiber <schreiber@pretix.eu>

---------

Co-authored-by: Richard Schreiber <schreiber@pretix.eu>
2026-07-03 13:56:47 +02:00
Richard SchreiberandGitHub 28b13667ce Widget: add beta-flag to URL (#6338) 2026-07-03 12:04:54 +02:00
Raphael MichelandGitHub b00d1c9156 Bump django-querytagger 2026-07-03 11:53:34 +02:00
Raphael Michel 120317a8f2 Fix linter issue 2026-07-03 11:00:48 +02:00
Raphael Michel 7d5b00a610 Fix linter issues 2026-07-03 10:54:44 +02:00
Raphael Michel 83612c7d65 Merge branch 'security/harden-staffsession' into 'master'
Harden StaffSession handling

See merge request pretix/pretix!42
2026-07-03 10:41:39 +02:00
Mira WellerandRaphael Michel 7a5f96369a Harden StaffSession handling 2026-07-03 10:41:39 +02:00
Raphael Michel 7fd6bf41f9 Merge branch 'csp-refactor' into 'master'
CSP refactor

See merge request pretix/pretix!35
2026-07-03 10:33:35 +02:00
Mira WellerandRaphael Michel 458c3d4b83 CSP refactor 2026-07-03 10:33:35 +02:00
Raphael Michel d10d061e45 Merge branch 'check-csp' into 'master'
Check CSP components before rendering, prevent format string traversal

See merge request pretix/pretix!33
2026-07-03 10:26:23 +02:00
Mira WellerandRaphael Michel d30bca50f7 Check CSP components before rendering, prevent format string traversal 2026-07-03 10:26:23 +02:00
Phin WolkwitzandGitHub 3903aca7c9 Add Thai translations to community languages (Z#23239401) (#6334) 2026-07-02 17:44:28 +02:00
Raphael MichelandGitHub 493c920aba Install django-querytagger (#6332)
* Install django-querytagger

* Update pyproject.toml
2026-07-02 14:40:02 +02:00
Raphael MichelandGitHub 09b7bc00b0 Organizer calendar: Respect event_calendar_future_only (Z#23238776) (#6326)
We initially didn't do this for two reasons:

- Performance implications of calling the settings store for every event
  that shows up in the calendar. As of d43e85da, we need that anyways.
- Performance implications of filtering in Python except SQL but... it
  can't really be worse than not filtering at all.
- We don't easily know if it's valid for all events so we can't stop
  rendering the unused calendar rows. That's an acceptable issue for
  now, still better than nothing. We can always optimize later.

So we might as well implement it.
2026-07-02 14:31:44 +02:00
dependabot[bot]andRaphael Michel 2e195c0274 Update sentry-sdk requirement from ==2.63.* to ==2.64.*
Updates the requirements on [sentry-sdk](https://github.com/getsentry/sentry-python) to permit the latest version.
- [Release notes](https://github.com/getsentry/sentry-python/releases)
- [Changelog](https://github.com/getsentry/sentry-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-python/compare/2.63.0...2.64.0)

---
updated-dependencies:
- dependency-name: sentry-sdk
  dependency-version: 2.64.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-02 13:53:33 +02:00
Raphael MichelandGitHub 18cb9c1816 Drop line numbers from gettext .po files (#6330)
Knowing what file a string comes from is useful, but the line number is less
useful and changes a lot, causing very unreadable diffs of translation
files. I propose we drop them and only include the file names
2026-07-02 10:21:09 +02:00
Richard SchreiberandGitHub c3e0120f9f Improve calendar explorability for VoiceOver on iOS 2026-07-02 08:13:09 +02:00
Raphael Michel 67f7fec134 Fix flake8 issue 2026-07-01 18:01:50 +02:00
Raphael Michel c2c97f31ca Bump version to 2026.7.0.dev0 2026-07-01 16:33:10 +02:00
Raphael Michel fd565ecdb2 Bump version to 2026.6.0 2026-07-01 16:33:07 +02:00
Nikita MitasovandRaphael Michel f35b13b686 Translations: Update Russian
Currently translated at 18.9% (1200 of 6343 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ru/

powered by weblate
2026-07-01 16:32:06 +02:00
CVZ-esandRaphael Michel 550bb675f5 Translations: Update Spanish
Currently translated at 100.0% (260 of 260 strings)

Translation: pretix/pretix (JavaScript parts)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/es/

powered by weblate
2026-07-01 16:32:06 +02:00
CVZ-esandRaphael Michel adc9c9d514 Translations: Update Spanish
Currently translated at 100.0% (6343 of 6343 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/es/

powered by weblate
2026-07-01 16:32:06 +02:00
CVZ-esandRaphael Michel 8441c4bc7a Translations: Update French
Currently translated at 100.0% (260 of 260 strings)

Translation: pretix/pretix (JavaScript parts)
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/fr/

powered by weblate
2026-07-01 16:32:06 +02:00
CVZ-esandRaphael Michel 97ff252c09 Translations: Update French
Currently translated at 100.0% (6343 of 6343 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/fr/

powered by weblate
2026-07-01 16:32:06 +02:00
CVZ-esandRaphael Michel d3ca2ac1e5 Translations: Update German
Currently translated at 100.0% (6343 of 6343 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2026-07-01 16:32:06 +02:00
Raphael MichelandMira Weller 6eebaaa563 [SECURITY] Hardening for user impersonation feature (CVE-2026-13602)
---------

Co-authored-by: Mira Weller <weller@pretix.eu>
2026-07-01 15:15:43 +02:00
Raphael MichelandMira Weller c9781f012b [SECURITY] Centralize framebreaking logic from payment plugins to core (CVE-2026-13602)
- Add central framebreaker page via safelink helper
- Update paypal, paypal2 and stripe plugins to use central framebreaker
- Add CSP header to cookies.html

---------

Co-authored-by: Mira Weller <weller@pretix.eu>
2026-07-01 15:15:43 +02:00
000bf54105 [SECURITY] Allowlisting and changed salts for safelink and safelink_callback (CVE-2026-13602)
---------

Co-authored-by: Raphael Michel <michel@pretix.eu>
2026-07-01 15:15:43 +02:00
Lukas BockstallerandGitHub e42d3d632f filter out the 404 log records from django.request (#6324) 2026-07-01 11:33:04 +02:00
Lukas BockstallerandGitHub 3bf5a5e478 include settings attribute during type checking (#6323)
* include settings attribute during type checking

* isort
2026-07-01 11:32:54 +02:00
Raphael Michel a6f31df0d4 Do not assign domain across organizers when copying events 2026-06-30 18:51:49 +02:00
Raphael MichelandGitHub d40492748a Event product list: Hotfix for pathological performance in large event series (#6318)
* Event product list: Hotfix for pathological performance

* Stop outputting bullsht numbers to widget
2026-06-29 19:02:06 +02:00
Richard SchreiberandGitHub f4ca230af7 Improve voucher import unique code checks (#6311)
* Check for duplicate codes in import

* Check for existing codes instead of failing on db-level

* as we do not lock, catch IntegrityErrors due to race-conditions on import

* fix flake8
2026-06-29 14:37:41 +02:00
Richard SchreiberandGitHub 4fb1748bf6 Fix handling country=None in attendee profiles (#6309)
* Fix handling country=None in AttendeeProfile describe

* Update checkoutflow.py

* fix more occurences

* handle country=None in InvoiceAddress even if it is not allowed
2026-06-29 14:32:01 +02:00
Raphael Michel 9d668af102 Discover translatable strings in .ts files (Z#23238475) 2026-06-28 17:51:40 +02:00
Raphael MichelandRaphael Michel 80fd4a3b2a Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (6343 of 6343 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2026-06-28 17:48:28 +02:00
Raphael MichelandRaphael Michel 65bb2283d4 Translations: Update German
Currently translated at 100.0% (6343 of 6343 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2026-06-28 17:48:28 +02:00
Raphael MichelandRaphael Michel 00751e8911 Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (6343 of 6343 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/

powered by weblate
2026-06-28 17:48:28 +02:00
Raphael MichelandRaphael Michel 957a066475 Translations: Update German
Currently translated at 100.0% (6343 of 6343 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/

powered by weblate
2026-06-28 17:48:28 +02:00
Raphael Michel 7e077bdd7e Subevent detail: Fix incorrect ticket count (Z#23238481) 2026-06-28 17:43:22 +02:00
Raphael Michel e80d84ec3c Update po files
[CI skip]

Signed-off-by: Raphael Michel <michel@rami.io>
2026-06-28 16:44:09 +02:00
Kim LozanoandRaphael Michel dc3b742d8c Translations: Update Catalan
Currently translated at 29.7% (1875 of 6302 strings)

Translation: pretix/pretix
Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ca/

powered by weblate
2026-06-28 16:42:32 +02:00
1f5fe1b237 SSRF protection: Edge case handling for CGNAT and v4/v6 mapping (Z#23236468) (#6260)
* SSRF protection: Edge case handling for CGNAT and v4/v6 mapping (Z#23236468)

* SMTP SSRF protection: Edge case handling for CGNAT and v4/v6 mapping (#6264)

---------

Co-authored-by: pajowu <engelhardt@pretix.eu>
2026-06-26 16:45:20 +02:00
Lukas Bockstaller 2e673b5e49 wip 2026-04-15 11:48:32 +02:00
Lukas Bockstaller 5ab3b08fca cleanup
# Conflicts:
#	src/pretix/base/services/orders.py
2026-04-15 11:47:13 +02:00
Lukas Bockstaller c624fcfe41 move checks to classes and add distinction between process_fees and position fees 2026-04-15 11:15:01 +02:00
Lukas BockstallerandRaphael Michel 7ffadb87b3 Apply suggestions from code review
Co-authored-by: Raphael Michel <mail@raphaelmichel.de>
2026-04-15 11:15:01 +02:00
Lukas Bockstaller c1db94dec3 clean up 2026-04-15 11:15:01 +02:00
Lukas Bockstaller 9224c73c7f wip 2026-04-15 11:15:01 +02:00
Lukas Bockstaller 1bb2ab28ad wip 2026-04-15 11:15:01 +02:00
Lukas Bockstaller accfc843d6 wip 2026-04-15 11:15:00 +02:00
179 changed files with 137535 additions and 106488 deletions
+3 -2
View File
@@ -53,6 +53,7 @@ dependencies = [
"django-oauth-toolkit==2.3.*",
"django-otp==1.7.*",
"django-phonenumber-field==8.4.*",
"django-querytagger==0.0.3",
"django-redis==6.0.*",
"django-scopes==2.0.*",
"django-statici18n==2.7.*",
@@ -76,7 +77,7 @@ dependencies = [
"paypal-checkout-serversdk==1.0.*",
"PyJWT==2.13.*",
"phonenumberslite==9.0.*",
"Pillow==12.2.*",
"Pillow==12.3.*",
"pretix-plugin-build",
"protobuf==7.35.*",
"psycopg2-binary",
@@ -93,7 +94,7 @@ dependencies = [
"redis==7.4.*",
"reportlab==4.5.*",
"requests==2.32.*",
"sentry-sdk==2.63.*",
"sentry-sdk==2.64.*",
"sepaxml==2.7.*",
"stripe==7.9.*",
"text-unidecode==1.*",
+2 -2
View File
@@ -6,8 +6,8 @@ localecompile:
./manage.py compilemessages
localegen:
./manage.py makemessages --keep-pot --ignore "pretix/static/npm_dir/*" $(LNGS)
./manage.py makemessages --keep-pot -d djangojs --ignore "pretix/static/npm_dir/*" --ignore "pretix/helpers/*" --ignore "pretix/static/jsi18n/*" --ignore "pretix/static/jsi18n/*" --ignore "pretix/static.dist/*" --ignore "data/*" --ignore "pretix/static/rrule/*" --ignore "build/*" $(LNGS)
./manage.py makemessages --keep-pot --add-location file --ignore "pretix/static/npm_dir/*" $(LNGS)
./manage.py makemessages --keep-pot --add-location file -e js,ts,vue -d djangojs --ignore "pretix/static/npm_dir/*" --ignore "pretix/helpers/*" --ignore "pretix/static/jsi18n/*" --ignore "pretix/static/jsi18n/*" --ignore "pretix/static.dist/*" --ignore "data/*" --ignore "pretix/static/rrule/*" --ignore "build/*" $(LNGS)
staticfiles: npminstall npmbuild jsi18n
./manage.py collectstatic --noinput
+1 -1
View File
@@ -19,4 +19,4 @@
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
# <https://www.gnu.org/licenses/>.
#
__version__ = "2026.6.0.dev0"
__version__ = "2026.7.0.dev0"
+1
View File
@@ -118,6 +118,7 @@ ALL_LANGUAGES = [
('sv', _('Swedish')),
('es', _('Spanish')),
('es-419', _('Spanish (Latin America)')),
('th', _('Thai')),
('tr', _('Turkish')),
('uk', _('Ukrainian')),
]
+5
View File
@@ -57,6 +57,8 @@ logger = logging.getLogger('pretix.base.email')
T = TypeVar("T", bound=EmailBackend)
_cgnat_net = ipaddress.ip_network('100.64.0.0/10')
def test_custom_smtp_backend(backend: T, from_addr: str) -> None:
try:
@@ -253,12 +255,15 @@ def create_connection(address, timeout=socket.getdefaulttimeout(),
if not getattr(settings, "MAIL_CUSTOM_SMTP_ALLOW_PRIVATE_NETWORKS", False):
ip_addr = ipaddress.ip_address(sa[0])
check_ip4 = ip_addr.ipv4_mapped if getattr(ip_addr, "ipv4_mapped", None) else ip_addr
if ip_addr.is_multicast:
raise socket.error(f"Request to multicast address {sa[0]} blocked")
if ip_addr.is_loopback or ip_addr.is_link_local:
raise socket.error(f"Request to local address {sa[0]} blocked")
if ip_addr.is_private:
raise socket.error(f"Request to private address {sa[0]} blocked")
if check_ip4 in _cgnat_net:
raise socket.error(f"Request to RFC 6598 address {sa[0]} blocked")
sock = None
try:
+1 -1
View File
@@ -1398,7 +1398,7 @@ class BaseInvoiceAddressForm(forms.ModelForm):
elif self.validate_vat_id and vat_id_applicable:
try:
normalized_id = validate_vat_id(data.get('vat_id'), str(data.get('country')))
self.instance.vat_id_validated = True
self.instance.vat_id_validated = bool(normalized_id)
self.instance.vat_id = data['vat_id'] = normalized_id
except VATIDFinalError as e:
if self.all_optional:
+76 -46
View File
@@ -19,6 +19,8 @@
# 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/>.
#
import logging
import re
from collections import OrderedDict
from urllib.parse import urlparse, urlsplit
from zoneinfo import ZoneInfo, ZoneInfoNotFoundError
@@ -43,6 +45,8 @@ from pretix.multidomain.urlreverse import (
)
from pretix.presale.style import get_fonts
logger = logging.getLogger(__name__)
_supported = None
@@ -223,7 +227,26 @@ def _parse_csp(header):
return h
VALID_CSP_DIRECTIVES = [
"child-src", "connect-src", "default-src", "fenced-frame-src", "font-src", "form-action", "frame-src", "img-src",
"manifest-src", "media-src", "object-src", "prefetch-src", "report-uri", "script-src", "script-src-elem",
"script-src-attr", "style-src", "style-src-elem", "style-src-attr", "worker-src",
]
CSP_ILLEGAL_CHARS = re.compile(r'[\s,;]')
def _sanitize_csp(h):
for k, v in h.items():
if k not in VALID_CSP_DIRECTIVES:
raise ValueError("Invalid CSP directive " + k)
if any(CSP_ILLEGAL_CHARS.search(el) for el in v):
logger.warning("Stripping invalid component from CSP: %r", h)
h[k] = [el for el in v if not CSP_ILLEGAL_CHARS.search(el)]
def _render_csp(h):
_sanitize_csp(h)
return "; ".join(k + ' ' + ' '.join(v) for k, v in h.items() if v)
@@ -243,21 +266,7 @@ def _merge_csp(a, b):
class SecurityMiddleware(MiddlewareMixin):
CSP_EXEMPT = (
'/api/v1/docs/',
)
def process_response(self, request, resp):
def nested_dict_values(d):
for v in d.values():
if isinstance(v, dict):
yield from nested_dict_values(v)
else:
if isinstance(v, str):
yield v
url = resolve(request.path_info)
if settings.DEBUG and resp.status_code >= 400:
# Don't use CSP on debug error page as it breaks of Django's fancy error
# pages
@@ -268,18 +277,15 @@ class SecurityMiddleware(MiddlewareMixin):
# https://github.com/pretix/pretix/issues/765
resp['P3P'] = 'CP=\"ALL DSP COR CUR ADM TAI OUR IND COM NAV INT\"'
img_src = []
gs = global_settings_object(request)
if gs.settings.leaflet_tiles:
img_src.append(gs.settings.leaflet_tiles[:gs.settings.leaflet_tiles.index("/", 10)].replace("{s}", "*"))
if not getattr(resp, '_csp_ignore', False):
resp['Content-Security-Policy'] = _render_csp(self._build_csp(request, resp))
elif 'Content-Security-Policy' in resp:
del resp['Content-Security-Policy']
font_src = set()
if hasattr(request, 'event'):
for font in get_fonts(request.event, pdf_support_required=False).values():
for path in list(nested_dict_values(font)):
font_location = urlparse(path)
if font_location.scheme and font_location.netloc:
font_src.add('{}://{}'.format(font_location.scheme, font_location.netloc))
return resp
def _build_csp(self, request, resp):
url = resolve(request.path_info)
h = {
'default-src': ["{static}"],
@@ -288,8 +294,8 @@ class SecurityMiddleware(MiddlewareMixin):
'frame-src': ['{static}'],
'style-src': ["{static}", "{media}"],
'connect-src': ["{dynamic}", "{media}"],
'img-src': ["{static}", "{media}", "data:"] + img_src,
'font-src': ["{static}"] + list(font_src),
'img-src': ["{static}", "{media}", "data:"],
'font-src': ["{static}"],
'media-src': ["{static}", "data:"],
# form-action is not only used to match on form actions, but also on URLs
# form-actions redirect to. In the context of e.g. payment providers or
@@ -298,6 +304,13 @@ class SecurityMiddleware(MiddlewareMixin):
'form-action': ["{dynamic}", "https:"] + (['http:'] if settings.SITE_URL.startswith('http://') else []),
}
gs = global_settings_object(request)
if gs.settings.leaflet_tiles:
h['img-src'].append(gs.settings.leaflet_tiles[:gs.settings.leaflet_tiles.index("/", 10)].replace("{s}", "*"))
if hasattr(request, 'event'):
h['font-src'] += list(self._get_font_origins(request.event))
if settings.VITE_DEV_MODE:
h['script-src'] += ["http://localhost:5173", "ws://localhost:5173"]
h['style-src'] += ["'unsafe-inline'"]
@@ -309,6 +322,7 @@ class SecurityMiddleware(MiddlewareMixin):
if not settings.VITE_DEV_MODE:
# can't have 'unsafe-inline' and nonce at the same time
h['style-src'].append(nonce)
# Only include pay.google.com for wallet detection purposes on the Payment selection page
if (
url.url_name == "event.order.pay.change" or
@@ -317,27 +331,32 @@ class SecurityMiddleware(MiddlewareMixin):
h['script-src'].append('https://pay.google.com')
h['frame-src'].append('https://pay.google.com')
h['connect-src'].append('https://google.com/pay')
if settings.LOG_CSP:
h['report-uri'] = ["/csp_report/"]
if 'Content-Security-Policy' in resp:
_merge_csp(h, _parse_csp(resp['Content-Security-Policy']))
if settings.CSP_ADDITIONAL_HEADER:
_merge_csp(h, _parse_csp(settings.CSP_ADDITIONAL_HEADER))
staticdomain = "'self'"
dynamicdomain = "'self'"
mediadomain = "'self'"
placeholders = {
"{static}": ["'self'"],
"{dynamic}": ["'self'"],
"{media}": ["'self'"],
}
if settings.MEDIA_URL.startswith('http'):
mediadomain += " " + settings.MEDIA_URL[:settings.MEDIA_URL.find('/', 9)]
placeholders["{media}"].append(settings.MEDIA_URL[:settings.MEDIA_URL.find('/', 9)])
if settings.STATIC_URL.startswith('http'):
staticdomain += " " + settings.STATIC_URL[:settings.STATIC_URL.find('/', 9)]
placeholders["{static}"].append(settings.STATIC_URL[:settings.STATIC_URL.find('/', 9)])
if settings.SITE_URL.startswith('http'):
if settings.SITE_URL.find('/', 9) > 0:
staticdomain += " " + settings.SITE_URL[:settings.SITE_URL.find('/', 9)]
dynamicdomain += " " + settings.SITE_URL[:settings.SITE_URL.find('/', 9)]
placeholders["{static}"].append(settings.SITE_URL[:settings.SITE_URL.find('/', 9)])
placeholders["{dynamic}"].append(settings.SITE_URL[:settings.SITE_URL.find('/', 9)])
else:
staticdomain += " " + settings.SITE_URL
dynamicdomain += " " + settings.SITE_URL
placeholders["{static}"].append(settings.SITE_URL)
placeholders["{dynamic}"].append(settings.SITE_URL)
if hasattr(request, 'organizer') and request.organizer:
if hasattr(request, 'event') and request.event:
@@ -348,18 +367,29 @@ class SecurityMiddleware(MiddlewareMixin):
siteurlsplit = urlsplit(settings.SITE_URL)
if siteurlsplit.port and siteurlsplit.port not in (80, 443):
domain = '%s:%d' % (domain, siteurlsplit.port)
dynamicdomain += " " + domain
placeholders["{dynamic}"].append(domain)
if request.path not in self.CSP_EXEMPT and not getattr(resp, '_csp_ignore', False):
resp['Content-Security-Policy'] = _render_csp(h).format(static=staticdomain, dynamic=dynamicdomain,
media=mediadomain)
for k, v in h.items():
h[k] = sorted(set(' '.join(v).format(static=staticdomain, dynamic=dynamicdomain, media=mediadomain).split(' ')))
resp['Content-Security-Policy'] = _render_csp(h)
elif 'Content-Security-Policy' in resp:
del resp['Content-Security-Policy']
for k, v in h.items():
h[k] = sorted(set(result for part in v for result in placeholders.get(part, [part])))
return resp
return h
def _get_font_origins(self, event):
def nested_dict_values(d):
for v in d.values():
if isinstance(v, dict):
yield from nested_dict_values(v)
else:
if isinstance(v, str):
yield v
font_src = set()
for font in get_fonts(event, pdf_support_required=False).values():
for path in list(nested_dict_values(font)):
font_location = urlparse(path)
if font_location.scheme and font_location.netloc:
font_src.add('{}://{}'.format(font_location.scheme, font_location.netloc))
return font_src
class RejectInvalidInputMiddleware(MiddlewareMixin):
+6 -9
View File
@@ -647,25 +647,22 @@ class User(AbstractBaseUser, PermissionsMixin, LoggingMixin):
id__in=self.teams.filter(TeamQuerySet.organizer_permission_q(permission)).values_list('organizer', flat=True)
)
def has_active_staff_session(self, session_key=None):
def has_active_staff_session(self, session_key):
"""
Returns whether or not a user has an active staff session (formerly known as superuser session)
with the given session key.
"""
return self.get_active_staff_session(session_key) is not None
def get_active_staff_session(self, session_key=None):
if not self.is_staff:
def get_active_staff_session(self, session_key):
if not self.is_staff or not session_key:
return None
if not hasattr(self, '_staff_session_cache'):
self._staff_session_cache = {}
if session_key not in self._staff_session_cache:
qs = StaffSession.objects.filter(
user=self, date_end__isnull=True
)
if session_key:
qs = qs.filter(session_key=session_key)
sess = qs.first()
sess = StaffSession.objects.filter(
user=self, date_end__isnull=True, session_key=session_key
).first()
if sess:
if sess.date_start < now() - timedelta(seconds=settings.PRETIX_SESSION_TIMEOUT_ABSOLUTE):
sess.date_end = now()
+513
View File
@@ -0,0 +1,513 @@
from dataclasses import dataclass, field
from decimal import Decimal
from itertools import chain
from typing import (
TYPE_CHECKING, Any, Callable, Dict, List, Literal, Optional, Protocol, Set,
Tuple, TypeAlias,
)
from django.core.exceptions import ValidationError
from django.core.validators import MaxValueValidator, MinValueValidator
from django.db import models
from django.db.models import Prefetch
from django.utils.translation import gettext_lazy as _
from pretix.base.decimal import round_decimal
from pretix.base.models import Event, Item, ItemVariation, Order, OrderPosition
from pretix.base.reldate import ModelRelativeDateTimeField
from pretix.base.signals import self_service_cancellation_checks
"""
Supporting self-service cancellation requires us to do two main things:
1. uphold the business logic of pretix and the installed plugins
2. charge the customer the appropriate fees for their cancellation
Number 1 is a question of bringing enough checks into place and prevent a
cancellation if one of them is violated.
Checks need to subclass `CancellationCheck` and can be provided via the new
`self_service_cancellation_checks` signal.
Number 2 is trickier because organizers will have complex^(TM) cancellation
fee structures and expressing these in an understandable way is a challenge.
Especially when taking support cases into consideration that have to debug
certain behaviour long after.
The cancellation fees are computed via `CancellationRules`.
When a customer triggers a self service cancellation, we will:
1. Positions
a. Evaluate all `CancellationChecks` that are concerned with individual positions
b. Evaluate all `CancellationRules` that are concerned with individual positions and compute the fees
c. Choose for each position the cheapest `CancellationRules` position result available
2. Process
a. Evaluate all `CancellationChecks` that are concerned with the process of cancellation
b. Evaluate all `CancellationRules` that are concerned with the process of cancellation
c. Choose the cheapest `CancellationRules` process result available
3. Return all results for Checks and Rules
Step 1c. and 2c. are kept separate intentionally.
The alternative of finding the cheapest cancellation option overall (process and position) would
require us to check the full combinatorics of possible process and position fees, resulting
in unfeasible runtime behaviour, and if we would optimize it in difficult to explain non-optimal
situations.
"""
class FeeType(models.TextChoices):
"""
Process fees can be added on top of all position fees, or they
can set a floor for the minimum cancellation fee that this will incur.
"""
MINIMUM = "min_process_fee", _("Minimum total fee")
ADDITIONAL = "add_process_fee", _("Additional fee")
POSITION = "position_fee", _("Position fee")
class CheckTypes(models.TextChoices):
POSITION = "position", _("Order Position Cancellation Rule")
PROCESS = "process", _("Cancellation Process Rule")
@dataclass(frozen=True)
class CheckResult:
"""
Result of an individual cancellation check.
The check result only encodes if the check allows or disallows cancellation via
`cancellation_possible`
"""
id: str
reason: str
cancellation_possible: bool
type: Literal['check'] = field(default="check")
@dataclass(frozen=True)
class RuleResult:
"""
Result of evaluating a CancellationRule.
A rule can consist out of multiple different checks, each partial_result is recorded individually.
A RuleResult encodes both the feasibility of a cancellation via `cancellation_possible` and
the resulting consequences in form of fees which can be expressed as:
- absolute position fees of a fixed amount
- relative position fees of a percentage of the position price
- minimum process fees, the total cancellation fee across all positions and the process must be at least this
- additional process fee, an additional processing fee is charged in addition to the per position fees
"""
id: int
partial_results: List[CheckResult]
fee_type: FeeType
fee: Decimal
type: Literal['rule'] = field(default="rule")
@property
def cancellation_possible(self) -> bool:
return all(result.cancellation_possible for result in self.partial_results)
@classmethod
def from_absolute_fee(
cls,
id: int,
partial_results: List[CheckResult],
fee_type: Literal[FeeType.POSITION],
absolute_fee: Decimal
) -> "RuleResult":
return RuleResult(id=id, partial_results=partial_results, fee_type=fee_type, fee=absolute_fee)
@classmethod
def from_relative_fee(
cls,
id: int,
partial_results: List[CheckResult],
fee_type: Literal[FeeType.POSITION],
position_price: Decimal,
percentage: Decimal,
currency: str
) -> "RuleResult":
return RuleResult(id=id, partial_results=partial_results, fee_type=fee_type,
fee=round_decimal(position_price * (percentage / 100), currency))
@classmethod
def from_process_fee(
cls,
id: int,
partial_results: List[CheckResult],
fee_type: Literal[FeeType.MINIMUM, FeeType.ADDITIONAL],
absolute_fee: Decimal,
reference_price: Decimal
) -> "RuleResult":
fee = Decimal(0)
if fee_type == FeeType.MINIMUM:
if reference_price < absolute_fee:
fee = absolute_fee - reference_price
else:
fee = Decimal(0)
elif fee_type == FeeType.ADDITIONAL:
fee = absolute_fee
else:
raise ValueError("Unknown fee type")
return RuleResult(id=id, partial_results=partial_results, fee_type=fee_type, fee=fee)
def __lt__(self, other: object) -> bool:
if not isinstance(other, RuleResult):
return NotImplemented
if self.cancellation_possible == other.cancellation_possible:
return self.fee < other.fee
else:
return self.cancellation_possible and not other.cancellation_possible
@dataclass(frozen=True)
class Checks:
position: List["CancellationCheck"]
process: List["CancellationCheck"]
@property
def prefetches(self) -> List[Callable[[], Prefetch]]:
return list(chain([check.prefetches for check in [*self.position, *self.process]]))
@property
def related_selects(self) -> List[str]:
return list(chain([check.related_selects for check in [*self.position, *self.process]]))
PositionSet: TypeAlias = Set[OrderPosition]
class PositionCheckFn(Protocol):
def __call__(self, order: Order, keep: PositionSet, position: OrderPosition) -> CheckResult:
...
class ProcessCheckFn(Protocol):
def __call__(self, order: Order, keep: PositionSet) -> CheckResult:
...
@dataclass(frozen=True)
class CancellationCheck:
id: str
type: CheckTypes
check_fn: PositionCheckFn | ProcessCheckFn = field(compare=False)
prefetches: List[Callable[[], Prefetch]] = field(default_factory=list)
related_selects: List[str] = field(default_factory=list)
def evaluate(self, order: Order, keep: PositionSet,
position: OrderPosition | None) -> CheckResult:
if position and self.type == CheckTypes.POSITION:
return self.check_fn(order, keep, position)
elif position is None and self.type == CheckTypes.PROCESS:
return self.check_fn(order, keep)
else:
raise ValidationError("Type of the rule doesn't match the check_fn")
@dataclass(frozen=True)
class PositionResult:
position_check_results: Dict[int, List[CheckResult]]
position_rule_results: Dict[int, List[RuleResult]]
@property
def cancellation_possible(self) -> bool:
def ok(results: List[CheckResult] | List[RuleResult]) -> bool:
return all([val.cancellation_possible for val in results]) if results else True
return all(
ok(results)
for d in
(self.position_check_results, {key: [min(pos_res)] for key, pos_res in self.position_rule_results.items()})
for results in d.values()
)
@property
def fee_value(self) -> Decimal:
fee_value = Decimal("0.00")
for pos_id, results in self.position_rule_results.items():
if len(results) > 0:
best_option = min(results)
if best_option.cancellation_possible:
fee_value += best_option.fee
return fee_value
@dataclass(frozen=True)
class ProcessResult:
process_check_results: List[CheckResult]
process_rule_results: List[RuleResult]
@property
def cancellation_possible(self) -> bool:
best_option = min(self.process_rule_results)
return all([res.cancellation_possible for res in [*self.process_check_results, best_option]])
@property
def fee_value(self) -> Decimal:
best_option = min(self.process_rule_results)
if best_option.cancellation_possible:
return best_option.fee
return Decimal("0.00")
@dataclass(frozen=True)
class CancellationResult:
position_result: PositionResult
process_result: ProcessResult
@property
def cancellation_possible(self) -> bool:
return self.position_result.cancellation_possible and self.process_result.cancellation_possible
def remember_cancellation(self):
# TODO: store the cancellation verdict in the session storage for X Minutes
pass
def perform_cancellation(self, order: Order, keep: Set[int]):
# TODO load the cancellation verdict from the session and perform the actions
pass
def _send_self_service_cancellation_checks(event: Event) -> List[Tuple[Any, Any]]:
return self_service_cancellation_checks.send(sender=event)
class CancellationRule(models.Model):
event = models.ForeignKey(
Event,
verbose_name=_("Event"),
related_name="cancellation_rule",
on_delete=models.CASCADE
)
type = models.CharField(
verbose_name=_("Type of the cancellation rule"),
default=CheckTypes.POSITION,
choices=CheckTypes,
max_length=15,
)
allowed_until = ModelRelativeDateTimeField(null=True, blank=True)
except_after = ModelRelativeDateTimeField(null=True, blank=True)
prefetches: List[Callable[[], Prefetch]] = []
related_selects: List[str] = []
@staticmethod
def _collect_checks(event: Event, send_fn: Callable[
[Event], List[Tuple[Any, Any]]
] = _send_self_service_cancellation_checks) -> Checks:
position_checks: List[CancellationCheck] = []
process_checks: List[CancellationCheck] = []
seen = set()
for recv, resp in send_fn(event):
if not isinstance(resp, CancellationCheck):
raise ValueError('self_service_cancellation_checks received response of wrong type')
if resp.id in seen:
raise ValueError('self_service_cancellation_checks received multiple responses with the id')
seen.add(resp.id)
if resp.type == CheckTypes.POSITION:
position_checks.append(resp)
if resp.type == CheckTypes.PROCESS:
process_checks.append(resp)
return Checks(position=position_checks, process=process_checks)
@staticmethod
def evaluate(event: Event, order: Order, keep: Set[OrderPosition]) -> "CancellationResult":
# collect all checks, position_rules and process_rules that are applicable
checks = CancellationRule._collect_checks(event=event)
position_rules = PositionCancellationRule.objects.filter(event=event, type=CheckTypes.POSITION)
process_rules = ProcessCancellationRule.objects.filter(event=event, type=CheckTypes.PROCESS)
order = CancellationRule._prefetch_order(event, order, checks)
# keep track of all decisions so we can explain them in the logs
position_check_results: Dict[int, List[CheckResult]] = {}
position_rule_results: Dict[int, List[RuleResult]] = {}
# perform all position checks and position rules
for position in order.positions.all():
position_check_results[position.id] = []
position_rule_results[position.id] = []
# skip this position if customer doesn't want to cancel
if position.id in keep:
continue
# evaluate the system/plugin checks for the position
for check in checks.position:
position_check_results[position.id].append(check.evaluate(order=order, keep=keep, position=position))
# evaluate all customer specified rules for this position
for rule in position_rules:
result = rule.evaluate_position_rule(order=order, keep=keep, position=position)
if result is not None:
position_rule_results[position.id].append(result)
position_results = PositionResult(position_check_results=position_check_results,
position_rule_results=position_rule_results)
# we need the current fee_value to select the cheapest process rule
temp_position_fees = position_results.fee_value
# again keep track of all decisions so we can explain them in the logs
process_check_results: List[CheckResult] = []
process_rule_results: List[RuleResult] = []
# evaluate all system/plugin provided checks for the cancellation process
for check in checks.process:
process_check_results.append(check.evaluate(order=order, keep=keep, position=None))
# evaluate all customer specified rules for the cancellation process
for rule in process_rules:
result = rule.evaluate_process_rule(order=order, keep=keep, position_fees=temp_position_fees)
if result is not None:
process_rule_results.append(result)
process_result = ProcessResult(process_check_results=process_check_results,
process_rule_results=process_rule_results)
return CancellationResult(position_result=position_results, process_result=process_result)
@staticmethod
def _prefetch_order(event: Event, order: Order, checks: Checks) -> Order:
prefetches = [pref() for pref in [*chain(*checks.prefetches),
*chain(*PositionCancellationRule.prefetches),
*chain(*ProcessCancellationRule.prefetches)]]
related_selects = {*chain(*checks.related_selects),
*chain(*PositionCancellationRule.related_selects),
*chain(*ProcessCancellationRule.related_selects)}
order = Order.objects.prefetch_related(*prefetches).select_related(*related_selects).get(event=event,
id=order.id)
return order
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
class PositionCancellationRule(CancellationRule):
"""
PositionCancellationRules answer the questions:
- Can this position be canceled?
- What is the price for cancelling this position?
"""
class Meta:
abstract = True
fee_percentage_per_position = models.DecimalField(
max_digits=5,
decimal_places=2,
validators=[MinValueValidator("0.00"), MaxValueValidator("100.00")],
verbose_name=_("Fee Percentage per OrderPosition"),
default=Decimal("0.00"),
)
fee_absolute_per_position = models.DecimalField(
max_digits=13,
decimal_places=2,
verbose_name=_("Absolute fee per OrderPosition"),
default=Decimal("0.00"),
)
all_products = models.BooleanField(
verbose_name=_("All products and variations"),
default=True,
)
limit_products = models.ManyToManyField(Item, verbose_name=_("Products"), blank=True)
limit_variations = models.ManyToManyField(
ItemVariation, blank=True, verbose_name=_("Variations")
)
prefetches: List[Callable[[], Prefetch]] = []
related_selects: List[str] = []
if TYPE_CHECKING:
allowed_until = ModelRelativeDateTimeField(null=True, blank=True)
except_after = ModelRelativeDateTimeField(null=True, blank=True)
def evaluate_position_rule(self, order: Order, keep: Set[OrderPosition], position: OrderPosition) -> Optional[
RuleResult
]:
if not self.all_products and position.item_id not in self.limit_products.values_list('pk', flat=True):
return None
if not self.all_products and position.variation_id not in self.limit_variations.values_list('pk', flat=True):
return None
rule_results = [] # TODO really evaluate rules
if self.fee_percentage_per_position and self.fee_absolute_per_position:
raise NotImplementedError(
"Combination of fee_percentage_per position and fee_absolute_per_position is not valid")
elif self.fee_absolute_per_position != Decimal(0.00):
return RuleResult.from_absolute_fee(
id=self.id,
partial_results=rule_results,
fee_type=FeeType.POSITION,
absolute_fee=self.fee_absolute_per_position
)
else:
return RuleResult.from_relative_fee(
id=self.id,
partial_results=rule_results,
fee_type=FeeType.POSITION,
position_price=position.price,
percentage=self.fee_absolute_per_position,
currency=order.event.currency
)
class ProcessCancellationRule(CancellationRule):
"""
ProcessCancellationRules answer the question:
- What is the processing fee for performing this cancellation?
"""
class Meta:
abstract = True
fee_cancellation_process = models.DecimalField(
max_digits=13,
decimal_places=2,
verbose_name=_("Absolute fee per Cancellation"),
default=Decimal("0.00"),
)
fee_mode = models.CharField(
verbose_name=_("Restrict to check-in status"),
default=FeeType.MINIMUM,
choices=[
(FeeType.MINIMUM, FeeType.MINIMUM.label),
(FeeType.ADDITIONAL, FeeType.ADDITIONAL.label),
],
max_length=15,
)
prefetches: List[Callable[[], Prefetch]] = []
related_selects: List[str] = []
if TYPE_CHECKING:
allowed_until = ModelRelativeDateTimeField(null=True, blank=True)
except_after = ModelRelativeDateTimeField(null=True, blank=True)
def evaluate_process_rule(self, order: Order, keep: Set[OrderPosition], position_fees: Decimal) -> \
Optional[RuleResult]:
rule_results = [] # TODO really evaluate rules
fee_type = self.fee_mode
if fee_type not in (FeeType.MINIMUM, FeeType.ADDITIONAL):
raise ValueError(f"Unexpected fee_mode: {fee_type!r}")
return RuleResult.from_process_fee(
id=self.id,
partial_results=rule_results,
fee_type=fee_type,
absolute_fee=self.fee_cancellation_process,
reference_price=position_fees,
)
+1 -1
View File
@@ -395,7 +395,7 @@ class AttendeeProfile(models.Model):
self.company,
self.street,
(self.zipcode or '') + ' ' + (self.city or '') + ' ' + (self.state_for_address or ''),
self.country.name,
self.country.name if self.country else None,
]
for a in self.answers:
value = a.get('value')
+8 -1
View File
@@ -40,6 +40,7 @@ import warnings
from collections import Counter, OrderedDict, defaultdict
from datetime import datetime, time, timedelta
from operator import attrgetter
from typing import TYPE_CHECKING
from urllib.parse import urljoin
from zoneinfo import ZoneInfo
@@ -79,10 +80,16 @@ from pretix.helpers.thumb import get_thumbnail
from ..settings import settings_hierarkey
from .organizer import Organizer, Team
if TYPE_CHECKING:
from hierarkey.proxy import HierarkeyProxy
logger = logging.getLogger(__name__)
class EventMixin:
if TYPE_CHECKING:
settings: HierarkeyProxy
def clean(self):
if self.presale_start and self.presale_end and self.presale_start > self.presale_end:
raise ValidationError({'presale_end': _('The end of the presale period has to be later than its start.')})
@@ -899,7 +906,7 @@ class Event(EventMixin, LoggedModel):
self.save()
self.log_action('pretix.object.cloned', data={'source': other.slug, 'source_id': other.pk})
if hasattr(other, 'alternative_domain_assignment'):
if hasattr(other, 'alternative_domain_assignment') and not is_cross_organizer:
other.alternative_domain_assignment.domain.event_assignments.create(event=self)
if not self.all_sales_channels:
+2 -2
View File
@@ -1697,7 +1697,7 @@ class AbstractPosition(RoundingCorrectionMixin, models.Model):
self.company,
self.street,
(self.zipcode or '') + ' ' + (self.city or '') + ' ' + (self.state_for_address or ''),
self.country.name
self.country.name if self.country else ''
]
lines = [r.strip() for r in lines if r]
return '\n'.join(lines).strip()
@@ -3438,7 +3438,7 @@ class InvoiceAddress(models.Model):
self.name,
self.street,
(self.zipcode or '') + ' ' + (self.city or '') + ' ' + (self.state_for_address or ''),
self.country.name,
self.country.name if self.country else '',
self.vat_id,
self.custom_field,
self.internal_reference,
+7
View File
@@ -35,6 +35,7 @@ import operator
import string
from datetime import date, datetime, time
from functools import reduce
from typing import TYPE_CHECKING
import pytz_deprecation_shim
from django.conf import settings
@@ -61,6 +62,9 @@ from ...helpers.permission_migration import (
from ..settings import settings_hierarkey
from .auth import User
if TYPE_CHECKING:
from hierarkey.proxy import HierarkeyProxy
@settings_hierarkey.add(cache_namespace='organizer')
class Organizer(LoggedModel):
@@ -78,6 +82,9 @@ class Organizer(LoggedModel):
"""
settings_namespace = 'organizer'
if TYPE_CHECKING:
settings: HierarkeyProxy
name = models.CharField(max_length=200,
verbose_name=_("Name"))
slug = models.CharField(
+1 -1
View File
@@ -834,7 +834,7 @@ class BasePaymentProvider:
"""
raise NotImplementedError() # NOQA
def execute_payment(self, request: HttpRequest, payment: OrderPayment) -> str:
def execute_payment(self, request: HttpRequest, payment: OrderPayment) -> str | None:
"""
After the user has confirmed their purchase, this method will be called to complete
the payment process. This is the place to actually move the money if applicable.
+33 -3
View File
@@ -26,8 +26,9 @@ from typing import List
from django.conf import settings as django_settings
from django.core.exceptions import ValidationError
from django.db import transaction
from django.db.utils import IntegrityError
from django.utils.timezone import now
from django.utils.translation import gettext as _
from django.utils.translation import gettext as _, ngettext
from pretix.base.i18n import language
from pretix.base.modelimport import DataImportError, ImportColumn, parse_csv
@@ -260,6 +261,7 @@ def import_vouchers(event: Event, fileid: str, settings: dict, locale: str, user
# Prepare model objects. Yes, this might consume lots of RAM, but allows us to make the actual SQL transaction
# shorter. We'll see what works better in reality…
vouchers = []
codes = set()
lock_seats = []
for i, record in enumerate(data):
try:
@@ -268,6 +270,14 @@ def import_vouchers(event: Event, fileid: str, settings: dict, locale: str, user
if not record.get("code"):
raise ValidationError(_('A voucher cannot be created without a code.'))
code = record.get("code")
if code.upper() in codes:
raise ValidationError(
_('Voucher codes must be unique. Code "{code}" already exists in this import.').format(
code=code,
)
)
codes.add(code.upper())
Voucher.clean_item_properties(
record,
event,
@@ -286,8 +296,22 @@ def import_vouchers(event: Event, fileid: str, settings: dict, locale: str, user
lock_seats.append(voucher.seat)
except (ValidationError, ImportError) as e:
raise DataImportError(
_('Invalid data in row {row}: {message}').format(row=i, message=str(e))
_('Invalid data in row {row}: {message}').format(row=i + 1, message=str(e))
)
existing_codes = Voucher.objects.filter(
event=event,
code__in=codes,
).values_list("code", flat=True)
if len(existing_codes):
raise DataImportError(
ngettext(
'Voucher codes must be unique. Import contains existing voucher code {code}.',
'Voucher codes must be unique. Import contains existing voucher codes {code}.',
len(existing_codes)
).format(
code=", ".join(existing_codes)
)
)
with transaction.atomic():
# We don't support quotas here, so we only need to lock if seats are in use
@@ -300,7 +324,13 @@ def import_vouchers(event: Event, fileid: str, settings: dict, locale: str, user
save_logentries = []
for v in vouchers:
v.save()
try:
v.save()
except IntegrityError:
# should not happen as we check existing codes before, but we did not lock so we might have a race-condition
raise DataImportError(
_('Vouchers could not be imported, probably due to a voucher code already being in use.')
)
save_logentries.append(v.log_action(
'pretix.voucher.added',
user=user,
+92 -68
View File
@@ -41,6 +41,7 @@ from collections import Counter, defaultdict, namedtuple
from datetime import datetime, time, timedelta
from decimal import Decimal
from functools import reduce
from time import sleep
from typing import List, Optional
@@ -50,8 +51,8 @@ from django.core.cache import cache
from django.core.exceptions import ValidationError
from django.db import transaction
from django.db.models import (
Count, Exists, F, IntegerField, Max, Min, OuterRef, Q, QuerySet, Sum,
Value,
Count, Exists, F, IntegerField, Max, Min, OuterRef, Prefetch, Q, QuerySet,
Sum, Value,
)
from django.db.models.functions import Coalesce, Greatest
from django.db.transaction import get_connection
@@ -67,10 +68,13 @@ from pretix.base.email import get_email_context
from pretix.base.i18n import get_language_without_region, language
from pretix.base.media import MEDIA_TYPES
from pretix.base.models import (
CartPosition, Device, Event, GiftCard, Item, ItemVariation, LogEntry,
CartPosition, Device, Event, GiftCard, Item, ItemVariation,
Membership, Order, OrderPayment, OrderPosition, Quota, Seat,
SeatCategoryMapping, User, Voucher,
)
from pretix.base.models.cancellation import (
CancellationCheck, CheckResult, CheckTypes, PositionSet,
)
from pretix.base.models.event import SubEvent
from pretix.base.models.orders import (
BlockedTicketSecret, InvoiceAddress, OrderFee, OrderRefund,
@@ -103,7 +107,7 @@ from pretix.base.signals import (
order_approved, order_canceled, order_changed, order_denied, order_expired,
order_expiry_changed, order_fee_calculation, order_paid, order_placed,
order_reactivated, order_split, order_valid_if_pending, periodic_task,
validate_order,
self_service_cancellation_checks, validate_order,
)
from pretix.base.timemachine import time_machine_now, time_machine_now_assigned
from pretix.celery_app import app
@@ -1619,7 +1623,7 @@ class OrderChangeManager:
MembershipOperation = namedtuple('MembershipOperation', ('position', 'membership'))
CancelOperation = namedtuple('CancelOperation', ('position', 'price_diff'))
AddOperation = namedtuple('AddOperation', ('item', 'variation', 'price', 'addon_to', 'subevent', 'seat', 'membership',
'valid_from', 'valid_until', 'is_bundled', 'result', 'count'))
'valid_from', 'valid_until', 'is_bundled', 'result'))
SplitOperation = namedtuple('SplitOperation', ('position',))
FeeValueOperation = namedtuple('FeeValueOperation', ('fee', 'value', 'price_diff'))
AddFeeOperation = namedtuple('AddFeeOperation', ('fee', 'price_diff'))
@@ -1633,24 +1637,16 @@ class OrderChangeManager:
ForceRecomputeOperation = namedtuple('ForceRecomputeOperation', tuple())
class AddPositionResult:
_positions: Optional[List[OrderPosition]]
_position: Optional[OrderPosition]
def __init__(self):
self._positions = None
self._position = None
@property
def position(self) -> OrderPosition:
if self._positions is None:
if self._position is None:
raise RuntimeError("Order position has not been created yet. Call commit() first on OrderChangeManager.")
if len(self._positions) != 1:
raise RuntimeError("More than one position created.")
return self._positions[0]
@property
def positions(self) -> List[OrderPosition]:
if self._positions is None:
raise RuntimeError("Order position has not been created yet. Call commit() first on OrderChangeManager.")
return self._positions
return self._position
def __init__(self, order: Order, user=None, auth=None, notify=True, reissue_invoice=True, allow_blocked_seats=False):
self.order = order
@@ -1857,12 +1853,8 @@ class OrderChangeManager:
def add_position(self, item: Item, variation: ItemVariation, price: Decimal, addon_to: OrderPosition = None,
subevent: SubEvent = None, seat: Seat = None, membership: Membership = None,
valid_from: datetime = None, valid_until: datetime = None, count: int = 1) -> 'OrderChangeManager.AddPositionResult':
if count < 1:
raise ValueError("Count must be positive")
valid_from: datetime = None, valid_until: datetime = None) -> 'OrderChangeManager.AddPositionResult':
if isinstance(seat, str):
if count > 1:
raise ValueError("Cannot combine count > 1 with seat")
if not seat:
seat = None
else:
@@ -1916,14 +1908,14 @@ class OrderChangeManager:
if self.order.event.settings.invoice_include_free or price.gross != Decimal('0.00'):
self._invoice_dirty = True
self._totaldiff_guesstimate += price.gross * count
self._quotadiff.update({q: count for q in new_quotas})
self._totaldiff_guesstimate += price.gross
self._quotadiff.update(new_quotas)
if seat:
self._seatdiff.update([seat])
result = self.AddPositionResult()
self._operations.append(self.AddOperation(item, variation, price, addon_to, subevent, seat, membership,
valid_from, valid_until, is_bundled, result, count))
valid_from, valid_until, is_bundled, result))
return result
def split(self, position: OrderPosition):
@@ -2543,35 +2535,29 @@ class OrderChangeManager:
secret_dirty.remove(position)
position.save(update_fields=['canceled', 'secret'])
elif isinstance(op, self.AddOperation):
new_pos = []
new_logs = []
for i in range(op.count):
pos = OrderPosition.objects.create(
item=op.item, variation=op.variation, addon_to=op.addon_to,
price=op.price.gross, order=self.order, tax_rate=op.price.rate, tax_code=op.price.code,
tax_value=op.price.tax, tax_rule=op.item.tax_rule,
positionid=nextposid, subevent=op.subevent, seat=op.seat,
used_membership=op.membership, valid_from=op.valid_from, valid_until=op.valid_until,
is_bundled=op.is_bundled,
)
nextposid += 1
new_pos.append(pos)
new_logs.append(self.order.log_action('pretix.event.order.changed.add', user=self.user, auth=self.auth, data={
'position': pos.pk,
'item': op.item.pk,
'variation': op.variation.pk if op.variation else None,
'addon_to': op.addon_to.pk if op.addon_to else None,
'price': op.price.gross,
'positionid': pos.positionid,
'membership': pos.used_membership_id,
'subevent': op.subevent.pk if op.subevent else None,
'seat': op.seat.pk if op.seat else None,
'valid_from': op.valid_from.isoformat() if op.valid_from else None,
'valid_until': op.valid_until.isoformat() if op.valid_until else None,
}, save=False))
op.result._positions = new_pos
LogEntry.bulk_create_and_postprocess(new_logs)
pos = OrderPosition.objects.create(
item=op.item, variation=op.variation, addon_to=op.addon_to,
price=op.price.gross, order=self.order, tax_rate=op.price.rate, tax_code=op.price.code,
tax_value=op.price.tax, tax_rule=op.item.tax_rule,
positionid=nextposid, subevent=op.subevent, seat=op.seat,
used_membership=op.membership, valid_from=op.valid_from, valid_until=op.valid_until,
is_bundled=op.is_bundled,
)
nextposid += 1
self.order.log_action('pretix.event.order.changed.add', user=self.user, auth=self.auth, data={
'position': pos.pk,
'item': op.item.pk,
'variation': op.variation.pk if op.variation else None,
'addon_to': op.addon_to.pk if op.addon_to else None,
'price': op.price.gross,
'positionid': pos.positionid,
'membership': pos.used_membership_id,
'subevent': op.subevent.pk if op.subevent else None,
'seat': op.seat.pk if op.seat else None,
'valid_from': op.valid_from.isoformat() if op.valid_from else None,
'valid_until': op.valid_until.isoformat() if op.valid_until else None,
})
op.result._position = pos
elif isinstance(op, self.SplitOperation):
position = position_cache.setdefault(op.position.pk, op.position)
split_positions.append(position)
@@ -2896,7 +2882,7 @@ class OrderChangeManager:
return total
def _check_order_size(self):
if (len(self.order.positions.all()) + sum([op.count for op in self._operations if isinstance(op, self.AddOperation)])) > settings.PRETIX_MAX_ORDER_SIZE:
if (len(self.order.positions.all()) + len([op for op in self._operations if isinstance(op, self.AddOperation)])) > settings.PRETIX_MAX_ORDER_SIZE:
raise OrderError(
self.error_messages['max_order_size'] % {
'max': settings.PRETIX_MAX_ORDER_SIZE,
@@ -2957,7 +2943,7 @@ class OrderChangeManager:
]) + len([
o for o in self._operations if isinstance(o, self.SplitOperation)
])
adds = sum([o.count for o in self._operations if isinstance(o, self.AddOperation)])
adds = len([o for o in self._operations if isinstance(o, self.AddOperation)])
if current > 0 and current - cancels + adds < 1:
raise OrderError(self.error_messages['complete_cancel'])
@@ -3004,18 +2990,17 @@ class OrderChangeManager:
elif isinstance(op, self.CancelOperation) and op.position in positions_to_fake_cart:
fake_cart.remove(positions_to_fake_cart[op.position])
elif isinstance(op, self.AddOperation):
for i in range(op.count):
cp = CartPosition(
event=self.event,
item=op.item,
variation=op.variation,
used_membership=op.membership,
subevent=op.subevent,
seat=op.seat,
)
cp.override_valid_from = op.valid_from
cp.override_valid_until = op.valid_until
fake_cart.append(cp)
cp = CartPosition(
event=self.event,
item=op.item,
variation=op.variation,
used_membership=op.membership,
subevent=op.subevent,
seat=op.seat,
)
cp.override_valid_from = op.valid_from
cp.override_valid_until = op.valid_until
fake_cart.append(cp)
try:
validate_memberships_in_order(self.order.customer, fake_cart, self.event, lock=True, ignored_order=self.order, testmode=self.order.testmode)
except ValidationError as e:
@@ -3526,3 +3511,42 @@ def signal_listener_issue_media(sender: Event, order: Order, **kwargs):
'customer': order.customer_id,
}
)
def position_not_used_cancellation_check(order: Order, keep: PositionSet, position: OrderPosition):
for pos in order.all_positions.all():
if pos == position and position not in keep:
for checkin in pos.all_checkins.all():
if checkin.successful and checkin.list.consider_tickets_used:
return CheckResult(
id="pretixbase_position_not_used",
reason=f"Position used in Checkin {checkin}",
cancellation_possible=False,
)
else:
return CheckResult(
id="pretixbase_position_not_used",
reason="Position not up for cancellation",
cancellation_possible=True,
)
return CheckResult(
id="pretixbase_position_not_used",
reason="Ticket not used",
cancellation_possible=True,
)
@receiver(self_service_cancellation_checks, dispatch_uid="pretixbase_position_not_used")
def signal_listener_position_not_used(sender: Event, **kwargs):
return CancellationCheck(id="pretixbase_position_not_used",
type=CheckTypes.POSITION,
check_fn=position_not_used_cancellation_check,
prefetches=[
lambda: Prefetch('all_positions__all_checkins__list', )
])
# TODO weitere System Checks
# OrderPositions mit Item.min_per_order dürfen nur storniert werden, wenn genug übrig bleiben oder alle des gleichen Items storniert werden
# OrderPositions mit addon_to != None dürfen nur über den bestehenden Add-On-Flow storniert werden
# OrderPositions mit is_bundled dürfen nur mit der Parent-Position zusammen storniert werden
+1 -3
View File
@@ -1276,7 +1276,7 @@ DEFAULTS = {
'serializer_class': serializers.BooleanField,
'write_permission': 'event.settings.invoicing:write',
'form_kwargs': dict(
label=_("Allow to update existing invoices"),
label=_("Allow updating existing invoices"),
help_text=_("By default, invoices can never again be changed once they are issued. In most countries, we "
"recommend to leave this option turned off and always issue a new invoice if a change needs "
"to be made."),
@@ -1924,8 +1924,6 @@ DEFAULTS = {
'serializer_class': serializers.BooleanField,
'form_kwargs': dict(
label=_("Hide all past dates from calendar"),
help_text=_("This option currently only affects the calendar of this event series, not the organizer-wide "
"calendar.")
)
},
'allow_modifications': {
+8
View File
@@ -1206,3 +1206,11 @@ This signal is sent out each time the information for a Device is modified.
Both the original and updated versions of the Device are included to allow
receivers to see what has been updated.
"""
self_service_cancellation_checks = EventPluginSignal()
"""
This signal is sent out to collect checks to approve or deny a self service cancellation.
You are expected to return a class instance that implements CancellationCheck.
It is is expected that that the CheckFn will not issue any further queries.
As with all event-plugin signals, the ``sender`` keyword argument will contain the event.
"""
@@ -0,0 +1,28 @@
{% extends "error.html" %}
{% load i18n %}
{% load eventurl %}
{% load urlreplace %}
{% load static %}
{% block content %}
<h1>{% trans "Please continue in a new tab" %}</h1>
<p class="larger">
{% blocktrans trimmed %}
For security reasons, the following step is only possible in a new tab.
{% endblocktrans %}
</p>
<p class="larger">
{% blocktrans trimmed %}
If the new tab did not open automatically, please click the following button:
{% endblocktrans %}
</p>
<div class="text-center">
<a href="{{ url }}"
class="btn btn-primary btn-lg" target="_blank">
<span class="fa fa-external-link-square"></span>
{% trans "Continue in new tab" %}
</a>
{{ url|json_script:"framebreak-url" }}
<script type="text/javascript" src="{% static "pretixbase/js/framebreak.js" %}"></script>
</div>
{% endblock %}
+2 -4
View File
@@ -42,8 +42,6 @@ from bleach import DEFAULT_CALLBACKS, html5lib_shim
from bleach.linkifier import build_email_re
from django import template
from django.conf import settings
from django.core import signing
from django.urls import reverse
from django.utils.functional import SimpleLazyObject
from django.utils.html import escape
from django.utils.http import url_has_allowed_host_and_scheme
@@ -54,6 +52,7 @@ from markdown.postprocessors import Postprocessor
from markdown.treeprocessors import UnescapeTreeprocessor
from tlds import tld_set
from pretix.base.views.redirect import safelink
from pretix.helpers.format import SafeFormatter, format_map
register = template.Library()
@@ -158,8 +157,7 @@ def safelink_callback(attrs, new=False):
"""
url = html.unescape(attrs.get((None, 'href'), '/'))
if not url_has_allowed_host_and_scheme(url, allowed_hosts=None) and not url.startswith('mailto:') and not url.startswith('tel:'):
signer = signing.Signer(salt='safe-redirect')
attrs[None, 'href'] = reverse('redirect') + '?url=' + urllib.parse.quote(signer.sign(url))
attrs[None, 'href'] = safelink(url)
attrs[None, 'target'] = '_blank'
attrs[None, 'rel'] = 'noopener'
return attrs
+29 -6
View File
@@ -19,6 +19,7 @@
# 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/>.
#
import logging
import urllib.parse
from django.core import signing
@@ -26,6 +27,8 @@ from django.http import HttpResponseBadRequest, HttpResponseRedirect
from django.shortcuts import render
from django.urls import reverse
logger = logging.getLogger(__name__)
def _is_samesite_referer(request):
referer = request.headers.get('referer')
@@ -42,11 +45,16 @@ def _is_samesite_referer(request):
def redir_view(request):
signer = signing.Signer(salt='safe-redirect')
framebreak = "framebreak" in request.GET
salt = 'framebreak-safelink-url' if framebreak else 'safelink-url'
try:
url = signer.unsign(request.GET.get('url', ''))
url = signing.Signer(salt=salt).unsign(request.GET.get('url', ''))
except signing.BadSignature:
return HttpResponseBadRequest('Invalid parameter')
try:
# Backwards-compatibility for a change in 2026-06, remove after a while
url = signing.Signer(salt='safe-redirect').unsign(request.GET.get('url', ''))
except signing.BadSignature:
return HttpResponseBadRequest('Invalid parameter')
if not _is_samesite_referer(request):
u = urllib.parse.urlparse(url)
@@ -55,11 +63,26 @@ def redir_view(request):
'url': url,
})
if framebreak:
r = render(request, 'pretixbase/framebreak.html', {
'url': url,
})
r.xframe_options_exempt = True
return r
r = HttpResponseRedirect(url)
r['X-Robots-Tag'] = 'noindex'
return r
def safelink(url):
signer = signing.Signer(salt='safe-redirect')
return reverse('redirect') + '?url=' + urllib.parse.quote(signer.sign(url))
def safelink(url, framebreak=False):
url = str(url)
if not (url.startswith('https://') or url.startswith('http://') or url.startswith("/")):
logger.warning('Invalid URL passed to safelink: %r', url)
return '#invalid-url'
salt = 'framebreak-safelink-url' if framebreak else 'safelink-url'
signer = signing.Signer(salt=salt)
u = reverse('redirect') + '?url=' + urllib.parse.quote(signer.sign(url))
if framebreak:
u += "&framebreak=true"
return u
+5
View File
@@ -106,6 +106,11 @@ class VoucherForm(I18nModelForm):
pass
super().__init__(*args, **kwargs)
self.fields['tag'].widget.attrs['data-typeahead-url'] = reverse('control:event.vouchers.tags.typeahead', kwargs={
'event': instance.event.slug,
'organizer': instance.event.organizer.slug,
})
if instance.event.has_subevents:
self.fields['subevent'].queryset = instance.event.subevents.all()
self.fields['subevent'].widget = Select2(
+11 -7
View File
@@ -36,6 +36,7 @@ from urllib.parse import quote, urljoin, urlparse
from django.conf import settings
from django.contrib.auth import REDIRECT_FIELD_NAME, logout
from django.contrib.auth.views import redirect_to_login
from django.http import Http404
from django.shortcuts import get_object_or_404, resolve_url
from django.template.response import TemplateResponse
@@ -212,14 +213,17 @@ class AuditLogMiddleware:
if request.path.startswith(get_script_prefix() + 'control') and request.user.is_authenticated:
if getattr(request.user, "is_hijacked", False):
hijack_history = request.session.get('hijack_history', False)
hijacker = get_object_or_404(User, pk=hijack_history[0])
hijacker = get_object_or_404(User, pk=hijack_history[0]["user"])
ss = hijacker.get_active_staff_session(request.session.get('hijacker_session'))
if ss:
ss.logs.create(
url=request.path,
method=request.method,
impersonating=request.user
)
if not ss:
# Staff session expired or not found
logout(request)
return redirect_to_login(request.get_full_path())
ss.logs.create(
url=request.path,
method=request.method,
impersonating=request.user
)
else:
ss = request.user.get_active_staff_session(request.session.session_key)
if ss:
+1
View File
@@ -370,6 +370,7 @@ urlpatterns = [
re_path(r'^discounts/add$', discounts.DiscountCreate.as_view(), name='event.items.discounts.add'),
re_path(r'^vouchers/$', vouchers.VoucherList.as_view(), name='event.vouchers'),
re_path(r'^vouchers/tags/$', vouchers.VoucherTags.as_view(), name='event.vouchers.tags'),
re_path(r'^vouchers/tags/typeahead$', typeahead.voucher_tag_typeahead, name='event.vouchers.tags.typeahead'),
re_path(r'^vouchers/rng$', vouchers.VoucherRNG.as_view(), name='event.vouchers.rng'),
re_path(r'^vouchers/item_select$', typeahead.itemvarquota_select2, name='event.vouchers.itemselect2'),
re_path(r'^vouchers/(?P<voucher>\d+)/$', vouchers.VoucherUpdate.as_view(), name='event.voucher'),
+1
View File
@@ -537,6 +537,7 @@ class SubEventDetail(EventPermissionRequiredMixin, DetailView):
pcnt=Subquery(
OrderPosition.objects.filter(
subevent=self.object,
order_id=OuterRef("id"),
).values("subevent").annotate(c=Count("*")).values("c")
),
has_cancellation_request=Exists(CancellationRequest.objects.filter(order=OuterRef("pk"))),
+15
View File
@@ -975,6 +975,21 @@ def subevent_meta_values(request, organizer, event):
})
@event_permission_required('event.vouchers:read')
def voucher_tag_typeahead(request, **kwargs):
q = request.GET.get('q', '')
tags = request.event.vouchers.filter(
tag__isnull=False,
waitinglistentries__isnull=True,
).filter(
tag__icontains=q,
).values_list('tag', flat=True).distinct().order_by('tag')[:10]
return JsonResponse({
'results': [{'name': t} for t in tags]
})
def item_meta_values(request, organizer, event):
q = request.GET.get('q')
propname = request.GET.get('property')
+56 -16
View File
@@ -19,19 +19,23 @@
# 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/>.
#
import hmac
import json
from contextlib import contextmanager
from django.conf import settings
from django.contrib import messages
from django.contrib.auth import (
BACKEND_SESSION_KEY, get_user_model, load_backend, login,
BACKEND_SESSION_KEY, HASH_SESSION_KEY, get_user_model, load_backend, login,
logout,
)
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.auth.views import redirect_to_login
from django.core.exceptions import PermissionDenied
from django.db import transaction
from django.shortcuts import get_object_or_404, redirect
from django.urls import reverse
from django.utils.crypto import get_random_string
from django.utils.crypto import get_random_string, salted_hmac
from django.utils.functional import cached_property
from django.utils.translation import gettext_lazy as _
from django.views import View
@@ -218,11 +222,13 @@ class UserImpersonateView(AdministratorPermissionRequiredMixin, RecentAuthentica
def post(self, request, *args, **kwargs):
self.object = get_object_or_404(User, pk=self.kwargs.get("id"))
staff_session = request.user.get_active_staff_session(request.session.session_key)
self.request.user.log_action('pretix.control.auth.user.impersonated',
user=request.user,
data={
'other': self.kwargs.get("id"),
'other_email': self.object.email
'other_email': self.object.email,
'staff_session': staff_session.pk,
})
oldkey = request.session.session_key
@@ -230,7 +236,15 @@ class UserImpersonateView(AdministratorPermissionRequiredMixin, RecentAuthentica
hijacked = self.object
hijack_history = request.session.get("hijack_history", [])
hijack_history.append(request.user._meta.pk.value_to_string(hijacker))
hijack_history.append({
"user": request.user.pk,
# We include the auth_hash, because it is unguessable. So should an attacker gain an attack vector to
# modify hijack_history, they can't just insert or change a user that shouldn't be there. We HMAC it
# again, though, since we also do not want the auth_hash of the admin user to be in the session of an
# unprivileged user to contain the risk if there is some leak of session data.
"auth_hash": salted_hmac(key_salt=b"hijack-history-hash", value=request.session[HASH_SESSION_KEY],
algorithm="sha256", secret=settings.SECRET_KEY).hexdigest(),
})
backend = get_used_backend(request)
backend = f"{backend.__module__}.{backend.__class__.__name__}"
@@ -238,6 +252,12 @@ class UserImpersonateView(AdministratorPermissionRequiredMixin, RecentAuthentica
with signals.no_update_last_login(), keep_session_age(request.session):
login(request, hijacked, backend=backend)
request.session.save()
staff_session.logs.create(
method='(NOTE)',
url=f'Begin impersonating user #{hijacked.pk} (request session {oldkey[:8]} -> {request.session.session_key[:8]})',
)
request.session["hijack_history"] = hijack_history
signals.hijack_started.send(
@@ -254,13 +274,28 @@ class UserImpersonateView(AdministratorPermissionRequiredMixin, RecentAuthentica
class UserImpersonateStopView(LoginRequiredMixin, View):
def post(self, request, *args, **kwargs):
impersonated = request.user
hijs = request.session['hijacker_session']
staff_session_key = request.session['hijacker_session']
prev_session_key = request.session.session_key
hijack_history = request.session.get("hijack_history", [])
hijacked = request.user
user_pk = hijack_history.pop()
hijacker = get_object_or_404(get_user_model(), pk=user_pk)
prev_session = hijack_history.pop()
hijacker = get_object_or_404(get_user_model(), pk=prev_session["user"])
staff_session = hijacker.get_active_staff_session(staff_session_key)
if not staff_session:
raise PermissionDenied
expected_hash = salted_hmac(
key_salt=b"hijack-history-hash",
value=hijacker.get_session_auth_hash(),
algorithm="sha256",
secret=settings.SECRET_KEY
).hexdigest()
if not hmac.compare_digest(expected_hash, prev_session["auth_hash"]):
# Could be an attacker-controlled hijack history, but could also be e.g. a password change of the admin user
# that happened during the hijack session
logout(request)
return redirect_to_login(request.get_full_path())
backend = get_used_backend(request)
backend = f"{backend.__module__}.{backend.__class__.__name__}"
with signals.no_update_last_login(), keep_session_age(request.session):
@@ -275,17 +310,22 @@ class UserImpersonateStopView(LoginRequiredMixin, View):
hijacked=hijacked,
)
ss = request.user.get_active_staff_session(hijs)
if ss:
request.session.save()
ss.session_key = request.session.session_key
ss.save()
request.session.save()
staff_session.session_key = request.session.session_key
staff_session.save()
staff_session.logs.create(
method='(NOTE)',
url=f'Stop impersonating user #{hijacked.pk} (request session {prev_session_key[:8]}, '
f'staff session {staff_session_key[:8]} -> {request.session.session_key[:8]})',
)
request.user.log_action('pretix.control.auth.user.impersonate_stopped',
user=request.user,
data={
'other': impersonated.pk,
'other_email': impersonated.email
'other': hijacked.pk,
'other_email': hijacked.email,
'staff_session': staff_session.pk,
})
return redirect(reverse('control:index'))
+21
View File
@@ -20,6 +20,8 @@
# <https://www.gnu.org/licenses/>.
#
import contextlib
import logging
import os
from django.conf import settings
from django.core.exceptions import FieldDoesNotExist, ImproperlyConfigured
@@ -29,6 +31,8 @@ from django.db.models import (
)
from django.utils.functional import lazy
logger = logging.getLogger(__name__)
class DummyRollbackException(Exception):
pass
@@ -285,3 +289,20 @@ def get_deterministic_ordering(model, ordering):
# on the primary key to provide total ordering.
ordering.append("-pk")
return ordering
@contextlib.contextmanager
def ensure_no_queries():
"""
Ensures that no database queries are being made in that context.
Raises a RuntimeError if running in DEBUG mode, otherwise logs
an error.
:return:
"""
def blocker(*args, **kwargs):
if settings.DEBUG or "PYTEST_CURRENT_TEST" in os.environ:
raise RuntimeError(f"Unexpected DB query: {args[1]}")
logger.error("Unexpected DB query: %s", args[1])
with connection.execute_wrapper(blocker):
yield
+7
View File
@@ -46,6 +46,13 @@ class RequestIdFilter(logging.Filter):
return True
class SkipNotFoundFilter(logging.Filter):
# Drop the WARNING "Not Found: ..." records django.request emits for 404s
# We have different access logs for that
def filter(self, record):
return getattr(record, 'status_code', None) != 404
class RequestIdMiddleware:
def __init__(self, get_response):
self.get_response = get_response
+2 -1
View File
@@ -151,13 +151,14 @@ def monkeypatch_urllib3_ssrf_protection():
if not getattr(settings, "ALLOW_HTTP_TO_PRIVATE_NETWORKS", False):
ip_addr = ipaddress.ip_address(sa[0])
check_ip4 = ip_addr.ipv4_mapped if getattr(ip_addr, "ipv4_mapped", None) else ip_addr
if ip_addr.is_multicast:
raise HTTPError(f"Request to multicast address {sa[0]} blocked")
if ip_addr.is_loopback or ip_addr.is_link_local:
raise HTTPError(f"Request to local address {sa[0]} blocked")
if ip_addr.is_private:
raise HTTPError(f"Request to private address {sa[0]} blocked")
if ip_addr in _cgnat_net:
if check_ip4 in _cgnat_net:
raise HTTPError(f"Request to RFC 6598 address {sa[0]} blocked")
sock = None
+14 -1
View File
@@ -25,6 +25,19 @@ import text_unidecode
from django.utils.safestring import mark_safe
from django.utils.translation import gettext_lazy as _
EPC_QR_ALLOWED_CHARS = set(
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
"0123456789/-?:().,'+ "
)
def epc_qr_field(value):
return ''.join(
char for char in text_unidecode.unidecode(str(value or ''))
if char in EPC_QR_ALLOWED_CHARS
)
def dotdecimal(value):
return str(value).replace(",", ".")
@@ -77,7 +90,7 @@ def euro_epc_qr(
return {
"id": "girocode",
"label": "EPC-QR",
"qr_data": "\n".join(text_unidecode.unidecode(str(d or '')) for d in [
"qr_data": "\n".join(epc_qr_field(d) for d in [
"BCD", # Service Tag: BCD
"002", # Version: V2
"2", # Character set: ISO 8859-1
File diff suppressed because it is too large Load Diff
+423 -23
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-05-27 14:47+0000\n"
"POT-Creation-Date: 2026-06-28 15:49+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -130,6 +130,7 @@ msgid "Mercado Pago"
msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:54
#: pretix/static/pretixpresale/js/ui/cart.js:89
msgid "Continue"
msgstr ""
@@ -183,6 +184,172 @@ msgstr ""
msgid "Contacting your bank …"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:34
msgid "Select a check-in list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:35
msgid "No active check-in lists found."
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:36
msgid "Switch check-in list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:37
msgid "Search results"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:38
msgid "No tickets found"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:39
msgid "Result"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:40
msgid "This ticket requires special attention"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:41
msgid "Switch direction"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:42
msgid "Entry"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:43
msgid "Exit"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:44
msgid "Scan a ticket or search and press return…"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:45
msgid "Load more"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:46
msgid "Valid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:47
msgid "Unpaid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:48
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:49
msgid "Canceled"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:50
msgid "Confirmed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:51
msgid "Approval pending"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:52
msgid "Redeemed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:53
msgid "Cancel"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:55
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:64
msgid "Ticket not paid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:56
msgid "This ticket is not yet paid. Do you want to continue anyways?"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:57
msgid "Additional information required"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:58
msgid "Valid ticket"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:59
msgid "Exit recorded"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:60
msgid "Ticket already used"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:61
msgid "Information required"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:62
msgid "Unknown ticket"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:63
msgid "Ticket type not allowed here"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:65
msgid "Entry not allowed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:66
msgid "Ticket code revoked/changed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:67
msgid "Ticket blocked"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:68
msgid "Ticket not valid at this time"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:69
msgid "Order canceled"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:70
msgid "Ticket code is ambiguous on list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:71
msgid "Order not approved"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:72
msgid "Checked-in Tickets"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:73
msgid "Valid Tickets"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:74
msgid "Currently inside"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:75
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "Yes"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:76
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "No"
msgstr ""
#: pretix/static/lightbox/js/lightbox.js:96
msgid "close"
msgstr ""
@@ -210,8 +377,8 @@ msgid ""
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:135
#: pretix/static/pretixbase/js/asynctask.js:192
#: pretix/static/pretixbase/js/asynctask.js:196
#: pretix/static/pretixbase/js/asynctask.js:193
#: pretix/static/pretixbase/js/asynctask.js:197
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
@@ -227,28 +394,28 @@ msgstr ""
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:198
#: pretix/static/pretixbase/js/asynctask.js:199
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:226
#: pretix/static/pretixbase/js/asynctask.js:227
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:229
#: pretix/static/pretixbase/js/asynctask.js:230
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:286
#: pretix/static/pretixbase/js/asynctask.js:287
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:341
#: pretix/static/pretixbase/js/asynctask.js:342
msgid "Close message"
msgstr ""
@@ -260,6 +427,165 @@ msgstr ""
msgid "Press Ctrl-C to copy!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:80
msgid "Edit"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:86
msgid "Visualize"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:96
msgid ""
"Your rule always filters by product or variation, but the following products "
"or variations are not contained in any of your rule parts so people with "
"these tickets will not get in:"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:99
msgid "Please double-check if this was intentional."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:4
msgid "All of the conditions below (AND)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:5
msgid "At least one of the conditions below (OR)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:6
msgid "Event start"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:7
msgid "Event end"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:8
msgid "Event admission"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:9
msgid "custom date and time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:10
msgid "custom time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:11
msgid "Tolerance (minutes)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:12
msgid "Add condition"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:13
msgid "minutes"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:14
msgid "Duplicate"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:15
msgctxt "entry_status"
msgid "present"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:16
msgctxt "entry_status"
msgid "absent"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:29
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:35
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:41
msgid "is one of"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:47
msgid "is before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:51
msgid "is after"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:57
msgid "="
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:117
msgid "Product"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:121
msgid "Product variation"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:125
msgid "Gate"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:129
msgid "Current date and time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:133
msgid "Current day of the week (1 = Monday, 7 = Sunday)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:137
msgid "Current entry status"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:141
msgid "Number of previous entries"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:145
msgid "Number of previous entries since midnight"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:149
msgid "Number of previous entries since"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:153
msgid "Number of previous entries before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:157
msgid "Number of days with a previous entry"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:161
msgid "Number of days with a previous entry since"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:165
msgid "Number of days with a previous entry before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:169
msgid "Minutes since last entry (-1 on first entry)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:173
msgid "Minutes since first entry (-1 on first entry)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/django-interop.ts:47
msgid "Error: Product not found!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/django-interop.ts:54
msgid "Error: Variation not found!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:171
msgid "Check-in QR"
msgstr ""
@@ -358,23 +684,23 @@ msgstr ""
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:842
#: pretix/static/pretixcontrol/js/ui/main.js:844
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:845
#: pretix/static/pretixcontrol/js/ui/main.js:847
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1003
#: pretix/static/pretixcontrol/js/ui/main.js:1005
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1043
#: pretix/static/pretixcontrol/js/ui/main.js:1045
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1124
#: pretix/static/pretixcontrol/js/ui/main.js:1126
msgid "You have unsaved changes!"
msgstr ""
@@ -394,16 +720,6 @@ msgstr ""
msgid "Count"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "Yes"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "No"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/subevent.js:112
msgid "(one more date)"
msgid_plural "({num} more dates)"
@@ -470,164 +786,196 @@ msgid "Google Pay"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:16
#: pretix/static/pretixpresale/widget/src/i18n.ts:30
msgctxt "widget"
msgid "Quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:17
#: pretix/static/pretixpresale/widget/src/i18n.ts:31
msgctxt "widget"
msgid "Decrease quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:18
#: pretix/static/pretixpresale/widget/src/i18n.ts:32
msgctxt "widget"
msgid "Increase quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:19
#: pretix/static/pretixpresale/widget/src/i18n.ts:33
msgctxt "widget"
msgid "Filter events by"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:20
#: pretix/static/pretixpresale/widget/src/i18n.ts:34
msgctxt "widget"
msgid "Filter"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
#: pretix/static/pretixpresale/widget/src/i18n.ts:35
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/widget/src/i18n.ts:36
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/widget/src/i18n.ts:37
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/widget/src/i18n.ts:38
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/widget/src/i18n.ts:39
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/widget/src/i18n.ts:40
#, javascript-format
msgctxt "widget"
msgid "Select variant %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/widget/src/i18n.ts:41
msgctxt "widget"
msgid "Sold out"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/widget/src/i18n.ts:42
msgctxt "widget"
msgid "Buy"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/widget/src/i18n.ts:43
msgctxt "widget"
msgid "Register"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/widget/src/i18n.ts:44
msgctxt "widget"
msgid "Reserved"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/widget/src/i18n.ts:45
msgctxt "widget"
msgid "FREE"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/widget/src/i18n.ts:46
msgctxt "widget"
msgid "from %(currency)s %(price)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:33
#: pretix/static/pretixpresale/widget/src/i18n.ts:47
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:34
#: pretix/static/pretixpresale/widget/src/i18n.ts:48
msgctxt "widget"
msgid "incl. %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/widget/src/i18n.ts:49
msgctxt "widget"
msgid "plus %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/widget/src/i18n.ts:50
msgctxt "widget"
msgid "incl. taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/widget/src/i18n.ts:51
msgctxt "widget"
msgid "plus taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/widget/src/i18n.ts:52
#, javascript-format
msgctxt "widget"
msgid "currently available: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/widget/src/i18n.ts:53
msgctxt "widget"
msgid "Only available with a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:43
#: pretix/static/pretixpresale/widget/src/i18n.ts:54
#: pretix/static/pretixpresale/widget/src/i18n.ts:57
msgctxt "widget"
msgid "Not yet available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/widget/src/i18n.ts:55
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/widget/src/i18n.ts:56
msgctxt "widget"
msgid "Currently not available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/widget/src/i18n.ts:58
#, javascript-format
msgctxt "widget"
msgid "minimum amount to order: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:45
#: pretix/static/pretixpresale/widget/src/i18n.ts:59
msgctxt "widget"
msgid "Close ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:46
#: pretix/static/pretixpresale/widget/src/i18n.ts:60
msgctxt "widget"
msgid "The ticket shop could not be loaded."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:47
#: pretix/static/pretixpresale/widget/src/i18n.ts:61
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
@@ -635,21 +983,25 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/widget/src/i18n.ts:62
msgctxt "widget"
msgid "Open ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/widget/src/i18n.ts:63
msgctxt "widget"
msgid "Checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:51
#: pretix/static/pretixpresale/widget/src/i18n.ts:64
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/widget/src/i18n.ts:65
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
@@ -657,11 +1009,13 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:54
#: pretix/static/pretixpresale/widget/src/i18n.ts:66
msgctxt "widget"
msgid "Waiting list"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/widget/src/i18n.ts:67
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
@@ -669,96 +1023,115 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/widget/src/i18n.ts:68
msgctxt "widget"
msgid "Resume checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/widget/src/i18n.ts:69
msgctxt "widget"
msgid "Redeem a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/widget/src/i18n.ts:70
msgctxt "widget"
msgid "Redeem"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/widget/src/i18n.ts:71
msgctxt "widget"
msgid "Voucher code"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/widget/src/i18n.ts:72
msgctxt "widget"
msgid "Close"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:62
#: pretix/static/pretixpresale/widget/src/i18n.ts:73
msgctxt "widget"
msgid "Close checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:63
#: pretix/static/pretixpresale/widget/src/i18n.ts:74
msgctxt "widget"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/widget/src/i18n.ts:75
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/widget/src/i18n.ts:76
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/widget/src/i18n.ts:77
msgctxt "widget"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/widget/src/i18n.ts:78
msgctxt "widget"
msgid "Choose a different event"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/widget/src/i18n.ts:79
msgctxt "widget"
msgid "Choose a different date"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/widget/src/i18n.ts:80
msgctxt "widget"
msgid "Back"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/widget/src/i18n.ts:81
msgctxt "widget"
msgid "Next month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/widget/src/i18n.ts:82
msgctxt "widget"
msgid "Previous month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/widget/src/i18n.ts:83
msgctxt "widget"
msgid "Next week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/widget/src/i18n.ts:84
msgctxt "widget"
msgid "Previous week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/widget/src/i18n.ts:85
msgctxt "widget"
msgid "Open seat selection"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/widget/src/i18n.ts:86
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -767,110 +1140,137 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/widget/src/i18n.ts:87
msgctxt "widget"
msgid "Load more"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/widget/src/i18n.ts:89
msgid "Mo"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/widget/src/i18n.ts:90
msgid "Tu"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/widget/src/i18n.ts:91
msgid "We"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/widget/src/i18n.ts:92
msgid "Th"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/widget/src/i18n.ts:93
msgid "Fr"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/widget/src/i18n.ts:94
msgid "Sa"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/widget/src/i18n.ts:95
msgid "Su"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/widget/src/i18n.ts:96
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/widget/src/i18n.ts:97
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/widget/src/i18n.ts:98
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:88
#: pretix/static/pretixpresale/widget/src/i18n.ts:99
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:89
#: pretix/static/pretixpresale/widget/src/i18n.ts:100
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/widget/src/i18n.ts:101
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/widget/src/i18n.ts:102
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/widget/src/i18n.ts:105
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/widget/src/i18n.ts:106
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/widget/src/i18n.ts:107
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/widget/src/i18n.ts:108
msgid "April"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/widget/src/i18n.ts:109
msgid "May"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/widget/src/i18n.ts:110
msgid "June"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/widget/src/i18n.ts:111
msgid "July"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/widget/src/i18n.ts:112
msgid "August"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:102
#: pretix/static/pretixpresale/widget/src/i18n.ts:113
msgid "September"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:103
#: pretix/static/pretixpresale/widget/src/i18n.ts:114
msgid "October"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:104
#: pretix/static/pretixpresale/widget/src/i18n.ts:115
msgid "November"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:105
#: pretix/static/pretixpresale/widget/src/i18n.ts:116
msgid "December"
msgstr ""
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+423 -23
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-05-27 14:47+0000\n"
"POT-Creation-Date: 2026-06-28 15:49+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -130,6 +130,7 @@ msgid "Mercado Pago"
msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:54
#: pretix/static/pretixpresale/js/ui/cart.js:89
msgid "Continue"
msgstr ""
@@ -183,6 +184,172 @@ msgstr ""
msgid "Contacting your bank …"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:34
msgid "Select a check-in list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:35
msgid "No active check-in lists found."
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:36
msgid "Switch check-in list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:37
msgid "Search results"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:38
msgid "No tickets found"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:39
msgid "Result"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:40
msgid "This ticket requires special attention"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:41
msgid "Switch direction"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:42
msgid "Entry"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:43
msgid "Exit"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:44
msgid "Scan a ticket or search and press return…"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:45
msgid "Load more"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:46
msgid "Valid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:47
msgid "Unpaid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:48
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:49
msgid "Canceled"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:50
msgid "Confirmed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:51
msgid "Approval pending"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:52
msgid "Redeemed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:53
msgid "Cancel"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:55
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:64
msgid "Ticket not paid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:56
msgid "This ticket is not yet paid. Do you want to continue anyways?"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:57
msgid "Additional information required"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:58
msgid "Valid ticket"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:59
msgid "Exit recorded"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:60
msgid "Ticket already used"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:61
msgid "Information required"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:62
msgid "Unknown ticket"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:63
msgid "Ticket type not allowed here"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:65
msgid "Entry not allowed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:66
msgid "Ticket code revoked/changed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:67
msgid "Ticket blocked"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:68
msgid "Ticket not valid at this time"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:69
msgid "Order canceled"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:70
msgid "Ticket code is ambiguous on list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:71
msgid "Order not approved"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:72
msgid "Checked-in Tickets"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:73
msgid "Valid Tickets"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:74
msgid "Currently inside"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:75
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "Yes"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:76
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "No"
msgstr ""
#: pretix/static/lightbox/js/lightbox.js:96
msgid "close"
msgstr ""
@@ -210,8 +377,8 @@ msgid ""
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:135
#: pretix/static/pretixbase/js/asynctask.js:192
#: pretix/static/pretixbase/js/asynctask.js:196
#: pretix/static/pretixbase/js/asynctask.js:193
#: pretix/static/pretixbase/js/asynctask.js:197
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
@@ -227,28 +394,28 @@ msgstr ""
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:198
#: pretix/static/pretixbase/js/asynctask.js:199
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:226
#: pretix/static/pretixbase/js/asynctask.js:227
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:229
#: pretix/static/pretixbase/js/asynctask.js:230
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:286
#: pretix/static/pretixbase/js/asynctask.js:287
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:341
#: pretix/static/pretixbase/js/asynctask.js:342
msgid "Close message"
msgstr ""
@@ -260,6 +427,165 @@ msgstr ""
msgid "Press Ctrl-C to copy!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:80
msgid "Edit"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:86
msgid "Visualize"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:96
msgid ""
"Your rule always filters by product or variation, but the following products "
"or variations are not contained in any of your rule parts so people with "
"these tickets will not get in:"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:99
msgid "Please double-check if this was intentional."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:4
msgid "All of the conditions below (AND)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:5
msgid "At least one of the conditions below (OR)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:6
msgid "Event start"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:7
msgid "Event end"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:8
msgid "Event admission"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:9
msgid "custom date and time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:10
msgid "custom time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:11
msgid "Tolerance (minutes)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:12
msgid "Add condition"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:13
msgid "minutes"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:14
msgid "Duplicate"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:15
msgctxt "entry_status"
msgid "present"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:16
msgctxt "entry_status"
msgid "absent"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:29
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:35
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:41
msgid "is one of"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:47
msgid "is before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:51
msgid "is after"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:57
msgid "="
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:117
msgid "Product"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:121
msgid "Product variation"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:125
msgid "Gate"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:129
msgid "Current date and time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:133
msgid "Current day of the week (1 = Monday, 7 = Sunday)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:137
msgid "Current entry status"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:141
msgid "Number of previous entries"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:145
msgid "Number of previous entries since midnight"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:149
msgid "Number of previous entries since"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:153
msgid "Number of previous entries before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:157
msgid "Number of days with a previous entry"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:161
msgid "Number of days with a previous entry since"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:165
msgid "Number of days with a previous entry before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:169
msgid "Minutes since last entry (-1 on first entry)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:173
msgid "Minutes since first entry (-1 on first entry)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/django-interop.ts:47
msgid "Error: Product not found!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/django-interop.ts:54
msgid "Error: Variation not found!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:171
msgid "Check-in QR"
msgstr ""
@@ -358,23 +684,23 @@ msgstr ""
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:842
#: pretix/static/pretixcontrol/js/ui/main.js:844
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:845
#: pretix/static/pretixcontrol/js/ui/main.js:847
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1003
#: pretix/static/pretixcontrol/js/ui/main.js:1005
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1043
#: pretix/static/pretixcontrol/js/ui/main.js:1045
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1124
#: pretix/static/pretixcontrol/js/ui/main.js:1126
msgid "You have unsaved changes!"
msgstr ""
@@ -394,16 +720,6 @@ msgstr ""
msgid "Count"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "Yes"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "No"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/subevent.js:112
msgid "(one more date)"
msgid_plural "({num} more dates)"
@@ -470,164 +786,196 @@ msgid "Google Pay"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:16
#: pretix/static/pretixpresale/widget/src/i18n.ts:30
msgctxt "widget"
msgid "Quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:17
#: pretix/static/pretixpresale/widget/src/i18n.ts:31
msgctxt "widget"
msgid "Decrease quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:18
#: pretix/static/pretixpresale/widget/src/i18n.ts:32
msgctxt "widget"
msgid "Increase quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:19
#: pretix/static/pretixpresale/widget/src/i18n.ts:33
msgctxt "widget"
msgid "Filter events by"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:20
#: pretix/static/pretixpresale/widget/src/i18n.ts:34
msgctxt "widget"
msgid "Filter"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
#: pretix/static/pretixpresale/widget/src/i18n.ts:35
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/widget/src/i18n.ts:36
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/widget/src/i18n.ts:37
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/widget/src/i18n.ts:38
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/widget/src/i18n.ts:39
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/widget/src/i18n.ts:40
#, javascript-format
msgctxt "widget"
msgid "Select variant %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/widget/src/i18n.ts:41
msgctxt "widget"
msgid "Sold out"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/widget/src/i18n.ts:42
msgctxt "widget"
msgid "Buy"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/widget/src/i18n.ts:43
msgctxt "widget"
msgid "Register"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/widget/src/i18n.ts:44
msgctxt "widget"
msgid "Reserved"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/widget/src/i18n.ts:45
msgctxt "widget"
msgid "FREE"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/widget/src/i18n.ts:46
msgctxt "widget"
msgid "from %(currency)s %(price)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:33
#: pretix/static/pretixpresale/widget/src/i18n.ts:47
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:34
#: pretix/static/pretixpresale/widget/src/i18n.ts:48
msgctxt "widget"
msgid "incl. %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/widget/src/i18n.ts:49
msgctxt "widget"
msgid "plus %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/widget/src/i18n.ts:50
msgctxt "widget"
msgid "incl. taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/widget/src/i18n.ts:51
msgctxt "widget"
msgid "plus taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/widget/src/i18n.ts:52
#, javascript-format
msgctxt "widget"
msgid "currently available: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/widget/src/i18n.ts:53
msgctxt "widget"
msgid "Only available with a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:43
#: pretix/static/pretixpresale/widget/src/i18n.ts:54
#: pretix/static/pretixpresale/widget/src/i18n.ts:57
msgctxt "widget"
msgid "Not yet available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/widget/src/i18n.ts:55
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/widget/src/i18n.ts:56
msgctxt "widget"
msgid "Currently not available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/widget/src/i18n.ts:58
#, javascript-format
msgctxt "widget"
msgid "minimum amount to order: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:45
#: pretix/static/pretixpresale/widget/src/i18n.ts:59
msgctxt "widget"
msgid "Close ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:46
#: pretix/static/pretixpresale/widget/src/i18n.ts:60
msgctxt "widget"
msgid "The ticket shop could not be loaded."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:47
#: pretix/static/pretixpresale/widget/src/i18n.ts:61
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
@@ -635,21 +983,25 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/widget/src/i18n.ts:62
msgctxt "widget"
msgid "Open ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/widget/src/i18n.ts:63
msgctxt "widget"
msgid "Checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:51
#: pretix/static/pretixpresale/widget/src/i18n.ts:64
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/widget/src/i18n.ts:65
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
@@ -657,11 +1009,13 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:54
#: pretix/static/pretixpresale/widget/src/i18n.ts:66
msgctxt "widget"
msgid "Waiting list"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/widget/src/i18n.ts:67
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
@@ -669,96 +1023,115 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/widget/src/i18n.ts:68
msgctxt "widget"
msgid "Resume checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/widget/src/i18n.ts:69
msgctxt "widget"
msgid "Redeem a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/widget/src/i18n.ts:70
msgctxt "widget"
msgid "Redeem"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/widget/src/i18n.ts:71
msgctxt "widget"
msgid "Voucher code"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/widget/src/i18n.ts:72
msgctxt "widget"
msgid "Close"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:62
#: pretix/static/pretixpresale/widget/src/i18n.ts:73
msgctxt "widget"
msgid "Close checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:63
#: pretix/static/pretixpresale/widget/src/i18n.ts:74
msgctxt "widget"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/widget/src/i18n.ts:75
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/widget/src/i18n.ts:76
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/widget/src/i18n.ts:77
msgctxt "widget"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/widget/src/i18n.ts:78
msgctxt "widget"
msgid "Choose a different event"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/widget/src/i18n.ts:79
msgctxt "widget"
msgid "Choose a different date"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/widget/src/i18n.ts:80
msgctxt "widget"
msgid "Back"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/widget/src/i18n.ts:81
msgctxt "widget"
msgid "Next month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/widget/src/i18n.ts:82
msgctxt "widget"
msgid "Previous month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/widget/src/i18n.ts:83
msgctxt "widget"
msgid "Next week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/widget/src/i18n.ts:84
msgctxt "widget"
msgid "Previous week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/widget/src/i18n.ts:85
msgctxt "widget"
msgid "Open seat selection"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/widget/src/i18n.ts:86
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -767,110 +1140,137 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/widget/src/i18n.ts:87
msgctxt "widget"
msgid "Load more"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/widget/src/i18n.ts:89
msgid "Mo"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/widget/src/i18n.ts:90
msgid "Tu"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/widget/src/i18n.ts:91
msgid "We"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/widget/src/i18n.ts:92
msgid "Th"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/widget/src/i18n.ts:93
msgid "Fr"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/widget/src/i18n.ts:94
msgid "Sa"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/widget/src/i18n.ts:95
msgid "Su"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/widget/src/i18n.ts:96
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/widget/src/i18n.ts:97
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/widget/src/i18n.ts:98
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:88
#: pretix/static/pretixpresale/widget/src/i18n.ts:99
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:89
#: pretix/static/pretixpresale/widget/src/i18n.ts:100
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/widget/src/i18n.ts:101
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/widget/src/i18n.ts:102
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/widget/src/i18n.ts:105
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/widget/src/i18n.ts:106
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/widget/src/i18n.ts:107
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/widget/src/i18n.ts:108
msgid "April"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/widget/src/i18n.ts:109
msgid "May"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/widget/src/i18n.ts:110
msgid "June"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/widget/src/i18n.ts:111
msgid "July"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/widget/src/i18n.ts:112
msgid "August"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:102
#: pretix/static/pretixpresale/widget/src/i18n.ts:113
msgid "September"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:103
#: pretix/static/pretixpresale/widget/src/i18n.ts:114
msgid "October"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:104
#: pretix/static/pretixpresale/widget/src/i18n.ts:115
msgid "November"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:105
#: pretix/static/pretixpresale/widget/src/i18n.ts:116
msgid "December"
msgstr ""
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+423 -23
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-05-27 14:47+0000\n"
"POT-Creation-Date: 2026-06-28 15:49+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -131,6 +131,7 @@ msgid "Mercado Pago"
msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:54
#: pretix/static/pretixpresale/js/ui/cart.js:89
msgid "Continue"
msgstr ""
@@ -184,6 +185,172 @@ msgstr ""
msgid "Contacting your bank …"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:34
msgid "Select a check-in list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:35
msgid "No active check-in lists found."
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:36
msgid "Switch check-in list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:37
msgid "Search results"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:38
msgid "No tickets found"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:39
msgid "Result"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:40
msgid "This ticket requires special attention"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:41
msgid "Switch direction"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:42
msgid "Entry"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:43
msgid "Exit"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:44
msgid "Scan a ticket or search and press return…"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:45
msgid "Load more"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:46
msgid "Valid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:47
msgid "Unpaid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:48
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:49
msgid "Canceled"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:50
msgid "Confirmed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:51
msgid "Approval pending"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:52
msgid "Redeemed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:53
msgid "Cancel"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:55
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:64
msgid "Ticket not paid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:56
msgid "This ticket is not yet paid. Do you want to continue anyways?"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:57
msgid "Additional information required"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:58
msgid "Valid ticket"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:59
msgid "Exit recorded"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:60
msgid "Ticket already used"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:61
msgid "Information required"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:62
msgid "Unknown ticket"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:63
msgid "Ticket type not allowed here"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:65
msgid "Entry not allowed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:66
msgid "Ticket code revoked/changed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:67
msgid "Ticket blocked"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:68
msgid "Ticket not valid at this time"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:69
msgid "Order canceled"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:70
msgid "Ticket code is ambiguous on list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:71
msgid "Order not approved"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:72
msgid "Checked-in Tickets"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:73
msgid "Valid Tickets"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:74
msgid "Currently inside"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:75
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "Yes"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:76
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "No"
msgstr ""
#: pretix/static/lightbox/js/lightbox.js:96
msgid "close"
msgstr ""
@@ -211,8 +378,8 @@ msgid ""
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:135
#: pretix/static/pretixbase/js/asynctask.js:192
#: pretix/static/pretixbase/js/asynctask.js:196
#: pretix/static/pretixbase/js/asynctask.js:193
#: pretix/static/pretixbase/js/asynctask.js:197
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
@@ -228,28 +395,28 @@ msgstr ""
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:198
#: pretix/static/pretixbase/js/asynctask.js:199
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:226
#: pretix/static/pretixbase/js/asynctask.js:227
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:229
#: pretix/static/pretixbase/js/asynctask.js:230
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:286
#: pretix/static/pretixbase/js/asynctask.js:287
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:341
#: pretix/static/pretixbase/js/asynctask.js:342
msgid "Close message"
msgstr ""
@@ -261,6 +428,165 @@ msgstr ""
msgid "Press Ctrl-C to copy!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:80
msgid "Edit"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:86
msgid "Visualize"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:96
msgid ""
"Your rule always filters by product or variation, but the following products "
"or variations are not contained in any of your rule parts so people with "
"these tickets will not get in:"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:99
msgid "Please double-check if this was intentional."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:4
msgid "All of the conditions below (AND)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:5
msgid "At least one of the conditions below (OR)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:6
msgid "Event start"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:7
msgid "Event end"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:8
msgid "Event admission"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:9
msgid "custom date and time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:10
msgid "custom time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:11
msgid "Tolerance (minutes)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:12
msgid "Add condition"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:13
msgid "minutes"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:14
msgid "Duplicate"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:15
msgctxt "entry_status"
msgid "present"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:16
msgctxt "entry_status"
msgid "absent"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:29
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:35
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:41
msgid "is one of"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:47
msgid "is before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:51
msgid "is after"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:57
msgid "="
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:117
msgid "Product"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:121
msgid "Product variation"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:125
msgid "Gate"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:129
msgid "Current date and time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:133
msgid "Current day of the week (1 = Monday, 7 = Sunday)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:137
msgid "Current entry status"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:141
msgid "Number of previous entries"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:145
msgid "Number of previous entries since midnight"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:149
msgid "Number of previous entries since"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:153
msgid "Number of previous entries before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:157
msgid "Number of days with a previous entry"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:161
msgid "Number of days with a previous entry since"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:165
msgid "Number of days with a previous entry before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:169
msgid "Minutes since last entry (-1 on first entry)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:173
msgid "Minutes since first entry (-1 on first entry)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/django-interop.ts:47
msgid "Error: Product not found!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/django-interop.ts:54
msgid "Error: Variation not found!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:171
msgid "Check-in QR"
msgstr ""
@@ -359,23 +685,23 @@ msgstr ""
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:842
#: pretix/static/pretixcontrol/js/ui/main.js:844
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:845
#: pretix/static/pretixcontrol/js/ui/main.js:847
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1003
#: pretix/static/pretixcontrol/js/ui/main.js:1005
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1043
#: pretix/static/pretixcontrol/js/ui/main.js:1045
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1124
#: pretix/static/pretixcontrol/js/ui/main.js:1126
msgid "You have unsaved changes!"
msgstr ""
@@ -395,16 +721,6 @@ msgstr ""
msgid "Count"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "Yes"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "No"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/subevent.js:112
msgid "(one more date)"
msgid_plural "({num} more dates)"
@@ -471,164 +787,196 @@ msgid "Google Pay"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:16
#: pretix/static/pretixpresale/widget/src/i18n.ts:30
msgctxt "widget"
msgid "Quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:17
#: pretix/static/pretixpresale/widget/src/i18n.ts:31
msgctxt "widget"
msgid "Decrease quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:18
#: pretix/static/pretixpresale/widget/src/i18n.ts:32
msgctxt "widget"
msgid "Increase quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:19
#: pretix/static/pretixpresale/widget/src/i18n.ts:33
msgctxt "widget"
msgid "Filter events by"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:20
#: pretix/static/pretixpresale/widget/src/i18n.ts:34
msgctxt "widget"
msgid "Filter"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
#: pretix/static/pretixpresale/widget/src/i18n.ts:35
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/widget/src/i18n.ts:36
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/widget/src/i18n.ts:37
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/widget/src/i18n.ts:38
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/widget/src/i18n.ts:39
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/widget/src/i18n.ts:40
#, javascript-format
msgctxt "widget"
msgid "Select variant %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/widget/src/i18n.ts:41
msgctxt "widget"
msgid "Sold out"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/widget/src/i18n.ts:42
msgctxt "widget"
msgid "Buy"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/widget/src/i18n.ts:43
msgctxt "widget"
msgid "Register"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/widget/src/i18n.ts:44
msgctxt "widget"
msgid "Reserved"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/widget/src/i18n.ts:45
msgctxt "widget"
msgid "FREE"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/widget/src/i18n.ts:46
msgctxt "widget"
msgid "from %(currency)s %(price)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:33
#: pretix/static/pretixpresale/widget/src/i18n.ts:47
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:34
#: pretix/static/pretixpresale/widget/src/i18n.ts:48
msgctxt "widget"
msgid "incl. %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/widget/src/i18n.ts:49
msgctxt "widget"
msgid "plus %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/widget/src/i18n.ts:50
msgctxt "widget"
msgid "incl. taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/widget/src/i18n.ts:51
msgctxt "widget"
msgid "plus taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/widget/src/i18n.ts:52
#, javascript-format
msgctxt "widget"
msgid "currently available: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/widget/src/i18n.ts:53
msgctxt "widget"
msgid "Only available with a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:43
#: pretix/static/pretixpresale/widget/src/i18n.ts:54
#: pretix/static/pretixpresale/widget/src/i18n.ts:57
msgctxt "widget"
msgid "Not yet available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/widget/src/i18n.ts:55
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/widget/src/i18n.ts:56
msgctxt "widget"
msgid "Currently not available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/widget/src/i18n.ts:58
#, javascript-format
msgctxt "widget"
msgid "minimum amount to order: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:45
#: pretix/static/pretixpresale/widget/src/i18n.ts:59
msgctxt "widget"
msgid "Close ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:46
#: pretix/static/pretixpresale/widget/src/i18n.ts:60
msgctxt "widget"
msgid "The ticket shop could not be loaded."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:47
#: pretix/static/pretixpresale/widget/src/i18n.ts:61
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
@@ -636,21 +984,25 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/widget/src/i18n.ts:62
msgctxt "widget"
msgid "Open ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/widget/src/i18n.ts:63
msgctxt "widget"
msgid "Checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:51
#: pretix/static/pretixpresale/widget/src/i18n.ts:64
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/widget/src/i18n.ts:65
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
@@ -658,11 +1010,13 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:54
#: pretix/static/pretixpresale/widget/src/i18n.ts:66
msgctxt "widget"
msgid "Waiting list"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/widget/src/i18n.ts:67
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
@@ -670,96 +1024,115 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/widget/src/i18n.ts:68
msgctxt "widget"
msgid "Resume checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/widget/src/i18n.ts:69
msgctxt "widget"
msgid "Redeem a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/widget/src/i18n.ts:70
msgctxt "widget"
msgid "Redeem"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/widget/src/i18n.ts:71
msgctxt "widget"
msgid "Voucher code"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/widget/src/i18n.ts:72
msgctxt "widget"
msgid "Close"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:62
#: pretix/static/pretixpresale/widget/src/i18n.ts:73
msgctxt "widget"
msgid "Close checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:63
#: pretix/static/pretixpresale/widget/src/i18n.ts:74
msgctxt "widget"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/widget/src/i18n.ts:75
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/widget/src/i18n.ts:76
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/widget/src/i18n.ts:77
msgctxt "widget"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/widget/src/i18n.ts:78
msgctxt "widget"
msgid "Choose a different event"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/widget/src/i18n.ts:79
msgctxt "widget"
msgid "Choose a different date"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/widget/src/i18n.ts:80
msgctxt "widget"
msgid "Back"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/widget/src/i18n.ts:81
msgctxt "widget"
msgid "Next month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/widget/src/i18n.ts:82
msgctxt "widget"
msgid "Previous month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/widget/src/i18n.ts:83
msgctxt "widget"
msgid "Next week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/widget/src/i18n.ts:84
msgctxt "widget"
msgid "Previous week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/widget/src/i18n.ts:85
msgctxt "widget"
msgid "Open seat selection"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/widget/src/i18n.ts:86
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -768,110 +1141,137 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/widget/src/i18n.ts:87
msgctxt "widget"
msgid "Load more"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/widget/src/i18n.ts:89
msgid "Mo"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/widget/src/i18n.ts:90
msgid "Tu"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/widget/src/i18n.ts:91
msgid "We"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/widget/src/i18n.ts:92
msgid "Th"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/widget/src/i18n.ts:93
msgid "Fr"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/widget/src/i18n.ts:94
msgid "Sa"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/widget/src/i18n.ts:95
msgid "Su"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/widget/src/i18n.ts:96
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/widget/src/i18n.ts:97
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/widget/src/i18n.ts:98
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:88
#: pretix/static/pretixpresale/widget/src/i18n.ts:99
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:89
#: pretix/static/pretixpresale/widget/src/i18n.ts:100
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/widget/src/i18n.ts:101
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/widget/src/i18n.ts:102
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/widget/src/i18n.ts:105
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/widget/src/i18n.ts:106
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/widget/src/i18n.ts:107
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/widget/src/i18n.ts:108
msgid "April"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/widget/src/i18n.ts:109
msgid "May"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/widget/src/i18n.ts:110
msgid "June"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/widget/src/i18n.ts:111
msgid "July"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/widget/src/i18n.ts:112
msgid "August"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:102
#: pretix/static/pretixpresale/widget/src/i18n.ts:113
msgid "September"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:103
#: pretix/static/pretixpresale/widget/src/i18n.ts:114
msgid "October"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:104
#: pretix/static/pretixpresale/widget/src/i18n.ts:115
msgid "November"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:105
#: pretix/static/pretixpresale/widget/src/i18n.ts:116
msgid "December"
msgstr ""
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+2069 -1828
View File
File diff suppressed because it is too large Load Diff
+13 -13
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-05-27 15:49+0000\n"
"POT-Creation-Date: 2026-06-28 14:44+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -210,8 +210,8 @@ msgid ""
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:135
#: pretix/static/pretixbase/js/asynctask.js:192
#: pretix/static/pretixbase/js/asynctask.js:196
#: pretix/static/pretixbase/js/asynctask.js:193
#: pretix/static/pretixbase/js/asynctask.js:197
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
@@ -227,28 +227,28 @@ msgstr ""
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:198
#: pretix/static/pretixbase/js/asynctask.js:199
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:226
#: pretix/static/pretixbase/js/asynctask.js:227
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:229
#: pretix/static/pretixbase/js/asynctask.js:230
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:286
#: pretix/static/pretixbase/js/asynctask.js:287
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:341
#: pretix/static/pretixbase/js/asynctask.js:342
msgid "Close message"
msgstr ""
@@ -358,23 +358,23 @@ msgstr ""
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:842
#: pretix/static/pretixcontrol/js/ui/main.js:844
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:845
#: pretix/static/pretixcontrol/js/ui/main.js:847
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1003
#: pretix/static/pretixcontrol/js/ui/main.js:1005
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1043
#: pretix/static/pretixcontrol/js/ui/main.js:1045
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1124
#: pretix/static/pretixcontrol/js/ui/main.js:1126
msgid "You have unsaved changes!"
msgstr ""
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+423 -23
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-05-27 14:47+0000\n"
"POT-Creation-Date: 2026-06-28 15:49+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -130,6 +130,7 @@ msgid "Mercado Pago"
msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:54
#: pretix/static/pretixpresale/js/ui/cart.js:89
msgid "Continue"
msgstr ""
@@ -183,6 +184,172 @@ msgstr ""
msgid "Contacting your bank …"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:34
msgid "Select a check-in list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:35
msgid "No active check-in lists found."
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:36
msgid "Switch check-in list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:37
msgid "Search results"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:38
msgid "No tickets found"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:39
msgid "Result"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:40
msgid "This ticket requires special attention"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:41
msgid "Switch direction"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:42
msgid "Entry"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:43
msgid "Exit"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:44
msgid "Scan a ticket or search and press return…"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:45
msgid "Load more"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:46
msgid "Valid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:47
msgid "Unpaid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:48
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:49
msgid "Canceled"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:50
msgid "Confirmed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:51
msgid "Approval pending"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:52
msgid "Redeemed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:53
msgid "Cancel"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:55
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:64
msgid "Ticket not paid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:56
msgid "This ticket is not yet paid. Do you want to continue anyways?"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:57
msgid "Additional information required"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:58
msgid "Valid ticket"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:59
msgid "Exit recorded"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:60
msgid "Ticket already used"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:61
msgid "Information required"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:62
msgid "Unknown ticket"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:63
msgid "Ticket type not allowed here"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:65
msgid "Entry not allowed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:66
msgid "Ticket code revoked/changed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:67
msgid "Ticket blocked"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:68
msgid "Ticket not valid at this time"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:69
msgid "Order canceled"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:70
msgid "Ticket code is ambiguous on list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:71
msgid "Order not approved"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:72
msgid "Checked-in Tickets"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:73
msgid "Valid Tickets"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:74
msgid "Currently inside"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:75
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "Yes"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:76
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "No"
msgstr ""
#: pretix/static/lightbox/js/lightbox.js:96
msgid "close"
msgstr ""
@@ -210,8 +377,8 @@ msgid ""
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:135
#: pretix/static/pretixbase/js/asynctask.js:192
#: pretix/static/pretixbase/js/asynctask.js:196
#: pretix/static/pretixbase/js/asynctask.js:193
#: pretix/static/pretixbase/js/asynctask.js:197
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
@@ -227,28 +394,28 @@ msgstr ""
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:198
#: pretix/static/pretixbase/js/asynctask.js:199
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:226
#: pretix/static/pretixbase/js/asynctask.js:227
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:229
#: pretix/static/pretixbase/js/asynctask.js:230
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:286
#: pretix/static/pretixbase/js/asynctask.js:287
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:341
#: pretix/static/pretixbase/js/asynctask.js:342
msgid "Close message"
msgstr ""
@@ -260,6 +427,165 @@ msgstr ""
msgid "Press Ctrl-C to copy!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:80
msgid "Edit"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:86
msgid "Visualize"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:96
msgid ""
"Your rule always filters by product or variation, but the following products "
"or variations are not contained in any of your rule parts so people with "
"these tickets will not get in:"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:99
msgid "Please double-check if this was intentional."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:4
msgid "All of the conditions below (AND)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:5
msgid "At least one of the conditions below (OR)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:6
msgid "Event start"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:7
msgid "Event end"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:8
msgid "Event admission"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:9
msgid "custom date and time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:10
msgid "custom time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:11
msgid "Tolerance (minutes)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:12
msgid "Add condition"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:13
msgid "minutes"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:14
msgid "Duplicate"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:15
msgctxt "entry_status"
msgid "present"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:16
msgctxt "entry_status"
msgid "absent"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:29
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:35
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:41
msgid "is one of"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:47
msgid "is before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:51
msgid "is after"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:57
msgid "="
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:117
msgid "Product"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:121
msgid "Product variation"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:125
msgid "Gate"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:129
msgid "Current date and time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:133
msgid "Current day of the week (1 = Monday, 7 = Sunday)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:137
msgid "Current entry status"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:141
msgid "Number of previous entries"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:145
msgid "Number of previous entries since midnight"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:149
msgid "Number of previous entries since"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:153
msgid "Number of previous entries before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:157
msgid "Number of days with a previous entry"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:161
msgid "Number of days with a previous entry since"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:165
msgid "Number of days with a previous entry before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:169
msgid "Minutes since last entry (-1 on first entry)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:173
msgid "Minutes since first entry (-1 on first entry)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/django-interop.ts:47
msgid "Error: Product not found!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/django-interop.ts:54
msgid "Error: Variation not found!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:171
msgid "Check-in QR"
msgstr ""
@@ -358,23 +684,23 @@ msgstr ""
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:842
#: pretix/static/pretixcontrol/js/ui/main.js:844
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:845
#: pretix/static/pretixcontrol/js/ui/main.js:847
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1003
#: pretix/static/pretixcontrol/js/ui/main.js:1005
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1043
#: pretix/static/pretixcontrol/js/ui/main.js:1045
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1124
#: pretix/static/pretixcontrol/js/ui/main.js:1126
msgid "You have unsaved changes!"
msgstr ""
@@ -394,16 +720,6 @@ msgstr ""
msgid "Count"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "Yes"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "No"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/subevent.js:112
msgid "(one more date)"
msgid_plural "({num} more dates)"
@@ -470,164 +786,196 @@ msgid "Google Pay"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:16
#: pretix/static/pretixpresale/widget/src/i18n.ts:30
msgctxt "widget"
msgid "Quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:17
#: pretix/static/pretixpresale/widget/src/i18n.ts:31
msgctxt "widget"
msgid "Decrease quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:18
#: pretix/static/pretixpresale/widget/src/i18n.ts:32
msgctxt "widget"
msgid "Increase quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:19
#: pretix/static/pretixpresale/widget/src/i18n.ts:33
msgctxt "widget"
msgid "Filter events by"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:20
#: pretix/static/pretixpresale/widget/src/i18n.ts:34
msgctxt "widget"
msgid "Filter"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
#: pretix/static/pretixpresale/widget/src/i18n.ts:35
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/widget/src/i18n.ts:36
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/widget/src/i18n.ts:37
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/widget/src/i18n.ts:38
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/widget/src/i18n.ts:39
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/widget/src/i18n.ts:40
#, javascript-format
msgctxt "widget"
msgid "Select variant %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/widget/src/i18n.ts:41
msgctxt "widget"
msgid "Sold out"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/widget/src/i18n.ts:42
msgctxt "widget"
msgid "Buy"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/widget/src/i18n.ts:43
msgctxt "widget"
msgid "Register"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/widget/src/i18n.ts:44
msgctxt "widget"
msgid "Reserved"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/widget/src/i18n.ts:45
msgctxt "widget"
msgid "FREE"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/widget/src/i18n.ts:46
msgctxt "widget"
msgid "from %(currency)s %(price)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:33
#: pretix/static/pretixpresale/widget/src/i18n.ts:47
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:34
#: pretix/static/pretixpresale/widget/src/i18n.ts:48
msgctxt "widget"
msgid "incl. %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/widget/src/i18n.ts:49
msgctxt "widget"
msgid "plus %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/widget/src/i18n.ts:50
msgctxt "widget"
msgid "incl. taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/widget/src/i18n.ts:51
msgctxt "widget"
msgid "plus taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/widget/src/i18n.ts:52
#, javascript-format
msgctxt "widget"
msgid "currently available: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/widget/src/i18n.ts:53
msgctxt "widget"
msgid "Only available with a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:43
#: pretix/static/pretixpresale/widget/src/i18n.ts:54
#: pretix/static/pretixpresale/widget/src/i18n.ts:57
msgctxt "widget"
msgid "Not yet available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/widget/src/i18n.ts:55
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/widget/src/i18n.ts:56
msgctxt "widget"
msgid "Currently not available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/widget/src/i18n.ts:58
#, javascript-format
msgctxt "widget"
msgid "minimum amount to order: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:45
#: pretix/static/pretixpresale/widget/src/i18n.ts:59
msgctxt "widget"
msgid "Close ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:46
#: pretix/static/pretixpresale/widget/src/i18n.ts:60
msgctxt "widget"
msgid "The ticket shop could not be loaded."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:47
#: pretix/static/pretixpresale/widget/src/i18n.ts:61
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
@@ -635,21 +983,25 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/widget/src/i18n.ts:62
msgctxt "widget"
msgid "Open ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/widget/src/i18n.ts:63
msgctxt "widget"
msgid "Checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:51
#: pretix/static/pretixpresale/widget/src/i18n.ts:64
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/widget/src/i18n.ts:65
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
@@ -657,11 +1009,13 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:54
#: pretix/static/pretixpresale/widget/src/i18n.ts:66
msgctxt "widget"
msgid "Waiting list"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/widget/src/i18n.ts:67
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
@@ -669,96 +1023,115 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/widget/src/i18n.ts:68
msgctxt "widget"
msgid "Resume checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/widget/src/i18n.ts:69
msgctxt "widget"
msgid "Redeem a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/widget/src/i18n.ts:70
msgctxt "widget"
msgid "Redeem"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/widget/src/i18n.ts:71
msgctxt "widget"
msgid "Voucher code"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/widget/src/i18n.ts:72
msgctxt "widget"
msgid "Close"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:62
#: pretix/static/pretixpresale/widget/src/i18n.ts:73
msgctxt "widget"
msgid "Close checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:63
#: pretix/static/pretixpresale/widget/src/i18n.ts:74
msgctxt "widget"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/widget/src/i18n.ts:75
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/widget/src/i18n.ts:76
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/widget/src/i18n.ts:77
msgctxt "widget"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/widget/src/i18n.ts:78
msgctxt "widget"
msgid "Choose a different event"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/widget/src/i18n.ts:79
msgctxt "widget"
msgid "Choose a different date"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/widget/src/i18n.ts:80
msgctxt "widget"
msgid "Back"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/widget/src/i18n.ts:81
msgctxt "widget"
msgid "Next month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/widget/src/i18n.ts:82
msgctxt "widget"
msgid "Previous month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/widget/src/i18n.ts:83
msgctxt "widget"
msgid "Next week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/widget/src/i18n.ts:84
msgctxt "widget"
msgid "Previous week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/widget/src/i18n.ts:85
msgctxt "widget"
msgid "Open seat selection"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/widget/src/i18n.ts:86
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -767,110 +1140,137 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/widget/src/i18n.ts:87
msgctxt "widget"
msgid "Load more"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/widget/src/i18n.ts:89
msgid "Mo"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/widget/src/i18n.ts:90
msgid "Tu"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/widget/src/i18n.ts:91
msgid "We"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/widget/src/i18n.ts:92
msgid "Th"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/widget/src/i18n.ts:93
msgid "Fr"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/widget/src/i18n.ts:94
msgid "Sa"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/widget/src/i18n.ts:95
msgid "Su"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/widget/src/i18n.ts:96
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/widget/src/i18n.ts:97
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/widget/src/i18n.ts:98
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:88
#: pretix/static/pretixpresale/widget/src/i18n.ts:99
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:89
#: pretix/static/pretixpresale/widget/src/i18n.ts:100
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/widget/src/i18n.ts:101
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/widget/src/i18n.ts:102
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/widget/src/i18n.ts:105
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/widget/src/i18n.ts:106
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/widget/src/i18n.ts:107
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/widget/src/i18n.ts:108
msgid "April"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/widget/src/i18n.ts:109
msgid "May"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/widget/src/i18n.ts:110
msgid "June"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/widget/src/i18n.ts:111
msgid "July"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/widget/src/i18n.ts:112
msgid "August"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:102
#: pretix/static/pretixpresale/widget/src/i18n.ts:113
msgid "September"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:103
#: pretix/static/pretixpresale/widget/src/i18n.ts:114
msgid "October"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:104
#: pretix/static/pretixpresale/widget/src/i18n.ts:115
msgid "November"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:105
#: pretix/static/pretixpresale/widget/src/i18n.ts:116
msgid "December"
msgstr ""
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+423 -23
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-05-27 14:47+0000\n"
"POT-Creation-Date: 2026-06-28 15:49+0000\n"
"PO-Revision-Date: 2025-08-04 14:16+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -131,6 +131,7 @@ msgid "Mercado Pago"
msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:54
#: pretix/static/pretixpresale/js/ui/cart.js:89
msgid "Continue"
msgstr ""
@@ -184,6 +185,172 @@ msgstr ""
msgid "Contacting your bank …"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:34
msgid "Select a check-in list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:35
msgid "No active check-in lists found."
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:36
msgid "Switch check-in list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:37
msgid "Search results"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:38
msgid "No tickets found"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:39
msgid "Result"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:40
msgid "This ticket requires special attention"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:41
msgid "Switch direction"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:42
msgid "Entry"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:43
msgid "Exit"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:44
msgid "Scan a ticket or search and press return…"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:45
msgid "Load more"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:46
msgid "Valid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:47
msgid "Unpaid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:48
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:49
msgid "Canceled"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:50
msgid "Confirmed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:51
msgid "Approval pending"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:52
msgid "Redeemed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:53
msgid "Cancel"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:55
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:64
msgid "Ticket not paid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:56
msgid "This ticket is not yet paid. Do you want to continue anyways?"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:57
msgid "Additional information required"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:58
msgid "Valid ticket"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:59
msgid "Exit recorded"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:60
msgid "Ticket already used"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:61
msgid "Information required"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:62
msgid "Unknown ticket"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:63
msgid "Ticket type not allowed here"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:65
msgid "Entry not allowed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:66
msgid "Ticket code revoked/changed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:67
msgid "Ticket blocked"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:68
msgid "Ticket not valid at this time"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:69
msgid "Order canceled"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:70
msgid "Ticket code is ambiguous on list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:71
msgid "Order not approved"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:72
msgid "Checked-in Tickets"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:73
msgid "Valid Tickets"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:74
msgid "Currently inside"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:75
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "Yes"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:76
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "No"
msgstr ""
#: pretix/static/lightbox/js/lightbox.js:96
msgid "close"
msgstr ""
@@ -211,8 +378,8 @@ msgid ""
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:135
#: pretix/static/pretixbase/js/asynctask.js:192
#: pretix/static/pretixbase/js/asynctask.js:196
#: pretix/static/pretixbase/js/asynctask.js:193
#: pretix/static/pretixbase/js/asynctask.js:197
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
@@ -228,28 +395,28 @@ msgstr ""
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:198
#: pretix/static/pretixbase/js/asynctask.js:199
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:226
#: pretix/static/pretixbase/js/asynctask.js:227
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:229
#: pretix/static/pretixbase/js/asynctask.js:230
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:286
#: pretix/static/pretixbase/js/asynctask.js:287
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:341
#: pretix/static/pretixbase/js/asynctask.js:342
msgid "Close message"
msgstr ""
@@ -261,6 +428,165 @@ msgstr ""
msgid "Press Ctrl-C to copy!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:80
msgid "Edit"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:86
msgid "Visualize"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:96
msgid ""
"Your rule always filters by product or variation, but the following products "
"or variations are not contained in any of your rule parts so people with "
"these tickets will not get in:"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:99
msgid "Please double-check if this was intentional."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:4
msgid "All of the conditions below (AND)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:5
msgid "At least one of the conditions below (OR)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:6
msgid "Event start"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:7
msgid "Event end"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:8
msgid "Event admission"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:9
msgid "custom date and time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:10
msgid "custom time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:11
msgid "Tolerance (minutes)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:12
msgid "Add condition"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:13
msgid "minutes"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:14
msgid "Duplicate"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:15
msgctxt "entry_status"
msgid "present"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:16
msgctxt "entry_status"
msgid "absent"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:29
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:35
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:41
msgid "is one of"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:47
msgid "is before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:51
msgid "is after"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:57
msgid "="
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:117
msgid "Product"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:121
msgid "Product variation"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:125
msgid "Gate"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:129
msgid "Current date and time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:133
msgid "Current day of the week (1 = Monday, 7 = Sunday)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:137
msgid "Current entry status"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:141
msgid "Number of previous entries"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:145
msgid "Number of previous entries since midnight"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:149
msgid "Number of previous entries since"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:153
msgid "Number of previous entries before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:157
msgid "Number of days with a previous entry"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:161
msgid "Number of days with a previous entry since"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:165
msgid "Number of days with a previous entry before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:169
msgid "Minutes since last entry (-1 on first entry)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:173
msgid "Minutes since first entry (-1 on first entry)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/django-interop.ts:47
msgid "Error: Product not found!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/django-interop.ts:54
msgid "Error: Variation not found!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:171
msgid "Check-in QR"
msgstr ""
@@ -359,23 +685,23 @@ msgstr ""
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:842
#: pretix/static/pretixcontrol/js/ui/main.js:844
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:845
#: pretix/static/pretixcontrol/js/ui/main.js:847
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1003
#: pretix/static/pretixcontrol/js/ui/main.js:1005
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1043
#: pretix/static/pretixcontrol/js/ui/main.js:1045
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1124
#: pretix/static/pretixcontrol/js/ui/main.js:1126
msgid "You have unsaved changes!"
msgstr ""
@@ -395,16 +721,6 @@ msgstr ""
msgid "Count"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "Yes"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "No"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/subevent.js:112
msgid "(one more date)"
msgid_plural "({num} more dates)"
@@ -471,164 +787,196 @@ msgid "Google Pay"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:16
#: pretix/static/pretixpresale/widget/src/i18n.ts:30
msgctxt "widget"
msgid "Quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:17
#: pretix/static/pretixpresale/widget/src/i18n.ts:31
msgctxt "widget"
msgid "Decrease quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:18
#: pretix/static/pretixpresale/widget/src/i18n.ts:32
msgctxt "widget"
msgid "Increase quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:19
#: pretix/static/pretixpresale/widget/src/i18n.ts:33
msgctxt "widget"
msgid "Filter events by"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:20
#: pretix/static/pretixpresale/widget/src/i18n.ts:34
msgctxt "widget"
msgid "Filter"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
#: pretix/static/pretixpresale/widget/src/i18n.ts:35
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/widget/src/i18n.ts:36
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/widget/src/i18n.ts:37
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/widget/src/i18n.ts:38
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/widget/src/i18n.ts:39
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/widget/src/i18n.ts:40
#, javascript-format
msgctxt "widget"
msgid "Select variant %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/widget/src/i18n.ts:41
msgctxt "widget"
msgid "Sold out"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/widget/src/i18n.ts:42
msgctxt "widget"
msgid "Buy"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/widget/src/i18n.ts:43
msgctxt "widget"
msgid "Register"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/widget/src/i18n.ts:44
msgctxt "widget"
msgid "Reserved"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/widget/src/i18n.ts:45
msgctxt "widget"
msgid "FREE"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/widget/src/i18n.ts:46
msgctxt "widget"
msgid "from %(currency)s %(price)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:33
#: pretix/static/pretixpresale/widget/src/i18n.ts:47
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:34
#: pretix/static/pretixpresale/widget/src/i18n.ts:48
msgctxt "widget"
msgid "incl. %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/widget/src/i18n.ts:49
msgctxt "widget"
msgid "plus %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/widget/src/i18n.ts:50
msgctxt "widget"
msgid "incl. taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/widget/src/i18n.ts:51
msgctxt "widget"
msgid "plus taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/widget/src/i18n.ts:52
#, javascript-format
msgctxt "widget"
msgid "currently available: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/widget/src/i18n.ts:53
msgctxt "widget"
msgid "Only available with a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:43
#: pretix/static/pretixpresale/widget/src/i18n.ts:54
#: pretix/static/pretixpresale/widget/src/i18n.ts:57
msgctxt "widget"
msgid "Not yet available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/widget/src/i18n.ts:55
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/widget/src/i18n.ts:56
msgctxt "widget"
msgid "Currently not available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/widget/src/i18n.ts:58
#, javascript-format
msgctxt "widget"
msgid "minimum amount to order: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:45
#: pretix/static/pretixpresale/widget/src/i18n.ts:59
msgctxt "widget"
msgid "Close ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:46
#: pretix/static/pretixpresale/widget/src/i18n.ts:60
msgctxt "widget"
msgid "The ticket shop could not be loaded."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:47
#: pretix/static/pretixpresale/widget/src/i18n.ts:61
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
@@ -636,21 +984,25 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/widget/src/i18n.ts:62
msgctxt "widget"
msgid "Open ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/widget/src/i18n.ts:63
msgctxt "widget"
msgid "Checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:51
#: pretix/static/pretixpresale/widget/src/i18n.ts:64
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/widget/src/i18n.ts:65
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
@@ -658,11 +1010,13 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:54
#: pretix/static/pretixpresale/widget/src/i18n.ts:66
msgctxt "widget"
msgid "Waiting list"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/widget/src/i18n.ts:67
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
@@ -670,96 +1024,115 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/widget/src/i18n.ts:68
msgctxt "widget"
msgid "Resume checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/widget/src/i18n.ts:69
msgctxt "widget"
msgid "Redeem a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/widget/src/i18n.ts:70
msgctxt "widget"
msgid "Redeem"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/widget/src/i18n.ts:71
msgctxt "widget"
msgid "Voucher code"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/widget/src/i18n.ts:72
msgctxt "widget"
msgid "Close"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:62
#: pretix/static/pretixpresale/widget/src/i18n.ts:73
msgctxt "widget"
msgid "Close checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:63
#: pretix/static/pretixpresale/widget/src/i18n.ts:74
msgctxt "widget"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/widget/src/i18n.ts:75
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/widget/src/i18n.ts:76
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/widget/src/i18n.ts:77
msgctxt "widget"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/widget/src/i18n.ts:78
msgctxt "widget"
msgid "Choose a different event"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/widget/src/i18n.ts:79
msgctxt "widget"
msgid "Choose a different date"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/widget/src/i18n.ts:80
msgctxt "widget"
msgid "Back"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/widget/src/i18n.ts:81
msgctxt "widget"
msgid "Next month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/widget/src/i18n.ts:82
msgctxt "widget"
msgid "Previous month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/widget/src/i18n.ts:83
msgctxt "widget"
msgid "Next week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/widget/src/i18n.ts:84
msgctxt "widget"
msgid "Previous week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/widget/src/i18n.ts:85
msgctxt "widget"
msgid "Open seat selection"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/widget/src/i18n.ts:86
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -768,110 +1141,137 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/widget/src/i18n.ts:87
msgctxt "widget"
msgid "Load more"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/widget/src/i18n.ts:89
msgid "Mo"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/widget/src/i18n.ts:90
msgid "Tu"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/widget/src/i18n.ts:91
msgid "We"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/widget/src/i18n.ts:92
msgid "Th"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/widget/src/i18n.ts:93
msgid "Fr"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/widget/src/i18n.ts:94
msgid "Sa"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/widget/src/i18n.ts:95
msgid "Su"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/widget/src/i18n.ts:96
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/widget/src/i18n.ts:97
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/widget/src/i18n.ts:98
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:88
#: pretix/static/pretixpresale/widget/src/i18n.ts:99
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:89
#: pretix/static/pretixpresale/widget/src/i18n.ts:100
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/widget/src/i18n.ts:101
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/widget/src/i18n.ts:102
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/widget/src/i18n.ts:105
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/widget/src/i18n.ts:106
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/widget/src/i18n.ts:107
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/widget/src/i18n.ts:108
msgid "April"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/widget/src/i18n.ts:109
msgid "May"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/widget/src/i18n.ts:110
msgid "June"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/widget/src/i18n.ts:111
msgid "July"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/widget/src/i18n.ts:112
msgid "August"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:102
#: pretix/static/pretixpresale/widget/src/i18n.ts:113
msgid "September"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:103
#: pretix/static/pretixpresale/widget/src/i18n.ts:114
msgid "October"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:104
#: pretix/static/pretixpresale/widget/src/i18n.ts:115
msgid "November"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:105
#: pretix/static/pretixpresale/widget/src/i18n.ts:116
msgid "December"
msgstr ""
File diff suppressed because it is too large Load Diff
+423 -23
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-05-27 14:47+0000\n"
"POT-Creation-Date: 2026-06-28 15:49+0000\n"
"PO-Revision-Date: 2025-12-24 00:00+0000\n"
"Last-Translator: Hijiri Umemoto <hijiri@umemoto.org>\n"
"Language-Team: Estonian <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -131,6 +131,7 @@ msgid "Mercado Pago"
msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:54
#: pretix/static/pretixpresale/js/ui/cart.js:89
msgid "Continue"
msgstr ""
@@ -184,6 +185,172 @@ msgstr ""
msgid "Contacting your bank …"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:34
msgid "Select a check-in list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:35
msgid "No active check-in lists found."
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:36
msgid "Switch check-in list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:37
msgid "Search results"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:38
msgid "No tickets found"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:39
msgid "Result"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:40
msgid "This ticket requires special attention"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:41
msgid "Switch direction"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:42
msgid "Entry"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:43
msgid "Exit"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:44
msgid "Scan a ticket or search and press return…"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:45
msgid "Load more"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:46
msgid "Valid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:47
msgid "Unpaid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:48
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:49
msgid "Canceled"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:50
msgid "Confirmed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:51
msgid "Approval pending"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:52
msgid "Redeemed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:53
msgid "Cancel"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:55
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:64
msgid "Ticket not paid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:56
msgid "This ticket is not yet paid. Do you want to continue anyways?"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:57
msgid "Additional information required"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:58
msgid "Valid ticket"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:59
msgid "Exit recorded"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:60
msgid "Ticket already used"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:61
msgid "Information required"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:62
msgid "Unknown ticket"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:63
msgid "Ticket type not allowed here"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:65
msgid "Entry not allowed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:66
msgid "Ticket code revoked/changed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:67
msgid "Ticket blocked"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:68
msgid "Ticket not valid at this time"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:69
msgid "Order canceled"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:70
msgid "Ticket code is ambiguous on list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:71
msgid "Order not approved"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:72
msgid "Checked-in Tickets"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:73
msgid "Valid Tickets"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:74
msgid "Currently inside"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:75
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "Yes"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:76
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "No"
msgstr ""
#: pretix/static/lightbox/js/lightbox.js:96
msgid "close"
msgstr ""
@@ -211,8 +378,8 @@ msgid ""
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:135
#: pretix/static/pretixbase/js/asynctask.js:192
#: pretix/static/pretixbase/js/asynctask.js:196
#: pretix/static/pretixbase/js/asynctask.js:193
#: pretix/static/pretixbase/js/asynctask.js:197
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
@@ -228,28 +395,28 @@ msgstr ""
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:198
#: pretix/static/pretixbase/js/asynctask.js:199
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:226
#: pretix/static/pretixbase/js/asynctask.js:227
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:229
#: pretix/static/pretixbase/js/asynctask.js:230
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:286
#: pretix/static/pretixbase/js/asynctask.js:287
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:341
#: pretix/static/pretixbase/js/asynctask.js:342
msgid "Close message"
msgstr ""
@@ -261,6 +428,165 @@ msgstr ""
msgid "Press Ctrl-C to copy!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:80
msgid "Edit"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:86
msgid "Visualize"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:96
msgid ""
"Your rule always filters by product or variation, but the following products "
"or variations are not contained in any of your rule parts so people with "
"these tickets will not get in:"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:99
msgid "Please double-check if this was intentional."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:4
msgid "All of the conditions below (AND)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:5
msgid "At least one of the conditions below (OR)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:6
msgid "Event start"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:7
msgid "Event end"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:8
msgid "Event admission"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:9
msgid "custom date and time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:10
msgid "custom time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:11
msgid "Tolerance (minutes)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:12
msgid "Add condition"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:13
msgid "minutes"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:14
msgid "Duplicate"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:15
msgctxt "entry_status"
msgid "present"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:16
msgctxt "entry_status"
msgid "absent"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:29
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:35
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:41
msgid "is one of"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:47
msgid "is before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:51
msgid "is after"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:57
msgid "="
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:117
msgid "Product"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:121
msgid "Product variation"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:125
msgid "Gate"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:129
msgid "Current date and time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:133
msgid "Current day of the week (1 = Monday, 7 = Sunday)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:137
msgid "Current entry status"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:141
msgid "Number of previous entries"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:145
msgid "Number of previous entries since midnight"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:149
msgid "Number of previous entries since"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:153
msgid "Number of previous entries before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:157
msgid "Number of days with a previous entry"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:161
msgid "Number of days with a previous entry since"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:165
msgid "Number of days with a previous entry before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:169
msgid "Minutes since last entry (-1 on first entry)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:173
msgid "Minutes since first entry (-1 on first entry)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/django-interop.ts:47
msgid "Error: Product not found!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/django-interop.ts:54
msgid "Error: Variation not found!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:171
msgid "Check-in QR"
msgstr ""
@@ -359,23 +685,23 @@ msgstr ""
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:842
#: pretix/static/pretixcontrol/js/ui/main.js:844
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:845
#: pretix/static/pretixcontrol/js/ui/main.js:847
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1003
#: pretix/static/pretixcontrol/js/ui/main.js:1005
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1043
#: pretix/static/pretixcontrol/js/ui/main.js:1045
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1124
#: pretix/static/pretixcontrol/js/ui/main.js:1126
msgid "You have unsaved changes!"
msgstr ""
@@ -395,16 +721,6 @@ msgstr ""
msgid "Count"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "Yes"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "No"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/subevent.js:112
msgid "(one more date)"
msgid_plural "({num} more dates)"
@@ -471,164 +787,196 @@ msgid "Google Pay"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:16
#: pretix/static/pretixpresale/widget/src/i18n.ts:30
msgctxt "widget"
msgid "Quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:17
#: pretix/static/pretixpresale/widget/src/i18n.ts:31
msgctxt "widget"
msgid "Decrease quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:18
#: pretix/static/pretixpresale/widget/src/i18n.ts:32
msgctxt "widget"
msgid "Increase quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:19
#: pretix/static/pretixpresale/widget/src/i18n.ts:33
msgctxt "widget"
msgid "Filter events by"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:20
#: pretix/static/pretixpresale/widget/src/i18n.ts:34
msgctxt "widget"
msgid "Filter"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
#: pretix/static/pretixpresale/widget/src/i18n.ts:35
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/widget/src/i18n.ts:36
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/widget/src/i18n.ts:37
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/widget/src/i18n.ts:38
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/widget/src/i18n.ts:39
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/widget/src/i18n.ts:40
#, javascript-format
msgctxt "widget"
msgid "Select variant %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/widget/src/i18n.ts:41
msgctxt "widget"
msgid "Sold out"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/widget/src/i18n.ts:42
msgctxt "widget"
msgid "Buy"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/widget/src/i18n.ts:43
msgctxt "widget"
msgid "Register"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/widget/src/i18n.ts:44
msgctxt "widget"
msgid "Reserved"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/widget/src/i18n.ts:45
msgctxt "widget"
msgid "FREE"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/widget/src/i18n.ts:46
msgctxt "widget"
msgid "from %(currency)s %(price)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:33
#: pretix/static/pretixpresale/widget/src/i18n.ts:47
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:34
#: pretix/static/pretixpresale/widget/src/i18n.ts:48
msgctxt "widget"
msgid "incl. %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/widget/src/i18n.ts:49
msgctxt "widget"
msgid "plus %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/widget/src/i18n.ts:50
msgctxt "widget"
msgid "incl. taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/widget/src/i18n.ts:51
msgctxt "widget"
msgid "plus taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/widget/src/i18n.ts:52
#, javascript-format
msgctxt "widget"
msgid "currently available: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/widget/src/i18n.ts:53
msgctxt "widget"
msgid "Only available with a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:43
#: pretix/static/pretixpresale/widget/src/i18n.ts:54
#: pretix/static/pretixpresale/widget/src/i18n.ts:57
msgctxt "widget"
msgid "Not yet available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/widget/src/i18n.ts:55
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/widget/src/i18n.ts:56
msgctxt "widget"
msgid "Currently not available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/widget/src/i18n.ts:58
#, javascript-format
msgctxt "widget"
msgid "minimum amount to order: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:45
#: pretix/static/pretixpresale/widget/src/i18n.ts:59
msgctxt "widget"
msgid "Close ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:46
#: pretix/static/pretixpresale/widget/src/i18n.ts:60
msgctxt "widget"
msgid "The ticket shop could not be loaded."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:47
#: pretix/static/pretixpresale/widget/src/i18n.ts:61
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
@@ -636,21 +984,25 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/widget/src/i18n.ts:62
msgctxt "widget"
msgid "Open ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/widget/src/i18n.ts:63
msgctxt "widget"
msgid "Checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:51
#: pretix/static/pretixpresale/widget/src/i18n.ts:64
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/widget/src/i18n.ts:65
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
@@ -658,11 +1010,13 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:54
#: pretix/static/pretixpresale/widget/src/i18n.ts:66
msgctxt "widget"
msgid "Waiting list"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/widget/src/i18n.ts:67
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
@@ -670,96 +1024,115 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/widget/src/i18n.ts:68
msgctxt "widget"
msgid "Resume checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/widget/src/i18n.ts:69
msgctxt "widget"
msgid "Redeem a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/widget/src/i18n.ts:70
msgctxt "widget"
msgid "Redeem"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/widget/src/i18n.ts:71
msgctxt "widget"
msgid "Voucher code"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/widget/src/i18n.ts:72
msgctxt "widget"
msgid "Close"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:62
#: pretix/static/pretixpresale/widget/src/i18n.ts:73
msgctxt "widget"
msgid "Close checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:63
#: pretix/static/pretixpresale/widget/src/i18n.ts:74
msgctxt "widget"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/widget/src/i18n.ts:75
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/widget/src/i18n.ts:76
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/widget/src/i18n.ts:77
msgctxt "widget"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/widget/src/i18n.ts:78
msgctxt "widget"
msgid "Choose a different event"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/widget/src/i18n.ts:79
msgctxt "widget"
msgid "Choose a different date"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/widget/src/i18n.ts:80
msgctxt "widget"
msgid "Back"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/widget/src/i18n.ts:81
msgctxt "widget"
msgid "Next month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/widget/src/i18n.ts:82
msgctxt "widget"
msgid "Previous month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/widget/src/i18n.ts:83
msgctxt "widget"
msgid "Next week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/widget/src/i18n.ts:84
msgctxt "widget"
msgid "Previous week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/widget/src/i18n.ts:85
msgctxt "widget"
msgid "Open seat selection"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/widget/src/i18n.ts:86
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -768,110 +1141,137 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/widget/src/i18n.ts:87
msgctxt "widget"
msgid "Load more"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/widget/src/i18n.ts:89
msgid "Mo"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/widget/src/i18n.ts:90
msgid "Tu"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/widget/src/i18n.ts:91
msgid "We"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/widget/src/i18n.ts:92
msgid "Th"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/widget/src/i18n.ts:93
msgid "Fr"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/widget/src/i18n.ts:94
msgid "Sa"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/widget/src/i18n.ts:95
msgid "Su"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/widget/src/i18n.ts:96
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/widget/src/i18n.ts:97
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/widget/src/i18n.ts:98
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:88
#: pretix/static/pretixpresale/widget/src/i18n.ts:99
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:89
#: pretix/static/pretixpresale/widget/src/i18n.ts:100
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/widget/src/i18n.ts:101
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/widget/src/i18n.ts:102
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/widget/src/i18n.ts:105
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/widget/src/i18n.ts:106
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/widget/src/i18n.ts:107
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/widget/src/i18n.ts:108
msgid "April"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/widget/src/i18n.ts:109
msgid "May"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/widget/src/i18n.ts:110
msgid "June"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/widget/src/i18n.ts:111
msgid "July"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/widget/src/i18n.ts:112
msgid "August"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:102
#: pretix/static/pretixpresale/widget/src/i18n.ts:113
msgid "September"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:103
#: pretix/static/pretixpresale/widget/src/i18n.ts:114
msgid "October"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:104
#: pretix/static/pretixpresale/widget/src/i18n.ts:115
msgid "November"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:105
#: pretix/static/pretixpresale/widget/src/i18n.ts:116
msgid "December"
msgstr ""
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+423 -23
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-05-27 14:47+0000\n"
"POT-Creation-Date: 2026-06-28 15:49+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -130,6 +130,7 @@ msgid "Mercado Pago"
msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:54
#: pretix/static/pretixpresale/js/ui/cart.js:89
msgid "Continue"
msgstr ""
@@ -183,6 +184,172 @@ msgstr ""
msgid "Contacting your bank …"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:34
msgid "Select a check-in list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:35
msgid "No active check-in lists found."
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:36
msgid "Switch check-in list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:37
msgid "Search results"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:38
msgid "No tickets found"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:39
msgid "Result"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:40
msgid "This ticket requires special attention"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:41
msgid "Switch direction"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:42
msgid "Entry"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:43
msgid "Exit"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:44
msgid "Scan a ticket or search and press return…"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:45
msgid "Load more"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:46
msgid "Valid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:47
msgid "Unpaid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:48
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:49
msgid "Canceled"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:50
msgid "Confirmed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:51
msgid "Approval pending"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:52
msgid "Redeemed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:53
msgid "Cancel"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:55
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:64
msgid "Ticket not paid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:56
msgid "This ticket is not yet paid. Do you want to continue anyways?"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:57
msgid "Additional information required"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:58
msgid "Valid ticket"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:59
msgid "Exit recorded"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:60
msgid "Ticket already used"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:61
msgid "Information required"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:62
msgid "Unknown ticket"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:63
msgid "Ticket type not allowed here"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:65
msgid "Entry not allowed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:66
msgid "Ticket code revoked/changed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:67
msgid "Ticket blocked"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:68
msgid "Ticket not valid at this time"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:69
msgid "Order canceled"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:70
msgid "Ticket code is ambiguous on list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:71
msgid "Order not approved"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:72
msgid "Checked-in Tickets"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:73
msgid "Valid Tickets"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:74
msgid "Currently inside"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:75
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "Yes"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:76
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "No"
msgstr ""
#: pretix/static/lightbox/js/lightbox.js:96
msgid "close"
msgstr ""
@@ -210,8 +377,8 @@ msgid ""
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:135
#: pretix/static/pretixbase/js/asynctask.js:192
#: pretix/static/pretixbase/js/asynctask.js:196
#: pretix/static/pretixbase/js/asynctask.js:193
#: pretix/static/pretixbase/js/asynctask.js:197
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
@@ -227,28 +394,28 @@ msgstr ""
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:198
#: pretix/static/pretixbase/js/asynctask.js:199
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:226
#: pretix/static/pretixbase/js/asynctask.js:227
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:229
#: pretix/static/pretixbase/js/asynctask.js:230
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:286
#: pretix/static/pretixbase/js/asynctask.js:287
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:341
#: pretix/static/pretixbase/js/asynctask.js:342
msgid "Close message"
msgstr ""
@@ -260,6 +427,165 @@ msgstr ""
msgid "Press Ctrl-C to copy!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:80
msgid "Edit"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:86
msgid "Visualize"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:96
msgid ""
"Your rule always filters by product or variation, but the following products "
"or variations are not contained in any of your rule parts so people with "
"these tickets will not get in:"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:99
msgid "Please double-check if this was intentional."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:4
msgid "All of the conditions below (AND)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:5
msgid "At least one of the conditions below (OR)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:6
msgid "Event start"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:7
msgid "Event end"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:8
msgid "Event admission"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:9
msgid "custom date and time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:10
msgid "custom time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:11
msgid "Tolerance (minutes)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:12
msgid "Add condition"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:13
msgid "minutes"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:14
msgid "Duplicate"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:15
msgctxt "entry_status"
msgid "present"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:16
msgctxt "entry_status"
msgid "absent"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:29
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:35
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:41
msgid "is one of"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:47
msgid "is before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:51
msgid "is after"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:57
msgid "="
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:117
msgid "Product"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:121
msgid "Product variation"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:125
msgid "Gate"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:129
msgid "Current date and time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:133
msgid "Current day of the week (1 = Monday, 7 = Sunday)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:137
msgid "Current entry status"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:141
msgid "Number of previous entries"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:145
msgid "Number of previous entries since midnight"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:149
msgid "Number of previous entries since"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:153
msgid "Number of previous entries before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:157
msgid "Number of days with a previous entry"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:161
msgid "Number of days with a previous entry since"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:165
msgid "Number of days with a previous entry before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:169
msgid "Minutes since last entry (-1 on first entry)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:173
msgid "Minutes since first entry (-1 on first entry)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/django-interop.ts:47
msgid "Error: Product not found!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/django-interop.ts:54
msgid "Error: Variation not found!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:171
msgid "Check-in QR"
msgstr ""
@@ -358,23 +684,23 @@ msgstr ""
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:842
#: pretix/static/pretixcontrol/js/ui/main.js:844
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:845
#: pretix/static/pretixcontrol/js/ui/main.js:847
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1003
#: pretix/static/pretixcontrol/js/ui/main.js:1005
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1043
#: pretix/static/pretixcontrol/js/ui/main.js:1045
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1124
#: pretix/static/pretixcontrol/js/ui/main.js:1126
msgid "You have unsaved changes!"
msgstr ""
@@ -394,16 +720,6 @@ msgstr ""
msgid "Count"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "Yes"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "No"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/subevent.js:112
msgid "(one more date)"
msgid_plural "({num} more dates)"
@@ -470,164 +786,196 @@ msgid "Google Pay"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:16
#: pretix/static/pretixpresale/widget/src/i18n.ts:30
msgctxt "widget"
msgid "Quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:17
#: pretix/static/pretixpresale/widget/src/i18n.ts:31
msgctxt "widget"
msgid "Decrease quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:18
#: pretix/static/pretixpresale/widget/src/i18n.ts:32
msgctxt "widget"
msgid "Increase quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:19
#: pretix/static/pretixpresale/widget/src/i18n.ts:33
msgctxt "widget"
msgid "Filter events by"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:20
#: pretix/static/pretixpresale/widget/src/i18n.ts:34
msgctxt "widget"
msgid "Filter"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
#: pretix/static/pretixpresale/widget/src/i18n.ts:35
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/widget/src/i18n.ts:36
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/widget/src/i18n.ts:37
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/widget/src/i18n.ts:38
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/widget/src/i18n.ts:39
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/widget/src/i18n.ts:40
#, javascript-format
msgctxt "widget"
msgid "Select variant %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/widget/src/i18n.ts:41
msgctxt "widget"
msgid "Sold out"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/widget/src/i18n.ts:42
msgctxt "widget"
msgid "Buy"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/widget/src/i18n.ts:43
msgctxt "widget"
msgid "Register"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/widget/src/i18n.ts:44
msgctxt "widget"
msgid "Reserved"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/widget/src/i18n.ts:45
msgctxt "widget"
msgid "FREE"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/widget/src/i18n.ts:46
msgctxt "widget"
msgid "from %(currency)s %(price)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:33
#: pretix/static/pretixpresale/widget/src/i18n.ts:47
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:34
#: pretix/static/pretixpresale/widget/src/i18n.ts:48
msgctxt "widget"
msgid "incl. %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/widget/src/i18n.ts:49
msgctxt "widget"
msgid "plus %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/widget/src/i18n.ts:50
msgctxt "widget"
msgid "incl. taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/widget/src/i18n.ts:51
msgctxt "widget"
msgid "plus taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/widget/src/i18n.ts:52
#, javascript-format
msgctxt "widget"
msgid "currently available: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/widget/src/i18n.ts:53
msgctxt "widget"
msgid "Only available with a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:43
#: pretix/static/pretixpresale/widget/src/i18n.ts:54
#: pretix/static/pretixpresale/widget/src/i18n.ts:57
msgctxt "widget"
msgid "Not yet available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/widget/src/i18n.ts:55
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/widget/src/i18n.ts:56
msgctxt "widget"
msgid "Currently not available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/widget/src/i18n.ts:58
#, javascript-format
msgctxt "widget"
msgid "minimum amount to order: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:45
#: pretix/static/pretixpresale/widget/src/i18n.ts:59
msgctxt "widget"
msgid "Close ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:46
#: pretix/static/pretixpresale/widget/src/i18n.ts:60
msgctxt "widget"
msgid "The ticket shop could not be loaded."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:47
#: pretix/static/pretixpresale/widget/src/i18n.ts:61
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
@@ -635,21 +983,25 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/widget/src/i18n.ts:62
msgctxt "widget"
msgid "Open ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/widget/src/i18n.ts:63
msgctxt "widget"
msgid "Checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:51
#: pretix/static/pretixpresale/widget/src/i18n.ts:64
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/widget/src/i18n.ts:65
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
@@ -657,11 +1009,13 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:54
#: pretix/static/pretixpresale/widget/src/i18n.ts:66
msgctxt "widget"
msgid "Waiting list"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/widget/src/i18n.ts:67
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
@@ -669,96 +1023,115 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/widget/src/i18n.ts:68
msgctxt "widget"
msgid "Resume checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/widget/src/i18n.ts:69
msgctxt "widget"
msgid "Redeem a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/widget/src/i18n.ts:70
msgctxt "widget"
msgid "Redeem"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/widget/src/i18n.ts:71
msgctxt "widget"
msgid "Voucher code"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/widget/src/i18n.ts:72
msgctxt "widget"
msgid "Close"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:62
#: pretix/static/pretixpresale/widget/src/i18n.ts:73
msgctxt "widget"
msgid "Close checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:63
#: pretix/static/pretixpresale/widget/src/i18n.ts:74
msgctxt "widget"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/widget/src/i18n.ts:75
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/widget/src/i18n.ts:76
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/widget/src/i18n.ts:77
msgctxt "widget"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/widget/src/i18n.ts:78
msgctxt "widget"
msgid "Choose a different event"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/widget/src/i18n.ts:79
msgctxt "widget"
msgid "Choose a different date"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/widget/src/i18n.ts:80
msgctxt "widget"
msgid "Back"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/widget/src/i18n.ts:81
msgctxt "widget"
msgid "Next month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/widget/src/i18n.ts:82
msgctxt "widget"
msgid "Previous month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/widget/src/i18n.ts:83
msgctxt "widget"
msgid "Next week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/widget/src/i18n.ts:84
msgctxt "widget"
msgid "Previous week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/widget/src/i18n.ts:85
msgctxt "widget"
msgid "Open seat selection"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/widget/src/i18n.ts:86
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -767,110 +1140,137 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/widget/src/i18n.ts:87
msgctxt "widget"
msgid "Load more"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/widget/src/i18n.ts:89
msgid "Mo"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/widget/src/i18n.ts:90
msgid "Tu"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/widget/src/i18n.ts:91
msgid "We"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/widget/src/i18n.ts:92
msgid "Th"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/widget/src/i18n.ts:93
msgid "Fr"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/widget/src/i18n.ts:94
msgid "Sa"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/widget/src/i18n.ts:95
msgid "Su"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/widget/src/i18n.ts:96
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/widget/src/i18n.ts:97
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/widget/src/i18n.ts:98
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:88
#: pretix/static/pretixpresale/widget/src/i18n.ts:99
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:89
#: pretix/static/pretixpresale/widget/src/i18n.ts:100
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/widget/src/i18n.ts:101
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/widget/src/i18n.ts:102
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/widget/src/i18n.ts:105
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/widget/src/i18n.ts:106
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/widget/src/i18n.ts:107
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/widget/src/i18n.ts:108
msgid "April"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/widget/src/i18n.ts:109
msgid "May"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/widget/src/i18n.ts:110
msgid "June"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/widget/src/i18n.ts:111
msgid "July"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/widget/src/i18n.ts:112
msgid "August"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:102
#: pretix/static/pretixpresale/widget/src/i18n.ts:113
msgid "September"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:103
#: pretix/static/pretixpresale/widget/src/i18n.ts:114
msgid "October"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:104
#: pretix/static/pretixpresale/widget/src/i18n.ts:115
msgid "November"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:105
#: pretix/static/pretixpresale/widget/src/i18n.ts:116
msgid "December"
msgstr ""
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+430 -32
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-05-27 14:47+0000\n"
"POT-Creation-Date: 2026-06-28 15:49+0000\n"
"PO-Revision-Date: 2025-03-16 10:17+0000\n"
"Last-Translator: Robert Rigo <kontakt@bicikli.hr>\n"
"Language-Team: Croatian <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -132,6 +132,7 @@ msgid "Mercado Pago"
msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:54
#: pretix/static/pretixpresale/js/ui/cart.js:89
msgid "Continue"
msgstr ""
@@ -185,6 +186,179 @@ msgstr ""
msgid "Contacting your bank …"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:34
msgid "Select a check-in list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:35
msgid "No active check-in lists found."
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:36
msgid "Switch check-in list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:37
msgid "Search results"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:38
msgid "No tickets found"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:39
msgid "Result"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:40
msgid "This ticket requires special attention"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:41
msgid "Switch direction"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:42
msgid "Entry"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:43
msgid "Exit"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:44
msgid "Scan a ticket or search and press return…"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:45
msgid "Load more"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:46
msgid "Valid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:47
msgid "Unpaid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:48
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:49
#, fuzzy
#| msgid "Order canceled"
msgid "Canceled"
msgstr "Narudžba otkazana"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:50
msgid "Confirmed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:51
msgid "Approval pending"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:52
msgid "Redeemed"
msgstr "Iskorišteno"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:53
msgid "Cancel"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:55
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:64
msgid "Ticket not paid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:56
msgid "This ticket is not yet paid. Do you want to continue anyways?"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:57
msgid "Additional information required"
msgstr "Potrebne su dodatne informacije"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:58
msgid "Valid ticket"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:59
msgid "Exit recorded"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:60
msgid "Ticket already used"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:61
#, fuzzy
#| msgid "Additional information required"
msgid "Information required"
msgstr "Potrebne su dodatne informacije"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:62
msgid "Unknown ticket"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:63
msgid "Ticket type not allowed here"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:65
msgid "Entry not allowed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:66
msgid "Ticket code revoked/changed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:67
msgid "Ticket blocked"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:68
msgid "Ticket not valid at this time"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:69
msgid "Order canceled"
msgstr "Narudžba otkazana"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:70
msgid "Ticket code is ambiguous on list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:71
msgid "Order not approved"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:72
msgid "Checked-in Tickets"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:73
msgid "Valid Tickets"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:74
#, fuzzy
#| msgctxt "widget"
#| msgid "Currently not available"
msgid "Currently inside"
msgstr "Trenutno nedostupno"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:75
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "Yes"
msgstr "Da"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:76
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "No"
msgstr "Ne"
#: pretix/static/lightbox/js/lightbox.js:96
msgid "close"
msgstr "zatvori"
@@ -212,8 +386,8 @@ msgid ""
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:135
#: pretix/static/pretixbase/js/asynctask.js:192
#: pretix/static/pretixbase/js/asynctask.js:196
#: pretix/static/pretixbase/js/asynctask.js:193
#: pretix/static/pretixbase/js/asynctask.js:197
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
@@ -229,28 +403,28 @@ msgstr ""
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:198
#: pretix/static/pretixbase/js/asynctask.js:199
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:226
#: pretix/static/pretixbase/js/asynctask.js:227
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:229
#: pretix/static/pretixbase/js/asynctask.js:230
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:286
#: pretix/static/pretixbase/js/asynctask.js:287
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:341
#: pretix/static/pretixbase/js/asynctask.js:342
msgid "Close message"
msgstr ""
@@ -262,6 +436,165 @@ msgstr ""
msgid "Press Ctrl-C to copy!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:80
msgid "Edit"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:86
msgid "Visualize"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:96
msgid ""
"Your rule always filters by product or variation, but the following products "
"or variations are not contained in any of your rule parts so people with "
"these tickets will not get in:"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:99
msgid "Please double-check if this was intentional."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:4
msgid "All of the conditions below (AND)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:5
msgid "At least one of the conditions below (OR)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:6
msgid "Event start"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:7
msgid "Event end"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:8
msgid "Event admission"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:9
msgid "custom date and time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:10
msgid "custom time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:11
msgid "Tolerance (minutes)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:12
msgid "Add condition"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:13
msgid "minutes"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:14
msgid "Duplicate"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:15
msgctxt "entry_status"
msgid "present"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:16
msgctxt "entry_status"
msgid "absent"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:29
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:35
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:41
msgid "is one of"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:47
msgid "is before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:51
msgid "is after"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:57
msgid "="
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:117
msgid "Product"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:121
msgid "Product variation"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:125
msgid "Gate"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:129
msgid "Current date and time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:133
msgid "Current day of the week (1 = Monday, 7 = Sunday)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:137
msgid "Current entry status"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:141
msgid "Number of previous entries"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:145
msgid "Number of previous entries since midnight"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:149
msgid "Number of previous entries since"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:153
msgid "Number of previous entries before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:157
msgid "Number of days with a previous entry"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:161
msgid "Number of days with a previous entry since"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:165
msgid "Number of days with a previous entry before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:169
msgid "Minutes since last entry (-1 on first entry)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:173
msgid "Minutes since first entry (-1 on first entry)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/django-interop.ts:47
msgid "Error: Product not found!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/django-interop.ts:54
msgid "Error: Variation not found!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:171
msgid "Check-in QR"
msgstr ""
@@ -360,23 +693,23 @@ msgstr ""
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:842
#: pretix/static/pretixcontrol/js/ui/main.js:844
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:845
#: pretix/static/pretixcontrol/js/ui/main.js:847
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1003
#: pretix/static/pretixcontrol/js/ui/main.js:1005
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1043
#: pretix/static/pretixcontrol/js/ui/main.js:1045
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1124
#: pretix/static/pretixcontrol/js/ui/main.js:1126
msgid "You have unsaved changes!"
msgstr ""
@@ -396,16 +729,6 @@ msgstr ""
msgid "Count"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "Yes"
msgstr "Da"
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "No"
msgstr "Ne"
#: pretix/static/pretixcontrol/js/ui/subevent.js:112
msgid "(one more date)"
msgid_plural "({num} more dates)"
@@ -473,164 +796,196 @@ msgid "Google Pay"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:16
#: pretix/static/pretixpresale/widget/src/i18n.ts:30
msgctxt "widget"
msgid "Quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:17
#: pretix/static/pretixpresale/widget/src/i18n.ts:31
msgctxt "widget"
msgid "Decrease quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:18
#: pretix/static/pretixpresale/widget/src/i18n.ts:32
msgctxt "widget"
msgid "Increase quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:19
#: pretix/static/pretixpresale/widget/src/i18n.ts:33
msgctxt "widget"
msgid "Filter events by"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:20
#: pretix/static/pretixpresale/widget/src/i18n.ts:34
msgctxt "widget"
msgid "Filter"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
#: pretix/static/pretixpresale/widget/src/i18n.ts:35
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/widget/src/i18n.ts:36
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/widget/src/i18n.ts:37
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/widget/src/i18n.ts:38
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/widget/src/i18n.ts:39
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/widget/src/i18n.ts:40
#, javascript-format
msgctxt "widget"
msgid "Select variant %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/widget/src/i18n.ts:41
msgctxt "widget"
msgid "Sold out"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/widget/src/i18n.ts:42
msgctxt "widget"
msgid "Buy"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/widget/src/i18n.ts:43
msgctxt "widget"
msgid "Register"
msgstr "Rezerviraj"
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/widget/src/i18n.ts:44
msgctxt "widget"
msgid "Reserved"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/widget/src/i18n.ts:45
msgctxt "widget"
msgid "FREE"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/widget/src/i18n.ts:46
msgctxt "widget"
msgid "from %(currency)s %(price)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:33
#: pretix/static/pretixpresale/widget/src/i18n.ts:47
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:34
#: pretix/static/pretixpresale/widget/src/i18n.ts:48
msgctxt "widget"
msgid "incl. %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/widget/src/i18n.ts:49
msgctxt "widget"
msgid "plus %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/widget/src/i18n.ts:50
msgctxt "widget"
msgid "incl. taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/widget/src/i18n.ts:51
msgctxt "widget"
msgid "plus taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/widget/src/i18n.ts:52
#, javascript-format
msgctxt "widget"
msgid "currently available: %s"
msgstr "Trenutno dostupno: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/widget/src/i18n.ts:53
msgctxt "widget"
msgid "Only available with a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:43
#: pretix/static/pretixpresale/widget/src/i18n.ts:54
#: pretix/static/pretixpresale/widget/src/i18n.ts:57
msgctxt "widget"
msgid "Not yet available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/widget/src/i18n.ts:55
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/widget/src/i18n.ts:56
msgctxt "widget"
msgid "Currently not available"
msgstr "Trenutno nedostupno"
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/widget/src/i18n.ts:58
#, javascript-format
msgctxt "widget"
msgid "minimum amount to order: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:45
#: pretix/static/pretixpresale/widget/src/i18n.ts:59
msgctxt "widget"
msgid "Close ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:46
#: pretix/static/pretixpresale/widget/src/i18n.ts:60
msgctxt "widget"
msgid "The ticket shop could not be loaded."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:47
#: pretix/static/pretixpresale/widget/src/i18n.ts:61
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
@@ -638,21 +993,25 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/widget/src/i18n.ts:62
msgctxt "widget"
msgid "Open ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/widget/src/i18n.ts:63
msgctxt "widget"
msgid "Checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:51
#: pretix/static/pretixpresale/widget/src/i18n.ts:64
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/widget/src/i18n.ts:65
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
@@ -660,11 +1019,13 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:54
#: pretix/static/pretixpresale/widget/src/i18n.ts:66
msgctxt "widget"
msgid "Waiting list"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/widget/src/i18n.ts:67
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
@@ -672,96 +1033,115 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/widget/src/i18n.ts:68
msgctxt "widget"
msgid "Resume checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/widget/src/i18n.ts:69
msgctxt "widget"
msgid "Redeem a voucher"
msgstr "Iskoristi vaučer"
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/widget/src/i18n.ts:70
msgctxt "widget"
msgid "Redeem"
msgstr "Iskoristi"
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/widget/src/i18n.ts:71
msgctxt "widget"
msgid "Voucher code"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/widget/src/i18n.ts:72
msgctxt "widget"
msgid "Close"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:62
#: pretix/static/pretixpresale/widget/src/i18n.ts:73
msgctxt "widget"
msgid "Close checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:63
#: pretix/static/pretixpresale/widget/src/i18n.ts:74
msgctxt "widget"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/widget/src/i18n.ts:75
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/widget/src/i18n.ts:76
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/widget/src/i18n.ts:77
msgctxt "widget"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/widget/src/i18n.ts:78
msgctxt "widget"
msgid "Choose a different event"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/widget/src/i18n.ts:79
msgctxt "widget"
msgid "Choose a different date"
msgstr "Odaberi drugi datum"
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/widget/src/i18n.ts:80
msgctxt "widget"
msgid "Back"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/widget/src/i18n.ts:81
msgctxt "widget"
msgid "Next month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/widget/src/i18n.ts:82
msgctxt "widget"
msgid "Previous month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/widget/src/i18n.ts:83
msgctxt "widget"
msgid "Next week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/widget/src/i18n.ts:84
msgctxt "widget"
msgid "Previous week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/widget/src/i18n.ts:85
msgctxt "widget"
msgid "Open seat selection"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/widget/src/i18n.ts:86
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -773,119 +1153,137 @@ msgstr ""
"oslobode."
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/widget/src/i18n.ts:87
msgctxt "widget"
msgid "Load more"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/widget/src/i18n.ts:89
msgid "Mo"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/widget/src/i18n.ts:90
msgid "Tu"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/widget/src/i18n.ts:91
msgid "We"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/widget/src/i18n.ts:92
msgid "Th"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/widget/src/i18n.ts:93
msgid "Fr"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/widget/src/i18n.ts:94
msgid "Sa"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/widget/src/i18n.ts:95
msgid "Su"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/widget/src/i18n.ts:96
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/widget/src/i18n.ts:97
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/widget/src/i18n.ts:98
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:88
#: pretix/static/pretixpresale/widget/src/i18n.ts:99
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:89
#: pretix/static/pretixpresale/widget/src/i18n.ts:100
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/widget/src/i18n.ts:101
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/widget/src/i18n.ts:102
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/widget/src/i18n.ts:105
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/widget/src/i18n.ts:106
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/widget/src/i18n.ts:107
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/widget/src/i18n.ts:108
msgid "April"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/widget/src/i18n.ts:109
msgid "May"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/widget/src/i18n.ts:110
msgid "June"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/widget/src/i18n.ts:111
msgid "July"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/widget/src/i18n.ts:112
msgid "August"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:102
#: pretix/static/pretixpresale/widget/src/i18n.ts:113
msgid "September"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:103
#: pretix/static/pretixpresale/widget/src/i18n.ts:114
msgid "October"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:104
#: pretix/static/pretixpresale/widget/src/i18n.ts:115
msgid "November"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:105
#: pretix/static/pretixpresale/widget/src/i18n.ts:116
msgid "December"
msgstr ""
#~ msgid "Redeemed"
#~ msgstr "Iskorišteno"
#~ msgid "Additional information required"
#~ msgstr "Potrebne su dodatne informacije"
#~ msgid "Order canceled"
#~ msgstr "Narudžba otkazana"
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+423 -23
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-05-27 14:47+0000\n"
"POT-Creation-Date: 2026-06-28 15:49+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -132,6 +132,7 @@ msgid "Mercado Pago"
msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:54
#: pretix/static/pretixpresale/js/ui/cart.js:89
msgid "Continue"
msgstr ""
@@ -185,6 +186,172 @@ msgstr ""
msgid "Contacting your bank …"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:34
msgid "Select a check-in list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:35
msgid "No active check-in lists found."
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:36
msgid "Switch check-in list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:37
msgid "Search results"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:38
msgid "No tickets found"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:39
msgid "Result"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:40
msgid "This ticket requires special attention"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:41
msgid "Switch direction"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:42
msgid "Entry"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:43
msgid "Exit"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:44
msgid "Scan a ticket or search and press return…"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:45
msgid "Load more"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:46
msgid "Valid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:47
msgid "Unpaid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:48
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:49
msgid "Canceled"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:50
msgid "Confirmed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:51
msgid "Approval pending"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:52
msgid "Redeemed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:53
msgid "Cancel"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:55
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:64
msgid "Ticket not paid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:56
msgid "This ticket is not yet paid. Do you want to continue anyways?"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:57
msgid "Additional information required"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:58
msgid "Valid ticket"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:59
msgid "Exit recorded"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:60
msgid "Ticket already used"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:61
msgid "Information required"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:62
msgid "Unknown ticket"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:63
msgid "Ticket type not allowed here"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:65
msgid "Entry not allowed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:66
msgid "Ticket code revoked/changed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:67
msgid "Ticket blocked"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:68
msgid "Ticket not valid at this time"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:69
msgid "Order canceled"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:70
msgid "Ticket code is ambiguous on list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:71
msgid "Order not approved"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:72
msgid "Checked-in Tickets"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:73
msgid "Valid Tickets"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:74
msgid "Currently inside"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:75
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "Yes"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:76
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "No"
msgstr ""
#: pretix/static/lightbox/js/lightbox.js:96
msgid "close"
msgstr ""
@@ -212,8 +379,8 @@ msgid ""
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:135
#: pretix/static/pretixbase/js/asynctask.js:192
#: pretix/static/pretixbase/js/asynctask.js:196
#: pretix/static/pretixbase/js/asynctask.js:193
#: pretix/static/pretixbase/js/asynctask.js:197
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
@@ -229,28 +396,28 @@ msgstr ""
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:198
#: pretix/static/pretixbase/js/asynctask.js:199
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:226
#: pretix/static/pretixbase/js/asynctask.js:227
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:229
#: pretix/static/pretixbase/js/asynctask.js:230
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:286
#: pretix/static/pretixbase/js/asynctask.js:287
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:341
#: pretix/static/pretixbase/js/asynctask.js:342
msgid "Close message"
msgstr ""
@@ -262,6 +429,165 @@ msgstr ""
msgid "Press Ctrl-C to copy!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:80
msgid "Edit"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:86
msgid "Visualize"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:96
msgid ""
"Your rule always filters by product or variation, but the following products "
"or variations are not contained in any of your rule parts so people with "
"these tickets will not get in:"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:99
msgid "Please double-check if this was intentional."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:4
msgid "All of the conditions below (AND)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:5
msgid "At least one of the conditions below (OR)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:6
msgid "Event start"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:7
msgid "Event end"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:8
msgid "Event admission"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:9
msgid "custom date and time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:10
msgid "custom time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:11
msgid "Tolerance (minutes)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:12
msgid "Add condition"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:13
msgid "minutes"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:14
msgid "Duplicate"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:15
msgctxt "entry_status"
msgid "present"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:16
msgctxt "entry_status"
msgid "absent"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:29
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:35
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:41
msgid "is one of"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:47
msgid "is before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:51
msgid "is after"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:57
msgid "="
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:117
msgid "Product"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:121
msgid "Product variation"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:125
msgid "Gate"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:129
msgid "Current date and time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:133
msgid "Current day of the week (1 = Monday, 7 = Sunday)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:137
msgid "Current entry status"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:141
msgid "Number of previous entries"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:145
msgid "Number of previous entries since midnight"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:149
msgid "Number of previous entries since"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:153
msgid "Number of previous entries before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:157
msgid "Number of days with a previous entry"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:161
msgid "Number of days with a previous entry since"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:165
msgid "Number of days with a previous entry before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:169
msgid "Minutes since last entry (-1 on first entry)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:173
msgid "Minutes since first entry (-1 on first entry)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/django-interop.ts:47
msgid "Error: Product not found!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/django-interop.ts:54
msgid "Error: Variation not found!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:171
msgid "Check-in QR"
msgstr ""
@@ -360,23 +686,23 @@ msgstr ""
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:842
#: pretix/static/pretixcontrol/js/ui/main.js:844
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:845
#: pretix/static/pretixcontrol/js/ui/main.js:847
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1003
#: pretix/static/pretixcontrol/js/ui/main.js:1005
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1043
#: pretix/static/pretixcontrol/js/ui/main.js:1045
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1124
#: pretix/static/pretixcontrol/js/ui/main.js:1126
msgid "You have unsaved changes!"
msgstr ""
@@ -396,16 +722,6 @@ msgstr ""
msgid "Count"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "Yes"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "No"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/subevent.js:112
msgid "(one more date)"
msgid_plural "({num} more dates)"
@@ -472,164 +788,196 @@ msgid "Google Pay"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:16
#: pretix/static/pretixpresale/widget/src/i18n.ts:30
msgctxt "widget"
msgid "Quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:17
#: pretix/static/pretixpresale/widget/src/i18n.ts:31
msgctxt "widget"
msgid "Decrease quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:18
#: pretix/static/pretixpresale/widget/src/i18n.ts:32
msgctxt "widget"
msgid "Increase quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:19
#: pretix/static/pretixpresale/widget/src/i18n.ts:33
msgctxt "widget"
msgid "Filter events by"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:20
#: pretix/static/pretixpresale/widget/src/i18n.ts:34
msgctxt "widget"
msgid "Filter"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
#: pretix/static/pretixpresale/widget/src/i18n.ts:35
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/widget/src/i18n.ts:36
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/widget/src/i18n.ts:37
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/widget/src/i18n.ts:38
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/widget/src/i18n.ts:39
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/widget/src/i18n.ts:40
#, javascript-format
msgctxt "widget"
msgid "Select variant %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/widget/src/i18n.ts:41
msgctxt "widget"
msgid "Sold out"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/widget/src/i18n.ts:42
msgctxt "widget"
msgid "Buy"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/widget/src/i18n.ts:43
msgctxt "widget"
msgid "Register"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/widget/src/i18n.ts:44
msgctxt "widget"
msgid "Reserved"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/widget/src/i18n.ts:45
msgctxt "widget"
msgid "FREE"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/widget/src/i18n.ts:46
msgctxt "widget"
msgid "from %(currency)s %(price)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:33
#: pretix/static/pretixpresale/widget/src/i18n.ts:47
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:34
#: pretix/static/pretixpresale/widget/src/i18n.ts:48
msgctxt "widget"
msgid "incl. %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/widget/src/i18n.ts:49
msgctxt "widget"
msgid "plus %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/widget/src/i18n.ts:50
msgctxt "widget"
msgid "incl. taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/widget/src/i18n.ts:51
msgctxt "widget"
msgid "plus taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/widget/src/i18n.ts:52
#, javascript-format
msgctxt "widget"
msgid "currently available: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/widget/src/i18n.ts:53
msgctxt "widget"
msgid "Only available with a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:43
#: pretix/static/pretixpresale/widget/src/i18n.ts:54
#: pretix/static/pretixpresale/widget/src/i18n.ts:57
msgctxt "widget"
msgid "Not yet available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/widget/src/i18n.ts:55
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/widget/src/i18n.ts:56
msgctxt "widget"
msgid "Currently not available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/widget/src/i18n.ts:58
#, javascript-format
msgctxt "widget"
msgid "minimum amount to order: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:45
#: pretix/static/pretixpresale/widget/src/i18n.ts:59
msgctxt "widget"
msgid "Close ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:46
#: pretix/static/pretixpresale/widget/src/i18n.ts:60
msgctxt "widget"
msgid "The ticket shop could not be loaded."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:47
#: pretix/static/pretixpresale/widget/src/i18n.ts:61
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
@@ -637,21 +985,25 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/widget/src/i18n.ts:62
msgctxt "widget"
msgid "Open ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/widget/src/i18n.ts:63
msgctxt "widget"
msgid "Checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:51
#: pretix/static/pretixpresale/widget/src/i18n.ts:64
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/widget/src/i18n.ts:65
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
@@ -659,11 +1011,13 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:54
#: pretix/static/pretixpresale/widget/src/i18n.ts:66
msgctxt "widget"
msgid "Waiting list"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/widget/src/i18n.ts:67
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
@@ -671,96 +1025,115 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/widget/src/i18n.ts:68
msgctxt "widget"
msgid "Resume checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/widget/src/i18n.ts:69
msgctxt "widget"
msgid "Redeem a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/widget/src/i18n.ts:70
msgctxt "widget"
msgid "Redeem"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/widget/src/i18n.ts:71
msgctxt "widget"
msgid "Voucher code"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/widget/src/i18n.ts:72
msgctxt "widget"
msgid "Close"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:62
#: pretix/static/pretixpresale/widget/src/i18n.ts:73
msgctxt "widget"
msgid "Close checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:63
#: pretix/static/pretixpresale/widget/src/i18n.ts:74
msgctxt "widget"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/widget/src/i18n.ts:75
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/widget/src/i18n.ts:76
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/widget/src/i18n.ts:77
msgctxt "widget"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/widget/src/i18n.ts:78
msgctxt "widget"
msgid "Choose a different event"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/widget/src/i18n.ts:79
msgctxt "widget"
msgid "Choose a different date"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/widget/src/i18n.ts:80
msgctxt "widget"
msgid "Back"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/widget/src/i18n.ts:81
msgctxt "widget"
msgid "Next month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/widget/src/i18n.ts:82
msgctxt "widget"
msgid "Previous month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/widget/src/i18n.ts:83
msgctxt "widget"
msgid "Next week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/widget/src/i18n.ts:84
msgctxt "widget"
msgid "Previous week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/widget/src/i18n.ts:85
msgctxt "widget"
msgid "Open seat selection"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/widget/src/i18n.ts:86
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -769,110 +1142,137 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/widget/src/i18n.ts:87
msgctxt "widget"
msgid "Load more"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/widget/src/i18n.ts:89
msgid "Mo"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/widget/src/i18n.ts:90
msgid "Tu"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/widget/src/i18n.ts:91
msgid "We"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/widget/src/i18n.ts:92
msgid "Th"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/widget/src/i18n.ts:93
msgid "Fr"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/widget/src/i18n.ts:94
msgid "Sa"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/widget/src/i18n.ts:95
msgid "Su"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/widget/src/i18n.ts:96
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/widget/src/i18n.ts:97
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/widget/src/i18n.ts:98
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:88
#: pretix/static/pretixpresale/widget/src/i18n.ts:99
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:89
#: pretix/static/pretixpresale/widget/src/i18n.ts:100
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/widget/src/i18n.ts:101
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/widget/src/i18n.ts:102
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/widget/src/i18n.ts:105
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/widget/src/i18n.ts:106
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/widget/src/i18n.ts:107
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/widget/src/i18n.ts:108
msgid "April"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/widget/src/i18n.ts:109
msgid "May"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/widget/src/i18n.ts:110
msgid "June"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/widget/src/i18n.ts:111
msgid "July"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/widget/src/i18n.ts:112
msgid "August"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:102
#: pretix/static/pretixpresale/widget/src/i18n.ts:113
msgid "September"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:103
#: pretix/static/pretixpresale/widget/src/i18n.ts:114
msgid "October"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:104
#: pretix/static/pretixpresale/widget/src/i18n.ts:115
msgid "November"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:105
#: pretix/static/pretixpresale/widget/src/i18n.ts:116
msgid "December"
msgstr ""
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+423 -23
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-05-27 14:47+0000\n"
"POT-Creation-Date: 2026-06-28 15:49+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -130,6 +130,7 @@ msgid "Mercado Pago"
msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:54
#: pretix/static/pretixpresale/js/ui/cart.js:89
msgid "Continue"
msgstr ""
@@ -183,6 +184,172 @@ msgstr ""
msgid "Contacting your bank …"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:34
msgid "Select a check-in list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:35
msgid "No active check-in lists found."
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:36
msgid "Switch check-in list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:37
msgid "Search results"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:38
msgid "No tickets found"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:39
msgid "Result"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:40
msgid "This ticket requires special attention"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:41
msgid "Switch direction"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:42
msgid "Entry"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:43
msgid "Exit"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:44
msgid "Scan a ticket or search and press return…"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:45
msgid "Load more"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:46
msgid "Valid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:47
msgid "Unpaid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:48
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:49
msgid "Canceled"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:50
msgid "Confirmed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:51
msgid "Approval pending"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:52
msgid "Redeemed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:53
msgid "Cancel"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:55
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:64
msgid "Ticket not paid"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:56
msgid "This ticket is not yet paid. Do you want to continue anyways?"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:57
msgid "Additional information required"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:58
msgid "Valid ticket"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:59
msgid "Exit recorded"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:60
msgid "Ticket already used"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:61
msgid "Information required"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:62
msgid "Unknown ticket"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:63
msgid "Ticket type not allowed here"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:65
msgid "Entry not allowed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:66
msgid "Ticket code revoked/changed"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:67
msgid "Ticket blocked"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:68
msgid "Ticket not valid at this time"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:69
msgid "Order canceled"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:70
msgid "Ticket code is ambiguous on list"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:71
msgid "Order not approved"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:72
msgid "Checked-in Tickets"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:73
msgid "Valid Tickets"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:74
msgid "Currently inside"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:75
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "Yes"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/i18n.ts:76
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "No"
msgstr ""
#: pretix/static/lightbox/js/lightbox.js:96
msgid "close"
msgstr ""
@@ -210,8 +377,8 @@ msgid ""
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:135
#: pretix/static/pretixbase/js/asynctask.js:192
#: pretix/static/pretixbase/js/asynctask.js:196
#: pretix/static/pretixbase/js/asynctask.js:193
#: pretix/static/pretixbase/js/asynctask.js:197
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
@@ -227,28 +394,28 @@ msgstr ""
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:198
#: pretix/static/pretixbase/js/asynctask.js:199
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:226
#: pretix/static/pretixbase/js/asynctask.js:227
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:229
#: pretix/static/pretixbase/js/asynctask.js:230
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:286
#: pretix/static/pretixbase/js/asynctask.js:287
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:341
#: pretix/static/pretixbase/js/asynctask.js:342
msgid "Close message"
msgstr ""
@@ -260,6 +427,165 @@ msgstr ""
msgid "Press Ctrl-C to copy!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:80
msgid "Edit"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:86
msgid "Visualize"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:96
msgid ""
"Your rule always filters by product or variation, but the following products "
"or variations are not contained in any of your rule parts so people with "
"these tickets will not get in:"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/App.vue:99
msgid "Please double-check if this was intentional."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:4
msgid "All of the conditions below (AND)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:5
msgid "At least one of the conditions below (OR)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:6
msgid "Event start"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:7
msgid "Event end"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:8
msgid "Event admission"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:9
msgid "custom date and time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:10
msgid "custom time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:11
msgid "Tolerance (minutes)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:12
msgid "Add condition"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:13
msgid "minutes"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:14
msgid "Duplicate"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:15
msgctxt "entry_status"
msgid "present"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:16
msgctxt "entry_status"
msgid "absent"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:29
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:35
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:41
msgid "is one of"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:47
msgid "is before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:51
msgid "is after"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:57
msgid "="
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:117
msgid "Product"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:121
msgid "Product variation"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:125
msgid "Gate"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:129
msgid "Current date and time"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:133
msgid "Current day of the week (1 = Monday, 7 = Sunday)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:137
msgid "Current entry status"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:141
msgid "Number of previous entries"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:145
msgid "Number of previous entries since midnight"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:149
msgid "Number of previous entries since"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:153
msgid "Number of previous entries before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:157
msgid "Number of days with a previous entry"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:161
msgid "Number of days with a previous entry since"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:165
msgid "Number of days with a previous entry before"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:169
msgid "Minutes since last entry (-1 on first entry)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/constants.ts:173
msgid "Minutes since first entry (-1 on first entry)"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/django-interop.ts:47
msgid "Error: Product not found!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/checkinrules/django-interop.ts:54
msgid "Error: Variation not found!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:171
msgid "Check-in QR"
msgstr ""
@@ -358,23 +684,23 @@ msgstr ""
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:842
#: pretix/static/pretixcontrol/js/ui/main.js:844
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:845
#: pretix/static/pretixcontrol/js/ui/main.js:847
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1003
#: pretix/static/pretixcontrol/js/ui/main.js:1005
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1043
#: pretix/static/pretixcontrol/js/ui/main.js:1045
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1124
#: pretix/static/pretixcontrol/js/ui/main.js:1126
msgid "You have unsaved changes!"
msgstr ""
@@ -394,16 +720,6 @@ msgstr ""
msgid "Count"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "Yes"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:271
msgid "No"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/subevent.js:112
msgid "(one more date)"
msgid_plural "({num} more dates)"
@@ -470,164 +786,196 @@ msgid "Google Pay"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:16
#: pretix/static/pretixpresale/widget/src/i18n.ts:30
msgctxt "widget"
msgid "Quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:17
#: pretix/static/pretixpresale/widget/src/i18n.ts:31
msgctxt "widget"
msgid "Decrease quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:18
#: pretix/static/pretixpresale/widget/src/i18n.ts:32
msgctxt "widget"
msgid "Increase quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:19
#: pretix/static/pretixpresale/widget/src/i18n.ts:33
msgctxt "widget"
msgid "Filter events by"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:20
#: pretix/static/pretixpresale/widget/src/i18n.ts:34
msgctxt "widget"
msgid "Filter"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
#: pretix/static/pretixpresale/widget/src/i18n.ts:35
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/widget/src/i18n.ts:36
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/widget/src/i18n.ts:37
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/widget/src/i18n.ts:38
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/widget/src/i18n.ts:39
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/widget/src/i18n.ts:40
#, javascript-format
msgctxt "widget"
msgid "Select variant %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/widget/src/i18n.ts:41
msgctxt "widget"
msgid "Sold out"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/widget/src/i18n.ts:42
msgctxt "widget"
msgid "Buy"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/widget/src/i18n.ts:43
msgctxt "widget"
msgid "Register"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/widget/src/i18n.ts:44
msgctxt "widget"
msgid "Reserved"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/widget/src/i18n.ts:45
msgctxt "widget"
msgid "FREE"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/widget/src/i18n.ts:46
msgctxt "widget"
msgid "from %(currency)s %(price)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:33
#: pretix/static/pretixpresale/widget/src/i18n.ts:47
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:34
#: pretix/static/pretixpresale/widget/src/i18n.ts:48
msgctxt "widget"
msgid "incl. %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/widget/src/i18n.ts:49
msgctxt "widget"
msgid "plus %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/widget/src/i18n.ts:50
msgctxt "widget"
msgid "incl. taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/widget/src/i18n.ts:51
msgctxt "widget"
msgid "plus taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/widget/src/i18n.ts:52
#, javascript-format
msgctxt "widget"
msgid "currently available: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/widget/src/i18n.ts:53
msgctxt "widget"
msgid "Only available with a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:43
#: pretix/static/pretixpresale/widget/src/i18n.ts:54
#: pretix/static/pretixpresale/widget/src/i18n.ts:57
msgctxt "widget"
msgid "Not yet available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/widget/src/i18n.ts:55
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/widget/src/i18n.ts:56
msgctxt "widget"
msgid "Currently not available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/widget/src/i18n.ts:58
#, javascript-format
msgctxt "widget"
msgid "minimum amount to order: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:45
#: pretix/static/pretixpresale/widget/src/i18n.ts:59
msgctxt "widget"
msgid "Close ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:46
#: pretix/static/pretixpresale/widget/src/i18n.ts:60
msgctxt "widget"
msgid "The ticket shop could not be loaded."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:47
#: pretix/static/pretixpresale/widget/src/i18n.ts:61
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
@@ -635,21 +983,25 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/widget/src/i18n.ts:62
msgctxt "widget"
msgid "Open ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/widget/src/i18n.ts:63
msgctxt "widget"
msgid "Checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:51
#: pretix/static/pretixpresale/widget/src/i18n.ts:64
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/widget/src/i18n.ts:65
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
@@ -657,11 +1009,13 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:54
#: pretix/static/pretixpresale/widget/src/i18n.ts:66
msgctxt "widget"
msgid "Waiting list"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/widget/src/i18n.ts:67
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
@@ -669,96 +1023,115 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/widget/src/i18n.ts:68
msgctxt "widget"
msgid "Resume checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/widget/src/i18n.ts:69
msgctxt "widget"
msgid "Redeem a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/widget/src/i18n.ts:70
msgctxt "widget"
msgid "Redeem"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/widget/src/i18n.ts:71
msgctxt "widget"
msgid "Voucher code"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/widget/src/i18n.ts:72
msgctxt "widget"
msgid "Close"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:62
#: pretix/static/pretixpresale/widget/src/i18n.ts:73
msgctxt "widget"
msgid "Close checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:63
#: pretix/static/pretixpresale/widget/src/i18n.ts:74
msgctxt "widget"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/widget/src/i18n.ts:75
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/widget/src/i18n.ts:76
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/widget/src/i18n.ts:77
msgctxt "widget"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/widget/src/i18n.ts:78
msgctxt "widget"
msgid "Choose a different event"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/widget/src/i18n.ts:79
msgctxt "widget"
msgid "Choose a different date"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/widget/src/i18n.ts:80
msgctxt "widget"
msgid "Back"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/widget/src/i18n.ts:81
msgctxt "widget"
msgid "Next month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/widget/src/i18n.ts:82
msgctxt "widget"
msgid "Previous month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/widget/src/i18n.ts:83
msgctxt "widget"
msgid "Next week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/widget/src/i18n.ts:84
msgctxt "widget"
msgid "Previous week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/widget/src/i18n.ts:85
msgctxt "widget"
msgid "Open seat selection"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/widget/src/i18n.ts:86
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -767,110 +1140,137 @@ msgid ""
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/widget/src/i18n.ts:87
msgctxt "widget"
msgid "Load more"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/widget/src/i18n.ts:89
msgid "Mo"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/widget/src/i18n.ts:90
msgid "Tu"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/widget/src/i18n.ts:91
msgid "We"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/widget/src/i18n.ts:92
msgid "Th"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/widget/src/i18n.ts:93
msgid "Fr"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/widget/src/i18n.ts:94
msgid "Sa"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/widget/src/i18n.ts:95
msgid "Su"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/widget/src/i18n.ts:96
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/widget/src/i18n.ts:97
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/widget/src/i18n.ts:98
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:88
#: pretix/static/pretixpresale/widget/src/i18n.ts:99
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:89
#: pretix/static/pretixpresale/widget/src/i18n.ts:100
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/widget/src/i18n.ts:101
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/widget/src/i18n.ts:102
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/widget/src/i18n.ts:105
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/widget/src/i18n.ts:106
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/widget/src/i18n.ts:107
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/widget/src/i18n.ts:108
msgid "April"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/widget/src/i18n.ts:109
msgid "May"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/widget/src/i18n.ts:110
msgid "June"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/widget/src/i18n.ts:111
msgid "July"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/widget/src/i18n.ts:112
msgid "August"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:102
#: pretix/static/pretixpresale/widget/src/i18n.ts:113
msgid "September"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:103
#: pretix/static/pretixpresale/widget/src/i18n.ts:114
msgid "October"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:104
#: pretix/static/pretixpresale/widget/src/i18n.ts:115
msgid "November"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:105
#: pretix/static/pretixpresale/widget/src/i18n.ts:116
msgid "December"
msgstr ""
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff

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