Compare commits

..
Author SHA1 Message Date
Mira Weller 96bb380390 First attempt 2025-06-05 13:39:54 +02:00
Mira Weller 080bfbd4fb Update help text 2025-06-05 13:39:39 +02:00
Richard SchreiberandGitHub 6aa3747403 Fix sneak-peek missing inert-attribute (#5207) 2025-06-03 21:49:59 +02:00
Raphael MichelandGitHub d255c40a0b [A11y] Do not set autocomplete section if autocomplete is off (#5194) 2025-06-03 11:08:17 +02:00
Richard SchreiberandGitHub 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]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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 WolkwitzandGitHub 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]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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 UmemotoandRaphael Michel 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 UmemotoandRaphael Michel 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 SchreiberandGitHub 3a48279b22 [A11y] add group labelling to single input name-widget (#5195) 2025-06-02 15:53:35 +02:00
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 SchreiberandGitHub f0c95c4b03 [A11y] fix color contrast on hover for .active default-buttons (#5198) 2025-06-02 15:52:42 +02:00
Richard SchreiberandGitHub 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 SchreiberandGitHub 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
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 MichelandGitHub 1752b2f037 Do not allow to bulk-set empty names for subevents (Z#23194943) (#5184) 2025-05-30 13:29:18 +02:00
CVZ-esandRaphael Michel 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-esandRaphael Michel 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 MichelandRaphael 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 MichelandRaphael 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-esandRaphael Michel 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 MichelandRaphael 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-esandRaphael Michel 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 MichelandRaphael 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 MichelandRaphael 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-esandRaphael Michel 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-esandRaphael Michel 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-esandRaphael Michel 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 MichelandRaphael 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 MichelandRaphael 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 SchreiberandGitHub 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]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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 MichelandGitHub 30e5214358 Update SECURITY.md 2025-05-29 10:46:32 +02:00
fe7a076dd4 Remove unused form.has-seating classes (#5179)
Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-05-28 18:11:54 +02:00
luelistaandGitHub 0f4a767b58 Fix form.has-seating class in voucher.html (#5180) 2025-05-28 18:10:11 +02:00
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 SchreiberandGitHub fe0b8c9f97 Simplify empty add-to-cart check (#5177) 2025-05-28 17:30:15 +02:00
Richard SchreiberandGitHub 8ad0944dcf Fix widget v2 deployment updateassets (#5176)
* Fix widget v2 deployment updateassets

* fix code style issues
2025-05-28 15:49:05 +02:00
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
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 GrossandRaphael Michel 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
조정화andRaphael Michel 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
조정화andRaphael Michel 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 RochaandRaphael Michel 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 KawaguchiandRaphael Michel 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
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 SchreiberandGitHub 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 MichelandGitHub 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 MichelandRaphael 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 MichelandRaphael 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 MichelandRaphael 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 MichelandRaphael 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 MichelandRaphael 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 MichelandRaphael 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 MichelandRaphael 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 MichelandRaphael 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 MichelandRaphael 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 MichelandRaphael 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 WolkwitzandRaphael Michel 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 MichelandRaphael 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 WolkwitzandRaphael Michel 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-esandRaphael Michel 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-esandRaphael Michel 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-esandRaphael Michel 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-esandRaphael Michel 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 MichelandRaphael 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 MichelandRaphael 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 SchreiberandGitHub 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
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 SchreiberandGitHub 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 MichelandGitHub 902527f8aa Cookie consent: Proper fix for zero-provider situations (#5153) 2025-05-23 21:39:59 +02:00
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 SchreiberandGitHub 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 MichelandGitHub 3a195b6ef9 Waiting list export: Add product IDs (Z#23192538) (#5134) 2025-05-22 21:42:14 +02:00
luelistaandGitHub 44c5217e9e correctly specify has-seating for subevents (#5156) 2025-05-22 19:25:48 +02:00
luelistaandGitHub 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
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
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 SchreiberandGitHub 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
luelistaandGitHub d616b4d648 Fix incorrect form tags on checkout_confirm.html (#5146) 2025-05-22 12:54:59 +02:00
Martin GrossandGitHub 54e222b527 Checkout: Center-align step-done fa (#5145)
counteract change introduced in b638c00952
2025-05-22 12:49:46 +02:00
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
luelistaandGitHub 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 SchreiberandGitHub 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 SchreiberandGitHub bf47da521c [A11y] add heading-level to product list (#5121) 2025-05-21 13:31:05 +02:00
Richard SchreiberandGitHub e3b74249c9 [A11y] fix skip-link z-index (#5123) 2025-05-21 13:30:39 +02:00
Richard SchreiberandGitHub 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 MichelandRaphael 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 belotsercovskyandRaphael Michel 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 MichelandRaphael Michel 31b2a9026d Translations: Add Hebrew 2025-05-21 12:47:42 +02:00
Raphael MichelandRaphael Michel 1d49d7cbf7 Translations: Delete Hebrew 2025-05-21 12:47:42 +02:00
조정화andRaphael Michel 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 belotsercovskyandRaphael Michel 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 ChiltonandRaphael Michel 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
bstramsekandRaphael Michel 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
DavidandRaphael Michel 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
DavidandRaphael Michel 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 KunzeandGitHub d49141c05d Use he as language code for Hebrew (#5129) 2025-05-21 12:42:51 +02:00
Richard SchreiberandGitHub 0bbb136d67 [A11y] Fix checkbox:focus style (#5131) 2025-05-21 12:00:34 +02:00
Richard SchreiberandGitHub 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 SchreiberandGitHub 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 SchreiberandGitHub 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 SchreiberandGitHub 6b331888e9 [A11y] Fix missing errors on empty inputs on checkout-login (#5104) 2025-05-15 13:19:25 +02:00
Richard SchreiberandGitHub 225b2452bd [A11y] underline inline-links (#5102) 2025-05-15 12:32:23 +02:00
Richard SchreiberandGitHub e7d024b146 [A11y] change footer poweredby-link to pretix.eu if no poweredby_url (#5111) 2025-05-15 12:30:48 +02:00
Richard SchreiberandGitHub 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 MichelandGitHub 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 SchreiberandGitHub 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 MichelandRaphael 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
anonymousandRaphael Michel 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 MichelandRaphael 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
조정화andRaphael Michel 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
조정화andRaphael Michel 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 VipandRaphael Michel 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 VipandRaphael Michel 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 SchreiberandGitHub 6766d649f5 [A11y] change event-list from dl to articles with h3 (#5085) 2025-05-14 21:51:54 +02:00
Richard SchreiberandGitHub c17a090244 [A11y] Fix color-contrast for info/error-texts in widget (#5105) 2025-05-14 15:06:38 +02:00
Richard SchreiberandGitHub d103d8782b [A11y] fix calendar nav dropdown (#5078)
* [A11y] fix calendar nav dropdown

* update organizer calender

* keep cal-nav on one line

* simplify html

* unify calendar layouts

* fix rounding issue with .input-group select+button

* add comment to explain complex css

* fix calendar dropdown due to too broad css-selector

* reduce spacing of top-nav

* fix input-group-btn double line through rounding issue
2025-05-14 10:01:16 +02:00
4f4903b00e Metrics: Fix Content Type header (#5099)
* Metrics: Fix Content Type header

Now it follows the PrometheusText1.0.0 ContentType header specified from their code: https://github.com/prometheus/prometheus/blob/32d306854b77352fec62f5df1268d745b84dfd96/config/config.go#L516-L529

* Update src/pretix/base/views/metrics.py

---------

Co-authored-by: Raphael Michel <mail@raphaelmichel.de>
2025-05-13 18:42:02 +02:00
Richard SchreiberandGitHub caf291630c [A11y] add skip-link to main content (#5087)
* [A11y] add skip-link to main content

* fix contrast for skip-link

* fix overlay with back-to-organizer-link

* add fallback if no main-element

* update nav-label
2025-05-13 13:37:21 +02:00
Richard SchreiberandGitHub 6d0368a1bb Fix page-header-links outline color contrast (#5096) 2025-05-13 13:36:45 +02:00
Richard SchreiberandGitHub 57d33e1eb1 [A11y] fix issues with labels and tabindex in widget (#5083) 2025-05-13 13:36:11 +02:00
Raphael MichelandGitHub e6ec4cb435 Adjust headlines aside from front page (#5098) 2025-05-13 10:51:34 +02:00
Raphael MichelandGitHub 6043a96575 Fix weird markup on "resend link" page (#5097) 2025-05-13 10:43:26 +02:00
Raphael MichelandGitHub 5bc1fb8e81 Allow to set multiple email invoice recipients (Z#23190766) (#5090) 2025-05-13 10:31:07 +02:00
Raphael MichelandGitHub 47c840b9e5 Check-in log: Correctly use name from parent product (Z#23192134) (#5091) 2025-05-13 10:10:18 +02:00
Richard SchreiberandGitHub b6007a1af4 [A11y] fix widget buy button being disabled (#5084)
* [A11y] fix widget buy button being disabled

* make dialog an alertdialog for better close-button support
2025-05-13 10:00:35 +02:00
Raphael MichelandGitHub 1caa71cdbe Improve validation of Norwegian VAT IDs (#5089) 2025-05-12 17:04:58 +02:00
Richard SchreiberandGitHub 1f2a0278c0 [A11y] replace b with strong for better semantics (#5086) 2025-05-12 16:43:08 +02:00
Raphael MichelandRaphael Michel cf51c879c7 Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (244 of 244 strings)

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

powered by weblate
2025-05-12 16:43:02 +02:00
Raphael MichelandRaphael Michel 1030e2dc1f Translations: Update German
Currently translated at 100.0% (244 of 244 strings)

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

powered by weblate
2025-05-12 16:43:02 +02:00
Hijiri UmemotoandRaphael Michel 8d320b24a5 Translations: Update Japanese
Currently translated at 100.0% (244 of 244 strings)

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

powered by weblate
2025-05-12 16:43:02 +02:00
Hijiri UmemotoandRaphael Michel 8235132de8 Translations: Update Japanese
Currently translated at 100.0% (5869 of 5869 strings)

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

powered by weblate
2025-05-12 16:43:02 +02:00
Luca HammerandRaphael Michel 2614f12faf Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (5869 of 5869 strings)

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

powered by weblate
2025-05-12 16:43:02 +02:00
Richard SchreiberandRaphael Michel 6f92f2324f Fix JavaScript-based required label 2025-05-12 16:35:18 +02:00
Hijiri UmemotoandRaphael Michel aaef7579d9 Translations: Update Japanese
Currently translated at 100.0% (244 of 244 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
Hijiri UmemotoandRaphael Michel 6b1077f881 Translations: Update Japanese
Currently translated at 100.0% (5869 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
조정화andRaphael Michel 6154b7fae0 Translations: Update Korean
Currently translated at 99.5% (243 of 244 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
조정화andRaphael Michel f43be3079f Translations: Update Korean
Currently translated at 34.1% (2003 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
조정화andRaphael Michel 3abe82ec77 Translations: Update Korean
Currently translated at 23.2% (1363 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
조정화andRaphael Michel 7b30902963 Translations: Update Korean
Currently translated at 97.1% (237 of 244 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
조정화andRaphael Michel a885c8d2e5 Translations: Update Korean
Currently translated at 22.2% (1303 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
Zona VipandRaphael Michel 0ae98f072a 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-09 11:20:27 +02:00
KC TsengandRaphael Michel 9b1a723001 Translations: Update Chinese (Traditional Han script)
Currently translated at 100.0% (244 of 244 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
KC TsengandRaphael Michel 46d7799cd0 Translations: Update Chinese (Traditional Han script)
Currently translated at 96.7% (5678 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
Raphael MichelandRaphael Michel fcb67ec4b5 Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (5869 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
Raphael MichelandRaphael Michel c7565e7c8b Translations: Update German
Currently translated at 100.0% (5869 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
Luca Martinelli [Sannita]andRaphael Michel 2316cb557a Translations: Update Italian
Currently translated at 72.5% (177 of 244 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
Luca Martinelli [Sannita]andRaphael Michel 4de75f3ba5 Translations: Update Italian
Currently translated at 36.6% (2150 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
Pekka SarkolaandRaphael Michel cb972cd6ca Translations: Update Finnish
Currently translated at 67.4% (3958 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
Luca Martinelli [Sannita]andRaphael Michel 3354ccf78a Translations: Update Italian
Currently translated at 36.4% (2141 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
Raphael MichelandRaphael Michel f17038101c Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (5869 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
Raphael MichelandRaphael Michel 8e343898b4 Translations: Update German
Currently translated at 100.0% (5869 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
Foxy HunterandRaphael Michel 09dc504c87 Translations: Update Dutch
Currently translated at 100.0% (244 of 244 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
Foxy HunterandRaphael Michel d780d1d25c Translations: Update Dutch
Currently translated at 100.0% (5869 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
Raphael MichelandGitHub 5522d67f9b API: Fix old meta values being returned when updating event (fixes #5077) (#5080) 2025-05-09 08:59:40 +02:00
Richard SchreiberandGitHub 7472564c26 [A11y] Fix sneak-peek for cart (#5076) 2025-05-09 08:38:34 +02:00
Richard SchreiberandGitHub 2b735bec0b [A11y] Improve customer account forms (#5034) 2025-05-09 08:36:09 +02:00
Phin WolkwitzandGitHub 3e335bcbfe Presale: Hide subevent lists if subevents exist but none are visible (Z#23186153) (#5054)
* Hide subevent lists (but not calendars) if subevents exist but none are visible, to avoid confusion during checkout
2025-05-07 13:36:50 +02:00
Richard SchreiberandGitHub f676a77536 Remove line-break before "required" in label on small screens (#5074) 2025-05-07 12:04:27 +02:00
Richard SchreiberandGitHub c487373340 [A11y] validate dates only server-side for better error message support (#5073) 2025-05-07 12:03:46 +02:00
Richard SchreiberandGitHub 3e05463486 [A11y] Remove unnecessary "required" help-text in questions-step (#5075) 2025-05-06 18:20:26 +02:00
31bb0f4a91 Product list: Show icon for seated products (#5015)
* Product list: Show icon for seated products

* Use updated seat icon

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

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

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-05-06 11:14:28 +02:00
Richard SchreiberandGitHub 2605fe93d9 Fix unhandled error when parsing date in calendar-view (#5072) 2025-05-05 15:33:22 +02:00
Richard SchreiberandGitHub 3dedfd6ee0 [A11y] fix tablist issues (#5060) 2025-05-05 12:16:04 +02:00
Richard SchreiberandGitHub f71eb195c4 [A11y] Fix service fee HTML-structure (#5046) 2025-05-05 11:59:17 +02:00
Richard SchreiberandGitHub f09e9590a8 [A11y] make text "required" visible in labels (#5042) 2025-05-05 11:40:35 +02:00
Richard SchreiberandGitHub c53d44238c [A11y] Improve voice-control access for quantity rocker-buttons 2025-05-05 10:08:17 +02:00
Raphael MichelandGitHub 3bcc504bd8 Geocoding utils: Support more flexible set of input fields (#5025) 2025-05-02 18:06:13 +02:00
dependabot[bot]andRaphael Michel d802f747c7 Bump @babel/core from 7.26.10 to 7.27.1 in /src/pretix/static/npm_dir
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.26.10 to 7.27.1.
- [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.1/packages/babel-core)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-02 11:46:21 +02:00
luelistaandGitHub d926030bf6 Event list: fix parsing of date query parameter (#5047)
Use the same localization formats as used when generating the value
2025-05-02 10:22:04 +02:00
dependabot[bot]andRaphael Michel 1e4c577b31 Bump qrcode from 8.1 to 8.2
Bumps [qrcode](https://github.com/lincolnloop/python-qrcode) from 8.1 to 8.2.
- [Changelog](https://github.com/lincolnloop/python-qrcode/blob/main/CHANGES.rst)
- [Commits](https://github.com/lincolnloop/python-qrcode/commits/v8.2)

---
updated-dependencies:
- dependency-name: qrcode
  dependency-version: '8.2'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-02 10:16:18 +02:00
dependabot[bot]andRaphael Michel 8cae00941a Bump @babel/preset-env in /src/pretix/static/npm_dir
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.26.9 to 7.27.1.
- [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.1/packages/babel-preset-env)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-02 10:16:03 +02:00
dependabot[bot]andRaphael Michel 602287b3ec Update sentry-sdk requirement from ==2.25.* to ==2.27.*
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.25.0...2.27.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-30 12:47:59 +02:00
CVZ-esandRaphael Michel 817f17dac5 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-04-30 12:47:00 +02:00
CVZ-esandRaphael Michel f33dd84900 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-04-30 12:47:00 +02:00
CVZ-esandRaphael Michel 99d0ca314d Translations: Update French
Currently translated at 100.0% (244 of 244 strings)

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

powered by weblate
2025-04-30 12:47:00 +02:00
CVZ-esandRaphael Michel 853749521e Translations: Update French
Currently translated at 100.0% (5869 of 5869 strings)

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

powered by weblate
2025-04-30 12:47:00 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
df5c6bcebf Update reportlab requirement from ==4.3.* to ==4.4.* (#5016)
Updates the requirements on [reportlab](https://www.reportlab.com/) to permit the latest version.

---
updated-dependencies:
- dependency-name: reportlab
  dependency-version: 4.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-04-30 11:46:00 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3e6051825e Update pep8-naming requirement from ==0.14.* to ==0.15.* (#5055)
Updates the requirements on [pep8-naming](https://github.com/PyCQA/pep8-naming) to permit the latest version.
- [Release notes](https://github.com/PyCQA/pep8-naming/releases)
- [Changelog](https://github.com/PyCQA/pep8-naming/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/PyCQA/pep8-naming/compare/0.14.0...0.15.0)

---
updated-dependencies:
- dependency-name: pep8-naming
  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-04-30 11:42:42 +02:00
Richard SchreiberandGitHub f4478da5ce Fix handling of empty giftcard-code 2025-04-30 07:15:18 +02:00
luelistaandGitHub 013a065132 Fix mismatched headline level in fragment_product_list.html (#5048) 2025-04-29 15:25:15 +02:00
Richard SchreiberandGitHub b3919973f1 Fix order export for empty attendee_name_parts 2025-04-29 13:35:25 +02:00
Raphael MichelandGitHub e1027e3e8c OrderChangeManager: Re-use same instances of OrderPosition/OrderFee 2025-04-29 12:38:41 +02:00
Richard SchreiberandGitHub d3792935ae [A11y] add missing sr-only-text for clock-icon 2025-04-29 12:28:46 +02:00
Davide ManzellaandRaphael Michel 1804dbebd0 Translations: Update Italian
Currently translated at 36.1% (2122 of 5869 strings)

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

powered by weblate
2025-04-29 12:00:12 +02:00
7ca2f8ec04 [A11y] add min/max as help_text to date/time inputs
* [A11y] add min/max as help_text to date/time inputs

* update text

* Fix help-text (suggestions from code review)

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

---------

Co-authored-by: Raphael Michel <michel@rami.io>
2025-04-29 09:10:29 +02:00
Raphael Michel 15eb0f8870 Bump version to 2025.5.0.dev0 2025-04-28 15:58:04 +02:00
Raphael Michel 01228dd865 Bump version to 2025.4.0 2025-04-28 15:57:22 +02:00
Raphael MichelandRaphael Michel bbde731dca Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (244 of 244 strings)

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

powered by weblate
2025-04-28 14:23:39 +02:00
Raphael MichelandRaphael Michel b21ea1ba9a Translations: Update German
Currently translated at 100.0% (244 of 244 strings)

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

powered by weblate
2025-04-28 14:23:39 +02:00
Raphael MichelandRaphael Michel ef1220d240 Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (5869 of 5869 strings)

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

powered by weblate
2025-04-28 14:23:39 +02:00
Raphael MichelandRaphael Michel cb3514a14f Translations: Update German
Currently translated at 100.0% (5869 of 5869 strings)

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

powered by weblate
2025-04-28 14:23:39 +02:00
Raphael Michel 117a66a837 Update po files
[CI skip]

Signed-off-by: Raphael Michel <michel@rami.io>
2025-04-28 13:08:23 +02:00
Raphael MichelandRaphael Michel 384d0c4824 Order changes: Correctly respect tax rules when adding or changing items (Z#23190086) 2025-04-28 13:06:45 +02:00
Anarion DunedainandRaphael Michel 667443ab56 Translations: Update Polish
Currently translated at 100.0% (236 of 236 strings)

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

powered by weblate
2025-04-28 12:34:14 +02:00
Anarion DunedainandRaphael Michel 22e99cf246 Translations: Update Polish
Currently translated at 99.9% (5862 of 5863 strings)

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

powered by weblate
2025-04-28 12:34:14 +02:00
Anarion DunedainandRaphael Michel 3e3cabe2bb Translations: Update Polish
Currently translated at 98.4% (5774 of 5863 strings)

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

powered by weblate
2025-04-28 12:34:14 +02:00
Richard SchreiberandGitHub ca12cbb69e Fix checkbox-labels always containing text "required" although not being required 2025-04-25 12:17:33 +02:00
Richard SchreiberandGitHub 21c273854c [A11y] Add sr-only "Log out" to logout-link 2025-04-25 10:31:07 +02:00
Richard SchreiberandGitHub 0eb11b154b Fix double-thick line between inputs in input-group 2025-04-25 10:30:50 +02:00
Raphael MichelandGitHub 8796b4359c Add CSS for right-to-left language input fields (#5021) 2025-04-25 09:13:58 +02:00
Richard SchreiberandGitHub 698f687c54 Fix missing checkbox-button disabled-state 2025-04-23 19:20:46 +02:00
Richard SchreiberandGitHub ec627d6a3c Fix rem-based input height 2025-04-23 19:20:31 +02:00
Richard SchreiberandGitHub a252c69988 [A11y] Fix tab order on customer step (remove autofocus on email-field) 2025-04-23 18:07:32 +02:00
Richard SchreiberandGitHub 578518e8ab [A11y] Fix color contrast on headings-small-color 2025-04-23 18:05:07 +02:00
Raphael MichelandGitHub d50d6a1dfd Product list: Fix DOM position of label causing wrong border 2025-04-23 17:34:20 +02:00
Richard SchreiberandGitHub 9d01072880 [A11y] allow users to scale website
* on smaller screens, make fontsize bigger for inputs to not have iPhones zoom on focus
2025-04-23 14:36:28 +02:00
Richard SchreiberandGitHub 48c2d57cd4 [A11y] fix border contrast for inputs 2025-04-23 14:34:50 +02:00
Paul BerschickandRaphael Michel 2b245f727e Translations: Update Catalan
Currently translated at 32.5% (1909 of 5863 strings)

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

powered by weblate
2025-04-23 12:41:56 +02:00
Raphael MichelandRaphael Michel f051ddca2d Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (5863 of 5863 strings)

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

powered by weblate
2025-04-23 12:41:56 +02:00
Raphael MichelandRaphael Michel 2ba2f9ff4b Translations: Update German
Currently translated at 100.0% (5863 of 5863 strings)

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

powered by weblate
2025-04-23 12:41:56 +02:00
Renne RochaandRaphael Michel 4ceb617104 Translations: Update Portuguese (Brazil)
Currently translated at 92.4% (5421 of 5863 strings)

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

powered by weblate
2025-04-23 12:41:56 +02:00
Raphael Michel e1d2721747 Stripe: Do not allow redirect in iframe for PayPal 2025-04-23 12:40:40 +02:00
Richard SchreiberandGitHub 515f79b206 A11y: do not use px-based fontsizes 2025-04-22 19:47:20 +02:00
Raphael MichelandGitHub 025ee6710c Fix #4982 -- API: Do not parse decimal input to float (#5012) 2025-04-22 17:36:04 +02:00
Martin Gross 94671f6f70 Docs/Certificates: Fix download-path in API-call sample (Z#23189733) 2025-04-22 10:49:45 +02:00
Raphael Michel c1656158f2 Item categories: Show IDs (required for widget usage) 2025-04-19 20:35:33 +02:00
Raphael Michel d1bd719f66 Translations: Fix inconsistent wording 2025-04-17 13:33:16 +02:00
Raphael Michel d61aed105f Add missing flag config for nb-no 2025-04-17 11:42:06 +02:00
Raphael Michel 4bf4cd748c Fix wrong flag for language code ca 2025-04-17 11:35:05 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
6b58c1484c Update celery requirement from ==5.4.* to ==5.5.* (#5010)
Updates the requirements on [celery](https://github.com/celery/celery) to permit the latest version.
- [Release notes](https://github.com/celery/celery/releases)
- [Changelog](https://github.com/celery/celery/blob/main/Changelog.rst)
- [Commits](https://github.com/celery/celery/compare/v5.4.0rc1...v5.5.1)

---
updated-dependencies:
- dependency-name: celery
  dependency-version: 5.5.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-04-16 22:30:07 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
6cc7a2a0de Bump markdown from 3.7 to 3.8 (#5009)
Bumps [markdown](https://github.com/Python-Markdown/markdown) from 3.7 to 3.8.
- [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.7...3.8)

---
updated-dependencies:
- dependency-name: markdown
  dependency-version: '3.8'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-16 22:26:20 +02:00
Raphael MichelandRaphael Michel c6862454f5 Translations: Update Korean
Currently translated at 18.5% (1087 of 5863 strings)

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

powered by weblate
2025-04-16 22:25:50 +02:00
조정화andRaphael Michel 6d28a7f384 Translations: Update Korean
Currently translated at 100.0% (236 of 236 strings)

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

powered by weblate
2025-04-16 22:25:50 +02:00
조정화andRaphael Michel 15251ff208 Translations: Update Korean
Currently translated at 18.4% (1080 of 5863 strings)

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

powered by weblate
2025-04-16 22:25:50 +02:00
Patrick ChiltonandRaphael Michel fea519962c Translations: Update Hungarian
Currently translated at 10.9% (641 of 5863 strings)

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

powered by weblate
2025-04-16 22:25:50 +02:00
Richard SchreiberandGitHub 929a2eb6e3 Fix datepicker date display when using min/max (Z#23185544) 2025-04-16 18:12:27 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
08eabfa61c Update sentry-sdk requirement from ==2.24.* to ==2.25.* (#4973)
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.24.0...2.25.0)

---
updated-dependencies:
- dependency-name: sentry-sdk
  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-04-13 18:25:50 +02:00
66dfa99e58 Questions: validate that min < max (#4992)
* Questions: validate that min < max

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

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

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-04-13 18:25:40 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3b0cd35c7a Update pillow requirement from ==11.1.* to ==11.2.* (#4976)
Updates the requirements on [pillow](https://github.com/python-pillow/Pillow) to permit the latest version.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/11.1.0...11.2.0)

---
updated-dependencies:
- dependency-name: pillow
  dependency-version: 11.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-04-13 18:25:26 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
810bdff5d9 Update django-otp requirement from ==1.5.* to ==1.6.* (#4996)
Updates the requirements on [django-otp](https://github.com/django-otp/django-otp) to permit the latest version.
- [Changelog](https://github.com/django-otp/django-otp/blob/master/CHANGES.rst)
- [Commits](https://github.com/django-otp/django-otp/compare/v1.5.0...v1.6.0)

---
updated-dependencies:
- dependency-name: django-otp
  dependency-version: 1.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-04-13 18:09:52 +02:00
조정화andRaphael Michel 54e02da2b3 Translations: Update Korean
Currently translated at 100.0% (236 of 236 strings)

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

powered by weblate
2025-04-13 18:09:30 +02:00
조정화andRaphael Michel 86133ee52f Translations: Update Korean
Currently translated at 15.0% (883 of 5863 strings)

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

powered by weblate
2025-04-13 18:09:30 +02:00
Menaouer ChaabiandRaphael Michel 1e3b924998 Translations: Update Arabic
Currently translated at 63.3% (3712 of 5863 strings)

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

powered by weblate
2025-04-13 18:09:30 +02:00
Menaouer ChaabiandRaphael Michel ac2b1186d1 Translations: Update Arabic
Currently translated at 63.2% (3711 of 5863 strings)

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

powered by weblate
2025-04-13 18:09:30 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
9608c7aa15 Bump qrcode from 8.0 to 8.1 (#5003)
Bumps [qrcode](https://github.com/lincolnloop/python-qrcode) from 8.0 to 8.1.
- [Changelog](https://github.com/lincolnloop/python-qrcode/blob/main/CHANGES.rst)
- [Commits](https://github.com/lincolnloop/python-qrcode/commits)

---
updated-dependencies:
- dependency-name: qrcode
  dependency-version: '8.1'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-13 18:06:13 +02:00
Richard SchreiberandGitHub 2bb324f885 Fix datepicker locale when using min/max 2025-04-09 14:38:27 +02:00
Richard SchreiberandGitHub ea955c779e Fix image size in help-text for logo-images 2025-04-08 20:40:18 +02:00
Raphael MichelandGitHub 9844ffca98 Discounts: Fix incorrect test for subevent date limitation (#4991)
If two discounts match the same products, the first one wins. Therefore,
the one we want to win in the test must always come last, otherwise the
test is not actually testing anything. In this case, this is highlighted
by the fact that the test does not pass in diffrent orders of discounts
unless we subtract a second from the date, because we compare with <=,
not <.
2025-04-07 17:37:55 +02:00
Richard SchreiberandGitHub 12f4473fbd Fix checkin-list-filter test randomly matching secret 2025-04-07 15:31:07 +02:00
luelistaandGitHub 8c3ac46ddf Fix bug in Question.clean_answer (#4987) 2025-04-07 15:19:54 +02:00
Raphael MichelandGitHub b4d8e9ccc4 Backend event list: Sort event series by their actual dates, like in the frontend (Z#23187301) (#4993) 2025-04-07 14:34:32 +02:00
luelistaandGitHub 899994ef1e Improve SOLD OUT / FULLY BOOKED message logic (Z#23187802) (#4988)
Show SOLD OUT instead of FULLY BOOKED if ticket is not free of charge even if a voucher gives 100% off
2025-04-07 13:51:59 +02:00
luelistaandGitHub 277a5bffa8 Allow changing ticket secret via API (Z#23188201) (#4989) 2025-04-07 13:49:19 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>Raphael Michel
1bbefddc11 Update flake8 requirement from ==7.1.* to ==7.2.* (#4972)
* Update flake8 requirement from ==7.1.* to ==7.2.*

Updates the requirements on [flake8](https://github.com/pycqa/flake8) to permit the latest version.
- [Commits](https://github.com/pycqa/flake8/compare/7.1.0...7.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>

* Resolve warning

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Raphael Michel <michel@rami.io>
2025-04-06 09:23:56 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
957462739a Bump @babel/core from 7.26.9 to 7.26.10 in /src/pretix/static/npm_dir (#4975)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.26.9 to 7.26.10.
- [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.26.10/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-version: 7.26.10
  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-04-06 09:19:47 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
fa468366c7 Bump @rollup/plugin-node-resolve in /src/pretix/static/npm_dir (#4974)
Bumps [@rollup/plugin-node-resolve](https://github.com/rollup/plugins/tree/HEAD/packages/node-resolve) from 16.0.0 to 16.0.1.
- [Changelog](https://github.com/rollup/plugins/blob/master/packages/node-resolve/CHANGELOG.md)
- [Commits](https://github.com/rollup/plugins/commits/node-resolve-v16.0.1/packages/node-resolve)

---
updated-dependencies:
- dependency-name: "@rollup/plugin-node-resolve"
  dependency-version: 16.0.1
  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-04-06 09:19:39 +02:00
Loïc AlejandroandRaphael Michel 9a61de9a22 Translations: Update French
Currently translated at 100.0% (5863 of 5863 strings)

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

powered by weblate
2025-04-04 11:20:58 +02:00
조정화andRaphael Michel 17df83a9fb Translations: Update Korean
Currently translated at 13.7% (805 of 5863 strings)

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

powered by weblate
2025-04-04 11:20:58 +02:00
Fernando LuizandRaphael Michel f3bd918846 Translations: Update Portuguese (Brazil)
Currently translated at 92.1% (5401 of 5863 strings)

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

powered by weblate
2025-04-04 11:20:58 +02:00
Hijiri UmemotoandRaphael Michel 5768fbca54 Translations: Update Japanese
Currently translated at 100.0% (236 of 236 strings)

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

powered by weblate
2025-04-04 11:20:58 +02:00
Hijiri UmemotoandRaphael Michel d88e47d76b Translations: Update Japanese
Currently translated at 100.0% (5863 of 5863 strings)

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

powered by weblate
2025-04-04 11:20:58 +02:00
luelistaandGitHub d8ec489b13 OrderChangeManager: Fix for change_tax_rule and recalculate_taxes in same transaction (Z#23187299) (#4964)
* Add test case

* Do not overwrite tax_rule in PriceOperation
2025-03-31 12:27:45 +02:00
Raphael MichelandGitHub 804b048dbb Check-in API: Return order locale, and allow to use order locale for … (#4969)
* Check-in API: Return order locale, and allow to use order locale for reasons

* Fix failing tests
2025-03-31 12:26:46 +02:00
Renne RochaandGitHub a3d721c08b Add Federal district (DF) to state dropdown for Brazil (BR) (#4966) 2025-03-31 12:15:17 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
b5544b120d Update djangorestframework requirement from ==3.15.* to ==3.16.* (#4965)
Updates the requirements on [djangorestframework](https://github.com/encode/django-rest-framework) to permit the latest version.
- [Release notes](https://github.com/encode/django-rest-framework/releases)
- [Commits](https://github.com/encode/django-rest-framework/compare/3.15.0...3.16.0)

---
updated-dependencies:
- dependency-name: djangorestframework
  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-03-31 12:14:53 +02:00
Raphael MichelandGitHub 5138e86cf1 Order search: Keep searching in canceled positions (Z#23187097) (#4963) 2025-03-31 12:14:00 +02:00
luelistaandGitHub f455152447 Show link to stripe payment receipt in backend (Z#23187178) (#4961)
* Show link to stripe payment receipt in backend (Z#23187178)

* Revert "Show link to stripe payment receipt in backend (Z#23187178)"

This reverts commit 4a261ac1ac.

* Show link to stripe payment receipt in backend payment details (Z#23187178)
2025-03-31 12:13:04 +02:00
9447e5802d PDF-Editor: improve UI for page-size and background PDF (#4959)
* PDF-Editor: improve UI for page-size and background PDF

* Update src/pretix/control/templates/pretixcontrol/pdf/index.html

Co-authored-by: leiascyr <156191181+leiascyr@users.noreply.github.com>

* Update src/pretix/control/templates/pretixcontrol/pdf/index.html

Co-authored-by: leiascyr <156191181+leiascyr@users.noreply.github.com>

* Update label text

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

---------

Co-authored-by: Raphael Michel <michel@rami.io>
Co-authored-by: leiascyr <156191181+leiascyr@users.noreply.github.com>
2025-03-31 12:11:49 +02:00
Jan Van HaverandRaphael Michel e5fc7144e4 Translations: Update Dutch
Currently translated at 77.5% (183 of 236 strings)

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

powered by weblate
2025-03-31 12:09:05 +02:00
Jan Van HaverandRaphael Michel a7c8bb0f02 Translations: Update Dutch
Currently translated at 99.8% (5853 of 5863 strings)

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

powered by weblate
2025-03-31 12:09:05 +02:00
Jan Van HaverandRaphael Michel fbb6246020 Translations: Update Dutch
Currently translated at 99.5% (5836 of 5863 strings)

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

powered by weblate
2025-03-31 12:09:05 +02:00
luelistaandGitHub d39a01af4d Fix bulk edit of revoked devices (Z#23187227) (#4960)
When selecting revoked devices and using bulk edit on them, the edit was performed 
either *on all active devices* or not at all. This commit fixes that behaviour so that the 
selected devices are edited.
2025-03-28 17:59:55 +01:00
Raphael MichelandGitHub d928adf7a3 Sort organizers in typeahead by number of events (Z##23185900) (#4912) 2025-03-27 17:28:10 +01:00
luelistaandGitHub 4755200ab0 order_overview: allow filtering by time (#4958) 2025-03-27 17:23:08 +01:00
0b8a7349c7 Discounts: Add applicability date ranges (Z#23151897) (#4927)
* Add event date fields, add preliminary range check

* Remove function, use filtered queryset for subevent id limit

* Improve and fix date range check

* Add formfields

* Add tests

* Improve tests

* Add new fields to API and documentation

* Add migration

* Change description according to suggestion

* Change discount apply signature, remove unnecessary query

* Rename new fields, simplify range check

* Rename fields in template

* Apply suggestions from code review

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

---------

Co-authored-by: Raphael Michel <michel@rami.io>
2025-03-27 15:36:20 +01:00
Richard SchreiberandGitHub 1a1948e3fa [A11y] Improve HTML-output for date-ranges 2025-03-27 13:21:25 +01:00
Richard SchreiberandGitHub f70874b21c [A11y] Widget: add missing labels to dialog and iframe 2025-03-27 13:20:13 +01:00
Richard SchreiberandGitHub 1c8bcca846 [A11y] Improve focus management for widget overlay 2025-03-27 13:18:59 +01:00
Raphael MichelandGitHub 6c7041c875 Add a label for empty salutation option (Z#23183319) (#4913) 2025-03-27 12:09:04 +01:00
CVZ-esandRaphael Michel 8c9a94f87e Translations: Update Spanish
Currently translated at 100.0% (236 of 236 strings)

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

powered by weblate
2025-03-27 11:05:45 +01:00
CVZ-esandRaphael Michel 6f3c2ed444 Translations: Update Spanish
Currently translated at 100.0% (5863 of 5863 strings)

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

powered by weblate
2025-03-27 11:05:45 +01:00
CVZ-esandRaphael Michel 736792fc01 Translations: Update French
Currently translated at 100.0% (236 of 236 strings)

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

powered by weblate
2025-03-27 11:05:45 +01:00
CVZ-esandRaphael Michel bacb40fd7f Translations: Update French
Currently translated at 100.0% (5863 of 5863 strings)

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

powered by weblate
2025-03-27 11:05:45 +01:00
42399c3488 Date picker: Guess default time 23:59 for end dates (Z#23182900) (#4917)
* Date picker: Guess default time 23:59 for end dates (Z#23182900)

* Update src/pretix/static/pretixcontrol/js/ui/main.js

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

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

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

---------

Co-authored-by: luelista <weller@rami.io>
2025-03-27 11:04:02 +01:00
Raphael Michel 592b98b83a Bump version to 2025.4.0.dev0 2025-03-26 16:08:03 +01:00
293 changed files with 152697 additions and 122426 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.
+2 -2
View File
@@ -23,7 +23,7 @@ Certificate download
.. sourcecode:: http
GET /api/v1/organizers/bigevents/events/sampleconf/orderpositions/23442/download/certificate/ HTTP/1.1
GET /api/v1/organizers/bigevents/events/sampleconf/orderpositions/23442/certificate/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
@@ -38,7 +38,7 @@ Certificate download
.. sourcecode:: http
GET /api/v1/organizers/bigevents/events/sampleconf/orderpositions/23442/download/certificate/?result=1f550651-ae7b-4911-a76c-2be8f348aaa5 HTTP/1.1
GET /api/v1/organizers/bigevents/events/sampleconf/orderpositions/23442/certificate/?result=1f550651-ae7b-4911-a76c-2be8f348aaa5 HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
+8 -1
View File
@@ -54,6 +54,11 @@ Checking a ticket in
this request twice with the same nonce, the second request will also succeed but will always
create only one check-in object even when the previous request was successful as well. This
allows for a certain level of idempotency and enables you to re-try after a connection failure.
:<json boolean use_order_locale: Specifies that pretix should use the customer's language (``locale`` field from the
order) when building texts (currently only the ``reason_explanation`` response field).
Defaults to ``false`` in which case the server will determine the language (currently
the event default language, might change in the future with support for the
``Accept-Language`` header).
:>json string status: ``"ok"``, ``"incomplete"``, or ``"error"``
:>json string reason: Reason code, only set on status ``"error"``, see below for possible values.
:>json string reason_explanation: Human-readable explanation, only set on status ``"error"`` and reason ``"rules"``, can be null.
@@ -62,7 +67,9 @@ Checking a ticket in
will only include check-ins for the selected list. (2) An additional boolean property
``require_attention`` will inform you whether either the order or the item have the
``checkin_attention`` flag set. (3) If ``attendee_name`` is empty, it may automatically fall
back to values from a parent product or from invoice addresses.
back to values from a parent product or from invoice addresses. (4) Additional properties
``order__status``, ``order__valid_if_pending``, ``order__require_approval``, and
``order__locale`` are included with details form the order for convenience.
:>json boolean require_attention: Whether or not the ``require_attention`` flag is set on the item or order.
:>json list checkin_texts: List of additional texts to show to the user.
:>json object list: Excerpt of information about the matching :ref:`check-in list <rest-checkinlists>` (if any was found),
+14
View File
@@ -35,6 +35,10 @@ subevent_mode strings Determines h
``"same"`` (discount is only applied for groups within
the same date), or ``"distinct"`` (discount is only applied
for groups with no two same dates).
subevent_date_from datetime The first date time of a subevent to which this discount can be applied
(or ``null``). Ignored in non-series events.
subevent_date_until datetime The last date time of a subevent to which this discount can be applied
(or ``null``). Ignored in non-series events.
condition_all_products boolean If ``true``, the discount condition applies to all items.
condition_limit_products list of integers If ``condition_all_products`` is not set, this is a list
of internal item IDs that the discount condition applies to.
@@ -105,6 +109,8 @@ Endpoints
"available_from": null,
"available_until": null,
"subevent_mode": "mixed",
"subevent_date_from": null,
"subevent_date_until": null,
"condition_all_products": true,
"condition_limit_products": [],
"condition_apply_to_addons": true,
@@ -163,6 +169,8 @@ Endpoints
"available_from": null,
"available_until": null,
"subevent_mode": "mixed",
"subevent_date_from": null,
"subevent_date_until": null,
"condition_all_products": true,
"condition_limit_products": [],
"condition_apply_to_addons": true,
@@ -207,6 +215,8 @@ Endpoints
"available_from": null,
"available_until": null,
"subevent_mode": "mixed",
"subevent_date_from": null,
"subevent_date_until": null,
"condition_all_products": true,
"condition_limit_products": [],
"condition_apply_to_addons": true,
@@ -240,6 +250,8 @@ Endpoints
"available_from": null,
"available_until": null,
"subevent_mode": "mixed",
"subevent_date_from": null,
"subevent_date_until": null,
"condition_all_products": true,
"condition_limit_products": [],
"condition_apply_to_addons": true,
@@ -302,6 +314,8 @@ Endpoints
"available_from": null,
"available_until": null,
"subevent_mode": "mixed",
"subevent_date_from": null,
"subevent_date_until": null,
"condition_all_products": true,
"condition_limit_products": [],
"condition_apply_to_addons": true,
+5
View File
@@ -1943,9 +1943,14 @@ Manipulating individual positions
* ``valid_until``
* ``secret``
Changing parameters such as ``item`` or ``price`` will **not** automatically trigger creation of a new invoice,
you need to take care of that yourself.
Changing ``secret`` does not cause a new PDF ticket to be sent to the customer, nor does it cause the old secret
to be added to the revocation list, even if your ticket generator uses one.
**Example request**:
.. sourcecode:: http
+13 -13
View File
@@ -30,7 +30,7 @@ dependencies = [
"babel",
"BeautifulSoup4==4.13.*",
"bleach==6.2.*",
"celery==5.4.*",
"celery==5.5.*",
"chardet==5.2.*",
"cryptography>=44.0.0",
"css-inline==0.14.*",
@@ -49,12 +49,12 @@ dependencies = [
"django-localflavor==4.0",
"django-markup",
"django-oauth-toolkit==2.3.*",
"django-otp==1.5.*",
"django-otp==1.6.*",
"django-phonenumber-field==7.3.*",
"django-redis==5.4.*",
"django-scopes==2.0.*",
"django-statici18n==2.6.*",
"djangorestframework==3.15.*",
"djangorestframework==3.16.*",
"dnspython==2.7.*",
"drf_ujson2==1.7.*",
"geoip2==5.*",
@@ -64,7 +64,7 @@ dependencies = [
"kombu==5.5.*",
"libsass==0.23.*",
"lxml",
"markdown==3.7", # 3.3.5 requires importlib-metadata>=4.4, but django-bootstrap3 requires importlib-metadata<3.
"markdown==3.8", # 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.*",
@@ -74,24 +74,24 @@ dependencies = [
"paypal-checkout-serversdk==1.0.*",
"PyJWT==2.10.*",
"phonenumberslite==9.0.*",
"Pillow==11.1.*",
"Pillow==11.2.*",
"pretix-plugin-build",
"protobuf==6.30.*",
"psycopg2-binary",
"pycountry",
"pycparser==2.22",
"pycryptodome==3.22.*",
"pycryptodome==3.23.*",
"pypdf==5.4.*",
"python-bidi==0.6.*", # Support for Arabic in reportlab
"python-dateutil==2.9.*",
"pytz",
"pytz-deprecation-shim==0.1.*",
"pyuca",
"qrcode==8.0",
"qrcode==8.2",
"redis==5.2.*",
"reportlab==4.3.*",
"reportlab==4.4.*",
"requests==2.31.*",
"sentry-sdk==2.24.*",
"sentry-sdk==2.29.*",
"sepaxml==2.6.*",
"stripe==7.9.*",
"text-unidecode==1.*",
@@ -107,14 +107,14 @@ dependencies = [
[project.optional-dependencies]
memcached = ["pylibmc"]
dev = [
"aiohttp==3.11.*",
"aiohttp==3.12.*",
"coverage",
"coveralls",
"fakeredis==2.26.*",
"flake8==7.1.*",
"flake8==7.2.*",
"freezegun",
"isort==6.0.*",
"pep8-naming==0.14.*",
"pep8-naming==0.15.*",
"potypo",
"pytest-asyncio>=0.24",
"pytest-cache",
@@ -122,7 +122,7 @@ dev = [
"pytest-django==4.*",
"pytest-mock==3.14.*",
"pytest-sugar",
"pytest-xdist==3.6.*",
"pytest-xdist==3.7.*",
"pytest==8.3.*",
"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.3.0"
__version__ = "2025.6.0.dev0"
+3 -1
View File
@@ -101,6 +101,7 @@ ALL_LANGUAGES = [
('fi', _('Finnish')),
('gl', _('Galician')),
('el', _('Greek')),
('he', _('Hebrew')),
('id', _('Indonesian')),
('it', _('Italian')),
('ja', _('Japanese')),
@@ -121,7 +122,8 @@ LANGUAGES_OFFICIAL = {
'en', 'de', 'de-informal'
}
LANGUAGES_RTL = {
'ar', 'hw'
# When adding more right-to-left languages, also update pretix/static/pretixbase/scss/_rtl.scss
'ar', 'he'
}
LANGUAGES_INCUBATING = {
'pt-br', 'gl',
+1
View File
@@ -84,6 +84,7 @@ class CheckinRPCRedeemInputSerializer(serializers.Serializer):
type = serializers.ChoiceField(choices=Checkin.CHECKIN_TYPES, default=Checkin.TYPE_ENTRY)
ignore_unpaid = serializers.BooleanField(default=False, required=False)
questions_supported = serializers.BooleanField(default=True, required=False)
use_order_locale = serializers.BooleanField(default=False, required=False)
nonce = serializers.CharField(required=False, allow_null=True)
datetime = serializers.DateTimeField(required=False, allow_null=True)
answers = serializers.JSONField(required=False, allow_null=True)
+6 -5
View File
@@ -38,11 +38,12 @@ class DiscountSerializer(SalesChannelMigrationMixin, I18nAwareModelSerializer):
class Meta:
model = Discount
fields = ('id', 'active', 'internal_name', 'position', 'all_sales_channels', 'limit_sales_channels',
'available_from', 'available_until', 'subevent_mode', 'condition_all_products',
'condition_limit_products', 'condition_apply_to_addons', 'condition_min_count', 'condition_min_value',
'benefit_discount_matching_percent', 'benefit_only_apply_to_cheapest_n_matches',
'benefit_same_products', 'benefit_limit_products', 'benefit_apply_to_addons',
'benefit_ignore_voucher_discounted', 'condition_ignore_voucher_discounted')
'available_from', 'available_until', 'subevent_mode', 'subevent_date_from', 'subevent_date_until',
'condition_all_products', 'condition_limit_products', 'condition_apply_to_addons',
'condition_min_count', 'condition_min_value', 'benefit_discount_matching_percent',
'benefit_only_apply_to_cheapest_n_matches', 'benefit_same_products', 'benefit_limit_products',
'benefit_apply_to_addons', 'benefit_ignore_voucher_discounted',
'condition_ignore_voucher_discounted')
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
+4
View File
@@ -378,6 +378,8 @@ class EventSerializer(SalesChannelMigrationMixin, I18nAwareModelSerializer):
if prop.name not in meta_data:
current_object.delete()
instance._prefetched_objects_cache.clear()
# Item Meta properties
if item_meta_properties is not None:
current = list(event.item_meta_properties.all())
@@ -398,6 +400,8 @@ class EventSerializer(SalesChannelMigrationMixin, I18nAwareModelSerializer):
if prop.name not in list(item_meta_properties.keys()):
prop.delete()
instance._prefetched_objects_cache.clear()
# Seats
if seat_category_mapping is not None or ('seating_plan' in validated_data and validated_data['seating_plan'] is None):
current_mappings = {
+4 -2
View File
@@ -607,6 +607,7 @@ class CheckinListOrderPositionSerializer(OrderPositionSerializer):
order__status = serializers.SlugRelatedField(read_only=True, slug_field='status', source='order')
order__valid_if_pending = serializers.SlugRelatedField(read_only=True, slug_field='valid_if_pending', source='order')
order__require_approval = serializers.SlugRelatedField(read_only=True, slug_field='require_approval', source='order')
order__locale = serializers.SlugRelatedField(read_only=True, slug_field='locale', source='order')
class Meta:
model = OrderPosition
@@ -615,7 +616,7 @@ class CheckinListOrderPositionSerializer(OrderPositionSerializer):
'attendee_email', 'voucher', 'tax_rate', 'tax_value', 'secret', 'addon_to', 'subevent', 'checkins',
'print_logs', 'downloads', 'answers', 'tax_rule', 'pseudonymization_id', 'pdf_data', 'seat',
'require_attention', 'order__status', 'order__valid_if_pending', 'order__require_approval',
'valid_from', 'valid_until', 'blocked')
'order__locale', 'valid_from', 'valid_until', 'blocked')
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
@@ -1518,7 +1519,8 @@ class OrderCreateSerializer(I18nAwareModelSerializer):
self.context['event'],
order.sales_channel,
[
(cp.item_id, cp.subevent_id, cp.price, bool(cp.addon_to), cp.is_bundled, pos._voucher_discount)
(cp.item_id, cp.subevent_id, cp.subevent.date_from if cp.subevent_id else None, cp.price,
bool(cp.addon_to), cp.is_bundled, pos._voucher_discount)
for cp in order_positions
]
)
+5 -1
View File
@@ -251,7 +251,7 @@ class OrderPositionChangeSerializer(serializers.ModelSerializer):
class Meta:
model = OrderPosition
fields = (
'item', 'variation', 'subevent', 'seat', 'price', 'tax_rule', 'valid_from', 'valid_until'
'item', 'variation', 'subevent', 'seat', 'price', 'tax_rule', 'valid_from', 'valid_until', 'secret'
)
def __init__(self, *args, **kwargs):
@@ -319,6 +319,7 @@ class OrderPositionChangeSerializer(serializers.ModelSerializer):
tax_rule = validated_data.get('tax_rule', instance.tax_rule)
valid_from = validated_data.get('valid_from', instance.valid_from)
valid_until = validated_data.get('valid_until', instance.valid_until)
secret = validated_data.get('secret', instance.secret)
change_item = None
if item != instance.item or variation != instance.variation:
@@ -351,6 +352,9 @@ class OrderPositionChangeSerializer(serializers.ModelSerializer):
if valid_until != instance.valid_until:
ocm.change_valid_until(instance, valid_until)
if secret != instance.secret:
ocm.change_ticket_secret(instance, secret)
if self.context.get('commit', True):
ocm.commit()
instance.refresh_from_db()
+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',
+7 -2
View File
@@ -420,7 +420,7 @@ def _checkin_list_position_queryset(checkinlists, ignore_status=False, ignore_pr
def _redeem_process(*, checkinlists, raw_barcode, answers_data, datetime, force, checkin_type, ignore_unpaid, nonce,
untrusted_input, user, auth, expand, pdf_data, request, questions_supported, canceled_supported,
source_type='barcode', legacy_url_support=False, simulate=False, gate=None):
source_type='barcode', legacy_url_support=False, simulate=False, gate=None, use_order_locale=False):
if not checkinlists:
raise ValidationError('No check-in list passed.')
@@ -694,7 +694,11 @@ def _redeem_process(*, checkinlists, raw_barcode, answers_data, datetime, force,
pass
# 6. Pass to our actual check-in logic
with language(op.order.event.settings.locale):
if use_order_locale:
locale = op.order.locale
else:
locale = op.order.event.settings.locale
with language(locale):
try:
perform_checkin(
op=op,
@@ -909,6 +913,7 @@ class CheckinRPCRedeemView(views.APIView):
expand=self.request.query_params.getlist('expand'),
pdf_data=self.request.query_params.get('pdf_data', 'false') == 'true',
questions_supported=s.validated_data['questions_supported'],
use_order_locale=s.validated_data['use_order_locale'],
canceled_supported=True,
request=self.request, # this is not clean, but we need it in the serializers for URL generation
legacy_url_support=False,
+4 -5
View File
@@ -185,7 +185,7 @@ with scopes_disabled():
| Q(full_invoice_no__iexact=u)
).values_list('order_id', flat=True)
matching_positions = OrderPosition.objects.filter(
matching_positions = OrderPosition.all.filter(
Q(order=OuterRef('pk')) & Q(
Q(attendee_name_cached__icontains=u) | Q(attendee_email__icontains=u)
| Q(secret__istartswith=u)
@@ -452,10 +452,9 @@ class EventOrderViewSet(OrderViewSetMixin, viewsets.ModelViewSet):
comment = request.data.get('comment', None)
cancellation_fee = request.data.get('cancellation_fee', None)
if cancellation_fee:
try:
cancellation_fee = float(Decimal(cancellation_fee))
except:
cancellation_fee = None
cancellation_fee = serializers.DecimalField(max_digits=13, decimal_places=2).to_internal_value(
cancellation_fee,
)
order = self.get_object()
if not order.cancel_allowed():
+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:
+1 -1
View File
@@ -712,7 +712,7 @@ class OrderListExporter(MultiSheetListExporter):
if name_scheme and len(name_scheme['fields']) > 1:
for k, label, w in name_scheme['fields']:
row.append(
get_name_parts_localized(op.attendee_name_parts, k)
get_name_parts_localized(op.attendee_name_parts, k) if op.attendee_name_parts else ''
)
row += [
op.attendee_email,
+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 "",
+64 -7
View File
@@ -58,6 +58,7 @@ from django.urls import reverse
from django.utils.formats import date_format
from django.utils.html import escape
from django.utils.safestring import mark_safe
from django.utils.text import format_lazy
from django.utils.timezone import get_current_timezone
from django.utils.translation import gettext_lazy as _, pgettext_lazy
from django_countries import countries
@@ -127,7 +128,13 @@ class NamePartsWidget(forms.MultiWidget):
if fname == 'title' and self.titles:
widgets.append(Select(attrs=a, choices=[('', '')] + [(d, d) for d in self.titles[1]]))
elif fname == 'salutation':
widgets.append(Select(attrs=a, choices=[('', '---'), ('empty', '')] + PERSON_NAME_SALUTATIONS))
widgets.append(Select(
attrs=a,
choices=[
('', '---'),
('empty', '({})'.format(pgettext_lazy("name_salutation", "not specified"))),
] + PERSON_NAME_SALUTATIONS
))
else:
widgets.append(self.widget(attrs=a))
super().__init__(widgets, attrs)
@@ -175,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))
@@ -245,7 +257,10 @@ class NamePartsFormField(forms.MultiValueField):
d.pop('validators', None)
field = forms.ChoiceField(
**d,
choices=[('', '---'), ('empty', '')] + PERSON_NAME_SALUTATIONS
choices=[
('', '---'),
('empty', '({})'.format(pgettext_lazy("name_salutation", "not specified"))),
] + PERSON_NAME_SALUTATIONS
)
else:
field = forms.CharField(**defaults)
@@ -861,6 +876,23 @@ class BaseQuestionsForm(forms.Form):
attrs['data-min'] = q.valid_date_min.isoformat()
if q.valid_date_max:
attrs['data-max'] = q.valid_date_max.isoformat()
if not help_text:
if q.valid_date_min and q.valid_date_max:
help_text = format_lazy(
'Please enter a date between {min} and {max}.',
min=date_format(q.valid_date_min, "SHORT_DATE_FORMAT"),
max=date_format(q.valid_date_max, "SHORT_DATE_FORMAT"),
)
elif q.valid_date_min:
help_text = format_lazy(
'Please enter a date no earlier than {min}.',
min=date_format(q.valid_date_min, "SHORT_DATE_FORMAT"),
)
elif q.valid_date_max:
help_text = format_lazy(
'Please enter a date no later than {max}.',
max=date_format(q.valid_date_max, "SHORT_DATE_FORMAT"),
)
field = forms.DateField(
label=label, required=required,
help_text=help_text,
@@ -879,6 +911,23 @@ class BaseQuestionsForm(forms.Form):
widget=TimePickerWidget(time_format=get_format_without_seconds('TIME_INPUT_FORMATS')),
)
elif q.type == Question.TYPE_DATETIME:
if not help_text:
if q.valid_datetime_min and q.valid_datetime_max:
help_text = format_lazy(
'Please enter a date and time between {min} and {max}.',
min=date_format(q.valid_datetime_min, "SHORT_DATETIME_FORMAT"),
max=date_format(q.valid_datetime_max, "SHORT_DATETIME_FORMAT"),
)
elif q.valid_datetime_min:
help_text = format_lazy(
'Please enter a date and time no earlier than {min}.',
min=date_format(q.valid_datetime_min, "SHORT_DATETIME_FORMAT"),
)
elif q.valid_datetime_max:
help_text = format_lazy(
'Please enter a date and time no later than {max}.',
max=date_format(q.valid_datetime_max, "SHORT_DATETIME_FORMAT"),
)
field = SplitDateTimeField(
label=label, required=required,
help_text=help_text,
@@ -944,7 +993,11 @@ class BaseQuestionsForm(forms.Form):
for k, v in self.fields.items():
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 \
@@ -1158,7 +1211,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 \
@@ -0,0 +1,23 @@
# Generated by Django 4.2.19 on 2025-03-18 09:12
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('pretixbase', '0278_login_source_add_unique_together'),
]
operations = [
migrations.AddField(
model_name='discount',
name='subevent_date_from',
field=models.DateTimeField(blank=True, null=True),
),
migrations.AddField(
model_name='discount',
name='subevent_date_until',
field=models.DateTimeField(blank=True, null=True),
),
]
@@ -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),
),
]
+21 -3
View File
@@ -36,7 +36,9 @@ from django_scopes import ScopedManager
from pretix.base.decimal import round_decimal
from pretix.base.models.base import LoggedModel
PositionInfo = namedtuple('PositionInfo', ['item_id', 'subevent_id', 'line_price_gross', 'is_addon_to', 'voucher_discount'])
PositionInfo = namedtuple('PositionInfo',
['item_id', 'subevent_id', 'subevent_date_from', 'line_price_gross', 'is_addon_to',
'voucher_discount'])
class Discount(LoggedModel):
@@ -171,6 +173,17 @@ class Discount(LoggedModel):
"access to sold-out quota will still receive the discount."),
)
subevent_date_from = models.DateTimeField(
verbose_name=pgettext_lazy("subevent", "Available for dates starting from"),
null=True,
blank=True,
)
subevent_date_until = models.DateTimeField(
verbose_name=pgettext_lazy("subevent", "Available for dates starting until"),
null=True,
blank=True,
)
# more feature ideas:
# - max_usages_per_order
# - promote_to_user_if_almost_satisfied
@@ -355,11 +368,15 @@ class Discount(LoggedModel):
# First, filter out everything not even covered by our product scope
condition_candidates = [
idx
for idx, (item_id, subevent_id, line_price_gross, is_addon_to, voucher_discount) in positions.items()
for idx, (item_id, subevent_id, subevent_date_from, line_price_gross, is_addon_to, voucher_discount) in
positions.items()
if (
(self.condition_all_products or item_id in limit_products) and
(self.condition_apply_to_addons or not is_addon_to) and
(not self.condition_ignore_voucher_discounted or voucher_discount is None or voucher_discount == Decimal('0.00'))
and (not subevent_id or (
self.subevent_date_from is None or subevent_date_from >= self.subevent_date_from)) and (
self.subevent_date_until is None or subevent_date_from <= self.subevent_date_until)
)
]
@@ -369,7 +386,8 @@ class Discount(LoggedModel):
benefit_products = {p.pk for p in self.benefit_limit_products.all()}
benefit_candidates = [
idx
for idx, (item_id, subevent_id, line_price_gross, is_addon_to, voucher_discount) in positions.items()
for idx, (item_id, subevent_id, subevent_date_from, line_price_gross, is_addon_to, voucher_discount) in
positions.items()
if (
item_id in benefit_products and
(self.benefit_apply_to_addons or not is_addon_to) and
+5
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,
+13 -3
View File
@@ -821,7 +821,8 @@ class Item(LoggedModel):
def ask_attendee_data(self):
return self.admission and self.personalized
def tax(self, price=None, base_price_is='auto', currency=None, invoice_address=None, override_tax_rate=None, include_bundled=False):
def tax(self, price=None, base_price_is='auto', currency=None, invoice_address=None, override_tax_rate=None,
include_bundled=False, force_fixed_gross_price=False):
price = price if price is not None else self.default_price
bundled_sum = Decimal('0.00')
@@ -850,7 +851,7 @@ class Item(LoggedModel):
else:
t = self.tax_rule.tax(price, base_price_is=base_price_is, invoice_address=invoice_address,
override_tax_rate=override_tax_rate, currency=currency or self.event.currency,
subtract_from_gross=bundled_sum)
subtract_from_gross=bundled_sum, force_fixed_gross_price=force_fixed_gross_price)
if bundled_sum:
t.name = "MIXED!"
@@ -1836,7 +1837,7 @@ class Question(LoggedModel):
))
llen = len(answer.split(','))
elif all(isinstance(o, QuestionOption) for o in answer):
return o
return answer
else:
l_ = list(self.options.filter(
Q(pk__in=[a for a in answer if isinstance(a, int) or a.isdigit()]) |
@@ -1915,6 +1916,15 @@ class Question(LoggedModel):
if event != item.event:
raise ValidationError(_('One or more items do not belong to this event.'))
def clean(self):
if self.valid_date_max and self.valid_date_min and self.valid_date_min > self.valid_date_max:
raise ValidationError(_("The maximum date must not be before the minimum value."))
if self.valid_datetime_max and self.valid_datetime_min and self.valid_datetime_min > self.valid_datetime_max:
raise ValidationError(_("The maximum date must not be before the minimum value."))
if self.valid_number_max and self.valid_number_min and self.valid_number_min > self.valid_number_max:
raise ValidationError(_("The maximum value must not be lower than the minimum value."))
super().clean()
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')
+139 -87
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
@@ -694,7 +751,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 +1375,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 +1450,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 +1473,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 +1540,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,73 +1551,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
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():
+66 -18
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
@@ -1398,7 +1423,8 @@ class CartManager:
self.event,
self._sales_channel.identifier,
[
(cp.item_id, cp.subevent_id, cp.line_price_gross, bool(cp.addon_to), cp.is_bundled, cp.listed_price - cp.price_after_voucher)
(cp.item_id, cp.subevent_id, cp.subevent.date_from if cp.subevent_id else None, cp.line_price_gross,
bool(cp.addon_to), cp.is_bundled, cp.listed_price - cp.price_after_voucher)
for cp in positions
]
)
@@ -1415,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()
@@ -1631,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:
+2 -1
View File
@@ -120,7 +120,8 @@ class CrossSellingService:
self.event,
self.sales_channel,
[
(cp.item_id, cp.subevent_id, cp.line_price_gross, bool(cp.addon_to), cp.is_bundled,
(cp.item_id, cp.subevent_id, cp.subevent.date_from if cp.subevent_id else None, cp.line_price_gross,
bool(cp.addon_to), cp.is_bundled,
cp.listed_price - cp.price_after_voucher)
for cp in self.cartpositions
],
+1 -1
View File
@@ -531,7 +531,7 @@ def send_invoices_to_organizer(sender, **kwargs):
if i.event.settings.invoice_email_organizer:
with language(i.event.settings.locale):
mail(
email=i.event.settings.invoice_email_organizer,
email=[e.strip() for e in i.event.settings.invoice_email_organizer.split(",")],
subject=_('New invoice: {number}').format(number=i.number),
template=LazyI18nString.from_gettext(_(
'Hello,\n\n'
+177 -131
View File
@@ -875,7 +875,8 @@ def _check_positions(event: Event, now_dt: datetime, time_machine_now_dt: dateti
event,
sales_channel.identifier,
[
(cp.item_id, cp.subevent_id, cp.line_price_gross, bool(cp.addon_to), cp.is_bundled, cp.listed_price - cp.price_after_voucher)
(cp.item_id, cp.subevent_id, cp.subevent.date_from if cp.subevent_id else None, cp.line_price_gross,
bool(cp.addon_to), cp.is_bundled, cp.listed_price - cp.price_after_voucher)
for cp in sorted_positions
]
)
@@ -1563,6 +1564,7 @@ class OrderChangeManager:
AddFeeOperation = namedtuple('AddFeeOperation', ('fee', 'price_diff'))
CancelFeeOperation = namedtuple('CancelFeeOperation', ('fee', 'price_diff'))
RegenerateSecretOperation = namedtuple('RegenerateSecretOperation', ('position',))
ChangeSecretOperation = namedtuple('ChangeSecretOperation', ('position', 'new_secret'))
ChangeValidFromOperation = namedtuple('ChangeValidFromOperation', ('position', 'valid_from'))
ChangeValidUntilOperation = namedtuple('ChangeValidUntilOperation', ('position', 'valid_until'))
AddBlockOperation = namedtuple('AddBlockOperation', ('position', 'block_name', 'ignore_from_quota_while_blocked'))
@@ -1670,6 +1672,9 @@ class OrderChangeManager:
def regenerate_secret(self, position: OrderPosition):
self._operations.append(self.RegenerateSecretOperation(position))
def change_ticket_secret(self, position: OrderPosition, new_secret: str):
self._operations.append(self.ChangeSecretOperation(position, new_secret))
def change_valid_from(self, position: OrderPosition, new_value: datetime):
self._operations.append(self.ChangeValidFromOperation(position, new_value))
@@ -1684,7 +1689,8 @@ class OrderChangeManager:
def change_price(self, position: OrderPosition, price: Decimal):
tax_rule = self._current_tax_rules().get(position.pk, position.tax_rule) or TaxRule.zero()
price = tax_rule.tax(price, base_price_is='gross')
price = tax_rule.tax(price, base_price_is='gross', invoice_address=self._invoice_address,
force_fixed_gross_price=True)
if position.issued_gift_cards.exists():
raise OrderError(self.error_messages['gift_card_change'])
@@ -1749,7 +1755,8 @@ class OrderChangeManager:
self._operations.append(self.AddFeeOperation(fee, fee.value))
def change_fee(self, fee: OrderFee, value: Decimal):
value = (fee.tax_rule or TaxRule.zero()).tax(value, base_price_is='gross')
value = (fee.tax_rule or TaxRule.zero()).tax(value, base_price_is='gross', invoice_address=self._invoice_address,
force_fixed_gross_price=True)
self._totaldiff += value.gross - fee.value
self._invoice_dirty = True
self._operations.append(self.FeeValueOperation(fee, value, value.gross - fee.value))
@@ -1784,7 +1791,8 @@ class OrderChangeManager:
if price is None:
price = get_price(item, variation, subevent=subevent, invoice_address=self._invoice_address)
elif not isinstance(price, TaxedPrice):
price = item.tax(price, base_price_is='gross', invoice_address=self._invoice_address)
price = item.tax(price, base_price_is='gross', invoice_address=self._invoice_address,
force_fixed_gross_price=True)
except TaxRule.SaleNotAllowed:
raise OrderError(self.error_messages['tax_rule_country_blocked'])
@@ -2213,73 +2221,79 @@ class OrderChangeManager:
nextposid = self.order.all_positions.aggregate(m=Max('positionid'))['m'] + 1
split_positions = []
secret_dirty = set()
position_cache = {}
fee_cache = {}
for op in self._operations:
if isinstance(op, self.ItemOperation):
position = position_cache.setdefault(op.position.pk, op.position)
self.order.log_action('pretix.event.order.changed.item', user=self.user, auth=self.auth, data={
'position': op.position.pk,
'positionid': op.position.positionid,
'old_item': op.position.item.pk,
'old_variation': op.position.variation.pk if op.position.variation else None,
'position': position.pk,
'positionid': position.positionid,
'old_item': position.item.pk,
'old_variation': position.variation.pk if position.variation else None,
'new_item': op.item.pk,
'new_variation': op.variation.pk if op.variation else None,
'old_price': op.position.price,
'addon_to': op.position.addon_to_id,
'new_price': op.position.price
'old_price': position.price,
'addon_to': position.addon_to_id,
'new_price': position.price
})
op.position.item = op.item
op.position.variation = op.variation
op.position._calculate_tax()
position.item = op.item
position.variation = op.variation
position._calculate_tax()
if op.position.voucher_budget_use is not None and op.position.voucher and not op.position.addon_to_id:
listed_price = get_listed_price(op.position.item, op.position.variation, op.position.subevent)
if not op.position.item.tax_rule or op.position.item.tax_rule.price_includes_tax:
price_after_voucher = max(op.position.price, op.position.voucher.calculate_price(listed_price))
if position.voucher_budget_use is not None and position.voucher and not position.addon_to_id:
listed_price = get_listed_price(position.item, position.variation, position.subevent)
if not position.item.tax_rule or position.item.tax_rule.price_includes_tax:
price_after_voucher = max(position.price, position.voucher.calculate_price(listed_price))
else:
price_after_voucher = max(op.position.price - op.position.tax_value, op.position.voucher.calculate_price(listed_price))
op.position.voucher_budget_use = max(listed_price - price_after_voucher, Decimal('0.00'))
secret_dirty.add(op.position)
op.position.save()
price_after_voucher = max(position.price - position.tax_value, position.voucher.calculate_price(listed_price))
position.voucher_budget_use = max(listed_price - price_after_voucher, Decimal('0.00'))
secret_dirty.add(position)
position.save()
elif isinstance(op, self.MembershipOperation):
position = position_cache.setdefault(op.position.pk, op.position)
self.order.log_action('pretix.event.order.changed.membership', user=self.user, auth=self.auth, data={
'position': op.position.pk,
'positionid': op.position.positionid,
'old_membership_id': op.position.used_membership_id,
'position': position.pk,
'positionid': position.positionid,
'old_membership_id': position.used_membership_id,
'new_membership_id': op.membership.pk if op.membership else None,
})
op.position.used_membership = op.membership
op.position.save()
position.used_membership = op.membership
position.save()
elif isinstance(op, self.SeatOperation):
position = position_cache.setdefault(op.position.pk, op.position)
self.order.log_action('pretix.event.order.changed.seat', user=self.user, auth=self.auth, data={
'position': op.position.pk,
'positionid': op.position.positionid,
'old_seat': op.position.seat.name if op.position.seat else "-",
'position': position.pk,
'positionid': position.positionid,
'old_seat': position.seat.name if position.seat else "-",
'new_seat': op.seat.name if op.seat else "-",
'old_seat_id': op.position.seat.pk if op.position.seat else None,
'old_seat_id': position.seat.pk if position.seat else None,
'new_seat_id': op.seat.pk if op.seat else None,
})
op.position.seat = op.seat
secret_dirty.add(op.position)
op.position.save()
position.seat = op.seat
secret_dirty.add(position)
position.save()
elif isinstance(op, self.SubeventOperation):
position = position_cache.setdefault(op.position.pk, op.position)
self.order.log_action('pretix.event.order.changed.subevent', user=self.user, auth=self.auth, data={
'position': op.position.pk,
'positionid': op.position.positionid,
'old_subevent': op.position.subevent.pk,
'position': position.pk,
'positionid': position.positionid,
'old_subevent': position.subevent.pk,
'new_subevent': op.subevent.pk,
'old_price': op.position.price,
'new_price': op.position.price
'old_price': position.price,
'new_price': position.price
})
op.position.subevent = op.subevent
secret_dirty.add(op.position)
if op.position.voucher_budget_use is not None and op.position.voucher and not op.position.addon_to_id:
listed_price = get_listed_price(op.position.item, op.position.variation, op.position.subevent)
if not op.position.item.tax_rule or op.position.item.tax_rule.price_includes_tax:
price_after_voucher = max(op.position.price, op.position.voucher.calculate_price(listed_price))
position.subevent = op.subevent
secret_dirty.add(position)
if position.voucher_budget_use is not None and position.voucher and not position.addon_to_id:
listed_price = get_listed_price(position.item, position.variation, position.subevent)
if not position.item.tax_rule or position.item.tax_rule.price_includes_tax:
price_after_voucher = max(position.price, position.voucher.calculate_price(listed_price))
else:
price_after_voucher = max(op.position.price - op.position.tax_value, op.position.voucher.calculate_price(listed_price))
op.position.voucher_budget_use = max(listed_price - price_after_voucher, Decimal('0.00'))
op.position.save()
price_after_voucher = max(position.price - position.tax_value, position.voucher.calculate_price(listed_price))
position.voucher_budget_use = max(listed_price - price_after_voucher, Decimal('0.00'))
position.save()
elif isinstance(op, self.AddFeeOperation):
self.order.log_action('pretix.event.order.changed.addfee', user=self.user, auth=self.auth, data={
'fee': op.fee.pk,
@@ -2288,70 +2302,79 @@ class OrderChangeManager:
op.fee._calculate_tax()
op.fee.save()
elif isinstance(op, self.FeeValueOperation):
fee = fee_cache.setdefault(op.fee.pk, op.fee)
self.order.log_action('pretix.event.order.changed.feevalue', user=self.user, auth=self.auth, data={
'fee': op.fee.pk,
'old_price': op.fee.value,
'fee': fee.pk,
'old_price': fee.value,
'new_price': op.value.gross
})
op.fee.value = op.value.gross
op.fee._calculate_tax()
op.fee.save()
fee.value = op.value.gross
fee._calculate_tax()
fee.save()
elif isinstance(op, self.PriceOperation):
position = position_cache.setdefault(op.position.pk, op.position)
self.order.log_action('pretix.event.order.changed.price', user=self.user, auth=self.auth, data={
'position': op.position.pk,
'positionid': op.position.positionid,
'old_price': op.position.price,
'addon_to': op.position.addon_to_id,
'position': position.pk,
'positionid': position.positionid,
'old_price': position.price,
'addon_to': position.addon_to_id,
'new_price': op.price.gross
})
op.position.price = op.price.gross
op.position.tax_rate = op.price.rate
op.position.tax_value = op.price.tax
op.position.tax_code = op.price.code
op.position.save()
position.price = op.price.gross
position.tax_rate = op.price.rate
position.tax_value = op.price.tax
position.tax_code = op.price.code
position.save(update_fields=['price', 'tax_rate', 'tax_value', 'tax_code'])
elif isinstance(op, self.TaxRuleOperation):
if isinstance(op.position, OrderPosition):
position = position_cache.setdefault(op.position.pk, op.position)
self.order.log_action('pretix.event.order.changed.tax_rule', user=self.user, auth=self.auth, data={
'position': op.position.pk,
'positionid': op.position.positionid,
'addon_to': op.position.addon_to_id,
'old_taxrule': op.position.tax_rule.pk if op.position.tax_rule else None,
'position': position.pk,
'positionid': position.positionid,
'addon_to': position.addon_to_id,
'old_taxrule': position.tax_rule.pk if position.tax_rule else None,
'new_taxrule': op.tax_rule.pk
})
position._calculate_tax(op.tax_rule)
position.save()
elif isinstance(op.position, OrderFee):
fee = fee_cache.setdefault(op.position.pk, op.position)
self.order.log_action('pretix.event.order.changed.tax_rule', user=self.user, auth=self.auth, data={
'fee': op.position.pk,
'fee_type': op.position.fee_type,
'old_taxrule': op.position.tax_rule.pk if op.position.tax_rule else None,
'fee': fee.pk,
'fee_type': fee.fee_type,
'old_taxrule': fee.tax_rule.pk if fee.tax_rule else None,
'new_taxrule': op.tax_rule.pk
})
op.position._calculate_tax(op.tax_rule)
op.position.save()
fee._calculate_tax(op.tax_rule)
fee.save()
elif isinstance(op, self.CancelFeeOperation):
fee = fee_cache.setdefault(op.fee.pk, op.fee)
self.order.log_action('pretix.event.order.changed.cancelfee', user=self.user, auth=self.auth, data={
'fee': op.fee.pk,
'fee_type': op.fee.fee_type,
'old_price': op.fee.value,
'fee': fee.pk,
'fee_type': fee.fee_type,
'old_price': fee.value,
})
op.fee.canceled = True
op.fee.save(update_fields=['canceled'])
fee.canceled = True
fee.save(update_fields=['canceled'])
elif isinstance(op, self.CancelOperation):
for gc in op.position.issued_gift_cards.all():
position = position_cache.setdefault(op.position.pk, op.position)
for gc in position.issued_gift_cards.all():
gc = GiftCard.objects.select_for_update(of=OF_SELF).get(pk=gc.pk)
if gc.value < op.position.price:
if gc.value < position.price:
raise OrderError(_(
'A position can not be canceled since the gift card {card} purchased in this order has '
'already been redeemed.').format(
card=gc.secret
))
else:
gc.transactions.create(value=-op.position.price, order=self.order, acceptor=self.order.event.organizer)
gc.transactions.create(value=-position.price, order=self.order, acceptor=self.order.event.organizer)
for m in op.position.granted_memberships.with_usages().all():
for m in position.granted_memberships.with_usages().all():
m.canceled = True
m.save()
for opa in op.position.addons.all():
for opa in position.addons.all():
opa = position_cache.setdefault(opa.pk, opa)
for gc in opa.issued_gift_cards.all():
gc = GiftCard.objects.select_for_update(of=OF_SELF).get(pk=gc.pk)
if gc.value < opa.position.price:
@@ -2385,22 +2408,22 @@ class OrderChangeManager:
)
opa.save(update_fields=['canceled', 'secret'])
self.order.log_action('pretix.event.order.changed.cancel', user=self.user, auth=self.auth, data={
'position': op.position.pk,
'positionid': op.position.positionid,
'old_item': op.position.item.pk,
'old_variation': op.position.variation.pk if op.position.variation else None,
'old_price': op.position.price,
'position': position.pk,
'positionid': position.positionid,
'old_item': position.item.pk,
'old_variation': position.variation.pk if position.variation else None,
'old_price': position.price,
'addon_to': None,
})
op.position.canceled = True
if op.position.voucher:
Voucher.objects.filter(pk=op.position.voucher.pk).update(redeemed=Greatest(0, F('redeemed') - 1))
position.canceled = True
if position.voucher:
Voucher.objects.filter(pk=position.voucher.pk).update(redeemed=Greatest(0, F('redeemed') - 1))
assign_ticket_secret(
event=self.event, position=op.position, force_invalidate_if_revokation_list_used=True, force_invalidate=False, save=False
event=self.event, position=position, force_invalidate_if_revokation_list_used=True, force_invalidate=False, save=False
)
if op.position in secret_dirty:
secret_dirty.remove(op.position)
op.position.save(update_fields=['canceled', 'secret'])
if position in secret_dirty:
secret_dirty.remove(position)
position.save(update_fields=['canceled', 'secret'])
elif isinstance(op, self.AddOperation):
pos = OrderPosition.objects.create(
item=op.item, variation=op.variation, addon_to=op.addon_to,
@@ -2425,13 +2448,28 @@ class OrderChangeManager:
'valid_until': op.valid_until.isoformat() if op.valid_until else None,
})
elif isinstance(op, self.SplitOperation):
split_positions.append(op.position)
position = position_cache.setdefault(op.position.pk, op.position)
split_positions.append(position)
elif isinstance(op, self.RegenerateSecretOperation):
op.position.web_secret = generate_secret()
op.position.save(update_fields=["web_secret"])
position = position_cache.setdefault(op.position.pk, op.position)
position.web_secret = generate_secret()
position.save(update_fields=["web_secret"])
assign_ticket_secret(
event=self.event, position=op.position, force_invalidate=True, save=True
event=self.event, position=position, force_invalidate=True, save=True
)
if position in secret_dirty:
secret_dirty.remove(position)
tickets.invalidate_cache.apply_async(kwargs={'event': self.event.pk,
'order': self.order.pk})
self.order.log_action('pretix.event.order.changed.secret', user=self.user, auth=self.auth, data={
'position': position.pk,
'positionid': position.positionid,
})
elif isinstance(op, self.ChangeSecretOperation):
if OrderPosition.all.filter(order__event=self.event, secret=op.new_secret).exists():
raise OrderError('You cannot assign a position secret that already exists.')
op.position.secret = op.new_secret
op.position.save(update_fields=["secret"])
if op.position in secret_dirty:
secret_dirty.remove(op.position)
tickets.invalidate_cache.apply_async(kwargs={'event': self.event.pk,
@@ -2441,64 +2479,68 @@ class OrderChangeManager:
'positionid': op.position.positionid,
})
elif isinstance(op, self.ChangeValidFromOperation):
position = position_cache.setdefault(op.position.pk, op.position)
self.order.log_action('pretix.event.order.changed.valid_from', user=self.user, auth=self.auth, data={
'position': op.position.pk,
'positionid': op.position.positionid,
'position': position.pk,
'positionid': position.positionid,
'new_value': op.valid_from.isoformat() if op.valid_from else None,
'old_value': op.position.valid_from.isoformat() if op.position.valid_from else None,
'old_value': position.valid_from.isoformat() if position.valid_from else None,
})
op.position.valid_from = op.valid_from
op.position.save(update_fields=['valid_from'])
secret_dirty.add(op.position)
position.valid_from = op.valid_from
position.save(update_fields=['valid_from'])
secret_dirty.add(position)
elif isinstance(op, self.ChangeValidUntilOperation):
position = position_cache.setdefault(op.position.pk, op.position)
self.order.log_action('pretix.event.order.changed.valid_until', user=self.user, auth=self.auth, data={
'position': op.position.pk,
'positionid': op.position.positionid,
'position': position.pk,
'positionid': position.positionid,
'new_value': op.valid_until.isoformat() if op.valid_until else None,
'old_value': op.position.valid_until.isoformat() if op.position.valid_until else None,
'old_value': position.valid_until.isoformat() if position.valid_until else None,
})
op.position.valid_until = op.valid_until
op.position.save(update_fields=['valid_until'])
secret_dirty.add(op.position)
position.valid_until = op.valid_until
position.save(update_fields=['valid_until'])
secret_dirty.add(position)
elif isinstance(op, self.AddBlockOperation):
position = position_cache.setdefault(op.position.pk, op.position)
self.order.log_action('pretix.event.order.changed.add_block', user=self.user, auth=self.auth, data={
'position': op.position.pk,
'positionid': op.position.positionid,
'position': position.pk,
'positionid': position.positionid,
'block_name': op.block_name,
})
if op.position.blocked:
if op.block_name not in op.position.blocked:
op.position.blocked = op.position.blocked + [op.block_name]
if position.blocked:
if op.block_name not in position.blocked:
position.blocked = position.blocked + [op.block_name]
else:
op.position.blocked = [op.block_name]
position.blocked = [op.block_name]
if op.ignore_from_quota_while_blocked is not None:
op.position.ignore_from_quota_while_blocked = op.ignore_from_quota_while_blocked
op.position.save(update_fields=['blocked', 'ignore_from_quota_while_blocked'])
if op.position.blocked:
op.position.blocked_secrets.update_or_create(
position.ignore_from_quota_while_blocked = op.ignore_from_quota_while_blocked
position.save(update_fields=['blocked', 'ignore_from_quota_while_blocked'])
if position.blocked:
position.blocked_secrets.update_or_create(
event=self.event,
secret=op.position.secret,
secret=position.secret,
defaults={
'blocked': True,
'updated': now(),
}
)
elif isinstance(op, self.RemoveBlockOperation):
position = position_cache.setdefault(op.position.pk, op.position)
self.order.log_action('pretix.event.order.changed.remove_block', user=self.user, auth=self.auth, data={
'position': op.position.pk,
'positionid': op.position.positionid,
'position': position.pk,
'positionid': position.positionid,
'block_name': op.block_name,
})
if op.position.blocked and op.block_name in op.position.blocked:
op.position.blocked = [b for b in op.position.blocked if b != op.block_name]
if not op.position.blocked:
op.position.blocked = None
if position.blocked and op.block_name in position.blocked:
position.blocked = [b for b in position.blocked if b != op.block_name]
if not position.blocked:
position.blocked = None
if op.ignore_from_quota_while_blocked is not None:
op.position.ignore_from_quota_while_blocked = op.ignore_from_quota_while_blocked
op.position.save(update_fields=['blocked', 'ignore_from_quota_while_blocked'])
if not op.position.blocked:
position.ignore_from_quota_while_blocked = op.ignore_from_quota_while_blocked
position.save(update_fields=['blocked', 'ignore_from_quota_while_blocked'])
if not position.blocked:
try:
bs = op.position.blocked_secrets.get(secret=op.position.secret)
bs = position.blocked_secrets.get(secret=position.secret)
bs.blocked = False
bs.save()
except BlockedTicketSecret.DoesNotExist:
@@ -2726,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'])
+8 -5
View File
@@ -21,6 +21,7 @@
#
import re
from collections import defaultdict
from datetime import datetime
from decimal import Decimal
from typing import List, Optional, Tuple, Union
@@ -162,14 +163,14 @@ def get_line_price(price_after_voucher: Decimal, custom_price_input: Decimal, cu
def apply_discounts(event: Event, sales_channel: Union[str, SalesChannel],
positions: List[Tuple[int, Optional[int], Decimal, bool, bool, Decimal]],
positions: List[Tuple[int, Optional[int], Optional[datetime], Decimal, bool, bool, Decimal]],
collect_potential_discounts: Optional[defaultdict]=None) -> List[Tuple[Decimal, Optional[Discount]]]:
"""
Applies any dynamic discounts to a cart
:param event: Event the cart belongs to
:param sales_channel: Sales channel the cart was created with
:param positions: Tuple of the form ``(item_id, subevent_id, line_price_gross, is_addon_to, is_bundled, voucher_discount)``
:param positions: Tuple of the form ``(item_id, subevent_id, subevent_date_from, line_price_gross, is_addon_to, is_bundled, voucher_discount)``
:param collect_potential_discounts: If a `defaultdict(list)` is supplied, all discounts that could be applied to the cart
based on the "consumed" items, but lack matching "benefitting" items will be collected therein.
The dict will contain a mapping from index in the `positions` list of the item that could be consumed, to a list
@@ -191,12 +192,14 @@ def apply_discounts(event: Event, sales_channel: Union[str, SalesChannel],
).prefetch_related('condition_limit_products', 'benefit_limit_products').order_by('position', 'pk')
for discount in discount_qs:
result = discount.apply({
idx: PositionInfo(item_id, subevent_id, line_price_gross, is_addon_to, voucher_discount)
for idx, (item_id, subevent_id, line_price_gross, is_addon_to, is_bundled, voucher_discount) in enumerate(positions)
idx: PositionInfo(item_id, subevent_id, subevent_date_from, line_price_gross, is_addon_to, voucher_discount)
for
idx, (item_id, subevent_id, subevent_date_from, line_price_gross, is_addon_to, is_bundled, voucher_discount)
in enumerate(positions)
if not is_bundled and idx not in new_prices
}, collect_potential_discounts)
for k in result.keys():
result[k] = (result[k], discount)
new_prices.update(result)
return [new_prices.get(idx, (p[2], None)) for idx, p in enumerate(positions)]
return [new_prices.get(idx, (p[3], None)) for idx, p in enumerate(positions)]
+2 -2
View File
@@ -134,13 +134,13 @@ def order_overview(
qs = qs.filter(item__admission=True)
items = items.filter(admission=True)
if date_from and isinstance(date_from, date):
if date_from and isinstance(date_from, date) and not isinstance(date_from, datetime):
date_from = make_aware(datetime.combine(
date_from,
time(hour=0, minute=0, second=0, microsecond=0)
), event.timezone)
if date_until and isinstance(date_until, date):
if date_until and isinstance(date_until, date) and not isinstance(date_until, datetime):
date_until = make_aware(datetime.combine(
date_until + timedelta(days=1),
time(hour=0, minute=0, second=0, microsecond=0)
+3
View File
@@ -62,6 +62,9 @@ class VATIDTemporaryError(VATIDError):
def _validate_vat_id_NO(vat_id, country_code):
# Inspired by vat_moss library
if not vat_id.startswith("NO"):
# prefix is not usually used in Norway, but expected by vat_moss library
vat_id = "NO" + vat_id
try:
vat_id = vat_moss.id.normalize(vat_id)
except ValueError:
+47 -8
View File
@@ -71,6 +71,7 @@ from pretix.base.reldate import (
RelativeDateField, RelativeDateTimeField, RelativeDateWrapper,
SerializerRelativeDateField, SerializerRelativeDateTimeField,
)
from pretix.base.validators import multimail_validate
from pretix.control.forms import (
ExtFileField, FontSelect, MultipleLanguagesWidget, SingleLanguageWidget,
)
@@ -1233,14 +1234,18 @@ DEFAULTS = {
'invoice_email_organizer': {
'default': '',
'type': str,
'form_class': forms.EmailField,
'serializer_class': serializers.EmailField,
'form_class': forms.CharField,
'serializer_class': serializers.CharField,
'form_kwargs': dict(
label=_("Email address to receive a copy of each invoice"),
help_text=_("Each newly created invoice will be sent to this email address shortly after creation. You can "
"use this for an automated import of invoices to your accounting system. The invoice will be "
"the only attachment of the email."),
)
validators=[multimail_validate],
),
'serializer_kwargs': dict(
validators=[multimail_validate],
),
},
'show_items_outside_presale_period': {
'default': 'True',
@@ -2058,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,
@@ -2778,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,
@@ -2883,7 +2920,8 @@ Your {organizer} team""")) # noqa: W291
ext_whitelist=settings.FILE_UPLOAD_EXTENSIONS_IMAGE,
max_size=settings.FILE_UPLOAD_MAX_SIZE_IMAGE,
help_text=_('If you provide a logo image, we will by default not show your event name and date '
'in the page header. By default, we show your logo with a size of up to 1140x120 pixels. You '
'in the page header. If you use a white background, we show your logo with a size of up '
'to 1140x120 pixels. Otherwise the maximum size is 1120x120 pixels. You '
'can increase the size with the setting below. We recommend not using small details on the picture '
'as it will be resized on smaller screens.')
),
@@ -2913,7 +2951,7 @@ Your {organizer} team""")) # noqa: W291
'serializer_class': serializers.BooleanField,
'form_kwargs': dict(
label=_('Show event title even if a header image is present'),
help_text=_('The title will only be shown on the event front page. If no header image is uploaded for the event, but the header image '
help_text=_('If no header image is uploaded for the event, but the header image '
'from the organizer profile is used, this option will be ignored and the event title will always be shown.'),
)
},
@@ -2926,7 +2964,8 @@ Your {organizer} team""")) # noqa: W291
ext_whitelist=settings.FILE_UPLOAD_EXTENSIONS_IMAGE,
max_size=settings.FILE_UPLOAD_MAX_SIZE_IMAGE,
help_text=_('If you provide a logo image, we will by default not show your organization name '
'in the page header. By default, we show your logo with a size of up to 1140x120 pixels. You '
'in the page header. If you use a white background, we show your logo with a size of up '
'to 1140x120 pixels. Otherwise the maximum size is 1120x120 pixels. You '
'can increase the size with the setting below. We recommend not using small details on the picture '
'as it will be resized on smaller screens.')
),
@@ -3705,7 +3744,7 @@ COUNTRIES_WITH_STATE_IN_ADDRESS = {
# are actually *used* in postal addresses. This is obviously not complete and opinionated.
# Country: [(List of subdivision types as defined by pycountry), (short or long form to be used)]
'AU': (['State', 'Territory'], 'short'),
'BR': (['State'], 'short'),
'BR': (['Federal district', 'State'], 'short'),
'CA': (['Province', 'Territory'], 'short'),
# 'CN': (['Province', 'Autonomous region', 'Munincipality'], 'long'),
'JP': (['Prefecture'], 'long'),
-1
View File
@@ -46,7 +46,6 @@ app_cache = {}
def _populate_app_cache():
global app_cache
apps.check_apps_ready()
for ac in apps.app_configs.values():
app_cache[ac.name] = ac
+6
View File
@@ -0,0 +1,6 @@
{% load i18n %}
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="14" viewBox="0 0 18 14"
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>
@@ -4,7 +4,7 @@
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=false">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style type="text/css">
body {
background-color: #eee;
+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)
+1
View File
@@ -73,6 +73,7 @@ class EventSlugBanlistValidator(BanlistValidator):
'customer',
'account',
'lead',
'accessibility',
]
+1 -1
View File
@@ -80,4 +80,4 @@ def serve_metrics(request):
content = "\n".join(output) + "\n"
return HttpResponse(content)
return HttpResponse(content, content_type="text/plain;version=1.0.0;escaping=allow-utf-8")
+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({
+6
View File
@@ -45,6 +45,8 @@ class DiscountForm(I18nModelForm):
'limit_sales_channels',
'available_from',
'available_until',
'subevent_date_from',
'subevent_date_until',
'subevent_mode',
'condition_all_products',
'condition_limit_products',
@@ -62,6 +64,8 @@ class DiscountForm(I18nModelForm):
field_classes = {
'available_from': SplitDateTimeField,
'available_until': SplitDateTimeField,
'subevent_date_from': SplitDateTimeField,
'subevent_date_until': SplitDateTimeField,
'condition_limit_products': ItemMultipleChoiceField,
'benefit_limit_products': ItemMultipleChoiceField,
'limit_sales_channels': SafeModelMultipleChoiceField,
@@ -70,6 +74,8 @@ class DiscountForm(I18nModelForm):
'subevent_mode': forms.RadioSelect,
'available_from': SplitDateTimePickerWidget(),
'available_until': SplitDateTimePickerWidget(attrs={'data-date-after': '#id_available_from_0'}),
'subevent_date_from': SplitDateTimePickerWidget(),
'subevent_date_until': SplitDateTimePickerWidget(attrs={'data-date-after': '#id_subevent_date_from_0'}),
'condition_limit_products': forms.CheckboxSelectMultiple(attrs={
'data-inverse-dependency': '<[name$=all_products]',
'class': 'scrolling-multiple-choice',
+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',
+1 -1
View File
@@ -267,7 +267,7 @@ class OrderFilterForm(FilterForm):
Q(invoice_no__in=invoice_nos)
| Q(full_invoice_no__iexact=u)
).values_list('order_id', flat=True)
matching_positions = OrderPosition.objects.filter(
matching_positions = OrderPosition.all.filter(
Q(
Q(attendee_name_cached__icontains=u) | Q(attendee_email__icontains=u)
| Q(company__icontains=u)
+5 -1
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',
@@ -522,7 +525,8 @@ class OrganizerSettingsForm(SettingsForm):
max_size=settings.FILE_UPLOAD_MAX_SIZE_IMAGE,
required=False,
help_text=_('If you provide a logo image, we will by default not show your organization name '
'in the page header. By default, we show your logo with a size of up to 1140x120 pixels. You '
'in the page header. If you use a white background, we show your logo with a size of up '
'to 1140x120 pixels. Otherwise the maximum size is 1120x120 pixels. You '
'can increase the size with the setting below. We recommend not using small details on the picture '
'as it will be resized on smaller screens.')
)
+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()
@@ -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>
@@ -85,7 +85,7 @@
<div class="checkbox">
<label>
<input type="checkbox" name="delete" value="yes" />
<b>{% trans "Permanently delete all orders created in test mode" %}</b>
<strong>{% trans "Permanently delete all orders created in test mode" %}</strong>
</label>
</div>
<div class="text-right">
@@ -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>
@@ -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;
@@ -110,23 +110,26 @@
{% if not hide_orga %}<td>{{ e.organizer }}</td>{% endif %}
<td class="event-date-col">
{% if e.has_subevents %}
{{ e.min_from|default_if_none:""|date:"SHORT_DATETIME_FORMAT" }}
<span class="fa fa-fw- fa-calendar"></span>
{% trans "Event series" %}
<br>
<span class="text-muted">
{% if e.min_from %}
{{ e.min_from|date:"SHORT_DATETIME_FORMAT" }} <br>
{{ e.max_fromto|default_if_none:e.max_to|default_if_none:e.max_from|date:"SHORT_DATETIME_FORMAT" }}
{% else %}
{% trans "No dates" context "subevent" %}
{% endif %}
</span>
{% else %}
{{ e.get_short_date_from_display }}
{% endif %}
{% if e.has_subevents %}
<span class="label label-default">{% trans "Series" %}</span>
{% endif %}
{% if e.settings.show_date_to and e.date_to %}
<br>
{% if e.has_subevents %}
{{ e.max_fromto|default_if_none:e.max_from|default_if_none:e.max_to|default_if_none:""|date:"SHORT_DATETIME_FORMAT" }}
{% else %}
{% if e.settings.show_date_to and e.date_to %}
<br>
{{ e.get_short_date_to_display }}
{% endif %}
{% endif %}
{% if e.settings.timezone != request.timezone %}
<span class="fa fa-globe text-muted" data-toggle="tooltip" title="{{ e.timezone }}"></span>
<span class="fa fa-globe text-muted" data-toggle="tooltip" title="{{ e.tzname }}"></span>
{% endif %}
</td>
<td>
@@ -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' %}
@@ -40,6 +40,10 @@
<tr data-dnd-id="{{ c.id }}">
<td>
<strong><a href="{% url "control:event.items.categories.edit" organizer=request.event.organizer.slug event=request.event.slug category=c.id %}">{{ c.internal_name|default:c.name }}</a></strong>
<br>
<small class="text-muted">
#{{ c.pk }}
</small>
</td>
<td>
{{ c.get_category_type_display }}
@@ -26,6 +26,8 @@
{% bootstrap_field form.condition_ignore_voucher_discounted layout="control" %}
{% if form.subevent_mode %}
{% bootstrap_field form.subevent_mode layout="control" %}
{% bootstrap_field form.subevent_date_from layout="control" %}
{% bootstrap_field form.subevent_date_until layout="control" %}
{% endif %}
<div class="form-group form-alternatives">
<label class="col-md-3 control-label">
@@ -40,6 +40,7 @@
<th class="iconcol"></th>
<th class="iconcol"></th>
<th class="iconcol"></th>
<th class="iconcol"></th>
<th class="text-right flip">{% trans "Default price" %}</th>
<th class="action-col-2"><span class="sr-only">Edit</span></th>
</tr>
@@ -111,6 +112,14 @@
<span class="fa fa-bars fa-fw text-muted" data-toggle="tooltip" title="{% trans "Product with variations" %}"></span>
{% endif %}
</td>
<td>
{% if i.requires_seat %}
<span data-toggle="tooltip"
title="{% if request.event.has_subevents %}{% trans "Product assigned to seating plan for one or more dates" context "subevent" %}{% else %}{% trans "Product assigned to seating plan" %}{% endif %}">
{% include "icons/seat.svg" with cls="svg-icon text-muted" %}
</span>
{% endif %}
</td>
<td>
{% if i.category.is_addon %}
<span class="fa fa-plus-square fa-fw text-muted" data-toggle="tooltip"
@@ -413,10 +413,7 @@
{% endif %}
{% if line.seat %}
<br />
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="14" viewBox="0 0 4.7624999 3.7041668" class="svg-icon">
<path
d="m 1.9592032,1.8522629e-4 c -0.21468,0 -0.38861,0.17394000371 -0.38861,0.38861000371 0,0.21466 0.17393,0.38861 0.38861,0.38861 0.21468,0 0.3886001,-0.17395 0.3886001,-0.38861 0,-0.21467 -0.1739201,-0.38861000371 -0.3886001,-0.38861000371 z m 0.1049,0.84543000371 c -0.20823,-0.0326 -0.44367,0.12499 -0.39998,0.40462997 l 0.20361,1.01854 c 0.0306,0.15316 0.15301,0.28732 0.3483,0.28732 h 0.8376701 v 0.92708 c 0,0.29313 0.41187,0.29447 0.41187,0.005 v -1.19115 c 0,-0.14168 -0.0995,-0.29507 -0.29094,-0.29507 l -0.65578,-10e-4 -0.1757,-0.87644 C 2.3042533,0.95300523 2.1890432,0.86500523 2.0641032,0.84547523 Z m -0.58549,0.44906997 c -0.0946,-0.0134 -0.20202,0.0625 -0.17829,0.19172 l 0.18759,0.91054 c 0.0763,0.33956 0.36802,0.55914 0.66042,0.55914 h 0.6015201 c 0.21356,0 0.21448,-0.32143 -0.003,-0.32143 H 2.1954632 c -0.19911,0 -0.36364,-0.11898 -0.41341,-0.34107 l -0.17777,-0.87126 c -0.0165,-0.0794 -0.0688,-0.11963 -0.12557,-0.12764 z"/>
</svg>
{% include "icons/seat.svg" with cls="svg-icon" %}
{{ line.seat }}
{% endif %}
{% if line.voucher %}
@@ -86,23 +86,26 @@
</td>
<td>
{% if e.has_subevents %}
{{ e.min_from|default_if_none:""|date:"SHORT_DATETIME_FORMAT" }}
<span class="fa fa-fw- fa-calendar"></span>
{% trans "Event series" %}
<br>
<span class="text-muted">
{% if e.min_from %}
{{ e.min_from|date:"SHORT_DATETIME_FORMAT" }} <br>
{{ e.max_fromto|default_if_none:e.max_to|default_if_none:e.max_from|date:"SHORT_DATETIME_FORMAT" }}
{% else %}
{% trans "No dates" context "subevent" %}
{% endif %}
</span>
{% else %}
{{ e.get_short_date_from_display }}
{% endif %}
{% if e.has_subevents %}
<span class="label label-default">{% trans "Series" %}</span>
{% endif %}
{% if e.settings.show_date_to and e.date_to %}
<br>
{% if e.has_subevents %}
{{ e.max_fromto|default_if_none:e.max_from|default_if_none:e.max_to|default_if_none:""|date:"SHORT_DATETIME_FORMAT" }}
{% else %}
{% if e.settings.show_date_to and e.date_to %}
<br>
{{ e.get_short_date_to_display }}
{% endif %}
{% endif %}
{% if e.settings.timezone != request.timezone %}
<span class="fa fa-globe text-muted" data-toggle="tooltip" title="{{ e.timezone }}"></span>
<span class="fa fa-globe text-muted" data-toggle="tooltip" title="{{ e.tzname }}"></span>
{% endif %}
</td>
<td>
@@ -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" %}
@@ -182,8 +182,54 @@
</div>
</div>
{% endif %}
<div class="row control-group pdf-info">
<div class="col-sm-12">
<label for="pdf-info-locale">{% trans "Preferred language" %}</label><br>
<select class="form-control" id="pdf-info-locale">
<option value="">{% trans "Order locale" %}</option>
{% for l in locales %}
<option value="{{ l.0 }}">{{ l.1 }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="row control-group pdf-info">
<hr/>
<div class="col-sm-12">
<label>{% trans "Upload PDF as background" %}</label>
<p class="text-muted">
{% blocktrans trimmed %}
You can upload a PDF to use as a custom background.
The paper size will match the PDF.
{% endblocktrans %}
</p>
<p>
<span class="btn btn-default fileinput-button background-button btn-block">
<i class="fa fa-upload"></i>
<span>{% trans "Upload PDF as background" %}</span>
<input id="fileupload" type="file" name="background" accept="application/pdf">
</span>
</p>
<p class="text-center">
<a class="btn btn-link background-download-button" href="{{ pdf }}" target="_blank">
<i class="fa fa-download"></i>
<span class="small">{% trans "Download current background" %}</span>
</a>
</p>
</div>
</div>
<div class="row control-group pdf-info">
<div class="col-sm-12">
<label>{% trans "Or choose custom paper size" %}</label>
<p class="text-muted">
{% blocktrans trimmed %}
To manually change the paper size, you need to create a new, empty background.
{% endblocktrans %}
</p>
</div>
</div>
<div class="row control-group pdf-info">
<div class="col-sm-6">
<label for="pdf-info-width">{% trans "Width (mm)" %}</label><br>
<input type="number" id="pdf-info-width" class="input-block-level form-control">
@@ -195,45 +241,12 @@
</div>
<div class="row control-group pdf-info">
<div class="col-sm-12">
<label>{% trans "Background PDF" %}</label><br>
<p>
<button class="btn btn-default background-button" id="pdf-empty">
<button class="btn btn-default background-button btn-block" id="pdf-empty">
<i class="fa fa-file-o"></i>
{% trans "Create empty background" %}
</button>
</p>
<span class="btn btn-default fileinput-button background-button">
<i class="fa fa-upload"></i>
<span>{% trans "Upload custom background" %}</span>
<input id="fileupload" type="file" name="background" accept="application/pdf">
</span>
</div>
<div class="col-sm-12 help-inline">
<p>
{% blocktrans trimmed %}
After you changed the page size, you need to create a new empty background. If you
want to use a custom background, it already needs to have the correct size.
{% endblocktrans %}
</p>
</div>
<div class="col-sm-12">
<p>
<a class="btn btn-default background-download-button" href="{{ pdf }}" target="_blank">
<i class="fa fa-download"></i>
<span>{% trans "Download current background" %}</span>
</a>
</p>
</div>
</div>
<div class="row control-group pdf-info">
<hr/>
<div class="col-sm-12">
<label for="pdf-info-locale">{% trans "Preferred language" %}</label><br>
<select class="form-control" id="pdf-info-locale">
<option value="">{% trans "Order locale" %}</option>
{% for l in locales %}
<option value="{{ l.0 }}">{{ l.1 }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="row control-group poweredby">
@@ -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)
+8 -2
View File
@@ -65,7 +65,7 @@ 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, Voucher,
QuestionAnswer, QuestionOption, Quota, SeatCategoryMapping, Voucher,
)
from pretix.base.models.event import SubEvent
from pretix.base.models.items import ItemAddOn, ItemBundle, ItemMetaValue
@@ -101,10 +101,16 @@ class ItemList(ListView):
template_name = 'pretixcontrol/items/index.html'
def get_queryset(self):
requires_seat = Exists(
SeatCategoryMapping.objects.filter(
product_id=OuterRef('pk'),
)
)
return Item.objects.filter(
event=self.request.event
).select_related("tax_rule").annotate(
var_count=Count('variations')
var_count=Count('variations'),
requires_seat=requires_seat,
).prefetch_related("category", "limit_sales_channels").order_by(
F('category__position').asc(nulls_first=True),
'category', 'position'
+2 -2
View File
@@ -81,9 +81,9 @@ class EventList(PaginationMixin, ListView):
max_to=Max('subevents__date_to'),
max_fromto=Greatest(Max('subevents__date_to'), Max('subevents__date_from'))
).annotate(
order_from=Coalesce('min_from', 'date_from'),
order_from=Coalesce('max_from', 'date_from'),
order_to=Coalesce('max_fromto', 'max_to', 'max_from', 'date_to', 'date_from'),
)
).order_by("-order_from")
qs = qs.prefetch_related(
Prefetch('quotas',
+10 -5
View File
@@ -44,7 +44,9 @@ import dateutil
from django import forms
from django.conf import settings
from django.contrib import messages
from django.core.exceptions import PermissionDenied, ValidationError
from django.core.exceptions import (
BadRequest, PermissionDenied, ValidationError,
)
from django.core.files import File
from django.db import transaction
from django.db.models import (
@@ -204,9 +206,9 @@ class OrganizerDetail(OrganizerDetailViewMixin, OrganizerPermissionRequiredMixin
max_to=Max('subevents__date_to'),
max_fromto=Greatest(Max('subevents__date_to'), Max('subevents__date_from'))
).annotate(
order_from=Coalesce('min_from', 'date_from'),
order_from=Coalesce('max_from', 'date_from'),
order_to=Coalesce('max_fromto', 'max_to', 'max_from', 'date_to', 'date_from'),
)
).order_by("-order_from")
if self.filter_form.is_valid():
qs = self.filter_form.filter_qs(qs)
return qs
@@ -944,13 +946,16 @@ class DeviceQueryMixin:
qs = self.request.organizer.devices.prefetch_related(
'limit_events', 'gate',
).order_by('revoked', '-device_id')
if self.filter_form.is_valid():
qs = self.filter_form.filter_qs(qs)
if 'device' in self.request_data and '__ALL' not in self.request_data:
qs = qs.filter(
id__in=self.request_data.getlist('device')
)
elif self.request.method == 'GET' or '__ALL' in self.request_data:
if self.filter_form.is_valid():
qs = self.filter_form.filter_qs(qs)
else:
raise BadRequest("No devices selected")
return qs
+8 -17
View File
@@ -37,12 +37,12 @@ from zoneinfo import ZoneInfo
from dateutil.parser import parse
from django.core.exceptions import PermissionDenied
from django.db.models import F, Max, Min, Q
from django.db.models import Count, F, Max, Min, Q
from django.db.models.functions import Coalesce, Greatest
from django.http import JsonResponse
from django.shortcuts import get_object_or_404
from django.urls import reverse
from django.utils.formats import date_format, get_format
from django.utils.formats import date_format
from django.utils.timezone import make_aware
from django.utils.translation import gettext as _, pgettext
@@ -56,7 +56,7 @@ from pretix.control.permissions import (
event_permission_required, organizer_permission_required,
)
from pretix.helpers.daterange import daterange
from pretix.helpers.i18n import i18ncomp
from pretix.helpers.i18n import i18ncomp, parse_date_localized
def serialize_user(u):
@@ -326,6 +326,9 @@ def nav_context_list(request):
qs_orga = Organizer.objects.filter(pk__in=request.user.teams.values_list('organizer', flat=True))
if query:
qs_orga = qs_orga.filter(Q(name__icontains=query) | Q(slug__icontains=query))
qs_orga = qs_orga.annotate(
n_events=Count("events")
).order_by("-n_events")
if query and len(query) >= 3:
qs_orders = Order.objects.filter(
@@ -405,13 +408,7 @@ def subevent_select2(request, **kwargs):
qf = Q(name__icontains=i18ncomp(query)) | Q(location__icontains=query)
tz = request.event.timezone
dt = None
for f in get_format('DATE_INPUT_FORMATS'):
try:
dt = datetime.strptime(query, f)
break
except (ValueError, TypeError):
continue
dt = parse_date_localized(query)
if dt:
dt_start = make_aware(datetime.combine(dt.date(), time(hour=0, minute=0, second=0)), tz)
@@ -455,13 +452,7 @@ def quotas_select2(request, **kwargs):
qf = Q(name__icontains=query) | Q(subevent__name__icontains=i18ncomp(query))
tz = request.event.timezone
dt = None
for f in get_format('DATE_INPUT_FORMATS'):
try:
dt = datetime.strptime(query, f)
break
except (ValueError, TypeError):
continue
dt = parse_date_localized(query)
if dt and request.event.has_subevents:
dt_start = make_aware(datetime.combine(dt.date(), time(hour=0, minute=0, second=0)), tz)
+26 -11
View File
@@ -33,7 +33,10 @@
# License for the specific language governing permissions and limitations under the License.
from django.utils.html import format_html
from django.utils.translation import get_language, gettext_lazy as _
from django.utils.safestring import mark_safe
from django.utils.translation import (
get_language, gettext_lazy as _, pgettext_lazy,
)
from pretix.helpers.templatetags.date_fast import date_fast as _date
@@ -48,23 +51,28 @@ def daterange(df, dt, as_html=False):
else:
if as_html:
base_format = format_html("<time datetime=\"{}\">{{}}</time>{{}}<time datetime=\"{}\">{{}}</time>", _date(df, "Y-m-d"), _date(dt, "Y-m-d"))
until = format_html(
" <span aria-hidden=\"true\"></span><span class=\"sr-only\"> {until} </span> ",
until=pgettext_lazy("timerange", "until")
)
else:
base_format = "{}{}{}"
until = " "
if lng.startswith("de"):
if df.year == dt.year and df.month == dt.month and df.day == dt.day:
return format_html(base_format, _date(df, "D, j. F Y"))
elif df.year == dt.year and df.month == dt.month:
return format_html(base_format, _date(df, "j."), "", _date(dt, "j. F Y"))
return format_html(base_format, _date(df, "j."), mark_safe(until.strip()), _date(dt, "j. F Y"))
elif df.year == dt.year:
return format_html(base_format, _date(df, "j. F"), " ", _date(dt, "j. F Y"))
return format_html(base_format, _date(df, "j. F"), until, _date(dt, "j. F Y"))
elif lng.startswith("en"):
if df.year == dt.year and df.month == dt.month and df.day == dt.day:
return format_html(base_format, _date(df, "D, N jS, Y"))
elif df.year == dt.year and df.month == dt.month:
return format_html(base_format, _date(df, "N jS"), " ", _date(dt, "jS, Y"))
return format_html(base_format, _date(df, "N jS"), until, _date(dt, "jS, Y"))
elif df.year == dt.year:
return format_html(base_format, _date(df, "N jS"), " ", _date(dt, "N jS, Y"))
return format_html(base_format, _date(df, "N jS"), until, _date(dt, "N jS, Y"))
elif lng.startswith("es"):
if df.year == dt.year and df.month == dt.month and df.day == dt.day:
return format_html(base_format, _date(df, "DATE_FORMAT"))
@@ -72,14 +80,14 @@ def daterange(df, dt, as_html=False):
return format_html(
base_format,
_date(df, "j"),
" - ",
until,
"{} de {} de {}".format(_date(dt, "j"), _date(dt, "F"), _date(dt, "Y"))
)
elif df.year == dt.year:
return format_html(
base_format,
"{} de {}".format(_date(df, "j"), _date(df, "F")),
" - ",
until,
"{} de {} de {}".format(_date(dt, "j"), _date(dt, "F"), _date(dt, "Y"))
)
@@ -89,24 +97,31 @@ def daterange(df, dt, as_html=False):
if as_html:
base_format = "<time datetime=\"{}\">{}</time>"
return format_html(
"{date_from} {date_to}",
"{date_from}{until}{date_to}",
date_from=format_html(base_format, _date(df, "Y-m-d"), _date(df, "DATE_FORMAT")),
date_to=format_html(base_format, _date(dt, "Y-m-d"), _date(dt, "DATE_FORMAT")),
until=until,
)
return _("{date_from} {date_to}").format(
return _("{date_from}{until}{date_to}").format(
date_from=_date(df, "DATE_FORMAT"),
date_to=_date(dt, "DATE_FORMAT"),
until=until,
)
def datetimerange(df, dt, as_html=False):
if as_html:
base_format = format_html("<time datetime=\"{}\">{{}}</time>{{}}<time datetime=\"{}\">{{}}</time>", _date(df, "Y-m-d H:i"), _date(dt, "Y-m-d H:i"))
until = format_html(
" <span aria-hidden=\"true\"></span><span class=\"sr-only\"> {until} </span> ",
until=pgettext_lazy("timerange", "until")
)
else:
base_format = "{}{}{}"
until = " "
if df.year == dt.year and df.month == dt.month and df.day == dt.day:
return format_html(base_format, _date(df, "SHORT_DATE_FORMAT") + " " + _date(df, "TIME_FORMAT"), " ", _date(dt, "TIME_FORMAT"))
return format_html(base_format, _date(df, "SHORT_DATE_FORMAT") + " " + _date(df, "TIME_FORMAT"), until, _date(dt, "TIME_FORMAT"))
else:
return format_html(base_format, _date(df, "SHORT_DATETIME_FORMAT"), " ", _date(dt, "SHORT_DATETIME_FORMAT"))
return format_html(base_format, _date(df, "SHORT_DATETIME_FORMAT"), until, _date(dt, "SHORT_DATETIME_FORMAT"))
+14
View File
@@ -23,7 +23,9 @@ import gettext as gettext_module
import json
import os
import re
from datetime import datetime
from functools import lru_cache
from typing import Optional
from django.apps import apps
from django.conf import settings
@@ -222,3 +224,15 @@ def get_language_score(locale):
else:
score = len(list(catalog.items())) or 1
return score
def parse_date_localized(date_str) -> Optional[datetime]:
"""Parses a date according to the localized date input formats. Returns None if invalid."""
dt = None
for f in get_format('DATE_INPUT_FORMATS'):
try:
dt = datetime.strptime(date_str, f)
break
except (ValueError, TypeError):
continue
return dt
@@ -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")
+3 -3
View File
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="14" viewBox="0 0 4.7624999 3.7041668">
<path
d="m 1.9592032,1.8522629e-4 c -0.21468,0 -0.38861,0.17394000371 -0.38861,0.38861000371 0,0.21466 0.17393,0.38861 0.38861,0.38861 0.21468,0 0.3886001,-0.17395 0.3886001,-0.38861 0,-0.21467 -0.1739201,-0.38861000371 -0.3886001,-0.38861000371 z m 0.1049,0.84543000371 c -0.20823,-0.0326 -0.44367,0.12499 -0.39998,0.40462997 l 0.20361,1.01854 c 0.0306,0.15316 0.15301,0.28732 0.3483,0.28732 h 0.8376701 v 0.92708 c 0,0.29313 0.41187,0.29447 0.41187,0.005 v -1.19115 c 0,-0.14168 -0.0995,-0.29507 -0.29094,-0.29507 l -0.65578,-10e-4 -0.1757,-0.87644 C 2.3042533,0.95300523 2.1890432,0.86500523 2.0641032,0.84547523 Z m -0.58549,0.44906997 c -0.0946,-0.0134 -0.20202,0.0625 -0.17829,0.19172 l 0.18759,0.91054 c 0.0763,0.33956 0.36802,0.55914 0.66042,0.55914 h 0.6015201 c 0.21356,0 0.21448,-0.32143 -0.003,-0.32143 H 2.1954632 c -0.19911,0 -0.36364,-0.11898 -0.41341,-0.34107 l -0.17777,-0.87126 c -0.0165,-0.0794 -0.0688,-0.11963 -0.12557,-0.12764 z"/>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="14" viewBox="0 0 18 14">
<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: 1.1 KiB

After

Width:  |  Height:  |  Size: 668 B

File diff suppressed because it is too large Load Diff
+299 -148
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-25 15:46+0000\n"
"POT-Creation-Date: 2025-05-30 10:36+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -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:92
msgid "Continue"
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 ""
@@ -583,16 +589,16 @@ msgstr ""
msgid "Ticket design"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1259
#: pretix/static/pretixcontrol/js/ui/editor.js:1258
msgid "Saving failed."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1328
#: pretix/static/pretixcontrol/js/ui/editor.js:1379
#: pretix/static/pretixcontrol/js/ui/editor.js:1327
#: pretix/static/pretixcontrol/js/ui/editor.js:1378
msgid "Error while uploading your PDF file, please try again."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1362
#: pretix/static/pretixcontrol/js/ui/editor.js:1361
msgid "Do you really want to leave the editor without saving your changes?"
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:318
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:322
msgid "Your color has decent contrast and is probably good-enough to read!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:326
#: 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:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
#: 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:460
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:461
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:465
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:808
#: pretix/static/pretixcontrol/js/ui/main.js:782
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:811
#: pretix/static/pretixcontrol/js/ui/main.js:785
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:969
#: pretix/static/pretixcontrol/js/ui/main.js:943
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1009
#: pretix/static/pretixcontrol/js/ui/main.js:983
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1090
#: pretix/static/pretixcontrol/js/ui/main.js:1064
msgid "You have unsaved changes!"
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:48
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:50
msgid "Cart expired"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:59
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Your cart is about to expire."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:64
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:203
#: pretix/static/pretixpresale/js/ui/cart.js:86
msgid "Your cart has expired."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:89
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:90
msgid "Do you want to renew the reservation period?"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:93
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:211
#: pretix/static/pretixpresale/js/ui/main.js:202
msgid "You get %(currency)s %(amount)s back"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:227
#: 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:445
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:497
msgid "required"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:541
#: pretix/static/pretixpresale/js/ui/main.js:561
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:552
#: pretix/static/pretixpresale/js/ui/main.js:558
msgid "Your local time:"
msgstr ""
@@ -731,270 +749,348 @@ msgid "Google Pay"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:16
#: pretix/static/pretixpresale/js/widget/widget.v1.js:16
msgctxt "widget"
msgid "Quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:17
#: pretix/static/pretixpresale/js/widget/widget.v1.js:17
msgctxt "widget"
msgid "Decrease quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:18
#: pretix/static/pretixpresale/js/widget/widget.v1.js:18
msgctxt "widget"
msgid "Increase quantity"
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:19
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/js/widget/widget.v1.js:20
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:21
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:22
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.v1.js:23
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.v1.js:24
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:25
msgctxt "widget"
msgid "Sold out"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.v1.js:26
msgctxt "widget"
msgid "Buy"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.v1.js:27
msgctxt "widget"
msgid "Register"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.v1.js:28
msgctxt "widget"
msgid "Reserved"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.v1.js:29
msgctxt "widget"
msgid "FREE"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.v1.js:30
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:31
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:32
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:33
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:34
msgctxt "widget"
msgid "incl. taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/js/widget/widget.v1.js:35
msgctxt "widget"
msgid "plus taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.v1.js:36
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:37
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:38
#: pretix/static/pretixpresale/js/widget/widget.v1.js:41
msgctxt "widget"
msgid "Not yet available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/js/widget/widget.v1.js:39
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.v1.js:40
msgctxt "widget"
msgid "Currently not available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.v1.js:42
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:43
msgctxt "widget"
msgid "Close ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.js:46
#: pretix/static/pretixpresale/js/widget/widget.v1.js:44
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:45
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:47
msgctxt "widget"
msgid "Open ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:48
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/js/widget/widget.v1.js:48
msgctxt "widget"
msgid "Checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:51
#: pretix/static/pretixpresale/js/widget/widget.v1.js:49
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.v1.js:50
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:51
#: pretix/static/pretixpresale/js/widget/widget.js:54
#: pretix/static/pretixpresale/js/widget/widget.v1.js:52
msgctxt "widget"
msgid "Waiting list"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.v1.js:53
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:54
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.v1.js:55
msgctxt "widget"
msgid "Resume checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.v1.js:56
msgctxt "widget"
msgid "Redeem a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.v1.js:57
msgctxt "widget"
msgid "Redeem"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/js/widget/widget.v1.js:58
msgctxt "widget"
msgid "Voucher code"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/js/widget/widget.v1.js:59
msgctxt "widget"
msgid "Close"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:59
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:62
msgctxt "widget"
msgid "Choose a different event"
msgid "Close checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:63
msgctxt "widget"
msgid "Choose a different date"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/js/widget/widget.v1.js:60
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.v1.js:61
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.v1.js:62
msgctxt "widget"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.v1.js:63
msgctxt "widget"
msgid "Choose a different event"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.v1.js:64
msgctxt "widget"
msgid "Choose a different date"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.v1.js:65
msgctxt "widget"
msgid "Back"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.v1.js:66
msgctxt "widget"
msgid "Next month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.v1.js:67
msgctxt "widget"
msgid "Previous month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.v1.js:68
msgctxt "widget"
msgid "Next week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/js/widget/widget.v1.js:69
msgctxt "widget"
msgid "Previous week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.v1.js:70
msgctxt "widget"
msgid "Open seat selection"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.v1.js:71
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -1002,83 +1098,138 @@ msgid ""
"again."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.v1.js:72
msgctxt "widget"
msgid "Load more"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.v1.js:74
msgid "Mo"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.v1.js:75
msgid "Tu"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.v1.js:76
msgid "We"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/js/widget/widget.v1.js:77
msgid "Th"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.v1.js:78
msgid "Fr"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.v1.js:79
msgid "Sa"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.v1.js:80
msgid "Su"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "April"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:81
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "May"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:82
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "June"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:83
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:88
msgid "July"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:84
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:89
msgid "August"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:85
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "September"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:86
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.v1.js:87
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.v1.js:90
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.v1.js:91
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.v1.js:92
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.v1.js:93
msgid "April"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.v1.js:94
msgid "May"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.v1.js:95
msgid "June"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.v1.js:96
msgid "July"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.v1.js:97
msgid "August"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:102
#: pretix/static/pretixpresale/js/widget/widget.v1.js:98
msgid "September"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:103
#: pretix/static/pretixpresale/js/widget/widget.v1.js:99
msgid "October"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:104
#: pretix/static/pretixpresale/js/widget/widget.v1.js:100
msgid "November"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:105
#: pretix/static/pretixpresale/js/widget/widget.v1.js:101
msgid "December"
msgstr ""
File diff suppressed because it is too large Load Diff
+304 -128
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-25 15:46+0000\n"
"POT-Creation-Date: 2025-05-30 10:36+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:92
msgid "Continue"
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 "أغلق الرسالة"
@@ -617,16 +623,16 @@ msgstr "عنصر"
msgid "Ticket design"
msgstr "تصميم التذكرة"
#: pretix/static/pretixcontrol/js/ui/editor.js:1259
#: pretix/static/pretixcontrol/js/ui/editor.js:1258
msgid "Saving failed."
msgstr "فشلت عملية الحفظ."
#: pretix/static/pretixcontrol/js/ui/editor.js:1328
#: pretix/static/pretixcontrol/js/ui/editor.js:1379
#: pretix/static/pretixcontrol/js/ui/editor.js:1327
#: pretix/static/pretixcontrol/js/ui/editor.js:1378
msgid "Error while uploading your PDF file, please try again."
msgstr "حصل خطأ أثناء رفع ملف PDF الخاص بك، يرجى المحاولة مرة أخرى."
#: pretix/static/pretixcontrol/js/ui/editor.js:1362
#: pretix/static/pretixcontrol/js/ui/editor.js:1361
msgid "Do you really want to leave the editor without saving your changes?"
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:318
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:322
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:326
#: 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:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
#: 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:460
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr "الكل"
#: pretix/static/pretixcontrol/js/ui/main.js:461
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr "لا شيء"
#: pretix/static/pretixcontrol/js/ui/main.js:465
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr "المختارة فقط"
#: pretix/static/pretixcontrol/js/ui/main.js:808
#: pretix/static/pretixcontrol/js/ui/main.js:782
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:811
#: pretix/static/pretixcontrol/js/ui/main.js:785
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:969
#: pretix/static/pretixcontrol/js/ui/main.js:943
msgid "Use a different name internally"
msgstr "قم باستخدم اسم مختلف داخليا"
#: pretix/static/pretixcontrol/js/ui/main.js:1009
#: pretix/static/pretixcontrol/js/ui/main.js:983
msgid "Click to close"
msgstr "اضغط لاغلاق الصفحة"
#: pretix/static/pretixcontrol/js/ui/main.js:1090
#: pretix/static/pretixcontrol/js/ui/main.js:1064
msgid "You have unsaved changes!"
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:48
#, 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:50
msgid "Cart expired"
msgstr "انتهت صلاحية عربة التسوق"
#: pretix/static/pretixpresale/js/ui/cart.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:59
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Your cart is about to expire."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:64
#, 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:203
#: pretix/static/pretixpresale/js/ui/cart.js:86
#, fuzzy
#| msgid "Cart expired"
msgid "Your cart has expired."
msgstr "انتهت صلاحية عربة التسوق"
#: pretix/static/pretixpresale/js/ui/cart.js:89
#, 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:90
msgid "Do you want to renew the reservation period?"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:93
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:211
#: 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:227
#: 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:445
msgid "Please enter a quantity for one of the ticket types."
msgstr "الرجاء إدخال عدد لأحد أنواع التذاكر."
#: pretix/static/pretixpresale/js/ui/main.js:497
msgid "required"
msgstr "مطلوب"
#: pretix/static/pretixpresale/js/ui/main.js:541
#: pretix/static/pretixpresale/js/ui/main.js:561
msgid "Time zone:"
msgstr "المنطقة الزمنية:"
#: pretix/static/pretixpresale/js/ui/main.js:552
#: pretix/static/pretixpresale/js/ui/main.js:558
msgid "Your local time:"
msgstr "التوقيت المحلي:"
@@ -781,52 +807,71 @@ msgid "Google Pay"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:16
#: pretix/static/pretixpresale/js/widget/widget.v1.js:16
msgctxt "widget"
msgid "Quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:17
#: pretix/static/pretixpresale/js/widget/widget.v1.js:17
msgctxt "widget"
msgid "Decrease quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:18
#: pretix/static/pretixpresale/js/widget/widget.v1.js:18
msgctxt "widget"
msgid "Increase quantity"
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:19
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/js/widget/widget.v1.js:20
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:21
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:22
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:23
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:24
#, fuzzy, javascript-format
#| msgctxt "widget"
#| msgid "See variations"
@@ -834,75 +879,90 @@ msgctxt "widget"
msgid "Select variant %s"
msgstr "أنظر إلى الاختلافات"
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.v1.js:25
msgctxt "widget"
msgid "Sold out"
msgstr "تم البيع بالكامل"
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.v1.js:26
msgctxt "widget"
msgid "Buy"
msgstr "اشتري"
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.v1.js:27
msgctxt "widget"
msgid "Register"
msgstr "سجل"
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.v1.js:28
msgctxt "widget"
msgid "Reserved"
msgstr "محجوز"
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.v1.js:29
msgctxt "widget"
msgid "FREE"
msgstr "مجاني"
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.v1.js:30
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:31
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:32
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:33
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:34
msgctxt "widget"
msgid "incl. taxes"
msgstr "شامل الضريبة"
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/js/widget/widget.v1.js:35
msgctxt "widget"
msgid "plus taxes"
msgstr "بالإضافة إلى الضرائب"
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.v1.js:36
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:37
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:38
#: pretix/static/pretixpresale/js/widget/widget.v1.js:41
#, fuzzy
#| msgctxt "widget"
#| msgid "currently available: %s"
@@ -910,12 +970,14 @@ msgctxt "widget"
msgid "Not yet available"
msgstr "متوفر حاليا: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/js/widget/widget.v1.js:39
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.v1.js:40
#, fuzzy
#| msgctxt "widget"
#| msgid "currently available: %s"
@@ -923,30 +985,35 @@ msgctxt "widget"
msgid "Currently not available"
msgstr "متوفر حاليا: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.v1.js:42
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:43
msgctxt "widget"
msgid "Close ticket shop"
msgstr "إغلاق متجر التذاكر"
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.js:46
#: pretix/static/pretixpresale/js/widget/widget.v1.js:44
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:45
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:47
#, fuzzy
#| msgctxt "widget"
#| msgid "Close ticket shop"
@@ -954,24 +1021,37 @@ msgctxt "widget"
msgid "Open ticket shop"
msgstr "إغلاق متجر التذاكر"
#: pretix/static/pretixpresale/js/widget/widget.js:48
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/js/widget/widget.v1.js:48
#, fuzzy
#| msgctxt "widget"
#| msgid "Resume checkout"
msgctxt "widget"
msgid "Checkout"
msgstr "استئناف الدفع"
#: pretix/static/pretixpresale/js/widget/widget.js:51
#: pretix/static/pretixpresale/js/widget/widget.v1.js:49
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr "لا يمكن إنشاء سلة التسوق. الرجاء المحاولة مرة أخرى في وقت لاحق"
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.v1.js:50
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:51
#: pretix/static/pretixpresale/js/widget/widget.js:54
#: pretix/static/pretixpresale/js/widget/widget.v1.js:52
msgctxt "widget"
msgid "Waiting list"
msgstr "قائمة الإنتظار"
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.v1.js:53
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
@@ -980,37 +1060,57 @@ msgstr ""
"لديك الآن سلة تسوق مفعلة لهذا الحدث. إذا قمت باختيار منتجات أخرى سيتم "
"إضافتها إلى سلة التسوق الموجودة حالياً."
#: pretix/static/pretixpresale/js/widget/widget.js:54
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.v1.js:55
msgctxt "widget"
msgid "Resume checkout"
msgstr "استئناف الدفع"
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.v1.js:56
msgctxt "widget"
msgid "Redeem a voucher"
msgstr "استبدال قسيمة"
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.v1.js:57
msgctxt "widget"
msgid "Redeem"
msgstr "استبدال"
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/js/widget/widget.v1.js:58
msgctxt "widget"
msgid "Voucher code"
msgstr "رمز القسيمة"
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/js/widget/widget.v1.js:59
msgctxt "widget"
msgid "Close"
msgstr "إغلاق"
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:60
msgctxt "widget"
msgid "Continue"
msgstr "استمرار"
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.v1.js:61
#, fuzzy
#| msgctxt "widget"
#| msgid "See variations"
@@ -1018,7 +1118,8 @@ msgctxt "widget"
msgid "Show variants"
msgstr "أنظر إلى الاختلافات"
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.v1.js:62
#, fuzzy
#| msgctxt "widget"
#| msgid "See variations"
@@ -1026,47 +1127,56 @@ msgctxt "widget"
msgid "Hide variants"
msgstr "أنظر إلى الاختلافات"
#: pretix/static/pretixpresale/js/widget/widget.js:62
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.v1.js:63
msgctxt "widget"
msgid "Choose a different event"
msgstr "اختر فعالية أخرى"
#: pretix/static/pretixpresale/js/widget/widget.js:63
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.v1.js:64
msgctxt "widget"
msgid "Choose a different date"
msgstr "اختر تاريخا آخر"
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.v1.js:65
msgctxt "widget"
msgid "Back"
msgstr "العودة"
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.v1.js:66
msgctxt "widget"
msgid "Next month"
msgstr "الشهر القادم"
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.v1.js:67
msgctxt "widget"
msgid "Previous month"
msgstr "الشهر السابق"
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.v1.js:68
msgctxt "widget"
msgid "Next week"
msgstr "الأسبوع القادم"
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/js/widget/widget.v1.js:69
msgctxt "widget"
msgid "Previous week"
msgstr "الأسبوع السابق"
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.v1.js:70
msgctxt "widget"
msgid "Open seat selection"
msgstr "خيارات المقاعد"
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.v1.js:71
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -1074,89 +1184,155 @@ msgid ""
"again."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.v1.js:72
#, fuzzy
#| msgid "Load more"
msgctxt "widget"
msgid "Load more"
msgstr "تحميل المزيد"
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.v1.js:74
msgid "Mo"
msgstr "الإثنين"
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.v1.js:75
msgid "Tu"
msgstr "الثلاثاء"
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.v1.js:76
msgid "We"
msgstr "الأربعاء"
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/js/widget/widget.v1.js:77
msgid "Th"
msgstr "الخميس"
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.v1.js:78
msgid "Fr"
msgstr "الجمعة"
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.v1.js:79
msgid "Sa"
msgstr "السبت"
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.v1.js:80
msgid "Su"
msgstr "الأحد"
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/js/widget/widget.v1.js:81
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/js/widget/widget.v1.js:82
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/js/widget/widget.v1.js:83
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:88
#: pretix/static/pretixpresale/js/widget/widget.v1.js:84
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:89
#: pretix/static/pretixpresale/js/widget/widget.v1.js:85
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/js/widget/widget.v1.js:86
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.v1.js:87
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.v1.js:90
msgid "January"
msgstr "يناير"
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.v1.js:91
msgid "February"
msgstr "فبراير"
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.v1.js:92
msgid "March"
msgstr "مارس"
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.v1.js:93
msgid "April"
msgstr "أبريل"
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.v1.js:94
msgid "May"
msgstr "مايو"
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.v1.js:95
msgid "June"
msgstr "يونيو"
#: pretix/static/pretixpresale/js/widget/widget.js:88
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.v1.js:96
msgid "July"
msgstr "يوليو"
#: pretix/static/pretixpresale/js/widget/widget.js:89
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.v1.js:97
msgid "August"
msgstr "أغسطس"
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/js/widget/widget.js:102
#: pretix/static/pretixpresale/js/widget/widget.v1.js:98
msgid "September"
msgstr "سبتمبر"
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.js:103
#: pretix/static/pretixpresale/js/widget/widget.v1.js:99
msgid "October"
msgstr "أكتوبر"
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:104
#: pretix/static/pretixpresale/js/widget/widget.v1.js:100
msgid "November"
msgstr "نوفمبر"
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:105
#: pretix/static/pretixpresale/js/widget/widget.v1.js:101
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
+299 -148
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-25 15:46+0000\n"
"POT-Creation-Date: 2025-05-30 10:36+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -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:92
msgid "Continue"
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 ""
@@ -583,16 +589,16 @@ msgstr ""
msgid "Ticket design"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1259
#: pretix/static/pretixcontrol/js/ui/editor.js:1258
msgid "Saving failed."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1328
#: pretix/static/pretixcontrol/js/ui/editor.js:1379
#: pretix/static/pretixcontrol/js/ui/editor.js:1327
#: pretix/static/pretixcontrol/js/ui/editor.js:1378
msgid "Error while uploading your PDF file, please try again."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1362
#: pretix/static/pretixcontrol/js/ui/editor.js:1361
msgid "Do you really want to leave the editor without saving your changes?"
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:318
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:322
msgid "Your color has decent contrast and is probably good-enough to read!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:326
#: 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:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
#: 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:460
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:461
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:465
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:808
#: pretix/static/pretixcontrol/js/ui/main.js:782
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:811
#: pretix/static/pretixcontrol/js/ui/main.js:785
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:969
#: pretix/static/pretixcontrol/js/ui/main.js:943
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1009
#: pretix/static/pretixcontrol/js/ui/main.js:983
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1090
#: pretix/static/pretixcontrol/js/ui/main.js:1064
msgid "You have unsaved changes!"
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:48
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:50
msgid "Cart expired"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:59
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Your cart is about to expire."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:64
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:203
#: pretix/static/pretixpresale/js/ui/cart.js:86
msgid "Your cart has expired."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:89
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:90
msgid "Do you want to renew the reservation period?"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:93
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:211
#: pretix/static/pretixpresale/js/ui/main.js:202
msgid "You get %(currency)s %(amount)s back"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:227
#: 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:445
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:497
msgid "required"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:541
#: pretix/static/pretixpresale/js/ui/main.js:561
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:552
#: pretix/static/pretixpresale/js/ui/main.js:558
msgid "Your local time:"
msgstr ""
@@ -731,270 +749,348 @@ msgid "Google Pay"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:16
#: pretix/static/pretixpresale/js/widget/widget.v1.js:16
msgctxt "widget"
msgid "Quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:17
#: pretix/static/pretixpresale/js/widget/widget.v1.js:17
msgctxt "widget"
msgid "Decrease quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:18
#: pretix/static/pretixpresale/js/widget/widget.v1.js:18
msgctxt "widget"
msgid "Increase quantity"
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:19
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/js/widget/widget.v1.js:20
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:21
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:22
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.v1.js:23
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.v1.js:24
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:25
msgctxt "widget"
msgid "Sold out"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.v1.js:26
msgctxt "widget"
msgid "Buy"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.v1.js:27
msgctxt "widget"
msgid "Register"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.v1.js:28
msgctxt "widget"
msgid "Reserved"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.v1.js:29
msgctxt "widget"
msgid "FREE"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.v1.js:30
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:31
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:32
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:33
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:34
msgctxt "widget"
msgid "incl. taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/js/widget/widget.v1.js:35
msgctxt "widget"
msgid "plus taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.v1.js:36
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:37
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:38
#: pretix/static/pretixpresale/js/widget/widget.v1.js:41
msgctxt "widget"
msgid "Not yet available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/js/widget/widget.v1.js:39
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.v1.js:40
msgctxt "widget"
msgid "Currently not available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.v1.js:42
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:43
msgctxt "widget"
msgid "Close ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.js:46
#: pretix/static/pretixpresale/js/widget/widget.v1.js:44
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:45
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:47
msgctxt "widget"
msgid "Open ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:48
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/js/widget/widget.v1.js:48
msgctxt "widget"
msgid "Checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:51
#: pretix/static/pretixpresale/js/widget/widget.v1.js:49
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.v1.js:50
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:51
#: pretix/static/pretixpresale/js/widget/widget.js:54
#: pretix/static/pretixpresale/js/widget/widget.v1.js:52
msgctxt "widget"
msgid "Waiting list"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.v1.js:53
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:54
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.v1.js:55
msgctxt "widget"
msgid "Resume checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.v1.js:56
msgctxt "widget"
msgid "Redeem a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.v1.js:57
msgctxt "widget"
msgid "Redeem"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/js/widget/widget.v1.js:58
msgctxt "widget"
msgid "Voucher code"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/js/widget/widget.v1.js:59
msgctxt "widget"
msgid "Close"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:59
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:62
msgctxt "widget"
msgid "Choose a different event"
msgid "Close checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:63
msgctxt "widget"
msgid "Choose a different date"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/js/widget/widget.v1.js:60
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.v1.js:61
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.v1.js:62
msgctxt "widget"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.v1.js:63
msgctxt "widget"
msgid "Choose a different event"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.v1.js:64
msgctxt "widget"
msgid "Choose a different date"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.v1.js:65
msgctxt "widget"
msgid "Back"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.v1.js:66
msgctxt "widget"
msgid "Next month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.v1.js:67
msgctxt "widget"
msgid "Previous month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.v1.js:68
msgctxt "widget"
msgid "Next week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/js/widget/widget.v1.js:69
msgctxt "widget"
msgid "Previous week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.v1.js:70
msgctxt "widget"
msgid "Open seat selection"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.v1.js:71
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -1002,83 +1098,138 @@ msgid ""
"again."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.v1.js:72
msgctxt "widget"
msgid "Load more"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.v1.js:74
msgid "Mo"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.v1.js:75
msgid "Tu"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.v1.js:76
msgid "We"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/js/widget/widget.v1.js:77
msgid "Th"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.v1.js:78
msgid "Fr"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.v1.js:79
msgid "Sa"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.v1.js:80
msgid "Su"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "April"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:81
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "May"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:82
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "June"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:83
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:88
msgid "July"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:84
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:89
msgid "August"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:85
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "September"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:86
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.v1.js:87
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.v1.js:90
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.v1.js:91
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.v1.js:92
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.v1.js:93
msgid "April"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.v1.js:94
msgid "May"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.v1.js:95
msgid "June"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.v1.js:96
msgid "July"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.v1.js:97
msgid "August"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:102
#: pretix/static/pretixpresale/js/widget/widget.v1.js:98
msgid "September"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:103
#: pretix/static/pretixpresale/js/widget/widget.v1.js:99
msgid "October"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:104
#: pretix/static/pretixpresale/js/widget/widget.v1.js:100
msgid "November"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:105
#: pretix/static/pretixpresale/js/widget/widget.v1.js:101
msgid "December"
msgstr ""
File diff suppressed because it is too large Load Diff
+305 -150
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-25 15:46+0000\n"
"POT-Creation-Date: 2025-05-30 10:36+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:92
msgid "Continue"
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 ""
@@ -584,16 +592,16 @@ msgstr ""
msgid "Ticket design"
msgstr "Disseny del tiquet"
#: pretix/static/pretixcontrol/js/ui/editor.js:1259
#: pretix/static/pretixcontrol/js/ui/editor.js:1258
msgid "Saving failed."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1328
#: pretix/static/pretixcontrol/js/ui/editor.js:1379
#: pretix/static/pretixcontrol/js/ui/editor.js:1327
#: pretix/static/pretixcontrol/js/ui/editor.js:1378
msgid "Error while uploading your PDF file, please try again."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1362
#: pretix/static/pretixcontrol/js/ui/editor.js:1361
msgid "Do you really want to leave the editor without saving your changes?"
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:318
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:322
msgid "Your color has decent contrast and is probably good-enough to read!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:326
#: 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:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
#: 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:460
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:461
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:465
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:808
#: pretix/static/pretixcontrol/js/ui/main.js:782
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:811
#: pretix/static/pretixcontrol/js/ui/main.js:785
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:969
#: pretix/static/pretixcontrol/js/ui/main.js:943
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1009
#: pretix/static/pretixcontrol/js/ui/main.js:983
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1090
#: pretix/static/pretixcontrol/js/ui/main.js:1064
msgid "You have unsaved changes!"
msgstr ""
@@ -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:48
#, 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:50
msgid "Cart expired"
msgstr "Cistella expirada"
#: pretix/static/pretixpresale/js/ui/cart.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:59
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Your cart is about to expire."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:64
#, 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:203
#: pretix/static/pretixpresale/js/ui/cart.js:86
#, fuzzy
#| msgid "Cart expired"
msgid "Your cart has expired."
msgstr "Cistella expirada"
#: pretix/static/pretixpresale/js/ui/cart.js:89
#, 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:90
msgid "Do you want to renew the reservation period?"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:93
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:211
#: pretix/static/pretixpresale/js/ui/main.js:202
msgid "You get %(currency)s %(amount)s back"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:227
#: 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:445
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:497
#, fuzzy
#| msgid "Cart expired"
msgid "required"
msgstr "Cistella expirada"
#: pretix/static/pretixpresale/js/ui/main.js:541
#: pretix/static/pretixpresale/js/ui/main.js:561
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:552
#: pretix/static/pretixpresale/js/ui/main.js:558
msgid "Your local time:"
msgstr ""
@@ -738,270 +760,348 @@ msgid "Google Pay"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:16
#: pretix/static/pretixpresale/js/widget/widget.v1.js:16
msgctxt "widget"
msgid "Quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:17
#: pretix/static/pretixpresale/js/widget/widget.v1.js:17
msgctxt "widget"
msgid "Decrease quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:18
#: pretix/static/pretixpresale/js/widget/widget.v1.js:18
msgctxt "widget"
msgid "Increase quantity"
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:19
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/js/widget/widget.v1.js:20
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:21
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:22
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.v1.js:23
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.v1.js:24
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:25
msgctxt "widget"
msgid "Sold out"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.v1.js:26
msgctxt "widget"
msgid "Buy"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.v1.js:27
msgctxt "widget"
msgid "Register"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.v1.js:28
msgctxt "widget"
msgid "Reserved"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.v1.js:29
msgctxt "widget"
msgid "FREE"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.v1.js:30
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:31
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:32
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:33
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:34
msgctxt "widget"
msgid "incl. taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/js/widget/widget.v1.js:35
msgctxt "widget"
msgid "plus taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.v1.js:36
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:37
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:38
#: pretix/static/pretixpresale/js/widget/widget.v1.js:41
msgctxt "widget"
msgid "Not yet available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/js/widget/widget.v1.js:39
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.v1.js:40
msgctxt "widget"
msgid "Currently not available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.v1.js:42
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:43
msgctxt "widget"
msgid "Close ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.js:46
#: pretix/static/pretixpresale/js/widget/widget.v1.js:44
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:45
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:47
msgctxt "widget"
msgid "Open ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:48
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/js/widget/widget.v1.js:48
msgctxt "widget"
msgid "Checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:51
#: pretix/static/pretixpresale/js/widget/widget.v1.js:49
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.v1.js:50
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:51
#: pretix/static/pretixpresale/js/widget/widget.js:54
#: pretix/static/pretixpresale/js/widget/widget.v1.js:52
msgctxt "widget"
msgid "Waiting list"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.v1.js:53
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:54
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.v1.js:55
msgctxt "widget"
msgid "Resume checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.v1.js:56
msgctxt "widget"
msgid "Redeem a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.v1.js:57
msgctxt "widget"
msgid "Redeem"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/js/widget/widget.v1.js:58
msgctxt "widget"
msgid "Voucher code"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/js/widget/widget.v1.js:59
msgctxt "widget"
msgid "Close"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:59
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:62
msgctxt "widget"
msgid "Choose a different event"
msgid "Close checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:63
msgctxt "widget"
msgid "Choose a different date"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/js/widget/widget.v1.js:60
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.v1.js:61
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.v1.js:62
msgctxt "widget"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.v1.js:63
msgctxt "widget"
msgid "Choose a different event"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.v1.js:64
msgctxt "widget"
msgid "Choose a different date"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.v1.js:65
msgctxt "widget"
msgid "Back"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.v1.js:66
msgctxt "widget"
msgid "Next month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.v1.js:67
msgctxt "widget"
msgid "Previous month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.v1.js:68
msgctxt "widget"
msgid "Next week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/js/widget/widget.v1.js:69
msgctxt "widget"
msgid "Previous week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.v1.js:70
msgctxt "widget"
msgid "Open seat selection"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.v1.js:71
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -1009,83 +1109,138 @@ msgid ""
"again."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.v1.js:72
msgctxt "widget"
msgid "Load more"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.v1.js:74
msgid "Mo"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.v1.js:75
msgid "Tu"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.v1.js:76
msgid "We"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/js/widget/widget.v1.js:77
msgid "Th"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.v1.js:78
msgid "Fr"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.v1.js:79
msgid "Sa"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.v1.js:80
msgid "Su"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "April"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:81
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "May"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:82
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "June"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:83
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:88
msgid "July"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:84
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:89
msgid "August"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:85
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "September"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:86
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.v1.js:87
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.v1.js:90
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.v1.js:91
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.v1.js:92
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.v1.js:93
msgid "April"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.v1.js:94
msgid "May"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.v1.js:95
msgid "June"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.v1.js:96
msgid "July"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.v1.js:97
msgid "August"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:102
#: pretix/static/pretixpresale/js/widget/widget.v1.js:98
msgid "September"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:103
#: pretix/static/pretixpresale/js/widget/widget.v1.js:99
msgid "October"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:104
#: pretix/static/pretixpresale/js/widget/widget.v1.js:100
msgid "November"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:105
#: pretix/static/pretixpresale/js/widget/widget.v1.js:101
msgid "December"
msgstr ""
File diff suppressed because it is too large Load Diff
+339 -182
View File
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-25 15:46+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-05-30 10:36+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:92
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"
@@ -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"
@@ -608,16 +614,16 @@ msgstr "Objekt"
msgid "Ticket design"
msgstr "Design vstupenky"
#: pretix/static/pretixcontrol/js/ui/editor.js:1259
#: pretix/static/pretixcontrol/js/ui/editor.js:1258
msgid "Saving failed."
msgstr "Uložení se nepodařilo."
#: pretix/static/pretixcontrol/js/ui/editor.js:1328
#: pretix/static/pretixcontrol/js/ui/editor.js:1379
#: pretix/static/pretixcontrol/js/ui/editor.js:1327
#: pretix/static/pretixcontrol/js/ui/editor.js:1378
msgid "Error while uploading your PDF file, please try again."
msgstr "Při nahrávání souboru PDF došlo k problému, zkuste to prosím znovu."
#: pretix/static/pretixcontrol/js/ui/editor.js:1362
#: pretix/static/pretixcontrol/js/ui/editor.js:1361
msgid "Do you really want to leave the editor without saving your changes?"
msgstr "Opravdu chcete opustit editor bez uložení změn?"
@@ -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:318
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:322
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:326
#: 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:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
#: 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:460
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr "Všechny"
#: pretix/static/pretixcontrol/js/ui/main.js:461
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr "Žádný"
#: pretix/static/pretixcontrol/js/ui/main.js:465
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr "Pouze vybrané"
#: pretix/static/pretixcontrol/js/ui/main.js:808
#: pretix/static/pretixcontrol/js/ui/main.js:782
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:811
#: pretix/static/pretixcontrol/js/ui/main.js:785
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:969
#: pretix/static/pretixcontrol/js/ui/main.js:943
msgid "Use a different name internally"
msgstr "Interně používat jiný název"
#: pretix/static/pretixcontrol/js/ui/main.js:1009
#: pretix/static/pretixcontrol/js/ui/main.js:983
msgid "Click to close"
msgstr "Kliknutím zavřete"
#: pretix/static/pretixcontrol/js/ui/main.js:1090
#: pretix/static/pretixcontrol/js/ui/main.js:1064
msgid "You have unsaved changes!"
msgstr "Máte neuložené změny!"
@@ -692,10 +702,8 @@ 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
msgid "Others"
@@ -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:48
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:50
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:59
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Your cart is about to expire."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:64
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,241 @@ 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:203
#: pretix/static/pretixpresale/js/ui/cart.js:86
#, fuzzy
#| msgid "Cart expired"
msgid "Your cart has expired."
msgstr "Nákupní košík vypršel"
#: pretix/static/pretixpresale/js/ui/cart.js:89
#, 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:90
msgid "Do you want to renew the reservation period?"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:93
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:211
#: 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:227
#: 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:445
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:497
msgid "required"
msgstr "povinný"
#: pretix/static/pretixpresale/js/ui/main.js:541
#: pretix/static/pretixpresale/js/ui/main.js:561
msgid "Time zone:"
msgstr "Časové pásmo:"
#: pretix/static/pretixpresale/js/ui/main.js:552
#: 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:16
msgctxt "widget"
msgid "Quantity"
msgstr ""
msgstr "Počet"
#: pretix/static/pretixpresale/js/widget/widget.js:17
#: pretix/static/pretixpresale/js/widget/widget.v1.js:17
msgctxt "widget"
msgid "Decrease quantity"
msgstr ""
msgstr "Snížit počet"
#: pretix/static/pretixpresale/js/widget/widget.js:18
#: pretix/static/pretixpresale/js/widget/widget.v1.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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:19
msgctxt "widget"
msgid "Price"
msgstr "Cena"
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/js/widget/widget.v1.js:20
#, javascript-format
msgctxt "widget"
msgid "Original price: %s"
msgstr "Původní cena: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/js/widget/widget.v1.js:21
#, 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"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:22
msgctxt "widget"
msgid "Select variant %s"
msgstr "Zobrazit možnosti"
msgid "Select"
msgstr "Vybrat"
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.v1.js:23
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr "Vybrat %s"
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.v1.js:24
#, javascript-format
msgctxt "widget"
msgid "Select variant %s"
msgstr "Vybrat variantu %s"
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.v1.js:25
msgctxt "widget"
msgid "Sold out"
msgstr "Vyprodáno"
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.v1.js:26
msgctxt "widget"
msgid "Buy"
msgstr "Koupit"
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.v1.js:27
msgctxt "widget"
msgid "Register"
msgstr "Zaregistrovat"
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.v1.js:28
msgctxt "widget"
msgid "Reserved"
msgstr "Rezervováno"
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.v1.js:29
msgctxt "widget"
msgid "FREE"
msgstr "ZDARMA"
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.v1.js:30
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:31
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:32
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:33
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:34
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:35
msgctxt "widget"
msgid "plus taxes"
msgstr "plus daně"
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.v1.js:36
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:37
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:38
#: pretix/static/pretixpresale/js/widget/widget.v1.js:41
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:39
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:40
msgctxt "widget"
msgid "Currently not available"
msgstr "Momentálně není k dispozici."
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.v1.js:42
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:43
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:44
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:45
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
@@ -936,17 +990,26 @@ 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:47
msgctxt "widget"
msgid "Open ticket shop"
msgstr "Obchod vstupenek otevřit"
#: pretix/static/pretixpresale/js/widget/widget.js:48
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/js/widget/widget.v1.js:48
msgctxt "widget"
msgid "Checkout"
msgstr "Checkout"
#: pretix/static/pretixpresale/js/widget/widget.js:51
#: pretix/static/pretixpresale/js/widget/widget.v1.js:49
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:49
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.v1.js:50
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
@@ -956,12 +1019,14 @@ 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:51
#: pretix/static/pretixpresale/js/widget/widget.js:54
#: pretix/static/pretixpresale/js/widget/widget.v1.js:52
msgctxt "widget"
msgid "Waiting list"
msgstr "Čekací listina"
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.v1.js:53
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
@@ -970,93 +1035,117 @@ 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:54
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.v1.js:55
msgctxt "widget"
msgid "Resume checkout"
msgstr "Obnovit checkout"
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.v1.js:56
msgctxt "widget"
msgid "Redeem a voucher"
msgstr "Uplatnit poukázku"
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.v1.js:57
msgctxt "widget"
msgid "Redeem"
msgstr "Uplatnit"
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/js/widget/widget.v1.js:58
msgctxt "widget"
msgid "Voucher code"
msgstr "Kód poukázky"
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/js/widget/widget.v1.js:59
msgctxt "widget"
msgid "Close"
msgstr "Zavřít"
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:60
msgctxt "widget"
msgid "Continue"
msgstr "Pokračovat"
#: pretix/static/pretixpresale/js/widget/widget.js:60
#, fuzzy
#| msgctxt "widget"
#| msgid "See variations"
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.v1.js:61
msgctxt "widget"
msgid "Show variants"
msgstr "Zobrazit možnosti"
#: pretix/static/pretixpresale/js/widget/widget.js:61
#, fuzzy
#| msgctxt "widget"
#| msgid "See variations"
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.v1.js:62
msgctxt "widget"
msgid "Hide variants"
msgstr "Zobrazit možnosti"
msgstr "Skrýt možnosti"
#: pretix/static/pretixpresale/js/widget/widget.js:62
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.v1.js:63
msgctxt "widget"
msgid "Choose a different event"
msgstr "Vybrat jinou událost"
#: pretix/static/pretixpresale/js/widget/widget.js:63
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.v1.js:64
msgctxt "widget"
msgid "Choose a different date"
msgstr "Vybrat jiný datum"
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.v1.js:65
msgctxt "widget"
msgid "Back"
msgstr "Zpět"
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.v1.js:66
msgctxt "widget"
msgid "Next month"
msgstr "Následující měsíc"
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.v1.js:67
msgctxt "widget"
msgid "Previous month"
msgstr "Předchozí měsíc"
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.v1.js:68
msgctxt "widget"
msgid "Next week"
msgstr "Příští týden"
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/js/widget/widget.v1.js:69
msgctxt "widget"
msgid "Previous week"
msgstr "Předchozí týden"
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.v1.js:70
msgctxt "widget"
msgid "Open seat selection"
msgstr "Otevřete výběr sedadla"
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.v1.js:71
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -1067,87 +1156,155 @@ 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:71
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.v1.js:72
msgctxt "widget"
msgid "Load more"
msgstr "Načíst více"
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.v1.js:74
msgid "Mo"
msgstr "Po"
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.v1.js:75
msgid "Tu"
msgstr "Út"
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.v1.js:76
msgid "We"
msgstr "St"
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/js/widget/widget.v1.js:77
msgid "Th"
msgstr "Čt"
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.v1.js:78
msgid "Fr"
msgstr "Pá"
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.v1.js:79
msgid "Sa"
msgstr "So"
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.v1.js:80
msgid "Su"
msgstr "Ne"
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/js/widget/widget.v1.js:81
msgid "Monday"
msgstr "Pondělí"
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/js/widget/widget.v1.js:82
msgid "Tuesday"
msgstr "Úterý"
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/js/widget/widget.v1.js:83
msgid "Wednesday"
msgstr "Středa"
#: pretix/static/pretixpresale/js/widget/widget.js:88
#: pretix/static/pretixpresale/js/widget/widget.v1.js:84
msgid "Thursday"
msgstr "Čtvrtek"
#: pretix/static/pretixpresale/js/widget/widget.js:89
#: pretix/static/pretixpresale/js/widget/widget.v1.js:85
msgid "Friday"
msgstr "Pátek"
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/js/widget/widget.v1.js:86
msgid "Saturday"
msgstr "Sobota"
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.v1.js:87
msgid "Sunday"
msgstr "Neděle"
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.v1.js:90
msgid "January"
msgstr "Leden"
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.v1.js:91
msgid "February"
msgstr "Únor"
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.v1.js:92
msgid "March"
msgstr "Březen"
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.v1.js:93
msgid "April"
msgstr "Duben"
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.v1.js:94
msgid "May"
msgstr "Květen"
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.v1.js:95
msgid "June"
msgstr "červen"
#: pretix/static/pretixpresale/js/widget/widget.js:88
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.v1.js:96
msgid "July"
msgstr "Červenec"
#: pretix/static/pretixpresale/js/widget/widget.js:89
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.v1.js:97
msgid "August"
msgstr "Srpen"
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/js/widget/widget.js:102
#: pretix/static/pretixpresale/js/widget/widget.v1.js:98
msgid "September"
msgstr "Září"
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.js:103
#: pretix/static/pretixpresale/js/widget/widget.v1.js:99
msgid "October"
msgstr "Říjen"
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:104
#: pretix/static/pretixpresale/js/widget/widget.v1.js:100
msgid "November"
msgstr "Listopad"
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:105
#: pretix/static/pretixpresale/js/widget/widget.v1.js:101
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
+299 -148
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-25 15:46+0000\n"
"POT-Creation-Date: 2025-05-30 10:36+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -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:92
msgid "Continue"
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 ""
@@ -584,16 +590,16 @@ msgstr ""
msgid "Ticket design"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1259
#: pretix/static/pretixcontrol/js/ui/editor.js:1258
msgid "Saving failed."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1328
#: pretix/static/pretixcontrol/js/ui/editor.js:1379
#: pretix/static/pretixcontrol/js/ui/editor.js:1327
#: pretix/static/pretixcontrol/js/ui/editor.js:1378
msgid "Error while uploading your PDF file, please try again."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1362
#: pretix/static/pretixcontrol/js/ui/editor.js:1361
msgid "Do you really want to leave the editor without saving your changes?"
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:318
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:322
msgid "Your color has decent contrast and is probably good-enough to read!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:326
#: 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:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
#: 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:460
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:461
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:465
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:808
#: pretix/static/pretixcontrol/js/ui/main.js:782
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:811
#: pretix/static/pretixcontrol/js/ui/main.js:785
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:969
#: pretix/static/pretixcontrol/js/ui/main.js:943
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1009
#: pretix/static/pretixcontrol/js/ui/main.js:983
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1090
#: pretix/static/pretixcontrol/js/ui/main.js:1064
msgid "You have unsaved changes!"
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:48
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:50
msgid "Cart expired"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:59
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Your cart is about to expire."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:64
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:203
#: pretix/static/pretixpresale/js/ui/cart.js:86
msgid "Your cart has expired."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:89
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:90
msgid "Do you want to renew the reservation period?"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:93
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:211
#: pretix/static/pretixpresale/js/ui/main.js:202
msgid "You get %(currency)s %(amount)s back"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:227
#: 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:445
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:497
msgid "required"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:541
#: pretix/static/pretixpresale/js/ui/main.js:561
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:552
#: pretix/static/pretixpresale/js/ui/main.js:558
msgid "Your local time:"
msgstr ""
@@ -732,270 +750,348 @@ msgid "Google Pay"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:16
#: pretix/static/pretixpresale/js/widget/widget.v1.js:16
msgctxt "widget"
msgid "Quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:17
#: pretix/static/pretixpresale/js/widget/widget.v1.js:17
msgctxt "widget"
msgid "Decrease quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:18
#: pretix/static/pretixpresale/js/widget/widget.v1.js:18
msgctxt "widget"
msgid "Increase quantity"
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:19
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/js/widget/widget.v1.js:20
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:21
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:22
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.v1.js:23
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.v1.js:24
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:25
msgctxt "widget"
msgid "Sold out"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.v1.js:26
msgctxt "widget"
msgid "Buy"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.v1.js:27
msgctxt "widget"
msgid "Register"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.v1.js:28
msgctxt "widget"
msgid "Reserved"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.v1.js:29
msgctxt "widget"
msgid "FREE"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.v1.js:30
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:31
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:32
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:33
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:34
msgctxt "widget"
msgid "incl. taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/js/widget/widget.v1.js:35
msgctxt "widget"
msgid "plus taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.v1.js:36
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:37
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:38
#: pretix/static/pretixpresale/js/widget/widget.v1.js:41
msgctxt "widget"
msgid "Not yet available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/js/widget/widget.v1.js:39
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.v1.js:40
msgctxt "widget"
msgid "Currently not available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.v1.js:42
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:43
msgctxt "widget"
msgid "Close ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.js:46
#: pretix/static/pretixpresale/js/widget/widget.v1.js:44
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:45
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:47
msgctxt "widget"
msgid "Open ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:48
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/js/widget/widget.v1.js:48
msgctxt "widget"
msgid "Checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:51
#: pretix/static/pretixpresale/js/widget/widget.v1.js:49
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.v1.js:50
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:51
#: pretix/static/pretixpresale/js/widget/widget.js:54
#: pretix/static/pretixpresale/js/widget/widget.v1.js:52
msgctxt "widget"
msgid "Waiting list"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.v1.js:53
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:54
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.v1.js:55
msgctxt "widget"
msgid "Resume checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.v1.js:56
msgctxt "widget"
msgid "Redeem a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.v1.js:57
msgctxt "widget"
msgid "Redeem"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/js/widget/widget.v1.js:58
msgctxt "widget"
msgid "Voucher code"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/js/widget/widget.v1.js:59
msgctxt "widget"
msgid "Close"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:59
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:62
msgctxt "widget"
msgid "Choose a different event"
msgid "Close checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:63
msgctxt "widget"
msgid "Choose a different date"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/js/widget/widget.v1.js:60
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.v1.js:61
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.v1.js:62
msgctxt "widget"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.v1.js:63
msgctxt "widget"
msgid "Choose a different event"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.v1.js:64
msgctxt "widget"
msgid "Choose a different date"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.v1.js:65
msgctxt "widget"
msgid "Back"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.v1.js:66
msgctxt "widget"
msgid "Next month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.v1.js:67
msgctxt "widget"
msgid "Previous month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.v1.js:68
msgctxt "widget"
msgid "Next week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/js/widget/widget.v1.js:69
msgctxt "widget"
msgid "Previous week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.v1.js:70
msgctxt "widget"
msgid "Open seat selection"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.v1.js:71
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -1003,83 +1099,138 @@ msgid ""
"again."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.v1.js:72
msgctxt "widget"
msgid "Load more"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.v1.js:74
msgid "Mo"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.v1.js:75
msgid "Tu"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.v1.js:76
msgid "We"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/js/widget/widget.v1.js:77
msgid "Th"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.v1.js:78
msgid "Fr"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.v1.js:79
msgid "Sa"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.v1.js:80
msgid "Su"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "April"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:81
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "May"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:82
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "June"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:83
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:88
msgid "July"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:84
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:89
msgid "August"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:85
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "September"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:86
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.v1.js:87
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.v1.js:90
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.v1.js:91
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.v1.js:92
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.v1.js:93
msgid "April"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.v1.js:94
msgid "May"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.v1.js:95
msgid "June"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.v1.js:96
msgid "July"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.v1.js:97
msgid "August"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:102
#: pretix/static/pretixpresale/js/widget/widget.v1.js:98
msgid "September"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:103
#: pretix/static/pretixpresale/js/widget/widget.v1.js:99
msgid "October"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:104
#: pretix/static/pretixpresale/js/widget/widget.v1.js:100
msgid "November"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:105
#: pretix/static/pretixpresale/js/widget/widget.v1.js:101
msgid "December"
msgstr ""
File diff suppressed because it is too large Load Diff
+299 -131
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-25 15:46+0000\n"
"POT-Creation-Date: 2025-05-30 10:36+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:92
#, fuzzy
#| msgctxt "widget"
#| msgid "Continue"
@@ -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"
@@ -630,16 +638,16 @@ msgstr "Objekt"
msgid "Ticket design"
msgstr "Billetdesign"
#: pretix/static/pretixcontrol/js/ui/editor.js:1259
#: pretix/static/pretixcontrol/js/ui/editor.js:1258
msgid "Saving failed."
msgstr "Gem fejlede."
#: pretix/static/pretixcontrol/js/ui/editor.js:1328
#: pretix/static/pretixcontrol/js/ui/editor.js:1379
#: pretix/static/pretixcontrol/js/ui/editor.js:1327
#: pretix/static/pretixcontrol/js/ui/editor.js:1378
msgid "Error while uploading your PDF file, please try again."
msgstr "Fejl under upload af pdf. Prøv venligt igen."
#: pretix/static/pretixcontrol/js/ui/editor.js:1362
#: pretix/static/pretixcontrol/js/ui/editor.js:1361
msgid "Do you really want to leave the editor without saving your changes?"
msgstr ""
"Er du sikker på at du vil forlade editoren uden at gemme dine ændringer?"
@@ -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:318
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:322
msgid "Your color has decent contrast and is probably good-enough to read!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:326
#: 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:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
#: 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:460
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr "Alle"
#: pretix/static/pretixcontrol/js/ui/main.js:461
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr "Ingen"
#: pretix/static/pretixcontrol/js/ui/main.js:465
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:808
#: pretix/static/pretixcontrol/js/ui/main.js:782
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:811
#: pretix/static/pretixcontrol/js/ui/main.js:785
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:969
#: pretix/static/pretixcontrol/js/ui/main.js:943
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1009
#: pretix/static/pretixcontrol/js/ui/main.js:983
msgid "Click to close"
msgstr "Klik for at lukke"
#: pretix/static/pretixcontrol/js/ui/main.js:1090
#: pretix/static/pretixcontrol/js/ui/main.js:1064
msgid "You have unsaved changes!"
msgstr "Du har ændringer, der ikke er gemt!"
@@ -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:48
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:50
msgid "Cart expired"
msgstr "Kurv udløbet"
#: pretix/static/pretixpresale/js/ui/cart.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:59
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Your cart is about to expire."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:64
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:203
#: pretix/static/pretixpresale/js/ui/cart.js:86
#, fuzzy
#| msgid "Cart expired"
msgid "Your cart has expired."
msgstr "Kurv udløbet"
#: pretix/static/pretixpresale/js/ui/cart.js:89
#, 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:90
msgid "Do you want to renew the reservation period?"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:93
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:211
#: 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:227
#: 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:445
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:497
#, fuzzy
#| msgid "Cart expired"
msgid "required"
msgstr "Kurv udløbet"
#: pretix/static/pretixpresale/js/ui/main.js:541
#: pretix/static/pretixpresale/js/ui/main.js:561
msgid "Time zone:"
msgstr "Tidszone:"
#: pretix/static/pretixpresale/js/ui/main.js:552
#: pretix/static/pretixpresale/js/ui/main.js:558
msgid "Your local time:"
msgstr "Din lokaltid:"
@@ -795,49 +821,68 @@ msgid "Google Pay"
msgstr "Apple Pay"
#: pretix/static/pretixpresale/js/widget/widget.js:16
#: pretix/static/pretixpresale/js/widget/widget.v1.js:16
msgctxt "widget"
msgid "Quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:17
#: pretix/static/pretixpresale/js/widget/widget.v1.js:17
msgctxt "widget"
msgid "Decrease quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:18
#: pretix/static/pretixpresale/js/widget/widget.v1.js:18
msgctxt "widget"
msgid "Increase quantity"
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:19
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/js/widget/widget.v1.js:20
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:21
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:22
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.v1.js:23
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.v1.js:24
#, fuzzy, javascript-format
#| msgctxt "widget"
#| msgid "See variations"
@@ -845,87 +890,104 @@ 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:25
msgctxt "widget"
msgid "Sold out"
msgstr "Udsolgt"
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.v1.js:26
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:27
msgctxt "widget"
msgid "Register"
msgstr "Book nu"
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.v1.js:28
msgctxt "widget"
msgid "Reserved"
msgstr "Reserveret"
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.v1.js:29
msgctxt "widget"
msgid "FREE"
msgstr "GRATIS"
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.v1.js:30
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:31
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:32
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:33
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:34
msgctxt "widget"
msgid "incl. taxes"
msgstr "inkl. moms"
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/js/widget/widget.v1.js:35
msgctxt "widget"
msgid "plus taxes"
msgstr "plus moms"
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.v1.js:36
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:37
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:38
#: pretix/static/pretixpresale/js/widget/widget.v1.js:41
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:39
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.v1.js:40
#, fuzzy
#| msgctxt "widget"
#| msgid "currently available: %s"
@@ -933,30 +995,35 @@ 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:42
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:43
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:44
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:45
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:47
#, fuzzy
#| msgctxt "widget"
#| msgid "Close ticket shop"
@@ -964,24 +1031,37 @@ 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:48
#, fuzzy
#| msgctxt "widget"
#| msgid "Resume checkout"
msgctxt "widget"
msgid "Checkout"
msgstr "Fortsæt booking"
#: pretix/static/pretixpresale/js/widget/widget.js:51
#: pretix/static/pretixpresale/js/widget/widget.v1.js:49
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:49
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.v1.js:50
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:51
#: pretix/static/pretixpresale/js/widget/widget.js:54
#: pretix/static/pretixpresale/js/widget/widget.v1.js:52
msgctxt "widget"
msgid "Waiting list"
msgstr "Venteliste"
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.v1.js:53
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
@@ -990,37 +1070,57 @@ 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:54
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.v1.js:55
msgctxt "widget"
msgid "Resume checkout"
msgstr "Fortsæt booking"
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.v1.js:56
msgctxt "widget"
msgid "Redeem a voucher"
msgstr "Indløs rabatkode"
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.v1.js:57
msgctxt "widget"
msgid "Redeem"
msgstr "Indløs"
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/js/widget/widget.v1.js:58
msgctxt "widget"
msgid "Voucher code"
msgstr "Rabatkode"
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/js/widget/widget.v1.js:59
msgctxt "widget"
msgid "Close"
msgstr "Luk"
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:60
msgctxt "widget"
msgid "Continue"
msgstr "Fortsæt"
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.v1.js:61
#, fuzzy
#| msgctxt "widget"
#| msgid "See variations"
@@ -1028,7 +1128,8 @@ msgctxt "widget"
msgid "Show variants"
msgstr "Vis varianter"
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.v1.js:62
#, fuzzy
#| msgctxt "widget"
#| msgid "See variations"
@@ -1036,37 +1137,44 @@ msgctxt "widget"
msgid "Hide variants"
msgstr "Vis varianter"
#: pretix/static/pretixpresale/js/widget/widget.js:62
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.v1.js:63
msgctxt "widget"
msgid "Choose a different event"
msgstr "Vælg et andet arrangement"
#: pretix/static/pretixpresale/js/widget/widget.js:63
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.v1.js:64
msgctxt "widget"
msgid "Choose a different date"
msgstr "Vælg en anden dato"
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.v1.js:65
msgctxt "widget"
msgid "Back"
msgstr "Tilbage"
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.v1.js:66
msgctxt "widget"
msgid "Next month"
msgstr "Næste måned"
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.v1.js:67
msgctxt "widget"
msgid "Previous month"
msgstr "Forrige måned"
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.v1.js:68
msgctxt "widget"
msgid "Next week"
msgstr "Næste uge"
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/js/widget/widget.v1.js:69
#, fuzzy
#| msgctxt "widget"
#| msgid "Previous month"
@@ -1074,12 +1182,14 @@ msgctxt "widget"
msgid "Previous week"
msgstr "Forrige måned"
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.v1.js:70
msgctxt "widget"
msgid "Open seat selection"
msgstr "Åbn sædevalg"
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.v1.js:71
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -1087,87 +1197,145 @@ msgid ""
"again."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.v1.js:72
msgctxt "widget"
msgid "Load more"
msgstr "Hent flere"
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.v1.js:74
msgid "Mo"
msgstr "Man"
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.v1.js:75
msgid "Tu"
msgstr "Tirs"
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.v1.js:76
msgid "We"
msgstr "Ons"
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/js/widget/widget.v1.js:77
msgid "Th"
msgstr "Tors"
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.v1.js:78
msgid "Fr"
msgstr "Fre"
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.v1.js:79
msgid "Sa"
msgstr "Lør"
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.v1.js:80
msgid "Su"
msgstr "Søn"
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/js/widget/widget.v1.js:81
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/js/widget/widget.v1.js:82
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/js/widget/widget.v1.js:83
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:88
#: pretix/static/pretixpresale/js/widget/widget.v1.js:84
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:89
#: pretix/static/pretixpresale/js/widget/widget.v1.js:85
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/js/widget/widget.v1.js:86
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.v1.js:87
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.v1.js:90
msgid "January"
msgstr "Januar"
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.v1.js:91
msgid "February"
msgstr "Februar"
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.v1.js:92
msgid "March"
msgstr "Marts"
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.v1.js:93
msgid "April"
msgstr "April"
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.v1.js:94
msgid "May"
msgstr "Maj"
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.v1.js:95
msgid "June"
msgstr "Juni"
#: pretix/static/pretixpresale/js/widget/widget.js:88
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.v1.js:96
msgid "July"
msgstr "Juli"
#: pretix/static/pretixpresale/js/widget/widget.js:89
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.v1.js:97
msgid "August"
msgstr "August"
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/js/widget/widget.js:102
#: pretix/static/pretixpresale/js/widget/widget.v1.js:98
msgid "September"
msgstr "September"
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.js:103
#: pretix/static/pretixpresale/js/widget/widget.v1.js:99
msgid "October"
msgstr "Oktober"
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:104
#: pretix/static/pretixpresale/js/widget/widget.v1.js:100
msgid "November"
msgstr "November"
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:105
#: pretix/static/pretixpresale/js/widget/widget.v1.js:101
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
+317 -136
View File
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-25 15:46+0000\n"
"PO-Revision-Date: 2025-03-25 16:25+0000\n"
"POT-Creation-Date: 2025-05-30 10:36+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"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.10.4\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:92
msgid "Continue"
msgstr "Fortfahren"
@@ -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"
@@ -599,17 +605,17 @@ msgstr "Objekt"
msgid "Ticket design"
msgstr "Ticket-Design"
#: pretix/static/pretixcontrol/js/ui/editor.js:1259
#: pretix/static/pretixcontrol/js/ui/editor.js:1258
msgid "Saving failed."
msgstr "Speichern fehlgeschlagen."
#: pretix/static/pretixcontrol/js/ui/editor.js:1328
#: pretix/static/pretixcontrol/js/ui/editor.js:1379
#: pretix/static/pretixcontrol/js/ui/editor.js:1327
#: pretix/static/pretixcontrol/js/ui/editor.js:1378
msgid "Error while uploading your PDF file, please try again."
msgstr ""
"Es gab ein Problem beim Hochladen der PDF-Datei, bitte erneut versuchen."
#: pretix/static/pretixcontrol/js/ui/editor.js:1362
#: pretix/static/pretixcontrol/js/ui/editor.js:1361
msgid "Do you really want to leave the editor without saving your changes?"
msgstr ""
"Möchten Sie den Editor wirklich schließen ohne Ihre Änderungen zu speichern?"
@@ -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:318
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:322
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:326
#: 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:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
#: 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:460
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr "Alle"
#: pretix/static/pretixcontrol/js/ui/main.js:461
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr "Keine"
#: pretix/static/pretixcontrol/js/ui/main.js:465
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr "Nur ausgewählte"
#: pretix/static/pretixcontrol/js/ui/main.js:808
#: pretix/static/pretixcontrol/js/ui/main.js:782
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:811
#: pretix/static/pretixcontrol/js/ui/main.js:785
msgid "Invalid page number."
msgstr "Ungültige Seitenzahl."
#: pretix/static/pretixcontrol/js/ui/main.js:969
#: pretix/static/pretixcontrol/js/ui/main.js:943
msgid "Use a different name internally"
msgstr "Intern einen anderen Namen verwenden"
#: pretix/static/pretixcontrol/js/ui/main.js:1009
#: pretix/static/pretixcontrol/js/ui/main.js:983
msgid "Click to close"
msgstr "Klicken zum Schließen"
#: pretix/static/pretixcontrol/js/ui/main.js:1090
#: pretix/static/pretixcontrol/js/ui/main.js:1064
msgid "You have unsaved changes!"
msgstr "Sie haben ungespeicherte Änderungen!"
@@ -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:48
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:50
msgid "Cart expired"
msgstr "Warenkorb abgelaufen"
#: pretix/static/pretixpresale/js/ui/cart.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:59
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Your cart is about to expire."
msgstr "Ihr Warenkorb läuft gleich ab."
#: pretix/static/pretixpresale/js/ui/cart.js:64
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:203
#: pretix/static/pretixpresale/js/ui/cart.js:86
msgid "Your cart has expired."
msgstr "Ihr Warenkorb ist abgelaufen."
#: pretix/static/pretixpresale/js/ui/cart.js:89
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:90
msgid "Do you want to renew the reservation period?"
msgstr "Möchten Sie die Reservierung verlängern?"
#: pretix/static/pretixpresale/js/ui/cart.js:93
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:211
#: 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:227
#: 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:445
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:497
msgid "required"
msgstr "verpflichtend"
#: pretix/static/pretixpresale/js/ui/main.js:541
#: pretix/static/pretixpresale/js/ui/main.js:561
msgid "Time zone:"
msgstr "Zeitzone:"
#: pretix/static/pretixpresale/js/ui/main.js:552
#: pretix/static/pretixpresale/js/ui/main.js:558
msgid "Your local time:"
msgstr "Deine lokale Zeit:"
@@ -758,154 +780,194 @@ msgid "Google Pay"
msgstr "Google Pay"
#: pretix/static/pretixpresale/js/widget/widget.js:16
#: pretix/static/pretixpresale/js/widget/widget.v1.js:16
msgctxt "widget"
msgid "Quantity"
msgstr "Menge"
#: pretix/static/pretixpresale/js/widget/widget.js:17
#: pretix/static/pretixpresale/js/widget/widget.v1.js:17
msgctxt "widget"
msgid "Decrease quantity"
msgstr "Menge reduzieren"
#: pretix/static/pretixpresale/js/widget/widget.js:18
#: pretix/static/pretixpresale/js/widget/widget.v1.js:18
msgctxt "widget"
msgid "Increase quantity"
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:19
msgctxt "widget"
msgid "Price"
msgstr "Preis"
#: pretix/static/pretixpresale/js/widget/widget.js:20
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/js/widget/widget.v1.js:20
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:21
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:22
msgctxt "widget"
msgid "Select"
msgstr "Auswählen"
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.v1.js:23
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:24
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:25
msgctxt "widget"
msgid "Sold out"
msgstr "Ausverkauft"
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.v1.js:26
msgctxt "widget"
msgid "Buy"
msgstr "In den Warenkorb"
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.v1.js:27
msgctxt "widget"
msgid "Register"
msgstr "Anmelden"
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.v1.js:28
msgctxt "widget"
msgid "Reserved"
msgstr "Reserviert"
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.v1.js:29
msgctxt "widget"
msgid "FREE"
msgstr "GRATIS"
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.v1.js:30
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:31
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:32
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:33
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:34
msgctxt "widget"
msgid "incl. taxes"
msgstr "inkl. Steuern"
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/js/widget/widget.v1.js:35
msgctxt "widget"
msgid "plus taxes"
msgstr "zzgl. Steuern"
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.v1.js:36
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:37
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:38
#: pretix/static/pretixpresale/js/widget/widget.v1.js:41
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:39
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:40
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:42
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:43
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:44
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:45
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
@@ -914,17 +976,26 @@ 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:47
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:48
msgctxt "widget"
msgid "Checkout"
msgstr "Buchung"
#: pretix/static/pretixpresale/js/widget/widget.js:51
#: pretix/static/pretixpresale/js/widget/widget.v1.js:49
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:49
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.v1.js:50
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
@@ -934,12 +1005,14 @@ msgstr ""
"diesem Ticketshop sind. Bitte klicken Sie \"Weiter\" um es in einem neuen "
"Tab erneut zu versuchen."
#: pretix/static/pretixpresale/js/widget/widget.js:51
#: pretix/static/pretixpresale/js/widget/widget.js:54
#: pretix/static/pretixpresale/js/widget/widget.v1.js:52
msgctxt "widget"
msgid "Waiting list"
msgstr "Warteliste"
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.v1.js:53
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
@@ -948,87 +1021,116 @@ 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:54
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.v1.js:55
msgctxt "widget"
msgid "Resume checkout"
msgstr "Kauf fortsetzen"
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.v1.js:56
msgctxt "widget"
msgid "Redeem a voucher"
msgstr "Gutschein einlösen"
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.v1.js:57
msgctxt "widget"
msgid "Redeem"
msgstr "Einlösen"
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/js/widget/widget.v1.js:58
msgctxt "widget"
msgid "Voucher code"
msgstr "Gutscheincode"
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/js/widget/widget.v1.js:59
msgctxt "widget"
msgid "Close"
msgstr "Schließen"
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:60
msgctxt "widget"
msgid "Continue"
msgstr "Fortfahren"
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.v1.js:61
msgctxt "widget"
msgid "Show variants"
msgstr "Varianten zeigen"
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.v1.js:62
msgctxt "widget"
msgid "Hide variants"
msgstr "Varianten verstecken"
#: pretix/static/pretixpresale/js/widget/widget.js:62
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.v1.js:63
msgctxt "widget"
msgid "Choose a different event"
msgstr "Andere Veranstaltung auswählen"
#: pretix/static/pretixpresale/js/widget/widget.js:63
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.v1.js:64
msgctxt "widget"
msgid "Choose a different date"
msgstr "Anderen Termin auswählen"
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.v1.js:65
msgctxt "widget"
msgid "Back"
msgstr "Zurück"
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.v1.js:66
msgctxt "widget"
msgid "Next month"
msgstr "Nächster Monat"
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.v1.js:67
msgctxt "widget"
msgid "Previous month"
msgstr "Vorheriger Monat"
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.v1.js:68
msgctxt "widget"
msgid "Next week"
msgstr "Nächste Woche"
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/js/widget/widget.v1.js:69
msgctxt "widget"
msgid "Previous week"
msgstr "Vorherige Woche"
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.v1.js:70
msgctxt "widget"
msgid "Open seat selection"
msgstr "Saalplan öffnen"
msgstr "Sitzplan öffnen"
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.v1.js:71
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -1039,87 +1141,166 @@ 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:71
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.v1.js:72
msgctxt "widget"
msgid "Load more"
msgstr "Mehr laden"
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.v1.js:74
msgid "Mo"
msgstr "Mo"
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.v1.js:75
msgid "Tu"
msgstr "Di"
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.v1.js:76
msgid "We"
msgstr "Mi"
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/js/widget/widget.v1.js:77
msgid "Th"
msgstr "Do"
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.v1.js:78
msgid "Fr"
msgstr "Fr"
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.v1.js:79
msgid "Sa"
msgstr "Sa"
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.v1.js:80
msgid "Su"
msgstr "So"
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/js/widget/widget.v1.js:81
msgid "Monday"
msgstr "Montag"
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/js/widget/widget.v1.js:82
msgid "Tuesday"
msgstr "Dienstag"
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/js/widget/widget.v1.js:83
msgid "Wednesday"
msgstr "Mittwoch"
#: pretix/static/pretixpresale/js/widget/widget.js:88
#: pretix/static/pretixpresale/js/widget/widget.v1.js:84
msgid "Thursday"
msgstr "Donnerstag"
#: pretix/static/pretixpresale/js/widget/widget.js:89
#: pretix/static/pretixpresale/js/widget/widget.v1.js:85
msgid "Friday"
msgstr "Freitag"
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/js/widget/widget.v1.js:86
msgid "Saturday"
msgstr "Samstag"
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.v1.js:87
msgid "Sunday"
msgstr "Sonntag"
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.v1.js:90
msgid "January"
msgstr "Januar"
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.v1.js:91
msgid "February"
msgstr "Februar"
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.v1.js:92
msgid "March"
msgstr "März"
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.v1.js:93
msgid "April"
msgstr "April"
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.v1.js:94
msgid "May"
msgstr "Mai"
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.v1.js:95
msgid "June"
msgstr "Juni"
#: pretix/static/pretixpresale/js/widget/widget.js:88
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.v1.js:96
msgid "July"
msgstr "Juli"
#: pretix/static/pretixpresale/js/widget/widget.js:89
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.v1.js:97
msgid "August"
msgstr "August"
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/js/widget/widget.js:102
#: pretix/static/pretixpresale/js/widget/widget.v1.js:98
msgid "September"
msgstr "September"
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.js:103
#: pretix/static/pretixpresale/js/widget/widget.v1.js:99
msgid "October"
msgstr "Oktober"
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:104
#: pretix/static/pretixpresale/js/widget/widget.v1.js:100
msgid "November"
msgstr "November"
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:105
#: pretix/static/pretixpresale/js/widget/widget.v1.js:101
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-03-25 15:46+0000\n"
"PO-Revision-Date: 2025-03-25 16:25+0000\n"
"POT-Creation-Date: 2025-05-30 10:36+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"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.10.4\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:92
msgid "Continue"
msgstr "Fortfahren"
@@ -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"
@@ -598,17 +605,17 @@ msgstr "Objekt"
msgid "Ticket design"
msgstr "Ticket-Design"
#: pretix/static/pretixcontrol/js/ui/editor.js:1259
#: pretix/static/pretixcontrol/js/ui/editor.js:1258
msgid "Saving failed."
msgstr "Speichern fehlgeschlagen."
#: pretix/static/pretixcontrol/js/ui/editor.js:1328
#: pretix/static/pretixcontrol/js/ui/editor.js:1379
#: pretix/static/pretixcontrol/js/ui/editor.js:1327
#: pretix/static/pretixcontrol/js/ui/editor.js:1378
msgid "Error while uploading your PDF file, please try again."
msgstr ""
"Es gab ein Problem beim Hochladen der PDF-Datei, bitte erneut versuchen."
#: pretix/static/pretixcontrol/js/ui/editor.js:1362
#: pretix/static/pretixcontrol/js/ui/editor.js:1361
msgid "Do you really want to leave the editor without saving your changes?"
msgstr ""
"Möchtest du den Editor wirklich schließen ohne Ihre Änderungen zu speichern?"
@@ -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:318
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:322
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:326
#: 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:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
#: 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:460
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr "Alle"
#: pretix/static/pretixcontrol/js/ui/main.js:461
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr "Keine"
#: pretix/static/pretixcontrol/js/ui/main.js:465
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr "Nur ausgewählte"
#: pretix/static/pretixcontrol/js/ui/main.js:808
#: pretix/static/pretixcontrol/js/ui/main.js:782
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:811
#: pretix/static/pretixcontrol/js/ui/main.js:785
msgid "Invalid page number."
msgstr "Ungültige Seitenzahl."
#: pretix/static/pretixcontrol/js/ui/main.js:969
#: pretix/static/pretixcontrol/js/ui/main.js:943
msgid "Use a different name internally"
msgstr "Intern einen anderen Namen verwenden"
#: pretix/static/pretixcontrol/js/ui/main.js:1009
#: pretix/static/pretixcontrol/js/ui/main.js:983
msgid "Click to close"
msgstr "Klicken zum Schließen"
#: pretix/static/pretixcontrol/js/ui/main.js:1090
#: pretix/static/pretixcontrol/js/ui/main.js:1064
msgid "You have unsaved changes!"
msgstr "Du hast ungespeicherte Änderungen!"
@@ -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:48
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:50
msgid "Cart expired"
msgstr "Warenkorb abgelaufen"
#: pretix/static/pretixpresale/js/ui/cart.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:59
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Your cart is about to expire."
msgstr "Dein Warenkorb läuft gleich ab."
#: pretix/static/pretixpresale/js/ui/cart.js:64
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:203
#: pretix/static/pretixpresale/js/ui/cart.js:86
msgid "Your cart has expired."
msgstr "Dein Warenkorb ist abgelaufen."
#: pretix/static/pretixpresale/js/ui/cart.js:89
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:90
msgid "Do you want to renew the reservation period?"
msgstr "Möchtest du die Reservierung verlängern?"
#: pretix/static/pretixpresale/js/ui/cart.js:93
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:211
#: 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:227
#: 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:445
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:497
msgid "required"
msgstr "verpflichtend"
#: pretix/static/pretixpresale/js/ui/main.js:541
#: pretix/static/pretixpresale/js/ui/main.js:561
msgid "Time zone:"
msgstr "Zeitzone:"
#: pretix/static/pretixpresale/js/ui/main.js:552
#: pretix/static/pretixpresale/js/ui/main.js:558
msgid "Your local time:"
msgstr "Deine lokale Zeit:"
@@ -757,154 +780,194 @@ msgid "Google Pay"
msgstr "Google Pay"
#: pretix/static/pretixpresale/js/widget/widget.js:16
#: pretix/static/pretixpresale/js/widget/widget.v1.js:16
msgctxt "widget"
msgid "Quantity"
msgstr "Menge"
#: pretix/static/pretixpresale/js/widget/widget.js:17
#: pretix/static/pretixpresale/js/widget/widget.v1.js:17
msgctxt "widget"
msgid "Decrease quantity"
msgstr "Menge reduzieren"
#: pretix/static/pretixpresale/js/widget/widget.js:18
#: pretix/static/pretixpresale/js/widget/widget.v1.js:18
msgctxt "widget"
msgid "Increase quantity"
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:19
msgctxt "widget"
msgid "Price"
msgstr "Preis"
#: pretix/static/pretixpresale/js/widget/widget.js:20
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/js/widget/widget.v1.js:20
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:21
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:22
msgctxt "widget"
msgid "Select"
msgstr "Auswählen"
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.v1.js:23
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:24
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:25
msgctxt "widget"
msgid "Sold out"
msgstr "Ausverkauft"
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.v1.js:26
msgctxt "widget"
msgid "Buy"
msgstr "In den Warenkorb"
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.v1.js:27
msgctxt "widget"
msgid "Register"
msgstr "Anmelden"
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.v1.js:28
msgctxt "widget"
msgid "Reserved"
msgstr "Reserviert"
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.v1.js:29
msgctxt "widget"
msgid "FREE"
msgstr "GRATIS"
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.v1.js:30
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:31
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:32
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:33
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:34
msgctxt "widget"
msgid "incl. taxes"
msgstr "inkl. Steuern"
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/js/widget/widget.v1.js:35
msgctxt "widget"
msgid "plus taxes"
msgstr "zzgl. Steuern"
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.v1.js:36
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:37
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:38
#: pretix/static/pretixpresale/js/widget/widget.v1.js:41
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:39
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:40
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:42
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:43
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:44
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:45
msgctxt "widget"
msgid ""
"There are currently a lot of users in this ticket shop. Please open the shop "
@@ -913,17 +976,26 @@ 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:47
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:48
msgctxt "widget"
msgid "Checkout"
msgstr "Buchung"
#: pretix/static/pretixpresale/js/widget/widget.js:51
#: pretix/static/pretixpresale/js/widget/widget.v1.js:49
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:49
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.v1.js:50
msgctxt "widget"
msgid ""
"We could not create your cart, since there are currently too many users in "
@@ -933,12 +1005,14 @@ msgstr ""
"diesem Ticketshop sind. Bitte klicke \"Weiter\" um es in einem neuen Tab "
"erneut zu versuchen."
#: pretix/static/pretixpresale/js/widget/widget.js:51
#: pretix/static/pretixpresale/js/widget/widget.js:54
#: pretix/static/pretixpresale/js/widget/widget.v1.js:52
msgctxt "widget"
msgid "Waiting list"
msgstr "Warteliste"
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.v1.js:53
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
@@ -947,87 +1021,116 @@ 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:54
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.v1.js:55
msgctxt "widget"
msgid "Resume checkout"
msgstr "Kauf fortsetzen"
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.v1.js:56
msgctxt "widget"
msgid "Redeem a voucher"
msgstr "Gutschein einlösen"
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.v1.js:57
msgctxt "widget"
msgid "Redeem"
msgstr "Einlösen"
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/js/widget/widget.v1.js:58
msgctxt "widget"
msgid "Voucher code"
msgstr "Gutscheincode"
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/js/widget/widget.v1.js:59
msgctxt "widget"
msgid "Close"
msgstr "Schließen"
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:60
msgctxt "widget"
msgid "Continue"
msgstr "Fortfahren"
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.v1.js:61
msgctxt "widget"
msgid "Show variants"
msgstr "Varianten zeigen"
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.v1.js:62
msgctxt "widget"
msgid "Hide variants"
msgstr "Varianten verstecken"
#: pretix/static/pretixpresale/js/widget/widget.js:62
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.v1.js:63
msgctxt "widget"
msgid "Choose a different event"
msgstr "Andere Veranstaltung auswählen"
#: pretix/static/pretixpresale/js/widget/widget.js:63
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.v1.js:64
msgctxt "widget"
msgid "Choose a different date"
msgstr "Anderen Termin auswählen"
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.v1.js:65
msgctxt "widget"
msgid "Back"
msgstr "Zurück"
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.v1.js:66
msgctxt "widget"
msgid "Next month"
msgstr "Nächster Monat"
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.v1.js:67
msgctxt "widget"
msgid "Previous month"
msgstr "Vorheriger Monat"
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.v1.js:68
msgctxt "widget"
msgid "Next week"
msgstr "Nächste Woche"
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/js/widget/widget.v1.js:69
msgctxt "widget"
msgid "Previous week"
msgstr "Vorherige Woche"
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.v1.js:70
msgctxt "widget"
msgid "Open seat selection"
msgstr "Saalplan öffnen"
msgstr "Sitzplan öffnen"
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.v1.js:71
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -1038,87 +1141,166 @@ 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:71
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.v1.js:72
msgctxt "widget"
msgid "Load more"
msgstr "Mehr laden"
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.v1.js:74
msgid "Mo"
msgstr "Mo"
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.v1.js:75
msgid "Tu"
msgstr "Di"
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.v1.js:76
msgid "We"
msgstr "Mi"
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/js/widget/widget.v1.js:77
msgid "Th"
msgstr "Do"
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.v1.js:78
msgid "Fr"
msgstr "Fr"
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.v1.js:79
msgid "Sa"
msgstr "Sa"
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.v1.js:80
msgid "Su"
msgstr "So"
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/js/widget/widget.v1.js:81
msgid "Monday"
msgstr "Montag"
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/js/widget/widget.v1.js:82
msgid "Tuesday"
msgstr "Dienstag"
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/js/widget/widget.v1.js:83
msgid "Wednesday"
msgstr "Mittwoch"
#: pretix/static/pretixpresale/js/widget/widget.js:88
#: pretix/static/pretixpresale/js/widget/widget.v1.js:84
msgid "Thursday"
msgstr "Donnerstag"
#: pretix/static/pretixpresale/js/widget/widget.js:89
#: pretix/static/pretixpresale/js/widget/widget.v1.js:85
msgid "Friday"
msgstr "Freitag"
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/js/widget/widget.v1.js:86
msgid "Saturday"
msgstr "Samstag"
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.v1.js:87
msgid "Sunday"
msgstr "Sonntag"
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.v1.js:90
msgid "January"
msgstr "Januar"
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.v1.js:91
msgid "February"
msgstr "Februar"
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.v1.js:92
msgid "March"
msgstr "März"
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.v1.js:93
msgid "April"
msgstr "April"
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.v1.js:94
msgid "May"
msgstr "Mai"
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.v1.js:95
msgid "June"
msgstr "Juni"
#: pretix/static/pretixpresale/js/widget/widget.js:88
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.v1.js:96
msgid "July"
msgstr "Juli"
#: pretix/static/pretixpresale/js/widget/widget.js:89
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.v1.js:97
msgid "August"
msgstr "August"
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/js/widget/widget.js:102
#: pretix/static/pretixpresale/js/widget/widget.v1.js:98
msgid "September"
msgstr "September"
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.js:103
#: pretix/static/pretixpresale/js/widget/widget.v1.js:99
msgid "October"
msgstr "Oktober"
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:104
#: pretix/static/pretixpresale/js/widget/widget.v1.js:100
msgid "November"
msgstr "November"
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:105
#: pretix/static/pretixpresale/js/widget/widget.v1.js:101
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
+2187 -2017
View File
File diff suppressed because it is too large Load Diff
+299 -148
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-25 15:46+0000\n"
"POT-Creation-Date: 2025-05-30 10:36+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -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:92
msgid "Continue"
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 ""
@@ -583,16 +589,16 @@ msgstr ""
msgid "Ticket design"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1259
#: pretix/static/pretixcontrol/js/ui/editor.js:1258
msgid "Saving failed."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1328
#: pretix/static/pretixcontrol/js/ui/editor.js:1379
#: pretix/static/pretixcontrol/js/ui/editor.js:1327
#: pretix/static/pretixcontrol/js/ui/editor.js:1378
msgid "Error while uploading your PDF file, please try again."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1362
#: pretix/static/pretixcontrol/js/ui/editor.js:1361
msgid "Do you really want to leave the editor without saving your changes?"
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:318
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:322
msgid "Your color has decent contrast and is probably good-enough to read!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:326
#: 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:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
#: 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:460
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:461
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:465
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:808
#: pretix/static/pretixcontrol/js/ui/main.js:782
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:811
#: pretix/static/pretixcontrol/js/ui/main.js:785
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:969
#: pretix/static/pretixcontrol/js/ui/main.js:943
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1009
#: pretix/static/pretixcontrol/js/ui/main.js:983
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1090
#: pretix/static/pretixcontrol/js/ui/main.js:1064
msgid "You have unsaved changes!"
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:48
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:50
msgid "Cart expired"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:59
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Your cart is about to expire."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:64
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:203
#: pretix/static/pretixpresale/js/ui/cart.js:86
msgid "Your cart has expired."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:89
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:90
msgid "Do you want to renew the reservation period?"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:93
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:211
#: pretix/static/pretixpresale/js/ui/main.js:202
msgid "You get %(currency)s %(amount)s back"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:227
#: 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:445
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:497
msgid "required"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:541
#: pretix/static/pretixpresale/js/ui/main.js:561
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:552
#: pretix/static/pretixpresale/js/ui/main.js:558
msgid "Your local time:"
msgstr ""
@@ -731,270 +749,348 @@ msgid "Google Pay"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:16
#: pretix/static/pretixpresale/js/widget/widget.v1.js:16
msgctxt "widget"
msgid "Quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:17
#: pretix/static/pretixpresale/js/widget/widget.v1.js:17
msgctxt "widget"
msgid "Decrease quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:18
#: pretix/static/pretixpresale/js/widget/widget.v1.js:18
msgctxt "widget"
msgid "Increase quantity"
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:19
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/js/widget/widget.v1.js:20
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:21
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:22
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.v1.js:23
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.v1.js:24
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:25
msgctxt "widget"
msgid "Sold out"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.v1.js:26
msgctxt "widget"
msgid "Buy"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.v1.js:27
msgctxt "widget"
msgid "Register"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.v1.js:28
msgctxt "widget"
msgid "Reserved"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.v1.js:29
msgctxt "widget"
msgid "FREE"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.v1.js:30
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:31
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:32
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:33
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:34
msgctxt "widget"
msgid "incl. taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/js/widget/widget.v1.js:35
msgctxt "widget"
msgid "plus taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.v1.js:36
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:37
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:38
#: pretix/static/pretixpresale/js/widget/widget.v1.js:41
msgctxt "widget"
msgid "Not yet available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/js/widget/widget.v1.js:39
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.v1.js:40
msgctxt "widget"
msgid "Currently not available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.v1.js:42
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:43
msgctxt "widget"
msgid "Close ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.js:46
#: pretix/static/pretixpresale/js/widget/widget.v1.js:44
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:45
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:47
msgctxt "widget"
msgid "Open ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:48
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/js/widget/widget.v1.js:48
msgctxt "widget"
msgid "Checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:51
#: pretix/static/pretixpresale/js/widget/widget.v1.js:49
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.v1.js:50
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:51
#: pretix/static/pretixpresale/js/widget/widget.js:54
#: pretix/static/pretixpresale/js/widget/widget.v1.js:52
msgctxt "widget"
msgid "Waiting list"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.v1.js:53
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:54
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.v1.js:55
msgctxt "widget"
msgid "Resume checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.v1.js:56
msgctxt "widget"
msgid "Redeem a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.v1.js:57
msgctxt "widget"
msgid "Redeem"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/js/widget/widget.v1.js:58
msgctxt "widget"
msgid "Voucher code"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/js/widget/widget.v1.js:59
msgctxt "widget"
msgid "Close"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:59
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:62
msgctxt "widget"
msgid "Choose a different event"
msgid "Close checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:63
msgctxt "widget"
msgid "Choose a different date"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/js/widget/widget.v1.js:60
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.v1.js:61
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.v1.js:62
msgctxt "widget"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.v1.js:63
msgctxt "widget"
msgid "Choose a different event"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.v1.js:64
msgctxt "widget"
msgid "Choose a different date"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.v1.js:65
msgctxt "widget"
msgid "Back"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.v1.js:66
msgctxt "widget"
msgid "Next month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.v1.js:67
msgctxt "widget"
msgid "Previous month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.v1.js:68
msgctxt "widget"
msgid "Next week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/js/widget/widget.v1.js:69
msgctxt "widget"
msgid "Previous week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.v1.js:70
msgctxt "widget"
msgid "Open seat selection"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.v1.js:71
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -1002,83 +1098,138 @@ msgid ""
"again."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.v1.js:72
msgctxt "widget"
msgid "Load more"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.v1.js:74
msgid "Mo"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.v1.js:75
msgid "Tu"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.v1.js:76
msgid "We"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/js/widget/widget.v1.js:77
msgid "Th"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.v1.js:78
msgid "Fr"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.v1.js:79
msgid "Sa"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.v1.js:80
msgid "Su"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "April"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:81
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "May"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:82
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "June"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:83
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:88
msgid "July"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:84
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:89
msgid "August"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:85
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "September"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:86
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.v1.js:87
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.v1.js:90
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.v1.js:91
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.v1.js:92
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.v1.js:93
msgid "April"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.v1.js:94
msgid "May"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.v1.js:95
msgid "June"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.v1.js:96
msgid "July"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.v1.js:97
msgid "August"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:102
#: pretix/static/pretixpresale/js/widget/widget.v1.js:98
msgid "September"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:103
#: pretix/static/pretixpresale/js/widget/widget.v1.js:99
msgid "October"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:104
#: pretix/static/pretixpresale/js/widget/widget.v1.js:100
msgid "November"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:105
#: pretix/static/pretixpresale/js/widget/widget.v1.js:101
msgid "December"
msgstr ""
File diff suppressed because it is too large Load Diff
+304 -131
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-25 15:46+0000\n"
"POT-Creation-Date: 2025-05-30 10:36+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:92
#, fuzzy
#| msgctxt "widget"
#| msgid "Continue"
@@ -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 "Κλείσιμο μηνύματος"
@@ -636,16 +644,16 @@ msgstr "Αντικείμενο"
msgid "Ticket design"
msgstr "Σχεδιασμός εισιτηρίων"
#: pretix/static/pretixcontrol/js/ui/editor.js:1259
#: pretix/static/pretixcontrol/js/ui/editor.js:1258
msgid "Saving failed."
msgstr "Η αποθήκευση απέτυχε."
#: pretix/static/pretixcontrol/js/ui/editor.js:1328
#: pretix/static/pretixcontrol/js/ui/editor.js:1379
#: pretix/static/pretixcontrol/js/ui/editor.js:1327
#: pretix/static/pretixcontrol/js/ui/editor.js:1378
msgid "Error while uploading your PDF file, please try again."
msgstr "Σφάλμα κατά τη μεταφόρτωση του αρχείου PDF, δοκιμάστε ξανά."
#: pretix/static/pretixcontrol/js/ui/editor.js:1362
#: pretix/static/pretixcontrol/js/ui/editor.js:1361
msgid "Do you really want to leave the editor without saving your changes?"
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:318
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:322
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:326
#: 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:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
#: 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:460
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr "Όλα"
#: pretix/static/pretixcontrol/js/ui/main.js:461
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr "Κανένας"
#: pretix/static/pretixcontrol/js/ui/main.js:465
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:808
#: pretix/static/pretixcontrol/js/ui/main.js:782
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:811
#: pretix/static/pretixcontrol/js/ui/main.js:785
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:969
#: pretix/static/pretixcontrol/js/ui/main.js:943
msgid "Use a different name internally"
msgstr "Χρησιμοποιήστε διαφορετικό όνομα εσωτερικά"
#: pretix/static/pretixcontrol/js/ui/main.js:1009
#: pretix/static/pretixcontrol/js/ui/main.js:983
msgid "Click to close"
msgstr "Κάντε κλικ για να κλείσετε"
#: pretix/static/pretixcontrol/js/ui/main.js:1090
#: pretix/static/pretixcontrol/js/ui/main.js:1064
msgid "You have unsaved changes!"
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:48
#, 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:50
msgid "Cart expired"
msgstr "Το καλάθι έληξε"
#: pretix/static/pretixpresale/js/ui/cart.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:59
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Your cart is about to expire."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:64
#, 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:203
#: pretix/static/pretixpresale/js/ui/cart.js:86
#, fuzzy
#| msgid "Cart expired"
msgid "Your cart has expired."
msgstr "Το καλάθι έληξε"
#: pretix/static/pretixpresale/js/ui/cart.js:89
#, 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:90
msgid "Do you want to renew the reservation period?"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:93
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:211
#: 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:227
#: 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:445
msgid "Please enter a quantity for one of the ticket types."
msgstr "Εισαγάγετε μια ποσότητα για έναν από τους τύπους εισιτηρίων."
#: pretix/static/pretixpresale/js/ui/main.js:497
#, fuzzy
#| msgid "Cart expired"
msgid "required"
msgstr "Το καλάθι έληξε"
#: pretix/static/pretixpresale/js/ui/main.js:541
#: pretix/static/pretixpresale/js/ui/main.js:561
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:552
#: pretix/static/pretixpresale/js/ui/main.js:558
msgid "Your local time:"
msgstr ""
@@ -805,49 +829,68 @@ msgid "Google Pay"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:16
#: pretix/static/pretixpresale/js/widget/widget.v1.js:16
msgctxt "widget"
msgid "Quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:17
#: pretix/static/pretixpresale/js/widget/widget.v1.js:17
msgctxt "widget"
msgid "Decrease quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:18
#: pretix/static/pretixpresale/js/widget/widget.v1.js:18
msgctxt "widget"
msgid "Increase quantity"
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:19
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/js/widget/widget.v1.js:20
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:21
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:22
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.v1.js:23
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.v1.js:24
#, fuzzy, javascript-format
#| msgctxt "widget"
#| msgid "See variations"
@@ -855,75 +898,90 @@ msgctxt "widget"
msgid "Select variant %s"
msgstr "Δείτε παραλλαγές"
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.v1.js:25
msgctxt "widget"
msgid "Sold out"
msgstr "Εξαντλημένα"
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.v1.js:26
msgctxt "widget"
msgid "Buy"
msgstr "Αγορά"
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.v1.js:27
msgctxt "widget"
msgid "Register"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.v1.js:28
msgctxt "widget"
msgid "Reserved"
msgstr "Κατοχυρωμένα"
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.v1.js:29
msgctxt "widget"
msgid "FREE"
msgstr "ΔΩΡΕΑΝ"
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.v1.js:30
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:31
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:32
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:33
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:34
msgctxt "widget"
msgid "incl. taxes"
msgstr "συμπεριλαμβανομένων των φόρων"
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/js/widget/widget.v1.js:35
msgctxt "widget"
msgid "plus taxes"
msgstr "συν τους φόρους"
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.v1.js:36
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:37
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:38
#: pretix/static/pretixpresale/js/widget/widget.v1.js:41
#, fuzzy
#| msgctxt "widget"
#| msgid "currently available: %s"
@@ -931,12 +989,14 @@ msgctxt "widget"
msgid "Not yet available"
msgstr "διαθέσιμη προς το παρόν:%s"
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/js/widget/widget.v1.js:39
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.v1.js:40
#, fuzzy
#| msgctxt "widget"
#| msgid "currently available: %s"
@@ -944,30 +1004,35 @@ msgctxt "widget"
msgid "Currently not available"
msgstr "διαθέσιμη προς το παρόν:%s"
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.v1.js:42
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:43
msgctxt "widget"
msgid "Close ticket shop"
msgstr "Κλείστε το κατάστημα εισιτηρίων"
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.js:46
#: pretix/static/pretixpresale/js/widget/widget.v1.js:44
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:45
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:47
#, fuzzy
#| msgctxt "widget"
#| msgid "Close ticket shop"
@@ -975,25 +1040,38 @@ msgctxt "widget"
msgid "Open ticket shop"
msgstr "Κλείστε το κατάστημα εισιτηρίων"
#: pretix/static/pretixpresale/js/widget/widget.js:48
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/js/widget/widget.v1.js:48
#, fuzzy
#| msgctxt "widget"
#| msgid "Resume checkout"
msgctxt "widget"
msgid "Checkout"
msgstr "Συνεχίστε την ολοκλήρωση της αγοράς"
#: pretix/static/pretixpresale/js/widget/widget.js:51
#: pretix/static/pretixpresale/js/widget/widget.v1.js:49
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
"Δεν ήταν δυνατή η δημιουργία του καλαθιού. Παρακαλώ προσπαθήστε ξανά αργότερα"
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.v1.js:50
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:51
#: pretix/static/pretixpresale/js/widget/widget.js:54
#: pretix/static/pretixpresale/js/widget/widget.v1.js:52
msgctxt "widget"
msgid "Waiting list"
msgstr "Λίστα αναμονής"
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.v1.js:53
msgctxt "widget"
msgid ""
"You currently have an active cart for this event. If you select more "
@@ -1002,37 +1080,57 @@ msgstr ""
"Αυτήν τη στιγμή έχετε προϊόντα στο καλάθι για αυτήν την εκδήλωση. Αν "
"επιλέξετε περισσότερα προϊόντα, θα προστεθούν στο υπάρχον καλάθι σας."
#: pretix/static/pretixpresale/js/widget/widget.js:54
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.v1.js:55
msgctxt "widget"
msgid "Resume checkout"
msgstr "Συνεχίστε την ολοκλήρωση της αγοράς"
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.v1.js:56
msgctxt "widget"
msgid "Redeem a voucher"
msgstr "Εξαργυρώστε ένα κουπόνι"
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.v1.js:57
msgctxt "widget"
msgid "Redeem"
msgstr "Εξαργυρώστε"
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/js/widget/widget.v1.js:58
msgctxt "widget"
msgid "Voucher code"
msgstr "Κωδικός κουπονιού"
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/js/widget/widget.v1.js:59
msgctxt "widget"
msgid "Close"
msgstr "Κλείσιμο"
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:60
msgctxt "widget"
msgid "Continue"
msgstr "Συνέχεια"
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.v1.js:61
#, fuzzy
#| msgctxt "widget"
#| msgid "See variations"
@@ -1040,7 +1138,8 @@ msgctxt "widget"
msgid "Show variants"
msgstr "Δείτε παραλλαγές"
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.v1.js:62
#, fuzzy
#| msgctxt "widget"
#| msgid "See variations"
@@ -1048,37 +1147,44 @@ msgctxt "widget"
msgid "Hide variants"
msgstr "Δείτε παραλλαγές"
#: pretix/static/pretixpresale/js/widget/widget.js:62
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.v1.js:63
msgctxt "widget"
msgid "Choose a different event"
msgstr "Επιλέξτε διαφορετική εκδήλωση"
#: pretix/static/pretixpresale/js/widget/widget.js:63
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.v1.js:64
msgctxt "widget"
msgid "Choose a different date"
msgstr "Επιλέξτε διαφορετική ημερομηνία"
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.v1.js:65
msgctxt "widget"
msgid "Back"
msgstr "Πίσω"
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.v1.js:66
msgctxt "widget"
msgid "Next month"
msgstr "Επόμενος μήνας"
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.v1.js:67
msgctxt "widget"
msgid "Previous month"
msgstr "Προηγούμενος μήνας"
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.v1.js:68
msgctxt "widget"
msgid "Next week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/js/widget/widget.v1.js:69
#, fuzzy
#| msgctxt "widget"
#| msgid "Previous month"
@@ -1086,12 +1192,14 @@ msgctxt "widget"
msgid "Previous week"
msgstr "Προηγούμενος μήνας"
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.v1.js:70
msgctxt "widget"
msgid "Open seat selection"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.v1.js:71
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -1099,87 +1207,152 @@ msgid ""
"again."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.v1.js:72
msgctxt "widget"
msgid "Load more"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.v1.js:74
msgid "Mo"
msgstr "Δευ"
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.v1.js:75
msgid "Tu"
msgstr "Τρι"
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.v1.js:76
msgid "We"
msgstr "Τετ"
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/js/widget/widget.v1.js:77
msgid "Th"
msgstr "Πεμ"
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.v1.js:78
msgid "Fr"
msgstr "Παρ"
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.v1.js:79
msgid "Sa"
msgstr "Σαβ"
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.v1.js:80
msgid "Su"
msgstr "Κυρ"
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/js/widget/widget.v1.js:81
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/js/widget/widget.v1.js:82
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/js/widget/widget.v1.js:83
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:88
#: pretix/static/pretixpresale/js/widget/widget.v1.js:84
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:89
#: pretix/static/pretixpresale/js/widget/widget.v1.js:85
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/js/widget/widget.v1.js:86
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.v1.js:87
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.v1.js:90
msgid "January"
msgstr "Ιανουάριος"
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.v1.js:91
msgid "February"
msgstr "Φεβρουάριος"
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.v1.js:92
msgid "March"
msgstr "Μάρτιος"
#: pretix/static/pretixpresale/js/widget/widget.js:85
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.v1.js:93
msgid "April"
msgstr "Απρίλιος"
#: pretix/static/pretixpresale/js/widget/widget.js:86
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.v1.js:94
msgid "May"
msgstr "Μάιος"
#: pretix/static/pretixpresale/js/widget/widget.js:87
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.v1.js:95
msgid "June"
msgstr "Ιούνιος"
#: pretix/static/pretixpresale/js/widget/widget.js:88
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.v1.js:96
msgid "July"
msgstr "Ιούλιος"
#: pretix/static/pretixpresale/js/widget/widget.js:89
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.v1.js:97
msgid "August"
msgstr "Αύγουστος"
#: pretix/static/pretixpresale/js/widget/widget.js:90
#: pretix/static/pretixpresale/js/widget/widget.js:102
#: pretix/static/pretixpresale/js/widget/widget.v1.js:98
msgid "September"
msgstr "Σεπτέμβριος"
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.js:103
#: pretix/static/pretixpresale/js/widget/widget.v1.js:99
msgid "October"
msgstr "Οκτώβριος"
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:104
#: pretix/static/pretixpresale/js/widget/widget.v1.js:100
msgid "November"
msgstr "Νοέμβριος"
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:105
#: pretix/static/pretixpresale/js/widget/widget.v1.js:101
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
+299 -148
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-25 15:46+0000\n"
"POT-Creation-Date: 2025-05-30 10:36+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -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:92
msgid "Continue"
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 ""
@@ -583,16 +589,16 @@ msgstr ""
msgid "Ticket design"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1259
#: pretix/static/pretixcontrol/js/ui/editor.js:1258
msgid "Saving failed."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1328
#: pretix/static/pretixcontrol/js/ui/editor.js:1379
#: pretix/static/pretixcontrol/js/ui/editor.js:1327
#: pretix/static/pretixcontrol/js/ui/editor.js:1378
msgid "Error while uploading your PDF file, please try again."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/editor.js:1362
#: pretix/static/pretixcontrol/js/ui/editor.js:1361
msgid "Do you really want to leave the editor without saving your changes?"
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:318
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:322
msgid "Your color has decent contrast and is probably good-enough to read!"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:326
#: 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:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
#: 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:460
#: pretix/static/pretixcontrol/js/ui/main.js:434
msgid "All"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:461
#: pretix/static/pretixcontrol/js/ui/main.js:435
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:465
#: pretix/static/pretixcontrol/js/ui/main.js:439
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:808
#: pretix/static/pretixcontrol/js/ui/main.js:782
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:811
#: pretix/static/pretixcontrol/js/ui/main.js:785
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:969
#: pretix/static/pretixcontrol/js/ui/main.js:943
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1009
#: pretix/static/pretixcontrol/js/ui/main.js:983
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1090
#: pretix/static/pretixcontrol/js/ui/main.js:1064
msgid "You have unsaved changes!"
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:48
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:50
msgid "Cart expired"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:50
#: pretix/static/pretixpresale/js/ui/cart.js:59
#: pretix/static/pretixpresale/js/ui/cart.js:87
msgid "Your cart is about to expire."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:64
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:203
#: pretix/static/pretixpresale/js/ui/cart.js:86
msgid "Your cart has expired."
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:89
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:90
msgid "Do you want to renew the reservation period?"
msgstr ""
#: pretix/static/pretixpresale/js/ui/cart.js:93
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:211
#: pretix/static/pretixpresale/js/ui/main.js:202
msgid "You get %(currency)s %(amount)s back"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:227
#: 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:445
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:497
msgid "required"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:541
#: pretix/static/pretixpresale/js/ui/main.js:561
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:552
#: pretix/static/pretixpresale/js/ui/main.js:558
msgid "Your local time:"
msgstr ""
@@ -731,270 +749,348 @@ msgid "Google Pay"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:16
#: pretix/static/pretixpresale/js/widget/widget.v1.js:16
msgctxt "widget"
msgid "Quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:17
#: pretix/static/pretixpresale/js/widget/widget.v1.js:17
msgctxt "widget"
msgid "Decrease quantity"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:18
#: pretix/static/pretixpresale/js/widget/widget.v1.js:18
msgctxt "widget"
msgid "Increase quantity"
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:19
msgctxt "widget"
msgid "Price"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:22
#: pretix/static/pretixpresale/js/widget/widget.v1.js:20
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:21
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:22
msgctxt "widget"
msgid "Select"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:23
#: pretix/static/pretixpresale/js/widget/widget.js:25
#: pretix/static/pretixpresale/js/widget/widget.v1.js:23
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:24
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.v1.js:24
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:25
msgctxt "widget"
msgid "Sold out"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:26
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.v1.js:26
msgctxt "widget"
msgid "Buy"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:27
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.v1.js:27
msgctxt "widget"
msgid "Register"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:28
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.v1.js:28
msgctxt "widget"
msgid "Reserved"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:29
#: pretix/static/pretixpresale/js/widget/widget.js:31
#: pretix/static/pretixpresale/js/widget/widget.v1.js:29
msgctxt "widget"
msgid "FREE"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:30
#: pretix/static/pretixpresale/js/widget/widget.js:32
#: pretix/static/pretixpresale/js/widget/widget.v1.js:30
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:31
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:32
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:33
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:34
msgctxt "widget"
msgid "incl. taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:35
#: pretix/static/pretixpresale/js/widget/widget.js:37
#: pretix/static/pretixpresale/js/widget/widget.v1.js:35
msgctxt "widget"
msgid "plus taxes"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:36
#: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.v1.js:36
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:37
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:38
#: pretix/static/pretixpresale/js/widget/widget.v1.js:41
msgctxt "widget"
msgid "Not yet available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:39
#: pretix/static/pretixpresale/js/widget/widget.js:41
#: pretix/static/pretixpresale/js/widget/widget.v1.js:39
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:40
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.v1.js:40
msgctxt "widget"
msgid "Currently not available"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:42
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.v1.js:42
#, 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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:43
msgctxt "widget"
msgid "Close ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:44
#: pretix/static/pretixpresale/js/widget/widget.js:46
#: pretix/static/pretixpresale/js/widget/widget.v1.js:44
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:45
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
#: pretix/static/pretixpresale/js/widget/widget.v1.js:47
msgctxt "widget"
msgid "Open ticket shop"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:48
#: pretix/static/pretixpresale/js/widget/widget.js:50
#: pretix/static/pretixpresale/js/widget/widget.v1.js:48
msgctxt "widget"
msgid "Checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:51
#: pretix/static/pretixpresale/js/widget/widget.v1.js:49
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:49
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.v1.js:50
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:51
#: pretix/static/pretixpresale/js/widget/widget.js:54
#: pretix/static/pretixpresale/js/widget/widget.v1.js:52
msgctxt "widget"
msgid "Waiting list"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:52
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.v1.js:53
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:54
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.v1.js:55
msgctxt "widget"
msgid "Resume checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:55
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.v1.js:56
msgctxt "widget"
msgid "Redeem a voucher"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:56
#: pretix/static/pretixpresale/js/widget/widget.js:59
#: pretix/static/pretixpresale/js/widget/widget.v1.js:57
msgctxt "widget"
msgid "Redeem"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:57
#: pretix/static/pretixpresale/js/widget/widget.js:60
#: pretix/static/pretixpresale/js/widget/widget.v1.js:58
msgctxt "widget"
msgid "Voucher code"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:58
#: pretix/static/pretixpresale/js/widget/widget.js:61
#: pretix/static/pretixpresale/js/widget/widget.v1.js:59
msgctxt "widget"
msgid "Close"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:59
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:60
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:61
msgctxt "widget"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:62
msgctxt "widget"
msgid "Choose a different event"
msgid "Close checkout"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:63
msgctxt "widget"
msgid "Choose a different date"
msgid "You cannot cancel this operation. Please wait for loading to finish."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:64
#: pretix/static/pretixpresale/js/widget/widget.v1.js:60
msgctxt "widget"
msgid "Continue"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.v1.js:61
msgctxt "widget"
msgid "Show variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.v1.js:62
msgctxt "widget"
msgid "Hide variants"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.v1.js:63
msgctxt "widget"
msgid "Choose a different event"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.v1.js:64
msgctxt "widget"
msgid "Choose a different date"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.v1.js:65
msgctxt "widget"
msgid "Back"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:65
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.v1.js:66
msgctxt "widget"
msgid "Next month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:66
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.v1.js:67
msgctxt "widget"
msgid "Previous month"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:67
#: pretix/static/pretixpresale/js/widget/widget.js:72
#: pretix/static/pretixpresale/js/widget/widget.v1.js:68
msgctxt "widget"
msgid "Next week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:68
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/js/widget/widget.v1.js:69
msgctxt "widget"
msgid "Previous week"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:69
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.v1.js:70
msgctxt "widget"
msgid "Open seat selection"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:70
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.v1.js:71
msgctxt "widget"
msgid ""
"Some or all ticket categories are currently sold out. If you want, you can "
@@ -1002,83 +1098,138 @@ msgid ""
"again."
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:71
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.v1.js:72
msgctxt "widget"
msgid "Load more"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:73
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.v1.js:74
msgid "Mo"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:74
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.v1.js:75
msgid "Tu"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:75
#: pretix/static/pretixpresale/js/widget/widget.js:80
#: pretix/static/pretixpresale/js/widget/widget.v1.js:76
msgid "We"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:76
#: pretix/static/pretixpresale/js/widget/widget.js:81
#: pretix/static/pretixpresale/js/widget/widget.v1.js:77
msgid "Th"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:77
#: pretix/static/pretixpresale/js/widget/widget.js:82
#: pretix/static/pretixpresale/js/widget/widget.v1.js:78
msgid "Fr"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:78
#: pretix/static/pretixpresale/js/widget/widget.js:83
#: pretix/static/pretixpresale/js/widget/widget.v1.js:79
msgid "Sa"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:79
#: pretix/static/pretixpresale/js/widget/widget.js:84
#: pretix/static/pretixpresale/js/widget/widget.v1.js:80
msgid "Su"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "April"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:81
msgid "Monday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "May"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:82
msgid "Tuesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "June"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:83
msgid "Wednesday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:88
msgid "July"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:84
msgid "Thursday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:89
msgid "August"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:85
msgid "Friday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "September"
#: pretix/static/pretixpresale/js/widget/widget.v1.js:86
msgid "Saturday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:91
#: pretix/static/pretixpresale/js/widget/widget.v1.js:87
msgid "Sunday"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:94
#: pretix/static/pretixpresale/js/widget/widget.v1.js:90
msgid "January"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:95
#: pretix/static/pretixpresale/js/widget/widget.v1.js:91
msgid "February"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:96
#: pretix/static/pretixpresale/js/widget/widget.v1.js:92
msgid "March"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:97
#: pretix/static/pretixpresale/js/widget/widget.v1.js:93
msgid "April"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:98
#: pretix/static/pretixpresale/js/widget/widget.v1.js:94
msgid "May"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:99
#: pretix/static/pretixpresale/js/widget/widget.v1.js:95
msgid "June"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:100
#: pretix/static/pretixpresale/js/widget/widget.v1.js:96
msgid "July"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:101
#: pretix/static/pretixpresale/js/widget/widget.v1.js:97
msgid "August"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:102
#: pretix/static/pretixpresale/js/widget/widget.v1.js:98
msgid "September"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:103
#: pretix/static/pretixpresale/js/widget/widget.v1.js:99
msgid "October"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:92
#: pretix/static/pretixpresale/js/widget/widget.js:104
#: pretix/static/pretixpresale/js/widget/widget.v1.js:100
msgid "November"
msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:93
#: pretix/static/pretixpresale/js/widget/widget.js:105
#: pretix/static/pretixpresale/js/widget/widget.v1.js:101
msgid "December"
msgstr ""
File diff suppressed because it is too large Load Diff

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