Compare commits

..

228 Commits

Author SHA1 Message Date
Raphael Michel b27a059ccb Update src/pretix/helpers/thumb.py
Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-09-09 14:34:53 +02:00
Raphael Michel b8dbda4eb4 Update src/pretix/helpers/thumb.py
Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-09-09 14:34:32 +02:00
Raphael Michel 82d4a09da9 Fix note from review 2025-06-27 17:55:40 +02:00
Raphael Michel 9dc554dfa8 Python backwards compat 2025-06-27 17:14:15 +02:00
Raphael Michel 7b05af6bfc Provide high-res versions of product and event images
Replaces previous attempts #3235 and #5056, see also #3506
2025-06-27 17:14:14 +02:00
Raphael Michel 1a990dfecc Bump version to 2025.7.0.dev0 2025-06-27 09:28:21 +02:00
Raphael Michel 74ac6ab102 Bump version to 2025.6.0 2025-06-27 09:28:05 +02:00
Raphael Michel eb912f1e22 Remove useless translation tag 2025-06-27 09:27:48 +02:00
Raphael Michel fc7d0025ab Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (5909 of 5909 strings)

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

powered by weblate
2025-06-26 17:18:45 +02:00
Raphael Michel e58e1187d0 Translations: Update German
Currently translated at 100.0% (5909 of 5909 strings)

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

powered by weblate
2025-06-26 17:18:45 +02:00
Raphael Michel 436960ff76 Update po files
[CI skip]

Signed-off-by: Raphael Michel <michel@rami.io>
2025-06-26 11:11:13 +02:00
Raphael Michel e796dc3a65 Webhooks: Fix typo in retry interval 2025-06-25 16:46:52 +02:00
Richard Schreiber 545625b732 Fix failing flake8 2025-06-25 11:24:11 +02:00
Richard Schreiber 9bf302e5ae Widget: deprecate v1 and deliver v2 instead (#5273)
* Widget: deprecate v1 and redirect to v2

* Make redirect permanent

* remove v1 files

* do not redirect, just serve version_min

* add version-comment to delivered css/js-file

* fix tests
2025-06-25 11:20:34 +02:00
dependabot[bot] 0c7c50cffc Update sentry-sdk requirement from ==2.30.* to ==2.31.* (#5271)
---
updated-dependencies:
- dependency-name: sentry-sdk
  dependency-version: 2.31.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-25 11:19:13 +02:00
조정화 2c094f4c30 Translations: Update Korean
Currently translated at 52.3% (3088 of 5900 strings)

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

powered by weblate
2025-06-25 10:56:57 +02:00
조정화 e820424bdf Translations: Update Korean
Currently translated at 100.0% (252 of 252 strings)

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

powered by weblate
2025-06-25 10:56:57 +02:00
Raphael Michel cb3d88a923 Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (5900 of 5900 strings)

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

powered by weblate
2025-06-25 10:56:57 +02:00
Raphael Michel 530ce06155 Translations: Update German
Currently translated at 100.0% (5900 of 5900 strings)

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

powered by weblate
2025-06-25 10:56:57 +02:00
Raphael Michel 9017128513 Webhooks: Fix retry logic (Z#23197527) (#5250)
* Webhooks: Fix retry logic (Z#23197527)

* Add no-op migration
2025-06-25 08:56:46 +02:00
Raphael Michel 5d3fc62ba4 Questions: Validate type changes (Z#23197118) (#5259)
* Questions: Validate type changes (Z#23197118)

* Update src/pretix/base/forms/questions.py

Co-authored-by: Richard Schreiber <schreiber@rami.io>

* Update src/pretix/base/forms/questions.py

Co-authored-by: Richard Schreiber <schreiber@rami.io>

* Update src/pretix/base/forms/questions.py

Co-authored-by: Richard Schreiber <schreiber@rami.io>

* Update src/pretix/base/models/items.py

Co-authored-by: Richard Schreiber <schreiber@rami.io>

* Fix failing test

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-06-24 17:54:28 +02:00
dependabot[bot] 243db008e1 Bump markdown from 3.8 to 3.8.2 (#5266)
Bumps [markdown](https://github.com/Python-Markdown/markdown) from 3.8 to 3.8.2.
- [Release notes](https://github.com/Python-Markdown/markdown/releases)
- [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md)
- [Commits](https://github.com/Python-Markdown/markdown/compare/3.8...3.8.2)

---
updated-dependencies:
- dependency-name: markdown
  dependency-version: 3.8.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-24 16:18:55 +02:00
dependabot[bot] 5ea9f819e6 Update css-inline requirement from ==0.14.* to ==0.15.* (#5267)
Updates the requirements on [css-inline](https://github.com/Stranger6667/css-inline) to permit the latest version.
- [Release notes](https://github.com/Stranger6667/css-inline/releases)
- [Changelog](https://github.com/Stranger6667/css-inline/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stranger6667/css-inline/compare/c-v0.14.0...c-v0.15.0)

---
updated-dependencies:
- dependency-name: css-inline
  dependency-version: 0.15.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-24 16:18:41 +02:00
dependabot[bot] a5eb009e55 Update flake8 requirement from ==7.2.* to ==7.3.* (#5268)
Updates the requirements on [flake8](https://github.com/pycqa/flake8) to permit the latest version.
- [Commits](https://github.com/pycqa/flake8/compare/7.2.0...7.3.0)

---
updated-dependencies:
- dependency-name: flake8
  dependency-version: 7.3.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-24 16:18:30 +02:00
dependabot[bot] 5129ed3846 Update webauthn requirement from ==2.5.* to ==2.6.* (#5269)
Updates the requirements on [webauthn](https://github.com/duo-labs/py_webauthn) to permit the latest version.
- [Release notes](https://github.com/duo-labs/py_webauthn/releases)
- [Changelog](https://github.com/duo-labs/py_webauthn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/duo-labs/py_webauthn/compare/v2.5.0...v2.6.0)

---
updated-dependencies:
- dependency-name: webauthn
  dependency-version: 2.6.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-24 16:18:17 +02:00
Raphael Michel f51906338f Order detail: Set correct language for invoice email (Z#23197863) (#5260) 2025-06-24 16:14:33 +02:00
Raphael Michel d67e1116f4 Address forms: Add "federal entity" of Mexico to state list 2025-06-24 10:05:36 +02:00
dependabot[bot] f6df03c427 Bump brace-expansion from 1.1.11 to 1.1.12 in /src/pretix/static/npm_dir (#5265)
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.11 to 1.1.12.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/1.1.11...v1.1.12)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 1.1.12
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-23 17:17:57 +02:00
dependabot[bot] 308eac20b2 Update redis requirement from ==5.2.* to ==6.2.* (#5181)
Updates the requirements on [redis](https://github.com/redis/redis-py) to permit the latest version.
- [Release notes](https://github.com/redis/redis-py/releases)
- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)
- [Commits](https://github.com/redis/redis-py/compare/v5.2.0...v6.2.0)

---
updated-dependencies:
- dependency-name: redis
  dependency-version: 6.2.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-23 17:03:41 +02:00
dependabot[bot] ab3c03b278 Update fakeredis requirement from ==2.26.* to ==2.30.* (#5253)
Updates the requirements on [fakeredis](https://github.com/cunla/fakeredis-py) to permit the latest version.
- [Release notes](https://github.com/cunla/fakeredis-py/releases)
- [Commits](https://github.com/cunla/fakeredis-py/compare/v2.26.0...v2.30.0)

---
updated-dependencies:
- dependency-name: fakeredis
  dependency-version: 2.30.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-23 16:27:21 +02:00
dependabot[bot] 161404f152 Update sentry-sdk requirement from ==2.29.* to ==2.30.* (#5241)
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.29.0...2.30.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-23 16:06:30 +02:00
dependabot[bot] 8b119b329c Update django-redis requirement from ==5.4.* to ==6.0.* (#5252)
Updates the requirements on [django-redis](https://github.com/jazzband/django-redis) to permit the latest version.
- [Release notes](https://github.com/jazzband/django-redis/releases)
- [Changelog](https://github.com/jazzband/django-redis/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/jazzband/django-redis/compare/5.4.0...6.0.0)

---
updated-dependencies:
- dependency-name: django-redis
  dependency-version: 6.0.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-23 15:44:22 +02:00
Raphael Michel 512ca1966d Remove a cache isolation issue during tests 2025-06-23 15:40:54 +02:00
dependabot[bot] 90ec82ea1a Update oauthlib requirement from ==3.2.* to ==3.3.* (#5254)
Updates the requirements on [oauthlib](https://github.com/oauthlib/oauthlib) to permit the latest version.
- [Release notes](https://github.com/oauthlib/oauthlib/releases)
- [Changelog](https://github.com/oauthlib/oauthlib/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/oauthlib/oauthlib/compare/v3.2.0...v3.3.0)

---
updated-dependencies:
- dependency-name: oauthlib
  dependency-version: 3.3.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-23 15:02:53 +02:00
Richard Schreiber d55f411989 Add data-article-id to reference cart-item in product-list (#5244) 2025-06-23 11:49:23 +02:00
Raphael Michel 40855e14d9 Fix non-total ordering of items (fixes flaky test) (#5251) 2025-06-23 10:04:12 +02:00
Richard Schreiber 7bb2e4c170 Improve stats-UI fix (#5243)
* Improve stats-UI fix

* remove unused stats_json
2025-06-18 09:11:16 +02:00
Raphael Michel dec07b2df1 Subevent calendar: Respect time machine (#5231) 2025-06-17 11:30:52 +02:00
Raphael Michel 9fc9aaa661 Event settings: Fix duplicate font choices (Z#23196687) (#5230) 2025-06-17 09:58:18 +02:00
Raphael Michel 70f71c8077 Email: Remove more characters from sender name (Z#23197264) (#5248)
* Email: Remove more characters from sender name (Z#23197264)

* fix typo

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-06-16 10:49:08 +02:00
Richard Schreiber dc198d4ab6 Control: fix question graphs UI (#5242) 2025-06-13 11:05:10 +02:00
Richard Schreiber fdbb03d038 Translations: Update German
Currently translated at 100.0% (5900 of 5900 strings)

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

powered by weblate
2025-06-13 11:02:25 +02:00
Raphael Michel 8418d03add Questions: Express percentage of tickets (Z#23196542) (#5239)
* Questions: Express percentage of tickets (Z#23196542)

* add missing td for sum

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-06-13 11:01:37 +02:00
luelista b5f8438c18 Show warning on incompatible waiting list options (#5218)
If "Hide all products that are sold out" is enabled, the waiting list won't work.
2025-06-13 11:01:18 +02:00
Raphael Michel 5420f57aa2 Subevent bulk editing: Warn about deleted quotas (#5238)
* Subevent bulk editing: Warn about deleted quotas

* Fix condition

* Update alerts
2025-06-13 11:01:00 +02:00
luelista b5e20df508 Use proper log entry types for waiting list emails (#5070) (#5219) 2025-06-12 14:03:40 +02:00
Raphael Michel eba5c1b36d API: Fix crash on distributing a fee over tax rates with zero value (Z#23196669) (#5226) 2025-06-12 14:03:25 +02:00
Raphael Michel 7d30ecf527 API: Add items__in filter for quotas (Z#23195926) (#5232)
* API: Add items__in filter for quotas (Z#23195926)

* Update doc/api/resources/quotas.rst

Co-authored-by: Richard Schreiber <schreiber@rami.io>

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-06-12 12:24:45 +02:00
Raphael Michel 2359307462 Remove replaced docs 2025-06-12 10:54:28 +02:00
dependabot[bot] 325f7c565d Bump django-localflavor from 4.0 to 5.0 (#5234)
Bumps [django-localflavor](https://github.com/django/django-localflavor) from 4.0 to 5.0.
- [Changelog](https://github.com/django/django-localflavor/blob/master/docs/changelog.rst)
- [Commits](https://github.com/django/django-localflavor/compare/4.0...5.0)

---
updated-dependencies:
- dependency-name: django-localflavor
  dependency-version: '5.0'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-11 10:57:10 +02:00
luelista df48adef1b Filter payment method sales channels when cloning event to new organizer (Z#23196085) (#5220) 2025-06-11 10:56:58 +02:00
Richard Schreiber 74cea09f6c [A11y] add missing autcomplete (#5236) 2025-06-11 10:47:17 +02:00
Richard Schreiber e8abe5cad8 [A11y] fix variations toggle-button missing aria-controls (#5237) 2025-06-11 10:46:53 +02:00
조정화 6c9f66487d Translations: Update Korean
Currently translated at 51.4% (3036 of 5900 strings)

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

powered by weblate
2025-06-11 09:40:37 +02:00
조정화 5f828127bf Translations: Update Korean
Currently translated at 49.8% (2943 of 5900 strings)

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

powered by weblate
2025-06-11 09:40:37 +02:00
Michael Dao c5b3093f20 Translations: Update Vietnamese
Currently translated at 89.1% (5261 of 5900 strings)

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

powered by weblate
2025-06-11 09:40:37 +02:00
Richard Schreiber ae4073b3e4 [A11y] improve cart renew confirmation (#5206)
* [A11y] improve cart renew confirmation

* revert time

* add inline-dialog to cart-renewal-button so confirm-button has interactive meaning
2025-06-11 08:58:26 +02:00
Richard Schreiber 362ac8de6f [A11y] Widget: pass doc title in overlay to iframe.title (#5210) 2025-06-10 20:41:51 +02:00
Richard Schreiber cced9cd768 Widget: remove role=alertdialog for checkout overlay as it is to obtrusive in NVDA (#5211) 2025-06-10 20:41:23 +02:00
Richard Schreiber dfb45e13ca [A11y] Widget: make inputs min-height instead of fixed height (#5216) 2025-06-10 20:40:52 +02:00
Richard Schreiber 23489f50f8 [A11y] Widget: change calendar table aria-label to labelledby (#5217) 2025-06-10 20:40:33 +02:00
Richard Schreiber 80148a8435 [A11y] Widget: move dialog-focus to close-button (#5221) 2025-06-10 20:39:43 +02:00
Richard Schreiber 9f49b7747c [A11y] Checkout: fix semantics for addon-list, etc. (#5212) 2025-06-10 20:39:16 +02:00
Richard Schreiber b75f8bf893 Widget: fix loading spinner not showing on API-request (#5228)
* Widget: fix loading spinner not showing while API-request

* remove not needed showModal as it is handled be frame_loading-watcher

* add double check if dialog is open before closing it
2025-06-10 20:35:11 +02:00
Richard Schreiber d53af424cf Widget: fix prefill 1 with variation-product (#5229) 2025-06-10 20:34:47 +02:00
Richard Schreiber 24c02751cc Fix phone tel-country-code label and autocomplete (#5227)
* Fix phone tel-country-code label and autocomplete

* Add autocomplete sectioning for MultiWidget
2025-06-10 20:34:08 +02:00
dependabot[bot] 2f7a00e660 Update protobuf requirement from ==6.30.* to ==6.31.* (#5222) 2025-06-10 15:17:32 +02:00
dependabot[bot] 767b01be9a Update pytest requirement from ==8.3.* to ==8.4.* (#5200)
Updates the requirements on [pytest](https://github.com/pytest-dev/pytest) to permit the latest version.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.3.0.dev0...8.4.0)

---
updated-dependencies:
- dependency-name: pytest
  dependency-version: 8.4.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-10 15:17:20 +02:00
dependabot[bot] f9acefc0f9 Update pypdf requirement from ==5.4.* to ==5.6.* (#5201) 2025-06-10 15:17:05 +02:00
Tim Maurizio Dullaart 234a3d0db1 Translations: Update Dutch
Currently translated at 100.0% (252 of 252 strings)

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

powered by weblate
2025-06-10 15:09:45 +02:00
Tim Maurizio Dullaart b7228ff5b8 Translations: Update Dutch
Currently translated at 100.0% (5900 of 5900 strings)

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

powered by weblate
2025-06-10 15:09:45 +02:00
Michael Dao 053c713a2a Translations: Update Vietnamese
Currently translated at 24.5% (1448 of 5900 strings)

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

powered by weblate
2025-06-10 15:09:45 +02:00
Michael Dao 6959dca7c1 Translations: Update Vietnamese
Currently translated at 23.7% (1404 of 5900 strings)

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

powered by weblate
2025-06-10 15:09:45 +02:00
Michael Dao 87312c9d8a Translations: Update Vietnamese
Currently translated at 100.0% (252 of 252 strings)

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

powered by weblate
2025-06-10 15:09:45 +02:00
Michael Dao 4b697b9244 Translations: Update Vietnamese
Currently translated at 3.0% (181 of 5900 strings)

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

powered by weblate
2025-06-10 15:09:45 +02:00
Michael Dao cc55aba2e6 Translations: Update Vietnamese
Currently translated at 60.3% (152 of 252 strings)

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

powered by weblate
2025-06-10 15:09:45 +02:00
Michael Dao fbbc6502f3 Translations: Update Vietnamese
Currently translated at 2.6% (156 of 5900 strings)

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

powered by weblate
2025-06-10 15:09:45 +02:00
Michael Dao 62b3af2197 Translations: Update Vietnamese
Currently translated at 2.5% (150 of 5900 strings)

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

powered by weblate
2025-06-10 15:09:45 +02:00
Francisco Rosa 177717d594 Translations: Update Portuguese
Currently translated at 7.1% (18 of 252 strings)

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

powered by weblate
2025-06-10 15:09:45 +02:00
Francisco Rosa 2f2991105a Translations: Update Portuguese
Currently translated at 5.2% (309 of 5900 strings)

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

powered by weblate
2025-06-10 15:09:45 +02:00
조정화 d03af3ce06 Translations: Update Korean
Currently translated at 97.6% (246 of 252 strings)

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

powered by weblate
2025-06-10 15:09:45 +02:00
조정화 6b95bfbc96 Translations: Update Korean
Currently translated at 48.6% (2868 of 5900 strings)

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

powered by weblate
2025-06-10 15:09:45 +02:00
Renne Rocha 0f4d5b639d Translations: Update Portuguese (Brazil)
Currently translated at 92.0% (5430 of 5900 strings)

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

powered by weblate
2025-06-10 15:09:45 +02:00
Anarion Dunedain 53ebee37fe Translations: Update Polish
Currently translated at 99.0% (5846 of 5900 strings)

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

powered by weblate
2025-06-10 15:09:45 +02:00
Richard Schreiber 572973b5c0 Remove fade-in for dialogs to remove flickering when showing multiple dialogs in a row (#5208) 2025-06-10 14:12:26 +02:00
Richard Schreiber ab72abea0a [A11y] add autocomplete to customer forms email input (#5214) 2025-06-10 12:54:25 +02:00
Raphael Michel c53fc8df4e Developer docs: Remove some ancient history (#5224) 2025-06-10 12:20:41 +02:00
luelista 87fb3d2df8 Event timeline: add direct links, payment provider availability (Z#23195903) (#5209)
* link directly to tabs/fields
* add missing payment provider availability_start dates
2025-06-05 12:59:26 +02:00
Richard Schreiber 6aa3747403 Fix sneak-peek missing inert-attribute (#5207) 2025-06-03 21:49:59 +02:00
Raphael Michel d255c40a0b [A11y] Do not set autocomplete section if autocomplete is off (#5194) 2025-06-03 11:08:17 +02:00
Richard Schreiber f600200ec6 [A11y] improve questions step (#5199)
* [A11y] fix copy-answer buttons being inside interactive summary

* fix legends missing fieldsets

* indent explanation-texts

* Do not indent explanation, move copy-button after explanation

* fix code indent

* remove unneccessary change
2025-06-03 10:06:40 +02:00
dependabot[bot] 3f9b52ad0c Bump @babel/preset-env in /src/pretix/static/npm_dir (#5190)
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.27.1 to 7.27.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.2/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-version: 7.27.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 18:42:08 +02:00
Phin Wolkwitz 36c0acc574 Fix unavailable input options (Z#23194875) (#5178)
* Fix unavailable input options

* Fix it also for items with variations

* Fix it also for items with variations
2025-06-02 18:41:47 +02:00
dependabot[bot] ac2f2e073e Update pytest-xdist requirement from ==3.6.* to ==3.7.* (#5186)
Updates the requirements on [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) to permit the latest version.
- [Release notes](https://github.com/pytest-dev/pytest-xdist/releases)
- [Changelog](https://github.com/pytest-dev/pytest-xdist/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-xdist/compare/v3.6.0...v3.7.0)

---
updated-dependencies:
- dependency-name: pytest-xdist
  dependency-version: 3.7.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 17:48:31 +02:00
dependabot[bot] 75215b64e1 Update aiohttp requirement from ==3.11.* to ==3.12.* (#5187)
---
updated-dependencies:
- dependency-name: aiohttp
  dependency-version: 3.12.4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 17:48:17 +02:00
dependabot[bot] 54e109251c Bump @babel/core from 7.27.1 to 7.27.4 in /src/pretix/static/npm_dir (#5191)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.27.1 to 7.27.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.4/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-version: 7.27.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 17:48:00 +02:00
Hijiri Umemoto 3180bd8a6e Translations: Update Japanese
Currently translated at 96.4% (243 of 252 strings)

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

powered by weblate
2025-06-02 17:47:50 +02:00
Hijiri Umemoto c271c6dea8 Translations: Update Japanese
Currently translated at 99.3% (5862 of 5900 strings)

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

powered by weblate
2025-06-02 17:47:50 +02:00
Richard Schreiber 3a48279b22 [A11y] add group labelling to single input name-widget (#5195) 2025-06-02 15:53:35 +02:00
Richard Schreiber 0ee451560a [A11y] fix organizer event view navigation missing aria-current (#5196)
* [A11y] fix organizer event view navigation

* Update src/pretix/presale/templates/pretixpresale/fragment_calendar_nav.html

Co-authored-by: Richard Schreiber <schreiber@rami.io>

---------

Co-authored-by: Raphael Michel <michel@rami.io>
2025-06-02 15:53:11 +02:00
Richard Schreiber f0c95c4b03 [A11y] fix color contrast on hover for .active default-buttons (#5198) 2025-06-02 15:52:42 +02:00
Richard Schreiber 5866162932 [A11y] change organizer page-titles based calendar-view (#5197)
* [A11y] change organizer page-titles based calendar-view

* add current date to title as in h2
2025-06-02 15:52:21 +02:00
Raphael Michel f9c0baf369 Bump version to 2025.6.0.dev0 2025-06-02 12:16:44 +02:00
Richard Schreiber d97f203d70 [A11y] fix error page focus outline (#5193) 2025-06-02 12:15:28 +02:00
Raphael Michel 0ef5385b99 Bump version to 2025.5.0 2025-05-30 13:40:06 +02:00
Richard Schreiber 66a4a34383 [A11y] fix giftcard-checkout error messages (#5175)
* [A11y] fix giftcard-checkout error messages

* move validation to payment_form

* Update checkout_payment.html

* move already-used check to clean as well

* fix tests

* fix code style issue

* fix giftcard-payment in redeem-view

* Fix responsiveness on checkout

* Fix paying for existing orders

* fix cart.py for new GiftCardPaymentForm-signature

* fix order_tests

---------

Co-authored-by: Raphael Michel <michel@rami.io>
2025-05-30 13:29:33 +02:00
Raphael Michel 1752b2f037 Do not allow to bulk-set empty names for subevents (Z#23194943) (#5184) 2025-05-30 13:29:18 +02:00
CVZ-es e6dd24b9d5 Translations: Update Spanish
Currently translated at 100.0% (252 of 252 strings)

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

powered by weblate
2025-05-30 13:17:26 +02:00
CVZ-es 2c7196d996 Translations: Update Spanish
Currently translated at 100.0% (5900 of 5900 strings)

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

powered by weblate
2025-05-30 13:17:26 +02:00
Raphael Michel 99e69ef4a6 Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (5900 of 5900 strings)

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

powered by weblate
2025-05-30 13:17:26 +02:00
Raphael Michel 03ce0d6817 Translations: Update German
Currently translated at 100.0% (5900 of 5900 strings)

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

powered by weblate
2025-05-30 13:17:26 +02:00
CVZ-es 509500f100 Translations: Update Spanish
Currently translated at 99.8% (5894 of 5900 strings)

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

powered by weblate
2025-05-30 13:17:26 +02:00
Raphael Michel 165410c2f5 Translations: Update German
Currently translated at 100.0% (252 of 252 strings)

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

powered by weblate
2025-05-30 13:17:26 +02:00
CVZ-es 875da30238 Translations: Update Spanish
Currently translated at 99.8% (5890 of 5900 strings)

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

powered by weblate
2025-05-30 13:17:26 +02:00
Raphael Michel df1be0bf86 Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (252 of 252 strings)

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

powered by weblate
2025-05-30 13:17:26 +02:00
Raphael Michel 25605d294b Translations: Update German (informal) (de_Informal)
Currently translated at 99.8% (5892 of 5900 strings)

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

powered by weblate
2025-05-30 13:17:26 +02:00
CVZ-es 0877da3c58 Translations: Update Spanish
Currently translated at 99.7% (5888 of 5900 strings)

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

powered by weblate
2025-05-30 13:17:26 +02:00
CVZ-es f9d1a89950 Translations: Update French
Currently translated at 100.0% (252 of 252 strings)

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

powered by weblate
2025-05-30 13:17:26 +02:00
CVZ-es 1fb29bbe85 Translations: Update French
Currently translated at 100.0% (5900 of 5900 strings)

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

powered by weblate
2025-05-30 13:17:26 +02:00
Raphael Michel e01b8251ce Translations: Update German
Currently translated at 99.6% (251 of 252 strings)

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

powered by weblate
2025-05-30 13:17:26 +02:00
Raphael Michel 295c043375 Translations: Update German
Currently translated at 99.8% (5892 of 5900 strings)

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

powered by weblate
2025-05-30 13:17:26 +02:00
Richard Schreiber 001780e4a0 [A11y] add aria-label to inline seat.svg icon (#5183) 2025-05-30 12:57:09 +02:00
Raphael Michel c7ca7ced6b Update po files
[CI skip]

Signed-off-by: Raphael Michel <michel@rami.io>
2025-05-30 12:36:09 +02:00
dependabot[bot] 12236cb8ed Update sentry-sdk requirement from ==2.27.* to ==2.29.* (#5127)
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.27.0...2.29.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-30 11:31:28 +02:00
dependabot[bot] 63f361f259 Update pycryptodome requirement from ==3.22.* to ==3.23.* (#5138)
Updates the requirements on [pycryptodome](https://github.com/Legrandin/pycryptodome) to permit the latest version.
- [Release notes](https://github.com/Legrandin/pycryptodome/releases)
- [Changelog](https://github.com/Legrandin/pycryptodome/blob/master/Changelog.rst)
- [Commits](https://github.com/Legrandin/pycryptodome/compare/v3.22.0...v3.23.0)

---
updated-dependencies:
- dependency-name: pycryptodome
  dependency-version: 3.23.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-30 11:31:12 +02:00
Raphael Michel 30e5214358 Update SECURITY.md 2025-05-29 10:46:32 +02:00
luelista fe7a076dd4 Remove unused form.has-seating classes (#5179)
Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-05-28 18:11:54 +02:00
luelista 0f4a767b58 Fix form.has-seating class in voucher.html (#5180) 2025-05-28 18:10:11 +02:00
Richard Schreiber e8ff743b76 Improve wording for cart-renew dialog (#5174)
* Improve wording for cart-renew dialog

* remove duplication of static texts for dialog

Co-authored-by: luelista <weller@rami.io>

* Fix typo

Co-authored-by: Raphael Michel <michel@rami.io>

* Apply suggestions from code review

Co-authored-by: Richard Schreiber <schreiber@rami.io>

---------

Co-authored-by: luelista <weller@rami.io>
Co-authored-by: Raphael Michel <michel@rami.io>
2025-05-28 17:36:37 +02:00
Richard Schreiber fe0b8c9f97 Simplify empty add-to-cart check (#5177) 2025-05-28 17:30:15 +02:00
Richard Schreiber 8ad0944dcf Fix widget v2 deployment updateassets (#5176)
* Fix widget v2 deployment updateassets

* fix code style issues
2025-05-28 15:49:05 +02:00
Richard Schreiber 92f7456eca Widget: add versioning support and add v2 with improved a11y-support (#5136)
* Add support for versioning widget.js

* add versionable css

* add version deprecation + redirect

* use dynamic template_path instead of dynamic css_path

* remove dummy code from widget.v1.scss

* fix typo

* [A11y] fix input border & focus style (#5149)

* [A11y] fix input border & focus style

* Fix double semi-colon

* [A11y] make collapse-indicator a button (#5150)

* Fix source order for cart-exists-message (#5152)

* [A11y] underline links (#5151)

* [A11y] Move modal-dialogs to HTMLDialogElement (#5147)

* [A11y] move widget/iframe to html-dialog

* make lightbox a dialog

* move error-alert to dialog

* re-add crossorigin

* fix esc-handling and move animation to icon to enable focusing the button

* fix code-style issues

* block canceling loading iframe

* Escape/cancel blocking fix for Chrome

* add round focus-outline when dialog is loading

* Widget v2: change voucher-link to hash-based link (#5161)

* Fix variants toggle-button being submit-button

* Widget v2: make single-item-select button and always show custom-spinners (#5165)

* Widget v2: make single-item-select=button default

* remove native-spinners and single_item_select

* Stop suggesting old parameter

---------

Co-authored-by: Raphael Michel <michel@rami.io>

* Widget v2: add filter button to events metadata-filter (#5162)

* Widget v2: do not underline events in list and calendar (#5163)

* Fix checkbox button missing border radius (#5158)

* Widget v2: turn add-to-cart-button into resume-button if cart-exists and no items selected (#5160)

* Widget v2: make cart-alert live=polite

* Add resume-button if cart-exists and no items selected

* fix error handling with new-tab and later returning to old window

* Fix cart-message button being full height

* fix amount_selected recalc

* Fix broken v-model

* fix merge

* Widget v2: Remove link from variation-product title (#5159)

* Remove link from variation-product, focus associated input

* open variations onclick on product-title

* clickable elements should be focussable and interactive, so better remove click-handler on product-title

* Widget v2: Fix calendar events color contrast (#5164)

* Widget v2: Fix calendar events color contrast

* fix status-bubbles in list-view

* fix color in mobile

* add striped-background to calendar and week

* improve display of calendar for super small screens

* Fix meta-filter legend not being screen-reader accessible

* update version_default to 2

Co-authored-by: Raphael Michel <michel@rami.io>

---------

Co-authored-by: Raphael Michel <michel@rami.io>
2025-05-28 15:02:39 +02:00
Raphael Michel e46e689f01 Allow to add declaration of accessibility (#5140)
* Allow to add declaration of accessibility

* add fallback for empty accessibility_title

* unify label format (not "Title for")

* move title to top and set helptext before text

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-05-28 13:23:04 +02:00
Martin Gross 84a909b889 Translations: Update Korean
Currently translated at 43.3% (2552 of 5893 strings)

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

powered by weblate
2025-05-28 13:22:53 +02:00
조정화 bacfe37686 Translations: Update Korean
Currently translated at 98.7% (242 of 245 strings)

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

powered by weblate
2025-05-28 13:22:53 +02:00
조정화 5ec88f48da Translations: Update Korean
Currently translated at 43.3% (2552 of 5893 strings)

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

powered by weblate
2025-05-28 13:22:53 +02:00
Renne Rocha 75a2418702 Translations: Update Portuguese (Brazil)
Currently translated at 92.1% (5429 of 5893 strings)

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

powered by weblate
2025-05-28 13:22:53 +02:00
Yasunobu YesNo Kawaguchi 4c66a140e7 Translations: Update Japanese
Currently translated at 99.4% (5861 of 5893 strings)

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

powered by weblate
2025-05-28 13:22:53 +02:00
Raphael Michel c10e96795f Widget: Respect order_max of voucher (#5167)
* Widget: Respect order_max of voucher

* fix tests, make voucher.max_usages explicit

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-05-28 13:21:21 +02:00
Richard Schreiber 72b39932b7 Fix info-row img not being scaled correctly (#5173)
* Fix info-row img not being scaled correctly

* improve centering when fully colored img-icon is used
2025-05-28 11:44:58 +02:00
Raphael Michel 5fb1fc23ce Refactor stubs for gettext JS function (#5170) 2025-05-27 17:24:04 +02:00
Richard Schreiber 20de9830db Remove unused renewed-parameter in draw_deadline 2025-05-27 13:40:21 +02:00
Raphael Michel c78c4cdef8 Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (245 of 245 strings)

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

powered by weblate
2025-05-27 12:48:29 +02:00
Raphael Michel ba3dd5b4b6 Translations: Update German
Currently translated at 100.0% (245 of 245 strings)

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

powered by weblate
2025-05-27 12:48:29 +02:00
Raphael Michel 08cbc35c72 Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (5893 of 5893 strings)

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

powered by weblate
2025-05-27 12:48:29 +02:00
Raphael Michel 205f2867f8 Translations: Update German
Currently translated at 100.0% (5893 of 5893 strings)

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

powered by weblate
2025-05-27 12:48:29 +02:00
Raphael Michel 3500bdad32 Translations: Update German
Currently translated at 100.0% (5893 of 5893 strings)

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

powered by weblate
2025-05-27 12:48:29 +02:00
Raphael Michel 52a3941864 Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (5893 of 5893 strings)

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

powered by weblate
2025-05-27 12:48:29 +02:00
Raphael Michel 8bc7af38b5 Translations: Extend wordlist 2025-05-27 12:42:25 +02:00
Raphael Michel 21fdab45ad Update po files
[CI skip]

Signed-off-by: Raphael Michel <michel@rami.io>
2025-05-27 12:15:38 +02:00
Raphael Michel 2507db4143 Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (5891 of 5891 strings)

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

powered by weblate
2025-05-27 12:12:50 +02:00
Raphael Michel a2d9b404a1 Translations: Update German
Currently translated at 100.0% (5891 of 5891 strings)

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

powered by weblate
2025-05-27 12:12:50 +02:00
Raphael Michel 9954c07408 Translations: Update German
Currently translated at 99.8% (5884 of 5891 strings)

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

powered by weblate
2025-05-27 12:12:50 +02:00
Raphael Michel 4895fcd7f7 Translations: Update German (informal) (de_Informal)
Currently translated at 99.8% (5884 of 5891 strings)

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

powered by weblate
2025-05-27 12:12:50 +02:00
Phin Wolkwitz 4f4dda7f21 Translations: Update German (informal) (de_Informal)
Currently translated at 99.8% (5884 of 5891 strings)

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

powered by weblate
2025-05-27 12:12:50 +02:00
Raphael Michel 5f7a7c3953 Translations: Update German
Currently translated at 99.8% (5883 of 5891 strings)

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

powered by weblate
2025-05-27 12:12:50 +02:00
Phin Wolkwitz a2d7efe7f5 Translations: Update German
Currently translated at 99.8% (5883 of 5891 strings)

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

powered by weblate
2025-05-27 12:12:50 +02:00
CVZ-es 9a691ccbe6 Translations: Update Spanish
Currently translated at 100.0% (243 of 243 strings)

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

powered by weblate
2025-05-27 12:12:50 +02:00
CVZ-es 2de4377cc6 Translations: Update Spanish
Currently translated at 100.0% (5891 of 5891 strings)

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

powered by weblate
2025-05-27 12:12:50 +02:00
CVZ-es 37d0414de0 Translations: Update French
Currently translated at 100.0% (243 of 243 strings)

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

powered by weblate
2025-05-27 12:12:50 +02:00
CVZ-es 2f192ab739 Translations: Update French
Currently translated at 100.0% (5891 of 5891 strings)

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

powered by weblate
2025-05-27 12:12:50 +02:00
Raphael Michel 55278807bf Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (243 of 243 strings)

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

powered by weblate
2025-05-27 12:12:50 +02:00
Raphael Michel 988989ab20 Translations: Update German
Currently translated at 100.0% (243 of 243 strings)

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

powered by weblate
2025-05-27 12:12:50 +02:00
Raphael Michel 655c504598 Revert "Update po files"
This reverts commit b304e00f48.
2025-05-27 11:44:52 +02:00
Raphael Michel b304e00f48 Update po files
[CI skip]

Signed-off-by: Raphael Michel <michel@rami.io>
2025-05-27 10:32:06 +02:00
Richard Schreiber b0d10e4b7d [A11y] fix quantity labels not being visible (#5166)
* [A11y] fix quantity label visible

* fix missing ids for headline and description

* add product-legend for variants as well
2025-05-27 10:17:35 +02:00
Richard Schreiber 590acfe568 Fix asynctask_check_url 2025-05-27 10:03:49 +02:00
Richard Schreiber f8a5cc1bb4 Fix cookieconsent localStorage being null 2025-05-27 09:00:28 +02:00
Richard Schreiber 7979514efd [A11y] fix fallback powered by 2025-05-27 08:55:36 +02:00
Richard Schreiber 2bdad06642 fix missing lightbox styles 2025-05-27 07:59:29 +02:00
luelista 5962536a11 Dialog for cart renewal, async task without page refresh (#5148)
* async_task: deduplicate response handling code

* extend cart without full page reload

* update dialog markup

* fix error response from CartExtend

* refactor asynctask, make sure waitingDialog.show() re-initializes dialog contents

* add cart expiry notification

* add aria references to other dialogs

* improve error handling

* fix error if max_extend=None

* different message for expiring soon and expired carts

* refactor dialog css

* add classes to further dialog elements

* switch extend-cart-dialog and loadingmodal to <dialog>

* Backport simple_block_tag from Django 5.2

* Use simple_block_tag for {% dialog %} tag

* add alertdialog role

* Update src/pretix/static/pretixbase/scss/_dialogs.scss

Co-authored-by: Richard Schreiber <schreiber@rami.io>

* fix mobile dialog styles not being overwritten

* asynctask dialog: prevent close by escape on chrome

* remove dynamic aria-live from #cart-deadline

dynamic aria-live is generally not well supported and as we have the dialog now anyways, we can remove it

* move continue-button to right

* Update src/pretix/static/pretixpresale/js/ui/cart.js

Co-authored-by: Richard Schreiber <schreiber@rami.io>

* Fix CSS for old-style dialog

* fix heading display/level

* align dialogs at the top as they originally were

* fix </div> from merge-conflict

* fix missing grow for dialog-content

* improve cart-extend-button ui

* do not show cart-extend-dialog onload

* improve message if 0 minutes

* do not save messae in session if ajax_dont_redirect

* add ajax_dont_redirect to async_task_check_url

* improve draw_deadline to only update #cart-deadline if necessary

* add renew-confirmation-message

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
Co-authored-by: Raphael Michel <michel@rami.io>
2025-05-27 07:17:50 +02:00
Richard Schreiber fdbcffd5fd [A11y] make location & time icons role=img with labels (#4955)
* [A11y] use icon’s title-attribute instead of hidden text for events location and time

* Fix icons with role=img

* simplify css
2025-05-26 15:13:00 +02:00
Raphael Michel 902527f8aa Cookie consent: Proper fix for zero-provider situations (#5153) 2025-05-23 21:39:59 +02:00
Richard Schreiber 37af6edeab [A11y] move lightbox to native dialog (#5137)
* [A11y] move lightbox to native dialog

* fix width-sizing-issue

* move button label to aria-label

* increase padding for lightbox, so button does not overlay image

* Remove unused JS

* add close on backdrop-click

---------

Co-authored-by: Raphael Michel <michel@rami.io>
2025-05-23 10:19:03 +02:00
Richard Schreiber 6e306055cb [A11y] fix contrast for default success color (#5143)
* [A11y] fix contrast for default success color

* change success color in settings as well
2025-05-23 10:15:55 +02:00
Raphael Michel 3a195b6ef9 Waiting list export: Add product IDs (Z#23192538) (#5134) 2025-05-22 21:42:14 +02:00
luelista 44c5217e9e correctly specify has-seating for subevents (#5156) 2025-05-22 19:25:48 +02:00
luelista 38d92bb142 Fix voucher redeem form (#5155) 2025-05-22 17:58:38 +02:00
Martin Gross 465171f323 WebAuthN: Replace sr-only with hidden css-class 2025-05-22 17:13:44 +02:00
Richard Schreiber 7756b6745c [A11y] move timezone info inline instead of tooltip (#5130)
* [A11y] move timezone info inline instead of tooltip

* Update text as suggested from code review

Co-authored-by: Raphael Michel <michel@rami.io>

* Rebase migration

* Delete src/pretix/base/migrations/0280_event_is_remote.py

---------

Co-authored-by: Raphael Michel <michel@rami.io>
2025-05-22 16:48:11 +02:00
Raphael Michel 073c20e975 Fix JS error on shops without cookie consent 2025-05-22 16:38:35 +02:00
Raphael Michel c2d5d40be6 OrderChangeManager: Respect addons on cancellation check (Z#23193427) (#5132)
* OrderChangeManager: Respect addons on cancellation check (Z#23193427)

* Update src/tests/base/test_orders.py

Co-authored-by: luelista <weller@rami.io>

---------

Co-authored-by: luelista <weller@rami.io>
2025-05-22 16:04:50 +02:00
Richard Schreiber 21e5620f3f [A11y] make waitinglist-link a button (#5142) 2025-05-22 15:33:26 +02:00
Martin Gross 105b48829e Fix typo 2025-05-22 15:07:07 +02:00
Raphael Michel b09f1bf5ca Update po files
[CI skip]

Signed-off-by: Raphael Michel <michel@rami.io>
2025-05-22 14:49:15 +02:00
luelista d616b4d648 Fix incorrect form tags on checkout_confirm.html (#5146) 2025-05-22 12:54:59 +02:00
Martin Gross 54e222b527 Checkout: Center-align step-done fa (#5145)
counteract change introduced in b638c00952
2025-05-22 12:49:46 +02:00
luelista 6542b4f336 Fix nothing-to-add condition (#5144)
Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-05-22 11:26:39 +02:00
Martin Gross 5659cc0cf8 Fix spelling/apostrophe 2025-05-22 10:37:44 +02:00
Raphael Michel 4134fd8b36 Update po files
[CI skip]

Signed-off-by: Raphael Michel <michel@rami.io>
2025-05-21 21:50:49 +02:00
luelista a84beef269 [A11y] Cart renewal (#5109)
Allow customers to extend their cart reservation up to 11 times the configured reservation time
2025-05-21 17:02:21 +02:00
Richard Schreiber 7c59ec51ca [A11y] switch modal dialogs to <dialog> tag (#5128)
* add templatetag {% dialog %} using <dialog> tag
* new dialog style
* show dialog when empty add-to-cart instead of disabling the button
* update cookieconsent-modal to use new template tag
2025-05-21 16:52:49 +02:00
Richard Schreiber bf47da521c [A11y] add heading-level to product list (#5121) 2025-05-21 13:31:05 +02:00
Richard Schreiber e3b74249c9 [A11y] fix skip-link z-index (#5123) 2025-05-21 13:30:39 +02:00
Richard Schreiber 1791a63f87 [A11y] Do not underline event-titles in organizer’s event-list (#5124) 2025-05-21 13:26:27 +02:00
Raphael Michel f931362bc5 Add missing flag for Basque language 2025-05-21 12:57:19 +02:00
Raphael Michel a836dc1588 Add Hebrew language 2025-05-21 12:52:53 +02:00
Raphael Michel 8b6685dd89 Translations: Update Hebrew
Currently translated at 100.0% (5885 of 5885 strings)

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

powered by weblate
2025-05-21 12:47:42 +02:00
roi belotsercovsky 7463e41be8 Translations: Update Hebrew
Currently translated at 0.0% (0 of 5869 strings)

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

powered by weblate
2025-05-21 12:47:42 +02:00
Raphael Michel 31b2a9026d Translations: Add Hebrew 2025-05-21 12:47:42 +02:00
Raphael Michel 1d49d7cbf7 Translations: Delete Hebrew 2025-05-21 12:47:42 +02:00
조정화 30570fe287 Translations: Update Korean
Currently translated at 39.5% (2322 of 5869 strings)

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

powered by weblate
2025-05-21 12:47:42 +02:00
roi belotsercovsky 00508dea99 Translations: Update Hebrew
Currently translated at 0.1% (1 of 5869 strings)

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

powered by weblate
2025-05-21 12:47:42 +02:00
Patrick Chilton 6be4e2bd7b Translations: Update Hungarian
Currently translated at 10.9% (642 of 5869 strings)

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

powered by weblate
2025-05-21 12:47:42 +02:00
bstramsek b014446399 Translations: Update Slovenian
Currently translated at 39.3% (96 of 244 strings)

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

powered by weblate
2025-05-21 12:47:42 +02:00
David 5053d4db6b Translations: Update Czech
Currently translated at 96.3% (235 of 244 strings)

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

powered by weblate
2025-05-21 12:47:42 +02:00
David ae2cc7a04a Translations: Update Czech
Currently translated at 73.6% (4322 of 5869 strings)

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

powered by weblate
2025-05-21 12:47:42 +02:00
Tobias Kunze d49141c05d Use he as language code for Hebrew (#5129) 2025-05-21 12:42:51 +02:00
Richard Schreiber 0bbb136d67 [A11y] Fix checkbox:focus style (#5131) 2025-05-21 12:00:34 +02:00
Richard Schreiber d62152beaf [A11y] disable custom tooltip (#5115) 2025-05-16 14:14:21 +02:00
Martin Gross 2ce9584a6f PPv2: Wrap execute_payment to properly handle PaymentExceptions in atomic transactions 2025-05-15 16:58:30 +02:00
Richard Schreiber f1fc4cb8a4 [A11y] logout-button make label visible (#5114)
* [A11y] logout-button make label visible

* add icon to sign in
2025-05-15 13:21:55 +02:00
Richard Schreiber bf3ee608ba [A11y] Fix cookie-consent-form labels + help-text markup (#5113)
* [A11y] Fix cookie-consent-form labels + help-text markup

* remove method=dialog for now
2025-05-15 13:21:04 +02:00
Richard Schreiber 6b331888e9 [A11y] Fix missing errors on empty inputs on checkout-login (#5104) 2025-05-15 13:19:25 +02:00
Richard Schreiber 225b2452bd [A11y] underline inline-links (#5102) 2025-05-15 12:32:23 +02:00
Richard Schreiber e7d024b146 [A11y] change footer poweredby-link to pretix.eu if no poweredby_url (#5111) 2025-05-15 12:30:48 +02:00
Richard Schreiber 0af94c3712 [A11y] change customer-pages dl to list of article (#5112)
* [A11y] change customer-pages dl to list of article

* fix small font-size

* change customer memberships as well
2025-05-15 12:30:21 +02:00
Raphael Michel 3007b89d9b [A11y] Adjust thresholds of color picker (#5110)
* [A11y] Adjust thresholds of color picker

* Fix typo
2025-05-15 12:24:23 +02:00
Richard Schreiber 9ee50a28a1 [A11y] Widget fix td-cells being clickable but not focusable (#5106)
* [A11y] Widget fix td-cells being clickable but not focusable

* improve keyboard nav
2025-05-15 10:27:43 +02:00
Raphael Michel 4dc5014947 Grammar fix (Z#23191895) 2025-05-15 09:46:28 +02:00
Raphael Michel ebf2039a4d Translations: Update Korean
Currently translated at 37.9% (2230 of 5869 strings)

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

powered by weblate
2025-05-15 09:44:51 +02:00
anonymous f201ab8884 Translations: Update Korean
Currently translated at 37.9% (2226 of 5869 strings)

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

powered by weblate
2025-05-15 09:44:51 +02:00
Raphael Michel e20cb7649d Translations: Update Korean
Currently translated at 37.9% (2226 of 5869 strings)

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

powered by weblate
2025-05-15 09:44:51 +02:00
조정화 e6cab37f12 Translations: Update Korean
Currently translated at 37.8% (2223 of 5869 strings)

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

powered by weblate
2025-05-15 09:44:51 +02:00
조정화 0659338392 Translations: Update Korean
Currently translated at 34.1% (2002 of 5869 strings)

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

powered by weblate
2025-05-15 09:44:51 +02:00
Zona Vip a0f0e0ca48 Translations: Update Spanish
Currently translated at 100.0% (244 of 244 strings)

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

powered by weblate
2025-05-15 09:44:51 +02:00
Zona Vip 59af0bbfb8 Translations: Update Spanish
Currently translated at 100.0% (5869 of 5869 strings)

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

powered by weblate
2025-05-15 09:44:51 +02:00
Richard Schreiber 6766d649f5 [A11y] change event-list from dl to articles with h3 (#5085) 2025-05-14 21:51:54 +02:00
260 changed files with 152015 additions and 130060 deletions
+4 -2
View File
@@ -2,11 +2,11 @@
## Reporting a vulnerability
If you discover a vulnerability with our software or server systems, please report it to us in private. Do not to attempt to harm our users, customer's data or our system's availability when looking for vulneratbilities.
If you discover a vulnerability with our software or server systems, please report it to us in private. Do not to attempt to harm our users, customer's data or our system's availability when looking for vulnerabilities.
Please contact us at security@pretix.eu with full details and steps to reproduce and allow reasonable time for us to resolve the issue before publishing your findings. If you wish to encrypt your email, you can find our GPG key [here](https://pretix.eu/.well-known/security@pretix.eu.asc).
We're not large enough to run a formal bug bounty program, but if you find a serious vulnerability in our service, we will find a way to show our gratitude.
Please also see our [Responsible disclosure policy](https://docs.pretix.eu/trust/security/disclosure/).
## Version support
@@ -18,3 +18,5 @@ subscribe to our [newsletter](https://pretix.eu/about/en/blog/) in the "News abo
category, we will also send you an email on security issues.
Past security issues are listed [on our website](https://pretix.eu/about/en/security).
Please also see our [Release cycle](https://docs.pretix.eu/trust/lifecycle/release-cycle/) documentation.
-5
View File
@@ -48,11 +48,6 @@ seat objects The assigned se
└ seat_guid string Identifier of the seat within the seating plan
===================================== ========================== =======================================================
.. versionchanged:: 4.14
This ``is_bundled`` attribute has been added and the cart creation endpoints have been updated.
Cart position endpoints
-----------------------
-8
View File
@@ -9,14 +9,6 @@ This page describes special APIs built for ticket scanning apps. For managing ch
please also see :ref:`rest-checkinlists`. The check-in list API also contains endpoints to obtain statistics or log
failed scans.
.. versionchanged:: 4.12
The endpoints listed on this page have been added.
.. versionchanged:: 4.18
The ``source_type`` parameter has been added.
.. _`rest-checkin-redeem`:
Checking a ticket in
-4
View File
@@ -40,10 +40,6 @@ ignore_in_statistics boolean If ``true``, ch
consider_tickets_used boolean If ``true`` (default), tickets checked in on this list will be considered "used" by other functionality, i.e. when checking if they can still be canceled.
===================================== ========================== =======================================================
.. versionchanged:: 4.12
The ``addon_match`` attribute has been added.
.. versionchanged:: 2023.9
The ``ignore_in_statistics`` and ``consider_tickets_used`` attributes have been added.
-6
View File
@@ -34,12 +34,6 @@ password string Can only be set
not be included in any responses.
===================================== ========================== =======================================================
.. versionadded:: 4.0
.. versionchanged:: 4.3
Passwords can now be set through the API during customer creation.
.. versionchanged:: 2024.3
The attribute ``phone`` has been added.
-23
View File
@@ -61,25 +61,6 @@ public_url string The public, cus
Endpoints
---------
.. versionchanged:: 4.0
The ``clone_from`` parameter has been added to the event creation endpoint.
.. versionchanged:: 4.1
The ``with_availability_for`` parameter has been added.
The ``search`` query parameter has been added to filter events by their slug, name, or location in any language.
.. versionchanged:: 4.17
The ``public_url`` field has been added.
.. versionchanged:: 5.0
The ``date_from_before``, ``date_from_after``, ``date_to_before``, and ``date_to_after`` query parameters have been
added.
.. http:get:: /api/v1/organizers/(organizer)/events/
Returns a list of all events within a given organizer the authenticated user/token has access to.
@@ -630,10 +611,6 @@ organizer level.
:statuscode 401: Authentication failure
:statuscode 403: The requested organizer/event does not exist **or** you have no permission to view this resource.
.. versionchanged:: 4.18
The ``readonly`` flag has been added.
.. http:patch:: /api/v1/organizers/(organizer)/events/(event)/settings/
Updates event settings. Note that ``PUT`` is not allowed here, only ``PATCH``.
-5
View File
@@ -47,11 +47,6 @@ acceptor string Organizer slug
this field was added.)
===================================== ========================== =======================================================
.. versionchanged:: 4.20
The ``owner_ticket`` and ``issuer`` attributes of the gift card and the ``info`` and ``acceptor`` attributes of the
gift card transaction resource have been added.
Endpoints
---------
-12
View File
@@ -111,18 +111,6 @@ internal_reference string Customer's refe
===================================== ========================== =======================================================
.. versionchanged:: 4.1
The attributes ``fee_type`` and ``fee_internal_type`` have been added.
.. versionchanged:: 4.1
The attribute ``lines.event_location`` has been added.
.. versionchanged:: 4.6
The attribute ``lines.subevent`` has been added.
.. versionchanged:: 2023.8
The ``event`` attribute has been added. The organizer-level endpoint has been added.
-4
View File
@@ -64,10 +64,6 @@ hide_without_voucher boolean If ``true``, th
meta_data object Values set for event-specific meta data parameters.
===================================== ========================== =======================================================
.. versionchanged:: 4.16
The ``meta_data`` and ``checkin_attention`` attributes have been added.
.. versionchanged:: 2023.10
The ``free_price_suggestion`` attribute has been added.
-22
View File
@@ -211,28 +211,6 @@ bundles list of objects Definition of
meta_data object Values set for event-specific meta data parameters.
======================================= ========================== =======================================================
.. versionchanged:: 4.0
The attributes ``require_membership``, ``require_membership_types``, ``grant_membership_type``, ``grant_membership_duration_like_event``,
``grant_membership_duration_days`` and ``grant_membership_duration_months`` have been added.
.. versionchanged:: 4.4
The attributes ``require_membership_hidden`` attribute has been added.
.. versionchanged:: 4.16
The ``variations[x].meta_data`` and ``variations[x].checkin_attention`` attributes have been added.
The ``personalized`` attribute has been added.
.. versionchanged:: 4.17
The ``validity_*`` attributes have been added.
.. versionchanged:: 4.18
The ``media_policy`` and ``media_type`` attributes have been added.
.. versionchanged:: 2023.10
The ``checkin_text`` and ``variations[x].checkin_text`` attributes have been added.
+4 -56
View File
@@ -114,34 +114,6 @@ plugin_data object Additional data
===================================== ========================== =======================================================
.. versionchanged:: 4.0
The ``customer`` attribute has been added.
.. versionchanged:: 4.1
The ``custom_followup_at`` attribute has been added.
.. versionchanged:: 4.4
The ``item`` and ``variation`` query parameters have been added.
.. versionchanged:: 4.6
The ``subevent`` query parameters has been added.
.. versionchanged:: 4.8
The ``order.fees.id`` attribute has been added.
.. versionchanged:: 4.15
The ``include`` query parameter has been added.
.. versionchanged:: 4.16
The ``valid_if_pending`` attribute has been added.
.. versionchanged:: 2023.8
The ``event`` attribute has been added. The organizer-level endpoint has been added.
@@ -260,10 +232,6 @@ pdf_data object Data object req
plugin_data object Additional data added by plugins.
===================================== ========================== =======================================================
.. versionchanged:: 4.16
The attributes ``blocked``, ``valid_from`` and ``valid_until`` have been added.
.. versionchanged:: 2024.9
The attribute ``print_logs`` has been added.
@@ -756,10 +724,6 @@ Fetching individual orders
Order ticket download
---------------------
.. versionchanged:: 4.10
The API now supports ticket downloads for pending orders if allowed by the event settings.
.. http:get:: /api/v1/organizers/(organizer)/events/(event)/orders/(code)/download/(output)/
Download tickets for an order, identified by its order code. Depending on the chosen output, the response might
@@ -1095,9 +1059,10 @@ Creating orders
prices. Note that this will not include other fees and is calculated once during order generation and will not
be respected automatically when the order changes later.)
* ``_split_taxes_like_products`` (Optional convenience flag. If set to ``true``, your ``tax_rule`` will be ignored
and the fee will be taxed like the products in the order. If the products have multiple tax rates, multiple fees
will be generated with weights adjusted to the net price of the products. Note that this will be calculated once
during order generation and is not respected automatically when the order changes later.)
and the fee will be taxed like the products in the order *unless* the total amount of the positions is zero.
If the products have multiple tax rates, multiple fees will be generated with weights adjusted to the net price
of the products. Note that this will be calculated once during order generation and is not respected automatically
when the order changes later.)
* ``force`` (optional). If set to ``true``, quotas will be ignored.
* ``send_email`` (optional). If set to ``true``, the same emails will be sent as for a regular order, regardless of
@@ -1832,10 +1797,6 @@ Fetching individual positions
Order position ticket download
------------------------------
.. versionchanged:: 4.10
The API now supports ticket downloads for pending orders if allowed by the event settings.
.. http:get:: /api/v1/organizers/(organizer)/events/(event)/orderpositions/(id)/download/(output)/
Download tickets for one order position, identified by its internal ID.
@@ -1888,15 +1849,6 @@ Order position ticket download
Manipulating individual positions
---------------------------------
.. versionchanged:: 4.8
The ``PATCH`` method now supports changing items, variations, subevents, seats, prices, and tax rules.
The ``POST`` endpoint to add individual positions has been added.
.. versionadded:: 4.16
The endpoints to manage blocks have been added.
.. versionchanged:: 2024.9
The API now supports logging ticket and badge prints.
@@ -2226,10 +2178,6 @@ multiple changes to an order at once within one transaction. This makes it possi
attendees in an order without running into conflicts. This interface also offers some possibilities not available
otherwise, such as splitting an order or changing fees.
.. versionchanged:: 4.8
This endpoint has been added to the system.
.. http:post:: /api/v1/organizers/(organizer)/events/(event)/orders/(code)/change/
Performs a change operation on an order. You can supply the following fields:
-4
View File
@@ -25,10 +25,6 @@ public_url string The public, cus
Endpoints
---------
.. versionchanged:: 4.17
The ``public_url`` field has been added.
.. http:get:: /api/v1/organizers/
Returns a list of all organizers the authenticated user/token has access to.
+2 -6
View File
@@ -36,11 +36,6 @@ available_number integer Number of avail
slightly out of date. ``null`` means unlimited.
===================================== ========================== =======================================================
.. versionchanged:: 4.1
The ``with_availability`` query parameter has been added.
Endpoints
---------
@@ -86,7 +81,8 @@ Endpoints
:query string ordering: Manually set the ordering of results. Valid fields to be used are ``id`` and ``position``.
Default: ``position``
:query integer subevent: Only return quotas of the sub-event with the given ID.
:query integer subevent__in: Only return quotas of sub-events with one the given IDs (comma-separated).
:query integer subevent__in: Only return quotas of sub-events with one of the given IDs (comma-separated).
:query integer items__in: Only return quotas that include a product with one of the given IDs (comma-separated).
:query string with_availability: Set to ``true`` to get availability information. Can lead to increased answer times.
:param organizer: The ``slug`` field of the organizer to fetch
:param event: The ``slug`` field of the event to fetch
-4
View File
@@ -6,10 +6,6 @@ Data shredders
pretix and it's plugins include a number of data shredders that allow you to clear personal information from the system.
This page shows you how to use these shredders through the API.
.. versionchanged:: 4.12
This feature has been added to the API.
.. warning::
Unlike the user interface, the API will not force you to download tax-relevant data before you delete it.
-13
View File
@@ -59,15 +59,6 @@ seat_category_mapping object An object mappi
last_modified datetime Last modification of this object
===================================== ========================== =======================================================
.. versionchanged:: 4.15
The ``search`` query parameter has been added to filter sub-events by their name or location in any language.
.. versionchanged:: 5.0
The ``date_from_before``, ``date_from_after``, ``date_to_before``, and ``date_to_after`` query parameters have been
added.
.. versionchanged:: 2023.8.0
For the organizer-wide endpoint, the ``search`` query parameter has been modified to filter sub-events by their parent events slug too.
@@ -75,10 +66,6 @@ last_modified datetime Last modificati
Endpoints
---------
.. versionchanged:: 4.1
The ``with_availability_for`` parameter has been added.
.. http:get:: /api/v1/organizers/(organizer)/events/(event)/subevents/
Returns a list of all sub-events of an event.
-4
View File
@@ -40,10 +40,6 @@ custom_rules object Dynamic rules s
===================================== ========================== =======================================================
.. versionchanged:: 4.6
The ``internal_name`` and ``keep_gross_if_rate_changes`` attributes have been added.
.. versionchanged:: 2023.6
The ``custom_rules`` attribute has been added.
-4
View File
@@ -39,10 +39,6 @@ can_change_vouchers boolean
can_checkin_orders boolean
===================================== ========================== =======================================================
.. versionchanged:: 4.18
The ``can_manage_reusable_media`` permission has been added.
Team member resource
--------------------
-7
View File
@@ -178,13 +178,6 @@ You can then implement a view as you would normally do. It will be automatically
* Your plugin is enabled
* The locale is set correctly
.. versionchanged:: 1.7
The ``event_url()`` wrapper has been added in 1.7 to replace the former ``@event_view`` decorator. The
``event_url()`` wrapper is optional and using ``url()`` still works, but you will not be able to set the
``require_live`` setting any more via the decorator. The ``@event_view`` decorator is now deprecated and
does nothing.
REST API viewsets
-----------------
-1
View File
@@ -10,7 +10,6 @@ Contents:
exporter
ticketoutput
payment
payment_2.0
email
placeholder
invoice
-129
View File
@@ -1,129 +0,0 @@
.. highlight:: python
:linenothreshold: 5
.. _`payment2.0`:
Porting a payment provider from pretix 1.x to pretix 2.x
========================================================
In pretix 2.x, we changed large parts of the payment provider API. This documentation details the changes we made
and shows you how you can make an existing pretix 1.x payment provider compatible with pretix 2.x
Conceptual overview
-------------------
In pretix 1.x, an order was always directly connected to a payment provider for the full life of an order. As long as
an order was unpaid, this could still be changed in some cases, but once an order was paid, no changes to the payment
provider were possible any more. Additionally, the internal state of orders allowed orders only to be fully paid or
not paid at all. This leads to a couple of consequences:
* Payment-related functions (like "execute payment" or "do a refund") always operated on full orders.
* Changing the total of an order was basically impossible once an order was paid, since there was no concept of
partial payments or partial refunds.
* Payment provider plugins needed to take complicated steps to detect cases that require human intervention, like e.g.
* An order has expired, no quota is left to revive it, but a payment has been received
* A payment has been received for a canceled order
* A payment has been received for an order that has already been paid with a different payment method
* An external payment service notified us of a refund/dispute
We noticed that we copied and repeated large portions of code in all our official payment provider plugins, just
to deal with some of these cases.
* Sometimes, there is the need to mark an order as refunded within pretix, without automatically triggering a refund
with an external API. Every payment method needed to implement a user interface for this independently.
* If a refund was not possible automatically, there was no way user to track which payments actually have been refunded
manually and which are still left to do.
* When the payment with one payment provider failed and the user changed to a different payment provider, all
information about the first payment was lost from the order object and could only be retrieved from order log data,
which also made it hard to design a data shredder API to get rid of this data.
In pretix 2.x, we introduced two new models, :py:class:`OrderPayment <pretix.base.models.OrderPayment>` and
:py:class:`OrderRefund <pretix.base.models.OrderRefund>`. Each instance of these is connected to an order and
represents one single attempt to pay or refund a specific amount of money. Each one of these has an individual state,
can individually fail or succeed, and carries an amount variable that can differ from the order total.
This has the following advantages:
* The system can now detect orders that are over- or underpaid, independent of the payment providers in use.
* Therefore, we can now allow partial payments, partial refunds, and changing paid orders, and automatically detect
the cases listed above and notify the user.
Payment providers now interact with those payment and refund objects more than with orders.
Your to-do list
---------------
Payment processing
""""""""""""""""""
* The method ``BasePaymentProvider.order_pending_render`` has been removed and replaced by a new
``BasePaymentProvider.payment_pending_render(request, payment)`` method that is passed an ``OrderPayment``
object instead of an ``Order``.
* The method ``BasePaymentProvider.payment_form_render`` now receives a new ``total`` parameter.
* The method ``BasePaymentProvider.payment_perform`` has been removed and replaced by a new method
``BasePaymentProvider.execute_payment(request, payment)`` that is passed an ``OrderPayment``
object instead of an ``Order``.
* The function ``pretix.base.services.mark_order_paid`` has been removed, instead call ``payment.confirm()``
on a pending ``OrderPayment`` object. If no further payments are required for this order, this will also
mark the order as paid automatically. Note that ``payment.confirm()`` can still throw a ``QuotaExceededException``,
however it will still mark the payment as complete (not the order!), so you should catch this exception and
inform the user, but not abort the transaction.
* A new property ``BasePaymentProvider.abort_pending_allowed`` has been introduced. Only if set, the user will
be able to retry a payment or switch the payment method when the order currently has a payment object in
state ``"pending"``. This replaces ``BasePaymentProvider.order_can_retry``, which no longer exists.
* The methods ``BasePaymentProvider.retry_prepare`` and ``BasePaymentProvider.order_prepare`` have both been
replaced by a new method ``BasePaymentProvider.payment_prepare(request, payment)`` that is passed an ``OrderPayment``
object instead of an ``Order``. **Keep in mind that this payment object might have an amount property that
differs from the order total, if the order is already partially paid.**
* The method ``BasePaymentProvider.order_paid_render`` has been removed.
* The method ``BasePaymentProvider.order_control_render`` has been removed and replaced by a new method
``BasePaymentProvider.payment_control_render(request, payment)`` that is passed an ``OrderPayment``
object instead of an ``Order``.
* There's no need to manually deal with excess payments or duplicate payments anymore, just setting the ``OrderPayment``
methods to the correct state will do the job.
Creating refunds
""""""""""""""""
* The methods ``BasePaymentProvider.order_control_refund_render`` and ``BasePaymentProvider.order_control_refund_perform``
have been removed.
* Two new boolean methods ``BasePaymentProvider.payment_refund_supported(payment)`` and ``BasePaymentProvider.payment_partial_refund_supported(payment)``
have been introduced. They should be set to return ``True`` if and only if the payment API allows to *automatically*
transfer the money back to the customer.
* A new method ``BasePaymentProvider.execute_refund(refund)`` has been introduced. This method is called using a
``OrderRefund`` object in ``"created"`` state and is expected to transfer the money back and confirm success with
calling ``refund.done()``. This will only ever be called if either ``BasePaymentProvider.payment_refund_supported(payment)``
or ``BasePaymentProvider.payment_partial_refund_supported(payment)`` return ``True``.
Processing external refunds
"""""""""""""""""""""""""""
* If e.g. a webhook API notifies you that a payment has been disputed or refunded with the external API, you are
expected to call ``OrderPayment.create_external_refund(self, amount, execution_date, info='{}')`` on this payment.
This will create and return an appropriate ``OrderRefund`` object and send out a notification. However, it will not
mark the order as refunded, but will ask the event organizer for a decision.
Data shredders
""""""""""""""
* The method ``BasePaymentProvider.shred_payment_info`` is no longer passed an order, but instead **either**
an ``OrderPayment`` **or** an ``OrderRefund``.
-177
View File
@@ -1,177 +0,0 @@
.. spelling:word-list::
AGPL
AGPLv3
GPL
LGPL
Apache
BSD
MIT
CLA
django
i18nfields
hierarkey
rami.io
rami
io
GmbH
License FAQ
===========
.. warning::
This FAQ tries to explain in simpler terms what the license of the pretix open source project does and does not
allow. It is based on our interpretation of the license and is not legal advice. The contents of this page are not
legally binding, only the original text of the license in the `license file`_ is legally binding.
How is pretix licensed?
-----------------------
pretix follows the popular dual licensing model. It is available under the `GNU Affero General Public License 3`_ (AGPL)
plus some additional terms, as well as under a proprietary license ("pretix Enterprise license") on request.
How can it be AGPL if there are additional terms?
-------------------------------------------------
Even though it is fairly unknown, the AGPL's section 7 is titled "Additional Terms" and outlines specific conditions
under which additional terms can be imposed on an AGPL-licensed work. In our case, we add three additional terms.
The first additional term for pretix is an additional **permission**. It allows you to do something that the AGPL would
generally not allow. As it doesn't restrict your freedoms granted by AGPL, if you don't like it, you can ignore it, and
if you distribute pretix further, you can remove it.
The second and third additional term for pretix are additional terms that restrict or specify other provisions of the
license. AGPL specifically requires that these terms can only restrict or specify very specific things and we believe
our additional terms are in compliance with that and are thus valid and may not be removed.
Why did you choose this license model?
--------------------------------------
pretix was born in the open source community and we're deeply committed to building the best open source ticketing
solution in the world. It is important to us that pretix is available with a comprehensive feature set under term that
are compatible with the `Open Source Definition`_. This enables event organizers from all industries and regions
to have access to a self-hosted, privacy-friendly and secure option to host their events.
However, developing and maintaining pretix is a lot of work. Between 2014 and 2021, we've received external
contributions from more than 150 individuals. Not counting translations over 90 % of the development was
done by staff engineers of rami.io GmbH, the company that started pretix. While we're very happy to receive many more
contributions in the future, we also want to ensure that we continue to be able to pay people working on pretix
full-time.
We believe our model creates a good balance between ensuring pretix is available freely as well as protecting our
business interests. Unlike licenses chosen by other projects recently, such as the Server-Side Public License, our
choice does not restrict using pretix for any possible use case, it just sets a few rules that you have to play by
if you do.
What do I need to do if I use pretix unmodified?
------------------------------------------------
If you use pretix without any modifications or plugins, you can use it for whatever you want, as long as you keep
all copyright notices (including the link to pretix at the bottom of the site) intact.
You are also allowed to make copies of the unmodified source code and distribute them to others as long as you keep
all copyright and license information intact.
If you install **plugins**, you must follow the same terms as when using a **modified** version (see below).
What do I need to do if I modify pretix?
----------------------------------------
If you want to modify pretix, you have the right to do so. However, you need to follow the following rules:
* If you **run it for your own events** (events run by you or your company as well as companies from the same
corporate groups) our additional permission allows you to do so **without needing to share your source code
modifications** as long as you keep the link to pretix at the bottom of the site intact.
* If you **run it for others**, for example as part of a Software-as-a-Service offering or a managed hosting service
you **must** make the source code **including all your modifications and all installed plugins** available under the
same license as pretix to every visitor of your site. You need to do so in a prominent place such as a link at the bottom of the
site. You also **must** keep the existing link intact.
You **may not** add additional restrictions on the result as a whole. You **may** add additional permissions, but
only on the parts you added. You **must** make clear which changes you made and you must not give the impression that
your modified version is an official version of pretix.
* If you **distribute** the modified version, for example as a source code or software package, you **must** license it
under the AGPL license with the same additional terms. You **may not** add additional restrictions on the result as a
whole. You **may** add additional permissions, but only on the parts you added. You **must** make clear which changes
you made and you must not give the impression that your modified version is an official version of pretix.
Does the AGPL copyleft mechanism extend to plugins?
---------------------------------------------------
Yes. pretix plugins are tightly integrated with pretix, so when running pretix together with a plugin in the same
environment they form a `combined work`_ and the copyleft mechanism of AGPL applies.
Can I create proprietary or secret plugins?
-------------------------------------------
Yes, you can create a proprietary or secret plugin, but it may only ever be **used** in an environment that is covered
by the additional permission from our license. As soon as the plugin is installed in an installation that is not covered
by our additional permission (e.g. when it is used in a SaaS environment) or covered by an active pretix Enterprise
license it **must** be released to the visitors of the site under the same license as pretix (like a modified version
of pretix).
What licenses can plugins use?
------------------------------
Technically, you can distribute a plugin under any free or proprietary license as long as it is distributed separately.
However, once it is either **distributed together with pretix or used in an environment not covered by our
additional permission** or an active pretix Enterprise license, you **must** release it to all recipients of the
distribution or all visitors of your site under the same license as pretix (like a modified version of pretix).
If you release a plugin publicly, it is therefore most practical to use a license that is `compatible to AGPL`_.
This includes most open source licenses such as AGPL, GPL, Apache, 3-clause BSD or MIT.
Note however that when you license a plugin with pure AGPL, it will be incompatible with our additional permission.
Therefore, if you want to use an AGPL-licensed plugin, you'll need to publish the source code of **all** your plugins
under AGPL terms **even if you only use it for your own events**. A plugin would add its `own additional permission`_
to its license to allow combining it with pretix for this use case.
To make things less complicated, if you want to distribute a plugin freely, we therefore recommend distributing the
plugin under **Apache License 2.0**, like we do for most plugins we distribute as open source.
What do I need to do if I want to contribute my changes back?
-------------------------------------------------------------
In order to retain the possibility for us to offer pretix in a dual licensing model, we unfortunately need you to sign
a Contributor License Agreement (CLA) that gives us permission to use your contribution in all present and future
distributions of pretix. We know the bureaucracy sucks. Sorry.
What if I want to re-use a minor part of pretix in my project?
--------------------------------------------------------------
This is the main part we dislike about AGPL: If you see a specific thing in pretix that you'd like to use in another
project, you'll need to distribute your other project under AGPL terms as well which is often not practical.
In this case, feel free to get in touch with us! We're happy to grant you special permission or pull the component
out into a separately, permissively licensed repository. We already did that with `django-hierarkey`_ and
`django-i18nfield`_ which have previously been parts of pretix.
What can I use the name "pretix" for?
-------------------------------------
The name pretix is a registered trademark by rami.io GmbH.
* You **may** use it to **indicate copyright**, such as in the "powered by pretix" or "based on pretix" line, or when
indicating that a distribution is based on pretix.
* You **may** use it to **indicate compatibility**, for example you are allowed to name your plugin "<name> for pretix"
or you may state that an external service is compatible with pretix.
* You **may not** give the impression that your modified version, plugin or compatible service is official or authorized
by rami.io GmbH or pretix unless we specifically allowed you to do so.
* You **may not** use it to name your modified version of pretix. End-users must be able to easily identify whether
a version of pretix is distributed by us.
* You **may not** use any variations of the name, such as "MyPretix".
.. _license file: https://github.com/pretix/pretix/blob/master/LICENSE
.. _GNU Affero General Public License 3: https://www.gnu.org/licenses/agpl-3.0.en.html
.. _compatible to AGPL: https://www.gnu.org/licenses/license-list.en.html#GPLCompatibleLicenses
.. _Open Source Definition: https://opensource.org/osd
.. _combined work: https://www.gnu.org/licenses/gpl-faq.html#GPLPlugins
.. _own additional permission: https://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs
.. _django-hierarkey: https://github.com/raphaelm/django-hierarkey
.. _django-i18nfield: https://github.com/raphaelm/django-i18nfield
+16 -16
View File
@@ -33,7 +33,7 @@ dependencies = [
"celery==5.5.*",
"chardet==5.2.*",
"cryptography>=44.0.0",
"css-inline==0.14.*",
"css-inline==0.15.*",
"defusedcsv>=1.1.0",
"Django[argon2]==4.2.*,>=4.2.15",
"django-bootstrap3==25.1",
@@ -46,12 +46,12 @@ dependencies = [
"django-hijack==3.7.*",
"django-i18nfield==1.10.*",
"django-libsass==0.9",
"django-localflavor==4.0",
"django-localflavor==5.0",
"django-markup",
"django-oauth-toolkit==2.3.*",
"django-otp==1.6.*",
"django-phonenumber-field==7.3.*",
"django-redis==5.4.*",
"django-redis==6.0.*",
"django-scopes==2.0.*",
"django-statici18n==2.6.*",
"djangorestframework==3.16.*",
@@ -64,10 +64,10 @@ dependencies = [
"kombu==5.5.*",
"libsass==0.23.*",
"lxml",
"markdown==3.8", # 3.3.5 requires importlib-metadata>=4.4, but django-bootstrap3 requires importlib-metadata<3.
"markdown==3.8.2", # 3.3.5 requires importlib-metadata>=4.4, but django-bootstrap3 requires importlib-metadata<3.
# We can upgrade markdown again once django-bootstrap3 upgrades or once we drop Python 3.6 and 3.7
"mt-940==4.30.*",
"oauthlib==3.2.*",
"oauthlib==3.3.*",
"openpyxl==3.1.*",
"packaging",
"paypalrestsdk==1.13.*",
@@ -76,22 +76,22 @@ dependencies = [
"phonenumberslite==9.0.*",
"Pillow==11.2.*",
"pretix-plugin-build",
"protobuf==6.30.*",
"protobuf==6.31.*",
"psycopg2-binary",
"pycountry",
"pycparser==2.22",
"pycryptodome==3.22.*",
"pypdf==5.4.*",
"pycryptodome==3.23.*",
"pypdf==5.6.*",
"python-bidi==0.6.*", # Support for Arabic in reportlab
"python-dateutil==2.9.*",
"pytz",
"pytz-deprecation-shim==0.1.*",
"pyuca",
"qrcode==8.2",
"redis==5.2.*",
"redis==6.2.*",
"reportlab==4.4.*",
"requests==2.31.*",
"sentry-sdk==2.27.*",
"sentry-sdk==2.31.*",
"sepaxml==2.6.*",
"stripe==7.9.*",
"text-unidecode==1.*",
@@ -100,18 +100,18 @@ dependencies = [
"ua-parser==1.0.*",
"vat_moss_forked==2020.3.20.0.11.0",
"vobject==0.9.*",
"webauthn==2.5.*",
"webauthn==2.6.*",
"zeep==4.3.*"
]
[project.optional-dependencies]
memcached = ["pylibmc"]
dev = [
"aiohttp==3.11.*",
"aiohttp==3.12.*",
"coverage",
"coveralls",
"fakeredis==2.26.*",
"flake8==7.2.*",
"fakeredis==2.30.*",
"flake8==7.3.*",
"freezegun",
"isort==6.0.*",
"pep8-naming==0.15.*",
@@ -122,8 +122,8 @@ dev = [
"pytest-django==4.*",
"pytest-mock==3.14.*",
"pytest-sugar",
"pytest-xdist==3.6.*",
"pytest==8.3.*",
"pytest-xdist==3.7.*",
"pytest==8.4.*",
"responses",
]
+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__ = "2025.5.0.dev0"
__version__ = "2025.7.0.dev0"
+2 -1
View File
@@ -101,6 +101,7 @@ ALL_LANGUAGES = [
('fi', _('Finnish')),
('gl', _('Galician')),
('el', _('Greek')),
('he', _('Hebrew')),
('id', _('Indonesian')),
('it', _('Italian')),
('ja', _('Japanese')),
@@ -122,7 +123,7 @@ LANGUAGES_OFFICIAL = {
}
LANGUAGES_RTL = {
# When adding more right-to-left languages, also update pretix/static/pretixbase/scss/_rtl.scss
'ar', 'hw'
'ar', 'he'
}
LANGUAGES_INCUBATING = {
'pt-br', 'gl',
@@ -0,0 +1,18 @@
# Generated by Django 4.2.17 on 2025-06-24 14:13
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("pretixapi", "0012_oauthapplication_post_logout_redirect_uris"),
]
operations = [
migrations.AlterField(
model_name="webhookcallretry",
name="retry_not_before",
field=models.DateTimeField(),
),
]
+1 -1
View File
@@ -157,7 +157,7 @@ class WebHookCallRetry(models.Model):
id = models.BigAutoField(primary_key=True)
webhook = models.ForeignKey('WebHook', on_delete=models.CASCADE, related_name='retries')
logentry = models.ForeignKey('pretixbase.LogEntry', on_delete=models.CASCADE, related_name='webhook_retries')
retry_not_before = models.DateTimeField(auto_now_add=True)
retry_not_before = models.DateTimeField()
retry_count = models.PositiveIntegerField(default=0)
action_type = models.CharField(max_length=255)
+5
View File
@@ -505,6 +505,11 @@ class QuestionSerializer(I18nAwareModelSerializer):
Question._clean_identifier(self.context['event'], value, self.instance)
return value
def validate_type(self, value):
if self.instance:
self.instance.clean_type_change(self.instance.type, value)
return value
def validate_dependency_question(self, value):
if value:
if value.type not in (Question.TYPE_CHOICE, Question.TYPE_BOOLEAN, Question.TYPE_CHOICE_MULTIPLE):
+1 -1
View File
@@ -1600,7 +1600,7 @@ class OrderCreateSerializer(I18nAwareModelSerializer):
self.context['event'].currency)
is_split_taxes = fee_data.pop('_split_taxes_like_products', False)
if is_split_taxes:
if is_split_taxes and order.total:
d = defaultdict(lambda: Decimal('0.00'))
trz = TaxRule.zero()
for p in pos_map.values():
+3
View File
@@ -426,6 +426,9 @@ class OrganizerSettingsSerializer(SettingsSerializer):
'organizer_logo_image_inherit',
'organizer_logo_image',
'privacy_url',
'accessibility_url',
'accessibility_title',
'accessibility_text',
'cookie_consent',
'cookie_consent_dialog_title',
'cookie_consent_dialog_text',
+10 -1
View File
@@ -485,8 +485,17 @@ class QuestionOptionViewSet(viewsets.ModelViewSet):
super().perform_destroy(instance)
class NumberInFilter(django_filters.BaseInFilter, django_filters.NumberFilter):
pass
with scopes_disabled():
class QuotaFilter(FilterSet):
items__in = NumberInFilter(
field_name='items__id',
lookup_expr='in',
)
class Meta:
model = Quota
fields = {
@@ -508,7 +517,7 @@ class QuotaViewSet(ConditionalListView, viewsets.ModelViewSet):
return self.request.event.quotas.all()
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
queryset = self.filter_queryset(self.get_queryset()).distinct()
page = self.paginate_queryset(queryset)
+9 -4
View File
@@ -476,7 +476,7 @@ def send_webhook(self, logentry_id: int, action_type: str, webhook_id: int, retr
300, # + 5 minutes
1200, # + 20 minutes
3600, # + 60 minutes
1440, # + 4 hours
14400, # + 4 hours
21600, # + 6 hours
43200, # + 12 hours
43200, # + 24 hours
@@ -527,8 +527,10 @@ def send_webhook(self, logentry_id: int, action_type: str, webhook_id: int, retr
if retry_count >= len(retry_intervals):
return 'retry-given-up'
elif retry_intervals[retry_count] < retry_celery_cutoff:
send_webhook.apply_async(args=(logentry_id, action_type, webhook_id, retry_count + 1),
countdown=retry_intervals[retry_count])
send_webhook.apply_async(
args=(logentry_id, action_type, webhook_id, retry_count + 1),
countdown=retry_intervals[retry_count]
)
return 'retry-via-celery'
else:
webhook.retries.update_or_create(
@@ -555,7 +557,10 @@ def send_webhook(self, logentry_id: int, action_type: str, webhook_id: int, retr
if retry_count >= len(retry_intervals):
return 'retry-given-up'
elif retry_intervals[retry_count] < retry_celery_cutoff:
send_webhook.apply_async(args=(logentry_id, action_type, webhook_id, retry_count + 1))
send_webhook.apply_async(
args=(logentry_id, action_type, webhook_id, retry_count + 1),
countdown=retry_intervals[retry_count]
)
return 'retry-via-celery'
else:
webhook.retries.update_or_create(
+14 -11
View File
@@ -35,19 +35,22 @@ def get_powered_by(request, safelink=True):
d = gs.settings.license_check_input
if d.get('poweredby_name'):
if d.get('poweredby_url'):
n = '<a href="{}" target="_blank" rel="noopener">{}</a>'.format(
sl(d['poweredby_url']) if safelink else d['poweredby_url'],
d['poweredby_name']
msg = gettext('<a {a_name_attr}>powered by {name}</a> <a {a_attr}>based on pretix</a>').format(
name=d['poweredby_name'],
a_name_attr='href="{}" target="_blank" rel="noopener"'.format(
sl(d['poweredby_url']) if safelink else d['poweredby_url'],
),
a_attr='href="{}" target="_blank" rel="noopener"'.format(
sl('https://pretix.eu') if safelink else 'https://pretix.eu',
)
)
else:
n = d['poweredby_name']
msg = gettext('powered by {name} based on <a {a_attr}>pretix</a>').format(
name=n,
a_attr='href="{}" target="_blank" rel="noopener"'.format(
sl('https://pretix.eu') if safelink else 'https://pretix.eu',
msg = gettext('<a {a_attr}>powered by {name} based on pretix</a>').format(
name=d['poweredby_name'],
a_attr='href="{}" target="_blank" rel="noopener"'.format(
sl('https://pretix.eu') if safelink else 'https://pretix.eu',
)
)
)
else:
msg = gettext('<a %(a_attr)s>ticketing powered by pretix</a>') % {
'a_attr': 'href="{}" target="_blank" rel="noopener"'.format(
@@ -71,7 +74,7 @@ def contextprocessor(request):
try:
ctx['poweredby'] = get_powered_by(request, safelink=True)
except Exception:
ctx['poweredby'] = 'powered by <a href="https://pretix.eu/" target="_blank" rel="noopener">pretix</a>'
ctx['poweredby'] = '<a href="https://pretix.eu/" target="_blank" rel="noopener">powered by pretix</a>'
if settings.DEBUG and 'runserver' not in sys.argv:
ctx['debug_warning'] = True
elif 'runserver' in sys.argv:
+5 -1
View File
@@ -108,8 +108,10 @@ class WaitingListExporter(ListExporter):
_('Name'),
_('Email'),
_('Phone number'),
_('Product name'),
_('Product'),
_('Product ID'),
_('Variation'),
_('Variation ID'),
_('Event slug'),
_('Event name'),
pgettext_lazy('subevents', 'Date'), # Name of subevent
@@ -146,7 +148,9 @@ class WaitingListExporter(ListExporter):
entry.email,
entry.phone,
str(entry.item) if entry.item else "",
str(entry.item.pk) if entry.item else "",
str(entry.variation) if entry.variation else "",
str(entry.variation.pk) if entry.variation else "",
entry.event.slug,
entry.event.name,
entry.subevent.name if entry.subevent else "",
+60 -14
View File
@@ -182,10 +182,15 @@ class NamePartsWidget(forms.MultiWidget):
if self.field.required:
these_attrs['required'] = 'required'
these_attrs.pop('data-no-required-attr', None)
these_attrs['autocomplete'] = (self.attrs.get('autocomplete', '') + ' ' + self.autofill_map.get(self.scheme['fields'][i][0], 'off')).strip()
autofill_section = self.attrs.get('autocomplete', '')
autofill_by_name_scheme = self.autofill_map.get(self.scheme['fields'][i][0], 'off')
if autofill_by_name_scheme == "off" or autofill_section.strip() == "off":
these_attrs['autocomplete'] = "off"
else:
these_attrs['autocomplete'] = (autofill_section + ' ' + autofill_by_name_scheme).strip()
these_attrs['data-size'] = self.scheme['fields'][i][2]
if len(self.widgets) > 1:
these_attrs['aria-label'] = self.scheme['fields'][i][1]
these_attrs['aria-label'] = self.scheme['fields'][i][1]
else:
these_attrs = final_attrs
output.append(widget.render(name + '_%s' % i, widget_value, these_attrs, renderer=renderer))
@@ -303,7 +308,10 @@ class WrappedPhonePrefixSelect(Select):
self.initial = "+%d" % prefix
break
choices += get_phone_prefixes_sorted_and_localized()
super().__init__(choices=choices, attrs={'aria-label': pgettext_lazy('phonenumber', 'International area code')})
super().__init__(choices=choices, attrs={
'aria-label': pgettext_lazy('phonenumber', 'International area code'),
'autocomplete': 'tel-country-code',
})
def render(self, name, value, *args, **kwargs):
return super().render(name, value or self.initial, *args, **kwargs)
@@ -326,11 +334,11 @@ class WrappedPhonePrefixSelect(Select):
class WrappedPhoneNumberPrefixWidget(PhoneNumberPrefixWidget):
def __init__(self, attrs=None, initial=None):
attrs = {
'aria-label': pgettext_lazy('phonenumber', 'Phone number (without international area code)')
}
widgets = (WrappedPhonePrefixSelect(initial), forms.TextInput(attrs=attrs))
super(PhoneNumberPrefixWidget, self).__init__(widgets, attrs)
widgets = (WrappedPhonePrefixSelect(initial), forms.TextInput(attrs={
'aria-label': pgettext_lazy('phonenumber', 'Phone number (without international area code)'),
'autocomplete': 'tel-national',
}))
super(PhoneNumberPrefixWidget, self).__init__(widgets)
def render(self, name, value, attrs=None, renderer=None):
output = super().render(name, value, attrs, renderer)
@@ -888,10 +896,17 @@ class BaseQuestionsForm(forms.Form):
'Please enter a date no later than {max}.',
max=date_format(q.valid_date_max, "SHORT_DATE_FORMAT"),
)
if initial and initial.answer:
try:
_initial = dateutil.parser.parse(initial.answer).date()
except dateutil.parser.ParserError:
_initial = None
else:
_initial = None
field = forms.DateField(
label=label, required=required,
help_text=help_text,
initial=dateutil.parser.parse(initial.answer).date() if initial and initial.answer else None,
initial=_initial,
widget=DatePickerWidget(attrs),
)
if q.valid_date_min:
@@ -899,10 +914,17 @@ class BaseQuestionsForm(forms.Form):
if q.valid_date_max:
field.validators.append(MaxDateValidator(q.valid_date_max))
elif q.type == Question.TYPE_TIME:
if initial and initial.answer:
try:
_initial = dateutil.parser.parse(initial.answer).time()
except dateutil.parser.ParserError:
_initial = None
else:
_initial = None
field = forms.TimeField(
label=label, required=required,
help_text=help_text,
initial=dateutil.parser.parse(initial.answer).time() if initial and initial.answer else None,
initial=_initial,
widget=TimePickerWidget(time_format=get_format_without_seconds('TIME_INPUT_FORMATS')),
)
elif q.type == Question.TYPE_DATETIME:
@@ -923,10 +945,19 @@ class BaseQuestionsForm(forms.Form):
'Please enter a date and time no later than {max}.',
max=date_format(q.valid_datetime_max, "SHORT_DATETIME_FORMAT"),
)
if initial and initial.answer:
try:
_initial = dateutil.parser.parse(initial.answer).astimezone(tz)
except dateutil.parser.ParserError:
_initial = None
else:
_initial = None
field = SplitDateTimeField(
label=label, required=required,
help_text=help_text,
initial=dateutil.parser.parse(initial.answer).astimezone(tz) if initial and initial.answer else None,
initial=_initial,
widget=SplitDateTimePickerWidget(
time_format=get_format_without_seconds('TIME_INPUT_FORMATS'),
min_date=q.valid_datetime_min,
@@ -987,8 +1018,19 @@ class BaseQuestionsForm(forms.Form):
value.initial = data.get('question_form_data', {}).get(key)
for k, v in self.fields.items():
if isinstance(v.widget, forms.MultiWidget):
for w in v.widget.widgets:
autocomplete = w.attrs.get('autocomplete', '')
if autocomplete.strip() == "off":
w.attrs['autocomplete'] = 'off'
else:
w.attrs['autocomplete'] = 'section-{} '.format(self.prefix) + autocomplete
if v.widget.attrs.get('autocomplete') or k == 'attendee_name_parts':
v.widget.attrs['autocomplete'] = 'section-{} '.format(self.prefix) + v.widget.attrs.get('autocomplete', '')
autocomplete = v.widget.attrs.get('autocomplete', '')
if autocomplete.strip() == "off":
v.widget.attrs['autocomplete'] = 'off'
else:
v.widget.attrs['autocomplete'] = 'section-{} '.format(self.prefix) + autocomplete
def clean(self):
from pretix.base.addressvalidation import \
@@ -1202,7 +1244,11 @@ class BaseInvoiceAddressForm(forms.ModelForm):
for k, v in self.fields.items():
if v.widget.attrs.get('autocomplete') or k == 'name_parts':
v.widget.attrs['autocomplete'] = 'section-invoice billing ' + v.widget.attrs.get('autocomplete', '')
autocomplete = v.widget.attrs.get('autocomplete', '')
if autocomplete.strip() == "off":
v.widget.attrs['autocomplete'] = 'off'
else:
v.widget.attrs['autocomplete'] = 'section-invoice billing ' + autocomplete
def clean(self):
from pretix.base.addressvalidation import \
+13 -1
View File
@@ -26,7 +26,7 @@ from django.utils.translation import gettext_lazy as _, pgettext_lazy
from pretix.base.models import (
Discount, Item, ItemCategory, Order, Question, Quota, SubEvent, TaxRule,
Voucher,
Voucher, WaitingListEntry,
)
from .logentrytype_registry import ( # noqa
@@ -145,3 +145,15 @@ class TaxRuleLogEntryType(EventLogEntryType):
object_link_viewname = 'control:event.settings.tax.edit'
object_link_argname = 'rule'
content_type = TaxRule
class WaitingListEntryLogEntryType(EventLogEntryType):
object_link_wrapper = '{val}'
object_link_viewname = 'control:event.orders.waitinglist'
content_type = WaitingListEntry
def get_object_link_info(self, logentry) -> Optional[dict]:
info = super().get_object_link_info(logentry)
if info and 'href' in info:
info['href'] += '?status=a&entry=' + str(logentry.content_object.pk)
return info
@@ -0,0 +1,18 @@
# Generated by Django 4.2.20 on 2025-05-14 14:58
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('pretixbase', '0279_discount_event_date_from_discount_event_date_until'),
]
operations = [
migrations.AddField(
model_name='cartposition',
name='max_extend',
field=models.DateTimeField(null=True),
),
]
@@ -0,0 +1,18 @@
# Generated by Django 4.2.16 on 2025-05-20 11:12
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("pretixbase", "0280_cartposition_max_extend"),
]
operations = [
migrations.AddField(
model_name="event",
name="is_remote",
field=models.BooleanField(default=False),
),
]
+11
View File
@@ -616,6 +616,11 @@ class Event(EventMixin, LoggedModel):
max_length=200,
verbose_name=_("Location"),
)
is_remote = models.BooleanField(
default=False,
verbose_name=_("This event is remote or partially remote."),
help_text=_("This will be used to let users know if the event is in a different timezone and lets us calculate users local times."),
)
geo_lat = models.FloatField(
verbose_name=_("Latitude"),
null=True, blank=True,
@@ -1079,6 +1084,7 @@ class Event(EventMixin, LoggedModel):
s.product = item_map[s.product_id]
s.save(force_insert=True)
valid_sales_channel_identifers = set(self.organizer.sales_channels.values_list("identifier", flat=True))
skip_settings = (
'ticket_secrets_pretix_sig1_pubkey',
'ticket_secrets_pretix_sig1_privkey',
@@ -1114,6 +1120,11 @@ class Event(EventMixin, LoggedModel):
settings_to_save.append(s)
except ValueError:
pass
elif s.key.startswith('payment_') and s.key.endswith('__restrict_to_sales_channels'):
data = other.settings._unserialize(s.value, as_type=list)
data = [ident for ident in data if ident in valid_sales_channel_identifers]
s.value = other.settings._serialize(data)
settings_to_save.append(s)
else:
settings_to_save.append(s)
other.settings._objects.bulk_create(settings_to_save)
+20 -1
View File
@@ -793,7 +793,7 @@ class Item(LoggedModel):
class Meta:
verbose_name = _("Product")
verbose_name_plural = _("Products")
ordering = ("category__position", "category", "position")
ordering = ("category__position", "category", "position", "pk")
def __str__(self):
return str(self.internal_name or self.name)
@@ -1925,6 +1925,25 @@ class Question(LoggedModel):
raise ValidationError(_("The maximum value must not be lower than the minimum value."))
super().clean()
def clean_type_change(self, old_type, new_type):
if old_type == new_type:
return True
if not self.pk or not self.answers.exists():
return True
if new_type == self.TYPE_TEXT and old_type != self.TYPE_FILE:
# All types can be converted to text except file
return True
if new_type == self.TYPE_STRING and old_type not in (self.TYPE_TEXT, self.TYPE_FILE):
# All types can be converted to string except text or file
return True
if new_type == self.TYPE_CHOICE_MULTIPLE and old_type == self.TYPE_CHOICE:
# Single-choice can be converted to multiple choice without loss
return True
raise ValidationError(
_("The system already contains answers to this question that are not compatible with changing the "
"type of question without data loss. Consider hiding this question and creating a new one instead.")
)
class QuestionOption(models.Model):
question = models.ForeignKey('Question', related_name='options', on_delete=models.CASCADE)
+4 -1
View File
@@ -3098,7 +3098,10 @@ class CartPosition(AbstractPosition):
verbose_name=_("Expiration date"),
db_index=True
)
max_extend = models.DateTimeField(
verbose_name=_("Limit for extending expiration date"),
null=True
)
tax_rate = models.DecimalField(
max_digits=7, decimal_places=2, default=Decimal('0.00'),
verbose_name=_('Tax rate')
+1 -1
View File
@@ -218,7 +218,6 @@ class WaitingListEntry(LoggedModel):
'waitinglistentry': self.pk,
'subevent': self.subevent.pk if self.subevent else None,
}, user=user, auth=auth)
self.log_action('pretix.event.orders.waitinglist.voucher_assigned', user=user, auth=auth)
self.voucher = v
self.save()
@@ -234,6 +233,7 @@ class WaitingListEntry(LoggedModel):
),
user=user,
auth=auth,
log_entry_type='pretix.event.orders.waitinglist.voucher_assigned',
)
def send_mail(self, subject: Union[str, LazyI18nString], template: Union[str, LazyI18nString],
+139 -96
View File
@@ -43,7 +43,6 @@ from zoneinfo import ZoneInfo
from django import forms
from django.conf import settings
from django.contrib import messages
from django.core.exceptions import ImproperlyConfigured, ValidationError
from django.db import transaction
from django.dispatch import receiver
@@ -93,15 +92,73 @@ class PaymentProviderForm(Form):
cleaned_data = super().clean()
for k, v in self.fields.items():
val = cleaned_data.get(k)
if v._required and not val:
if hasattr(v, '_required') and v._required and not val:
self.add_error(k, _('This field is required.'))
return cleaned_data
class GiftCardPaymentForm(PaymentProviderForm):
def __init__(self, *args, **kwargs):
self.event = kwargs.pop('event')
self.testmode = kwargs.pop('testmode')
self.positions = kwargs.pop('positions')
self.used_cards = kwargs.pop('used_cards')
super().__init__(*args, **kwargs)
def clean(self):
cleaned_data = super().clean()
if "code" not in cleaned_data:
return cleaned_data
code = cleaned_data["code"].strip()
msg = ""
for p in self.positions:
if p.item.issue_giftcard:
msg = _("You cannot pay with gift cards when buying a gift card.")
self.add_error('code', msg)
return cleaned_data
try:
event = self.event
gc = event.organizer.accepted_gift_cards.get(
secret=code
)
if gc.currency != event.currency:
msg = _("This gift card does not support this currency.")
elif gc.testmode and not self.testmode:
msg = _("This gift card can only be used in test mode.")
elif not gc.testmode and self.testmode:
msg = _("Only test gift cards can be used in test mode.")
elif gc.expires and gc.expires < time_machine_now():
msg = _("This gift card is no longer valid.")
elif gc.value <= Decimal("0.00"):
msg = _("All credit on this gift card has been used.")
if msg:
self.add_error('code', msg)
return cleaned_data
if gc.pk in self.used_cards:
self.add_error('code', _("This gift card is already used for your payment."))
return cleaned_data
except GiftCard.DoesNotExist:
if event.vouchers.filter(code__iexact=code).exists():
msg = _("You entered a voucher instead of a gift card. Vouchers can only be entered on the first page of the shop below "
"the product selection.")
self.add_error('code', msg)
else:
msg = _("This gift card is not known.")
self.add_error('code', msg)
except GiftCard.MultipleObjectsReturned:
msg = _("This gift card can not be redeemed since its code is not unique. Please contact the organizer of this event.")
self.add_error('code', msg)
return cleaned_data
class BasePaymentProvider:
"""
This is the base class for all payment providers.
"""
payment_form_template_name = 'pretixpresale/event/checkout_payment_form_default.html'
def __init__(self, event: Event):
self.event = event
@@ -632,11 +689,6 @@ class BasePaymentProvider:
the ``_restrict_countries`` and ``_restrict_to_sales_channels`` setting.
:param total: The total value without the payment method fee, after taxes.
.. versionchanged:: 1.17.0
The ``total`` parameter has been added. For backwards compatibility, this method is called again
without this parameter if it raises a ``TypeError`` on first try.
"""
timing = self._is_available_by_time(cart_id=get_or_create_cart_id(request))
pricing = True
@@ -694,7 +746,7 @@ class BasePaymentProvider:
:param order: Only set when this is a change to a new payment method for an existing order.
"""
form = self.payment_form(request)
template = get_template('pretixpresale/event/checkout_payment_form_default.html')
template = get_template(self.payment_form_template_name)
ctx = {'request': request, 'form': form}
return template.render(ctx)
@@ -1318,6 +1370,49 @@ class GiftCardPayment(BasePaymentProvider):
multi_use_supported = True
execute_payment_needs_user = False
verbose_name = _("Gift card")
payment_form_class = GiftCardPaymentForm
payment_form_template_name = 'pretixcontrol/giftcards/checkout.html'
def payment_form(self, request: HttpRequest) -> Form:
# Unfortunately, in payment_form we do not know if we're in checkout
# or in an existing order. But we need to do the validation logic in the
# form to get the error messages in the right places for accessbility :-(
if 'checkout' in request.resolver_match.url_name:
cs = cart_session(request)
used_cards = [
p.get('info_data', {}).get('gift_card')
for p in cs.get('payments', [])
if p.get('info_data', {}).get('gift_card')
]
positions = get_cart(request)
testmode = self.event.testmode
else:
used_cards = []
order = self.event.orders.get(code=request.resolver_match.kwargs["order"])
positions = order.positions.all()
testmode = order.testmode
form = self.payment_form_class(
event=self.event,
used_cards=used_cards,
positions=positions,
testmode=testmode,
data=(request.POST if request.method == 'POST' and request.POST.get("payment") == self.identifier else None),
prefix='payment_%s' % self.identifier,
initial={
k.replace('payment_%s_' % self.identifier, ''): v
for k, v in request.session.items()
if k.startswith('payment_%s_' % self.identifier)
}
)
form.fields = self.payment_form_fields
for k, v in form.fields.items():
v._required = v.required
v.required = False
v.widget.is_required = False
return form
@property
def public_name(self) -> str:
@@ -1350,6 +1445,19 @@ class GiftCardPayment(BasePaymentProvider):
f.move_to_end("_enabled", last=False)
return f
@property
def payment_form_fields(self):
fields = [
(
"code",
forms.CharField(
label=_("Gift card code"),
required=True,
),
),
]
return OrderedDict(fields)
@property
def test_mode_message(self) -> str:
return _("In test mode, only test cards will work.")
@@ -1360,11 +1468,6 @@ class GiftCardPayment(BasePaymentProvider):
def order_change_allowed(self, order: Order) -> bool:
return super().order_change_allowed(order) and self.event.organizer.has_gift_cards
def payment_form_render(self, request: HttpRequest, total: Decimal) -> str:
return get_template('pretixcontrol/giftcards/checkout.html').render({
'request': request,
})
def checkout_confirm_render(self, request, order=None, info_data=None) -> str:
return get_template('pretixcontrol/giftcards/checkout_confirm.html').render({
'info_data': info_data,
@@ -1432,21 +1535,6 @@ class GiftCardPayment(BasePaymentProvider):
def _add_giftcard_to_cart(self, cs, gc):
from pretix.base.services.cart import add_payment_to_cart_session
if gc.currency != self.event.currency:
raise ValidationError(_("This gift card does not support this currency."))
if gc.testmode and not self.event.testmode:
raise ValidationError(_("This gift card can only be used in test mode."))
if not gc.testmode and self.event.testmode:
raise ValidationError(_("Only test gift cards can be used in test mode."))
if gc.expires and gc.expires < time_machine_now():
raise ValidationError(_("This gift card is no longer valid."))
if gc.value <= Decimal("0.00"):
raise ValidationError(_("All credit on this gift card has been used."))
for p in cs.get('payments', []):
if p['provider'] == self.identifier and p['info_data']['gift_card'] == gc.pk:
raise ValidationError(_("This gift card is already used for your payment."))
add_payment_to_cart_session(
cs,
self,
@@ -1458,77 +1546,32 @@ class GiftCardPayment(BasePaymentProvider):
)
def checkout_prepare(self, request: HttpRequest, cart: Dict[str, Any]) -> Union[bool, str, None]:
for p in get_cart(request):
if p.item.issue_giftcard:
messages.error(request, _("You cannot pay with gift cards when buying a gift card."))
return
form = self.payment_form(request)
if not form.is_valid():
return False
if not request.POST.get("giftcard"):
messages.error(request, _("Please enter the code of your gift card."))
return
try:
gc = self.event.organizer.accepted_gift_cards.get(
secret=request.POST.get("giftcard").strip()
)
cs = cart_session(request)
try:
self._add_giftcard_to_cart(cs, gc)
return True
except ValidationError as e:
messages.error(request, str(e.message))
return
except GiftCard.DoesNotExist:
if self.event.vouchers.filter(code__iexact=request.POST.get("giftcard")).exists():
messages.warning(request, _("You entered a voucher instead of a gift card. Vouchers can only be entered on the first page of the shop below "
"the product selection."))
else:
messages.error(request, _("This gift card is not known."))
except GiftCard.MultipleObjectsReturned:
messages.error(request, _("This gift card can not be redeemed since its code is not unique. Please contact the organizer of this event."))
gc = self.event.organizer.accepted_gift_cards.get(
secret=form.cleaned_data["code"]
)
cs = cart_session(request)
self._add_giftcard_to_cart(cs, gc)
return True
def payment_prepare(self, request: HttpRequest, payment: OrderPayment) -> Union[bool, str, None]:
for p in payment.order.positions.all():
if p.item.issue_giftcard:
messages.error(request, _("You cannot pay with gift cards when buying a gift card."))
return
try:
gc = self.event.organizer.accepted_gift_cards.get(
secret=request.POST.get("giftcard").strip()
)
if gc.currency != self.event.currency:
messages.error(request, _("This gift card does not support this currency."))
return
if gc.testmode and not payment.order.testmode:
messages.error(request, _("This gift card can only be used in test mode."))
return
if not gc.testmode and payment.order.testmode:
messages.error(request, _("Only test gift cards can be used in test mode."))
return
if gc.expires and gc.expires < time_machine_now():
messages.error(request, _("This gift card is no longer valid."))
return
if gc.value <= Decimal("0.00"):
messages.error(request, _("All credit on this gift card has been used."))
return
payment.info_data = {
'gift_card': gc.pk,
'gift_card_secret': gc.secret,
'retry': True
}
payment.amount = min(payment.amount, gc.value)
payment.save()
return True
except GiftCard.DoesNotExist:
if self.event.vouchers.filter(code__iexact=request.POST.get("giftcard").strip()).exists():
messages.warning(request, _("You entered a voucher instead of a gift card. Vouchers can only be entered on the first page of the shop below "
"the product selection."))
else:
messages.error(request, _("This gift card is not known."))
except GiftCard.MultipleObjectsReturned:
messages.error(request, _("This gift card can not be redeemed since its code is not unique. Please contact the organizer of this event."))
form = self.payment_form(request)
if not form.is_valid():
return False
gc = self.event.organizer.accepted_gift_cards.get(
secret=form.cleaned_data["code"]
)
payment.info_data = {
'gift_card': gc.pk,
'gift_card_secret': gc.secret,
'retry': True
}
payment.amount = min(payment.amount, gc.value)
payment.save()
return True
def execute_payment(self, request: HttpRequest, payment: OrderPayment, is_early_special_case=False) -> str:
for p in payment.order.positions.all():
+64 -17
View File
@@ -45,6 +45,7 @@ from django.conf import settings
from django.core.exceptions import ValidationError
from django.db import DatabaseError, transaction
from django.db.models import Count, Exists, IntegerField, OuterRef, Q, Value
from django.db.models.aggregates import Min
from django.dispatch import receiver
from django.utils.timezone import make_aware, now
from django.utils.translation import (
@@ -275,7 +276,10 @@ class CartManager:
}
def __init__(self, event: Event, cart_id: str, sales_channel: SalesChannel,
invoice_address: InvoiceAddress=None, widget_data=None, expiry=None):
invoice_address: InvoiceAddress=None, widget_data=None, reservation_time: timedelta=None):
"""
Creates a new CartManager for an event.
"""
self.event = event
self.cart_id = cart_id
self.real_now_dt = now()
@@ -286,11 +290,17 @@ class CartManager:
self._subevents_cache = {}
self._variations_cache = {}
self._seated_cache = {}
self._expiry = None
self._explicit_expiry = expiry
self.invoice_address = invoice_address
self._widget_data = widget_data or {}
self._sales_channel = sales_channel
self.num_extended_positions = 0
if reservation_time:
self._reservation_time = reservation_time
else:
self._reservation_time = timedelta(minutes=self.event.settings.get('reservation_time', as_type=int))
self._expiry = self.real_now_dt + self._reservation_time
self._max_expiry_extend = self.real_now_dt + (self._reservation_time * 11)
@property
def positions(self):
@@ -305,14 +315,6 @@ class CartManager:
self._seated_cache[item, subevent] = item.seat_category_mappings.filter(subevent=subevent).exists()
return self._seated_cache[item, subevent]
def _calculate_expiry(self):
if self._explicit_expiry:
self._expiry = self._explicit_expiry
else:
self._expiry = self.real_now_dt + timedelta(
minutes=self.event.settings.get('reservation_time', as_type=int)
)
def _check_presale_dates(self):
if self.event.presale_start and time_machine_now(self.real_now_dt) < self.event.presale_start:
raise CartError(error_messages['not_started'])
@@ -329,9 +331,27 @@ class CartManager:
raise CartError(error_messages['payment_ended'])
def _extend_expiry_of_valid_existing_positions(self):
# real_now_dt is initialized at CartManager instantiation, so it's slightly in the past. Add a small
# delta to reduce risk of extending already expired CartPositions.
padded_now_dt = self.real_now_dt + timedelta(seconds=5)
# Make sure we do not extend past the max_extend timestamp, allowing users to extend their valid positions up
# to 11 times the reservation time. If we add new positions to the cart while valid positions exist, the new
# positions' reservation will also be limited to max_extend of the oldest position.
# Only after all positions expire, an ExtendOperation may reset max_extend to another 11x reservation_time.
max_extend_existing = self.positions.filter(expires__gt=padded_now_dt).aggregate(m=Min('max_extend'))['m']
if max_extend_existing:
self._expiry = min(self._expiry, max_extend_existing)
self._max_expiry_extend = max_extend_existing
# Extend this user's cart session to ensure all items in the cart expire at the same time
# We can extend the reservation of items which are not yet expired without risk
self.positions.filter(expires__gt=self.real_now_dt).update(expires=self._expiry)
if self._expiry > padded_now_dt:
self.num_extended_positions += self.positions.filter(
expires__gt=padded_now_dt, expires__lt=self._expiry,
).update(
expires=self._expiry,
)
def _delete_out_of_timeframe(self):
err = None
@@ -1246,6 +1266,7 @@ class CartManager:
item=op.item,
variation=op.variation,
expires=self._expiry,
max_extend=self._max_expiry_extend,
cart_id=self.cart_id,
voucher=op.voucher,
addon_to=op.addon_to if op.addon_to else None,
@@ -1294,7 +1315,9 @@ class CartManager:
event=self.event,
item=b.item,
variation=b.variation,
expires=self._expiry, cart_id=self.cart_id,
expires=self._expiry,
max_extend=self._max_expiry_extend,
cart_id=self.cart_id,
voucher=None,
addon_to=cp,
subevent=b.subevent,
@@ -1321,12 +1344,14 @@ class CartManager:
op.position.delete()
elif available_count == 1:
op.position.expires = self._expiry
op.position.max_extend = self._max_expiry_extend
op.position.listed_price = op.listed_price
op.position.price_after_voucher = op.price_after_voucher
# op.position.price will be updated by recompute_final_prices_and_taxes()
if op.position.pk not in deleted_positions:
try:
op.position.save(force_update=True, update_fields=['expires', 'listed_price', 'price_after_voucher'])
op.position.save(force_update=True, update_fields=['expires', 'max_extend', 'listed_price', 'price_after_voucher'])
self.num_extended_positions += 1
except DatabaseError:
# Best effort... The position might have been deleted in the meantime!
pass
@@ -1416,14 +1441,11 @@ class CartManager:
def commit(self):
self._check_presale_dates()
self._check_max_cart_size()
self._calculate_expiry()
err = self._delete_out_of_timeframe()
err = self.extend_expired_positions() or err
err = err or self._check_min_per_voucher()
self.real_now_dt = now()
self._extend_expiry_of_valid_existing_positions()
err = self._perform_operations() or err
self.recompute_final_prices_and_taxes()
@@ -1632,6 +1654,31 @@ def clear_cart(self, event: Event, cart_id: str=None, locale='en', sales_channel
raise CartError(error_messages['busy'])
@app.task(base=ProfiledEventTask, bind=True, max_retries=5, default_retry_delay=1, throws=(CartError,))
def extend_cart_reservation(self, event: Event, cart_id: str=None, locale='en', sales_channel='web', override_now_dt: datetime=None) -> dict:
"""
Resets the expiry time of a cart to the configured reservation time of this event.
Limited to 11x the reservation time.
:param event: The event ID in question
:param cart_id: The cart ID of the cart to modify
"""
with language(locale), time_machine_now_assigned(override_now_dt):
try:
sales_channel = event.organizer.sales_channels.get(identifier=sales_channel)
except SalesChannel.DoesNotExist:
raise CartError("Invalid sales channel.")
try:
try:
cm = CartManager(event=event, cart_id=cart_id, sales_channel=sales_channel)
cm.commit()
return {"success": cm.num_extended_positions, "expiry": cm._expiry, "max_expiry_extend": cm._max_expiry_extend}
except LockTimeoutException:
self.retry()
except (MaxRetriesExceededError, LockTimeoutException):
raise CartError(error_messages['busy'])
@app.task(base=ProfiledEventTask, bind=True, max_retries=5, default_retry_delay=1, throws=(CartError,))
def set_cart_addons(self, event: Event, addons: List[dict], add_to_cart_items: List[dict], cart_id: str=None, locale='en',
invoice_address: int=None, sales_channel='web', override_now_dt: datetime=None) -> None:
+7
View File
@@ -96,12 +96,19 @@ class SendMailException(Exception):
def clean_sender_name(sender_name: str) -> str:
# Even though we try to properly escape sender names, some characters seem to cause problems when the escaping
# fails due to some forwardings, etc.
# Emails with @ in their sender name are rejected by some mailservers (e.g. Microsoft) because it looks like
# a phishing attempt.
sender_name = sender_name.replace("@", " ")
# Emails with : in their sender name are treated by Microsoft like emails with no From header at all, leading
# to a higher spam likelihood.
sender_name = sender_name.replace(":", " ")
# Emails with , in their sender name look like multiple senders
sender_name = sender_name.replace(",", "")
# Emails with " in their sender name could be escaped, but somehow create issues in reality
sender_name = sender_name.replace("\"", "")
# Emails with excessively long sender names are rejected by some mailservers
if len(sender_name) > 75:
+5 -1
View File
@@ -2768,7 +2768,11 @@ class OrderChangeManager:
def _check_complete_cancel(self):
current = self.order.positions.count()
cancels = len([o for o in self._operations if isinstance(o, (self.CancelOperation, self.SplitOperation))])
cancels = sum([
1 + o.position.addons.count() for o in self._operations if isinstance(o, self.CancelOperation)
]) + len([
o for o in self._operations if isinstance(o, self.SplitOperation)
])
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'])
+34 -2
View File
@@ -2063,6 +2063,38 @@ DEFAULTS = {
),
'serializer_class': I18nURLField,
},
'accessibility_url': {
'default': None,
'type': LazyI18nString,
'form_class': I18nURLFormField,
'form_kwargs': dict(
label=_("Accessibility information URL"),
help_text=_("This should point e.g. to a part of your website that explains how your ticket shop complies "
"with accessibility regulation."),
widget=I18nTextInput,
),
'serializer_class': I18nURLField,
},
'accessibility_title': {
'default': LazyI18nString.from_gettext(gettext_noop("Accessibility information")),
'type': LazyI18nString,
'form_class': I18nFormField,
'form_kwargs': dict(
label=_("Accessibility information title"),
widget=I18nTextInput,
),
'serializer_class': I18nURLField,
},
'accessibility_text': {
'default': None,
'type': LazyI18nString,
'form_class': I18nFormField,
'form_kwargs': dict(
label=_("Accessibility information text"),
widget=I18nMarkdownTextarea,
),
'serializer_class': I18nURLField,
},
'confirm_texts': {
'default': LazyI18nStringList(),
'type': LazyI18nStringList,
@@ -2783,7 +2815,7 @@ Your {organizer} team""")) # noqa: W291
),
},
'theme_color_success': {
'default': '#50a167',
'default': '#408252',
'type': str,
'form_class': forms.CharField,
'serializer_class': serializers.CharField,
@@ -3717,7 +3749,7 @@ COUNTRIES_WITH_STATE_IN_ADDRESS = {
# 'CN': (['Province', 'Autonomous region', 'Munincipality'], 'long'),
'JP': (['Prefecture'], 'long'),
'MY': (['State', 'Federal territory'], 'long'),
'MX': (['State', 'Federal district'], 'short'),
'MX': (['State', 'Federal district', 'Federal entity'], 'short'),
'US': (['State', 'Outlying area', 'District'], 'short'),
'IT': (['Province', 'Free municipal consortium', 'Metropolitan city', 'Autonomous province',
'Free municipal consortium', 'Decentralized regional entity'], 'short'),
+2 -1
View File
@@ -1,5 +1,6 @@
{% load i18n %}
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="14" viewBox="0 0 18 14"
class="{{ cls }}">
class="{{ cls }}" role="img" aria-label="{% trans "Seat" %}">
<path d="M7.713 3.573c-.787-.124-1.677.472-1.511 1.529l.857 3.473c.116.579.578 1.086 1.317 1.086h3.166v3.504c0 1.108 1.556 1.113 1.556.019V8.682c0-.536-.376-1.116-1.099-1.116L9.52 7.563l-.752-2.936c-.147-.648-.583-.981-1.055-1.055v.001Z"></path>
<path d="M4.48 5.835a.6.6 0 0 0-.674.725l.71 3.441c.287 1.284 1.39 2.114 2.495 2.114h2.273c.807 0 .811-1.215-.01-1.215H7.188c-.753 0-1.375-.45-1.563-1.289l-.672-3.293c-.062-.3-.26-.452-.474-.483ZM7.433.102a1.468 1.468 0 1 0 0 2.937 1.469 1.469 0 1 0 0-2.937Z"></path>
</svg>

Before

Width:  |  Height:  |  Size: 636 B

After

Width:  |  Height:  |  Size: 695 B

+61
View File
@@ -0,0 +1,61 @@
#
# This file is part of pretix (Community Edition).
#
# Copyright (C) 2014-2020 Raphael Michel and contributors
# Copyright (C) 2020-2021 rami.io GmbH and contributors
#
# This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General
# Public License as published by the Free Software Foundation in version 3 of the License.
#
# ADDITIONAL TERMS APPLY: Pursuant to Section 7 of the GNU Affero General Public License, additional terms are
# applicable granting you additional permissions and placing additional restrictions on your usage of this software.
# Please refer to the pretix LICENSE file to obtain the full terms applicable to this work. If you did not receive
# this file, see <https://pretix.eu/about/en/license>.
#
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
# details.
#
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
# <https://www.gnu.org/licenses/>.
#
from django import template
from django.utils.html import format_html
from django.utils.safestring import mark_safe
from pretix.helpers.templatetags.simple_block_tag import (
register_simple_block_tag,
)
from django.utils.translation import gettext_lazy as _ # NOQA
register = template.Library()
@register_simple_block_tag(register)
def dialog(content, html_id, title, description, *args, **kwargs):
format_kwargs = {
"id": html_id,
"title": title,
"description": description,
"icon": format_html('<div class="modal-card-icon"><span class="fa fa-{}" aria-hidden="true"></span></div>', kwargs["icon"]) if "icon" in kwargs else "",
"alert": mark_safe('role="alertdialog"') if kwargs.get("alert", "False") != "False" else "",
"content": content,
}
result = """
<dialog {alert}
id="{id}" class="modal-card"
aria-labelledby="{id}-title"
aria-describedby="{id}-description">
<form method="dialog" class="modal-card-inner form-horizontal">
{icon}
<div class="modal-card-content">
<h2 id="{id}-title" class="modal-card-title h3">{title}</h2>
<p id="{id}-description" class="modal-card-description">{description}</p>
{content}
</div>
</form>
</dialog>
"""
return format_html(result, **format_kwargs)
+28 -10
View File
@@ -58,7 +58,7 @@ def timeline_for_event(event, subevent=None):
event=event, subevent=subevent,
datetime=ev.date_from,
description=pgettext_lazy('timeline', 'Your event starts'),
edit_url=ev_edit_url
edit_url=ev_edit_url + '#id_date_from_0'
))
if ev.date_to:
@@ -66,7 +66,7 @@ def timeline_for_event(event, subevent=None):
event=event, subevent=subevent,
datetime=ev.date_to,
description=pgettext_lazy('timeline', 'Your event ends'),
edit_url=ev_edit_url
edit_url=ev_edit_url + '#id_date_to_0'
))
if ev.date_admission:
@@ -74,7 +74,7 @@ def timeline_for_event(event, subevent=None):
event=event, subevent=subevent,
datetime=ev.date_admission,
description=pgettext_lazy('timeline', 'Admissions for your event start'),
edit_url=ev_edit_url
edit_url=ev_edit_url + '#id_date_admission_0'
))
if ev.presale_start:
@@ -82,7 +82,7 @@ def timeline_for_event(event, subevent=None):
event=event, subevent=subevent,
datetime=ev.presale_start,
description=pgettext_lazy('timeline', 'Start of ticket sales'),
edit_url=ev_edit_url
edit_url=ev_edit_url + '#id_presale_start_0'
))
tl.append(TimelineEvent(
@@ -95,7 +95,7 @@ def timeline_for_event(event, subevent=None):
pgettext_lazy('timeline', 'End of ticket sales'),
pgettext_lazy('timeline', 'automatically because the event is over and no end of presale has been configured') if not ev.presale_end else ""
),
edit_url=ev_edit_url
edit_url=ev_edit_url + '#id_presale_end_0'
))
rd = event.settings.get('last_order_modification_date', as_type=RelativeDateWrapper)
@@ -104,7 +104,7 @@ def timeline_for_event(event, subevent=None):
event=event, subevent=subevent,
datetime=rd.datetime(ev),
description=pgettext_lazy('timeline', 'Customers can no longer modify their order information'),
edit_url=ev_edit_url
edit_url=ev_edit_url + '#id_settings-last_order_modification_date_0_0'
))
rd = event.settings.get('payment_term_last', as_type=RelativeDateWrapper)
@@ -281,7 +281,7 @@ def timeline_for_event(event, subevent=None):
'event': event.slug,
'organizer': event.organizer.slug,
'item': p.pk,
})
}) + '#id_available_from_0'
))
if p.available_until:
tl.append(TimelineEvent(
@@ -292,7 +292,7 @@ def timeline_for_event(event, subevent=None):
'event': event.slug,
'organizer': event.organizer.slug,
'item': p.pk,
})
}) + '#id_available_until_0'
))
for v in ItemVariation.objects.filter(
@@ -311,7 +311,7 @@ def timeline_for_event(event, subevent=None):
'event': event.slug,
'organizer': event.organizer.slug,
'item': v.item.pk,
})
}) + '#tab-0-3-open'
))
if v.available_until:
tl.append(TimelineEvent(
@@ -325,7 +325,7 @@ def timeline_for_event(event, subevent=None):
'event': event.slug,
'organizer': event.organizer.slug,
'item': v.item.pk,
})
}) + '#tab-0-3-open'
))
pprovs = event.get_payment_providers()
@@ -339,6 +339,24 @@ def timeline_for_event(event, subevent=None):
continue
except:
pass
availability_start = pprov.settings.get('_availability_start', as_type=RelativeDateWrapper)
if availability_start:
d = make_aware(datetime.combine(
availability_start.date(ev),
time(hour=0, minute=0, second=0)
), event.timezone)
tl.append(TimelineEvent(
event=event, subevent=subevent,
datetime=d,
description=pgettext_lazy('timeline', 'Payment provider "{name}" becomes active').format(
name=str(pprov.verbose_name)
),
edit_url=reverse('control:event.settings.payment.provider', kwargs={
'event': event.slug,
'organizer': event.organizer.slug,
'provider': pprov.identifier,
})
))
availability_date = pprov.settings.get('_availability_date', as_type=RelativeDateWrapper)
if availability_date:
d = make_aware(datetime.combine(
+1
View File
@@ -73,6 +73,7 @@ class EventSlugBanlistValidator(BanlistValidator):
'customer',
'account',
'lead',
'accessibility',
]
+9 -11
View File
@@ -68,7 +68,7 @@ class AsyncMixin:
def get_check_url(self, task_id, ajax):
return self.request.path + '?async_id=%s' % task_id + ('&ajax=1' if ajax else '')
def _ajax_response_data(self):
def _ajax_response_data(self, value):
return {}
def _return_ajax_result(self, res, timeout=.5):
@@ -85,7 +85,7 @@ class AsyncMixin:
logger.warning('Ignored ResponseError in AsyncResult.get()')
except ConnectionError:
# Redis probably just restarted, let's just report not ready and retry next time
data = self._ajax_response_data()
data = self._ajax_response_data(None)
data.update({
'async_id': res.id,
'ready': False
@@ -93,7 +93,7 @@ class AsyncMixin:
return data
state, info = res.state, res.info
data = self._ajax_response_data()
data = self._ajax_response_data(info)
data.update({
'async_id': res.id,
'ready': ready,
@@ -102,23 +102,21 @@ class AsyncMixin:
if ready:
if state == states.SUCCESS and not isinstance(info, Exception):
smes = self.get_success_message(info)
if smes:
if smes and 'ajax_dont_redirect' not in self.request.GET and 'ajax_dont_redirect' not in self.request.POST:
messages.success(self.request, smes)
# TODO: Do not store message if the ajax client states that it will not redirect
# but handle the message itself
data.update({
'redirect': self.get_success_url(info),
'success': True,
'message': str(self.get_success_message(info))
'message': str(smes)
})
else:
messages.error(self.request, self.get_error_message(info))
# TODO: Do not store message if the ajax client states that it will not redirect
# but handle the message itself
smes = self.get_error_message(info)
if smes and 'ajax_dont_redirect' not in self.request.GET and 'ajax_dont_redirect' not in self.request.POST:
messages.error(self.request, smes)
data.update({
'redirect': self.get_error_url(),
'success': False,
'message': str(self.get_error_message(info))
'message': str(smes)
})
elif state == 'PROGRESS':
data.update({
+4 -2
View File
@@ -175,6 +175,7 @@ class EventWizardBasicsForm(I18nModelForm):
'presale_start',
'presale_end',
'location',
'is_remote',
'geo_lat',
'geo_lon',
]
@@ -448,6 +449,7 @@ class EventUpdateForm(I18nModelForm):
'presale_start',
'presale_end',
'location',
'is_remote',
'geo_lat',
'geo_lon',
'all_sales_channels',
@@ -663,9 +665,9 @@ class EventSettingsForm(EventSettingsValidationMixin, FormPlaceholderMixin, Sett
del self.fields['event_list_available_only']
del self.fields['event_list_filters']
del self.fields['event_calendar_future_only']
self.fields['primary_font'].choices += [
self.fields['primary_font'].choices = [('Open Sans', 'Open Sans')] + sorted([
(a, {"title": a, "data": v}) for a, v in get_fonts(self.event, pdf_support_required=False).items()
]
], key=lambda a: a[0])
# create "virtual" fields for better UX when editing <name>_asked and <name>_required fields
self.virtual_keys = []
+6
View File
@@ -201,6 +201,12 @@ class QuestionForm(I18nModelForm):
return val
def clean_type(self):
val = self.cleaned_data.get('type')
if self.instance:
self.instance.clean_type_change(self.instance.type, val)
return val
def clean_identifier(self):
val = self.cleaned_data.get('identifier')
Question._clean_identifier(self.instance.event, val, self.instance)
+3
View File
@@ -498,6 +498,9 @@ class OrganizerSettingsForm(SettingsForm):
'theme_round_borders',
'primary_font',
'privacy_url',
'accessibility_url',
'accessibility_title',
'accessibility_text',
'cookie_consent',
'cookie_consent_dialog_title',
'cookie_consent_dialog_text',
+7
View File
@@ -178,6 +178,13 @@ class SubEventBulkEditForm(I18nModelForm):
widgets = {
}
def clean(self):
data = super().clean()
if self.prefix + "name" in self.data.getlist('_bulk'):
if not data.get("name"):
self.add_error("name", _("This field is required."))
return data
def save(self, commit=True):
objs = list(self.queryset)
fields = set()
+11 -5
View File
@@ -50,7 +50,7 @@ from pretix.base.logentrytypes import (
DiscountLogEntryType, EventLogEntryType, ItemCategoryLogEntryType,
ItemLogEntryType, LogEntryType, OrderLogEntryType, QuestionLogEntryType,
QuotaLogEntryType, TaxRuleLogEntryType, VoucherLogEntryType,
log_entry_types,
WaitingListEntryLogEntryType, log_entry_types,
)
from pretix.base.models import (
Checkin, CheckinList, Event, ItemVariation, LogEntry, OrderPosition,
@@ -697,11 +697,7 @@ class CoreUserImpersonatedLogEntryType(UserImpersonatedLogEntryType):
'the last request was less than 24 hours ago.'),
'pretix.organizer.deleted': _('The organizer "{name}" has been deleted.'),
'pretix.waitinglist.voucher': _('A voucher has been sent to a person on the waiting list.'), # legacy
'pretix.event.orders.waitinglist.voucher_assigned': _('A voucher has been sent to a person on the waiting list.'),
'pretix.event.orders.waitinglist.deleted': _('An entry has been removed from the waiting list.'),
'pretix.event.order.waitinglist.transferred': _('An entry has been transferred to another waiting list.'), # legacy
'pretix.event.orders.waitinglist.changed': _('An entry has been changed on the waiting list.'),
'pretix.event.orders.waitinglist.added': _('An entry has been added to the waiting list.'),
'pretix.team.created': _('The team has been created.'),
'pretix.team.changed': _('The team settings have been changed.'),
'pretix.team.deleted': _('The team has been deleted.'),
@@ -903,3 +899,13 @@ class LegacyCheckinLogEntryType(OrderLogEntryType):
datetime=dt_formatted,
list=checkin_list
)
@log_entry_types.new_from_dict({
'pretix.event.orders.waitinglist.voucher_assigned': _('A voucher has been sent to a person on the waiting list.'),
'pretix.event.orders.waitinglist.deleted': _('An entry has been removed from the waiting list.'),
'pretix.event.orders.waitinglist.changed': _('An entry has been changed on the waiting list.'),
'pretix.event.orders.waitinglist.added': _('An entry has been added to the waiting list.'),
})
class CoreWaitingListEntryLogEntryType(WaitingListEntryLogEntryType):
pass
@@ -14,7 +14,7 @@
<input class="form-control" name="token" placeholder="{% trans "Token" %}" autocomplete="one-time-code"
type="text" required="required" autofocus="autofocus" id="webauthn-response">
</div>
<div class="sr-only alert alert-danger" id="webauthn-error">
<div class="alert alert-danger hidden" id="webauthn-error">
{% trans "WebAuthn failed. Check that the correct authentication device is correctly plugged in." %}
</div>
{% if jsondata %}
@@ -4,6 +4,8 @@
{% load statici18n %}
{% load eventsignal %}
{% load eventurl %}
{% load dialog %}
{% load icon %}
<!DOCTYPE html>
<html{% if rtl %} dir="rtl" class="rtl"{% endif %}>
<head>
@@ -33,6 +35,7 @@
<script type="text/javascript" src="{% static "clipboard/clipboard.js" %}"></script>
<script type="text/javascript" src="{% static "cropper/cropper.js" %}"></script>
<script type="text/javascript" src="{% static "rrule/rrule.js" %}"></script>
<script type="text/javascript" src="{% static "pretixbase/js/gettextstub.js" %}"></script>
<script type="text/javascript" src="{% static "pretixpresale/js/ui/questions.js" %}"></script>
<script type="text/javascript" src="{% static "pretixcontrol/js/jquery.qrcode.min.js" %}"></script>
<script type="text/javascript" src="{% static "pretixcontrol/js/clipboard.js" %}"></script>
@@ -463,25 +466,16 @@
</div>
</div>
</div>
<div id="ajaxerr">
<div id="ajaxerr" class="modal-wrapper" hidden>
</div>
<div id="loadingmodal">
<div class="modal-card">
<div class="modal-card-icon">
<i class="fa fa-cog big-rotating-icon"></i>
</div>
<div class="modal-card-content">
<h3></h3>
<p class="text"></p>
<p class="status">{% trans "If this takes longer than a few minutes, please contact us." %}</p>
<div class="progress">
<div class="progress-bar progress-bar-success">
</div>
</div>
<div class="steps">
</div>
{% dialog "loadingmodal" "" "" icon="cog rotating" %}
<p class="status">{% trans "If this takes longer than a few minutes, please contact us." %}</p>
<div class="progress">
<div class="progress-bar progress-bar-success">
</div>
</div>
</div>
<div class="steps">
</div>
{% enddialog %}
</body>
</html>
@@ -61,6 +61,7 @@
{% bootstrap_field sform.locale layout="control" %}
{% bootstrap_field sform.timezone layout="control" %}
{% bootstrap_field sform.region layout="control" %}
{% bootstrap_field form.is_remote layout="control" %}
</fieldset>
<fieldset>
<legend>{% trans "Customer and attendee data" %}</legend>
@@ -246,6 +247,17 @@
{% bootstrap_field sform.show_variations_expanded layout="control" %}
{% bootstrap_field sform.hide_sold_out layout="control" %}
<div data-display-dependency="#id_settings-waiting_list_enabled">
<div data-display-dependency="#id_settings-hide_sold_out">
<div class="alert alert-danger dynamic">
<h4>{% trans "Incompatible settings" %}</h4>
{% blocktrans trimmed %}
Customers won't be able to add themselves to the waiting list, because "Hide all products that are sold out" is enabled.
{% endblocktrans %}
</div>
</div>
</div>
<h4>{% trans "Calendar and list views" context "subevents" %}</h4>
{% if sform.frontpage_subevent_ordering %}
{% bootstrap_field sform.frontpage_subevent_ordering layout="control" %}
@@ -371,6 +383,16 @@
</strong>
</div>
{% bootstrap_field sform.waiting_list_enabled layout="control" %}
<div data-display-dependency="#id_settings-hide_sold_out">
<div data-display-dependency="#id_settings-waiting_list_enabled">
<div class="alert alert-danger dynamic">
<h4>{% trans "Incompatible settings" %}</h4>
{% blocktrans trimmed %}
Customers won't be able to add themselves to the waiting list, because "Hide all products that are sold out" is enabled.
{% endblocktrans %}
</div>
</div>
</div>
{% bootstrap_field sform.waiting_list_auto layout="control" %}
<div class="form-group">
<label class="control-label col-md-3">
@@ -19,8 +19,8 @@
section of your website:
{% endblocktrans %}
</p>
<pre>&lt;link rel="stylesheet" type="text/css" href="{% abseventurl request.event "presale:event.widget.css" %}" crossorigin&gt;
&lt;script type="text/javascript" src="{{ urlprefix }}{% url "presale:widget.js" lang=form.cleaned_data.language %}" async crossorigin&gt;&lt;/script&gt;</pre>
<pre>&lt;link rel="stylesheet" type="text/css" href="{% abseventurl request.event "presale:event.widget.css" version=widget_version_default %}" crossorigin&gt;
&lt;script type="text/javascript" src="{{ urlprefix }}{% url "presale:widget.js" lang=form.cleaned_data.language version=widget_version_default %}" async crossorigin&gt;&lt;/script&gt;</pre>
<p>
{% blocktrans trimmed %}
Then, copy the following code to the place of your website where you want the widget to show up:
@@ -32,7 +32,7 @@
{% abseventurl request.event "presale:event.index" as indexurl %}
{% endif %}
{% if form.cleaned_data.compatibility_mode %}
<pre>&lt;div class="pretix-widget-compat" event="{% abseventurl request.event "presale:event.index" %}"{% if form.cleaned_data.subevent %} subevent="{{ form.cleaned_data.subevent.pk }}"{% endif %}{% if form.cleaned_data.voucher %} voucher="{{ form.cleaned_data.voucher }}"{% endif %} single-item-select="button"&gt;&lt;/div&gt;
<pre>&lt;div class="pretix-widget-compat" event="{% abseventurl request.event "presale:event.index" %}"{% if form.cleaned_data.subevent %} subevent="{{ form.cleaned_data.subevent.pk }}"{% endif %}{% if form.cleaned_data.voucher %} voucher="{{ form.cleaned_data.voucher }}"{% endif %}&gt;&lt;/div&gt;
&lt;noscript&gt;
&lt;div class="pretix-widget"&gt;
&lt;div class="pretix-widget-info-message"&gt;
@@ -45,7 +45,7 @@
&lt;/noscript&gt;
</pre>
{% else %}
<pre>&lt;pretix-widget event="{% abseventurl request.event "presale:event.index" %}"{% if form.cleaned_data.subevent %} subevent="{{ form.cleaned_data.subevent.pk }}"{% endif %}{% if form.cleaned_data.voucher %} voucher="{{ form.cleaned_data.voucher }}"{% endif %} single-item-select="button"&gt;&lt;/pretix-widget&gt;
<pre>&lt;pretix-widget event="{% abseventurl request.event "presale:event.index" %}"{% if form.cleaned_data.subevent %} subevent="{{ form.cleaned_data.subevent.pk }}"{% endif %}{% if form.cleaned_data.voucher %} voucher="{{ form.cleaned_data.voucher }}"{% endif %}&gt;&lt;/pretix-widget&gt;
&lt;noscript&gt;
&lt;div class="pretix-widget"&gt;
&lt;div class="pretix-widget-info-message"&gt;
@@ -1,5 +1,7 @@
{% load i18n %}
{% load bootstrap3 %}
{% load rich_text %}
{{ request.event.settings.payment_giftcard_public_description|rich_text }}
<input name="giftcard" class="form-control" placeholder="{% trans "Gift card code" %}">
{% bootstrap_form form layout='checkout' %}
@@ -59,7 +59,7 @@
</form>
</div>
<div class="row" id="question-stats">
<div class="row">
{% if not stats %}
<div class="empty-collection col-md-10 col-xs-12">
<p>
@@ -81,7 +81,7 @@
<div class="chart" id="question_chart" data-type="{{ question.type }}">
</div>
<script type="application/json" id="question-chart-data">{{ stats_json|escapejson }}</script>
{{ stats|json_script:"question-chart-data" }}
</div>
<div class="col-md-5 col-xs-12">
<table class="table table-bordered table-hover">
@@ -89,7 +89,8 @@
<tr>
<th>{% trans "Answer" %}</th>
<th class="text-right">{% trans "Count" %}</th>
<th class="text-right">{% trans "Percentage" %}</th>
<th class="text-right">{% trans "% of answers" %}</th>
<th class="text-right">{% trans "% of tickets" %}</th>
</tr>
</thead>
<tbody>
@@ -102,6 +103,7 @@
</td>
<td class="text-right">{{ stat.count }}</td>
<td class="text-right">{{ stat.percentage|floatformat:1 }} %</td>
<td class="text-right">{{ stat.percentage_attendees|floatformat:1 }} %</td>
</tr>
{% endfor %}
</tbody>
@@ -110,6 +112,7 @@
<td><strong>{% trans "Sum" %}</strong></td>
<td class="text-right"><strong>{{ total }}</strong></td>
<td></td>
<td></td>
</tr>
</tfoot>
</table>
@@ -200,6 +200,24 @@
{% bootstrap_field sform.cookie_consent_dialog_button_yes layout="control" %}
{% bootstrap_field sform.cookie_consent_dialog_button_no layout="control" %}
</fieldset>
<fieldset id="tab-organizer-accessibility">
<legend>{% trans "Accessibility" %}</legend>
<div class="alert alert-legal">
{% blocktrans trimmed with a_href="https://docs.pretix.eu/trust/accessibility/" %}
Some jurisdictions, including the European Union, require you to publish information
about the accessibility of your ticket shop. You can find a template in
<a href="https://docs.pretix.eu/trust/accessibility/" target="_blank">our documentation</a>.
{% endblocktrans %}
</div>
{% bootstrap_field sform.accessibility_title layout="control" %}
{% bootstrap_field sform.accessibility_url layout="control" %}
<div class="row">
<div class="col-md-9 col-md-offset-3">
<p class="text-muted">{% trans "Instead of an URL, you can also configure a text that will be shown within pretix. This will be ignored if a URL is configured." %}</p>
</div>
</div>
{% bootstrap_field sform.accessibility_text layout="control" %}
</fieldset>
<fieldset>
<legend>{% trans "Reusable media" %}</legend>
{% bootstrap_field sform.reusable_media_active layout="control" %}
@@ -5,6 +5,7 @@
{% load captureas %}
{% load static %}
{% load eventsignal %}
{% load dialog %}
{% block title %}{% trans "Change multiple dates" context "subevent" %}{% endblock %}
{% block content %}
<h1>
@@ -182,21 +183,22 @@
</fieldset>
<fieldset>
<legend>{% trans "Quotas" %}</legend>
{% if sampled_quotas|default_if_none:"NONE" == "NONE" %}
<div class="alert alert-warning">
{% blocktrans trimmed %}
You selected a set of dates that currently have different quota setups. You can therefore
not change their quotas in bulk. If you want, you can set up a new set of quotas to
<strong>replace</strong> the quota setup of all selected dates.
{% endblocktrans %}
</div>
{% endif %}
<div class="bulk-edit-field-group">
<div class="bulk-edit-field-group"
{% if sampled_quotas|default_if_none:"NONE" == "NONE" %}
data-confirm-dialog="#confirm-override-quotas"
{% endif %}>
<label class="field-toggle">
<input type="checkbox" name="_bulk" value="__quotas" {% if "__quotas" in bulk_selected %}checked{% endif %}>
{% trans "change" context "form_bulk" %}
</label>
<div class="field-content">
{% if sampled_quotas|default_if_none:"NONE" == "NONE" %}
<div class="alert alert-warning">
{% trans "You selected a set of dates that currently have different quota setups." %}
{% trans "Using this option will <strong>delete all current quotas</strong> from <strong>all selected dates</strong>." %}
</div>
{% endif %}
<div class="formset" data-formset data-formset-prefix="{{ formset.prefix }}">
{{ formset.management_form }}
{% bootstrap_formset_errors formset %}
@@ -271,7 +273,7 @@
<fieldset>
<legend>{% trans "Check-in lists" %}</legend>
{% if sampled_lists|default_if_none:"NONE" == "NONE" %}
<div class="alert alert-warning">
<div class="alert alert-info">
{% blocktrans trimmed %}
You selected a set of dates that currently have different check-in list setups. You can
therefore not change their check-in lists in bulk.
@@ -367,4 +369,17 @@
</button>
</div>
</form>
{% trans "Delete existing quotas" as dialog_title %}
{% trans "Using this option will <strong>delete all current quotas</strong> from <strong>all selected dates</strong>." as dialog_text %}
{% trans "This cannot be reverted. Are you sure to proceed?" as dialog_text2 %}
{% dialog "confirm-override-quotas" dialog_title dialog_text|add:" "|add:dialog_text2 icon="trash" %}
<p class="modal-card-confirm modal-card-confirm-spread">
<button class="btn btn-lg btn-default" value="no">
{% trans "Cancel" %}
</button>
<button class="btn btn-lg btn-danger" value="yes">
{% trans "Proceed" %}
</button>
</p>
{% enddialog %}
{% endblock %}
@@ -22,7 +22,7 @@
<button class="btn btn-primary sr-only" type="submit"></button>
</form>
<div class="sr-only alert alert-danger" id="webauthn-error">
<div class="alert alert-danger hidden" id="webauthn-error">
{% trans "Device registration failed." %}
</div>
<script type="text/json" id="webauthn-enroll">
@@ -18,7 +18,7 @@
<input class="form-control" id="webauthn-response" name="webauthn"
type="hidden">
{% if jsondata %}
<div class="sr-only alert alert-danger" id="webauthn-error">
<div class="alert alert-danger hidden" id="webauthn-error">
{% trans "WebAuthn failed. Check that the correct authentication device is correctly plugged in." %}
</div>
<p><small>
+4
View File
@@ -96,6 +96,9 @@ from pretix.control.views.user import RecentAuthenticationRequiredMixin
from pretix.helpers.database import rolledback_transaction
from pretix.multidomain.urlreverse import build_absolute_uri, get_event_domain
from pretix.plugins.stripe.payment import StripeSettingsHolder
from pretix.presale.views.widget import (
version_default as widget_version_default,
)
from ...base.i18n import language
from ...base.models.items import (
@@ -1408,6 +1411,7 @@ class WidgetSettings(EventSettingsViewMixin, EventPermissionRequiredMixin, FormV
def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
ctx['urlprefix'] = settings.SITE_URL
ctx['widget_version_default'] = widget_version_default
domain = get_event_domain(self.request.event, fallback=True)
if domain:
siteurlsplit = urlsplit(settings.SITE_URL)
+21 -15
View File
@@ -64,8 +64,9 @@ from pretix.api.serializers.item import (
)
from pretix.base.forms import I18nFormSet
from pretix.base.models import (
CartPosition, Item, ItemCategory, ItemVariation, Order, Question,
QuestionAnswer, QuestionOption, Quota, SeatCategoryMapping, Voucher,
CartPosition, Item, ItemCategory, ItemVariation, Order, OrderPosition,
Question, QuestionAnswer, QuestionOption, Quota, SeatCategoryMapping,
Voucher,
)
from pretix.base.models.event import SubEvent
from pretix.base.models.items import ItemAddOn, ItemBundle, ItemMetaValue
@@ -665,36 +666,41 @@ class QuestionView(EventPermissionRequiredMixin, QuestionMixin, ChartContainingV
template_name_field = 'question'
def get_answer_statistics(self):
opqs = OrderPosition.objects.filter(
order__event=self.request.event,
)
qs = QuestionAnswer.objects.filter(
question=self.object, orderposition__isnull=False,
orderposition__order__event=self.request.event
)
if self.request.GET.get("subevent", "") != "":
qs = qs.filter(orderposition__subevent=self.request.GET["subevent"])
opqs = opqs.filter(subevent=self.request.GET["subevent"])
s = self.request.GET.get("status", "np")
if s != "":
if s == 'o':
qs = qs.filter(orderposition__order__status=Order.STATUS_PENDING,
orderposition__order__expires__lt=now().replace(hour=0, minute=0, second=0))
opqs = opqs.filter(order__status=Order.STATUS_PENDING,
order__expires__lt=now().replace(hour=0, minute=0, second=0))
elif s == 'np':
qs = qs.filter(orderposition__order__status__in=[Order.STATUS_PENDING, Order.STATUS_PAID])
opqs = opqs.filter(order__status__in=[Order.STATUS_PENDING, Order.STATUS_PAID])
elif s == 'pv':
qs = qs.filter(
Q(orderposition__order__status=Order.STATUS_PAID) |
Q(orderposition__order__status=Order.STATUS_PENDING, orderposition__order__valid_if_pending=True)
opqs = opqs.filter(
Q(order__status=Order.STATUS_PAID) |
Q(order__status=Order.STATUS_PENDING, order__valid_if_pending=True)
)
elif s == 'ne':
qs = qs.filter(orderposition__order__status__in=[Order.STATUS_PENDING, Order.STATUS_EXPIRED])
opqs = opqs.filter(order__status__in=[Order.STATUS_PENDING, Order.STATUS_EXPIRED])
else:
qs = qs.filter(orderposition__order__status=s)
opqs = opqs.filter(order__status=s)
if s not in (Order.STATUS_CANCELED, ""):
qs = qs.filter(orderposition__canceled=False)
opqs = opqs.filter(canceled=False)
if self.request.GET.get("item", "") != "":
i = self.request.GET.get("item", "")
qs = qs.filter(orderposition__item_id__in=(i,))
opqs = opqs.filter(item_id__in=(i,))
qs = qs.filter(orderposition__in=opqs)
op_cnt = opqs.filter(item__in=self.object.items.all()).count()
if self.object.type == Question.TYPE_FILE:
qs = [
@@ -734,6 +740,7 @@ class QuestionView(EventPermissionRequiredMixin, QuestionMixin, ChartContainingV
total = sum(a['count'] for a in r)
for a in r:
a['percentage'] = (a['count'] / total * 100.) if total else 0
a['percentage_attendees'] = (a['count'] / op_cnt * 100.) if op_cnt else 0
return r, total
def get_context_data(self, **kwargs):
@@ -741,7 +748,6 @@ class QuestionView(EventPermissionRequiredMixin, QuestionMixin, ChartContainingV
ctx['items'] = self.object.items.all()
stats = self.get_answer_statistics()
ctx['stats'], ctx['total'] = stats
ctx['stats_json'] = json.dumps(stats)
return ctx
def get_object(self, queryset=None) -> Question:
+18 -17
View File
@@ -548,23 +548,24 @@ class OrderDetail(OrderView):
unsent_invoices = [ii.pk for ii in ctx['invoices'] if not ii.sent_to_customer]
if unsent_invoices:
ctx['invoices_send_link'] = reverse('control:event.order.sendmail', kwargs={
'event': self.request.event.slug,
'organizer': self.request.event.organizer.slug,
'code': self.order.code
}) + '?' + urlencode({
'subject': ngettext('Your invoice', 'Your invoices', len(unsent_invoices)),
'message': ngettext(
'Hello,\n\nplease find your invoice attached to this email.\n\n'
'Your {event} team',
'Hello,\n\nplease find your invoices attached to this email.\n\n'
'Your {event} team',
len(unsent_invoices)
).format(
event="{event}",
),
'attach_invoices': unsent_invoices
}, doseq=True)
with language(self.order.locale):
ctx['invoices_send_link'] = reverse('control:event.order.sendmail', kwargs={
'event': self.request.event.slug,
'organizer': self.request.event.organizer.slug,
'code': self.order.code
}) + '?' + urlencode({
'subject': ngettext('Your invoice', 'Your invoices', len(unsent_invoices)),
'message': ngettext(
'Hello,\n\nplease find your invoice attached to this email.\n\n'
'Your {event} team',
'Hello,\n\nplease find your invoices attached to this email.\n\n'
'Your {event} team',
len(unsent_invoices)
).format(
event="{event}",
),
'attach_invoices': unsent_invoices
}, doseq=True)
return ctx
@@ -0,0 +1,133 @@
#
# This file is part of pretix (Community Edition).
#
# Copyright (C) 2014-2020 Raphael Michel and contributors
# Copyright (C) 2020-2021 rami.io GmbH and contributors
#
# This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General
# Public License as published by the Free Software Foundation in version 3 of the License.
#
# ADDITIONAL TERMS APPLY: Pursuant to Section 7 of the GNU Affero General Public License, additional terms are
# applicable granting you additional permissions and placing additional restrictions on your usage of this software.
# Please refer to the pretix LICENSE file to obtain the full terms applicable to this work. If you did not receive
# this file, see <https://pretix.eu/about/en/license>.
#
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
# details.
#
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
# <https://www.gnu.org/licenses/>.
#
#
# backport from Django 5.2 (django/django/template/library.py)
#
# TODO: remove once we upgrade to Django 5.2
from functools import wraps
from inspect import getfullargspec, unwrap
from django.template.exceptions import TemplateSyntaxError
from django.template.library import SimpleNode, parse_bits
class SimpleBlockNode(SimpleNode):
def __init__(self, nodelist, *args, **kwargs):
super().__init__(*args, **kwargs)
self.nodelist = nodelist
def get_resolved_arguments(self, context):
resolved_args, resolved_kwargs = super().get_resolved_arguments(context)
# Restore the "content" argument.
# It will move depending on whether takes_context was passed.
resolved_args.insert(
1 if self.takes_context else 0, self.nodelist.render(context)
)
return resolved_args, resolved_kwargs
def register_simple_block_tag(library, func=None, takes_context=None, name=None, end_name=None):
"""
Register a callable as a compiled block template tag. Example:
@register_simple_block_tag(register)
def hello(content):
return 'world'
"""
def dec(func):
nonlocal end_name
(
params,
varargs,
varkw,
defaults,
kwonly,
kwonly_defaults,
_,
) = getfullargspec(unwrap(func))
function_name = name or func.__name__
if end_name is None:
end_name = f"end{function_name}"
@wraps(func)
def compile_func(parser, token):
tag_params = params.copy()
if takes_context:
if len(tag_params) >= 2 and tag_params[1] == "content":
del tag_params[1]
else:
raise TemplateSyntaxError(
f"{function_name!r} is decorated with takes_context=True so"
" it must have a first argument of 'context' and a second "
"argument of 'content'"
)
elif tag_params and tag_params[0] == "content":
del tag_params[0]
else:
raise TemplateSyntaxError(
f"'{function_name}' must have a first argument of 'content'"
)
bits = token.split_contents()[1:]
target_var = None
if len(bits) >= 2 and bits[-2] == "as":
target_var = bits[-1]
bits = bits[:-2]
nodelist = parser.parse((end_name,))
parser.delete_first_token()
args, kwargs = parse_bits(
parser,
bits,
tag_params,
varargs,
varkw,
defaults,
kwonly,
kwonly_defaults,
takes_context,
function_name,
)
return SimpleBlockNode(
nodelist, func, takes_context, args, kwargs, target_var
)
library.tag(function_name, compile_func)
return func
if func is None:
# @register.simple_block_tag(...)
return dec
elif callable(func):
# @register.simple_block_tag
return dec(func)
else:
raise ValueError("Invalid arguments provided to simple_block_tag")
+29 -1
View File
@@ -22,10 +22,11 @@
import logging
from django import template
from django.core.cache import cache
from django.core.files.storage import default_storage
from pretix import settings
from pretix.helpers.thumb import get_thumbnail
from pretix.helpers.thumb import get_srcset_sizes, get_thumbnail
register = template.Library()
logger = logging.getLogger(__name__)
@@ -46,3 +47,30 @@ def thumb(source, arg):
# default_storage.url works for all files in NanoCDNStorage. For others, this may return an invalid URL.
# But for a fallback, this can probably be accepted.
return source.url if hasattr(source, 'url') else default_storage.url(str(source))
@register.filter
def thumbset(source, arg):
cache_key = f"thumbset:{source}:{arg}"
cached_thumbset = cache.get(cache_key)
if cached_thumbset is not None:
return cached_thumbset
formats = list(set().union(
settings.PILLOW_FORMATS_IMAGE,
settings.PILLOW_FORMATS_QUESTIONS_FAVICON,
settings.PILLOW_FORMATS_QUESTIONS_IMAGE
))
srcs = []
if not cached_thumbset:
for thumbsize, factor in get_srcset_sizes(arg):
try:
t = get_thumbnail(source, thumbsize, formats=formats, skip_if_limited_by_input=True)
if t:
srcs.append(f"{t.thumb.url} {factor}")
except:
logger.exception(f'Failed to create thumbnail of {source} at {thumbsize}')
srcset = ", ".join(srcs)
cache.set(cache_key, srcset, timeout=3600)
return srcset
+59 -21
View File
@@ -96,7 +96,27 @@ def get_minsize(size):
return (min_width, min_height)
def get_srcset_sizes(size):
w, h = size.split("x")
for m in (2, 3):
if w.endswith("_"):
new_w = f"{int(w.rstrip('_')) * m}_"
else:
new_w = f"{int(w) * m}"
if h.endswith("_"):
new_h = f"{int(h.rstrip('_')) * m}_"
elif h.endswith("^"):
new_h = f"{int(h.rstrip('^')) * m}^"
else:
new_h = f"{int(h) * m}"
yield f"{new_w}x{new_h}", f"{m}x"
def get_sizes(size, imgsize):
"""
:return: Tuple of (new_size, crop_box, size_limited_by_input)
"""
crop = False
if size.endswith('^'):
crop = True
@@ -112,37 +132,48 @@ def get_sizes(size, imgsize):
else:
size = [int(size), int(size)]
wfactor = min(1, size[0] / imgsize[0])
hfactor = min(1, size[1] / imgsize[1])
limited_by_input = size[1] > imgsize[1] and size[0] > imgsize[0]
if crop:
# currently crop and min-size cannot be combined
wfactor = min(1, size[0] / imgsize[0])
hfactor = min(1, size[1] / imgsize[1])
if wfactor == hfactor:
return (int(imgsize[0] * wfactor), int(imgsize[1] * hfactor)), \
(0, int((imgsize[1] * wfactor - imgsize[1] * hfactor) / 2),
imgsize[0] * hfactor, int((imgsize[1] * wfactor + imgsize[1] * wfactor) / 2))
return (
(int(imgsize[0] * wfactor), int(imgsize[1] * hfactor)),
(0, int((imgsize[1] * wfactor - imgsize[1] * hfactor) / 2),
imgsize[0] * hfactor, int((imgsize[1] * wfactor + imgsize[1] * wfactor) / 2)),
limited_by_input
)
elif wfactor > hfactor:
return (int(size[0]), int(imgsize[1] * wfactor)), \
(0, int((imgsize[1] * wfactor - size[1]) / 2), size[0], int((imgsize[1] * wfactor + size[1]) / 2))
return (
(int(size[0]), int(imgsize[1] * wfactor)),
(0, int((imgsize[1] * wfactor - size[1]) / 2), size[0], int((imgsize[1] * wfactor + size[1]) / 2)),
limited_by_input
)
else:
return (int(imgsize[0] * hfactor), int(size[1])), \
(int((imgsize[0] * hfactor - size[0]) / 2), 0, int((imgsize[0] * hfactor + size[0]) / 2), size[1])
return (
(int(imgsize[0] * hfactor), int(size[1])),
(int((imgsize[0] * hfactor - size[0]) / 2), 0, int((imgsize[0] * hfactor + size[0]) / 2), size[1]),
limited_by_input
)
else:
wfactor = min(1, size[0] / imgsize[0])
hfactor = min(1, size[1] / imgsize[1])
if wfactor == hfactor:
return (int(imgsize[0] * hfactor), int(imgsize[1] * wfactor)), None
return (int(imgsize[0] * hfactor), int(imgsize[1] * wfactor)), None, limited_by_input
elif wfactor < hfactor:
return (size[0], int(imgsize[1] * wfactor)), None
return (size[0], int(imgsize[1] * wfactor)), None, limited_by_input
else:
return (int(imgsize[0] * hfactor), size[1]), None
return (int(imgsize[0] * hfactor), size[1]), None, limited_by_input
def resize_image(image, size):
"""
:return: Tuple of (new_image, size_limited_by_input)
"""
# before we calc thumbnail, we need to check and apply EXIF-orientation
image = ImageOps.exif_transpose(image)
new_size, crop = get_sizes(size, image.size)
new_size, crop, limited_by_input = get_sizes(size, image.size)
image = image.resize(new_size, resample=Resampling.LANCZOS)
if crop:
image = image.crop(crop)
@@ -162,10 +193,10 @@ def resize_image(image, size):
image = image.crop((new_x, new_y, new_x + new_width, new_y + new_height))
return image
return image, limited_by_input
def create_thumbnail(source, size, formats=None):
def create_thumbnail(source, size, formats=None, skip_if_limited_by_input=False):
source_name = str(source)
# HACK: this ensures that the file is opened in binary mode, which is not guaranteed otherwise, esp. for
@@ -181,10 +212,17 @@ def create_thumbnail(source, size, formats=None):
raise ThumbnailError('Could not load image')
frames = []
any_limited_by_input = False
durations = []
for f in ImageSequence.Iterator(image):
durations.append(f.info.get("duration", 1000))
frames.append(resize_image(f, size))
img, limited_by_input = resize_image(f, size)
any_limited_by_input = any_limited_by_input or limited_by_input
frames.append(img)
if any_limited_by_input and skip_if_limited_by_input:
return
image_out = frames[0]
save_kwargs = {}
source_ext = os.path.splitext(source_name)[1].lower()
@@ -223,10 +261,10 @@ def create_thumbnail(source, size, formats=None):
return t
def get_thumbnail(source, size, formats=None):
def get_thumbnail(source, size, formats=None, skip_if_limited_by_input=False):
# Assumes files are immutable
try:
source_name = str(source)
return Thumbnail.objects.get(source=source_name, size=size)
except Thumbnail.DoesNotExist:
return create_thumbnail(source, size, formats=formats)
return create_thumbnail(source, size, formats=formats, skip_if_limited_by_input=skip_if_limited_by_input)
File diff suppressed because it is too large Load Diff
+182 -144
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:08+0000\n"
"POT-Creation-Date: 2025-06-26 09:11+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 @@ msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:89
msgid "Continue"
msgstr ""
@@ -328,13 +329,13 @@ msgid "Currently inside"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:71
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "Yes"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:72
#: pretix/static/pretixcontrol/js/ui/question.js:138
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "No"
msgstr ""
@@ -343,63 +344,68 @@ msgstr ""
msgid "close"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:58
#: pretix/static/pretixbase/js/asynctask.js:135
#: pretix/static/pretixbase/js/addressform.js:59
#: pretix/static/pretixpresale/js/ui/main.js:513
msgid "required"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:63
#: pretix/static/pretixbase/js/asynctask.js:140
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:69
#: pretix/static/pretixbase/js/asynctask.js:146
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
"browser and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:105
#: pretix/static/pretixbase/js/asynctask.js:193
#: pretix/static/pretixbase/js/asynctask.js:198
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:108
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:160
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:201
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:230
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:238
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:301
#: pretix/static/pretixcontrol/js/ui/main.js:71
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr ""
@@ -604,58 +610,60 @@ msgstr ""
msgid "Generating messages …"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:109
#: pretix/static/pretixcontrol/js/ui/main.js:69
msgid "Unknown error."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:330
msgid "Your color has great contrast and is very easy to read!"
#: pretix/static/pretixcontrol/js/ui/main.js:292
msgid "Your color has great contrast and will provide excellent accessibility."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:334
msgid "Your color has decent contrast and is probably good-enough to read!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:338
#: pretix/static/pretixcontrol/js/ui/main.js:296
msgid ""
"Your color has bad contrast for text on white background, please choose a "
"darker shade."
"Your color has decent contrast and is sufficient for minimum accessibility "
"requirements."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:454
#: pretix/static/pretixcontrol/js/ui/main.js:474
#: pretix/static/pretixcontrol/js/ui/main.js:300
msgid ""
"Your color has insufficient contrast to white. Accessibility of your site "
"will be impacted."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:416
#: pretix/static/pretixcontrol/js/ui/main.js:436
msgid "Search query"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:472
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:473
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:477
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:820
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:823
#: pretix/static/pretixcontrol/js/ui/main.js:814
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:981
#: pretix/static/pretixcontrol/js/ui/main.js:972
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1021
#: pretix/static/pretixcontrol/js/ui/main.js:1012
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1102
#: pretix/static/pretixcontrol/js/ui/main.js:1093
msgid "You have unsaved changes!"
msgstr ""
@@ -667,11 +675,11 @@ msgstr ""
msgid "No results"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:42
#: pretix/static/pretixcontrol/js/ui/question.js:41
msgid "Others"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:82
#: pretix/static/pretixcontrol/js/ui/question.js:81
msgid "Count"
msgstr ""
@@ -681,48 +689,58 @@ msgid_plural "({num} more dates)"
msgstr[0] ""
msgstr[1] ""
#: pretix/static/pretixpresale/js/ui/cart.js:43
#: pretix/static/pretixpresale/js/ui/cart.js:47
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as theyre available."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:45
#: pretix/static/pretixpresale/js/ui/cart.js:49
msgid "Cart expired"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:58
#: pretix/static/pretixpresale/js/ui/cart.js:84
msgid "Your cart is about to expire."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:62
msgid "The items in your cart are reserved for you for one minute."
msgid_plural "The items in your cart are reserved for you for {num} minutes."
msgstr[0] ""
msgstr[1] ""
#: pretix/static/pretixpresale/js/ui/main.js:215
#: pretix/static/pretixpresale/js/ui/cart.js:83
msgid "Your cart has expired."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:86
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as they're available."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Do you want to renew the reservation period?"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:90
msgid "Renew reservation"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:194
msgid "The organizer keeps %(currency)s %(amount)s"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:223
#: pretix/static/pretixpresale/js/ui/main.js:202
msgid "You get %(currency)s %(amount)s back"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:239
#: pretix/static/pretixpresale/js/ui/main.js:218
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:458
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:510
msgid "required"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:554
#: pretix/static/pretixpresale/js/ui/main.js:574
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:565
#: pretix/static/pretixpresale/js/ui/main.js:558
msgid "Your local time:"
msgstr ""
@@ -747,371 +765,391 @@ msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:19
msgctxt "widget"
msgid "Price"
msgid "Filter events by"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:20
msgctxt "widget"
msgid "Filter"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
#: pretix/static/pretixpresale/js/widget/widget.js:23
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/js/widget/widget.js:24
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/js/widget/widget.js:25
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/js/widget/widget.js:26
#, javascript-format
msgctxt "widget"
msgid "Select variant %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.js:27
msgctxt "widget"
msgid "Sold out"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
msgctxt "widget"
msgid "Buy"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.js:29
msgctxt "widget"
msgid "Register"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
msgctxt "widget"
msgid "Reserved"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
msgctxt "widget"
msgid "FREE"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
msgctxt "widget"
msgid "from %(currency)s %(price)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.js:33
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.js:34
msgctxt "widget"
msgid "incl. %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:33
#: pretix/static/pretixpresale/js/widget/widget.js:35
msgctxt "widget"
msgid "plus %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:34
#: pretix/static/pretixpresale/js/widget/widget.js:36
msgctxt "widget"
msgid "incl. taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/js/widget/widget.js:37
msgctxt "widget"
msgid "plus taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#, javascript-format
msgctxt "widget"
msgid "currently available: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/js/widget/widget.js:39
msgctxt "widget"
msgid "Only available with a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:43
msgctxt "widget"
msgid "Not yet available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/js/widget/widget.js:41
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:42
msgctxt "widget"
msgid "Currently not available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.js:44
#, javascript-format
msgctxt "widget"
msgid "minimum amount to order: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:43
#: pretix/static/pretixpresale/js/widget/widget.js:45
msgctxt "widget"
msgid "Close ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.js:46
msgctxt "widget"
msgid "The ticket shop could not be loaded."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:45
#: pretix/static/pretixpresale/js/widget/widget.js:47
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
"in a new tab to continue."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:47
#: pretix/static/pretixpresale/js/widget/widget.js:49
msgctxt "widget"
msgid "Open ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:48
#: pretix/static/pretixpresale/js/widget/widget.js:50
msgctxt "widget"
msgid "Checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/js/widget/widget.js:51
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/js/widget/widget.js:52
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
"this ticket shop. Please click \"Continue\" to retry in a new tab."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:54
msgctxt "widget"
msgid "Waiting list"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:53
#: pretix/static/pretixpresale/js/widget/widget.js:55
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
"products, they will be added to your existing cart."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:57
msgctxt "widget"
msgid "Resume checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:58
msgctxt "widget"
msgid "Redeem a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:59
msgctxt "widget"
msgid "Redeem"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Voucher code"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Close"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:62
msgctxt "widget"
msgid "Hide variants"
msgid "Close checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:63
msgctxt "widget"
msgid "Choose a different event"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
msgctxt "widget"
msgid "Choose a different date"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
msgctxt "widget"
msgid "Back"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
msgctxt "widget"
msgid "Next month"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
msgctxt "widget"
msgid "Previous month"
msgid "Choose a different event"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
msgctxt "widget"
msgid "Next week"
msgid "Choose a different date"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
msgctxt "widget"
msgid "Previous week"
msgid "Back"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:70
msgctxt "widget"
msgid "Open seat selection"
msgid "Next month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
msgctxt "widget"
msgid "Previous month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
msgctxt "widget"
msgid "Next week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:73
msgctxt "widget"
msgid "Previous week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
msgctxt "widget"
msgid "Open seat selection"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
"add yourself to the waiting list. We will then notify if seats are available "
"again."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.js:76
msgctxt "widget"
msgid "Load more"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:78
msgid "Mo"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:79
msgid "Tu"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:80
msgid "We"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:81
msgid "Th"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "Fr"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "Sa"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "Su"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.js:88
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/js/widget/widget.js:89
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/js/widget/widget.js:91
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/js/widget/widget.js:94
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.js:95
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:96
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:97
msgid "April"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.js:98
msgid "May"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.js:99
msgid "June"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.js:100
msgid "July"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.js:101
msgid "August"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.js:102
msgid "September"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.js:103
msgid "October"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.js:104
msgid "November"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.js:105
msgid "December"
msgstr ""
File diff suppressed because it is too large Load Diff
+196 -136
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:08+0000\n"
"POT-Creation-Date: 2025-06-26 09:11+0000\n"
"PO-Revision-Date: 2021-09-15 11:22+0000\n"
"Last-Translator: Mohamed Tawfiq <mtawfiq@wafyapp.com>\n"
"Language-Team: Arabic <https://translate.pretix.eu/projects/pretix/pretix-js/"
@@ -135,6 +135,7 @@ msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:89
msgid "Continue"
msgstr "المتابعة"
@@ -340,13 +341,13 @@ msgid "Currently inside"
msgstr "حاليا بالداخل"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:71
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "Yes"
msgstr "نعم"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:72
#: pretix/static/pretixcontrol/js/ui/question.js:138
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "No"
msgstr "لا"
@@ -358,8 +359,12 @@ msgstr "لا"
msgid "close"
msgstr "إغلاق"
#: pretix/static/pretixbase/js/asynctask.js:58
#: pretix/static/pretixbase/js/asynctask.js:135
#: pretix/static/pretixbase/js/addressform.js:59
#: pretix/static/pretixpresale/js/ui/main.js:513
msgid "required"
msgstr "مطلوب"
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
@@ -367,13 +372,11 @@ msgstr ""
"تتم معالجة طلبك حاليا. قد يستغرق الأمر بضع دقائق بناء على حجم الفعالية التي "
"اخترت."
#: pretix/static/pretixbase/js/asynctask.js:63
#: pretix/static/pretixbase/js/asynctask.js:140
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr "طلبك قيد الانتظار وستتم معالجته قريبا."
#: pretix/static/pretixbase/js/asynctask.js:69
#: pretix/static/pretixbase/js/asynctask.js:146
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
@@ -382,36 +385,36 @@ msgstr ""
"وصل طلبك للخادم وننتظر تنفيذه. إذا استغرق الأمر أكثر من دقيقتين تواصل معنا "
"أو عاود المحاولة مجددا."
#: pretix/static/pretixbase/js/asynctask.js:105
#: pretix/static/pretixbase/js/asynctask.js:193
#: pretix/static/pretixbase/js/asynctask.js:198
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr "حدث خطأ من نوع {code}."
#: pretix/static/pretixbase/js/asynctask.js:108
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
msgstr "لم نتمكن من الاتصال بالخادم، لكن سنواصل المحاولة، رمز آخر خطأ: {code}"
#: pretix/static/pretixbase/js/asynctask.js:160
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr "استغرقت الطلب فترة طويلة، الرجاء المحاولة مرة أخرى."
#: pretix/static/pretixbase/js/asynctask.js:201
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
"لا يمكننا الوصول إلى الخادم حاليا، حاول مرة أخرى من فضلك. رمز الخطأ : {code}"
#: pretix/static/pretixbase/js/asynctask.js:230
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "جاري معالجة طلبك …"
#: pretix/static/pretixbase/js/asynctask.js:238
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
@@ -420,8 +423,11 @@ msgstr ""
"نعمل الآن على ارسال طلبك إلى الخادم، إذا أستغرقت العملية أكثر من دقيقة، يرجى "
"التحقق من اتصالك بالإنترنت ثم أعد تحميل الصفحة مرة أخرى."
#: pretix/static/pretixbase/js/asynctask.js:301
#: pretix/static/pretixcontrol/js/ui/main.js:71
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr "أغلق الرسالة"
@@ -638,58 +644,64 @@ msgstr "حدث خطأ."
msgid "Generating messages …"
msgstr "توليد الرسائل …"
#: pretix/static/pretixcontrol/js/ui/main.js:109
#: pretix/static/pretixcontrol/js/ui/main.js:69
msgid "Unknown error."
msgstr "خطأ غير معروف."
#: pretix/static/pretixcontrol/js/ui/main.js:330
msgid "Your color has great contrast and is very easy to read!"
#: pretix/static/pretixcontrol/js/ui/main.js:292
#, fuzzy
#| msgid "Your color has great contrast and is very easy to read!"
msgid "Your color has great contrast and will provide excellent accessibility."
msgstr "اللون يتمتع بتباين كبير وتسهل قراءته!"
#: pretix/static/pretixcontrol/js/ui/main.js:334
msgid "Your color has decent contrast and is probably good-enough to read!"
#: pretix/static/pretixcontrol/js/ui/main.js:296
#, fuzzy
#| msgid "Your color has decent contrast and is probably good-enough to read!"
msgid ""
"Your color has decent contrast and is sufficient for minimum accessibility "
"requirements."
msgstr "اللون يحظى بتباين معقول ويمكن أن يكون مناسب للقراءة!"
#: pretix/static/pretixcontrol/js/ui/main.js:338
#: pretix/static/pretixcontrol/js/ui/main.js:300
msgid ""
"Your color has bad contrast for text on white background, please choose a "
"darker shade."
msgstr "تباين اللون سيئ للخلفية البيضاء، الرجاء اختيار لون غامق."
"Your color has insufficient contrast to white. Accessibility of your site "
"will be impacted."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:454
#: pretix/static/pretixcontrol/js/ui/main.js:474
#: pretix/static/pretixcontrol/js/ui/main.js:416
#: pretix/static/pretixcontrol/js/ui/main.js:436
msgid "Search query"
msgstr "البحث في الاستفسارات"
#: pretix/static/pretixcontrol/js/ui/main.js:472
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr "الكل"
#: pretix/static/pretixcontrol/js/ui/main.js:473
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr "لا شيء"
#: pretix/static/pretixcontrol/js/ui/main.js:477
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr "المختارة فقط"
#: pretix/static/pretixcontrol/js/ui/main.js:820
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:823
#: pretix/static/pretixcontrol/js/ui/main.js:814
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:981
#: pretix/static/pretixcontrol/js/ui/main.js:972
msgid "Use a different name internally"
msgstr "قم باستخدم اسم مختلف داخليا"
#: pretix/static/pretixcontrol/js/ui/main.js:1021
#: pretix/static/pretixcontrol/js/ui/main.js:1012
msgid "Click to close"
msgstr "اضغط لاغلاق الصفحة"
#: pretix/static/pretixcontrol/js/ui/main.js:1102
#: pretix/static/pretixcontrol/js/ui/main.js:1093
msgid "You have unsaved changes!"
msgstr "لم تقم بحفظ التعديلات!"
@@ -703,11 +715,11 @@ msgstr "حساب السعر الافتراضي…"
msgid "No results"
msgstr "البحث في النتائج"
#: pretix/static/pretixcontrol/js/ui/question.js:42
#: pretix/static/pretixcontrol/js/ui/question.js:41
msgid "Others"
msgstr "غير ذلك"
#: pretix/static/pretixcontrol/js/ui/question.js:82
#: pretix/static/pretixcontrol/js/ui/question.js:81
msgid "Count"
msgstr "احسب"
@@ -721,7 +733,7 @@ msgstr[3] "أيام"
msgstr[4] "أيام عديدة"
msgstr[5] "أخرى"
#: pretix/static/pretixpresale/js/ui/cart.js:43
#: pretix/static/pretixpresale/js/ui/cart.js:47
#, fuzzy
#| msgid "The items in your cart are no longer reserved for you."
msgid ""
@@ -729,11 +741,16 @@ msgid ""
"complete your order as long as theyre available."
msgstr "لم تعد العناصر الموجودة في عربة التسوق الخاصة بك محجوزة لك."
#: pretix/static/pretixpresale/js/ui/cart.js:45
#: pretix/static/pretixpresale/js/ui/cart.js:49
msgid "Cart expired"
msgstr "انتهت صلاحية عربة التسوق"
#: pretix/static/pretixpresale/js/ui/cart.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:58
#: pretix/static/pretixpresale/js/ui/cart.js:84
msgid "Your cart is about to expire."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:62
#, fuzzy
#| msgid "The items in your cart are reserved for you for one minute."
#| msgid_plural ""
@@ -747,32 +764,41 @@ msgstr[3] "سيتم حجز العناصر لك في سلة التسوق لعدة
msgstr[4] "سيتم حجز العناصر لك في سلة التسوق لدقائق {num}."
msgstr[5] "سيتم حجز العناصر لك في سلة التسوق لمدة {num}."
#: pretix/static/pretixpresale/js/ui/main.js:215
#: pretix/static/pretixpresale/js/ui/cart.js:83
#, fuzzy
#| msgid "Cart expired"
msgid "Your cart has expired."
msgstr "انتهت صلاحية عربة التسوق"
#: pretix/static/pretixpresale/js/ui/cart.js:86
#, fuzzy
#| msgid "The items in your cart are no longer reserved for you."
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as they're available."
msgstr "لم تعد العناصر الموجودة في عربة التسوق الخاصة بك محجوزة لك."
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Do you want to renew the reservation period?"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:90
msgid "Renew reservation"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:194
msgid "The organizer keeps %(currency)s %(amount)s"
msgstr "يحصل المنظم على %(currency) %(amount)"
#: pretix/static/pretixpresale/js/ui/main.js:223
#: pretix/static/pretixpresale/js/ui/main.js:202
msgid "You get %(currency)s %(amount)s back"
msgstr "ستسترد %(currency)%(amount)"
#: pretix/static/pretixpresale/js/ui/main.js:239
#: pretix/static/pretixpresale/js/ui/main.js:218
msgid "Please enter the amount the organizer can keep."
msgstr "الرجاء إدخال المبلغ الذي يمكن للمنظم الاحتفاظ به."
#: pretix/static/pretixpresale/js/ui/main.js:458
msgid "Please enter a quantity for one of the ticket types."
msgstr "الرجاء إدخال عدد لأحد أنواع التذاكر."
#: pretix/static/pretixpresale/js/ui/main.js:510
msgid "required"
msgstr "مطلوب"
#: pretix/static/pretixpresale/js/ui/main.js:554
#: pretix/static/pretixpresale/js/ui/main.js:574
msgid "Time zone:"
msgstr "المنطقة الزمنية:"
#: pretix/static/pretixpresale/js/ui/main.js:565
#: pretix/static/pretixpresale/js/ui/main.js:558
msgid "Your local time:"
msgstr "التوقيت المحلي:"
@@ -797,36 +823,46 @@ msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:19
msgctxt "widget"
msgid "Price"
msgid "Filter events by"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:20
msgctxt "widget"
msgid "Filter"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
#: pretix/static/pretixpresale/js/widget/widget.js:23
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/js/widget/widget.js:24
#, fuzzy
#| msgid "Selected only"
msgctxt "widget"
msgid "Select"
msgstr "المختارة فقط"
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/js/widget/widget.js:25
#, fuzzy, javascript-format
#| msgid "Selected only"
msgctxt "widget"
msgid "Select %s"
msgstr "المختارة فقط"
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/js/widget/widget.js:26
#, fuzzy, javascript-format
#| msgctxt "widget"
#| msgid "See variations"
@@ -834,75 +870,75 @@ msgctxt "widget"
msgid "Select variant %s"
msgstr "أنظر إلى الاختلافات"
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.js:27
msgctxt "widget"
msgid "Sold out"
msgstr "تم البيع بالكامل"
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
msgctxt "widget"
msgid "Buy"
msgstr "اشتري"
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.js:29
msgctxt "widget"
msgid "Register"
msgstr "سجل"
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
msgctxt "widget"
msgid "Reserved"
msgstr "محجوز"
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
msgctxt "widget"
msgid "FREE"
msgstr "مجاني"
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
msgctxt "widget"
msgid "from %(currency)s %(price)s"
msgstr "من %(currency) s %(price)s"
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.js:33
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.js:34
msgctxt "widget"
msgid "incl. %(rate)s% %(taxname)s"
msgstr "يشمل %(rate)s% %(taxname)s"
#: pretix/static/pretixpresale/js/widget/widget.js:33
#: pretix/static/pretixpresale/js/widget/widget.js:35
msgctxt "widget"
msgid "plus %(rate)s% %(taxname)s"
msgstr "بالإضافة إلى %(rate)s% %(taxname)s"
#: pretix/static/pretixpresale/js/widget/widget.js:34
#: pretix/static/pretixpresale/js/widget/widget.js:36
msgctxt "widget"
msgid "incl. taxes"
msgstr "شامل الضريبة"
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/js/widget/widget.js:37
msgctxt "widget"
msgid "plus taxes"
msgstr "بالإضافة إلى الضرائب"
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#, javascript-format
msgctxt "widget"
msgid "currently available: %s"
msgstr "متوفر حاليا: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/js/widget/widget.js:39
msgctxt "widget"
msgid "Only available with a voucher"
msgstr "متوفرة مع القسيمة فقط"
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:43
#, fuzzy
#| msgctxt "widget"
#| msgid "currently available: %s"
@@ -910,12 +946,12 @@ msgctxt "widget"
msgid "Not yet available"
msgstr "متوفر حاليا: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/js/widget/widget.js:41
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:42
#, fuzzy
#| msgctxt "widget"
#| msgid "currently available: %s"
@@ -923,30 +959,30 @@ msgctxt "widget"
msgid "Currently not available"
msgstr "متوفر حاليا: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.js:44
#, javascript-format
msgctxt "widget"
msgid "minimum amount to order: %s"
msgstr "الحد الأدنى للطلب: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:43
#: pretix/static/pretixpresale/js/widget/widget.js:45
msgctxt "widget"
msgid "Close ticket shop"
msgstr "إغلاق متجر التذاكر"
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.js:46
msgctxt "widget"
msgid "The ticket shop could not be loaded."
msgstr "لا يمكن تحميل متجر التذاكر."
#: pretix/static/pretixpresale/js/widget/widget.js:45
#: pretix/static/pretixpresale/js/widget/widget.js:47
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
"in a new tab to continue."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:47
#: pretix/static/pretixpresale/js/widget/widget.js:49
#, fuzzy
#| msgctxt "widget"
#| msgid "Close ticket shop"
@@ -954,7 +990,7 @@ msgctxt "widget"
msgid "Open ticket shop"
msgstr "إغلاق متجر التذاكر"
#: pretix/static/pretixpresale/js/widget/widget.js:48
#: pretix/static/pretixpresale/js/widget/widget.js:50
#, fuzzy
#| msgctxt "widget"
#| msgid "Resume checkout"
@@ -962,24 +998,24 @@ msgctxt "widget"
msgid "Checkout"
msgstr "استئناف الدفع"
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/js/widget/widget.js:51
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr "لا يمكن إنشاء سلة التسوق. الرجاء المحاولة مرة أخرى في وقت لاحق"
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/js/widget/widget.js:52
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
"this ticket shop. Please click \"Continue\" to retry in a new tab."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:54
msgctxt "widget"
msgid "Waiting list"
msgstr "قائمة الإنتظار"
#: pretix/static/pretixpresale/js/widget/widget.js:53
#: pretix/static/pretixpresale/js/widget/widget.js:55
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
@@ -988,37 +1024,50 @@ msgstr ""
"لديك الآن سلة تسوق مفعلة لهذا الحدث. إذا قمت باختيار منتجات أخرى سيتم "
"إضافتها إلى سلة التسوق الموجودة حالياً."
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:57
msgctxt "widget"
msgid "Resume checkout"
msgstr "استئناف الدفع"
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:58
msgctxt "widget"
msgid "Redeem a voucher"
msgstr "استبدال قسيمة"
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:59
msgctxt "widget"
msgid "Redeem"
msgstr "استبدال"
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Voucher code"
msgstr "رمز القسيمة"
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Close"
msgstr "إغلاق"
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/js/widget/widget.js:62
#, fuzzy
#| msgctxt "widget"
#| msgid "Resume checkout"
msgctxt "widget"
msgid "Close checkout"
msgstr "استئناف الدفع"
#: pretix/static/pretixpresale/js/widget/widget.js:63
msgctxt "widget"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
msgctxt "widget"
msgid "Continue"
msgstr "استمرار"
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/js/widget/widget.js:65
#, fuzzy
#| msgctxt "widget"
#| msgid "See variations"
@@ -1026,7 +1075,7 @@ msgctxt "widget"
msgid "Show variants"
msgstr "أنظر إلى الاختلافات"
#: pretix/static/pretixpresale/js/widget/widget.js:62
#: pretix/static/pretixpresale/js/widget/widget.js:66
#, fuzzy
#| msgctxt "widget"
#| msgid "See variations"
@@ -1034,47 +1083,47 @@ msgctxt "widget"
msgid "Hide variants"
msgstr "أنظر إلى الاختلافات"
#: pretix/static/pretixpresale/js/widget/widget.js:63
#: pretix/static/pretixpresale/js/widget/widget.js:67
msgctxt "widget"
msgid "Choose a different event"
msgstr "اختر فعالية أخرى"
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/js/widget/widget.js:68
msgctxt "widget"
msgid "Choose a different date"
msgstr "اختر تاريخا آخر"
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.js:69
msgctxt "widget"
msgid "Back"
msgstr "العودة"
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.js:70
msgctxt "widget"
msgid "Next month"
msgstr "الشهر القادم"
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.js:71
msgctxt "widget"
msgid "Previous month"
msgstr "الشهر السابق"
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.js:72
msgctxt "widget"
msgid "Next week"
msgstr "الأسبوع القادم"
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.js:73
msgctxt "widget"
msgid "Previous week"
msgstr "الأسبوع السابق"
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.js:74
msgctxt "widget"
msgid "Open seat selection"
msgstr "خيارات المقاعد"
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.js:75
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -1082,117 +1131,128 @@ msgid ""
"again."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.js:76
#, fuzzy
#| msgid "Load more"
msgctxt "widget"
msgid "Load more"
msgstr "تحميل المزيد"
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:78
msgid "Mo"
msgstr "الإثنين"
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:79
msgid "Tu"
msgstr "الثلاثاء"
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:80
msgid "We"
msgstr "الأربعاء"
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:81
msgid "Th"
msgstr "الخميس"
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "Fr"
msgstr "الجمعة"
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "Sa"
msgstr "السبت"
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "Su"
msgstr "الأحد"
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.js:88
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/js/widget/widget.js:89
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/js/widget/widget.js:91
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/js/widget/widget.js:94
msgid "January"
msgstr "يناير"
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.js:95
msgid "February"
msgstr "فبراير"
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:96
msgid "March"
msgstr "مارس"
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:97
msgid "April"
msgstr "أبريل"
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.js:98
msgid "May"
msgstr "مايو"
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.js:99
msgid "June"
msgstr "يونيو"
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.js:100
msgid "July"
msgstr "يوليو"
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.js:101
msgid "August"
msgstr "أغسطس"
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.js:102
msgid "September"
msgstr "سبتمبر"
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.js:103
msgid "October"
msgstr "أكتوبر"
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.js:104
msgid "November"
msgstr "نوفمبر"
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.js:105
msgid "December"
msgstr "ديسمبر"
#~ msgid "Time zone:"
#~ msgstr "المنطقة الزمنية:"
#~ msgid ""
#~ "Your color has bad contrast for text on white background, please choose a "
#~ "darker shade."
#~ msgstr "تباين اللون سيئ للخلفية البيضاء، الرجاء اختيار لون غامق."
#~ msgid "Please enter a quantity for one of the ticket types."
#~ msgstr "الرجاء إدخال عدد لأحد أنواع التذاكر."
#~ msgctxt "widget"
#~ msgid "See variations"
#~ msgstr "أنظر إلى الاختلافات"
File diff suppressed because it is too large Load Diff
+182 -144
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:08+0000\n"
"POT-Creation-Date: 2025-06-26 09:11+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 @@ msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:89
msgid "Continue"
msgstr ""
@@ -328,13 +329,13 @@ msgid "Currently inside"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:71
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "Yes"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:72
#: pretix/static/pretixcontrol/js/ui/question.js:138
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "No"
msgstr ""
@@ -343,63 +344,68 @@ msgstr ""
msgid "close"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:58
#: pretix/static/pretixbase/js/asynctask.js:135
#: pretix/static/pretixbase/js/addressform.js:59
#: pretix/static/pretixpresale/js/ui/main.js:513
msgid "required"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:63
#: pretix/static/pretixbase/js/asynctask.js:140
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:69
#: pretix/static/pretixbase/js/asynctask.js:146
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
"browser and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:105
#: pretix/static/pretixbase/js/asynctask.js:193
#: pretix/static/pretixbase/js/asynctask.js:198
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:108
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:160
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:201
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:230
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:238
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:301
#: pretix/static/pretixcontrol/js/ui/main.js:71
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr ""
@@ -604,58 +610,60 @@ msgstr ""
msgid "Generating messages …"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:109
#: pretix/static/pretixcontrol/js/ui/main.js:69
msgid "Unknown error."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:330
msgid "Your color has great contrast and is very easy to read!"
#: pretix/static/pretixcontrol/js/ui/main.js:292
msgid "Your color has great contrast and will provide excellent accessibility."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:334
msgid "Your color has decent contrast and is probably good-enough to read!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:338
#: pretix/static/pretixcontrol/js/ui/main.js:296
msgid ""
"Your color has bad contrast for text on white background, please choose a "
"darker shade."
"Your color has decent contrast and is sufficient for minimum accessibility "
"requirements."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:454
#: pretix/static/pretixcontrol/js/ui/main.js:474
#: pretix/static/pretixcontrol/js/ui/main.js:300
msgid ""
"Your color has insufficient contrast to white. Accessibility of your site "
"will be impacted."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:416
#: pretix/static/pretixcontrol/js/ui/main.js:436
msgid "Search query"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:472
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:473
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:477
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:820
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:823
#: pretix/static/pretixcontrol/js/ui/main.js:814
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:981
#: pretix/static/pretixcontrol/js/ui/main.js:972
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1021
#: pretix/static/pretixcontrol/js/ui/main.js:1012
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1102
#: pretix/static/pretixcontrol/js/ui/main.js:1093
msgid "You have unsaved changes!"
msgstr ""
@@ -667,11 +675,11 @@ msgstr ""
msgid "No results"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:42
#: pretix/static/pretixcontrol/js/ui/question.js:41
msgid "Others"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:82
#: pretix/static/pretixcontrol/js/ui/question.js:81
msgid "Count"
msgstr ""
@@ -681,48 +689,58 @@ msgid_plural "({num} more dates)"
msgstr[0] ""
msgstr[1] ""
#: pretix/static/pretixpresale/js/ui/cart.js:43
#: pretix/static/pretixpresale/js/ui/cart.js:47
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as theyre available."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:45
#: pretix/static/pretixpresale/js/ui/cart.js:49
msgid "Cart expired"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:58
#: pretix/static/pretixpresale/js/ui/cart.js:84
msgid "Your cart is about to expire."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:62
msgid "The items in your cart are reserved for you for one minute."
msgid_plural "The items in your cart are reserved for you for {num} minutes."
msgstr[0] ""
msgstr[1] ""
#: pretix/static/pretixpresale/js/ui/main.js:215
#: pretix/static/pretixpresale/js/ui/cart.js:83
msgid "Your cart has expired."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:86
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as they're available."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Do you want to renew the reservation period?"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:90
msgid "Renew reservation"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:194
msgid "The organizer keeps %(currency)s %(amount)s"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:223
#: pretix/static/pretixpresale/js/ui/main.js:202
msgid "You get %(currency)s %(amount)s back"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:239
#: pretix/static/pretixpresale/js/ui/main.js:218
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:458
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:510
msgid "required"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:554
#: pretix/static/pretixpresale/js/ui/main.js:574
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:565
#: pretix/static/pretixpresale/js/ui/main.js:558
msgid "Your local time:"
msgstr ""
@@ -747,371 +765,391 @@ msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:19
msgctxt "widget"
msgid "Price"
msgid "Filter events by"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:20
msgctxt "widget"
msgid "Filter"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
#: pretix/static/pretixpresale/js/widget/widget.js:23
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/js/widget/widget.js:24
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/js/widget/widget.js:25
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/js/widget/widget.js:26
#, javascript-format
msgctxt "widget"
msgid "Select variant %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.js:27
msgctxt "widget"
msgid "Sold out"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
msgctxt "widget"
msgid "Buy"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.js:29
msgctxt "widget"
msgid "Register"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
msgctxt "widget"
msgid "Reserved"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
msgctxt "widget"
msgid "FREE"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
msgctxt "widget"
msgid "from %(currency)s %(price)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.js:33
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.js:34
msgctxt "widget"
msgid "incl. %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:33
#: pretix/static/pretixpresale/js/widget/widget.js:35
msgctxt "widget"
msgid "plus %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:34
#: pretix/static/pretixpresale/js/widget/widget.js:36
msgctxt "widget"
msgid "incl. taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/js/widget/widget.js:37
msgctxt "widget"
msgid "plus taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#, javascript-format
msgctxt "widget"
msgid "currently available: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/js/widget/widget.js:39
msgctxt "widget"
msgid "Only available with a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:43
msgctxt "widget"
msgid "Not yet available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/js/widget/widget.js:41
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:42
msgctxt "widget"
msgid "Currently not available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.js:44
#, javascript-format
msgctxt "widget"
msgid "minimum amount to order: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:43
#: pretix/static/pretixpresale/js/widget/widget.js:45
msgctxt "widget"
msgid "Close ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.js:46
msgctxt "widget"
msgid "The ticket shop could not be loaded."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:45
#: pretix/static/pretixpresale/js/widget/widget.js:47
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
"in a new tab to continue."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:47
#: pretix/static/pretixpresale/js/widget/widget.js:49
msgctxt "widget"
msgid "Open ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:48
#: pretix/static/pretixpresale/js/widget/widget.js:50
msgctxt "widget"
msgid "Checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/js/widget/widget.js:51
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/js/widget/widget.js:52
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
"this ticket shop. Please click \"Continue\" to retry in a new tab."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:54
msgctxt "widget"
msgid "Waiting list"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:53
#: pretix/static/pretixpresale/js/widget/widget.js:55
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
"products, they will be added to your existing cart."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:57
msgctxt "widget"
msgid "Resume checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:58
msgctxt "widget"
msgid "Redeem a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:59
msgctxt "widget"
msgid "Redeem"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Voucher code"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Close"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:62
msgctxt "widget"
msgid "Hide variants"
msgid "Close checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:63
msgctxt "widget"
msgid "Choose a different event"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
msgctxt "widget"
msgid "Choose a different date"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
msgctxt "widget"
msgid "Back"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
msgctxt "widget"
msgid "Next month"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
msgctxt "widget"
msgid "Previous month"
msgid "Choose a different event"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
msgctxt "widget"
msgid "Next week"
msgid "Choose a different date"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
msgctxt "widget"
msgid "Previous week"
msgid "Back"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:70
msgctxt "widget"
msgid "Open seat selection"
msgid "Next month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
msgctxt "widget"
msgid "Previous month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
msgctxt "widget"
msgid "Next week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:73
msgctxt "widget"
msgid "Previous week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
msgctxt "widget"
msgid "Open seat selection"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
"add yourself to the waiting list. We will then notify if seats are available "
"again."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.js:76
msgctxt "widget"
msgid "Load more"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:78
msgid "Mo"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:79
msgid "Tu"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:80
msgid "We"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:81
msgid "Th"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "Fr"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "Sa"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "Su"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.js:88
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/js/widget/widget.js:89
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/js/widget/widget.js:91
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/js/widget/widget.js:94
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.js:95
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:96
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:97
msgid "April"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.js:98
msgid "May"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.js:99
msgid "June"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.js:100
msgid "July"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.js:101
msgid "August"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.js:102
msgid "September"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.js:103
msgid "October"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.js:104
msgid "November"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.js:105
msgid "December"
msgstr ""
File diff suppressed because it is too large Load Diff
+188 -146
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:08+0000\n"
"POT-Creation-Date: 2025-06-26 09:11+0000\n"
"PO-Revision-Date: 2020-12-19 07:00+0000\n"
"Last-Translator: albert <albert.serra.monner@gmail.com>\n"
"Language-Team: Catalan <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -132,6 +132,7 @@ msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:89
msgid "Continue"
msgstr ""
@@ -329,13 +330,13 @@ msgid "Currently inside"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:71
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "Yes"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:72
#: pretix/static/pretixcontrol/js/ui/question.js:138
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "No"
msgstr ""
@@ -344,63 +345,70 @@ msgstr ""
msgid "close"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:58
#: pretix/static/pretixbase/js/asynctask.js:135
#: pretix/static/pretixbase/js/addressform.js:59
#: pretix/static/pretixpresale/js/ui/main.js:513
#, fuzzy
#| msgid "Cart expired"
msgid "required"
msgstr "Cistella expirada"
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:63
#: pretix/static/pretixbase/js/asynctask.js:140
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:69
#: pretix/static/pretixbase/js/asynctask.js:146
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
"browser and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:105
#: pretix/static/pretixbase/js/asynctask.js:193
#: pretix/static/pretixbase/js/asynctask.js:198
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:108
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:160
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:201
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:230
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "Estem processant la vostra sol·licitud …"
#: pretix/static/pretixbase/js/asynctask.js:238
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:301
#: pretix/static/pretixcontrol/js/ui/main.js:71
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr ""
@@ -605,58 +613,60 @@ msgstr ""
msgid "Generating messages …"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:109
#: pretix/static/pretixcontrol/js/ui/main.js:69
msgid "Unknown error."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:330
msgid "Your color has great contrast and is very easy to read!"
#: pretix/static/pretixcontrol/js/ui/main.js:292
msgid "Your color has great contrast and will provide excellent accessibility."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:334
msgid "Your color has decent contrast and is probably good-enough to read!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:338
#: pretix/static/pretixcontrol/js/ui/main.js:296
msgid ""
"Your color has bad contrast for text on white background, please choose a "
"darker shade."
"Your color has decent contrast and is sufficient for minimum accessibility "
"requirements."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:454
#: pretix/static/pretixcontrol/js/ui/main.js:474
#: pretix/static/pretixcontrol/js/ui/main.js:300
msgid ""
"Your color has insufficient contrast to white. Accessibility of your site "
"will be impacted."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:416
#: pretix/static/pretixcontrol/js/ui/main.js:436
msgid "Search query"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:472
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:473
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:477
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:820
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:823
#: pretix/static/pretixcontrol/js/ui/main.js:814
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:981
#: pretix/static/pretixcontrol/js/ui/main.js:972
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1021
#: pretix/static/pretixcontrol/js/ui/main.js:1012
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1102
#: pretix/static/pretixcontrol/js/ui/main.js:1093
msgid "You have unsaved changes!"
msgstr ""
@@ -668,11 +678,11 @@ msgstr ""
msgid "No results"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:42
#: pretix/static/pretixcontrol/js/ui/question.js:41
msgid "Others"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:82
#: pretix/static/pretixcontrol/js/ui/question.js:81
msgid "Count"
msgstr "Quantitat"
@@ -682,7 +692,7 @@ msgid_plural "({num} more dates)"
msgstr[0] ""
msgstr[1] ""
#: pretix/static/pretixpresale/js/ui/cart.js:43
#: pretix/static/pretixpresale/js/ui/cart.js:47
#, fuzzy
#| msgid "The items in your cart are no longer reserved for you."
msgid ""
@@ -690,11 +700,16 @@ msgid ""
"complete your order as long as theyre available."
msgstr "El contingut de la cistella ja no el teniu reservat."
#: pretix/static/pretixpresale/js/ui/cart.js:45
#: pretix/static/pretixpresale/js/ui/cart.js:49
msgid "Cart expired"
msgstr "Cistella expirada"
#: pretix/static/pretixpresale/js/ui/cart.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:58
#: pretix/static/pretixpresale/js/ui/cart.js:84
msgid "Your cart is about to expire."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:62
#, fuzzy
#| msgid "The items in your cart are no longer reserved for you."
msgid "The items in your cart are reserved for you for one minute."
@@ -702,34 +717,41 @@ msgid_plural "The items in your cart are reserved for you for {num} minutes."
msgstr[0] "El contingut de la cistella ja no el teniu reservat."
msgstr[1] "El contingut de la cistella ja no el teniu reservat."
#: pretix/static/pretixpresale/js/ui/main.js:215
#: pretix/static/pretixpresale/js/ui/cart.js:83
#, fuzzy
#| msgid "Cart expired"
msgid "Your cart has expired."
msgstr "Cistella expirada"
#: pretix/static/pretixpresale/js/ui/cart.js:86
#, fuzzy
#| msgid "The items in your cart are no longer reserved for you."
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as they're available."
msgstr "El contingut de la cistella ja no el teniu reservat."
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Do you want to renew the reservation period?"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:90
msgid "Renew reservation"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:194
msgid "The organizer keeps %(currency)s %(amount)s"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:223
#: pretix/static/pretixpresale/js/ui/main.js:202
msgid "You get %(currency)s %(amount)s back"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:239
#: pretix/static/pretixpresale/js/ui/main.js:218
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:458
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:510
#, fuzzy
#| msgid "Cart expired"
msgid "required"
msgstr "Cistella expirada"
#: pretix/static/pretixpresale/js/ui/main.js:554
#: pretix/static/pretixpresale/js/ui/main.js:574
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:565
#: pretix/static/pretixpresale/js/ui/main.js:558
msgid "Your local time:"
msgstr ""
@@ -754,371 +776,391 @@ msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:19
msgctxt "widget"
msgid "Price"
msgid "Filter events by"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:20
msgctxt "widget"
msgid "Filter"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
#: pretix/static/pretixpresale/js/widget/widget.js:23
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/js/widget/widget.js:24
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/js/widget/widget.js:25
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/js/widget/widget.js:26
#, javascript-format
msgctxt "widget"
msgid "Select variant %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.js:27
msgctxt "widget"
msgid "Sold out"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
msgctxt "widget"
msgid "Buy"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.js:29
msgctxt "widget"
msgid "Register"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
msgctxt "widget"
msgid "Reserved"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
msgctxt "widget"
msgid "FREE"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
msgctxt "widget"
msgid "from %(currency)s %(price)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.js:33
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.js:34
msgctxt "widget"
msgid "incl. %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:33
#: pretix/static/pretixpresale/js/widget/widget.js:35
msgctxt "widget"
msgid "plus %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:34
#: pretix/static/pretixpresale/js/widget/widget.js:36
msgctxt "widget"
msgid "incl. taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/js/widget/widget.js:37
msgctxt "widget"
msgid "plus taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#, javascript-format
msgctxt "widget"
msgid "currently available: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/js/widget/widget.js:39
msgctxt "widget"
msgid "Only available with a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:43
msgctxt "widget"
msgid "Not yet available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/js/widget/widget.js:41
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:42
msgctxt "widget"
msgid "Currently not available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.js:44
#, javascript-format
msgctxt "widget"
msgid "minimum amount to order: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:43
#: pretix/static/pretixpresale/js/widget/widget.js:45
msgctxt "widget"
msgid "Close ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.js:46
msgctxt "widget"
msgid "The ticket shop could not be loaded."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:45
#: pretix/static/pretixpresale/js/widget/widget.js:47
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
"in a new tab to continue."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:47
#: pretix/static/pretixpresale/js/widget/widget.js:49
msgctxt "widget"
msgid "Open ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:48
#: pretix/static/pretixpresale/js/widget/widget.js:50
msgctxt "widget"
msgid "Checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/js/widget/widget.js:51
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/js/widget/widget.js:52
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
"this ticket shop. Please click \"Continue\" to retry in a new tab."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:54
msgctxt "widget"
msgid "Waiting list"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:53
#: pretix/static/pretixpresale/js/widget/widget.js:55
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
"products, they will be added to your existing cart."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:57
msgctxt "widget"
msgid "Resume checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:58
msgctxt "widget"
msgid "Redeem a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:59
msgctxt "widget"
msgid "Redeem"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Voucher code"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Close"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:62
msgctxt "widget"
msgid "Hide variants"
msgid "Close checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:63
msgctxt "widget"
msgid "Choose a different event"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
msgctxt "widget"
msgid "Choose a different date"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
msgctxt "widget"
msgid "Back"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
msgctxt "widget"
msgid "Next month"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
msgctxt "widget"
msgid "Previous month"
msgid "Choose a different event"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
msgctxt "widget"
msgid "Next week"
msgid "Choose a different date"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
msgctxt "widget"
msgid "Previous week"
msgid "Back"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:70
msgctxt "widget"
msgid "Open seat selection"
msgid "Next month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
msgctxt "widget"
msgid "Previous month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
msgctxt "widget"
msgid "Next week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:73
msgctxt "widget"
msgid "Previous week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
msgctxt "widget"
msgid "Open seat selection"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
"add yourself to the waiting list. We will then notify if seats are available "
"again."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.js:76
msgctxt "widget"
msgid "Load more"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:78
msgid "Mo"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:79
msgid "Tu"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:80
msgid "We"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:81
msgid "Th"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "Fr"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "Sa"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "Su"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.js:88
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/js/widget/widget.js:89
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/js/widget/widget.js:91
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/js/widget/widget.js:94
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.js:95
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:96
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:97
msgid "April"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.js:98
msgid "May"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.js:99
msgid "June"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.js:100
msgid "July"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.js:101
msgid "August"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.js:102
msgid "September"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.js:103
msgid "October"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.js:104
msgid "November"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.js:105
msgid "December"
msgstr ""
File diff suppressed because it is too large Load Diff
+249 -208
View File
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:08+0000\n"
"PO-Revision-Date: 2025-02-19 17:00+0000\n"
"Last-Translator: Petr Čermák <pcermak@live.com>\n"
"POT-Creation-Date: 2025-06-26 09:11+0000\n"
"PO-Revision-Date: 2025-05-16 17:00+0000\n"
"Last-Translator: David <davemachala@gmail.com>\n"
"Language-Team: Czech <https://translate.pretix.eu/projects/pretix/pretix-js/"
"cs/>\n"
"Language: cs\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Weblate 5.10\n"
"X-Generator: Weblate 5.11.4\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -132,6 +132,7 @@ msgstr "Mercado Pago"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:89
msgid "Continue"
msgstr "Pokračovat"
@@ -237,11 +238,11 @@ msgstr "Zrušeno"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:46
msgid "Confirmed"
msgstr ""
msgstr "Potvrzeno"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:47
msgid "Approval pending"
msgstr ""
msgstr "Čeká na schválení"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:48
msgid "Redeemed"
@@ -329,13 +330,13 @@ msgid "Currently inside"
msgstr "Aktuálně uvnitř"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:71
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "Yes"
msgstr "Ano"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:72
#: pretix/static/pretixcontrol/js/ui/question.js:138
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "No"
msgstr "Ne"
@@ -344,8 +345,12 @@ msgstr "Ne"
msgid "close"
msgstr "zavřít"
#: pretix/static/pretixbase/js/asynctask.js:58
#: pretix/static/pretixbase/js/asynctask.js:135
#: pretix/static/pretixbase/js/addressform.js:59
#: pretix/static/pretixpresale/js/ui/main.js:513
msgid "required"
msgstr "povinný"
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
@@ -353,13 +358,11 @@ msgstr ""
"Váš požadavek je právě zpracováván. V závislosti na velikosti vaší udalosti, "
"to může trvat několik minut."
#: pretix/static/pretixbase/js/asynctask.js:63
#: pretix/static/pretixbase/js/asynctask.js:140
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr "Váš požadavek byl vložem do fronty serveru a brzy bude zpracován."
#: pretix/static/pretixbase/js/asynctask.js:69
#: pretix/static/pretixbase/js/asynctask.js:146
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
@@ -369,14 +372,14 @@ msgstr ""
"Pokud to trvá více jak dvě minuty, prosím kontaktuje nás nebo se vraťte do "
"vašeho prohlížeče a zkuste to znovu."
#: pretix/static/pretixbase/js/asynctask.js:105
#: pretix/static/pretixbase/js/asynctask.js:193
#: pretix/static/pretixbase/js/asynctask.js:198
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr "Vyskytla se chyba {code}."
#: pretix/static/pretixbase/js/asynctask.js:108
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
@@ -384,12 +387,12 @@ msgstr ""
"Momentálně nemůžeme kontaktovat server, ale stále se o to pokoušíme. "
"Poslední chybový kód: {code}"
#: pretix/static/pretixbase/js/asynctask.js:160
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr "Zpracování požadavku trvá příliš dlouho. Prosím zkuste to znovu."
#: pretix/static/pretixbase/js/asynctask.js:201
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
@@ -397,11 +400,11 @@ msgstr ""
"Momentálně nemůžeme kontaktovat server. Prosím zkuste to znovu. Chybový kód: "
"{code}"
#: pretix/static/pretixbase/js/asynctask.js:230
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "Zpracováváme váš požadavek …"
#: pretix/static/pretixbase/js/asynctask.js:238
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
@@ -411,8 +414,11 @@ msgstr ""
"prosím zkontrolujte své internetové připojení a znovu načtěte stránku a "
"zkuste to znovu."
#: pretix/static/pretixbase/js/asynctask.js:301
#: pretix/static/pretixcontrol/js/ui/main.js:71
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr "Zavřít zprávu"
@@ -440,7 +446,7 @@ msgstr "je po"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:40
msgid "="
msgstr ""
msgstr "="
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:99
msgid "Product"
@@ -452,7 +458,7 @@ msgstr "Varianta produktu"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:107
msgid "Gate"
msgstr ""
msgstr "Brána"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:111
msgid "Current date and time"
@@ -557,12 +563,12 @@ msgstr "Duplikát"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:193
msgctxt "entry_status"
msgid "present"
msgstr ""
msgstr "přítomen"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:194
msgctxt "entry_status"
msgid "absent"
msgstr ""
msgstr "nepřítomen"
#: pretix/static/pretixcontrol/js/ui/editor.js:171
msgid "Check-in QR"
@@ -629,61 +635,65 @@ msgstr "Vyskytla se chyba."
msgid "Generating messages …"
msgstr "Vytváření zpráv…"
#: pretix/static/pretixcontrol/js/ui/main.js:109
#: pretix/static/pretixcontrol/js/ui/main.js:69
msgid "Unknown error."
msgstr "Neznámá chyba."
#: pretix/static/pretixcontrol/js/ui/main.js:330
msgid "Your color has great contrast and is very easy to read!"
#: pretix/static/pretixcontrol/js/ui/main.js:292
#, fuzzy
#| msgid "Your color has great contrast and is very easy to read!"
msgid "Your color has great contrast and will provide excellent accessibility."
msgstr "Tato barva má velmi dobrý kontrast a je velmi dobře čitelná!"
#: pretix/static/pretixcontrol/js/ui/main.js:334
msgid "Your color has decent contrast and is probably good-enough to read!"
#: pretix/static/pretixcontrol/js/ui/main.js:296
#, fuzzy
#| msgid "Your color has decent contrast and is probably good-enough to read!"
msgid ""
"Your color has decent contrast and is sufficient for minimum accessibility "
"requirements."
msgstr ""
"Tato barva má slušný kontrast a pravděpodobně je dostatečně dobře čitelná!"
#: pretix/static/pretixcontrol/js/ui/main.js:338
#: pretix/static/pretixcontrol/js/ui/main.js:300
msgid ""
"Your color has bad contrast for text on white background, please choose a "
"darker shade."
"Your color has insufficient contrast to white. Accessibility of your site "
"will be impacted."
msgstr ""
"Tato barva je pro text na bílém pozadí špatně kontrastní, zvolte prosím "
"tmavší odstín."
#: pretix/static/pretixcontrol/js/ui/main.js:454
#: pretix/static/pretixcontrol/js/ui/main.js:474
#: pretix/static/pretixcontrol/js/ui/main.js:416
#: pretix/static/pretixcontrol/js/ui/main.js:436
msgid "Search query"
msgstr "Hledaný výraz"
#: pretix/static/pretixcontrol/js/ui/main.js:472
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr "Všechny"
#: pretix/static/pretixcontrol/js/ui/main.js:473
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr "Žádný"
#: pretix/static/pretixcontrol/js/ui/main.js:477
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr "Pouze vybrané"
#: pretix/static/pretixcontrol/js/ui/main.js:820
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:823
#: pretix/static/pretixcontrol/js/ui/main.js:814
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:981
#: pretix/static/pretixcontrol/js/ui/main.js:972
msgid "Use a different name internally"
msgstr "Interně používat jiný název"
#: pretix/static/pretixcontrol/js/ui/main.js:1021
#: pretix/static/pretixcontrol/js/ui/main.js:1012
msgid "Click to close"
msgstr "Kliknutím zavřete"
#: pretix/static/pretixcontrol/js/ui/main.js:1102
#: pretix/static/pretixcontrol/js/ui/main.js:1093
msgid "You have unsaved changes!"
msgstr "Máte neuložené změny!"
@@ -692,16 +702,14 @@ msgid "Calculating default price…"
msgstr "Výpočet standardní ceny…"
#: pretix/static/pretixcontrol/js/ui/plugins.js:69
#, fuzzy
#| msgid "Search results"
msgid "No results"
msgstr "Vyhledat výsledky"
msgstr "Žádné výsledky"
#: pretix/static/pretixcontrol/js/ui/question.js:42
#: pretix/static/pretixcontrol/js/ui/question.js:41
msgid "Others"
msgstr "Další"
#: pretix/static/pretixcontrol/js/ui/question.js:82
#: pretix/static/pretixcontrol/js/ui/question.js:81
msgid "Count"
msgstr "Počet"
@@ -712,7 +720,7 @@ msgstr[0] "(jeden další termín)"
msgstr[1] "({num} další termíny)"
msgstr[2] "({num} dalších termínů)"
#: pretix/static/pretixpresale/js/ui/cart.js:43
#: pretix/static/pretixpresale/js/ui/cart.js:47
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as theyre available."
@@ -720,11 +728,16 @@ msgstr ""
"Produkty v nákupním košíku již nejsou pro vás rezervovány. Pokud je lístek "
"stále dostupný, můžete objednávku dokončit."
#: pretix/static/pretixpresale/js/ui/cart.js:45
#: pretix/static/pretixpresale/js/ui/cart.js:49
msgid "Cart expired"
msgstr "Nákupní košík vypršel"
#: pretix/static/pretixpresale/js/ui/cart.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:58
#: pretix/static/pretixpresale/js/ui/cart.js:84
msgid "Your cart is about to expire."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:62
msgid "The items in your cart are reserved for you for one minute."
msgid_plural "The items in your cart are reserved for you for {num} minutes."
msgstr[0] ""
@@ -734,200 +747,211 @@ msgstr[1] ""
msgstr[2] ""
"Produkty v nákupním košíku jsou pro vás rezervovány na dalších {num} minut."
#: pretix/static/pretixpresale/js/ui/main.js:215
#: pretix/static/pretixpresale/js/ui/cart.js:83
#, fuzzy
#| msgid "Cart expired"
msgid "Your cart has expired."
msgstr "Nákupní košík vypršel"
#: pretix/static/pretixpresale/js/ui/cart.js:86
#, fuzzy
#| msgid ""
#| "The items in your cart are no longer reserved for you. You can still "
#| "complete your order as long as theyre available."
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as they're available."
msgstr ""
"Produkty v nákupním košíku již nejsou pro vás rezervovány. Pokud je lístek "
"stále dostupný, můžete objednávku dokončit."
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Do you want to renew the reservation period?"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:90
msgid "Renew reservation"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:194
msgid "The organizer keeps %(currency)s %(amount)s"
msgstr "Organizátor si ponechává %(currency)s %(amount)s"
#: pretix/static/pretixpresale/js/ui/main.js:223
#: pretix/static/pretixpresale/js/ui/main.js:202
msgid "You get %(currency)s %(amount)s back"
msgstr "Dostanete %(currency)s %(amount)s zpět"
#: pretix/static/pretixpresale/js/ui/main.js:239
#: pretix/static/pretixpresale/js/ui/main.js:218
msgid "Please enter the amount the organizer can keep."
msgstr "Zadejte částku, kterou si organizátor může ponechat."
#: pretix/static/pretixpresale/js/ui/main.js:458
msgid "Please enter a quantity for one of the ticket types."
msgstr "Zadejte prosím množství pro jeden z typů vstupenek."
#: pretix/static/pretixpresale/js/ui/main.js:510
msgid "required"
msgstr "povinný"
#: pretix/static/pretixpresale/js/ui/main.js:554
#: pretix/static/pretixpresale/js/ui/main.js:574
msgid "Time zone:"
msgstr "Časové pásmo:"
#: pretix/static/pretixpresale/js/ui/main.js:565
#: pretix/static/pretixpresale/js/ui/main.js:558
msgid "Your local time:"
msgstr "Místní čas:"
#: pretix/static/pretixpresale/js/walletdetection.js:39
#, fuzzy
#| msgid "Apple Pay"
msgid "Google Pay"
msgstr "Apple Pay"
msgstr "Google Pay"
#: pretix/static/pretixpresale/js/widget/widget.js:16
msgctxt "widget"
msgid "Quantity"
msgstr ""
msgstr "Počet"
#: pretix/static/pretixpresale/js/widget/widget.js:17
msgctxt "widget"
msgid "Decrease quantity"
msgstr ""
msgstr "Snížit počet"
#: pretix/static/pretixpresale/js/widget/widget.js:18
msgctxt "widget"
msgid "Increase quantity"
msgstr ""
msgstr "Zvýšit počet"
#: pretix/static/pretixpresale/js/widget/widget.js:19
msgctxt "widget"
msgid "Price"
msgid "Filter events by"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:20
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgid "Filter"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
msgctxt "widget"
msgid "Price"
msgstr "Cena"
#: pretix/static/pretixpresale/js/widget/widget.js:22
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr "Původní cena: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:23
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#, fuzzy
#| msgid "Selected only"
msgctxt "widget"
msgid "Select"
msgstr "Pouze vybrané"
#: pretix/static/pretixpresale/js/widget/widget.js:23
#, fuzzy, javascript-format
#| msgid "Selected only"
msgctxt "widget"
msgid "Select %s"
msgstr "Pouze vybrané"
msgstr "Nová cena: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:24
#, fuzzy, javascript-format
#| msgctxt "widget"
#| msgid "See variations"
msgctxt "widget"
msgid "Select variant %s"
msgstr "Zobrazit možnosti"
msgid "Select"
msgstr "Vybrat"
#: pretix/static/pretixpresale/js/widget/widget.js:25
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr "Vybrat %s"
#: pretix/static/pretixpresale/js/widget/widget.js:26
#, javascript-format
msgctxt "widget"
msgid "Select variant %s"
msgstr "Vybrat variantu %s"
#: pretix/static/pretixpresale/js/widget/widget.js:27
msgctxt "widget"
msgid "Sold out"
msgstr "Vyprodáno"
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
msgctxt "widget"
msgid "Buy"
msgstr "Koupit"
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.js:29
msgctxt "widget"
msgid "Register"
msgstr "Zaregistrovat"
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
msgctxt "widget"
msgid "Reserved"
msgstr "Rezervováno"
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
msgctxt "widget"
msgid "FREE"
msgstr "ZDARMA"
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
msgctxt "widget"
msgid "from %(currency)s %(price)s"
msgstr "od %(currency)s %(price)s"
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.js:33
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr ""
msgstr "Obrázek%s"
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.js:34
msgctxt "widget"
msgid "incl. %(rate)s% %(taxname)s"
msgstr "včetně %(rate)s% %(taxname)s"
#: pretix/static/pretixpresale/js/widget/widget.js:33
#: pretix/static/pretixpresale/js/widget/widget.js:35
msgctxt "widget"
msgid "plus %(rate)s% %(taxname)s"
msgstr "plus %(rate)s% %(taxname)s"
#: pretix/static/pretixpresale/js/widget/widget.js:34
#: pretix/static/pretixpresale/js/widget/widget.js:36
msgctxt "widget"
msgid "incl. taxes"
msgstr "včetně daní"
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/js/widget/widget.js:37
msgctxt "widget"
msgid "plus taxes"
msgstr "plus daně"
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#, javascript-format
msgctxt "widget"
msgid "currently available: %s"
msgstr "aktuálně k dispozici: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/js/widget/widget.js:39
msgctxt "widget"
msgid "Only available with a voucher"
msgstr "K dispozici pouze s poukazem"
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.js:41
#, fuzzy
#| msgid "Payment method unavailable"
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:43
msgctxt "widget"
msgid "Not yet available"
msgstr "Způsob platby není k dispozici"
msgstr "Zatím není k dispozici"
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/js/widget/widget.js:41
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#, fuzzy
#| msgctxt "widget"
#| msgid "currently available: %s"
msgctxt "widget"
msgid "Currently not available"
msgstr "aktuálně k dispozici: %s"
msgstr "Již není k dispozici"
#: pretix/static/pretixpresale/js/widget/widget.js:42
msgctxt "widget"
msgid "Currently not available"
msgstr "Momentálně není k dispozici."
#: pretix/static/pretixpresale/js/widget/widget.js:44
#, javascript-format
msgctxt "widget"
msgid "minimum amount to order: %s"
msgstr "minimální množství pro objednávku: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:43
#: pretix/static/pretixpresale/js/widget/widget.js:45
msgctxt "widget"
msgid "Close ticket shop"
msgstr "Zavřít obchod"
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.js:46
msgctxt "widget"
msgid "The ticket shop could not be loaded."
msgstr "Obchod vstupenek nemohl být načten."
#: pretix/static/pretixpresale/js/widget/widget.js:45
#: pretix/static/pretixpresale/js/widget/widget.js:47
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
@@ -936,25 +960,22 @@ msgstr ""
"V současné době je v tomto obchodě s vstupenkami mnoho uživatelů. Otevřete "
"prosím obchod v nové kartě."
#: pretix/static/pretixpresale/js/widget/widget.js:47
#: pretix/static/pretixpresale/js/widget/widget.js:49
msgctxt "widget"
msgid "Open ticket shop"
msgstr "Obchod vstupenek otevřit"
#: pretix/static/pretixpresale/js/widget/widget.js:48
#, fuzzy
#| msgctxt "widget"
#| msgid "Resume checkout"
#: pretix/static/pretixpresale/js/widget/widget.js:50
msgctxt "widget"
msgid "Checkout"
msgstr "Obnovit checkout"
msgstr "Checkout"
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/js/widget/widget.js:51
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr "Nákupní košík se nepodařilo vytvořit. Zkuste to prosím znovu"
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/js/widget/widget.js:52
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
@@ -964,12 +985,12 @@ msgstr ""
"mnoho uživatelů. Klikněte prosím na \"Pokračovat\" a zkuste to znovu na nové "
"kartě."
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:54
msgctxt "widget"
msgid "Waiting list"
msgstr "Čekací listina"
#: pretix/static/pretixpresale/js/widget/widget.js:53
#: pretix/static/pretixpresale/js/widget/widget.js:55
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
@@ -978,93 +999,100 @@ msgstr ""
"V současné době máte aktivní košík pro tuto událost. Pokud vyberete další "
"produkty, budou přidány do vašeho košíku."
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:57
msgctxt "widget"
msgid "Resume checkout"
msgstr "Obnovit checkout"
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:58
msgctxt "widget"
msgid "Redeem a voucher"
msgstr "Uplatnit poukázku"
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:59
msgctxt "widget"
msgid "Redeem"
msgstr "Uplatnit"
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Voucher code"
msgstr "Kód poukázky"
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Close"
msgstr "Zavřít"
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/js/widget/widget.js:62
#, fuzzy
#| msgctxt "widget"
#| msgid "Resume checkout"
msgctxt "widget"
msgid "Close checkout"
msgstr "Obnovit checkout"
#: pretix/static/pretixpresale/js/widget/widget.js:63
msgctxt "widget"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
msgctxt "widget"
msgid "Continue"
msgstr "Pokračovat"
#: pretix/static/pretixpresale/js/widget/widget.js:61
#, fuzzy
#| msgctxt "widget"
#| msgid "See variations"
#: pretix/static/pretixpresale/js/widget/widget.js:65
msgctxt "widget"
msgid "Show variants"
msgstr "Zobrazit možnosti"
#: pretix/static/pretixpresale/js/widget/widget.js:62
#, fuzzy
#| msgctxt "widget"
#| msgid "See variations"
#: pretix/static/pretixpresale/js/widget/widget.js:66
msgctxt "widget"
msgid "Hide variants"
msgstr "Zobrazit možnosti"
msgstr "Skrýt možnosti"
#: pretix/static/pretixpresale/js/widget/widget.js:63
#: pretix/static/pretixpresale/js/widget/widget.js:67
msgctxt "widget"
msgid "Choose a different event"
msgstr "Vybrat jinou událost"
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/js/widget/widget.js:68
msgctxt "widget"
msgid "Choose a different date"
msgstr "Vybrat jiný datum"
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.js:69
msgctxt "widget"
msgid "Back"
msgstr "Zpět"
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.js:70
msgctxt "widget"
msgid "Next month"
msgstr "Následující měsíc"
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.js:71
msgctxt "widget"
msgid "Previous month"
msgstr "Předchozí měsíc"
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.js:72
msgctxt "widget"
msgid "Next week"
msgstr "Příští týden"
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.js:73
msgctxt "widget"
msgid "Previous week"
msgstr "Předchozí týden"
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.js:74
msgctxt "widget"
msgid "Open seat selection"
msgstr "Otevřete výběr sedadla"
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.js:75
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -1075,115 +1103,128 @@ msgstr ""
"Pokud chcete, můžete se přidat na čekací listinu. Poté vás budeme "
"informovat, pokud budou místa opět volná."
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.js:76
msgctxt "widget"
msgid "Load more"
msgstr "Načíst více"
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:78
msgid "Mo"
msgstr "Po"
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:79
msgid "Tu"
msgstr "Út"
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:80
msgid "We"
msgstr "St"
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:81
msgid "Th"
msgstr "Čt"
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "Fr"
msgstr "Pá"
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "Sa"
msgstr "So"
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "Su"
msgstr "Ne"
#: pretix/static/pretixpresale/js/widget/widget.js:81
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "Friday"
msgstr ""
msgid "Monday"
msgstr "Pondělí"
#: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "Saturday"
msgstr ""
msgid "Tuesday"
msgstr "Úterý"
#: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "Sunday"
msgstr ""
msgid "Wednesday"
msgstr "Středa"
#: pretix/static/pretixpresale/js/widget/widget.js:88
msgid "Thursday"
msgstr "Čtvrtek"
#: pretix/static/pretixpresale/js/widget/widget.js:89
msgid "Friday"
msgstr "Pátek"
#: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "Saturday"
msgstr "Sobota"
#: pretix/static/pretixpresale/js/widget/widget.js:91
msgid "Sunday"
msgstr "Neděle"
#: pretix/static/pretixpresale/js/widget/widget.js:94
msgid "January"
msgstr "Leden"
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.js:95
msgid "February"
msgstr "Únor"
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:96
msgid "March"
msgstr "Březen"
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:97
msgid "April"
msgstr "Duben"
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.js:98
msgid "May"
msgstr "Květen"
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.js:99
msgid "June"
msgstr "červen"
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.js:100
msgid "July"
msgstr "Červenec"
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.js:101
msgid "August"
msgstr "Srpen"
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.js:102
msgid "September"
msgstr "Září"
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.js:103
msgid "October"
msgstr "Říjen"
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.js:104
msgid "November"
msgstr "Listopad"
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.js:105
msgid "December"
msgstr "Prosinec"
#~ msgid "Time zone:"
#~ msgstr "Časové pásmo:"
#~ msgid ""
#~ "Your color has bad contrast for text on white background, please choose a "
#~ "darker shade."
#~ msgstr ""
#~ "Tato barva je pro text na bílém pozadí špatně kontrastní, zvolte prosím "
#~ "tmavší odstín."
#~ msgid "Please enter a quantity for one of the ticket types."
#~ msgstr "Zadejte prosím množství pro jeden z typů vstupenek."
#~ msgctxt "widget"
#~ msgid "See variations"
#~ msgstr "Zobrazit možnosti"
File diff suppressed because it is too large Load Diff
+182 -144
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:08+0000\n"
"POT-Creation-Date: 2025-06-26 09:11+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 @@ msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:89
msgid "Continue"
msgstr ""
@@ -329,13 +330,13 @@ msgid "Currently inside"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:71
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "Yes"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:72
#: pretix/static/pretixcontrol/js/ui/question.js:138
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "No"
msgstr ""
@@ -344,63 +345,68 @@ msgstr ""
msgid "close"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:58
#: pretix/static/pretixbase/js/asynctask.js:135
#: pretix/static/pretixbase/js/addressform.js:59
#: pretix/static/pretixpresale/js/ui/main.js:513
msgid "required"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:63
#: pretix/static/pretixbase/js/asynctask.js:140
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:69
#: pretix/static/pretixbase/js/asynctask.js:146
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
"browser and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:105
#: pretix/static/pretixbase/js/asynctask.js:193
#: pretix/static/pretixbase/js/asynctask.js:198
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:108
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:160
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:201
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:230
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:238
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:301
#: pretix/static/pretixcontrol/js/ui/main.js:71
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr ""
@@ -605,58 +611,60 @@ msgstr ""
msgid "Generating messages …"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:109
#: pretix/static/pretixcontrol/js/ui/main.js:69
msgid "Unknown error."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:330
msgid "Your color has great contrast and is very easy to read!"
#: pretix/static/pretixcontrol/js/ui/main.js:292
msgid "Your color has great contrast and will provide excellent accessibility."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:334
msgid "Your color has decent contrast and is probably good-enough to read!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:338
#: pretix/static/pretixcontrol/js/ui/main.js:296
msgid ""
"Your color has bad contrast for text on white background, please choose a "
"darker shade."
"Your color has decent contrast and is sufficient for minimum accessibility "
"requirements."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:454
#: pretix/static/pretixcontrol/js/ui/main.js:474
#: pretix/static/pretixcontrol/js/ui/main.js:300
msgid ""
"Your color has insufficient contrast to white. Accessibility of your site "
"will be impacted."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:416
#: pretix/static/pretixcontrol/js/ui/main.js:436
msgid "Search query"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:472
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:473
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:477
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:820
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:823
#: pretix/static/pretixcontrol/js/ui/main.js:814
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:981
#: pretix/static/pretixcontrol/js/ui/main.js:972
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1021
#: pretix/static/pretixcontrol/js/ui/main.js:1012
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1102
#: pretix/static/pretixcontrol/js/ui/main.js:1093
msgid "You have unsaved changes!"
msgstr ""
@@ -668,11 +676,11 @@ msgstr ""
msgid "No results"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:42
#: pretix/static/pretixcontrol/js/ui/question.js:41
msgid "Others"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:82
#: pretix/static/pretixcontrol/js/ui/question.js:81
msgid "Count"
msgstr ""
@@ -682,48 +690,58 @@ msgid_plural "({num} more dates)"
msgstr[0] ""
msgstr[1] ""
#: pretix/static/pretixpresale/js/ui/cart.js:43
#: pretix/static/pretixpresale/js/ui/cart.js:47
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as theyre available."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:45
#: pretix/static/pretixpresale/js/ui/cart.js:49
msgid "Cart expired"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:58
#: pretix/static/pretixpresale/js/ui/cart.js:84
msgid "Your cart is about to expire."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:62
msgid "The items in your cart are reserved for you for one minute."
msgid_plural "The items in your cart are reserved for you for {num} minutes."
msgstr[0] ""
msgstr[1] ""
#: pretix/static/pretixpresale/js/ui/main.js:215
#: pretix/static/pretixpresale/js/ui/cart.js:83
msgid "Your cart has expired."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:86
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as they're available."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Do you want to renew the reservation period?"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:90
msgid "Renew reservation"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:194
msgid "The organizer keeps %(currency)s %(amount)s"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:223
#: pretix/static/pretixpresale/js/ui/main.js:202
msgid "You get %(currency)s %(amount)s back"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:239
#: pretix/static/pretixpresale/js/ui/main.js:218
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:458
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:510
msgid "required"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:554
#: pretix/static/pretixpresale/js/ui/main.js:574
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:565
#: pretix/static/pretixpresale/js/ui/main.js:558
msgid "Your local time:"
msgstr ""
@@ -748,371 +766,391 @@ msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:19
msgctxt "widget"
msgid "Price"
msgid "Filter events by"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:20
msgctxt "widget"
msgid "Filter"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
#: pretix/static/pretixpresale/js/widget/widget.js:23
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/js/widget/widget.js:24
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/js/widget/widget.js:25
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/js/widget/widget.js:26
#, javascript-format
msgctxt "widget"
msgid "Select variant %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.js:27
msgctxt "widget"
msgid "Sold out"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
msgctxt "widget"
msgid "Buy"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.js:29
msgctxt "widget"
msgid "Register"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
msgctxt "widget"
msgid "Reserved"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
msgctxt "widget"
msgid "FREE"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
msgctxt "widget"
msgid "from %(currency)s %(price)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.js:33
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.js:34
msgctxt "widget"
msgid "incl. %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:33
#: pretix/static/pretixpresale/js/widget/widget.js:35
msgctxt "widget"
msgid "plus %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:34
#: pretix/static/pretixpresale/js/widget/widget.js:36
msgctxt "widget"
msgid "incl. taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/js/widget/widget.js:37
msgctxt "widget"
msgid "plus taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#, javascript-format
msgctxt "widget"
msgid "currently available: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/js/widget/widget.js:39
msgctxt "widget"
msgid "Only available with a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:43
msgctxt "widget"
msgid "Not yet available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/js/widget/widget.js:41
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:42
msgctxt "widget"
msgid "Currently not available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.js:44
#, javascript-format
msgctxt "widget"
msgid "minimum amount to order: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:43
#: pretix/static/pretixpresale/js/widget/widget.js:45
msgctxt "widget"
msgid "Close ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.js:46
msgctxt "widget"
msgid "The ticket shop could not be loaded."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:45
#: pretix/static/pretixpresale/js/widget/widget.js:47
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
"in a new tab to continue."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:47
#: pretix/static/pretixpresale/js/widget/widget.js:49
msgctxt "widget"
msgid "Open ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:48
#: pretix/static/pretixpresale/js/widget/widget.js:50
msgctxt "widget"
msgid "Checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/js/widget/widget.js:51
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/js/widget/widget.js:52
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
"this ticket shop. Please click \"Continue\" to retry in a new tab."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:54
msgctxt "widget"
msgid "Waiting list"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:53
#: pretix/static/pretixpresale/js/widget/widget.js:55
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
"products, they will be added to your existing cart."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:57
msgctxt "widget"
msgid "Resume checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:58
msgctxt "widget"
msgid "Redeem a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:59
msgctxt "widget"
msgid "Redeem"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Voucher code"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Close"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:62
msgctxt "widget"
msgid "Hide variants"
msgid "Close checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:63
msgctxt "widget"
msgid "Choose a different event"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
msgctxt "widget"
msgid "Choose a different date"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
msgctxt "widget"
msgid "Back"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
msgctxt "widget"
msgid "Next month"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
msgctxt "widget"
msgid "Previous month"
msgid "Choose a different event"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
msgctxt "widget"
msgid "Next week"
msgid "Choose a different date"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
msgctxt "widget"
msgid "Previous week"
msgid "Back"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:70
msgctxt "widget"
msgid "Open seat selection"
msgid "Next month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
msgctxt "widget"
msgid "Previous month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
msgctxt "widget"
msgid "Next week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:73
msgctxt "widget"
msgid "Previous week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
msgctxt "widget"
msgid "Open seat selection"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
"add yourself to the waiting list. We will then notify if seats are available "
"again."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.js:76
msgctxt "widget"
msgid "Load more"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:78
msgid "Mo"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:79
msgid "Tu"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:80
msgid "We"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:81
msgid "Th"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "Fr"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "Sa"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "Su"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.js:88
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/js/widget/widget.js:89
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/js/widget/widget.js:91
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/js/widget/widget.js:94
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.js:95
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:96
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:97
msgid "April"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.js:98
msgid "May"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.js:99
msgid "June"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.js:100
msgid "July"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.js:101
msgid "August"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.js:102
msgid "September"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.js:103
msgid "October"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.js:104
msgid "November"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.js:105
msgid "December"
msgstr ""
File diff suppressed because it is too large Load Diff
+191 -139
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:08+0000\n"
"POT-Creation-Date: 2025-06-26 09:11+0000\n"
"PO-Revision-Date: 2024-07-10 15:00+0000\n"
"Last-Translator: Nikolai <nikolai@lengefeldt.de>\n"
"Language-Team: Danish <https://translate.pretix.eu/projects/pretix/pretix-js/"
@@ -133,6 +133,7 @@ msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:89
#, fuzzy
#| msgctxt "widget"
#| msgid "Continue"
@@ -338,13 +339,13 @@ msgid "Currently inside"
msgstr "Inde i øjeblikket"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:71
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "Yes"
msgstr "Ja"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:72
#: pretix/static/pretixcontrol/js/ui/question.js:138
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "No"
msgstr "Nej"
@@ -356,8 +357,14 @@ msgstr "Nej"
msgid "close"
msgstr "Luk"
#: pretix/static/pretixbase/js/asynctask.js:58
#: pretix/static/pretixbase/js/asynctask.js:135
#: pretix/static/pretixbase/js/addressform.js:59
#: pretix/static/pretixpresale/js/ui/main.js:513
#, fuzzy
#| msgid "Cart expired"
msgid "required"
msgstr "Kurv udløbet"
#: pretix/static/pretixbase/js/asynctask.js:12
#, fuzzy
#| msgid ""
#| "Your request has been queued on the server and will now be processed. "
@@ -369,8 +376,7 @@ msgstr ""
"Din forespørgsel er under behandling. Alt efter størrelsen af din event kan "
"der gå op til et par minutter."
#: pretix/static/pretixbase/js/asynctask.js:63
#: pretix/static/pretixbase/js/asynctask.js:140
#: pretix/static/pretixbase/js/asynctask.js:16
#, fuzzy
#| msgid ""
#| "Your request has been queued on the server and will now be processed. "
@@ -380,8 +386,7 @@ msgstr ""
"Din forespørgsel er under behandling. Alt efter størrelsen af din event kan "
"der gå op til et par minutter."
#: pretix/static/pretixbase/js/asynctask.js:69
#: pretix/static/pretixbase/js/asynctask.js:146
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
@@ -390,14 +395,14 @@ msgstr ""
"Din forespørgsel er under behandling. Hvis der går mere end to minutter, så "
"kontakt os eller gå tilbage og prøv igen."
#: pretix/static/pretixbase/js/asynctask.js:105
#: pretix/static/pretixbase/js/asynctask.js:193
#: pretix/static/pretixbase/js/asynctask.js:198
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr "Der er sket en fejl ({code})."
#: pretix/static/pretixbase/js/asynctask.js:108
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
@@ -405,12 +410,12 @@ msgstr ""
"Vi kan ikke komme i kontakt med serveren, men prøver igen. Seneste fejlkode: "
"{code}"
#: pretix/static/pretixbase/js/asynctask.js:160
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr "Forespørgslen tog for lang tid. Prøv igen."
#: pretix/static/pretixbase/js/asynctask.js:201
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
@@ -418,11 +423,11 @@ msgstr ""
"Vi kan i øjeblikket ikke komme i kontakt med serveren. Prøv igen. Fejlkode: "
"{code}"
#: pretix/static/pretixbase/js/asynctask.js:230
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "Vi behandler din bestilling …"
#: pretix/static/pretixbase/js/asynctask.js:238
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
@@ -431,8 +436,11 @@ msgstr ""
"Din forespørgsel bliver sendt til serveren. Hvis det tager mere end et "
"minut, så tjek din internetforbindelse, genindlæs siden og prøv igen."
#: pretix/static/pretixbase/js/asynctask.js:301
#: pretix/static/pretixcontrol/js/ui/main.js:71
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr "Luk besked"
@@ -652,58 +660,60 @@ msgstr "Der er sket en fejl."
msgid "Generating messages …"
msgstr "Opretter beskeder …"
#: pretix/static/pretixcontrol/js/ui/main.js:109
#: pretix/static/pretixcontrol/js/ui/main.js:69
msgid "Unknown error."
msgstr "Ukendt fejl."
#: pretix/static/pretixcontrol/js/ui/main.js:330
msgid "Your color has great contrast and is very easy to read!"
#: pretix/static/pretixcontrol/js/ui/main.js:292
msgid "Your color has great contrast and will provide excellent accessibility."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:334
msgid "Your color has decent contrast and is probably good-enough to read!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:338
#: pretix/static/pretixcontrol/js/ui/main.js:296
msgid ""
"Your color has bad contrast for text on white background, please choose a "
"darker shade."
"Your color has decent contrast and is sufficient for minimum accessibility "
"requirements."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:454
#: pretix/static/pretixcontrol/js/ui/main.js:474
#: pretix/static/pretixcontrol/js/ui/main.js:300
msgid ""
"Your color has insufficient contrast to white. Accessibility of your site "
"will be impacted."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:416
#: pretix/static/pretixcontrol/js/ui/main.js:436
msgid "Search query"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:472
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr "Alle"
#: pretix/static/pretixcontrol/js/ui/main.js:473
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr "Ingen"
#: pretix/static/pretixcontrol/js/ui/main.js:477
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:820
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:823
#: pretix/static/pretixcontrol/js/ui/main.js:814
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:981
#: pretix/static/pretixcontrol/js/ui/main.js:972
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1021
#: pretix/static/pretixcontrol/js/ui/main.js:1012
msgid "Click to close"
msgstr "Klik for at lukke"
#: pretix/static/pretixcontrol/js/ui/main.js:1102
#: pretix/static/pretixcontrol/js/ui/main.js:1093
msgid "You have unsaved changes!"
msgstr "Du har ændringer, der ikke er gemt!"
@@ -719,11 +729,11 @@ msgstr "Kontakter Stripe …"
msgid "No results"
msgstr "Søgeresultater"
#: pretix/static/pretixcontrol/js/ui/question.js:42
#: pretix/static/pretixcontrol/js/ui/question.js:41
msgid "Others"
msgstr "Andre"
#: pretix/static/pretixcontrol/js/ui/question.js:82
#: pretix/static/pretixcontrol/js/ui/question.js:81
msgid "Count"
msgstr "Antal"
@@ -733,7 +743,7 @@ msgid_plural "({num} more dates)"
msgstr[0] "(en dato mere)"
msgstr[1] "({num} datoer mere)"
#: pretix/static/pretixpresale/js/ui/cart.js:43
#: pretix/static/pretixpresale/js/ui/cart.js:47
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as theyre available."
@@ -741,50 +751,66 @@ msgstr ""
"Varerne i din indkøbskurv er ikke længere reserverede til dig. Du kan stadig "
"færdiggøre din ordre, så længe der er ledige billetter."
#: pretix/static/pretixpresale/js/ui/cart.js:45
#: pretix/static/pretixpresale/js/ui/cart.js:49
msgid "Cart expired"
msgstr "Kurv udløbet"
#: pretix/static/pretixpresale/js/ui/cart.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:58
#: pretix/static/pretixpresale/js/ui/cart.js:84
msgid "Your cart is about to expire."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:62
msgid "The items in your cart are reserved for you for one minute."
msgid_plural "The items in your cart are reserved for you for {num} minutes."
msgstr[0] "Varerne i din kurv er reserveret for dig i et minut."
msgstr[1] "Varerne i din kurv er reserveret for dig i {num} minutter."
#: pretix/static/pretixpresale/js/ui/main.js:215
#: pretix/static/pretixpresale/js/ui/cart.js:83
#, fuzzy
#| msgid "Cart expired"
msgid "Your cart has expired."
msgstr "Kurv udløbet"
#: pretix/static/pretixpresale/js/ui/cart.js:86
#, fuzzy
#| msgid ""
#| "The items in your cart are no longer reserved for you. You can still "
#| "complete your order as long as theyre available."
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as they're available."
msgstr ""
"Varerne i din indkøbskurv er ikke længere reserverede til dig. Du kan stadig "
"færdiggøre din ordre, så længe der er ledige billetter."
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Do you want to renew the reservation period?"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:90
msgid "Renew reservation"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:194
#, fuzzy
#| msgctxt "widget"
#| msgid "from %(currency)s %(price)s"
msgid "The organizer keeps %(currency)s %(amount)s"
msgstr "fra %(currency)s %(price)s"
#: pretix/static/pretixpresale/js/ui/main.js:223
#: pretix/static/pretixpresale/js/ui/main.js:202
#, fuzzy
#| msgctxt "widget"
#| msgid "from %(currency)s %(price)s"
msgid "You get %(currency)s %(amount)s back"
msgstr "fra %(currency)s %(price)s"
#: pretix/static/pretixpresale/js/ui/main.js:239
#: pretix/static/pretixpresale/js/ui/main.js:218
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:458
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:510
#, fuzzy
#| msgid "Cart expired"
msgid "required"
msgstr "Kurv udløbet"
#: pretix/static/pretixpresale/js/ui/main.js:554
#: pretix/static/pretixpresale/js/ui/main.js:574
msgid "Time zone:"
msgstr "Tidszone:"
#: pretix/static/pretixpresale/js/ui/main.js:565
#: pretix/static/pretixpresale/js/ui/main.js:558
msgid "Your local time:"
msgstr "Din lokaltid:"
@@ -811,33 +837,43 @@ msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:19
msgctxt "widget"
msgid "Price"
msgid "Filter events by"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:20
msgctxt "widget"
msgid "Filter"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
#: pretix/static/pretixpresale/js/widget/widget.js:23
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/js/widget/widget.js:24
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/js/widget/widget.js:25
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/js/widget/widget.js:26
#, fuzzy, javascript-format
#| msgctxt "widget"
#| msgid "See variations"
@@ -845,87 +881,87 @@ msgctxt "widget"
msgid "Select variant %s"
msgstr "Vis varianter"
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.js:27
msgctxt "widget"
msgid "Sold out"
msgstr "Udsolgt"
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
msgctxt "widget"
msgid "Buy"
msgstr "Læg i kurv"
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.js:29
msgctxt "widget"
msgid "Register"
msgstr "Book nu"
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
msgctxt "widget"
msgid "Reserved"
msgstr "Reserveret"
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
msgctxt "widget"
msgid "FREE"
msgstr "GRATIS"
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
msgctxt "widget"
msgid "from %(currency)s %(price)s"
msgstr "fra %(currency)s %(price)s"
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.js:33
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.js:34
msgctxt "widget"
msgid "incl. %(rate)s% %(taxname)s"
msgstr "inkl. %(rate)s% %(taxname)s"
#: pretix/static/pretixpresale/js/widget/widget.js:33
#: pretix/static/pretixpresale/js/widget/widget.js:35
msgctxt "widget"
msgid "plus %(rate)s% %(taxname)s"
msgstr "plus %(rate)s% %(taxname)s"
#: pretix/static/pretixpresale/js/widget/widget.js:34
#: pretix/static/pretixpresale/js/widget/widget.js:36
msgctxt "widget"
msgid "incl. taxes"
msgstr "inkl. moms"
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/js/widget/widget.js:37
msgctxt "widget"
msgid "plus taxes"
msgstr "plus moms"
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#, javascript-format
msgctxt "widget"
msgid "currently available: %s"
msgstr "tilgængelig: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/js/widget/widget.js:39
msgctxt "widget"
msgid "Only available with a voucher"
msgstr "Kun tilgængelig med en rabatkode"
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:43
#, fuzzy
#| msgid "Payment method unavailable"
msgctxt "widget"
msgid "Not yet available"
msgstr "Betalingsmetode er ikke tilgængelig"
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/js/widget/widget.js:41
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:42
#, fuzzy
#| msgctxt "widget"
#| msgid "currently available: %s"
@@ -933,30 +969,30 @@ msgctxt "widget"
msgid "Currently not available"
msgstr "tilgængelig: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.js:44
#, javascript-format
msgctxt "widget"
msgid "minimum amount to order: %s"
msgstr "minimumsantal: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:43
#: pretix/static/pretixpresale/js/widget/widget.js:45
msgctxt "widget"
msgid "Close ticket shop"
msgstr "Luk billetbutik"
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.js:46
msgctxt "widget"
msgid "The ticket shop could not be loaded."
msgstr "Billetbutikken kunne ikke hentes."
#: pretix/static/pretixpresale/js/widget/widget.js:45
#: pretix/static/pretixpresale/js/widget/widget.js:47
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
"in a new tab to continue."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:47
#: pretix/static/pretixpresale/js/widget/widget.js:49
#, fuzzy
#| msgctxt "widget"
#| msgid "Close ticket shop"
@@ -964,7 +1000,7 @@ msgctxt "widget"
msgid "Open ticket shop"
msgstr "Luk billetbutik"
#: pretix/static/pretixpresale/js/widget/widget.js:48
#: pretix/static/pretixpresale/js/widget/widget.js:50
#, fuzzy
#| msgctxt "widget"
#| msgid "Resume checkout"
@@ -972,24 +1008,24 @@ msgctxt "widget"
msgid "Checkout"
msgstr "Fortsæt booking"
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/js/widget/widget.js:51
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr "Kurven kunne ikke oprettes. Prøv igen senere"
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/js/widget/widget.js:52
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
"this ticket shop. Please click \"Continue\" to retry in a new tab."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:54
msgctxt "widget"
msgid "Waiting list"
msgstr "Venteliste"
#: pretix/static/pretixpresale/js/widget/widget.js:53
#: pretix/static/pretixpresale/js/widget/widget.js:55
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
@@ -998,37 +1034,50 @@ msgstr ""
"Du har allerede en aktiv booking i gang for dette arrangement. Hvis du "
"vælger flere produkter, så vil de blive tilføjet din eksisterende booking."
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:57
msgctxt "widget"
msgid "Resume checkout"
msgstr "Fortsæt booking"
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:58
msgctxt "widget"
msgid "Redeem a voucher"
msgstr "Indløs rabatkode"
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:59
msgctxt "widget"
msgid "Redeem"
msgstr "Indløs"
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Voucher code"
msgstr "Rabatkode"
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Close"
msgstr "Luk"
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/js/widget/widget.js:62
#, fuzzy
#| msgctxt "widget"
#| msgid "Resume checkout"
msgctxt "widget"
msgid "Close checkout"
msgstr "Fortsæt booking"
#: pretix/static/pretixpresale/js/widget/widget.js:63
msgctxt "widget"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
msgctxt "widget"
msgid "Continue"
msgstr "Fortsæt"
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/js/widget/widget.js:65
#, fuzzy
#| msgctxt "widget"
#| msgid "See variations"
@@ -1036,7 +1085,7 @@ msgctxt "widget"
msgid "Show variants"
msgstr "Vis varianter"
#: pretix/static/pretixpresale/js/widget/widget.js:62
#: pretix/static/pretixpresale/js/widget/widget.js:66
#, fuzzy
#| msgctxt "widget"
#| msgid "See variations"
@@ -1044,37 +1093,37 @@ msgctxt "widget"
msgid "Hide variants"
msgstr "Vis varianter"
#: pretix/static/pretixpresale/js/widget/widget.js:63
#: pretix/static/pretixpresale/js/widget/widget.js:67
msgctxt "widget"
msgid "Choose a different event"
msgstr "Vælg et andet arrangement"
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/js/widget/widget.js:68
msgctxt "widget"
msgid "Choose a different date"
msgstr "Vælg en anden dato"
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.js:69
msgctxt "widget"
msgid "Back"
msgstr "Tilbage"
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.js:70
msgctxt "widget"
msgid "Next month"
msgstr "Næste måned"
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.js:71
msgctxt "widget"
msgid "Previous month"
msgstr "Forrige måned"
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.js:72
msgctxt "widget"
msgid "Next week"
msgstr "Næste uge"
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.js:73
#, fuzzy
#| msgctxt "widget"
#| msgid "Previous month"
@@ -1082,12 +1131,12 @@ msgctxt "widget"
msgid "Previous week"
msgstr "Forrige måned"
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.js:74
msgctxt "widget"
msgid "Open seat selection"
msgstr "Åbn sædevalg"
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.js:75
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -1095,115 +1144,118 @@ msgid ""
"again."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.js:76
msgctxt "widget"
msgid "Load more"
msgstr "Hent flere"
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:78
msgid "Mo"
msgstr "Man"
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:79
msgid "Tu"
msgstr "Tirs"
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:80
msgid "We"
msgstr "Ons"
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:81
msgid "Th"
msgstr "Tors"
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "Fr"
msgstr "Fre"
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "Sa"
msgstr "Lør"
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "Su"
msgstr "Søn"
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.js:88
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/js/widget/widget.js:89
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/js/widget/widget.js:91
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/js/widget/widget.js:94
msgid "January"
msgstr "Januar"
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.js:95
msgid "February"
msgstr "Februar"
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:96
msgid "March"
msgstr "Marts"
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:97
msgid "April"
msgstr "April"
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.js:98
msgid "May"
msgstr "Maj"
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.js:99
msgid "June"
msgstr "Juni"
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.js:100
msgid "July"
msgstr "Juli"
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.js:101
msgid "August"
msgstr "August"
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.js:102
msgid "September"
msgstr "September"
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.js:103
msgid "October"
msgstr "Oktober"
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.js:104
msgid "November"
msgstr "November"
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.js:105
msgid "December"
msgstr "December"
#~ msgid "Time zone:"
#~ msgstr "Tidszone:"
#~ msgctxt "widget"
#~ msgid "See variations"
#~ msgstr "Vis varianter"
File diff suppressed because it is too large Load Diff
+210 -142
View File
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:08+0000\n"
"PO-Revision-Date: 2025-05-12 14:33+0000\n"
"POT-Creation-Date: 2025-06-26 09:11+0000\n"
"PO-Revision-Date: 2025-05-30 11:08+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"Language-Team: German <https://translate.pretix.eu/projects/pretix/pretix-js/"
"de/>\n"
@@ -132,6 +132,7 @@ msgstr "Mercado Pago"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:89
msgid "Continue"
msgstr "Fortfahren"
@@ -329,13 +330,13 @@ msgid "Currently inside"
msgstr "Derzeit anwesend"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:71
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "Yes"
msgstr "Ja"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:72
#: pretix/static/pretixcontrol/js/ui/question.js:138
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "No"
msgstr "Nein"
@@ -344,8 +345,12 @@ msgstr "Nein"
msgid "close"
msgstr "schließen"
#: pretix/static/pretixbase/js/asynctask.js:58
#: pretix/static/pretixbase/js/asynctask.js:135
#: pretix/static/pretixbase/js/addressform.js:59
#: pretix/static/pretixpresale/js/ui/main.js:513
msgid "required"
msgstr "erforderlich"
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
@@ -353,15 +358,13 @@ msgstr ""
"Ihre Anfrage wird nun verarbeitet. Je nach Größe der Veranstaltung kann dies "
"einige Minuten dauern."
#: pretix/static/pretixbase/js/asynctask.js:63
#: pretix/static/pretixbase/js/asynctask.js:140
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr ""
"Ihre Anfrage befindet sich beim Server in der Warteschlange und wird bald "
"verarbeitet."
#: pretix/static/pretixbase/js/asynctask.js:69
#: pretix/static/pretixbase/js/asynctask.js:146
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
@@ -372,14 +375,14 @@ msgstr ""
"bitte oder gehen Sie in Ihrem Browser einen Schritt zurück und versuchen es "
"erneut."
#: pretix/static/pretixbase/js/asynctask.js:105
#: pretix/static/pretixbase/js/asynctask.js:193
#: pretix/static/pretixbase/js/asynctask.js:198
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr "Ein Fehler ist aufgetreten. Fehlercode: {code}"
#: pretix/static/pretixbase/js/asynctask.js:108
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
@@ -387,12 +390,12 @@ msgstr ""
"Wir können den Server aktuell nicht erreichen, versuchen es aber weiter. "
"Letzter Fehlercode: {code}"
#: pretix/static/pretixbase/js/asynctask.js:160
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr "Diese Anfrage hat zu lange gedauert. Bitte erneut versuchen."
#: pretix/static/pretixbase/js/asynctask.js:201
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
@@ -400,11 +403,11 @@ msgstr ""
"Wir können den Server aktuell nicht erreichen. Bitte versuchen Sie es noch "
"einmal. Fehlercode: {code}"
#: pretix/static/pretixbase/js/asynctask.js:230
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "Wir verarbeiten Ihre Anfrage …"
#: pretix/static/pretixbase/js/asynctask.js:238
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
@@ -414,8 +417,11 @@ msgstr ""
"dauert, prüfen Sie bitte Ihre Internetverbindung. Danach können Sie diese "
"Seite neu laden und es erneut versuchen."
#: pretix/static/pretixbase/js/asynctask.js:301
#: pretix/static/pretixcontrol/js/ui/main.js:71
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr "Wenn dies länger als einige Minuten dauert, kontaktiere uns bitte."
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr "Schließen"
@@ -622,62 +628,65 @@ msgstr "Ein Fehler ist aufgetreten."
msgid "Generating messages …"
msgstr "Generiere Nachrichten…"
#: pretix/static/pretixcontrol/js/ui/main.js:109
#: pretix/static/pretixcontrol/js/ui/main.js:69
msgid "Unknown error."
msgstr "Unbekannter Fehler."
#: pretix/static/pretixcontrol/js/ui/main.js:330
msgid "Your color has great contrast and is very easy to read!"
msgstr "Diese Farbe hat einen sehr guten Kontrast und ist sehr gut zu lesen!"
#: pretix/static/pretixcontrol/js/ui/main.js:334
msgid "Your color has decent contrast and is probably good-enough to read!"
#: pretix/static/pretixcontrol/js/ui/main.js:292
msgid "Your color has great contrast and will provide excellent accessibility."
msgstr ""
"Diese Farbe hat einen ausreichenden Kontrast und ist wahrscheinlich gut zu "
"lesen!"
"Diese Farbe hat einen sehr guten Kontrast und trägt zur Barrierefreiheit bei!"
#: pretix/static/pretixcontrol/js/ui/main.js:338
#: pretix/static/pretixcontrol/js/ui/main.js:296
msgid ""
"Your color has bad contrast for text on white background, please choose a "
"darker shade."
"Your color has decent contrast and is sufficient for minimum accessibility "
"requirements."
msgstr ""
"Diese Farbe hat einen schlechten Kontrast für Text auf einem weißen "
"Hintergrund. Bitte wählen Sie eine dunklere Farbe."
"Diese Farbe hat einen ausreichenden Kontrast und genügt den "
"Mindestanforderungen der Barrierefreiheit."
#: pretix/static/pretixcontrol/js/ui/main.js:454
#: pretix/static/pretixcontrol/js/ui/main.js:474
#: pretix/static/pretixcontrol/js/ui/main.js:300
msgid ""
"Your color has insufficient contrast to white. Accessibility of your site "
"will be impacted."
msgstr ""
"Diese Farbe hat keinen ausreichenden Kontrast zu weiß. Die Barrierefreiheit "
"der Seite ist eingeschränkt."
#: pretix/static/pretixcontrol/js/ui/main.js:416
#: pretix/static/pretixcontrol/js/ui/main.js:436
msgid "Search query"
msgstr "Suchbegriff"
#: pretix/static/pretixcontrol/js/ui/main.js:472
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr "Alle"
#: pretix/static/pretixcontrol/js/ui/main.js:473
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr "Keine"
#: pretix/static/pretixcontrol/js/ui/main.js:477
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr "Nur ausgewählte"
#: pretix/static/pretixcontrol/js/ui/main.js:820
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Enter page number between 1 and %(max)s."
msgstr "Geben Sie eine Seitenzahl zwischen 1 und %(max)s ein."
#: pretix/static/pretixcontrol/js/ui/main.js:823
#: pretix/static/pretixcontrol/js/ui/main.js:814
msgid "Invalid page number."
msgstr "Ungültige Seitenzahl."
#: pretix/static/pretixcontrol/js/ui/main.js:981
#: pretix/static/pretixcontrol/js/ui/main.js:972
msgid "Use a different name internally"
msgstr "Intern einen anderen Namen verwenden"
#: pretix/static/pretixcontrol/js/ui/main.js:1021
#: pretix/static/pretixcontrol/js/ui/main.js:1012
msgid "Click to close"
msgstr "Klicken zum Schließen"
#: pretix/static/pretixcontrol/js/ui/main.js:1102
#: pretix/static/pretixcontrol/js/ui/main.js:1093
msgid "You have unsaved changes!"
msgstr "Sie haben ungespeicherte Änderungen!"
@@ -689,11 +698,11 @@ msgstr "Berechne Standardpreis…"
msgid "No results"
msgstr "Keine Ergebnisse"
#: pretix/static/pretixcontrol/js/ui/question.js:42
#: pretix/static/pretixcontrol/js/ui/question.js:41
msgid "Others"
msgstr "Sonstige"
#: pretix/static/pretixcontrol/js/ui/question.js:82
#: pretix/static/pretixcontrol/js/ui/question.js:81
msgid "Count"
msgstr "Anzahl"
@@ -703,7 +712,7 @@ msgid_plural "({num} more dates)"
msgstr[0] "(ein weiterer Termin)"
msgstr[1] "({num} weitere Termine)"
#: pretix/static/pretixpresale/js/ui/cart.js:43
#: pretix/static/pretixpresale/js/ui/cart.js:47
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as theyre available."
@@ -712,11 +721,16 @@ msgstr ""
"können die Bestellung trotzdem abschließen, solange die Produkte noch "
"verfügbar sind."
#: pretix/static/pretixpresale/js/ui/cart.js:45
#: pretix/static/pretixpresale/js/ui/cart.js:49
msgid "Cart expired"
msgstr "Warenkorb abgelaufen"
#: pretix/static/pretixpresale/js/ui/cart.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:58
#: pretix/static/pretixpresale/js/ui/cart.js:84
msgid "Your cart is about to expire."
msgstr "Ihr Warenkorb läuft gleich ab."
#: pretix/static/pretixpresale/js/ui/cart.js:62
msgid "The items in your cart are reserved for you for one minute."
msgid_plural "The items in your cart are reserved for you for {num} minutes."
msgstr[0] ""
@@ -724,32 +738,40 @@ msgstr[0] ""
msgstr[1] ""
"Die Produkte in Ihrem Warenkorb sind noch {num} Minuten für Sie reserviert."
#: pretix/static/pretixpresale/js/ui/main.js:215
#: pretix/static/pretixpresale/js/ui/cart.js:83
msgid "Your cart has expired."
msgstr "Ihr Warenkorb ist abgelaufen."
#: pretix/static/pretixpresale/js/ui/cart.js:86
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as they're available."
msgstr ""
"Die Produkte in Ihrem Warenkorb sind nicht mehr für Sie reserviert. Sie "
"können die Bestellung trotzdem abschließen, solange die Produkte noch "
"verfügbar sind."
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Do you want to renew the reservation period?"
msgstr "Möchten Sie die Reservierung verlängern?"
#: pretix/static/pretixpresale/js/ui/cart.js:90
msgid "Renew reservation"
msgstr "Reservierung verlängern"
#: pretix/static/pretixpresale/js/ui/main.js:194
msgid "The organizer keeps %(currency)s %(amount)s"
msgstr "Der Veranstalter behält %(currency)s %(amount)s ein"
#: pretix/static/pretixpresale/js/ui/main.js:223
#: pretix/static/pretixpresale/js/ui/main.js:202
msgid "You get %(currency)s %(amount)s back"
msgstr "Sie erhalten %(currency)s %(amount)s zurück"
#: pretix/static/pretixpresale/js/ui/main.js:239
#: pretix/static/pretixpresale/js/ui/main.js:218
msgid "Please enter the amount the organizer can keep."
msgstr "Bitte geben Sie den Betrag ein, den der Veranstalter einbehalten darf."
#: pretix/static/pretixpresale/js/ui/main.js:458
msgid "Please enter a quantity for one of the ticket types."
msgstr "Bitte tragen Sie eine Menge für eines der Produkte ein."
#: pretix/static/pretixpresale/js/ui/main.js:510
msgid "required"
msgstr "erforderlich"
#: pretix/static/pretixpresale/js/ui/main.js:554
#: pretix/static/pretixpresale/js/ui/main.js:574
msgid "Time zone:"
msgstr "Zeitzone:"
#: pretix/static/pretixpresale/js/ui/main.js:565
#: pretix/static/pretixpresale/js/ui/main.js:558
msgid "Your local time:"
msgstr "Deine lokale Zeit:"
@@ -774,138 +796,148 @@ msgstr "Menge erhöhen"
#: pretix/static/pretixpresale/js/widget/widget.js:19
msgctxt "widget"
msgid "Filter events by"
msgstr "Veranstaltungen filtern nach"
#: pretix/static/pretixpresale/js/widget/widget.js:20
msgctxt "widget"
msgid "Filter"
msgstr "Filtern"
#: pretix/static/pretixpresale/js/widget/widget.js:21
msgctxt "widget"
msgid "Price"
msgstr "Preis"
#: pretix/static/pretixpresale/js/widget/widget.js:20
#: pretix/static/pretixpresale/js/widget/widget.js:22
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr "Originalpreis: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:21
#: pretix/static/pretixpresale/js/widget/widget.js:23
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr "Neuer Preis: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/js/widget/widget.js:24
msgctxt "widget"
msgid "Select"
msgstr "Auswählen"
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/js/widget/widget.js:25
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr "%s auswählen"
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/js/widget/widget.js:26
#, javascript-format
msgctxt "widget"
msgid "Select variant %s"
msgstr "Variante %s auswählen"
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.js:27
msgctxt "widget"
msgid "Sold out"
msgstr "Ausverkauft"
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
msgctxt "widget"
msgid "Buy"
msgstr "In den Warenkorb"
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.js:29
msgctxt "widget"
msgid "Register"
msgstr "Anmelden"
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
msgctxt "widget"
msgid "Reserved"
msgstr "Reserviert"
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
msgctxt "widget"
msgid "FREE"
msgstr "GRATIS"
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
msgctxt "widget"
msgid "from %(currency)s %(price)s"
msgstr "ab %(currency)s %(price)s"
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.js:33
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr "Bild von %s"
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.js:34
msgctxt "widget"
msgid "incl. %(rate)s% %(taxname)s"
msgstr "inkl. %(rate)s% %(taxname)s"
#: pretix/static/pretixpresale/js/widget/widget.js:33
#: pretix/static/pretixpresale/js/widget/widget.js:35
msgctxt "widget"
msgid "plus %(rate)s% %(taxname)s"
msgstr "zzgl. %(rate)s% %(taxname)s"
#: pretix/static/pretixpresale/js/widget/widget.js:34
#: pretix/static/pretixpresale/js/widget/widget.js:36
msgctxt "widget"
msgid "incl. taxes"
msgstr "inkl. Steuern"
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/js/widget/widget.js:37
msgctxt "widget"
msgid "plus taxes"
msgstr "zzgl. Steuern"
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#, javascript-format
msgctxt "widget"
msgid "currently available: %s"
msgstr "aktuell verfügbar: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/js/widget/widget.js:39
msgctxt "widget"
msgid "Only available with a voucher"
msgstr "Nur mit Gutschein verfügbar"
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:43
msgctxt "widget"
msgid "Not yet available"
msgstr "Noch nicht verfügbar"
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/js/widget/widget.js:41
msgctxt "widget"
msgid "Not available anymore"
msgstr "Nicht mehr verfügbar"
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:42
msgctxt "widget"
msgid "Currently not available"
msgstr "Aktuell nicht verfügbar"
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.js:44
#, javascript-format
msgctxt "widget"
msgid "minimum amount to order: %s"
msgstr "minimale Bestellmenge: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:43
#: pretix/static/pretixpresale/js/widget/widget.js:45
msgctxt "widget"
msgid "Close ticket shop"
msgstr "Ticketshop schließen"
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.js:46
msgctxt "widget"
msgid "The ticket shop could not be loaded."
msgstr "Der Ticketshop konnte nicht geladen werden."
#: pretix/static/pretixpresale/js/widget/widget.js:45
#: pretix/static/pretixpresale/js/widget/widget.js:47
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
@@ -914,22 +946,22 @@ msgstr ""
"Es sind derzeit sehr viele Benutzer in diesem Ticketshop. Bitte öffnen Sie "
"diesen Ticketshop in einem neuen Tab um fortzufahren."
#: pretix/static/pretixpresale/js/widget/widget.js:47
#: pretix/static/pretixpresale/js/widget/widget.js:49
msgctxt "widget"
msgid "Open ticket shop"
msgstr "Ticketshop öffnen"
#: pretix/static/pretixpresale/js/widget/widget.js:48
#: pretix/static/pretixpresale/js/widget/widget.js:50
msgctxt "widget"
msgid "Checkout"
msgstr "Buchung"
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/js/widget/widget.js:51
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr "Der Warenkorb konnte nicht erstellt werden. Bitte erneut versuchen"
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/js/widget/widget.js:52
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
@@ -939,12 +971,12 @@ msgstr ""
"diesem Ticketshop sind. Bitte klicken Sie \"Weiter\" um es in einem neuen "
"Tab erneut zu versuchen."
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:54
msgctxt "widget"
msgid "Waiting list"
msgstr "Warteliste"
#: pretix/static/pretixpresale/js/widget/widget.js:53
#: pretix/static/pretixpresale/js/widget/widget.js:55
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
@@ -953,87 +985,99 @@ msgstr ""
"Sie haben einen aktiven Warenkorb für diese Veranstaltung. Wenn Sie mehr "
"Produkte auswählen, werden diese zu Ihrem Warenkorb hinzugefügt."
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:57
msgctxt "widget"
msgid "Resume checkout"
msgstr "Kauf fortsetzen"
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:58
msgctxt "widget"
msgid "Redeem a voucher"
msgstr "Gutschein einlösen"
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:59
msgctxt "widget"
msgid "Redeem"
msgstr "Einlösen"
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Voucher code"
msgstr "Gutscheincode"
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Close"
msgstr "Schließen"
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/js/widget/widget.js:62
msgctxt "widget"
msgid "Close checkout"
msgstr "Kauf schließen"
#: pretix/static/pretixpresale/js/widget/widget.js:63
msgctxt "widget"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
"Sie können diese Aktion nicht abbrechen. Bitte warten Sie, bis der "
"Ladevorgang abgeschlossen ist."
#: pretix/static/pretixpresale/js/widget/widget.js:64
msgctxt "widget"
msgid "Continue"
msgstr "Fortfahren"
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/js/widget/widget.js:65
msgctxt "widget"
msgid "Show variants"
msgstr "Varianten zeigen"
#: pretix/static/pretixpresale/js/widget/widget.js:62
#: pretix/static/pretixpresale/js/widget/widget.js:66
msgctxt "widget"
msgid "Hide variants"
msgstr "Varianten verstecken"
#: pretix/static/pretixpresale/js/widget/widget.js:63
#: pretix/static/pretixpresale/js/widget/widget.js:67
msgctxt "widget"
msgid "Choose a different event"
msgstr "Andere Veranstaltung auswählen"
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/js/widget/widget.js:68
msgctxt "widget"
msgid "Choose a different date"
msgstr "Anderen Termin auswählen"
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.js:69
msgctxt "widget"
msgid "Back"
msgstr "Zurück"
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.js:70
msgctxt "widget"
msgid "Next month"
msgstr "Nächster Monat"
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.js:71
msgctxt "widget"
msgid "Previous month"
msgstr "Vorheriger Monat"
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.js:72
msgctxt "widget"
msgid "Next week"
msgstr "Nächste Woche"
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.js:73
msgctxt "widget"
msgid "Previous week"
msgstr "Vorherige Woche"
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.js:74
msgctxt "widget"
msgid "Open seat selection"
msgstr "Sitzplan öffnen"
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.js:75
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -1044,115 +1088,139 @@ msgstr ""
"möchten, können Sie sich in die Warteliste eintragen. Wir benachrichtigen "
"Sie dann, wenn die gewünschten Plätze wieder verfügbar sind."
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.js:76
msgctxt "widget"
msgid "Load more"
msgstr "Mehr laden"
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:78
msgid "Mo"
msgstr "Mo"
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:79
msgid "Tu"
msgstr "Di"
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:80
msgid "We"
msgstr "Mi"
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:81
msgid "Th"
msgstr "Do"
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "Fr"
msgstr "Fr"
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "Sa"
msgstr "Sa"
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "Su"
msgstr "So"
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "Monday"
msgstr "Montag"
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "Tuesday"
msgstr "Dienstag"
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "Wednesday"
msgstr "Mittwoch"
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.js:88
msgid "Thursday"
msgstr "Donnerstag"
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/js/widget/widget.js:89
msgid "Friday"
msgstr "Freitag"
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "Saturday"
msgstr "Samstag"
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/js/widget/widget.js:91
msgid "Sunday"
msgstr "Sonntag"
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/js/widget/widget.js:94
msgid "January"
msgstr "Januar"
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.js:95
msgid "February"
msgstr "Februar"
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:96
msgid "March"
msgstr "März"
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:97
msgid "April"
msgstr "April"
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.js:98
msgid "May"
msgstr "Mai"
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.js:99
msgid "June"
msgstr "Juni"
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.js:100
msgid "July"
msgstr "Juli"
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.js:101
msgid "August"
msgstr "August"
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.js:102
msgid "September"
msgstr "September"
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.js:103
msgid "October"
msgstr "Oktober"
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.js:104
msgid "November"
msgstr "November"
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.js:105
msgid "December"
msgstr "Dezember"
#~ msgid ""
#~ "Your cart is about to expire. If you want to continue, please click here:"
#~ msgstr ""
#~ "Dein Warenkorb läuft gleich ab. Wenn du weitermachen willst, klick bitte "
#~ "hier:"
#~ msgid "Your cart has expired. If you want to continue, please click here:"
#~ msgstr ""
#~ "Dein Warenkorb ist abgelaufen. Wenn du weitermachen willst, klick bitte "
#~ "hier:"
#~ msgid "Time zone:"
#~ msgstr "Zeitzone:"
#~ msgid ""
#~ "Your color has bad contrast for text on white background, please choose a "
#~ "darker shade."
#~ msgstr ""
#~ "Diese Farbe hat einen schlechten Kontrast für Text auf einem weißen "
#~ "Hintergrund. Bitte wählen Sie eine dunklere Farbe."
#~ msgid "Please enter a quantity for one of the ticket types."
#~ msgstr "Bitte tragen Sie eine Menge für eines der Produkte ein."
#~ msgctxt "widget"
#~ msgid "See variations"
#~ msgstr "Varianten zeigen"
+3
View File
@@ -76,6 +76,7 @@ Ceuta
Cc
chardet
charge
Checkbox
Checkout
Chrome
Choice
@@ -269,6 +270,7 @@ Registrierungs
Registrierungsdatum
Registrierungsnummer
Registrierungsversuche
remote
Renderer
Request
Requests
@@ -329,6 +331,7 @@ Teammitglied
Teamname
Telephone
Ticketing
Timeout
To
Tokengenerator
Toolbar
File diff suppressed because it is too large Load Diff
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:08+0000\n"
"PO-Revision-Date: 2025-05-12 14:33+0000\n"
"POT-Creation-Date: 2025-06-26 09:11+0000\n"
"PO-Revision-Date: 2025-05-30 11:07+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"Language-Team: German (informal) <https://translate.pretix.eu/projects/"
"pretix/pretix-js/de_Informal/>\n"
@@ -132,6 +132,7 @@ msgstr "Mercado Pago"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:89
msgid "Continue"
msgstr "Fortfahren"
@@ -329,13 +330,13 @@ msgid "Currently inside"
msgstr "Derzeit anwesend"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:71
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "Yes"
msgstr "Ja"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:72
#: pretix/static/pretixcontrol/js/ui/question.js:138
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "No"
msgstr "Nein"
@@ -344,8 +345,12 @@ msgstr "Nein"
msgid "close"
msgstr "schließen"
#: pretix/static/pretixbase/js/asynctask.js:58
#: pretix/static/pretixbase/js/asynctask.js:135
#: pretix/static/pretixbase/js/addressform.js:59
#: pretix/static/pretixpresale/js/ui/main.js:513
msgid "required"
msgstr "erforderlich"
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
@@ -353,15 +358,13 @@ msgstr ""
"Deine Anfrage wird nun verarbeitet. Je nach Größe der Veranstaltung kann "
"dies einige Minuten dauern."
#: pretix/static/pretixbase/js/asynctask.js:63
#: pretix/static/pretixbase/js/asynctask.js:140
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr ""
"Deine Anfrage befindet sich beim Server in der Warteschlange und wird bald "
"verarbeitet."
#: pretix/static/pretixbase/js/asynctask.js:69
#: pretix/static/pretixbase/js/asynctask.js:146
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
@@ -371,14 +374,14 @@ msgstr ""
"verarbeitet. Wenn dies länger als zwei Minuten dauert, kontaktiere uns bitte "
"oder gehe in deinem Browser einen Schritt zurück und versuche es erneut."
#: pretix/static/pretixbase/js/asynctask.js:105
#: pretix/static/pretixbase/js/asynctask.js:193
#: pretix/static/pretixbase/js/asynctask.js:198
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr "Ein Fehler vom Typ {code} ist aufgetreten."
#: pretix/static/pretixbase/js/asynctask.js:108
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
@@ -386,12 +389,12 @@ msgstr ""
"Wir können den Server aktuell nicht erreichen, versuchen es aber weiter. "
"Letzter Fehlercode: {code}"
#: pretix/static/pretixbase/js/asynctask.js:160
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr "Diese Anfrage hat zu lange gedauert. Bitte erneut versuchen."
#: pretix/static/pretixbase/js/asynctask.js:201
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
@@ -399,11 +402,11 @@ msgstr ""
"Wir können den Server aktuell nicht erreichen. Bitte versuche es noch "
"einmal. Fehlercode: {code}"
#: pretix/static/pretixbase/js/asynctask.js:230
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "Wir verarbeiten deine Anfrage …"
#: pretix/static/pretixbase/js/asynctask.js:238
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
@@ -413,8 +416,12 @@ msgstr ""
"dauert, prüfe bitte deine Internetverbindung. Danach kannst du diese Seite "
"neu laden und es erneut versuchen."
#: pretix/static/pretixbase/js/asynctask.js:301
#: pretix/static/pretixcontrol/js/ui/main.js:71
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
"Wenn dies länger als einige Minuten dauert, kontaktieren Sie uns bitte."
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr "Schließen"
@@ -621,62 +628,65 @@ msgstr "Ein Fehler ist aufgetreten."
msgid "Generating messages …"
msgstr "Generiere Nachrichten…"
#: pretix/static/pretixcontrol/js/ui/main.js:109
#: pretix/static/pretixcontrol/js/ui/main.js:69
msgid "Unknown error."
msgstr "Unbekannter Fehler."
#: pretix/static/pretixcontrol/js/ui/main.js:330
msgid "Your color has great contrast and is very easy to read!"
msgstr "Diese Farbe hat einen sehr guten Kontrast und ist sehr gut zu lesen!"
#: pretix/static/pretixcontrol/js/ui/main.js:334
msgid "Your color has decent contrast and is probably good-enough to read!"
#: pretix/static/pretixcontrol/js/ui/main.js:292
msgid "Your color has great contrast and will provide excellent accessibility."
msgstr ""
"Diese Farbe hat einen ausreichenden Kontrast und ist wahrscheinlich gut zu "
"lesen!"
"Diese Farbe hat einen sehr guten Kontrast und trägt zur Barrierefreiheit bei!"
#: pretix/static/pretixcontrol/js/ui/main.js:338
#: pretix/static/pretixcontrol/js/ui/main.js:296
msgid ""
"Your color has bad contrast for text on white background, please choose a "
"darker shade."
"Your color has decent contrast and is sufficient for minimum accessibility "
"requirements."
msgstr ""
"Diese Farbe hat einen schlechten Kontrast für Text auf einem weißen "
"Hintergrund. Bitte wähle eine dunklere Farbe."
"Diese Farbe hat einen ausreichenden Kontrast und genügt den "
"Mindestanforderungen der Barrierefreiheit."
#: pretix/static/pretixcontrol/js/ui/main.js:454
#: pretix/static/pretixcontrol/js/ui/main.js:474
#: pretix/static/pretixcontrol/js/ui/main.js:300
msgid ""
"Your color has insufficient contrast to white. Accessibility of your site "
"will be impacted."
msgstr ""
"Diese Farbe hat keinen ausreichenden Kontrast zu weiß. Die Barrierefreiheit "
"der Seite ist eingeschränkt."
#: pretix/static/pretixcontrol/js/ui/main.js:416
#: pretix/static/pretixcontrol/js/ui/main.js:436
msgid "Search query"
msgstr "Suchbegriff"
#: pretix/static/pretixcontrol/js/ui/main.js:472
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr "Alle"
#: pretix/static/pretixcontrol/js/ui/main.js:473
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr "Keine"
#: pretix/static/pretixcontrol/js/ui/main.js:477
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr "Nur ausgewählte"
#: pretix/static/pretixcontrol/js/ui/main.js:820
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Enter page number between 1 and %(max)s."
msgstr "Gib eine Seitenzahl zwischen 1 und %(max)s ein."
#: pretix/static/pretixcontrol/js/ui/main.js:823
#: pretix/static/pretixcontrol/js/ui/main.js:814
msgid "Invalid page number."
msgstr "Ungültige Seitenzahl."
#: pretix/static/pretixcontrol/js/ui/main.js:981
#: pretix/static/pretixcontrol/js/ui/main.js:972
msgid "Use a different name internally"
msgstr "Intern einen anderen Namen verwenden"
#: pretix/static/pretixcontrol/js/ui/main.js:1021
#: pretix/static/pretixcontrol/js/ui/main.js:1012
msgid "Click to close"
msgstr "Klicken zum Schließen"
#: pretix/static/pretixcontrol/js/ui/main.js:1102
#: pretix/static/pretixcontrol/js/ui/main.js:1093
msgid "You have unsaved changes!"
msgstr "Du hast ungespeicherte Änderungen!"
@@ -688,11 +698,11 @@ msgstr "Berechne Standardpreis…"
msgid "No results"
msgstr "Keine Ergebnisse"
#: pretix/static/pretixcontrol/js/ui/question.js:42
#: pretix/static/pretixcontrol/js/ui/question.js:41
msgid "Others"
msgstr "Sonstige"
#: pretix/static/pretixcontrol/js/ui/question.js:82
#: pretix/static/pretixcontrol/js/ui/question.js:81
msgid "Count"
msgstr "Anzahl"
@@ -702,7 +712,7 @@ msgid_plural "({num} more dates)"
msgstr[0] "(ein weiterer Termin)"
msgstr[1] "({num} weitere Termine)"
#: pretix/static/pretixpresale/js/ui/cart.js:43
#: pretix/static/pretixpresale/js/ui/cart.js:47
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as theyre available."
@@ -711,11 +721,16 @@ msgstr ""
"kannst die Bestellung trotzdem abschließen, solange die Produkte noch "
"verfügbar sind."
#: pretix/static/pretixpresale/js/ui/cart.js:45
#: pretix/static/pretixpresale/js/ui/cart.js:49
msgid "Cart expired"
msgstr "Warenkorb abgelaufen"
#: pretix/static/pretixpresale/js/ui/cart.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:58
#: pretix/static/pretixpresale/js/ui/cart.js:84
msgid "Your cart is about to expire."
msgstr "Dein Warenkorb läuft gleich ab."
#: pretix/static/pretixpresale/js/ui/cart.js:62
msgid "The items in your cart are reserved for you for one minute."
msgid_plural "The items in your cart are reserved for you for {num} minutes."
msgstr[0] ""
@@ -723,32 +738,40 @@ msgstr[0] ""
msgstr[1] ""
"Die Produkte in deinem Warenkorb sind noch {num} Minuten für dich reserviert."
#: pretix/static/pretixpresale/js/ui/main.js:215
#: pretix/static/pretixpresale/js/ui/cart.js:83
msgid "Your cart has expired."
msgstr "Dein Warenkorb ist abgelaufen."
#: pretix/static/pretixpresale/js/ui/cart.js:86
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as they're available."
msgstr ""
"Die Produkte in deinem Warenkorb sind nicht mehr für dich reserviert. Du "
"kannst die Bestellung trotzdem abschließen, solange die Produkte noch "
"verfügbar sind."
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Do you want to renew the reservation period?"
msgstr "Möchtest du die Reservierung verlängern?"
#: pretix/static/pretixpresale/js/ui/cart.js:90
msgid "Renew reservation"
msgstr "Reservierung verlängern"
#: pretix/static/pretixpresale/js/ui/main.js:194
msgid "The organizer keeps %(currency)s %(amount)s"
msgstr "Der Veranstalter behält %(currency)s %(amount)s ein"
#: pretix/static/pretixpresale/js/ui/main.js:223
#: pretix/static/pretixpresale/js/ui/main.js:202
msgid "You get %(currency)s %(amount)s back"
msgstr "Du erhältst %(currency)s %(amount)s zurück"
#: pretix/static/pretixpresale/js/ui/main.js:239
#: pretix/static/pretixpresale/js/ui/main.js:218
msgid "Please enter the amount the organizer can keep."
msgstr "Bitte gib den Betrag ein, den der Veranstalter einbehalten darf."
#: pretix/static/pretixpresale/js/ui/main.js:458
msgid "Please enter a quantity for one of the ticket types."
msgstr "Bitte trage eine Menge für eines der Produkte ein."
#: pretix/static/pretixpresale/js/ui/main.js:510
msgid "required"
msgstr "erforderlich"
#: pretix/static/pretixpresale/js/ui/main.js:554
#: pretix/static/pretixpresale/js/ui/main.js:574
msgid "Time zone:"
msgstr "Zeitzone:"
#: pretix/static/pretixpresale/js/ui/main.js:565
#: pretix/static/pretixpresale/js/ui/main.js:558
msgid "Your local time:"
msgstr "Deine lokale Zeit:"
@@ -773,138 +796,148 @@ msgstr "Menge erhöhen"
#: pretix/static/pretixpresale/js/widget/widget.js:19
msgctxt "widget"
msgid "Filter events by"
msgstr "Veranstaltungen filtern nach"
#: pretix/static/pretixpresale/js/widget/widget.js:20
msgctxt "widget"
msgid "Filter"
msgstr "Filtern"
#: pretix/static/pretixpresale/js/widget/widget.js:21
msgctxt "widget"
msgid "Price"
msgstr "Preis"
#: pretix/static/pretixpresale/js/widget/widget.js:20
#: pretix/static/pretixpresale/js/widget/widget.js:22
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr "Originalpreis: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:21
#: pretix/static/pretixpresale/js/widget/widget.js:23
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr "Neuer Preis: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/js/widget/widget.js:24
msgctxt "widget"
msgid "Select"
msgstr "Auswählen"
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/js/widget/widget.js:25
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr "%s auswählen"
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/js/widget/widget.js:26
#, javascript-format
msgctxt "widget"
msgid "Select variant %s"
msgstr "Variante %s auswählen"
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.js:27
msgctxt "widget"
msgid "Sold out"
msgstr "Ausverkauft"
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
msgctxt "widget"
msgid "Buy"
msgstr "In den Warenkorb"
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.js:29
msgctxt "widget"
msgid "Register"
msgstr "Anmelden"
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
msgctxt "widget"
msgid "Reserved"
msgstr "Reserviert"
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
msgctxt "widget"
msgid "FREE"
msgstr "GRATIS"
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
msgctxt "widget"
msgid "from %(currency)s %(price)s"
msgstr "ab %(currency)s %(price)s"
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.js:33
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr "Bild von %s"
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.js:34
msgctxt "widget"
msgid "incl. %(rate)s% %(taxname)s"
msgstr "inkl. %(rate)s% %(taxname)s"
#: pretix/static/pretixpresale/js/widget/widget.js:33
#: pretix/static/pretixpresale/js/widget/widget.js:35
msgctxt "widget"
msgid "plus %(rate)s% %(taxname)s"
msgstr "zzgl. %(rate)s% %(taxname)s"
#: pretix/static/pretixpresale/js/widget/widget.js:34
#: pretix/static/pretixpresale/js/widget/widget.js:36
msgctxt "widget"
msgid "incl. taxes"
msgstr "inkl. Steuern"
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/js/widget/widget.js:37
msgctxt "widget"
msgid "plus taxes"
msgstr "zzgl. Steuern"
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#, javascript-format
msgctxt "widget"
msgid "currently available: %s"
msgstr "aktuell verfügbar: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/js/widget/widget.js:39
msgctxt "widget"
msgid "Only available with a voucher"
msgstr "Nur mit Gutschein verfügbar"
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:43
msgctxt "widget"
msgid "Not yet available"
msgstr "Noch nicht verfügbar"
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/js/widget/widget.js:41
msgctxt "widget"
msgid "Not available anymore"
msgstr "Nicht mehr verfügbar"
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:42
msgctxt "widget"
msgid "Currently not available"
msgstr "Aktuell nicht verfügbar"
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.js:44
#, javascript-format
msgctxt "widget"
msgid "minimum amount to order: %s"
msgstr "minimale Bestellmenge: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:43
#: pretix/static/pretixpresale/js/widget/widget.js:45
msgctxt "widget"
msgid "Close ticket shop"
msgstr "Ticketshop schließen"
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.js:46
msgctxt "widget"
msgid "The ticket shop could not be loaded."
msgstr "Der Ticketshop konnte nicht geladen werden."
#: pretix/static/pretixpresale/js/widget/widget.js:45
#: pretix/static/pretixpresale/js/widget/widget.js:47
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
@@ -913,22 +946,22 @@ msgstr ""
"Es sind derzeit sehr viele Benutzer in diesem Ticketshop. Bitte öffne diesen "
"Ticketshop in einem neuen Tab um fortzufahren."
#: pretix/static/pretixpresale/js/widget/widget.js:47
#: pretix/static/pretixpresale/js/widget/widget.js:49
msgctxt "widget"
msgid "Open ticket shop"
msgstr "Ticketshop öffnen"
#: pretix/static/pretixpresale/js/widget/widget.js:48
#: pretix/static/pretixpresale/js/widget/widget.js:50
msgctxt "widget"
msgid "Checkout"
msgstr "Buchung"
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/js/widget/widget.js:51
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr "Der Warenkorb konnte nicht erstellt werden. Bitte erneut versuchen."
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/js/widget/widget.js:52
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
@@ -938,12 +971,12 @@ msgstr ""
"diesem Ticketshop sind. Bitte klicke \"Weiter\" um es in einem neuen Tab "
"erneut zu versuchen."
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:54
msgctxt "widget"
msgid "Waiting list"
msgstr "Warteliste"
#: pretix/static/pretixpresale/js/widget/widget.js:53
#: pretix/static/pretixpresale/js/widget/widget.js:55
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
@@ -952,87 +985,99 @@ msgstr ""
"Du hast einen aktiven Warenkorb für diese Veranstaltung. Wenn du mehr "
"Produkte auswählst, werden diese zu deinem Warenkorb hinzugefügt."
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:57
msgctxt "widget"
msgid "Resume checkout"
msgstr "Kauf fortsetzen"
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:58
msgctxt "widget"
msgid "Redeem a voucher"
msgstr "Gutschein einlösen"
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:59
msgctxt "widget"
msgid "Redeem"
msgstr "Einlösen"
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Voucher code"
msgstr "Gutscheincode"
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Close"
msgstr "Schließen"
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/js/widget/widget.js:62
msgctxt "widget"
msgid "Close checkout"
msgstr "Kauf schließen"
#: pretix/static/pretixpresale/js/widget/widget.js:63
msgctxt "widget"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
"Du kannst diese Aktion nicht abbrechen. Bitte warte, bis der Ladevorgang "
"abgeschlossen ist."
#: pretix/static/pretixpresale/js/widget/widget.js:64
msgctxt "widget"
msgid "Continue"
msgstr "Fortfahren"
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/js/widget/widget.js:65
msgctxt "widget"
msgid "Show variants"
msgstr "Varianten zeigen"
#: pretix/static/pretixpresale/js/widget/widget.js:62
#: pretix/static/pretixpresale/js/widget/widget.js:66
msgctxt "widget"
msgid "Hide variants"
msgstr "Varianten verstecken"
#: pretix/static/pretixpresale/js/widget/widget.js:63
#: pretix/static/pretixpresale/js/widget/widget.js:67
msgctxt "widget"
msgid "Choose a different event"
msgstr "Andere Veranstaltung auswählen"
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/js/widget/widget.js:68
msgctxt "widget"
msgid "Choose a different date"
msgstr "Anderen Termin auswählen"
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.js:69
msgctxt "widget"
msgid "Back"
msgstr "Zurück"
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.js:70
msgctxt "widget"
msgid "Next month"
msgstr "Nächster Monat"
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.js:71
msgctxt "widget"
msgid "Previous month"
msgstr "Vorheriger Monat"
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.js:72
msgctxt "widget"
msgid "Next week"
msgstr "Nächste Woche"
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.js:73
msgctxt "widget"
msgid "Previous week"
msgstr "Vorherige Woche"
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.js:74
msgctxt "widget"
msgid "Open seat selection"
msgstr "Sitzplan öffnen"
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.js:75
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -1043,115 +1088,139 @@ msgstr ""
"möchtest, kannst du dich in die Warteliste eintragen. Wir benachrichtigen "
"dich dann, wenn die gewünschten Plätze wieder verfügbar sind."
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.js:76
msgctxt "widget"
msgid "Load more"
msgstr "Mehr laden"
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:78
msgid "Mo"
msgstr "Mo"
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:79
msgid "Tu"
msgstr "Di"
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:80
msgid "We"
msgstr "Mi"
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:81
msgid "Th"
msgstr "Do"
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "Fr"
msgstr "Fr"
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "Sa"
msgstr "Sa"
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "Su"
msgstr "So"
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "Monday"
msgstr "Montag"
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "Tuesday"
msgstr "Dienstag"
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "Wednesday"
msgstr "Mittwoch"
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.js:88
msgid "Thursday"
msgstr "Donnerstag"
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/js/widget/widget.js:89
msgid "Friday"
msgstr "Freitag"
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "Saturday"
msgstr "Samstag"
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/js/widget/widget.js:91
msgid "Sunday"
msgstr "Sonntag"
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/js/widget/widget.js:94
msgid "January"
msgstr "Januar"
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.js:95
msgid "February"
msgstr "Februar"
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:96
msgid "March"
msgstr "März"
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:97
msgid "April"
msgstr "April"
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.js:98
msgid "May"
msgstr "Mai"
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.js:99
msgid "June"
msgstr "Juni"
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.js:100
msgid "July"
msgstr "Juli"
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.js:101
msgid "August"
msgstr "August"
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.js:102
msgid "September"
msgstr "September"
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.js:103
msgid "October"
msgstr "Oktober"
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.js:104
msgid "November"
msgstr "November"
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.js:105
msgid "December"
msgstr "Dezember"
#~ msgid ""
#~ "Your cart is about to expire. If you want to continue, please click here:"
#~ msgstr ""
#~ "Ihr Warenkorb läuft gleich ab. Wenn Sie weitermachen wollen, klicken Sie "
#~ "bitte hier:"
#~ msgid "Your cart has expired. If you want to continue, please click here:"
#~ msgstr ""
#~ "Ihr Warenkorb ist abgelaufen. Wenn Sie weitermachen wollen, klicken Sie "
#~ "bitte hier:"
#~ msgid "Time zone:"
#~ msgstr "Zeitzone:"
#~ msgid ""
#~ "Your color has bad contrast for text on white background, please choose a "
#~ "darker shade."
#~ msgstr ""
#~ "Diese Farbe hat einen schlechten Kontrast für Text auf einem weißen "
#~ "Hintergrund. Bitte wähle eine dunklere Farbe."
#~ msgid "Please enter a quantity for one of the ticket types."
#~ msgstr "Bitte trage eine Menge für eines der Produkte ein."
#~ msgctxt "widget"
#~ msgid "See variations"
#~ msgstr "Varianten zeigen"
@@ -76,6 +76,7 @@ Ceuta
Cc
chardet
charge
Checkbox
Checkout
Chrome
Choice
@@ -269,6 +270,7 @@ Registrierungs
Registrierungsdatum
Registrierungsnummer
Registrierungsversuche
remote
Renderer
Request
Requests
@@ -329,6 +331,7 @@ Teammitglied
Teamname
Telephone
Ticketing
Timeout
To
Tokengenerator
Toolbar
+2289 -2106
View File
File diff suppressed because it is too large Load Diff
+182 -144
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:08+0000\n"
"POT-Creation-Date: 2025-06-26 09:11+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 @@ msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:89
msgid "Continue"
msgstr ""
@@ -328,13 +329,13 @@ msgid "Currently inside"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:71
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "Yes"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:72
#: pretix/static/pretixcontrol/js/ui/question.js:138
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "No"
msgstr ""
@@ -343,63 +344,68 @@ msgstr ""
msgid "close"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:58
#: pretix/static/pretixbase/js/asynctask.js:135
#: pretix/static/pretixbase/js/addressform.js:59
#: pretix/static/pretixpresale/js/ui/main.js:513
msgid "required"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:63
#: pretix/static/pretixbase/js/asynctask.js:140
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:69
#: pretix/static/pretixbase/js/asynctask.js:146
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
"browser and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:105
#: pretix/static/pretixbase/js/asynctask.js:193
#: pretix/static/pretixbase/js/asynctask.js:198
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:108
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:160
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:201
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:230
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:238
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:301
#: pretix/static/pretixcontrol/js/ui/main.js:71
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr ""
@@ -604,58 +610,60 @@ msgstr ""
msgid "Generating messages …"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:109
#: pretix/static/pretixcontrol/js/ui/main.js:69
msgid "Unknown error."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:330
msgid "Your color has great contrast and is very easy to read!"
#: pretix/static/pretixcontrol/js/ui/main.js:292
msgid "Your color has great contrast and will provide excellent accessibility."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:334
msgid "Your color has decent contrast and is probably good-enough to read!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:338
#: pretix/static/pretixcontrol/js/ui/main.js:296
msgid ""
"Your color has bad contrast for text on white background, please choose a "
"darker shade."
"Your color has decent contrast and is sufficient for minimum accessibility "
"requirements."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:454
#: pretix/static/pretixcontrol/js/ui/main.js:474
#: pretix/static/pretixcontrol/js/ui/main.js:300
msgid ""
"Your color has insufficient contrast to white. Accessibility of your site "
"will be impacted."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:416
#: pretix/static/pretixcontrol/js/ui/main.js:436
msgid "Search query"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:472
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:473
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:477
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:820
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:823
#: pretix/static/pretixcontrol/js/ui/main.js:814
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:981
#: pretix/static/pretixcontrol/js/ui/main.js:972
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1021
#: pretix/static/pretixcontrol/js/ui/main.js:1012
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1102
#: pretix/static/pretixcontrol/js/ui/main.js:1093
msgid "You have unsaved changes!"
msgstr ""
@@ -667,11 +675,11 @@ msgstr ""
msgid "No results"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:42
#: pretix/static/pretixcontrol/js/ui/question.js:41
msgid "Others"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:82
#: pretix/static/pretixcontrol/js/ui/question.js:81
msgid "Count"
msgstr ""
@@ -681,48 +689,58 @@ msgid_plural "({num} more dates)"
msgstr[0] ""
msgstr[1] ""
#: pretix/static/pretixpresale/js/ui/cart.js:43
#: pretix/static/pretixpresale/js/ui/cart.js:47
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as theyre available."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:45
#: pretix/static/pretixpresale/js/ui/cart.js:49
msgid "Cart expired"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:58
#: pretix/static/pretixpresale/js/ui/cart.js:84
msgid "Your cart is about to expire."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:62
msgid "The items in your cart are reserved for you for one minute."
msgid_plural "The items in your cart are reserved for you for {num} minutes."
msgstr[0] ""
msgstr[1] ""
#: pretix/static/pretixpresale/js/ui/main.js:215
#: pretix/static/pretixpresale/js/ui/cart.js:83
msgid "Your cart has expired."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:86
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as they're available."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Do you want to renew the reservation period?"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:90
msgid "Renew reservation"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:194
msgid "The organizer keeps %(currency)s %(amount)s"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:223
#: pretix/static/pretixpresale/js/ui/main.js:202
msgid "You get %(currency)s %(amount)s back"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:239
#: pretix/static/pretixpresale/js/ui/main.js:218
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:458
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:510
msgid "required"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:554
#: pretix/static/pretixpresale/js/ui/main.js:574
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:565
#: pretix/static/pretixpresale/js/ui/main.js:558
msgid "Your local time:"
msgstr ""
@@ -747,371 +765,391 @@ msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:19
msgctxt "widget"
msgid "Price"
msgid "Filter events by"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:20
msgctxt "widget"
msgid "Filter"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
#: pretix/static/pretixpresale/js/widget/widget.js:23
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/js/widget/widget.js:24
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/js/widget/widget.js:25
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/js/widget/widget.js:26
#, javascript-format
msgctxt "widget"
msgid "Select variant %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.js:27
msgctxt "widget"
msgid "Sold out"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
msgctxt "widget"
msgid "Buy"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.js:29
msgctxt "widget"
msgid "Register"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
msgctxt "widget"
msgid "Reserved"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
msgctxt "widget"
msgid "FREE"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
msgctxt "widget"
msgid "from %(currency)s %(price)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.js:33
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.js:34
msgctxt "widget"
msgid "incl. %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:33
#: pretix/static/pretixpresale/js/widget/widget.js:35
msgctxt "widget"
msgid "plus %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:34
#: pretix/static/pretixpresale/js/widget/widget.js:36
msgctxt "widget"
msgid "incl. taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/js/widget/widget.js:37
msgctxt "widget"
msgid "plus taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#, javascript-format
msgctxt "widget"
msgid "currently available: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/js/widget/widget.js:39
msgctxt "widget"
msgid "Only available with a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:43
msgctxt "widget"
msgid "Not yet available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/js/widget/widget.js:41
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:42
msgctxt "widget"
msgid "Currently not available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.js:44
#, javascript-format
msgctxt "widget"
msgid "minimum amount to order: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:43
#: pretix/static/pretixpresale/js/widget/widget.js:45
msgctxt "widget"
msgid "Close ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.js:46
msgctxt "widget"
msgid "The ticket shop could not be loaded."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:45
#: pretix/static/pretixpresale/js/widget/widget.js:47
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
"in a new tab to continue."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:47
#: pretix/static/pretixpresale/js/widget/widget.js:49
msgctxt "widget"
msgid "Open ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:48
#: pretix/static/pretixpresale/js/widget/widget.js:50
msgctxt "widget"
msgid "Checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/js/widget/widget.js:51
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/js/widget/widget.js:52
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
"this ticket shop. Please click \"Continue\" to retry in a new tab."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:54
msgctxt "widget"
msgid "Waiting list"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:53
#: pretix/static/pretixpresale/js/widget/widget.js:55
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
"products, they will be added to your existing cart."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:57
msgctxt "widget"
msgid "Resume checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:58
msgctxt "widget"
msgid "Redeem a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:59
msgctxt "widget"
msgid "Redeem"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Voucher code"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Close"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:62
msgctxt "widget"
msgid "Hide variants"
msgid "Close checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:63
msgctxt "widget"
msgid "Choose a different event"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
msgctxt "widget"
msgid "Choose a different date"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
msgctxt "widget"
msgid "Back"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
msgctxt "widget"
msgid "Next month"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
msgctxt "widget"
msgid "Previous month"
msgid "Choose a different event"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
msgctxt "widget"
msgid "Next week"
msgid "Choose a different date"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
msgctxt "widget"
msgid "Previous week"
msgid "Back"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:70
msgctxt "widget"
msgid "Open seat selection"
msgid "Next month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
msgctxt "widget"
msgid "Previous month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
msgctxt "widget"
msgid "Next week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:73
msgctxt "widget"
msgid "Previous week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
msgctxt "widget"
msgid "Open seat selection"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
"add yourself to the waiting list. We will then notify if seats are available "
"again."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.js:76
msgctxt "widget"
msgid "Load more"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:78
msgid "Mo"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:79
msgid "Tu"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:80
msgid "We"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:81
msgid "Th"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "Fr"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "Sa"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "Su"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.js:88
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/js/widget/widget.js:89
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/js/widget/widget.js:91
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/js/widget/widget.js:94
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.js:95
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:96
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:97
msgid "April"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.js:98
msgid "May"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.js:99
msgid "June"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.js:100
msgid "July"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.js:101
msgid "August"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.js:102
msgid "September"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.js:103
msgid "October"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.js:104
msgid "November"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.js:105
msgid "December"
msgstr ""
File diff suppressed because it is too large Load Diff
+196 -139
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:08+0000\n"
"POT-Creation-Date: 2025-06-26 09:11+0000\n"
"PO-Revision-Date: 2024-12-22 00:00+0000\n"
"Last-Translator: Dimitris Tsimpidis <tsimpidisd@gmail.com>\n"
"Language-Team: Greek <https://translate.pretix.eu/projects/pretix/pretix-js/"
@@ -132,6 +132,7 @@ msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:89
#, fuzzy
#| msgctxt "widget"
#| msgid "Continue"
@@ -342,13 +343,13 @@ msgid "Currently inside"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:71
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "Yes"
msgstr "Ναι"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:72
#: pretix/static/pretixcontrol/js/ui/question.js:138
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "No"
msgstr "Όχι"
@@ -360,8 +361,14 @@ msgstr "Όχι"
msgid "close"
msgstr "Κλείσιμο"
#: pretix/static/pretixbase/js/asynctask.js:58
#: pretix/static/pretixbase/js/asynctask.js:135
#: pretix/static/pretixbase/js/addressform.js:59
#: pretix/static/pretixpresale/js/ui/main.js:513
#, fuzzy
#| msgid "Cart expired"
msgid "required"
msgstr "Το καλάθι έληξε"
#: pretix/static/pretixbase/js/asynctask.js:12
#, fuzzy
#| msgid ""
#| "Your request has been queued on the server and will now be processed. "
@@ -374,8 +381,7 @@ msgstr ""
"επεξεργασία. Ανάλογα με το μέγεθος του συμβάντος σας, αυτό μπορεί να "
"διαρκέσει μερικά λεπτά."
#: pretix/static/pretixbase/js/asynctask.js:63
#: pretix/static/pretixbase/js/asynctask.js:140
#: pretix/static/pretixbase/js/asynctask.js:16
#, fuzzy
#| msgid ""
#| "Your request has been queued on the server and will now be processed. "
@@ -386,8 +392,7 @@ msgstr ""
"επεξεργασία. Ανάλογα με το μέγεθος του συμβάντος σας, αυτό μπορεί να "
"διαρκέσει μερικά λεπτά."
#: pretix/static/pretixbase/js/asynctask.js:69
#: pretix/static/pretixbase/js/asynctask.js:146
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
@@ -397,14 +402,14 @@ msgstr ""
"του. Αν αυτό διαρκεί περισσότερο από δύο λεπτά, επικοινωνήστε μαζί μας ή "
"επιστρέψτε στο πρόγραμμα περιήγησής σας και δοκιμάστε ξανά."
#: pretix/static/pretixbase/js/asynctask.js:105
#: pretix/static/pretixbase/js/asynctask.js:193
#: pretix/static/pretixbase/js/asynctask.js:198
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr "Παρουσιάστηκε σφάλμα τύπου {code}."
#: pretix/static/pretixbase/js/asynctask.js:108
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
@@ -412,14 +417,14 @@ msgstr ""
"Αυτήν τη στιγμή δεν μπορούμε να φτάσουμε στο διακομιστή, αλλά συνεχίζουμε να "
"προσπαθούμε. Τελευταίος κωδικός σφάλματος: {code}"
#: pretix/static/pretixbase/js/asynctask.js:160
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
#, fuzzy
#| msgid "The request took to long. Please try again."
msgid "The request took too long. Please try again."
msgstr "Το αίτημα διήρκησε πολύ. Παρακαλώ προσπαθήστε ξανά."
#: pretix/static/pretixbase/js/asynctask.js:201
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
@@ -427,11 +432,11 @@ msgstr ""
"Αυτήν τη στιγμή δεν μπορούμε να συνδεθούμε με το διακομιστή. Παρακαλώ "
"προσπαθήστε ξανά. Κωδικός σφάλματος: {code}"
#: pretix/static/pretixbase/js/asynctask.js:230
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "Επεξεργαζόμαστε το αίτημά σας …"
#: pretix/static/pretixbase/js/asynctask.js:238
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
@@ -441,8 +446,11 @@ msgstr ""
"περισσότερο από ένα λεπτό, ελέγξτε τη σύνδεσή σας στο διαδίκτυο και στη "
"συνέχεια επαναλάβετε τη φόρτωση αυτής της σελίδας και δοκιμάστε ξανά."
#: pretix/static/pretixbase/js/asynctask.js:301
#: pretix/static/pretixcontrol/js/ui/main.js:71
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr "Κλείσιμο μηνύματος"
@@ -659,63 +667,67 @@ msgstr "Παρουσιάστηκε σφάλμα."
msgid "Generating messages …"
msgstr "Δημιουργία μηνυμάτων …"
#: pretix/static/pretixcontrol/js/ui/main.js:109
#: pretix/static/pretixcontrol/js/ui/main.js:69
msgid "Unknown error."
msgstr "Άγνωστο σφάλμα."
#: pretix/static/pretixcontrol/js/ui/main.js:330
msgid "Your color has great contrast and is very easy to read!"
#: pretix/static/pretixcontrol/js/ui/main.js:292
#, fuzzy
#| msgid "Your color has great contrast and is very easy to read!"
msgid "Your color has great contrast and will provide excellent accessibility."
msgstr ""
"Το χρώμα σας έχει μεγάλη αντίθεση και είναι πολύ εύκολο να το διαβάσετε!"
#: pretix/static/pretixcontrol/js/ui/main.js:334
msgid "Your color has decent contrast and is probably good-enough to read!"
#: pretix/static/pretixcontrol/js/ui/main.js:296
#, fuzzy
#| msgid "Your color has decent contrast and is probably good-enough to read!"
msgid ""
"Your color has decent contrast and is sufficient for minimum accessibility "
"requirements."
msgstr ""
"Το χρώμα σας έχει αξιοπρεπή αντίθεση και είναι ίσως αρκετά καλό για να "
"διαβάσετε!"
#: pretix/static/pretixcontrol/js/ui/main.js:338
#: pretix/static/pretixcontrol/js/ui/main.js:300
msgid ""
"Your color has bad contrast for text on white background, please choose a "
"darker shade."
"Your color has insufficient contrast to white. Accessibility of your site "
"will be impacted."
msgstr ""
"Το χρώμα σας έχει κακή αντίθεση για κείμενο σε λευκό φόντο, επιλέξτε μια πιο "
"σκούρα σκιά."
#: pretix/static/pretixcontrol/js/ui/main.js:454
#: pretix/static/pretixcontrol/js/ui/main.js:474
#: pretix/static/pretixcontrol/js/ui/main.js:416
#: pretix/static/pretixcontrol/js/ui/main.js:436
msgid "Search query"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:472
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr "Όλα"
#: pretix/static/pretixcontrol/js/ui/main.js:473
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr "Κανένας"
#: pretix/static/pretixcontrol/js/ui/main.js:477
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:820
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:823
#: pretix/static/pretixcontrol/js/ui/main.js:814
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:981
#: pretix/static/pretixcontrol/js/ui/main.js:972
msgid "Use a different name internally"
msgstr "Χρησιμοποιήστε διαφορετικό όνομα εσωτερικά"
#: pretix/static/pretixcontrol/js/ui/main.js:1021
#: pretix/static/pretixcontrol/js/ui/main.js:1012
msgid "Click to close"
msgstr "Κάντε κλικ για να κλείσετε"
#: pretix/static/pretixcontrol/js/ui/main.js:1102
#: pretix/static/pretixcontrol/js/ui/main.js:1093
msgid "You have unsaved changes!"
msgstr ""
@@ -727,11 +739,11 @@ msgstr "Επικοινωνία με το Stripe …"
msgid "No results"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:42
#: pretix/static/pretixcontrol/js/ui/question.js:41
msgid "Others"
msgstr "Άλλοι"
#: pretix/static/pretixcontrol/js/ui/question.js:82
#: pretix/static/pretixcontrol/js/ui/question.js:81
msgid "Count"
msgstr "Λογαριασμός"
@@ -741,7 +753,7 @@ msgid_plural "({num} more dates)"
msgstr[0] "(μία παραπάνω ημερομηνία)"
msgstr[1] "( {num} περισσότερες ημερομηνίες)"
#: pretix/static/pretixpresale/js/ui/cart.js:43
#: pretix/static/pretixpresale/js/ui/cart.js:47
#, fuzzy
#| msgid "The items in your cart are no longer reserved for you."
msgid ""
@@ -749,11 +761,16 @@ msgid ""
"complete your order as long as theyre available."
msgstr "Τα αντικείμενα στο καλάθι σας δεν είναι πλέον αποκλειστικά για εσάς."
#: pretix/static/pretixpresale/js/ui/cart.js:45
#: pretix/static/pretixpresale/js/ui/cart.js:49
msgid "Cart expired"
msgstr "Το καλάθι έληξε"
#: pretix/static/pretixpresale/js/ui/cart.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:58
#: pretix/static/pretixpresale/js/ui/cart.js:84
msgid "Your cart is about to expire."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:62
#, fuzzy
#| msgid "The items in your cart are reserved for you for one minute."
#| msgid_plural ""
@@ -763,40 +780,47 @@ msgid_plural "The items in your cart are reserved for you for {num} minutes."
msgstr[0] "Τα είδη στο καλάθι θα παραμείνουν δεσμευμένα για ένα λεπτό."
msgstr[1] "Τα είδη στο καλάθι θα παραμείνουν δεσμευμένα για {num} λεπτά."
#: pretix/static/pretixpresale/js/ui/main.js:215
#: pretix/static/pretixpresale/js/ui/cart.js:83
#, fuzzy
#| msgid "Cart expired"
msgid "Your cart has expired."
msgstr "Το καλάθι έληξε"
#: pretix/static/pretixpresale/js/ui/cart.js:86
#, fuzzy
#| msgid "The items in your cart are no longer reserved for you."
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as they're available."
msgstr "Τα αντικείμενα στο καλάθι σας δεν είναι πλέον αποκλειστικά για εσάς."
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Do you want to renew the reservation period?"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:90
msgid "Renew reservation"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:194
#, fuzzy
#| msgctxt "widget"
#| msgid "from %(currency)s %(price)s"
msgid "The organizer keeps %(currency)s %(amount)s"
msgstr "απο %(currency)s %(price)s"
#: pretix/static/pretixpresale/js/ui/main.js:223
#: pretix/static/pretixpresale/js/ui/main.js:202
#, fuzzy
#| msgctxt "widget"
#| msgid "from %(currency)s %(price)s"
msgid "You get %(currency)s %(amount)s back"
msgstr "απο %(currency)s %(price)s"
#: pretix/static/pretixpresale/js/ui/main.js:239
#: pretix/static/pretixpresale/js/ui/main.js:218
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:458
msgid "Please enter a quantity for one of the ticket types."
msgstr "Εισαγάγετε μια ποσότητα για έναν από τους τύπους εισιτηρίων."
#: pretix/static/pretixpresale/js/ui/main.js:510
#, fuzzy
#| msgid "Cart expired"
msgid "required"
msgstr "Το καλάθι έληξε"
#: pretix/static/pretixpresale/js/ui/main.js:554
#: pretix/static/pretixpresale/js/ui/main.js:574
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:565
#: pretix/static/pretixpresale/js/ui/main.js:558
msgid "Your local time:"
msgstr ""
@@ -821,33 +845,43 @@ msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:19
msgctxt "widget"
msgid "Price"
msgid "Filter events by"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:20
msgctxt "widget"
msgid "Filter"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
#: pretix/static/pretixpresale/js/widget/widget.js:23
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/js/widget/widget.js:24
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/js/widget/widget.js:25
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/js/widget/widget.js:26
#, fuzzy, javascript-format
#| msgctxt "widget"
#| msgid "See variations"
@@ -855,75 +889,75 @@ msgctxt "widget"
msgid "Select variant %s"
msgstr "Δείτε παραλλαγές"
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.js:27
msgctxt "widget"
msgid "Sold out"
msgstr "Εξαντλημένα"
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
msgctxt "widget"
msgid "Buy"
msgstr "Αγορά"
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.js:29
msgctxt "widget"
msgid "Register"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
msgctxt "widget"
msgid "Reserved"
msgstr "Κατοχυρωμένα"
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
msgctxt "widget"
msgid "FREE"
msgstr "ΔΩΡΕΑΝ"
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
msgctxt "widget"
msgid "from %(currency)s %(price)s"
msgstr "απο %(currency)s %(price)s"
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.js:33
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.js:34
msgctxt "widget"
msgid "incl. %(rate)s% %(taxname)s"
msgstr "συμπεριλαμβανομένου %(rate)s% %(taxname)s"
#: pretix/static/pretixpresale/js/widget/widget.js:33
#: pretix/static/pretixpresale/js/widget/widget.js:35
msgctxt "widget"
msgid "plus %(rate)s% %(taxname)s"
msgstr "συν %(rate)s% %(taxname)s"
#: pretix/static/pretixpresale/js/widget/widget.js:34
#: pretix/static/pretixpresale/js/widget/widget.js:36
msgctxt "widget"
msgid "incl. taxes"
msgstr "συμπεριλαμβανομένων των φόρων"
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/js/widget/widget.js:37
msgctxt "widget"
msgid "plus taxes"
msgstr "συν τους φόρους"
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#, javascript-format
msgctxt "widget"
msgid "currently available: %s"
msgstr "διαθέσιμη προς το παρόν:%s"
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/js/widget/widget.js:39
msgctxt "widget"
msgid "Only available with a voucher"
msgstr "Διατίθεται μόνο με ένα κουπόνι"
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:43
#, fuzzy
#| msgctxt "widget"
#| msgid "currently available: %s"
@@ -931,12 +965,12 @@ msgctxt "widget"
msgid "Not yet available"
msgstr "διαθέσιμη προς το παρόν:%s"
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/js/widget/widget.js:41
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:42
#, fuzzy
#| msgctxt "widget"
#| msgid "currently available: %s"
@@ -944,30 +978,30 @@ msgctxt "widget"
msgid "Currently not available"
msgstr "διαθέσιμη προς το παρόν:%s"
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.js:44
#, javascript-format
msgctxt "widget"
msgid "minimum amount to order: %s"
msgstr "ελάχιστο ποσό για παραγγελία: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:43
#: pretix/static/pretixpresale/js/widget/widget.js:45
msgctxt "widget"
msgid "Close ticket shop"
msgstr "Κλείστε το κατάστημα εισιτηρίων"
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.js:46
msgctxt "widget"
msgid "The ticket shop could not be loaded."
msgstr "Δεν ήταν δυνατή η φόρτωση του εισιτηρίου."
#: pretix/static/pretixpresale/js/widget/widget.js:45
#: pretix/static/pretixpresale/js/widget/widget.js:47
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
"in a new tab to continue."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:47
#: pretix/static/pretixpresale/js/widget/widget.js:49
#, fuzzy
#| msgctxt "widget"
#| msgid "Close ticket shop"
@@ -975,7 +1009,7 @@ msgctxt "widget"
msgid "Open ticket shop"
msgstr "Κλείστε το κατάστημα εισιτηρίων"
#: pretix/static/pretixpresale/js/widget/widget.js:48
#: pretix/static/pretixpresale/js/widget/widget.js:50
#, fuzzy
#| msgctxt "widget"
#| msgid "Resume checkout"
@@ -983,25 +1017,25 @@ msgctxt "widget"
msgid "Checkout"
msgstr "Συνεχίστε την ολοκλήρωση της αγοράς"
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/js/widget/widget.js:51
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
"Δεν ήταν δυνατή η δημιουργία του καλαθιού. Παρακαλώ προσπαθήστε ξανά αργότερα"
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/js/widget/widget.js:52
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
"this ticket shop. Please click \"Continue\" to retry in a new tab."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:54
msgctxt "widget"
msgid "Waiting list"
msgstr "Λίστα αναμονής"
#: pretix/static/pretixpresale/js/widget/widget.js:53
#: pretix/static/pretixpresale/js/widget/widget.js:55
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
@@ -1010,37 +1044,50 @@ msgstr ""
"Αυτήν τη στιγμή έχετε προϊόντα στο καλάθι για αυτήν την εκδήλωση. Αν "
"επιλέξετε περισσότερα προϊόντα, θα προστεθούν στο υπάρχον καλάθι σας."
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:57
msgctxt "widget"
msgid "Resume checkout"
msgstr "Συνεχίστε την ολοκλήρωση της αγοράς"
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:58
msgctxt "widget"
msgid "Redeem a voucher"
msgstr "Εξαργυρώστε ένα κουπόνι"
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:59
msgctxt "widget"
msgid "Redeem"
msgstr "Εξαργυρώστε"
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Voucher code"
msgstr "Κωδικός κουπονιού"
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Close"
msgstr "Κλείσιμο"
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/js/widget/widget.js:62
#, fuzzy
#| msgctxt "widget"
#| msgid "Resume checkout"
msgctxt "widget"
msgid "Close checkout"
msgstr "Συνεχίστε την ολοκλήρωση της αγοράς"
#: pretix/static/pretixpresale/js/widget/widget.js:63
msgctxt "widget"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
msgctxt "widget"
msgid "Continue"
msgstr "Συνέχεια"
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/js/widget/widget.js:65
#, fuzzy
#| msgctxt "widget"
#| msgid "See variations"
@@ -1048,7 +1095,7 @@ msgctxt "widget"
msgid "Show variants"
msgstr "Δείτε παραλλαγές"
#: pretix/static/pretixpresale/js/widget/widget.js:62
#: pretix/static/pretixpresale/js/widget/widget.js:66
#, fuzzy
#| msgctxt "widget"
#| msgid "See variations"
@@ -1056,37 +1103,37 @@ msgctxt "widget"
msgid "Hide variants"
msgstr "Δείτε παραλλαγές"
#: pretix/static/pretixpresale/js/widget/widget.js:63
#: pretix/static/pretixpresale/js/widget/widget.js:67
msgctxt "widget"
msgid "Choose a different event"
msgstr "Επιλέξτε διαφορετική εκδήλωση"
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/js/widget/widget.js:68
msgctxt "widget"
msgid "Choose a different date"
msgstr "Επιλέξτε διαφορετική ημερομηνία"
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.js:69
msgctxt "widget"
msgid "Back"
msgstr "Πίσω"
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.js:70
msgctxt "widget"
msgid "Next month"
msgstr "Επόμενος μήνας"
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.js:71
msgctxt "widget"
msgid "Previous month"
msgstr "Προηγούμενος μήνας"
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.js:72
msgctxt "widget"
msgid "Next week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.js:73
#, fuzzy
#| msgctxt "widget"
#| msgid "Previous month"
@@ -1094,12 +1141,12 @@ msgctxt "widget"
msgid "Previous week"
msgstr "Προηγούμενος μήνας"
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.js:74
msgctxt "widget"
msgid "Open seat selection"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.js:75
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -1107,115 +1154,125 @@ msgid ""
"again."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.js:76
msgctxt "widget"
msgid "Load more"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:78
msgid "Mo"
msgstr "Δευ"
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:79
msgid "Tu"
msgstr "Τρι"
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:80
msgid "We"
msgstr "Τετ"
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:81
msgid "Th"
msgstr "Πεμ"
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "Fr"
msgstr "Παρ"
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "Sa"
msgstr "Σαβ"
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "Su"
msgstr "Κυρ"
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.js:88
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/js/widget/widget.js:89
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/js/widget/widget.js:91
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/js/widget/widget.js:94
msgid "January"
msgstr "Ιανουάριος"
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.js:95
msgid "February"
msgstr "Φεβρουάριος"
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:96
msgid "March"
msgstr "Μάρτιος"
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:97
msgid "April"
msgstr "Απρίλιος"
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.js:98
msgid "May"
msgstr "Μάιος"
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.js:99
msgid "June"
msgstr "Ιούνιος"
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.js:100
msgid "July"
msgstr "Ιούλιος"
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.js:101
msgid "August"
msgstr "Αύγουστος"
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.js:102
msgid "September"
msgstr "Σεπτέμβριος"
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.js:103
msgid "October"
msgstr "Οκτώβριος"
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.js:104
msgid "November"
msgstr "Νοέμβριος"
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.js:105
msgid "December"
msgstr "Δεκέμβριος"
#~ msgid ""
#~ "Your color has bad contrast for text on white background, please choose a "
#~ "darker shade."
#~ msgstr ""
#~ "Το χρώμα σας έχει κακή αντίθεση για κείμενο σε λευκό φόντο, επιλέξτε μια "
#~ "πιο σκούρα σκιά."
#~ msgid "Please enter a quantity for one of the ticket types."
#~ msgstr "Εισαγάγετε μια ποσότητα για έναν από τους τύπους εισιτηρίων."
#~ msgctxt "widget"
#~ msgid "See variations"
#~ msgstr "Δείτε παραλλαγές"
File diff suppressed because it is too large Load Diff
+182 -144
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:08+0000\n"
"POT-Creation-Date: 2025-06-26 09:11+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 @@ msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:89
msgid "Continue"
msgstr ""
@@ -328,13 +329,13 @@ msgid "Currently inside"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:71
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "Yes"
msgstr ""
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:72
#: pretix/static/pretixcontrol/js/ui/question.js:138
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "No"
msgstr ""
@@ -343,63 +344,68 @@ msgstr ""
msgid "close"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:58
#: pretix/static/pretixbase/js/asynctask.js:135
#: pretix/static/pretixbase/js/addressform.js:59
#: pretix/static/pretixpresale/js/ui/main.js:513
msgid "required"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:63
#: pretix/static/pretixbase/js/asynctask.js:140
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:69
#: pretix/static/pretixbase/js/asynctask.js:146
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
"browser and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:105
#: pretix/static/pretixbase/js/asynctask.js:193
#: pretix/static/pretixbase/js/asynctask.js:198
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:108
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:160
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:201
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:230
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:238
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
"page and try again."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:301
#: pretix/static/pretixcontrol/js/ui/main.js:71
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr ""
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr ""
@@ -604,58 +610,60 @@ msgstr ""
msgid "Generating messages …"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:109
#: pretix/static/pretixcontrol/js/ui/main.js:69
msgid "Unknown error."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:330
msgid "Your color has great contrast and is very easy to read!"
#: pretix/static/pretixcontrol/js/ui/main.js:292
msgid "Your color has great contrast and will provide excellent accessibility."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:334
msgid "Your color has decent contrast and is probably good-enough to read!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:338
#: pretix/static/pretixcontrol/js/ui/main.js:296
msgid ""
"Your color has bad contrast for text on white background, please choose a "
"darker shade."
"Your color has decent contrast and is sufficient for minimum accessibility "
"requirements."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:454
#: pretix/static/pretixcontrol/js/ui/main.js:474
#: pretix/static/pretixcontrol/js/ui/main.js:300
msgid ""
"Your color has insufficient contrast to white. Accessibility of your site "
"will be impacted."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:416
#: pretix/static/pretixcontrol/js/ui/main.js:436
msgid "Search query"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:472
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:473
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:477
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:820
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:823
#: pretix/static/pretixcontrol/js/ui/main.js:814
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:981
#: pretix/static/pretixcontrol/js/ui/main.js:972
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1021
#: pretix/static/pretixcontrol/js/ui/main.js:1012
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1102
#: pretix/static/pretixcontrol/js/ui/main.js:1093
msgid "You have unsaved changes!"
msgstr ""
@@ -667,11 +675,11 @@ msgstr ""
msgid "No results"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:42
#: pretix/static/pretixcontrol/js/ui/question.js:41
msgid "Others"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/question.js:82
#: pretix/static/pretixcontrol/js/ui/question.js:81
msgid "Count"
msgstr ""
@@ -681,48 +689,58 @@ msgid_plural "({num} more dates)"
msgstr[0] ""
msgstr[1] ""
#: pretix/static/pretixpresale/js/ui/cart.js:43
#: pretix/static/pretixpresale/js/ui/cart.js:47
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as theyre available."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:45
#: pretix/static/pretixpresale/js/ui/cart.js:49
msgid "Cart expired"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:58
#: pretix/static/pretixpresale/js/ui/cart.js:84
msgid "Your cart is about to expire."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:62
msgid "The items in your cart are reserved for you for one minute."
msgid_plural "The items in your cart are reserved for you for {num} minutes."
msgstr[0] ""
msgstr[1] ""
#: pretix/static/pretixpresale/js/ui/main.js:215
#: pretix/static/pretixpresale/js/ui/cart.js:83
msgid "Your cart has expired."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:86
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as they're available."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Do you want to renew the reservation period?"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:90
msgid "Renew reservation"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:194
msgid "The organizer keeps %(currency)s %(amount)s"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:223
#: pretix/static/pretixpresale/js/ui/main.js:202
msgid "You get %(currency)s %(amount)s back"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:239
#: pretix/static/pretixpresale/js/ui/main.js:218
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:458
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:510
msgid "required"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:554
#: pretix/static/pretixpresale/js/ui/main.js:574
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:565
#: pretix/static/pretixpresale/js/ui/main.js:558
msgid "Your local time:"
msgstr ""
@@ -747,371 +765,391 @@ msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:19
msgctxt "widget"
msgid "Price"
msgid "Filter events by"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:20
msgctxt "widget"
msgid "Filter"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:21
#: pretix/static/pretixpresale/js/widget/widget.js:23
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/js/widget/widget.js:24
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/js/widget/widget.js:25
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/js/widget/widget.js:26
#, javascript-format
msgctxt "widget"
msgid "Select variant %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.js:27
msgctxt "widget"
msgid "Sold out"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
msgctxt "widget"
msgid "Buy"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.js:29
msgctxt "widget"
msgid "Register"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
msgctxt "widget"
msgid "Reserved"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
msgctxt "widget"
msgid "FREE"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
msgctxt "widget"
msgid "from %(currency)s %(price)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.js:33
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.js:34
msgctxt "widget"
msgid "incl. %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:33
#: pretix/static/pretixpresale/js/widget/widget.js:35
msgctxt "widget"
msgid "plus %(rate)s% %(taxname)s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:34
#: pretix/static/pretixpresale/js/widget/widget.js:36
msgctxt "widget"
msgid "incl. taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/js/widget/widget.js:37
msgctxt "widget"
msgid "plus taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#, javascript-format
msgctxt "widget"
msgid "currently available: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/js/widget/widget.js:39
msgctxt "widget"
msgid "Only available with a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:43
msgctxt "widget"
msgid "Not yet available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/js/widget/widget.js:41
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:42
msgctxt "widget"
msgid "Currently not available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.js:44
#, javascript-format
msgctxt "widget"
msgid "minimum amount to order: %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:43
#: pretix/static/pretixpresale/js/widget/widget.js:45
msgctxt "widget"
msgid "Close ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.js:46
msgctxt "widget"
msgid "The ticket shop could not be loaded."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:45
#: pretix/static/pretixpresale/js/widget/widget.js:47
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
"in a new tab to continue."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:47
#: pretix/static/pretixpresale/js/widget/widget.js:49
msgctxt "widget"
msgid "Open ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:48
#: pretix/static/pretixpresale/js/widget/widget.js:50
msgctxt "widget"
msgid "Checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/js/widget/widget.js:51
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/js/widget/widget.js:52
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
"this ticket shop. Please click \"Continue\" to retry in a new tab."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:54
msgctxt "widget"
msgid "Waiting list"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:53
#: pretix/static/pretixpresale/js/widget/widget.js:55
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
"products, they will be added to your existing cart."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:57
msgctxt "widget"
msgid "Resume checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:58
msgctxt "widget"
msgid "Redeem a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:59
msgctxt "widget"
msgid "Redeem"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Voucher code"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Close"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:62
msgctxt "widget"
msgid "Hide variants"
msgid "Close checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:63
msgctxt "widget"
msgid "Choose a different event"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
msgctxt "widget"
msgid "Choose a different date"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
msgctxt "widget"
msgid "Back"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
msgctxt "widget"
msgid "Next month"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
msgctxt "widget"
msgid "Previous month"
msgid "Choose a different event"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
msgctxt "widget"
msgid "Next week"
msgid "Choose a different date"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
msgctxt "widget"
msgid "Previous week"
msgid "Back"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:70
msgctxt "widget"
msgid "Open seat selection"
msgid "Next month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
msgctxt "widget"
msgid "Previous month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
msgctxt "widget"
msgid "Next week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:73
msgctxt "widget"
msgid "Previous week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
msgctxt "widget"
msgid "Open seat selection"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
"add yourself to the waiting list. We will then notify if seats are available "
"again."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.js:76
msgctxt "widget"
msgid "Load more"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:78
msgid "Mo"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:79
msgid "Tu"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:80
msgid "We"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:81
msgid "Th"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "Fr"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "Sa"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "Su"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.js:88
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/js/widget/widget.js:89
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/js/widget/widget.js:91
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/js/widget/widget.js:94
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.js:95
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:96
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:97
msgid "April"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.js:98
msgid "May"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.js:99
msgid "June"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.js:100
msgid "July"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.js:101
msgid "August"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.js:102
msgid "September"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.js:103
msgid "October"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.js:104
msgid "November"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.js:105
msgid "December"
msgstr ""
File diff suppressed because it is too large Load Diff
+203 -149
View File
@@ -7,17 +7,17 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:08+0000\n"
"PO-Revision-Date: 2025-04-29 18:00+0000\n"
"POT-Creation-Date: 2025-06-26 09:11+0000\n"
"PO-Revision-Date: 2025-05-30 11:15+0000\n"
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n"
"Language-Team: Spanish <https://translate.pretix.eu/projects/pretix/"
"pretix-js/es/>\n"
"Language-Team: Spanish <https://translate.pretix.eu/projects/pretix/pretix-"
"js/es/>\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.11.1\n"
"X-Generator: Weblate 5.11.4\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -132,6 +132,7 @@ msgstr "Mercado Pago"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:89
msgid "Continue"
msgstr "Continuar"
@@ -329,23 +330,27 @@ msgid "Currently inside"
msgstr "Actualmente en el interior"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:71
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixcontrol/js/ui/question.js:136
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "Yes"
msgstr "Si"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:72
#: pretix/static/pretixcontrol/js/ui/question.js:138
#: pretix/static/pretixcontrol/js/ui/question.js:137
#: pretix/static/pretixpresale/js/ui/questions.js:270
msgid "No"
msgstr "No"
#: pretix/static/lightbox/js/lightbox.js:96
msgid "close"
msgstr "Cerrar"
msgstr "cerrar"
#: pretix/static/pretixbase/js/asynctask.js:58
#: pretix/static/pretixbase/js/asynctask.js:135
#: pretix/static/pretixbase/js/addressform.js:59
#: pretix/static/pretixpresale/js/ui/main.js:513
msgid "required"
msgstr "campo requerido"
#: pretix/static/pretixbase/js/asynctask.js:12
msgid ""
"Your request is currently being processed. Depending on the size of your "
"event, this might take up to a few minutes."
@@ -353,13 +358,11 @@ msgstr ""
"Su solicitud está siendo procesada. Esto puede tardar varios minutos, "
"dependiendo del tamaño de su evento."
#: pretix/static/pretixbase/js/asynctask.js:63
#: pretix/static/pretixbase/js/asynctask.js:140
#: pretix/static/pretixbase/js/asynctask.js:16
msgid "Your request has been queued on the server and will soon be processed."
msgstr "Su solicitud ha sido enviada al servidor y será procesada en breve."
#: pretix/static/pretixbase/js/asynctask.js:69
#: pretix/static/pretixbase/js/asynctask.js:146
#: pretix/static/pretixbase/js/asynctask.js:20
msgid ""
"Your request arrived on the server but we still wait for it to be processed. "
"If this takes longer than two minutes, please contact us or go back in your "
@@ -369,14 +372,14 @@ msgstr ""
"Si toma más de dos minutos, por favor contáctenos o regrese a la página "
"anterior en su navegador e intente de nuevo."
#: pretix/static/pretixbase/js/asynctask.js:105
#: pretix/static/pretixbase/js/asynctask.js:193
#: pretix/static/pretixbase/js/asynctask.js:198
#: pretix/static/pretixbase/js/asynctask.js:119
#: pretix/static/pretixbase/js/asynctask.js:176
#: pretix/static/pretixbase/js/asynctask.js:180
#: pretix/static/pretixcontrol/js/ui/mail.js:24
msgid "An error of type {code} occurred."
msgstr "Ha ocurrido un error de tipo {code}."
#: pretix/static/pretixbase/js/asynctask.js:108
#: pretix/static/pretixbase/js/asynctask.js:122
msgid ""
"We currently cannot reach the server, but we keep trying. Last error code: "
"{code}"
@@ -384,12 +387,12 @@ msgstr ""
"Ahora mismo no podemos contactar con el servidor, pero lo seguimos "
"intentando. El último código de error fue: {code}"
#: pretix/static/pretixbase/js/asynctask.js:160
#: pretix/static/pretixbase/js/asynctask.js:156
#: pretix/static/pretixcontrol/js/ui/mail.js:21
msgid "The request took too long. Please try again."
msgstr "La solicitud ha tomado demasiado tiempo. Por favor, intente de nuevo."
#: pretix/static/pretixbase/js/asynctask.js:201
#: pretix/static/pretixbase/js/asynctask.js:182
#: pretix/static/pretixcontrol/js/ui/mail.js:26
msgid ""
"We currently cannot reach the server. Please try again. Error code: {code}"
@@ -397,11 +400,11 @@ msgstr ""
"Ahora mismo no podemos contactar con el servidor. Por favor, intente de "
"nuevo. Código de error: {code}"
#: pretix/static/pretixbase/js/asynctask.js:230
#: pretix/static/pretixbase/js/asynctask.js:210
msgid "We are processing your request …"
msgstr "Estamos procesando su solicitud…"
#: pretix/static/pretixbase/js/asynctask.js:238
#: pretix/static/pretixbase/js/asynctask.js:213
msgid ""
"We are currently sending your request to the server. If this takes longer "
"than one minute, please check your internet connection and then reload this "
@@ -411,8 +414,11 @@ msgstr ""
"minuto, por favor, revise su conexión a Internet, recargue la página e "
"intente nuevamente."
#: pretix/static/pretixbase/js/asynctask.js:301
#: pretix/static/pretixcontrol/js/ui/main.js:71
#: pretix/static/pretixbase/js/asynctask.js:270
msgid "If this takes longer than a few minutes, please contact us."
msgstr "Si tarda más de unos minutos, póngase en contacto con nosotros."
#: pretix/static/pretixbase/js/asynctask.js:325
msgid "Close message"
msgstr "Cerrar mensaje"
@@ -620,62 +626,65 @@ msgstr "Ha ocurrido un error."
msgid "Generating messages …"
msgstr "Generando mensajes…"
#: pretix/static/pretixcontrol/js/ui/main.js:109
#: pretix/static/pretixcontrol/js/ui/main.js:69
msgid "Unknown error."
msgstr "Error desconocido."
#: pretix/static/pretixcontrol/js/ui/main.js:330
msgid "Your color has great contrast and is very easy to read!"
msgstr "¡Tu color tiene gran contraste y es muy fácil de leer!"
#: pretix/static/pretixcontrol/js/ui/main.js:334
msgid "Your color has decent contrast and is probably good-enough to read!"
#: pretix/static/pretixcontrol/js/ui/main.js:292
msgid "Your color has great contrast and will provide excellent accessibility."
msgstr ""
"¡Tu color tiene un contraste decente y es probablemente lo suficientemente "
"legible!"
"El color tiene un gran contraste y proporcionará una excelente accesibilidad."
#: pretix/static/pretixcontrol/js/ui/main.js:338
#: pretix/static/pretixcontrol/js/ui/main.js:296
msgid ""
"Your color has bad contrast for text on white background, please choose a "
"darker shade."
"Your color has decent contrast and is sufficient for minimum accessibility "
"requirements."
msgstr ""
"Tu color tiene mal contraste para un texto con fondo blanco, por favor, "
"escoge un tono más oscuro."
"El color tiene un contraste decente y es suficiente para los requisitos "
"mínimos de accesibilidad."
#: pretix/static/pretixcontrol/js/ui/main.js:454
#: pretix/static/pretixcontrol/js/ui/main.js:474
#: pretix/static/pretixcontrol/js/ui/main.js:300
msgid ""
"Your color has insufficient contrast to white. Accessibility of your site "
"will be impacted."
msgstr ""
"El color no tiene suficiente contraste con el blanco. La accesibilidad de su "
"sitio se verá afectada."
#: pretix/static/pretixcontrol/js/ui/main.js:416
#: pretix/static/pretixcontrol/js/ui/main.js:436
msgid "Search query"
msgstr "Consulta de búsqueda"
#: pretix/static/pretixcontrol/js/ui/main.js:472
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr "Todos"
#: pretix/static/pretixcontrol/js/ui/main.js:473
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr "Ninguno"
#: pretix/static/pretixcontrol/js/ui/main.js:477
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr "Solamente seleccionados"
#: pretix/static/pretixcontrol/js/ui/main.js:820
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Enter page number between 1 and %(max)s."
msgstr "Introduce un número de página entre 1 y %(max)s."
#: pretix/static/pretixcontrol/js/ui/main.js:823
#: pretix/static/pretixcontrol/js/ui/main.js:814
msgid "Invalid page number."
msgstr "Número de página inválido."
#: pretix/static/pretixcontrol/js/ui/main.js:981
#: pretix/static/pretixcontrol/js/ui/main.js:972
msgid "Use a different name internally"
msgstr "Usar un nombre diferente internamente"
#: pretix/static/pretixcontrol/js/ui/main.js:1021
#: pretix/static/pretixcontrol/js/ui/main.js:1012
msgid "Click to close"
msgstr "Click para cerrar"
#: pretix/static/pretixcontrol/js/ui/main.js:1102
#: pretix/static/pretixcontrol/js/ui/main.js:1093
msgid "You have unsaved changes!"
msgstr "¡Tienes cambios sin guardar!"
@@ -687,11 +696,11 @@ msgstr "Calculando el precio por defecto…"
msgid "No results"
msgstr "No hay resultados"
#: pretix/static/pretixcontrol/js/ui/question.js:42
#: pretix/static/pretixcontrol/js/ui/question.js:41
msgid "Others"
msgstr "Otros"
#: pretix/static/pretixcontrol/js/ui/question.js:82
#: pretix/static/pretixcontrol/js/ui/question.js:81
msgid "Count"
msgstr "Cantidad"
@@ -701,19 +710,24 @@ msgid_plural "({num} more dates)"
msgstr[0] "(una fecha más)"
msgstr[1] "({num} más fechas)"
#: pretix/static/pretixpresale/js/ui/cart.js:43
#: pretix/static/pretixpresale/js/ui/cart.js:47
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as theyre available."
msgstr ""
"Los elementos en su cesta de compras ya no se encuentran reservados. Puedes "
"seguir añadiendo más productos mientras estén disponibles."
"Los elementos en su carrito de compras ya no se encuentran reservados. "
"Puedes seguir añadiendo más productos mientras estén disponibles."
#: pretix/static/pretixpresale/js/ui/cart.js:45
#: pretix/static/pretixpresale/js/ui/cart.js:49
msgid "Cart expired"
msgstr "La cesta de compra ha expirado"
msgstr "El carrito de compra ha expirado"
#: pretix/static/pretixpresale/js/ui/cart.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:58
#: pretix/static/pretixpresale/js/ui/cart.js:84
msgid "Your cart is about to expire."
msgstr "Su carrito está a punto de caducar."
#: pretix/static/pretixpresale/js/ui/cart.js:62
msgid "The items in your cart are reserved for you for one minute."
msgid_plural "The items in your cart are reserved for you for {num} minutes."
msgstr[0] ""
@@ -722,32 +736,39 @@ msgstr[1] ""
"Los elementos en su carrito de compras se han reservado durante {num} "
"minutos."
#: pretix/static/pretixpresale/js/ui/main.js:215
#: pretix/static/pretixpresale/js/ui/cart.js:83
msgid "Your cart has expired."
msgstr "Su cesta ha caducado."
#: pretix/static/pretixpresale/js/ui/cart.js:86
msgid ""
"The items in your cart are no longer reserved for you. You can still "
"complete your order as long as they're available."
msgstr ""
"Los elementos en su carrito de compras ya no se encuentran reservados. "
"Puedes seguir añadiendo más productos mientras estén disponibles."
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Do you want to renew the reservation period?"
msgstr "¿Desea renovar el periodo de reserva?"
#: pretix/static/pretixpresale/js/ui/cart.js:90
msgid "Renew reservation"
msgstr "Renovar reserva"
#: pretix/static/pretixpresale/js/ui/main.js:194
msgid "The organizer keeps %(currency)s %(amount)s"
msgstr "El organizador se queda %(currency)s %(price)s"
#: pretix/static/pretixpresale/js/ui/main.js:223
#: pretix/static/pretixpresale/js/ui/main.js:202
msgid "You get %(currency)s %(amount)s back"
msgstr "Obtienes %(currency)s %(price)s de vuelta"
#: pretix/static/pretixpresale/js/ui/main.js:239
#: pretix/static/pretixpresale/js/ui/main.js:218
msgid "Please enter the amount the organizer can keep."
msgstr "Por favor, ingrese el importe que el organizador puede quedarse."
#: pretix/static/pretixpresale/js/ui/main.js:458
msgid "Please enter a quantity for one of the ticket types."
msgstr "Por favor, introduzca un valor para cada tipo de entrada."
#: pretix/static/pretixpresale/js/ui/main.js:510
msgid "required"
msgstr "campo requerido"
#: pretix/static/pretixpresale/js/ui/main.js:554
#: pretix/static/pretixpresale/js/ui/main.js:574
msgid "Time zone:"
msgstr "Zona horaria:"
#: pretix/static/pretixpresale/js/ui/main.js:565
#: pretix/static/pretixpresale/js/ui/main.js:558
msgid "Your local time:"
msgstr "Su hora local:"
@@ -772,138 +793,148 @@ msgstr "Incrementar cantidad"
#: pretix/static/pretixpresale/js/widget/widget.js:19
msgctxt "widget"
msgid "Filter events by"
msgstr "Filtrar eventos por"
#: pretix/static/pretixpresale/js/widget/widget.js:20
msgctxt "widget"
msgid "Filter"
msgstr "Filtrar"
#: pretix/static/pretixpresale/js/widget/widget.js:21
msgctxt "widget"
msgid "Price"
msgstr "Precio"
#: pretix/static/pretixpresale/js/widget/widget.js:20
#: pretix/static/pretixpresale/js/widget/widget.js:22
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr "Precio original: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:21
#: pretix/static/pretixpresale/js/widget/widget.js:23
#, javascript-format
msgctxt "widget"
msgid "New price: %s"
msgstr "Nuevo precio: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/js/widget/widget.js:24
msgctxt "widget"
msgid "Select"
msgstr "Selecciona"
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/js/widget/widget.js:25
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr "Selecciona %s"
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/js/widget/widget.js:26
#, javascript-format
msgctxt "widget"
msgid "Select variant %s"
msgstr "Selecciona variaciones %s"
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.js:27
msgctxt "widget"
msgid "Sold out"
msgstr "Agotado"
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
msgctxt "widget"
msgid "Buy"
msgstr "Comprar"
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.js:29
msgctxt "widget"
msgid "Register"
msgstr "Registrarse"
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
msgctxt "widget"
msgid "Reserved"
msgstr "Reservado"
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
msgctxt "widget"
msgid "FREE"
msgstr "GRATIS"
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
msgctxt "widget"
msgid "from %(currency)s %(price)s"
msgstr "desde %(currency)s %(price)s"
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.js:33
#, javascript-format
msgctxt "widget"
msgid "Image of %s"
msgstr "Imagen de %s"
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.js:34
msgctxt "widget"
msgid "incl. %(rate)s% %(taxname)s"
msgstr "incluye %(rate)s% %(taxname)s"
#: pretix/static/pretixpresale/js/widget/widget.js:33
#: pretix/static/pretixpresale/js/widget/widget.js:35
msgctxt "widget"
msgid "plus %(rate)s% %(taxname)s"
msgstr "más %(rate)s% %(taxname)s"
#: pretix/static/pretixpresale/js/widget/widget.js:34
#: pretix/static/pretixpresale/js/widget/widget.js:36
msgctxt "widget"
msgid "incl. taxes"
msgstr "incl. impuestos"
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/js/widget/widget.js:37
msgctxt "widget"
msgid "plus taxes"
msgstr "más impuestos"
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#, javascript-format
msgctxt "widget"
msgid "currently available: %s"
msgstr "disponible actualmente: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/js/widget/widget.js:39
msgctxt "widget"
msgid "Only available with a voucher"
msgstr "Solo disponible mediante voucher"
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:43
msgctxt "widget"
msgid "Not yet available"
msgstr "Aún no disponible"
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/js/widget/widget.js:41
msgctxt "widget"
msgid "Not available anymore"
msgstr "Ya no disponible"
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:42
msgctxt "widget"
msgid "Currently not available"
msgstr "No disponible actualmente"
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.js:44
#, javascript-format
msgctxt "widget"
msgid "minimum amount to order: %s"
msgstr "cantidad mínima a ordenar: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:43
#: pretix/static/pretixpresale/js/widget/widget.js:45
msgctxt "widget"
msgid "Close ticket shop"
msgstr "Cerrar tienda de tickets"
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.js:46
msgctxt "widget"
msgid "The ticket shop could not be loaded."
msgstr "No se ha podido cargar la tienda de tickets."
#: pretix/static/pretixpresale/js/widget/widget.js:45
#: pretix/static/pretixpresale/js/widget/widget.js:47
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
@@ -912,24 +943,24 @@ msgstr ""
"Actualmente hay muchos usuarios en la tienda de tickets. Por favor abra la "
"tienda en una nueva pestaña para continuar."
#: pretix/static/pretixpresale/js/widget/widget.js:47
#: pretix/static/pretixpresale/js/widget/widget.js:49
msgctxt "widget"
msgid "Open ticket shop"
msgstr "Abrir tienda de tickets"
#: pretix/static/pretixpresale/js/widget/widget.js:48
#: pretix/static/pretixpresale/js/widget/widget.js:50
msgctxt "widget"
msgid "Checkout"
msgstr "Pasar por caja"
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/js/widget/widget.js:51
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
"El carrito de compras no ha podido crearse. Por favor, intente de nuevo más "
"tarde"
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/js/widget/widget.js:52
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
@@ -938,12 +969,12 @@ msgstr ""
"No pudimos crear su carrito debido a que hay muchos usuarios en la tienda. "
"Por favor, presione \"Continuar\" para intentarlo en una nueva pestaña."
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:54
msgctxt "widget"
msgid "Waiting list"
msgstr "Lista de espera"
#: pretix/static/pretixpresale/js/widget/widget.js:53
#: pretix/static/pretixpresale/js/widget/widget.js:55
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
@@ -952,87 +983,97 @@ msgstr ""
"Ya tiene un carrito de compras activo para este evento. Si selecciona más "
"productos, estos serán añadidos al carrito actual."
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:57
msgctxt "widget"
msgid "Resume checkout"
msgstr "Continuar pago"
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:58
msgctxt "widget"
msgid "Redeem a voucher"
msgstr "Canjear un cupón"
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:59
msgctxt "widget"
msgid "Redeem"
msgstr "Canjear"
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Voucher code"
msgstr "Código del cupón"
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Close"
msgstr "Cerrar"
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/js/widget/widget.js:62
msgctxt "widget"
msgid "Close checkout"
msgstr "Cerrar caja"
#: pretix/static/pretixpresale/js/widget/widget.js:63
msgctxt "widget"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr "No puede cancelar esta operación. Espere a que finalice la carga."
#: pretix/static/pretixpresale/js/widget/widget.js:64
msgctxt "widget"
msgid "Continue"
msgstr "Continuar"
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/js/widget/widget.js:65
msgctxt "widget"
msgid "Show variants"
msgstr "Mostrar variantes"
#: pretix/static/pretixpresale/js/widget/widget.js:62
#: pretix/static/pretixpresale/js/widget/widget.js:66
msgctxt "widget"
msgid "Hide variants"
msgstr "Occultar variantes"
#: pretix/static/pretixpresale/js/widget/widget.js:63
#: pretix/static/pretixpresale/js/widget/widget.js:67
msgctxt "widget"
msgid "Choose a different event"
msgstr "Eligir un evento diferente"
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/js/widget/widget.js:68
msgctxt "widget"
msgid "Choose a different date"
msgstr "Elegir una fecha diferente"
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.js:69
msgctxt "widget"
msgid "Back"
msgstr "Atrás"
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.js:70
msgctxt "widget"
msgid "Next month"
msgstr "Siguiente mes"
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.js:71
msgctxt "widget"
msgid "Previous month"
msgstr "Mes anterior"
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.js:72
msgctxt "widget"
msgid "Next week"
msgstr "Semana siguiente"
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.js:73
msgctxt "widget"
msgid "Previous week"
msgstr "Semana anterior"
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.js:74
msgctxt "widget"
msgid "Open seat selection"
msgstr "Abrir selección de asientos"
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.js:75
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -1043,115 +1084,128 @@ msgstr ""
"la lista de espera. Te notificaremos si los asientos estén disponible de "
"nuevo."
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.js:76
msgctxt "widget"
msgid "Load more"
msgstr "Cargar más"
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:78
msgid "Mo"
msgstr "Lun"
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:79
msgid "Tu"
msgstr "Mar"
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:80
msgid "We"
msgstr "Mié"
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:81
msgid "Th"
msgstr "Jue"
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "Fr"
msgstr "Vie"
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "Sa"
msgstr "Sáb"
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "Su"
msgstr "Dom"
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "Monday"
msgstr "Lunes"
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "Tuesday"
msgstr "Martes"
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "Wednesday"
msgstr "Miércoles"
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.js:88
msgid "Thursday"
msgstr "Jueves"
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/js/widget/widget.js:89
msgid "Friday"
msgstr "Viernes"
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "Saturday"
msgstr "Sábado"
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/js/widget/widget.js:91
msgid "Sunday"
msgstr "Domingo"
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/js/widget/widget.js:94
msgid "January"
msgstr "enero"
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.js:95
msgid "February"
msgstr "febrero"
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:96
msgid "March"
msgstr "Marzo"
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:97
msgid "April"
msgstr "abril"
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.js:98
msgid "May"
msgstr "mayo"
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.js:99
msgid "June"
msgstr "junio"
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.js:100
msgid "July"
msgstr "julio"
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.js:101
msgid "August"
msgstr "agosto"
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.js:102
msgid "September"
msgstr "septiembre"
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.js:103
msgid "October"
msgstr "octubre"
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.js:104
msgid "November"
msgstr "noviembre"
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.js:105
msgid "December"
msgstr "diciembre"
#~ msgid "Time zone:"
#~ msgstr "Zona horaria:"
#~ msgid ""
#~ "Your color has bad contrast for text on white background, please choose a "
#~ "darker shade."
#~ msgstr ""
#~ "Tu color tiene mal contraste para un texto con fondo blanco, por favor, "
#~ "escoge un tono más oscuro."
#~ msgid "Please enter a quantity for one of the ticket types."
#~ msgstr "Por favor, introduzca un valor para cada tipo de entrada."
#~ msgctxt "widget"
#~ msgid "See variations"
#~ msgstr "Ver variaciones"

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