Compare commits

...

89 Commits

Author SHA1 Message Date
Raphael Michel 118c206bb1 Set locale properly if locale is already in query string 2025-01-07 11:05:15 +01:00
Raphael Michel a56c6ae1e0 Fix secret regeneration 2025-01-03 17:21:12 +01:00
Raphael Michel 1efd952a19 Revert "Update pyjwt requirement from ==2.9.* to ==2.10.* (#4639)"
This reverts commit 71caa17879.
2025-01-03 17:10:59 +01:00
Hector ddd0db3d98 Translations: Update Spanish
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Hector dde724d0be Translations: Update Spanish
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Hijiri Umemoto 9f55187690 Translations: Update Japanese
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Hijiri Umemoto e572bfb752 Translations: Update Japanese
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Hijiri Umemoto beccdf8dad Translations: Update Korean
Currently translated at 0.2% (17 of 5836 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Hijiri Umemoto b141ea4ed5 Translations: Update Japanese
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Hijiri Umemoto 32dd125b65 Translations: Update Turkish
Currently translated at 43.0% (2515 of 5836 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Hijiri Umemoto b5794780da Translations: Update Japanese
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Hijiri Umemoto 835c08f1ca Translations: Update Japanese
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Wiktor Przybylski a79d5fddda Translations: Update Polish
Currently translated at 98.5% (5750 of 5836 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Hijiri Umemoto beb03e07e0 Translations: Update Japanese
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Hijiri Umemoto dd2e5d09f9 Translations: Update Japanese
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Hijiri Umemoto 5c2456e92e Translations: Update Japanese
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Hijiri Umemoto 3579a7f298 Translations: Update Japanese
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Hijiri Umemoto 5dd20de745 Translations: Update Japanese
Currently translated at 100.0% (232 of 232 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Hijiri Umemoto 5708099fc9 Translations: Update Japanese
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Hijiri Umemoto 2c2e8e7d21 Translations: Update Japanese
Currently translated at 90.9% (211 of 232 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Hijiri 5993482f6c Translations: Update Japanese
Currently translated at 98.6% (5755 of 5836 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Hijiri c905659dfb Translations: Update Japanese
Currently translated at 78.8% (183 of 232 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Hijiri 196c131ac9 Translations: Update Japanese
Currently translated at 98.5% (5749 of 5836 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Aarni Heinonen a554433fad Translations: Update Chinese (Simplified Han script)
Currently translated at 50.1% (2924 of 5836 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Aarni Heinonen c552dd876c Translations: Update Finnish
Currently translated at 24.4% (1429 of 5836 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Aarni Heinonen 105ae8592d Translations: Update Finnish
Currently translated at 20.1% (1175 of 5836 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Hijiri ca4540eeb7 Translations: Update Japanese
Currently translated at 5.6% (331 of 5836 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Dimitris Tsimpidis 381366a248 Translations: Update Greek
Currently translated at 41.8% (97 of 232 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Dimitris Tsimpidis 816a3ec994 Translations: Update Greek
Currently translated at 47.7% (2785 of 5836 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
Hijiri 88d3d12dbc Translations: Update Japanese
Currently translated at 4.0% (238 of 5836 strings)

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

powered by weblate
2025-01-03 15:31:39 +01:00
dependabot[bot] 71caa17879 Update pyjwt requirement from ==2.9.* to ==2.10.* (#4639)
Updates the requirements on [pyjwt](https://github.com/jpadilla/pyjwt) to permit the latest version.
- [Release notes](https://github.com/jpadilla/pyjwt/releases)
- [Changelog](https://github.com/jpadilla/pyjwt/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/jpadilla/pyjwt/compare/2.9.0...2.10.0)

---
updated-dependencies:
- dependency-name: pyjwt
  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-01-03 15:23:36 +01:00
dependabot[bot] 2ecdfde756 Bump @rollup/plugin-node-resolve in /src/pretix/static/npm_dir (#4728)
Bumps [@rollup/plugin-node-resolve](https://github.com/rollup/plugins/tree/HEAD/packages/node-resolve) from 15.3.0 to 16.0.0.
- [Changelog](https://github.com/rollup/plugins/blob/master/packages/node-resolve/CHANGELOG.md)
- [Commits](https://github.com/rollup/plugins/commits/commonjs-v16.0.0/packages/node-resolve)

---
updated-dependencies:
- dependency-name: "@rollup/plugin-node-resolve"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-03 15:23:19 +01:00
dependabot[bot] 1f753a57c5 Update pillow requirement from ==11.0.* to ==11.1.* (#4729)
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.0.0...11.1.0)

---
updated-dependencies:
- dependency-name: pillow
  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-01-03 15:22:58 +01:00
Raphael Michel 595c042624 Regenerate OrderPosition.web_secret when chaning other secrets 2025-01-03 15:21:45 +01:00
Raphael Michel 5a5a551c21 Fix tests failing after 2025-01-01 2025-01-03 15:21:32 +01:00
Raphael Michel e74793994a Fix invalid usage of re.split() on Python 3.13 2025-01-03 15:21:15 +01:00
Raphael Michel f1bdd3b7af Remove debug print 2024-12-25 18:58:00 +01:00
Raphael Michel 13c40f9bb7 API: Fix sales channels when copying events (Z#23177154, Z#23169537) 2024-12-20 14:09:10 +01:00
Raphael Michel 3e15e2a887 Raise minimum version of cryptography 2024-12-20 14:09:10 +01:00
Raphael Michel 7525ee853b Ticket preview: Fix incorrect type of sample price 2024-12-19 13:37:38 +01:00
Richard Schreiber f02b1be659 [A11y] Improve grouping and labels in widget’s product list 2024-12-18 15:24:28 +01:00
Raphael Michel 20f171b790 Order import: Respect sales channel when validating seats (#4707) 2024-12-18 13:57:29 +01:00
CVZ-es 22906dfa77 Translations: Update Spanish
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2024-12-18 13:49:18 +01:00
CVZ-es 5f74e661b3 Translations: Update French
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2024-12-18 13:49:18 +01:00
Richard Schreiber 5b99788354 Unify event list view on organizer and event-series (#4702) 2024-12-18 13:32:26 +01:00
Raphael Michel b45d58b60e Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2024-12-16 17:32:16 +01:00
Raphael Michel 2a58e958b0 Translations: Update German
Currently translated at 100.0% (5836 of 5836 strings)

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

powered by weblate
2024-12-16 17:32:16 +01:00
Raphael Michel e44695dfcf Extend spelling word lists 2024-12-16 17:30:25 +01:00
Raphael Michel 1d289088f4 Extend spelling word lists 2024-12-16 17:27:53 +01:00
Raphael Michel a9be6337bc Update po files
[CI skip]

Signed-off-by: Raphael Michel <michel@rami.io>
2024-12-16 15:20:40 +01:00
Raphael Michel df29d4e8c4 Bump django-i18nfield to 1.10.* (#4709) 2024-12-16 15:20:09 +01:00
Richard Schreiber bf2cabf7b6 Fix color differences for panel-heading in accordion-panel 2024-12-16 08:35:30 +01:00
Raphael Michel db614d36e6 Block access to manifests in default nginx configurations 2024-12-15 11:59:11 +01:00
Raphael Michel 13452b5d8c Make BaseInvoiceForm more reusable (#4669)
* Make BaseInvoiceForm more reusable

* Remove code
2024-12-13 16:28:21 +01:00
Raphael Michel 6422cd7858 API: Fix format of price calculation 2024-12-13 16:17:24 +01:00
dependabot[bot] 2e87cb5691 Bump nanoid from 3.3.7 to 3.3.8 in /src/pretix/static/npm_dir (#4706)
Bumps [nanoid](https://github.com/ai/nanoid) from 3.3.7 to 3.3.8.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.3.7...3.3.8)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-13 16:01:01 +01:00
Vasco Baleia b53ee938bf Translations: Update Portuguese (Portugal)
Currently translated at 86.5% (5003 of 5782 strings)

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

powered by weblate
2024-12-13 14:19:08 +01:00
Wikinaut ec3bdd4a57 Translations: Update German
Currently translated at 100.0% (5782 of 5782 strings)

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

powered by weblate
2024-12-13 14:19:08 +01:00
dependabot[bot] 7b607594d8 Update webauthn requirement from ==2.3.* to ==2.4.* (#4689)
Updates the requirements on [webauthn](https://github.com/duo-labs/py_webauthn) to permit the latest version.
- [Release notes](https://github.com/duo-labs/py_webauthn/releases)
- [Changelog](https://github.com/duo-labs/py_webauthn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/duo-labs/py_webauthn/compare/v2.3.0...v2.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-13 14:16:26 +01:00
Raphael Michel 53f129d5d3 Add codification of tax rates (#4372)
* draft

* .

* Rebase migration

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

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

* Test, isort, flake, migration rebase

* carry data & API

* Fix failing tests

* docs fixes

* Improve validation

* Tests

* More fixes

---------

Co-authored-by: Mira <weller@rami.io>
2024-12-13 12:04:38 +01:00
Mira a4385c8b6e Use new fieldset panels throughout checkout (#4688)
Use <fieldset> accordion-panels in checkout_customer, checkout_payment and 
order_pay_change. Unify markup in checkout_payment and order_pay_change. 
Adapt Javascript in the dynamic PayPal and Stripe payment forms.

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
2024-12-12 15:48:27 +01:00
Neriman Memmedli 3acae96021 Translations: Update Azerbaijani
Currently translated at 0.3% (21 of 5782 strings)

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

powered by weblate
2024-12-11 15:48:37 +01:00
Neriman Memmedli b9add5ff6f Translations: Add Azerbaijani 2024-12-11 15:48:37 +01:00
Patrick Chilton 4ca9813a1d Translations: Update Hungarian
Currently translated at 10.8% (630 of 5782 strings)

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

powered by weblate
2024-12-11 15:48:37 +01:00
Christiaan de Die le Clercq 347748896d Translations: Update Dutch
Currently translated at 100.0% (5782 of 5782 strings)

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

powered by weblate
2024-12-11 15:48:37 +01:00
Richard Schreiber 0f590caa18 [UI] Fix organizer event-list status-bubble overflow 2024-12-11 11:36:15 +01:00
Richard Schreiber 18801f2d1c Widget: add unique html_id to use in labels, etc. 2024-12-11 08:30:44 +01:00
Richard Schreiber e5f29bd592 Widget: add span around currency for easier styling 2024-12-11 08:29:55 +01:00
Martin Gross 1f904d482b Stripe: Add missing identifier for revolut_pay 2024-12-10 15:15:43 +01:00
Raphael Michel b8ad276f53 Fix duplicate field (Z#23168530) 2024-12-09 21:58:11 +01:00
Raphael Michel e109c37738 API: use correct validation exception 2024-12-09 14:17:27 +01:00
Raphael Michel 4d597d5be3 Stripe: Remove option to enable method_sofort (#4638) 2024-12-09 13:51:32 +01:00
Mira ae8ec42905 Fix backend validation if name is required as part of a required non-business invoice address (#4674)
---------

Co-authored-by: Raphael Michel <michel@rami.io>
2024-12-09 12:27:59 +01:00
Richard Schreiber e5b89e9b08 [A11y] fix color-contrast for event-list status-bubbles 2024-12-06 15:51:40 +01:00
Mira da91f5f117 Animation in <fieldset> accordion (#4682) 2024-12-06 12:46:40 +01:00
Richard Schreiber ae29240e58 [A11y] Improve number inputs for screen-readers 2024-12-06 11:11:36 +01:00
Richard Schreiber 74edf10b04 Move cursor fix for disabled fieldsets from bootstrap to presale 2024-12-06 11:07:11 +01:00
Richard Schreiber e2e0eca872 Fix accordion-radio fieldset css 2024-12-06 10:13:32 +01:00
Raphael Michel 6132e4a2c4 Remove re-implementations if i18nfield API integration 2024-12-05 17:56:30 +01:00
Raphael Michel 7df7d28518 Bump django-i18nfield to 1.9.5 2024-12-05 17:56:30 +01:00
Raphael Michel 11ab5c5eeb Event dashboard: Use intcomma in numbers (Z#23175343) (#4687) 2024-12-05 17:11:57 +01:00
CVZ-es 20211d2097 Translations: Update Spanish
Currently translated at 100.0% (5782 of 5782 strings)

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

powered by weblate
2024-12-05 13:46:11 +01:00
CVZ-es d760ad38bf Translations: Update French
Currently translated at 100.0% (232 of 232 strings)

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

powered by weblate
2024-12-05 13:46:11 +01:00
CVZ-es 69af2cee93 Translations: Update French
Currently translated at 100.0% (5782 of 5782 strings)

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

powered by weblate
2024-12-05 13:46:11 +01:00
Raphael Michel 6b199a2b9c Allow to enter gift cards into the voucher input (Z#23171961) (#4670) 2024-12-05 13:43:46 +01:00
Richard Schreiber 94a64ba53a Hide empty panels (#4684) 2024-12-05 12:08:33 +01:00
Raphael Michel 70f06a8f40 Fix an incorrect exception handling 2024-12-04 16:59:58 +01:00
Mira Weller a747ab154a Fix cursor on elements in disabled fieldsets' legends 2024-12-04 14:54:49 +01:00
Mira 6317233150 New accordion panels using <fieldset> (#4681) 2024-12-04 14:34:42 +01:00
190 changed files with 145877 additions and 95060 deletions
+8
View File
@@ -60,6 +60,14 @@ http {
deny all;
return 404;
}
location /static/staticfiles.json {
deny all;
return 404;
}
location /static/CACHE/manifest.json {
deny all;
return 404;
}
location /static/ {
alias /pretix/src/pretix/static.dist/;
access_log off;
@@ -248,6 +248,14 @@ The following snippet is an example on how to configure a nginx proxy for pretix
return 404;
}
location /static/staticfiles.json {
deny all;
return 404;
}
location /static/CACHE/manifest.json {
deny all;
return 404;
}
location /static/ {
alias /var/pretix/venv/lib/python3.11/site-packages/pretix/static.dist/;
access_log off;
+7
View File
@@ -97,6 +97,7 @@ lines list of objects The actual invo
├ gross_value money (string) Price including taxes
├ tax_value money (string) Tax amount included
├ tax_name string Name of used tax rate (e.g. "VAT")
├ tax_code string Codified reason for tax rate (or ``null``), see :ref:`rest-taxcodes`.
└ tax_rate decimal (string) Used tax rate
foreign_currency_display string If the invoice should also show the total and tax
amount in a different currency, this contains the
@@ -126,6 +127,10 @@ internal_reference string Customer's refe
The ``event`` attribute has been added. The organizer-level endpoint has been added.
.. versionchanged:: 2024.8
The ``tax_code`` attribute has been added.
List of all invoices
--------------------
@@ -203,6 +208,7 @@ List of all invoices
"gross_value": "23.00",
"tax_value": "0.00",
"tax_name": "VAT",
"tax_code": "S/standard",
"tax_rate": "0.00"
}
],
@@ -342,6 +348,7 @@ Fetching individual invoices
"gross_value": "23.00",
"tax_value": "0.00",
"tax_name": "VAT",
"tax_code": "S/standard",
"tax_rate": "0.00"
}
],
+16 -2
View File
@@ -84,6 +84,7 @@ fees list of objects List of fees in
├ tax_rate decimal (string) VAT rate applied for this fee
├ tax_value money (string) VAT included in this fee
├ tax_rule integer The ID of the used tax rule (or ``null``)
├ tax_code string Codified reason for tax rate (or ``null``), see :ref:`rest-taxcodes`.
└ canceled boolean Whether or not this fee has been canceled.
downloads list of objects List of ticket download options for order-wise ticket
downloading. This might be a multi-page PDF or a ZIP
@@ -159,6 +160,10 @@ cancellation_date datetime Time of order c
The ``cancellation_date`` attribute has been added and can also be used as an ordering key.
.. versionchanged:: 2025.1
The ``tax_code`` attribute has been added.
.. _order-position-resource:
Order position resource
@@ -195,6 +200,7 @@ voucher_budget_use money (string) Amount of money
are changed *after* the order was created. Can be ``null``.
tax_rate decimal (string) VAT rate applied for this position
tax_value money (string) VAT included in this position
tax_code string Codified reason for tax rate (or ``null``), see :ref:`rest-taxcodes`.
tax_rule integer The ID of the used tax rule (or ``null``)
secret string Secret code printed on the tickets for validation
addon_to integer Internal ID of the position this position is an add-on for (or ``null``)
@@ -255,6 +261,10 @@ pdf_data object Data object req
The attribute ``print_logs`` has been added.
.. versionchanged:: 2025.1
The ``tax_code`` attribute has been added.
.. _order-payment-resource:
Order payment resource
@@ -406,6 +416,7 @@ List of all orders
"tax_rate": "0.00",
"tax_value": "0.00",
"tax_rule": null,
"tax_code": null,
"secret": "z3fsn8jyufm5kpk768q69gkbyr5f4h6w",
"addon_to": null,
"subevent": null,
@@ -645,6 +656,7 @@ Fetching individual orders
"tax_rate": "0.00",
"tax_rule": null,
"tax_value": "0.00",
"tax_code": null,
"secret": "z3fsn8jyufm5kpk768q69gkbyr5f4h6w",
"addon_to": null,
"subevent": null,
@@ -843,7 +855,7 @@ Generating new secrets
.. http:post:: /api/v1/organizers/(organizer)/events/(event)/orders/(code)/regenerate_secrets/
Triggers generation of new ``secret`` attributes for both the order and all order positions.
Triggers generation of new ``secret`` and ``ẁeb_secret`` attributes for both the order and all order positions.
**Example request**:
@@ -874,7 +886,7 @@ Generating new secrets
.. http:post:: /api/v1/organizers/(organizer)/events/(event)/orderpositions/(id)/regenerate_secrets/
Triggers generation of a new ``secret`` attribute for a single order position.
Triggers generation of a new ``secret`` and ``web_secret`` attribute for a single order position.
**Example request**:
@@ -1613,6 +1625,7 @@ List of all order positions
"tax_rate": "0.00",
"tax_rule": null,
"tax_value": "0.00",
"tax_code": null,
"secret": "z3fsn8jyufm5kpk768q69gkbyr5f4h6w",
"discount": null,
"pseudonymization_id": "MQLJvANO3B",
@@ -1739,6 +1752,7 @@ Fetching individual positions
"tax_rate": "0.00",
"tax_rule": null,
"tax_value": "0.00",
"tax_code": null,
"secret": "z3fsn8jyufm5kpk768q69gkbyr5f4h6w",
"addon_to": null,
"subevent": null,
+47
View File
@@ -1,3 +1,8 @@
.. spelling:word-list::
EN16931
DSFinV-K
.. _rest-taxrules:
Tax rules
@@ -18,6 +23,7 @@ id integer Internal ID of
name multi-lingual string The tax rules' name
internal_name string An optional name that is only used in the backend
rate decimal (string) Tax rate in percent
code string Codified reason for tax rate (or ``null``), see :ref:`rest-taxcodes`.
price_includes_tax boolean If ``true`` (default), tax is assumed to be included in
the specified product price
eu_reverse_charge boolean **DEPRECATED**. If ``true``, EU reverse charge rules
@@ -42,6 +48,42 @@ custom_rules object Dynamic rules s
The ``custom_rules`` attribute has been added.
.. versionchanged:: 2023.8
The ``code`` attribute has been added.
.. _rest-taxcodes:
Tax codes
---------
For integration with external systems, such as electronic invoicing or bookkeeping systems, the tax rate itself is often
not sufficient information. For example, there could be many different reasons why a sale has a tax rate of 0 %, but the
external handling of the transaction depends on which reason applies. Therefore, pretix allows to supply a codified
reason that allows us to understand what the specific legal situation is. These tax codes are modeled after a combination
of the code lists from the European standard EN16931 and the German standard DSFinV-K.
The following codes are supported:
- ``S/standard`` -- Standard VAT rate in the merchant country
- ``S/reduced`` -- Reduced VAT rate in the merchant country
- ``S/averaged`` -- Averaged VAT rate in the merchant country (known use case: agricultural businesses in Germany)
- ``AE`` -- Reverse charge
- ``O`` -- Services outside of scope of tax
- ``E`` -- Exempt from tax (no reason given)
- ``E/<reason>`` -- Exempt from tax, where ``<reason>`` is one of the codes listed in the `VATEX code list`_ version 5.0.
- ``Z`` -- Zero-rated goods
- ``G`` -- Free export item, VAT not charged
- ``K`` -- VAT exempt for EEA intra-community supply of goods and services
- ``L`` -- Canary Islands general indirect tax
- ``M`` -- Tax for production, services and importation in Ceuta and Melilla
- ``B`` -- Transferred (VAT), only in Italy
The code set in the ``code`` attribute of the tax rule is used by default. When ``eu_reverse_charge`` is active, the
code is replaced by ``AE`` for reverse charge sales and by ``O`` for non-EU sales. When configuring custom rules, you
should actively set a ``"code"`` key on each rule. Only for ``"action": "reverse"`` we automatically apply the code
``AE``, in all other cases the default ``code`` of the tax rule is selected.
Endpoints
---------
@@ -74,6 +116,7 @@ Endpoints
"id": 1,
"name": {"en": "VAT"},
"internal_name": "VAT",
"code": "S/standard",
"rate": "19.00",
"price_includes_tax": true,
"eu_reverse_charge": false,
@@ -115,6 +158,7 @@ Endpoints
"id": 1,
"name": {"en": "VAT"},
"internal_name": "VAT",
"code": "S/standard",
"rate": "19.00",
"price_includes_tax": true,
"eu_reverse_charge": false,
@@ -164,6 +208,7 @@ Endpoints
"id": 1,
"name": {"en": "VAT"},
"internal_name": "VAT",
"code": "S/standard",
"rate": "19.00",
"price_includes_tax": true,
"eu_reverse_charge": false,
@@ -212,6 +257,7 @@ Endpoints
"id": 1,
"name": {"en": "VAT"},
"internal_name": "VAT",
"code": "S/standard",
"rate": "20.00",
"price_includes_tax": true,
"eu_reverse_charge": false,
@@ -258,3 +304,4 @@ Endpoints
:statuscode 403: The requested organizer/event/rule does not exist **or** you have no permission to change it **or** this tax rule cannot be deleted since it is currently in use.
.. _here: https://github.com/pretix/pretix/blob/master/src/pretix/static/schema/tax-rules-custom.schema.json
.. _VATEX code list: https://ec.europa.eu/digital-building-blocks/sites/display/DIGITAL/Registry+of+supporting+artefacts+to+implement+EN16931#RegistryofsupportingartefactstoimplementEN16931-Codelists
+4 -4
View File
@@ -32,7 +32,7 @@ dependencies = [
"bleach==6.2.*",
"celery==5.4.*",
"chardet==5.2.*",
"cryptography>=3.4.2",
"cryptography>=44.0.0",
"css-inline==0.14.*",
"defusedcsv>=1.1.0",
"Django[argon2]==4.2.*,>=4.2.15",
@@ -44,7 +44,7 @@ dependencies = [
"django-formtools==2.5.1",
"django-hierarkey==1.2.*",
"django-hijack==3.7.*",
"django-i18nfield==1.9.*,>=1.9.4",
"django-i18nfield==1.10.*",
"django-libsass==0.9",
"django-localflavor==4.0",
"django-markup",
@@ -74,7 +74,7 @@ dependencies = [
"paypal-checkout-serversdk==1.0.*",
"PyJWT==2.9.*",
"phonenumberslite==8.13.*",
"Pillow==11.0.*",
"Pillow==11.1.*",
"pretix-plugin-build",
"protobuf==5.29.*",
"psycopg2-binary",
@@ -100,7 +100,7 @@ dependencies = [
"ua-parser==1.0.*",
"vat_moss_forked==2020.3.20.0.11.0",
"vobject==0.9.*",
"webauthn==2.3.*",
"webauthn==2.4.*",
"zeep==4.3.*"
]
+1 -1
View File
@@ -103,7 +103,7 @@ class SalesChannelMigrationMixin:
]
})
if data["sales_channels"] == all_channels:
if set(data["sales_channels"]) == all_channels:
data["all_sales_channels"] = True
data["limit_sales_channels"] = []
else:
+9 -6
View File
@@ -35,7 +35,7 @@
import logging
from django.conf import settings
from django.core.exceptions import PermissionDenied, ValidationError
from django.core.exceptions import PermissionDenied
from django.db import transaction
from django.utils.crypto import get_random_string
from django.utils.functional import cached_property
@@ -43,6 +43,7 @@ from django.utils.translation import gettext as _
from django_countries.serializers import CountryFieldMixin
from pytz import common_timezones
from rest_framework import serializers
from rest_framework.exceptions import ValidationError
from rest_framework.fields import ChoiceField, Field
from rest_framework.relations import SlugRelatedField
@@ -436,7 +437,8 @@ class CloneEventSerializer(EventSerializer):
testmode = validated_data.pop('testmode', None)
has_subevents = validated_data.pop('has_subevents', None)
tz = validated_data.pop('timezone', None)
sales_channels = validated_data.pop('sales_channels', None)
all_sales_channels = validated_data.pop('all_sales_channels', None)
limit_sales_channels = validated_data.pop('limit_sales_channels', None)
date_admission = validated_data.pop('date_admission', None)
new_event = super().create({**validated_data, 'plugins': None})
@@ -449,8 +451,9 @@ class CloneEventSerializer(EventSerializer):
new_event.is_public = is_public
if testmode is not None:
new_event.testmode = testmode
if sales_channels is not None:
new_event.sales_channels = sales_channels
if all_sales_channels is not None or limit_sales_channels is not None:
new_event.all_sales_channels = all_sales_channels
new_event.limit_sales_channels.set(limit_sales_channels)
if has_subevents is not None:
new_event.has_subevents = has_subevents
if has_subevents is not None:
@@ -678,8 +681,8 @@ class TaxRuleSerializer(CountryFieldMixin, I18nAwareModelSerializer):
class Meta:
model = TaxRule
fields = ('id', 'name', 'rate', 'price_includes_tax', 'eu_reverse_charge', 'home_country', 'internal_name',
'keep_gross_if_rate_changes', 'custom_rules')
fields = ('id', 'name', 'rate', 'code', 'price_includes_tax', 'eu_reverse_charge', 'home_country',
'internal_name', 'keep_gross_if_rate_changes', 'custom_rules')
class EventSettingsSerializer(SettingsSerializer):
+8 -50
View File
@@ -19,57 +19,8 @@
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see
# <https://www.gnu.org/licenses/>.
#
from django.conf import settings
from django.core.validators import URLValidator
from i18nfield.fields import I18nCharField, I18nTextField
from i18nfield.strings import LazyI18nString
from rest_framework.exceptions import ValidationError
from rest_framework.fields import Field
from rest_framework.serializers import ModelSerializer
class I18nField(Field):
def __init__(self, **kwargs):
self.allow_blank = kwargs.pop('allow_blank', False)
self.trim_whitespace = kwargs.pop('trim_whitespace', True)
self.max_length = kwargs.pop('max_length', None)
self.min_length = kwargs.pop('min_length', None)
super().__init__(**kwargs)
def to_representation(self, value):
if hasattr(value, 'data'):
if isinstance(value.data, dict):
return value.data
elif value.data is None:
return None
else:
return {
settings.LANGUAGE_CODE: str(value.data)
}
elif value is None:
return None
else:
return {
settings.LANGUAGE_CODE: str(value)
}
def to_internal_value(self, data):
if isinstance(data, str):
return LazyI18nString(data)
elif isinstance(data, dict):
if any([k not in dict(settings.LANGUAGES) for k in data.keys()]):
raise ValidationError('Invalid languages included.')
return LazyI18nString(data)
else:
raise ValidationError('Invalid data type.')
class I18nAwareModelSerializer(ModelSerializer):
pass
I18nAwareModelSerializer.serializer_field_mapping[I18nCharField] = I18nField
I18nAwareModelSerializer.serializer_field_mapping[I18nTextField] = I18nField
from i18nfield.rest_framework import I18nAwareModelSerializer, I18nField
class I18nURLField(I18nField):
@@ -84,3 +35,10 @@ class I18nURLField(I18nField):
else:
URLValidator()(value.data)
return value
__all__ = [
"I18nAwareModelSerializer", # for backwards compatibility
"I18nField", # for backwards compatibility
"I18nURLField",
]
+7 -5
View File
@@ -512,11 +512,12 @@ class OrderPositionSerializer(I18nAwareModelSerializer):
'company', 'street', 'zipcode', 'city', 'country', 'state', 'discount',
'attendee_email', 'voucher', 'tax_rate', 'tax_value', 'secret', 'addon_to', 'subevent', 'checkins',
'print_logs', 'downloads', 'answers', 'tax_rule', 'pseudonymization_id', 'pdf_data', 'seat', 'canceled',
'valid_from', 'valid_until', 'blocked', 'voucher_budget_use')
'print_logs', 'downloads', 'answers', 'tax_rule', 'tax_code', 'pseudonymization_id', 'pdf_data', 'seat',
'canceled', 'valid_from', 'valid_until', 'blocked', 'voucher_budget_use')
read_only_fields = (
'id', 'order', 'positionid', 'item', 'variation', 'price', 'voucher', 'tax_rate', 'tax_value', 'secret',
'addon_to', 'subevent', 'checkins', 'downloads', 'answers', 'tax_rule', 'pseudonymization_id', 'pdf_data',
'seat', 'canceled', 'discount', 'valid_from', 'valid_until', 'blocked', 'voucher_budget_use'
'addon_to', 'subevent', 'checkins', 'downloads', 'answers', 'tax_rule', 'tax_code', 'pseudonymization_id',
'pdf_data', 'seat', 'canceled', 'discount', 'valid_from', 'valid_until', 'blocked', 'voucher_budget_use'
)
def __init__(self, *args, **kwargs):
@@ -642,7 +643,8 @@ class OrderPaymentDateField(serializers.DateField):
class OrderFeeSerializer(I18nAwareModelSerializer):
class Meta:
model = OrderFee
fields = ('id', 'fee_type', 'value', 'description', 'internal_type', 'tax_rate', 'tax_value', 'tax_rule', 'canceled')
fields = ('id', 'fee_type', 'value', 'description', 'internal_type', 'tax_rate', 'tax_value', 'tax_rule',
'tax_code', 'canceled')
class PaymentURLField(serializers.URLField):
@@ -1676,7 +1678,7 @@ class InlineInvoiceLineSerializer(I18nAwareModelSerializer):
class Meta:
model = InvoiceLine
fields = ('position', 'description', 'item', 'variation', 'subevent', 'attendee_name', 'event_date_from',
'event_date_to', 'gross_value', 'tax_value', 'tax_rate', 'tax_name', 'fee_type',
'event_date_to', 'gross_value', 'tax_value', 'tax_rate', 'tax_code', 'tax_name', 'fee_type',
'fee_internal_type', 'event_location')
+6 -2
View File
@@ -35,6 +35,7 @@ from django.db.models import (
from django.db.models.functions import Coalesce, Concat
from django.http import FileResponse, HttpResponse
from django.shortcuts import get_object_or_404
from django.utils import formats
from django.utils.timezone import make_aware, now
from django.utils.translation import gettext as _
from django_filters.rest_framework import DjangoFilterBackend, FilterSet
@@ -67,6 +68,7 @@ from pretix.api.serializers.orderchange import (
OrderPositionInfoPatchSerializer,
)
from pretix.api.views import RichOrderingFilter
from pretix.base.decimal import round_decimal
from pretix.base.i18n import language
from pretix.base.models import (
CachedCombinedTicket, CachedTicket, Checkin, Device, EventMetaValue,
@@ -97,7 +99,6 @@ from pretix.base.services.tickets import generate
from pretix.base.signals import (
order_modified, order_paid, order_placed, register_ticket_outputs,
)
from pretix.base.templatetags.money import money_filter
from pretix.control.signals import order_search_filter_q
from pretix.helpers import OF_SELF
@@ -646,6 +647,8 @@ class EventOrderViewSet(OrderViewSetMixin, viewsets.ModelViewSet):
order = self.get_object()
order.secret = generate_secret()
for op in order.all_positions.all():
op.web_secret = generate_secret()
op.save(update_fields=["web_secret"])
assign_ticket_secret(
request.event, op, force_invalidate=True, save=True
)
@@ -1228,9 +1231,10 @@ class OrderPositionViewSet(viewsets.ModelViewSet):
price = get_price(**kwargs)
tr = kwargs.get('tax_rule', kwargs.get('item').tax_rule)
with language(data.get('locale') or self.request.event.settings.locale, self.request.event.settings.region):
gross_formatted = formats.localize_input(round_decimal(price.gross, self.request.event.currency))
return Response({
'gross': price.gross,
'gross_formatted': money_filter(price.gross, self.request.event.currency, hide_currency=True),
'gross_formatted': gross_formatted,
'net': price.net,
'rate': price.rate,
'name': str(price.name),
+4 -4
View File
@@ -100,7 +100,7 @@ class MarkdownTextarea(forms.Textarea):
class I18nMarkdownTextarea(i18nfield.forms.I18nTextarea):
def format_output(self, rendered_widgets) -> str:
def format_output(self, rendered_widgets, id_) -> str:
rendered_widgets = rendered_widgets + [
'<div class="i18n-field-markdown-note">%s</div>' % (
_("You can use {markup_name} in this field.").format(
@@ -108,11 +108,11 @@ class I18nMarkdownTextarea(i18nfield.forms.I18nTextarea):
)
)
]
return super().format_output(rendered_widgets)
return super().format_output(rendered_widgets, id_)
class I18nMarkdownTextInput(i18nfield.forms.I18nTextInput):
def format_output(self, rendered_widgets) -> str:
def format_output(self, rendered_widgets, id_) -> str:
rendered_widgets = rendered_widgets + [
'<div class="i18n-field-markdown-note">%s</div>' % (
_("You can use {markup_name} in this field.").format(
@@ -120,7 +120,7 @@ class I18nMarkdownTextInput(i18nfield.forms.I18nTextInput):
)
)
]
return super().format_output(rendered_widgets)
return super().format_output(rendered_widgets, id_)
SECRET_REDACTED = '*****'
+30 -10
View File
@@ -277,6 +277,10 @@ class NamePartsFormField(forms.MultiValueField):
return value
def name_parts_is_empty(name_parts_dict):
return not any(k != "_scheme" and v for k, v in name_parts_dict.items())
class WrappedPhonePrefixSelect(Select):
initial = None
@@ -1031,6 +1035,18 @@ class BaseInvoiceAddressForm(forms.ModelForm):
'is_business': ''
}
@property
def ask_vat_id(self):
return self.event.settings.invoice_address_vatid
@property
def address_required(self):
return self.event.settings.invoice_address_required
@property
def company_required(self):
return self.event.settings.invoice_address_company_required
def __init__(self, *args, **kwargs):
self.event = event = kwargs.pop('event')
self.request = kwargs.pop('request', None)
@@ -1042,7 +1058,11 @@ class BaseInvoiceAddressForm(forms.ModelForm):
kwargs['initial']['country'] = guess_country_from_request(self.request, self.event)
super().__init__(*args, **kwargs)
if not event.settings.invoice_address_vatid:
self.fields["company"].widget.attrs["data-display-dependency"] = f'#id_{self.add_prefix("is_business")}_1'
self.fields["vat_id"].widget.attrs["data-display-dependency"] = f'#id_{self.add_prefix("is_business")}_1'
if not self.ask_vat_id:
del self.fields['vat_id']
elif self.validate_vat_id:
self.fields['vat_id'].help_text = '<br/>'.join([
@@ -1096,13 +1116,13 @@ class BaseInvoiceAddressForm(forms.ModelForm):
self.data = self.data.copy()
del self.data[fprefix + 'vat_id']
if not event.settings.invoice_address_required or self.all_optional:
if not self.address_required or self.all_optional:
for k, f in self.fields.items():
f.required = False
f.widget.is_required = False
if 'required' in f.widget.attrs:
del f.widget.attrs['required']
elif event.settings.invoice_address_company_required and not self.all_optional:
elif self.company_required and not self.all_optional:
self.initial['is_business'] = True
self.fields['is_business'].widget = BusinessBooleanRadio(require_business=True)
@@ -1119,11 +1139,11 @@ class BaseInvoiceAddressForm(forms.ModelForm):
label=_('Name'),
initial=self.instance.name_parts,
)
if event.settings.invoice_address_required and not event.settings.invoice_address_company_required and not self.all_optional:
if self.address_required and not self.company_required and not self.all_optional:
if not event.settings.invoice_name_required:
self.fields['name_parts'].widget.attrs['data-required-if'] = '#id_is_business_0'
self.fields['name_parts'].widget.attrs['data-required-if'] = f'#id_{self.add_prefix("is_business")}_0'
self.fields['name_parts'].widget.attrs['data-no-required-attr'] = '1'
self.fields['company'].widget.attrs['data-required-if'] = '#id_is_business_1'
self.fields['company'].widget.attrs['data-required-if'] = f'#id_{self.add_prefix("is_business")}_1'
if not event.settings.invoice_address_beneficiary:
del self.fields['beneficiary']
@@ -1149,12 +1169,12 @@ class BaseInvoiceAddressForm(forms.ModelForm):
data['vat_id'] = ''
if data.get('is_business') and not ask_for_vat_id(data.get('country')):
data['vat_id'] = ''
if self.event.settings.invoice_address_required:
if self.address_validation and self.address_required and not self.all_optional:
if data.get('is_business') and not data.get('company'):
raise ValidationError({"company": _('You need to provide a company name.')})
if not data.get('is_business') and not data.get('name_parts'):
if not data.get('is_business') and name_parts_is_empty(data.get('name_parts', {})):
raise ValidationError(_('You need to provide your name.'))
if not self.all_optional and 'street' in self.fields and not data.get('street') and not data.get('zipcode') and not data.get('city'):
if not data.get('street') and not data.get('zipcode') and not data.get('city'):
raise ValidationError({"street": _('This field is required.')})
if 'vat_id' in self.changed_data or not data.get('vat_id'):
@@ -1167,7 +1187,7 @@ class BaseInvoiceAddressForm(forms.ModelForm):
if all(
not v for k, v in data.items() if k not in ('is_business', 'country', 'name_parts')
) and len(data.get('name_parts', {})) == 1:
) and name_parts_is_empty(data.get('name_parts', {})):
# Do not save the country if it is the only field set -- we don't know the user even checked it!
self.cleaned_data['country'] = ''
@@ -81,7 +81,7 @@ class Command(BaseCommand):
try:
r = receiver(signal=periodic_task, sender=self)
except Exception as err:
if isinstance(Exception, KeyboardInterrupt):
if isinstance(err, KeyboardInterrupt):
raise err
if settings.SENTRY_ENABLED:
from sentry_sdk import capture_exception
@@ -0,0 +1,41 @@
# Generated by Django 4.2.8 on 2024-07-02 10:34
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
(
"pretixbase",
"0273_remove_checkinlist_auto_checkin_sales_channels",
),
]
operations = [
migrations.AddField(
model_name="invoiceline",
name="tax_code",
field=models.CharField(max_length=190, null=True),
),
migrations.AddField(
model_name="orderfee",
name="tax_code",
field=models.CharField(max_length=190, null=True),
),
migrations.AddField(
model_name="orderposition",
name="tax_code",
field=models.CharField(max_length=190, null=True),
),
migrations.AddField(
model_name="taxrule",
name="code",
field=models.CharField(max_length=190, null=True),
),
migrations.AddField(
model_name="transaction",
name="tax_code",
field=models.CharField(max_length=190, null=True),
),
]
+3 -2
View File
@@ -441,6 +441,7 @@ class Price(DecimalColumnMixin, ImportColumn):
position.price = p.gross
position.tax_rule = position.item.tax_rule
position.tax_rate = p.rate
position.tax_code = p.code
position.tax_value = p.tax
@@ -584,7 +585,7 @@ class SeatColumn(ImportColumn):
raise ValidationError(_('Multiple matching seats were found.'))
except Seat.DoesNotExist:
raise ValidationError(_('No matching seat was found.'))
if not value.is_available() or value in self._cached:
if not value.is_available(sales_channel=previous_values.get('sales_channel')) or value in self._cached:
raise ValidationError(
_('The seat you selected has already been taken. Please select a different seat.'))
self._cached.add(value)
@@ -753,11 +754,11 @@ def get_order_import_columns(event):
AttendeeState(event),
Price(event),
Secret(event),
Saleschannel(event),
SeatColumn(event),
ValidFrom(event),
ValidUntil(event),
Locale(event),
Saleschannel(event),
CheckinAttentionColumn(event),
CheckinTextColumn(event),
Expires(event),
+1
View File
@@ -362,6 +362,7 @@ class InvoiceLine(models.Model):
tax_value = models.DecimalField(max_digits=13, decimal_places=2, default=Decimal('0.00'))
tax_rate = models.DecimalField(max_digits=7, decimal_places=2, default=Decimal('0.00'))
tax_name = models.CharField(max_length=190)
tax_code = models.CharField(max_length=190, null=True, blank=True)
subevent = models.ForeignKey('SubEvent', null=True, blank=True, on_delete=models.PROTECT)
event_date_from = models.DateTimeField(null=True)
event_date_to = models.DateTimeField(null=True)
+4 -2
View File
@@ -837,7 +837,7 @@ class Item(LoggedModel):
if not self.tax_rule:
t = TaxedPrice(gross=price - bundled_sum, net=price - bundled_sum, tax=Decimal('0.00'),
rate=Decimal('0.00'), name='')
rate=Decimal('0.00'), name='', code=None)
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,
@@ -845,6 +845,7 @@ class Item(LoggedModel):
if bundled_sum:
t.name = "MIXED!"
t.code = None
t.gross += bundled_sum
t.net += bundled_sum_net
t.tax += bundled_sum_tax
@@ -1258,7 +1259,7 @@ class ItemVariation(models.Model):
if not self.item.tax_rule:
t = TaxedPrice(gross=price, net=price, tax=Decimal('0.00'),
rate=Decimal('0.00'), name='')
rate=Decimal('0.00'), name='', code=None)
else:
t = self.item.tax_rule.tax(price, base_price_is=base_price_is, currency=currency,
override_tax_rate=override_tax_rate,
@@ -1280,6 +1281,7 @@ class ItemVariation(models.Model):
t.net += bprice.net - compare_price.net
t.tax += bprice.tax - compare_price.tax
t.name = "MIXED!"
t.code = None
return t
+55 -5
View File
@@ -62,9 +62,10 @@ from django.db.models.signals import post_delete
from django.dispatch import receiver
from django.urls import reverse
from django.utils.crypto import get_random_string, salted_hmac
from django.utils.encoding import escape_uri_path
from django.utils.encoding import escape_uri_path, force_str
from django.utils.formats import date_format
from django.utils.functional import cached_property
from django.utils.hashable import make_hashable
from django.utils.timezone import get_current_timezone, make_aware, now
from django.utils.translation import gettext_lazy as _, pgettext_lazy
from django_countries.fields import Country
@@ -1256,7 +1257,7 @@ class Order(LockModel, LoggedModel):
keys = set(target_transaction_count.keys()) | set(current_transaction_count.keys())
create = []
for k in keys:
positionid, itemid, variationid, subeventid, price, taxrate, taxruleid, taxvalue, feetype, internaltype = k
positionid, itemid, variationid, subeventid, price, taxrate, taxruleid, taxvalue, feetype, internaltype, taxcode = k
d = target_transaction_count[k] - current_transaction_count[k]
if d:
create.append(Transaction(
@@ -1272,6 +1273,7 @@ class Order(LockModel, LoggedModel):
tax_rate=taxrate,
tax_rule_id=taxruleid,
tax_value=taxvalue,
tax_code=taxcode,
fee_type=feetype,
internal_type=internaltype,
))
@@ -2313,6 +2315,10 @@ class OrderFee(models.Model):
on_delete=models.PROTECT,
null=True, blank=True
)
tax_code = models.CharField(
max_length=190,
null=True, blank=True,
)
tax_value = models.DecimalField(
max_digits=13, decimal_places=2,
verbose_name=_('Tax value')
@@ -2340,6 +2346,16 @@ class OrderFee(models.Model):
self._transaction_key_reset()
return super().refresh_from_db(using, fields)
def get_tax_code_display(self):
from pretix.base.models.tax import get_tax_code_labels
if self.tax_code:
choices_dict = get_tax_code_labels()
return force_str(
choices_dict.get(make_hashable(self.tax_code), self.tax_code), strings_only=True
)
return ""
def _transaction_key_reset(self):
self.__initial_transaction_key = Transaction.key(self)
self.__initial_canceled = self.canceled
@@ -2370,9 +2386,11 @@ class OrderFee(models.Model):
if self.tax_rule:
tax = self.tax_rule.tax(self.value, base_price_is='gross', invoice_address=ia, force_fixed_gross_price=True)
self.tax_rate = tax.rate
self.tax_code = tax.code
self.tax_value = tax.tax
else:
self.tax_value = Decimal('0.00')
self.tax_code = None
self.tax_rate = Decimal('0.00')
def save(self, *args, **kwargs):
@@ -2381,6 +2399,7 @@ class OrderFee(models.Model):
if self.tax_rate is None:
self._calculate_tax()
self.order.touch()
if not self.get_deferred_fields():
@@ -2468,6 +2487,10 @@ class OrderPosition(AbstractPosition):
on_delete=models.PROTECT,
null=True, blank=True
)
tax_code = models.CharField(
max_length=190,
null=True, blank=True,
)
tax_value = models.DecimalField(
max_digits=13, decimal_places=2,
verbose_name=_('Tax value')
@@ -2525,6 +2548,16 @@ class OrderPosition(AbstractPosition):
models.UniqueConstraint("organizer", "secret", name="orderposition_organizer_secret_uniq")
]
def get_tax_code_display(self):
from pretix.base.models.tax import get_tax_code_labels
if self.tax_code:
choices_dict = get_tax_code_labels()
return force_str(
choices_dict.get(make_hashable(self.tax_code), self.tax_code), strings_only=True
)
return ""
@cached_property
def sort_key(self):
return self.addon_to.positionid if self.addon_to else self.positionid, self.addon_to_id or 0, self.positionid
@@ -2697,11 +2730,13 @@ class OrderPosition(AbstractPosition):
if self.tax_rule:
tax = self.tax_rule.tax(self.price, invoice_address=ia, base_price_is='gross', force_fixed_gross_price=True)
self.tax_rate = tax.rate
self.tax_code = tax.code
self.tax_value = tax.tax
if tax.gross != self.price:
raise ValueError('Invalid tax calculation')
else:
self.tax_value = Decimal('0.00')
self.tax_code = None
self.tax_rate = Decimal('0.00')
def save(self, *args, **kwargs):
@@ -2972,6 +3007,10 @@ class Transaction(models.Model):
on_delete=models.PROTECT,
null=True, blank=True
)
tax_code = models.CharField(
max_length=190,
null=True, blank=True,
)
tax_value = models.DecimalField(
max_digits=13, decimal_places=2,
verbose_name=_('Tax value')
@@ -2992,17 +3031,27 @@ class Transaction(models.Model):
raise ValidationError('Should set either item or fee type')
return super().save(*args, **kwargs)
def get_tax_code_display(self):
from pretix.base.models.tax import get_tax_code_labels
if self.tax_code:
choices_dict = get_tax_code_labels()
return force_str(
choices_dict.get(make_hashable(self.tax_code), self.tax_code), strings_only=True
)
return ""
@staticmethod
def key(obj):
if isinstance(obj, Transaction):
return (obj.positionid, obj.item_id, obj.variation_id, obj.subevent_id, obj.price, obj.tax_rate,
obj.tax_rule_id, obj.tax_value, obj.fee_type, obj.internal_type)
obj.tax_rule_id, obj.tax_value, obj.fee_type, obj.internal_type, obj.tax_code)
elif isinstance(obj, OrderPosition):
return (obj.positionid, obj.item_id, obj.variation_id, obj.subevent_id, obj.price, obj.tax_rate,
obj.tax_rule_id, obj.tax_value, None, None)
obj.tax_rule_id, obj.tax_value, None, None, obj.tax_code)
elif isinstance(obj, OrderFee):
return (None, None, None, None, obj.value, obj.tax_rate,
obj.tax_rule_id, obj.tax_value, obj.fee_type, obj.internal_type)
obj.tax_rule_id, obj.tax_value, obj.fee_type, obj.internal_type, obj.tax_code)
raise ValueError('invalid state') # noqa
@property
@@ -3166,6 +3215,7 @@ class CartPosition(AbstractPosition):
if line_price.gross != self.line_price_gross or line_price.rate != self.tax_rate:
self.line_price_gross = line_price.gross
self.tax_rate = line_price.rate
self.tax_code = line_price.code
self.save(update_fields=['line_price_gross', 'tax_rate'])
@property
+220 -12
View File
@@ -21,6 +21,7 @@
#
import json
from decimal import Decimal
from typing import Optional
import jsonschema
from django.contrib.staticfiles import finders
@@ -30,8 +31,9 @@ from django.db import models
from django.utils.deconstruct import deconstructible
from django.utils.formats import localize
from django.utils.functional import lazy
from django.utils.hashable import make_hashable
from django.utils.html import format_html
from django.utils.translation import gettext_lazy as _, pgettext
from django.utils.translation import gettext_lazy as _, pgettext, pgettext_lazy
from i18nfield.fields import I18nCharField
from i18nfield.strings import LazyI18nString
@@ -42,7 +44,7 @@ from pretix.helpers.countries import FastCountryField
class TaxedPrice:
def __init__(self, *, gross: Decimal, net: Decimal, tax: Decimal, rate: Decimal, name: str):
def __init__(self, *, gross: Decimal, net: Decimal, tax: Decimal, rate: Decimal, name: str, code: Optional[str]):
if net + tax != gross:
raise ValueError('Net value and tax value need to add to the gross value')
self.gross = gross
@@ -50,6 +52,7 @@ class TaxedPrice:
self.tax = tax
self.rate = rate
self.name = name
self.code = code
def __repr__(self):
return '{} + {}% = {}'.format(localize(self.net), localize(self.rate), localize(self.gross))
@@ -72,6 +75,7 @@ class TaxedPrice:
tax=newgross - newnet,
rate=self.rate,
name=self.name,
code=self.code,
)
def __mul__(self, other):
@@ -85,6 +89,7 @@ class TaxedPrice:
tax=newgross - newnet,
rate=self.rate,
name=self.name,
code=self.code,
)
def __eq__(self, other):
@@ -93,7 +98,8 @@ class TaxedPrice:
self.net == other.net and
self.tax == other.tax and
self.rate == other.rate and
self.name == other.name
self.name == other.name and
self.code == other.code
)
@@ -102,7 +108,8 @@ TAXED_ZERO = TaxedPrice(
net=Decimal('0.00'),
tax=Decimal('0.00'),
rate=Decimal('0.00'),
name=''
name='',
code=None,
)
EU_COUNTRIES = {
@@ -125,6 +132,152 @@ VAT_ID_COUNTRIES = EU_COUNTRIES | {'CH', 'NO'}
format_html_lazy = lazy(format_html, str)
TAX_CODE_LISTS = (
# Sources:
# https://ec.europa.eu/digital-building-blocks/sites/display/DIGITAL/Registry+of+supporting+artefacts+to+implement+EN16931#RegistryofsupportingartefactstoimplementEN16931-Codelists#RegistryofsupportingartefactstoimplementEN16931-Codelists
# https://docs.peppol.eu/poacc/billing/3.0/codelist/vatex/
# https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL5305/
# https://www.bzst.de/DE/Unternehmen/Aussenpruefungen/DigitaleSchnittstelleFinV/digitaleschnittstellefinv_node.html#js-toc-entry2
#
# !! When changed, also update tax-rules-custom.schema.json and doc/api/resources/taxrules.rst !!
(
_("Standard rates"),
(
# Standard rate in any country, such as 19% in Germany or 20% in Austria
# DSFinV-K mapping: 1
("S/standard", pgettext_lazy("tax_code", "Standard rate")),
# Reduced rate in any country, such as 7% in Germany or both 10% and 13% in Austria
# DSFinV-K mapping: 2
("S/reduced", pgettext_lazy("tax_code", "Reduced rate")),
# Averaged rate, for example Germany § 24 (1) Nr. 3 UStG "für die übrigen Umsätze" in agricultural and silvicultural businesses
# DSFinV-K mapping: 3
("S/averaged", pgettext_lazy("tax_code", "Averaged rate (other revenue in a agricultural and silvicultural business)")),
# We ignore the German special case of the actual silvicultural products as they won't be sold through pretix (DSFinV-K mapping: 4)
)
),
(
_("Reverse charge"),
(
("AE", pgettext_lazy("tax_code", "Reverse charge")),
)
),
(
_("Tax free"),
(
# DSFinV-K mapping: 5
("O", pgettext_lazy("tax_code", "Services outside of scope of tax")),
# DSFinV-K mapping: 6
("E", pgettext_lazy("tax_code", "Exempt from tax (no reason given)")),
# DSFinV-K mapping: 6
("Z", pgettext_lazy("tax_code", "Zero-rated goods")),
# DSFinV-K mapping: 5
("G", pgettext_lazy("tax_code", "Free export item, VAT not charged")),
# DSFinV-K mapping: 6?
("K", pgettext_lazy("tax_code", "VAT exempt for EEA intra-community supply of goods and services")),
)
),
(
_("Special cases"),
(
("L", pgettext_lazy("tax_code", "Canary Islands general indirect tax")),
("M", pgettext_lazy("tax_code", "Tax for production, services and importation in Ceuta and Melilla")),
("B", pgettext_lazy("tax_code", "Transferred (VAT), only in Italy")),
)
),
(
_("Exempt with specific reason"),
(
("E/VATEX-EU-79-C",
pgettext_lazy("tax_code", "Exempt based on article 79, point c of Council Directive 2006/112/EC")),
*[
(
f"E/VATEX-EU-132-1{letter.upper()}",
lazy(
lambda let: pgettext(
"tax_code",
"Exempt based on article {article}, section {section} ({letter}) of Council "
"Directive 2006/112/EC"
).format(article="132", section="1", letter=let),
str
)(letter)
) for letter in ("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q")
],
*[
(
f"E/VATEX-EU-143-1{letter.upper()}",
lazy(
lambda let: pgettext(
"tax_code",
"Exempt based on article {article}, section {section} ({letter}) of Council "
"Directive 2006/112/EC"
).format(article="143", section="1", letter=let),
str
)(letter)
) for letter in ("a", "b", "c", "d", "e", "f", "fa", "g", "h", "i", "j", "k", "l")
],
*[
(
f"E/VATEX-EU-148-{letter.upper()}",
lazy(
lambda let: pgettext(
"tax_code",
"Exempt based on article {article}, section ({letter}) of Council "
"Directive 2006/112/EC"
).format(article="148", letter=let),
str
)(letter)
) for letter in ("a", "b", "c", "d", "e", "f", "g")
],
*[
(
f"E/VATEX-EU-151-1{letter.upper()}",
lazy(
lambda let: pgettext(
"tax_code",
"Exempt based on article {article}, section {section} ({letter}) of Council "
"Directive 2006/112/EC"
).format(article="151", section="1", letter=let),
str
)(letter)
) for letter in ("a", "aa", "b", "c", "d", "e")
],
("E/VATEX-EU-309",
pgettext_lazy("tax_code", "Exempt based on article 309 of Council Directive 2006/112/EC")),
("E/VATEX-EU-D",
pgettext_lazy("tax_code", "Intra-Community acquisition from second hand means of transport")),
("E/VATEX-EU-F",
pgettext_lazy("tax_code", "Intra-Community acquisition of second hand goods")),
("E/VATEX-EU-I",
pgettext_lazy("tax_code", "Intra-Community acquisition of works of art")),
("E/VATEX-EU-J",
pgettext_lazy("tax_code", "Intra-Community acquisition of collectors items and antiques")),
("E/VATEX-FR-FRANCHISE",
pgettext_lazy("tax_code", "France domestic VAT franchise in base")),
("E/VATEX-FR-CNWVAT",
pgettext_lazy("tax_code", "France domestic Credit Notes without VAT, due to supplier forfeit of VAT for discount")),
)
),
)
def get_tax_code_labels():
flat = []
for choice, value in TAX_CODE_LISTS:
if isinstance(value, (list, tuple)):
flat.extend(value)
else:
flat.append((choice, value))
return dict(make_hashable(flat))
def is_eu_country(cc):
cc = str(cc)
return cc in EU_COUNTRIES
@@ -173,6 +326,14 @@ class TaxRule(LoggedModel):
help_text=_('Should be short, e.g. "VAT"'),
max_length=190,
)
code = models.CharField(
verbose_name=_('Tax code'),
help_text=_('If you help us understand what this tax rules legally is, we can use this information for '
'eInvoices, exporting to accounting system, etc.'),
null=True, blank=True,
max_length=190,
choices=TAX_CODE_LISTS,
)
rate = models.DecimalField(
max_digits=10,
decimal_places=2,
@@ -250,6 +411,16 @@ class TaxRule(LoggedModel):
if self.eu_reverse_charge and not self.home_country:
raise ValidationError(_('You need to set your home country to use the reverse charge feature.'))
if self.rate != Decimal("0.00") and self.code and (self.code.split("/")[0] in ("O", "E", "Z", "G", "K", "AE")):
raise ValidationError({
"code": _("A combination of this tax code with a non-zero tax rate does not make sense.")
})
if self.rate == Decimal("0.00") and self.code and (self.code.split("/")[0] in ("S", "L", "M", "B")):
raise ValidationError({
"code": _("A combination of this tax code with a zero tax rate does not make sense.")
})
def __str__(self):
if self.price_includes_tax:
s = _('incl. {rate}% {name}').format(rate=self.rate, name=self.name)
@@ -276,8 +447,9 @@ class TaxRule(LoggedModel):
return Decimal(rule.get('rate'))
return Decimal(self.rate)
def tax(self, base_price, base_price_is='auto', currency=None, override_tax_rate=None, invoice_address=None,
subtract_from_gross=Decimal('0.00'), gross_price_is_tax_rate: Decimal = None, force_fixed_gross_price=False):
def tax(self, base_price, base_price_is='auto', currency=None, override_tax_rate=None, override_tax_code=None,
invoice_address=None, subtract_from_gross=Decimal('0.00'), gross_price_is_tax_rate: Decimal = None,
force_fixed_gross_price=False):
from .event import Event
try:
currency = currency or self.event.currency
@@ -285,6 +457,13 @@ class TaxRule(LoggedModel):
pass
rate = Decimal(self.rate)
code = self.code
if override_tax_code is not None:
code = override_tax_code
elif invoice_address:
code = self.tax_code_for(invoice_address)
if override_tax_rate is not None:
rate = override_tax_rate
elif invoice_address:
@@ -317,11 +496,8 @@ class TaxRule(LoggedModel):
if rate == Decimal('0.00'):
gross = _limit_subtract(base_price, subtract_from_gross)
return TaxedPrice(
net=gross,
gross=gross,
tax=Decimal('0.00'),
rate=rate,
name=self.name,
net=gross, gross=gross, tax=Decimal('0.00'),
rate=rate, name=self.name, code=code,
)
if base_price_is == 'auto':
@@ -346,7 +522,7 @@ class TaxRule(LoggedModel):
return TaxedPrice(
net=net, gross=gross, tax=gross - net,
rate=rate, name=self.name
rate=rate, name=self.name, code=code,
)
@property
@@ -427,6 +603,38 @@ class TaxRule(LoggedModel):
return True
return False
def tax_code_for(self, invoice_address):
if self._custom_rules:
rule = self.get_matching_rule(invoice_address)
if rule.get("code"):
return rule["code"]
if rule.get("action", "vat") == "reverse":
return "AE"
return self.code
if not self.eu_reverse_charge:
# No reverse charge rules? Always apply VAT!
return self.code
if not invoice_address or not invoice_address.country:
# No country specified? Always apply VAT!
return self.code
if not is_eu_country(invoice_address.country):
# Non-EU country? "Non-taxable" since not in scope
return "O"
if invoice_address.country == self.home_country:
# Within same EU country? Always apply VAT!
return self.code
if invoice_address.is_business and invoice_address.vat_id and invoice_address.vat_id_validated:
# Reverse charge case
return "AE"
# Consumer in different EU country / invalid VAT
return self.code
def _tax_applicable(self, invoice_address):
if self._custom_rules:
rule = self.get_matching_rule(invoice_address)
+34 -33
View File
@@ -1419,50 +1419,51 @@ class GiftCardPayment(BasePaymentProvider):
def payment_refund_supported(self, payment: OrderPayment) -> bool:
return True
def checkout_prepare(self, request: HttpRequest, cart: Dict[str, Any]) -> Union[bool, str, None]:
from pretix.base.services.cart import add_payment_to_cart
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,
max_value=gc.value,
info_data={
'gift_card': gc.pk,
'gift_card_secret': gc.secret,
}
)
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
cs = cart_session(request)
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."))
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
if gc.testmode and not self.event.testmode:
messages.error(request, _("This gift card can only be used in test mode."))
return
if not gc.testmode and self.event.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
for p in cs.get('payments', []):
if p['provider'] == self.identifier and p['info_data']['gift_card'] == gc.pk:
messages.error(request, _("This gift card is already used for your payment."))
return
add_payment_to_cart(
request,
self,
max_value=gc.value,
info_data={
'gift_card': gc.pk,
'gift_card_secret': gc.secret,
}
)
return True
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 "
+24 -10
View File
@@ -1426,6 +1426,28 @@ class CartManager:
raise CartError(err)
def add_payment_to_cart_session(cart_session, provider, min_value: Decimal=None, max_value: Decimal=None, info_data: dict=None):
"""
:param cart_session: The current cart session.
:param provider: The instance of your payment provider.
:param min_value: The minimum value this payment instrument supports, or ``None`` for unlimited.
:param max_value: The maximum value this payment instrument supports, or ``None`` for unlimited. Highly discouraged
to use for payment providers which charge a payment fee, as this can be very user-unfriendly if
users need a second payment method just for the payment fee of the first method.
:param info_data: A dictionary of information that will be passed through to the ``OrderPayment.info_data`` attribute.
:return:
"""
cart_session.setdefault('payments', [])
cart_session['payments'].append({
'id': str(uuid.uuid4()),
'provider': provider.identifier,
'multi_use_supported': provider.multi_use_supported,
'min_value': str(min_value) if min_value is not None else None,
'max_value': str(max_value) if max_value is not None else None,
'info_data': info_data or {},
})
def add_payment_to_cart(request, provider, min_value: Decimal=None, max_value: Decimal=None, info_data: dict=None):
"""
:param request: The current HTTP request context.
@@ -1440,16 +1462,7 @@ def add_payment_to_cart(request, provider, min_value: Decimal=None, max_value: D
from pretix.presale.views.cart import cart_session
cs = cart_session(request)
cs.setdefault('payments', [])
cs['payments'].append({
'id': str(uuid.uuid4()),
'provider': provider.identifier,
'multi_use_supported': provider.multi_use_supported,
'min_value': str(min_value) if min_value is not None else None,
'max_value': str(max_value) if max_value is not None else None,
'info_data': info_data or {},
})
add_payment_to_cart_session(cs, provider, min_value, max_value, info_data)
def get_fees(event, request, total, invoice_address, payments, positions):
@@ -1500,6 +1513,7 @@ def get_fees(event, request, total, invoice_address, payments, positions):
value=payment_fee,
tax_rate=payment_fee_tax.rate,
tax_value=payment_fee_tax.tax,
tax_code=payment_fee_tax.code,
tax_rule=payment_fee_tax_rule
))
+6 -3
View File
@@ -271,7 +271,9 @@ def build_invoice(invoice: Invoice) -> Invoice:
event_date_from=p.subevent.date_from if invoice.event.has_subevents else invoice.event.date_from,
event_date_to=p.subevent.date_to if invoice.event.has_subevents else invoice.event.date_to,
event_location=location if invoice.event.settings.invoice_event_location else None,
tax_rate=p.tax_rate, tax_name=p.tax_rule.name if p.tax_rule else ''
tax_rate=p.tax_rate,
tax_code=p.tax_code,
tax_name=p.tax_rule.name if p.tax_rule else ''
)
if p.tax_rule and p.tax_rule.is_reverse_charge(ia) and p.price and not p.tax_value:
@@ -305,6 +307,7 @@ def build_invoice(invoice: Invoice) -> Invoice:
),
tax_value=fee.tax_value,
tax_rate=fee.tax_rate,
tax_code=fee.tax_code,
tax_name=fee.tax_rule.name if fee.tax_rule else '',
fee_type=fee.fee_type,
fee_internal_type=fee.internal_type or None,
@@ -491,13 +494,13 @@ def build_preview_invoice_pdf(event):
InvoiceLine.objects.create(
invoice=invoice, description=_("Sample product {}").format(i + 1),
gross_value=tax.gross, tax_value=tax.tax,
tax_rate=tax.rate, tax_name=tax.name
tax_rate=tax.rate, tax_name=tax.name, tax_code=tax.code,
)
else:
for i in range(5):
InvoiceLine.objects.create(
invoice=invoice, description=_("Sample product A"),
gross_value=100, tax_value=0, tax_rate=0
gross_value=100, tax_value=0, tax_rate=0, tax_code=None,
)
return event.invoice_renderer.generate(invoice)
+4 -4
View File
@@ -118,7 +118,7 @@ def import_orders(event: Event, fileid: str, settings: dict, locale: str, user,
c.assign(record.get(c.identifier), order, position, order._address)
if position.seat is not None:
lock_seats.append(position.seat)
lock_seats.append((order.sales_channel, position.seat))
except (ValidationError, ImportError) as e:
raise DataImportError(
_('Invalid data in row {row}: {message}').format(row=i, message=str(e))
@@ -128,9 +128,9 @@ def import_orders(event: Event, fileid: str, settings: dict, locale: str, user,
with transaction.atomic():
# We don't support vouchers, quotas, or memberships here, so we only need to lock if seats are in use
if lock_seats:
lock_objects(lock_seats, shared_lock_objects=[event])
for s in lock_seats:
if not s.is_available():
lock_objects([s for c, s in lock_seats], shared_lock_objects=[event])
for c, s in lock_seats:
if not s.is_available(sales_channel=c):
raise DataImportError(_('The seat you selected has already been taken. Please select a different seat.'))
save_transactions = []
+9 -4
View File
@@ -1721,16 +1721,17 @@ class OrderChangeManager:
try:
new_rate = tax_rule.tax_rate_for(ia)
new_code = tax_rule.tax_code_for(ia)
except TaxRule.SaleNotAllowed:
raise OrderError(error_messages['tax_rule_country_blocked'])
# We use override_tax_rate to make sure .tax() doesn't get clever and re-adjusts the pricing itself
if new_rate != pos.tax_rate:
if new_rate != pos.tax_rate or new_code != pos.tax_code:
if keep == 'net':
new_tax = tax_rule.tax(pos.price - pos.tax_value, base_price_is='net', currency=self.event.currency,
override_tax_rate=new_rate)
override_tax_rate=new_rate, override_tax_code=new_code)
else:
new_tax = tax_rule.tax(pos.price, base_price_is='gross', currency=self.event.currency,
override_tax_rate=new_rate)
override_tax_rate=new_rate, override_tax_code=new_code)
self._totaldiff += new_tax.gross - pos.price
self._operations.append(self.PriceOperation(pos, new_tax, new_tax.gross - pos.price))
self._invoice_dirty = True
@@ -2304,6 +2305,7 @@ class OrderChangeManager:
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()
elif isinstance(op, self.TaxRuleOperation):
if isinstance(op.position, OrderPosition):
@@ -2400,7 +2402,7 @@ class OrderChangeManager:
elif isinstance(op, self.AddOperation):
pos = OrderPosition.objects.create(
item=op.item, variation=op.variation, addon_to=op.addon_to,
price=op.price.gross, order=self.order, tax_rate=op.price.rate,
price=op.price.gross, order=self.order, tax_rate=op.price.rate, tax_code=op.price.code,
tax_value=op.price.tax, tax_rule=op.item.tax_rule,
positionid=nextposid, subevent=op.subevent, seat=op.seat,
used_membership=op.membership, valid_from=op.valid_from, valid_until=op.valid_until,
@@ -2423,6 +2425,8 @@ class OrderChangeManager:
elif isinstance(op, self.SplitOperation):
split_positions.append(op.position)
elif isinstance(op, self.RegenerateSecretOperation):
op.position.web_secret = generate_secret()
op.position.save(update_fields=["web_secret"])
assign_ticket_secret(
event=self.event, position=op.position, force_invalidate=True, save=True
)
@@ -2529,6 +2533,7 @@ class OrderChangeManager:
'new_order': split_order.code,
})
op.order = split_order
op.web_secret = generate_secret()
assign_ticket_secret(
self.event, position=op, force_invalidate=True,
)
+6 -2
View File
@@ -91,9 +91,11 @@ def get_price(item: Item, variation: ItemVariation = None,
if custom_price_is_net:
price = tax_rule.tax(max(custom_price, price.net), base_price_is='net', override_tax_rate=price.rate,
override_tax_code=price.code,
invoice_address=invoice_address, subtract_from_gross=bundled_sum)
else:
price = tax_rule.tax(max(custom_price, price.gross), base_price_is='gross', override_tax_rate=price.rate,
override_tax_code=price.code,
invoice_address=invoice_address, subtract_from_gross=bundled_sum)
else:
price = tax_rule.tax(price, invoice_address=invoice_address, subtract_from_gross=bundled_sum)
@@ -146,10 +148,12 @@ def get_line_price(price_after_voucher: Decimal, custom_price_input: Decimal, cu
if custom_price_input_is_net:
price = tax_rule.tax(max(custom_price_input, price.net), base_price_is='net', override_tax_rate=price.rate,
invoice_address=invoice_address, subtract_from_gross=bundled_sum)
override_tax_code=price.code, invoice_address=invoice_address,
subtract_from_gross=bundled_sum)
else:
price = tax_rule.tax(max(custom_price_input, price.gross), base_price_is='gross', override_tax_rate=price.rate,
invoice_address=invoice_address, subtract_from_gross=bundled_sum)
override_tax_code=price.code, invoice_address=invoice_address,
subtract_from_gross=bundled_sum)
else:
price = tax_rule.tax(price_after_voucher, invoice_address=invoice_address, subtract_from_gross=bundled_sum,
base_price_is='gross' if is_bundled else 'auto')
+3 -2
View File
@@ -21,6 +21,7 @@
#
import logging
import os
from decimal import Decimal
from django.core.files.base import ContentFile
from django.utils.timezone import now
@@ -97,9 +98,9 @@ def preview(event: int, provider: str):
event = Event.objects.get(id=event)
with rolledback_transaction(), language(event.settings.locale, event.settings.region):
item = event.items.create(name=_("Sample product"), default_price=42.23,
item = event.items.create(name=_("Sample product"), default_price=Decimal('42.23'),
description=_("Sample product description"))
item2 = event.items.create(name=_("Sample workshop"), default_price=23.40)
item2 = event.items.create(name=_("Sample workshop"), default_price=Decimal('23.40'))
from pretix.base.models import Order
order = event.orders.create(status=Order.STATUS_PENDING, datetime=now(),
+2 -1
View File
@@ -56,6 +56,7 @@ from django.utils.translation import (
from django_countries.fields import Country
from hierarkey.models import GlobalSettingsBase, Hierarkey
from i18nfield.forms import I18nFormField, I18nTextarea, I18nTextInput
from i18nfield.rest_framework import I18nField
from i18nfield.strings import LazyI18nString
from phonenumbers import PhoneNumber, parse
from rest_framework import serializers
@@ -63,7 +64,7 @@ from rest_framework import serializers
from pretix.api.serializers.fields import (
ListMultipleChoiceField, UploadedFileField,
)
from pretix.api.serializers.i18n import I18nField, I18nURLField
from pretix.api.serializers.i18n import I18nURLField
from pretix.base.forms import I18nMarkdownTextarea, I18nURLFormField
from pretix.base.models.tax import VAT_ID_COUNTRIES, TaxRule
from pretix.base.reldate import (
+4 -4
View File
@@ -52,12 +52,12 @@ def money_filter(value: Decimal, arg='', hide_currency=False):
# would make the numbers incorrect. If this branch executes, it's likely a bug in
# pretix, but we won't show wrong numbers!
if hide_currency:
return floatformat(value, 2)
return floatformat(value, "2g")
else:
return '{} {}'.format(arg, floatformat(value, 2))
return '{} {}'.format(arg, floatformat(value, "2g"))
if hide_currency:
return floatformat(value, places)
return floatformat(value, f"{places}g")
locale_parts = translation.get_language().split("-", 1)
locale = locale_parts[0]
@@ -70,7 +70,7 @@ def money_filter(value: Decimal, arg='', hide_currency=False):
try:
return format_currency(value, arg, locale=locale)
except:
return '{} {}'.format(arg, floatformat(value, places))
return '{} {}'.format(arg, floatformat(value, f"{places}g"))
@register.filter("money_numberfield")
+62 -2
View File
@@ -63,6 +63,7 @@ from pretix.base.forms import (
)
from pretix.base.models import Event, Organizer, TaxRule, Team
from pretix.base.models.event import EventFooterLink, EventMetaValue, SubEvent
from pretix.base.models.tax import TAX_CODE_LISTS
from pretix.base.reldate import RelativeDateField, RelativeDateTimeField
from pretix.base.services.placeholders import FormPlaceholderMixin
from pretix.base.settings import (
@@ -1504,6 +1505,11 @@ class TaxRuleLineForm(I18nForm):
('require_approval', _('Order requires approval')),
],
)
code = forms.ChoiceField(
label=_("Tax code"),
choices=[("", _("Default tax code")), *TAX_CODE_LISTS],
required=False,
)
rate = forms.DecimalField(
label=_('Deviating tax rate'),
max_digits=10, decimal_places=2,
@@ -1518,6 +1524,43 @@ class TaxRuleLineForm(I18nForm):
})
)
def __init__(self, *args, **kwargs):
self.parent_form = kwargs.pop("parent_form")
super().__init__(*args, **kwargs)
def clean(self):
d = super().clean()
parent_code = self.parent_form.cleaned_data.get("code")
parent_rate = self.parent_form.cleaned_data.get("rate")
code = d.get("code") or parent_code
rate = d.get("rate")
if rate is None:
rate = parent_rate
if d.get("action") in ("reverse", "no", "block") and d.get("rate"):
raise ValidationError(_("A combination of this calculation mode with a non-zero tax rate does not make sense."))
if d.get("action") == "reverse" and d.get("code") and code != "AE":
# Reverse charge but code is not reverse charge -- this is the one case we ignore if the "default code"
# is used because it is the one scenario we can auto-fix
raise ValidationError(_("This combination of calculation mode and tax code does not make sense."))
if d.get("action") == "no" and code and code.split("/")[0] in ("S", "AE", "L", "M", "B"):
# No VAT but code indicates VAT
raise ValidationError(_("This combination of calculation mode and tax code does not make sense."))
if d.get("action") == "vat" and code and rate != Decimal("0.00") and code.split("/")[0] in ("O", "E", "Z", "G", "K", "AE"):
# VAT, but code indicates exempt
raise ValidationError(_("A combination of this tax code with a non-zero tax rate does not make sense."))
if d.get("action") == "vat" and code and rate == Decimal("0.00") and code.split("/")[0] in ("S", "L", "M", "B"):
# no VAT, but code indicates non-exempt
raise ValidationError(_("A combination of this tax code with a zero tax rate does not make sense."))
return d
class I18nBaseFormSet(I18nFormSetMixin, forms.BaseFormSet):
# compatibility shim for django-i18nfield library
@@ -1529,8 +1572,16 @@ class I18nBaseFormSet(I18nFormSetMixin, forms.BaseFormSet):
super().__init__(*args, **kwargs)
class BaseTaxRuleLineFormSet(I18nBaseFormSet):
def __init__(self, *args, **kwargs):
self.parent_form = kwargs.pop('parent_form')
super().__init__(*args, **kwargs)
self.form_kwargs['parent_form'] = self.parent_form
TaxRuleLineFormSet = formset_factory(
TaxRuleLineForm, formset=I18nBaseFormSet,
TaxRuleLineForm, formset=BaseTaxRuleLineFormSet,
can_order=True, can_delete=True, extra=0
)
@@ -1538,7 +1589,16 @@ TaxRuleLineFormSet = formset_factory(
class TaxRuleForm(I18nModelForm):
class Meta:
model = TaxRule
fields = ['name', 'rate', 'price_includes_tax', 'eu_reverse_charge', 'home_country', 'internal_name', 'keep_gross_if_rate_changes']
fields = [
'name',
'rate',
'price_includes_tax',
'code',
'eu_reverse_charge',
'home_country',
'internal_name',
'keep_gross_if_rate_changes'
]
class WidgetCodeForm(forms.Form):
+3 -1
View File
@@ -490,7 +490,9 @@ class OrderPositionChangeForm(forms.Form):
)
operation_secret = forms.BooleanField(
required=False,
label=_('Generate a new secret')
label=_('Generate a new secret'),
help_text=_('This affects both the ticket secret (often used as a QR code) as well as the link used to '
'individually access the ticket.')
)
operation_cancel = forms.BooleanField(
required=False,
@@ -26,6 +26,7 @@
{% bootstrap_field form.name layout="control" %}
{% bootstrap_field form.internal_name layout="control" %}
{% bootstrap_field form.rate addon_after="%" layout="control" %}
{% bootstrap_field form.code layout="control" %}
{% bootstrap_field form.price_includes_tax layout="control" %}
</fieldset>
<fieldset>
@@ -52,6 +53,18 @@
{% trans "All of these rules will only apply if an invoice address is set." %}
</div>
<div class="row">
<div class="col-sm-6 col-md-3 col-lg-3">
<strong>{% trans "Condition" %}</strong>
</div>
<div class="col-sm-6 col-md-3 col-lg-3">
<strong>{% trans "Calculation" %}</strong>
</div>
<div class="col-sm-6 col-md-3 col-lg-4 col-sm-offset-6 col-md-offset-0">
<strong>{% trans "Reason" %}</strong>
</div>
</div>
<div class="formset tax-rules-formset" data-formset data-formset-prefix="{{ formset.prefix }}">
{{ formset.management_form }}
{% bootstrap_formset_errors formset %}
@@ -65,14 +78,17 @@
</div>
<div class="col-sm-6 col-md-3 col-lg-3">
{% bootstrap_field formset.empty_form.country layout='inline' form_group_class="" %}
</div>
<div class="col-sm-6 col-md-3 col-lg-4">
{% bootstrap_field formset.empty_form.address_type layout='inline' form_group_class="" %}
</div>
<div class="col-sm-6 col-md-3 col-lg-3">
{% bootstrap_field formset.empty_form.action layout='inline' form_group_class="" %}
{% bootstrap_field formset.empty_form.rate layout='inline' form_group_class="" %}
</div>
<div class="col-sm-6 col-md-3 col-lg-2 text-right flip">
<div class="col-sm-6 col-md-3 col-lg-4 col-sm-offset-6 col-md-offset-0">
{% bootstrap_field formset.empty_form.code layout='inline' form_group_class="" %}
{% bootstrap_field formset.empty_form.invoice_text layout='inline' form_group_class="" %}
</div>
<div class="col-sm-6 col-md-3 col-lg-2 col-sm-offset-6 col-md-offset-0 text-right flip">
<button type="button" class="btn btn-default" data-formset-move-up-button>
<i class="fa fa-arrow-up"></i></button>
<button type="button" class="btn btn-default" data-formset-move-down-button>
@@ -80,12 +96,6 @@
<button type="button" class="btn btn-danger" data-formset-delete-button>
<i class="fa fa-trash"></i></button>
</div>
<div class="col-sm-6 col-md-3 col-lg-4 col-md-offset-3">
{% bootstrap_field formset.empty_form.invoice_text layout='inline' form_group_class="" %}
</div>
<div class="col-sm-6 col-md-3 col-lg-3">
{% bootstrap_field formset.empty_form.rate layout='inline' form_group_class="" %}
</div>
</div>
{% endescapescript %}
</script>
@@ -100,14 +110,17 @@
</div>
<div class="col-sm-6 col-md-3 col-lg-3">
{% bootstrap_field form.country layout='inline' form_group_class="" %}
</div>
<div class="col-sm-6 col-md-3 col-lg-4">
{% bootstrap_field form.address_type layout='inline' form_group_class="" %}
</div>
<div class="col-sm-6 col-md-3 col-lg-3">
{% bootstrap_field form.action layout='inline' form_group_class="" %}
{% bootstrap_field form.rate layout='inline' form_group_class="" %}
</div>
<div class="col-sm-6 col-md-3 col-lg-2 text-right flip">
<div class="col-sm-6 col-md-3 col-lg-4 col-sm-offset-6 col-md-offset-0">
{% bootstrap_field form.code layout='inline' form_group_class="" %}
{% bootstrap_field form.invoice_text layout='inline' form_group_class="" %}
</div>
<div class="col-sm-6 col-md-3 col-lg-2 col-sm-offset-6 col-md-offset-0 text-right flip">
<button type="button" class="btn btn-default" data-formset-move-up-button>
<i class="fa fa-arrow-up"></i></button>
<button type="button" class="btn btn-default" data-formset-move-down-button>
@@ -115,12 +128,6 @@
<button type="button" class="btn btn-danger" data-formset-delete-button>
<i class="fa fa-trash"></i></button>
</div>
<div class="col-sm-6 col-md-3 col-lg-4 col-md-offset-3">
{% bootstrap_field form.invoice_text layout='inline' form_group_class="" %}
</div>
<div class="col-sm-6 col-md-3 col-lg-3">
{% bootstrap_field form.rate layout='inline' form_group_class="" %}
</div>
</div>
{% endfor %}
</div>
@@ -220,7 +220,6 @@
{% endif %}
{% bootstrap_field formset.empty_form.available_from visibility_field=formset.empty_form.available_from_mode layout="control_with_visibility" %}
{% bootstrap_field formset.empty_form.available_until visibility_field=formset.empty_form.available_until_mode layout="control_with_visibility" %}
{% bootstrap_field formset.empty_form.available_until layout="control" %}
{% bootstrap_field formset.empty_form.all_sales_channels layout="control" %}
{% bootstrap_field formset.empty_form.limit_sales_channels layout="control" %}
{% bootstrap_field formset.empty_form.hide_without_voucher layout="control" %}
@@ -202,6 +202,12 @@
+ {{ position.tax_rate }}%)
</small>
{% endif %}
{% if position.tax_code %}
<br>
<small>
{{ position.get_tax_code_display }}
</small>
{% endif %}
</div>
<div class="col-sm-4 field-container">
{% bootstrap_field position.form.price addon_after=request.event.currency layout='inline' %}
@@ -420,6 +426,12 @@
+ {{ fee.tax_rate }}%)
</small>
{% endif %}
{% if fee.tax_code %}
<br>
<small>
{{ fee.get_tax_code_display }}
</small>
{% endif %}
</div>
<div class="col-sm-4 field-container">
{% bootstrap_field fee.form.value addon_after=request.event.currency layout='inline' %}
@@ -19,6 +19,7 @@
<th>{% trans "Date" %}</th>
<th>{% trans "Product" %}</th>
<th class="text-right flip">{% trans "Tax rate" %}</th>
<th>{% trans "Tax code" %}</th>
<th class="text-right flip">{% trans "Quantity" %}</th>
<th class="text-right flip">{% trans "Single price" %}</th>
<th class="text-right flip">{% trans "Total tax value" %}</th>
@@ -52,6 +53,7 @@
{% endif %}
</td>
<td class="text-right flip">{{ t.tax_rate }} %</td>
<td>{{ t.get_tax_code_display }}</td>
<td class="text-right flip">{{ t.count }} &times;</td>
<td class="text-right flip">{{ t.price|money:request.event.currency }}</td>
<td class="text-right flip">{{ t.full_tax_value|money:request.event.currency }}</td>
@@ -64,8 +66,8 @@
<td>
<strong>{% trans "Sum" %}</strong>
</td>
<td>
</td>
<td></td>
<td></td>
<td></td>
<td class="text-right flip">
<strong>
+11 -8
View File
@@ -38,6 +38,7 @@ from zoneinfo import ZoneInfo
from django.conf import settings
from django.contrib.contenttypes.models import ContentType
from django.contrib.humanize.templatetags.humanize import intcomma
from django.db.models import (
Count, IntegerField, Max, Min, OuterRef, Prefetch, Q, Subquery, Sum,
)
@@ -47,7 +48,6 @@ from django.http import JsonResponse
from django.shortcuts import render
from django.template.loader import get_template
from django.urls import reverse
from django.utils import formats
from django.utils.formats import date_format
from django.utils.html import escape
from django.utils.timezone import now
@@ -67,6 +67,7 @@ from pretix.control.signals import (
from pretix.helpers.daterange import daterange
from ...base.models.orders import CancellationRequest
from ...base.templatetags.money import money_filter
from ..logdisplay import OVERVIEW_BANLIST
NUM_WIDGET = '<div class="numwidget"><span class="num">{num}</span><span class="text">{text}</span></div>'
@@ -111,7 +112,7 @@ def base_widgets(sender, subevent=None, lazy=False, **kwargs):
return [
{
'content': None if lazy else NUM_WIDGET.format(num=tickc, text=_('Attendees (ordered)')),
'content': None if lazy else NUM_WIDGET.format(num=intcomma(tickc), text=_('Attendees (ordered)')),
'lazy': 'attendees-ordered',
'display_size': 'small',
'priority': 100,
@@ -121,7 +122,7 @@ def base_widgets(sender, subevent=None, lazy=False, **kwargs):
}) + ('?subevent={}'.format(subevent.pk) if subevent else '')
},
{
'content': None if lazy else NUM_WIDGET.format(num=paidc, text=_('Attendees (paid)')),
'content': None if lazy else NUM_WIDGET.format(num=intcomma(paidc), text=_('Attendees (paid)')),
'lazy': 'attendees-paid',
'display_size': 'small',
'priority': 100,
@@ -132,7 +133,9 @@ def base_widgets(sender, subevent=None, lazy=False, **kwargs):
},
{
'content': None if lazy else NUM_WIDGET.format(
num=formats.localize(round_decimal(rev, sender.currency)), text=_('Total revenue ({currency})').format(currency=sender.currency)),
num=money_filter(round_decimal(rev, sender.currency), sender.currency, hide_currency=True),
text=_('Total revenue ({currency})').format(currency=sender.currency)
),
'lazy': 'total-revenue',
'display_size': 'small',
'priority': 100,
@@ -207,7 +210,7 @@ def waitinglist_widgets(sender, subevent=None, lazy=False, **kwargs):
widgets.append({
'content': None if lazy else NUM_WIDGET.format(
num=str(happy), text=_('available to give to people on waiting list')
num=intcomma(happy), text=_('available to give to people on waiting list')
),
'lazy': 'waitinglist-avail',
'priority': 50,
@@ -217,7 +220,7 @@ def waitinglist_widgets(sender, subevent=None, lazy=False, **kwargs):
})
})
widgets.append({
'content': None if lazy else NUM_WIDGET.format(num=str(wles.count()), text=_('total waiting list length')),
'content': None if lazy else NUM_WIDGET.format(num=intcomma(wles.count()), text=_('total waiting list length')),
'lazy': 'waitinglist-length',
'display_size': 'small',
'priority': 50,
@@ -245,7 +248,7 @@ def quota_widgets(sender, subevent=None, lazy=False, **kwargs):
status, left = qa.results[q] if q in qa.results else q.availability(allow_cache=True)
widgets.append({
'content': None if lazy else NUM_WIDGET.format(
num='{}/{}'.format(left, q.size) if q.size is not None else '\u221e',
num='{}/{}'.format(intcomma(left), intcomma(q.size)) if q.size is not None else '\u221e',
text=_('{quota} left').format(quota=escape(q.name))
),
'lazy': 'quota-{}'.format(q.pk),
@@ -297,7 +300,7 @@ def checkin_widget(sender, subevent=None, lazy=False, **kwargs):
for cl in qs:
widgets.append({
'content': None if lazy else NUM_WIDGET.format(
num='{}/{}'.format(cl.inside_count, cl.position_count),
num='{}/{}'.format(intcomma(cl.inside_count), intcomma(cl.position_count)),
text=_('Present {list}').format(list=escape(cl.name))
),
'lazy': 'checkin-{}'.format(cl.pk),
+12 -2
View File
@@ -1197,17 +1197,22 @@ class TaxCreate(EventSettingsViewMixin, EventPermissionRequiredMixin, CreateView
def post(self, request, *args, **kwargs):
self.object = None
form = self.get_form()
form = self.form
if form.is_valid() and self.formset.is_valid():
return self.form_valid(form)
else:
return self.form_invalid(form)
@cached_property
def form(self):
return self.get_form()
@cached_property
def formset(self):
return TaxRuleLineFormSet(
data=self.request.POST if self.request.method == "POST" else None,
event=self.request.event,
parent_form=self.form,
)
def get_context_data(self, **kwargs):
@@ -1248,17 +1253,22 @@ class TaxUpdate(EventSettingsViewMixin, EventPermissionRequiredMixin, UpdateView
def post(self, request, *args, **kwargs):
self.object = self.get_object(self.get_queryset())
form = self.get_form()
form = self.form
if form.is_valid() and self.formset.is_valid():
return self.form_valid(form)
else:
return self.form_invalid(form)
@cached_property
def form(self):
return self.get_form()
@cached_property
def formset(self):
return TaxRuleLineFormSet(
data=self.request.POST if self.request.method == "POST" else None,
event=self.request.event,
parent_form=self.form,
initial=json.loads(self.object.custom_rules) if self.object.custom_rules else []
)
+2
View File
@@ -2241,6 +2241,8 @@ class OrderContactChange(OrderView):
changed = True
self.order.secret = generate_secret()
for op in self.order.all_positions.all():
op.web_secret = generate_secret()
op.save(update_fields=["web_secret"])
assign_ticket_secret(
self.request.event, position=op, force_invalidate=True, save=True
)
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+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"
@@ -622,40 +622,40 @@ msgid ""
"darker shade."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr ""
@@ -705,20 +705,20 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
msgid "required"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr ""
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+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/"
@@ -656,40 +656,40 @@ msgid ""
"darker shade."
msgstr "تباين اللون سيئ للخلفية البيضاء، الرجاء اختيار لون غامق."
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr "البحث في الاستفسارات"
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr "الكل"
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr "لا شيء"
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr "المختارة فقط"
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr "قم باستخدم اسم مختلف داخليا"
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr "اضغط لاغلاق الصفحة"
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr "لم تقم بحفظ التعديلات!"
@@ -753,20 +753,20 @@ msgstr "ستسترد %(currency)%(amount)"
msgid "Please enter the amount the organizer can keep."
msgstr "الرجاء إدخال المبلغ الذي يمكن للمنظم الاحتفاظ به."
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr "الرجاء إدخال عدد لأحد أنواع التذاكر."
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
msgid "required"
msgstr "مطلوب"
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr "المنطقة الزمنية:"
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr "التوقيت المحلي:"
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+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-"
@@ -623,40 +623,40 @@ msgid ""
"darker shade."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr ""
@@ -710,22 +710,22 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
#, fuzzy
#| msgid "Cart expired"
msgid "required"
msgstr "Cistella expirada"
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr ""
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2023-09-15 06:00+0000\n"
"Last-Translator: Michael <michael.happl@gmx.at>\n"
"Language-Team: Czech <https://translate.pretix.eu/projects/pretix/pretix-js/"
@@ -650,40 +650,40 @@ 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:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr "Hledaný výraz"
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr "Všechny"
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr "Žádný"
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr "Pouze vybrané"
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr "Interně používat jiný název"
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr "Kliknutím zavřete"
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr "Máte neuložené změny!"
@@ -740,20 +740,20 @@ msgstr "Dostanete %(currency)s %(amount)s zpět"
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:449
#: pretix/static/pretixpresale/js/ui/main.js:454
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:485
#: pretix/static/pretixpresale/js/ui/main.js:506
msgid "required"
msgstr "povinný"
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr "Časové pásmo:"
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr "Místní čas:"
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+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"
@@ -623,40 +623,40 @@ msgid ""
"darker shade."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr ""
@@ -706,20 +706,20 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
msgid "required"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr ""
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+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/"
@@ -670,40 +670,40 @@ msgid ""
"darker shade."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr "Alle"
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr "Ingen"
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr "Klik for at lukke"
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr "Du har ændringer, der ikke er gemt!"
@@ -763,22 +763,22 @@ msgstr "fra %(currency)s %(price)s"
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
#, fuzzy
#| msgid "Cart expired"
msgid "required"
msgstr "Kurv udløbet"
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr "Tidszone:"
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr "Din lokaltid:"
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2024-09-10 07:17+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"Language-Team: German <https://translate.pretix.eu/projects/pretix/pretix-js/"
@@ -644,40 +644,40 @@ msgstr ""
"Diese Farbe hat einen schlechten Kontrast für Text auf einem weißen "
"Hintergrund. Bitte wählen Sie eine dunklere Farbe."
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr "Suchbegriff"
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr "Alle"
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr "Keine"
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr "Nur ausgewählte"
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
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:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr "Ungültige Seitenzahl."
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr "Intern einen anderen Namen verwenden"
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr "Klicken zum Schließen"
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr "Sie haben ungespeicherte Änderungen!"
@@ -732,20 +732,20 @@ msgstr "Sie erhalten %(currency)s %(amount)s zurück"
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:449
#: pretix/static/pretixpresale/js/ui/main.js:454
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:485
#: pretix/static/pretixpresale/js/ui/main.js:506
msgid "required"
msgstr "verpflichtend"
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr "Zeitzone:"
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr "Deine lokale Zeit:"
+11
View File
@@ -66,10 +66,12 @@ BSD
bspw
Bokmål
Boleto
Buchhaltungs
Bundles
Butterfly
bzw
ca
Ceuta
Cc
chardet
charge
@@ -158,9 +160,12 @@ Inc
inkl
innenname
innennamen
innergemeinschaftliche
Innergemeinschaftlicher
Input
Installations
integrationen
intra
INV
invalidieren
invalidiert
@@ -177,10 +182,12 @@ Kombitickets
Kompatibilitätsmodus
Konfigurations
Kosovo
land
landesspezifische
Lead
Leaflet
Linktext
lit
Logindaten
Lösch
loszulegen
@@ -188,6 +195,7 @@ Ltd
max
MariaDB
MapQuest
Melilla
Mercado
Merchandise
Meta
@@ -269,6 +277,7 @@ rückabgewickelt
Rundungsdifferenzen
Sa
Saalplan
Sammlungsstücken
SAQ
SCA
Scan
@@ -357,6 +366,7 @@ USt
Überzahlten
Validierung
Venmo
Veranstalterdomain
Veranstaltereinstellungen
Veranstalterkonten
Veranstalterkonto
@@ -367,6 +377,7 @@ Veranstalterseite
Veranstalterübersicht
veranstalterweiten
Veranstaltungs
Veranstalterdomain
veranstaltungsweiten
Verfügbarkeitsberechnung
Verfügbarkeitsstatus
File diff suppressed because it is too large Load Diff
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2024-09-10 07:17+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"Language-Team: German (informal) <https://translate.pretix.eu/projects/"
@@ -643,40 +643,40 @@ msgstr ""
"Diese Farbe hat einen schlechten Kontrast für Text auf einem weißen "
"Hintergrund. Bitte wähle eine dunklere Farbe."
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr "Suchbegriff"
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr "Alle"
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr "Keine"
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr "Nur ausgewählte"
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
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:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr "Ungültige Seitenzahl."
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr "Intern einen anderen Namen verwenden"
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr "Klicken zum Schließen"
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr "Du hast ungespeicherte Änderungen!"
@@ -731,20 +731,20 @@ msgstr "Du erhältst %(currency)s %(amount)s zurück"
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:449
#: pretix/static/pretixpresale/js/ui/main.js:454
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:485
#: pretix/static/pretixpresale/js/ui/main.js:506
msgid "required"
msgstr "verpflichtend"
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr "Zeitzone:"
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr "Deine lokale Zeit:"
@@ -66,10 +66,12 @@ BSD
bspw
Bokmål
Boleto
Buchhaltungs
Bundles
Butterfly
bzw
ca
Ceuta
Cc
chardet
charge
@@ -158,9 +160,12 @@ Inc
inkl
innenname
innennamen
innergemeinschaftliche
Innergemeinschaftlicher
Input
Installations
integrationen
intra
INV
invalidieren
invalidiert
@@ -177,10 +182,12 @@ Kombitickets
Kompatibilitätsmodus
Konfigurations
Kosovo
land
landesspezifische
Lead
Leaflet
Linktext
lit
Logindaten
Lösch
loszulegen
@@ -188,6 +195,7 @@ Ltd
max
MariaDB
MapQuest
Melilla
Mercado
Merchandise
Meta
@@ -269,6 +277,7 @@ rückabgewickelt
Rundungsdifferenzen
Sa
Saalplan
Sammlungsstücken
SAQ
SCA
Scan
@@ -357,6 +366,7 @@ USt
Überzahlten
Validierung
Venmo
Veranstalterdomain
Veranstaltereinstellungen
Veranstalterkonten
Veranstalterkonto
@@ -367,6 +377,7 @@ Veranstalterseite
Veranstalterübersicht
veranstalterweiten
Veranstaltungs
Veranstalterdomain
veranstaltungsweiten
Verfügbarkeitsberechnung
Verfügbarkeitsstatus
+2119 -1846
View File
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-19 15:34+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+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"
@@ -622,40 +622,40 @@ msgid ""
"darker shade."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr ""
@@ -705,20 +705,20 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
msgid "required"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr ""
File diff suppressed because it is too large Load Diff
+25 -29
View File
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"PO-Revision-Date: 2019-10-03 19:00+0000\n"
"Last-Translator: Chris Spy <chrispiropoulou@hotmail.com>\n"
"POT-Creation-Date: 2024-12-16 14:20+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/"
"el/>\n"
"Language: el\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 3.5.1\n"
"X-Generator: Weblate 5.9.2\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -31,7 +31,7 @@ msgstr "Σχόλιο:"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:34
msgid "PayPal"
msgstr ""
msgstr "PayPal"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:35
msgid "Venmo"
@@ -64,7 +64,7 @@ msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:42
msgid "SEPA Direct Debit"
msgstr ""
msgstr "Τραπεζική μεταφορά"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:43
msgid "Bancontact"
@@ -79,10 +79,8 @@ msgid "SOFORT"
msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:46
#, fuzzy
#| msgid "Yes"
msgid "eps"
msgstr "Ναι"
msgstr "EPS"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:47
msgid "MyBank"
@@ -147,11 +145,11 @@ msgstr "Συνέχεια"
#: pretix/plugins/stripe/static/pretixplugins/stripe/pretix-stripe.js:317
#: pretix/plugins/stripe/static/pretixplugins/stripe/pretix-stripe.js:341
msgid "Confirming your payment …"
msgstr ""
msgstr "Επιβεβαίωση πληρωμής…"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:254
msgid "Payment method unavailable"
msgstr ""
msgstr "Μη διαθέσιμος τρόπος πληρωμής"
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:15
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:39
@@ -176,10 +174,8 @@ msgid "Total"
msgstr "Σύνολο"
#: pretix/plugins/stripe/static/pretixplugins/stripe/pretix-stripe.js:291
#, fuzzy
#| msgid "Contacting Stripe …"
msgid "Contacting your bank …"
msgstr "Επικοινωνία με το Stripe …"
msgstr "Επικοινωνία με την τράπεζα …"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:30
msgid "Select a check-in list"
@@ -686,40 +682,40 @@ msgstr ""
"Το χρώμα σας έχει κακή αντίθεση για κείμενο σε λευκό φόντο, επιλέξτε μια πιο "
"σκούρα σκιά."
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr "Όλα"
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr "Κανένας"
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr "Χρησιμοποιήστε διαφορετικό όνομα εσωτερικά"
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr "Κάντε κλικ για να κλείσετε"
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr ""
@@ -781,22 +777,22 @@ msgstr "απο %(currency)s %(price)s"
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr "Εισαγάγετε μια ποσότητα για έναν από τους τύπους εισιτηρίων."
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
#, fuzzy
#| msgid "Cart expired"
msgid "required"
msgstr "Το καλάθι έληξε"
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr ""
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+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"
@@ -622,40 +622,40 @@ msgid ""
"darker shade."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr ""
@@ -705,20 +705,20 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
msgid "required"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr ""
File diff suppressed because it is too large Load Diff
+18 -18
View File
@@ -7,11 +7,11 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2024-11-18 15:48+0000\n"
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n"
"Language-Team: Spanish <https://translate.pretix.eu/projects/pretix/"
"pretix-js/es/>\n"
"Language-Team: Spanish <https://translate.pretix.eu/projects/pretix/pretix-"
"js/es/>\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -642,40 +642,40 @@ msgstr ""
"Tu color tiene mal contraste para un texto con fondo blanco, por favor, "
"escoge un tono más oscuro."
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr "Consulta de búsqueda"
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr "Todos"
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr "Ninguno"
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr "Solamente seleccionados"
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr "Introduce un número de página entre 1 y %(max)s."
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr "Número de página inválido."
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr "Usar un nombre diferente internamente"
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr "Click para cerrar"
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr "¡Tienes cambios sin guardar!"
@@ -730,20 +730,20 @@ msgstr "Obtienes %(currency)s %(price)s de vuelta"
msgid "Please enter the amount the organizer can keep."
msgstr "Por favor, ingrese el importe que el organizador puede quedarse."
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr "Por favor, introduzca un valor para cada tipo de entrada."
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
msgid "required"
msgstr "campo requerido"
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr "Zona horaria:"
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr "Su hora local:"
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+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"
@@ -622,40 +622,40 @@ msgid ""
"darker shade."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr ""
@@ -705,20 +705,20 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
msgid "required"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr ""
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2024-09-06 08:47+0000\n"
"Last-Translator: Albizuri <oier@puntu.eus>\n"
"Language-Team: Basque <https://translate.pretix.eu/projects/pretix/pretix-js/"
@@ -635,40 +635,40 @@ msgid ""
"darker shade."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr "Guztiak"
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr ""
@@ -721,20 +721,20 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
msgid "required"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr ""
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2021-11-10 05:00+0000\n"
"Last-Translator: Jaakko Rinta-Filppula <jaakko@r-f.fi>\n"
"Language-Team: Finnish <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -651,40 +651,40 @@ msgid ""
"darker shade."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr "Kaikki"
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr "Käytä toista nimeä sisäisesti"
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr "Sulje klikkaamalla"
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr "Sinulla on tallentamattomia muutoksia!"
@@ -738,22 +738,22 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
#, fuzzy
#| msgid "Cart expired"
msgid "required"
msgstr "Ostoskori on vanhentunut"
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr "Aikavyöhyke:"
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr ""
File diff suppressed because it is too large Load Diff
+19 -19
View File
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: French\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"PO-Revision-Date: 2024-11-16 05:00+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2024-12-03 20:00+0000\n"
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n"
"Language-Team: French <https://translate.pretix.eu/projects/pretix/pretix-js/"
"fr/>\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.8.3\n"
"X-Generator: Weblate 5.8.4\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -150,7 +150,7 @@ msgstr "Méthode de paiement non disponible"
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:15
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:39
msgid "Placed orders"
msgstr "Commandes placées"
msgstr "Commandes réalisées"
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:15
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:39
@@ -643,40 +643,40 @@ msgstr ""
"Votre choix de couleur n'a pas un bon contraste avec du texte sur un fond "
"blanc, SVP choisissez un ton plus sombre."
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr "Requête de recherche"
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr "Tous"
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr "Aucun"
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr "Seuls les sélectionnés"
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr "Saisir le numéro de page entre 1 et %(max)s."
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr "Numéro de page invalide."
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr "Utiliser un nom différent en interne"
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr "Cliquez pour fermer"
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr "Vous avez des modifications non sauvegardées !"
@@ -729,20 +729,20 @@ msgid "Please enter the amount the organizer can keep."
msgstr ""
"Veuillez indiquer le montant que l'organisateur est autorisé à retenir."
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr "SVP entrez une quantité pour un de vos types de billets."
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
msgid "required"
msgstr "obligatoire"
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr "Fuseau horaire :"
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr "Votre heure locale:"
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2022-02-22 22:00+0000\n"
"Last-Translator: Ismael Menéndez Fernández <ismael.menendez@balidea.com>\n"
"Language-Team: Galician <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -658,40 +658,40 @@ msgstr ""
"A túa cor ten mal contraste para un texto con fondo branco. Por favor, "
"escolle un ton máis escuro."
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr "Consultar unha procura"
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr "Todos"
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr "Ningún"
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr "Soamente seleccionados"
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr "Usar un nome diferente internamente"
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr "Click para cerrar"
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr "Tes cambios sen gardar!"
@@ -744,20 +744,20 @@ msgstr "Obtés %(currency)s %(price)s de volta"
msgid "Please enter the amount the organizer can keep."
msgstr "Por favor, ingrese a cantidade que pode conservar o organizador."
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr "Por favor, introduza un valor para cada tipo de entrada."
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
msgid "required"
msgstr "campo requirido"
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr "Zona horaria:"
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr "A súa hora local:"
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2021-09-24 13:54+0000\n"
"Last-Translator: ofirtro <ofir.tro@gmail.com>\n"
"Language-Team: Hebrew <https://translate.pretix.eu/projects/pretix/pretix-js/"
@@ -630,40 +630,40 @@ msgid ""
"darker shade."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr ""
@@ -717,20 +717,20 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
msgid "required"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr ""
File diff suppressed because it is too large Load Diff
+18 -18
View File
@@ -7,11 +7,11 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2024-11-17 00:00+0000\n"
"Last-Translator: Pavle Ergović <pavleergovic@gmail.com>\n"
"Language-Team: Croatian <https://translate.pretix.eu/projects/pretix/"
"pretix-js/hr/>\n"
"Language-Team: Croatian <https://translate.pretix.eu/projects/pretix/pretix-"
"js/hr/>\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -624,40 +624,40 @@ msgid ""
"darker shade."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr ""
@@ -707,20 +707,20 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
msgid "required"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr ""
File diff suppressed because it is too large Load Diff
+18 -18
View File
@@ -7,11 +7,11 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2024-11-28 06:00+0000\n"
"Last-Translator: Patrick Chilton <chpatrick@gmail.com>\n"
"Language-Team: Hungarian <https://translate.pretix.eu/projects/pretix/"
"pretix-js/hu/>\n"
"Language-Team: Hungarian <https://translate.pretix.eu/projects/pretix/pretix-"
"js/hu/>\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -671,40 +671,40 @@ msgstr ""
"A választott színek kontrasztja elégtelen, kérjük válassz sötétebb "
"árnyalatot."
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr "Összes"
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr "Semmi"
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr "Használj másik nevet"
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr "Bezárásért kattints"
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr "Mentetlen változtatások!"
@@ -766,22 +766,22 @@ msgstr "%(currency) %(price)-tól"
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr "Adjon meg egy mennyiséget az egyik jegytípusból."
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
#, fuzzy
#| msgid "Cart expired"
msgid "required"
msgstr "A kosár lejárt"
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr "Időzona:"
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr ""
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2023-09-20 14:01+0000\n"
"Last-Translator: Mahdia Aliyy <mahdlyy.k@gmail.com>\n"
"Language-Team: Indonesian <https://translate.pretix.eu/projects/pretix/"
@@ -657,40 +657,40 @@ msgstr ""
"Warna Anda memiliki kontras yang buruk untuk teks dengan latar belakang "
"putih, harap pilih warna yang lebih gelap."
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr "Permintaan pencarian"
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr "Semua"
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr "Tidak ada"
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr "Hanya dipilih"
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr "Gunakan nama yang berbeda secara internal"
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr "Klik untuk menutup"
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr "Anda memiliki perubahan yang belum disimpan!"
@@ -740,20 +740,20 @@ msgstr "Anda mendapatkan %(currency)s %(amount)s kembali"
msgid "Please enter the amount the organizer can keep."
msgstr "Silakan masukkan jumlah yang dapat disimpan oleh penyelenggara."
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr "Masukkan jumlah untuk salah satu jenis tiket."
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
msgid "required"
msgstr "diperlukan"
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr "Zona waktu:"
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr "Waktu setempat Anda:"
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2023-05-18 01:00+0000\n"
"Last-Translator: M C <micasadmail@gmail.com>\n"
"Language-Team: Italian <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -652,40 +652,40 @@ msgid ""
msgstr ""
"Il colore scelto non ha un buon contrasto, per favore scegline uno più scuro."
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr "Chiave di ricerca"
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr "Tutto"
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr "Nessuno"
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr "Solo i selezionati"
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr "Utilizza un nome diverso internamente"
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr "Clicca per chiudere"
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr "Hai cambiamenti non salvati!"
@@ -737,20 +737,20 @@ msgstr "Ricevi indietro %(currency)s %(amount)s"
msgid "Please enter the amount the organizer can keep."
msgstr "Inserisci l'importo che l'organizzatore può trattenere."
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr "Inserisci la quantità per una tipologia di biglietto."
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
msgid "required"
msgstr "richiesta"
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr "Fuso orario:"
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr "Ora locale:"
File diff suppressed because it is too large Load Diff
+80 -106
View File
@@ -7,17 +7,17 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"PO-Revision-Date: 2022-03-15 00:00+0000\n"
"Last-Translator: Yuriko Matsunami <y.matsunami@enobyte.com>\n"
"Language-Team: Japanese <https://translate.pretix.eu/projects/pretix/pretix-"
"js/ja/>\n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2024-12-27 11:45+0000\n"
"Last-Translator: Hijiri Umemoto <hijiri@umemoto.org>\n"
"Language-Team: Japanese <https://translate.pretix.eu/projects/pretix/"
"pretix-js/ja/>\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.8\n"
"X-Generator: Weblate 5.9.2\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -35,28 +35,28 @@ msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:35
msgid "Venmo"
msgstr ""
msgstr "Venmo"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:36
#: pretix/static/pretixpresale/js/walletdetection.js:38
msgid "Apple Pay"
msgstr ""
msgstr "Apple Pay"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:37
msgid "Itaú"
msgstr ""
msgstr "Itaú"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:38
msgid "PayPal Credit"
msgstr ""
msgstr "PayPalクレジット"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:39
msgid "Credit Card"
msgstr ""
msgstr "クレジットカード"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:40
msgid "PayPal Pay Later"
msgstr ""
msgstr "PayPal後払い"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:41
msgid "iDEAL"
@@ -76,17 +76,15 @@ msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:45
msgid "SOFORT"
msgstr ""
msgstr "SOFORT"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:46
#, fuzzy
#| msgid "Yes"
msgid "eps"
msgstr "はい"
msgstr "eps"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:47
msgid "MyBank"
msgstr ""
msgstr "MyBank"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:48
msgid "Przelewy24"
@@ -94,35 +92,35 @@ msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:49
msgid "Verkkopankki"
msgstr ""
msgstr "Verkkopankki"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:50
msgid "PayU"
msgstr ""
msgstr "PayU"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:51
msgid "BLIK"
msgstr ""
msgstr "BLIK"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:52
msgid "Trustly"
msgstr ""
msgstr "Trustly"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:53
msgid "Zimpler"
msgstr ""
msgstr "Zimpler"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:54
msgid "Maxima"
msgstr ""
msgstr "Maxima"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:55
msgid "OXXO"
msgstr ""
msgstr "OXXO"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:56
msgid "Boleto"
msgstr ""
msgstr "Boleto"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:57
msgid "WeChat Pay"
@@ -130,7 +128,7 @@ msgstr ""
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:58
msgid "Mercado Pago"
msgstr ""
msgstr "Mercado Pago"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:50
@@ -144,11 +142,11 @@ msgstr "次へ"
#: pretix/plugins/stripe/static/pretixplugins/stripe/pretix-stripe.js:317
#: pretix/plugins/stripe/static/pretixplugins/stripe/pretix-stripe.js:341
msgid "Confirming your payment …"
msgstr "お支払い内容の確認"
msgstr "お支払いの確認中…"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:254
msgid "Payment method unavailable"
msgstr ""
msgstr "支払い方法が利用できません"
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:15
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:39
@@ -166,7 +164,7 @@ msgstr "売上合計"
#: pretix/plugins/stripe/static/pretixplugins/stripe/pretix-stripe.js:15
msgid "Contacting Stripe …"
msgstr "お問い合わせはこちら"
msgstr "Stripeに接続中…"
#: pretix/plugins/stripe/static/pretixplugins/stripe/pretix-stripe.js:72
msgid "Total"
@@ -214,11 +212,11 @@ msgstr "入口"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:39
msgid "Exit"
msgstr "出"
msgstr "退出"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:40
msgid "Scan a ticket or search and press return…"
msgstr "チケットのスキャン検索を行い、エンターキーで確定してください"
msgstr "チケットのスキャン又は検索を行い、リターンを押す…"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:41
msgid "Load more"
@@ -239,7 +237,7 @@ msgstr "キャンセル"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:46
msgid "Confirmed"
msgstr ""
msgstr "確認済み"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:47
msgid "Approval pending"
@@ -445,7 +443,7 @@ msgstr "の後"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:40
msgid "="
msgstr ""
msgstr "="
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:99
msgid "Product"
@@ -465,11 +463,11 @@ msgstr "現在の日時"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:115
msgid "Current day of the week (1 = Monday, 7 = Sunday)"
msgstr ""
msgstr "現在の曜日 (1 = 月曜日, 7 = 日曜日)"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:119
msgid "Current entry status"
msgstr ""
msgstr "現在の登録ステータス"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:123
msgid "Number of previous entries"
@@ -480,40 +478,32 @@ msgid "Number of previous entries since midnight"
msgstr "0時から現在までの入力件数"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:131
#, fuzzy
#| msgid "Number of previous entries"
msgid "Number of previous entries since"
msgstr "こまでの入力件数"
msgstr "この時点から今までの入力件数"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:135
#, fuzzy
#| msgid "Number of previous entries"
msgid "Number of previous entries before"
msgstr "これまでの入力件数"
msgstr "この時点より前に入力された件数"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:139
msgid "Number of days with a previous entry"
msgstr "これまでの入力日数"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:143
#, fuzzy
#| msgid "Number of days with a previous entry"
msgid "Number of days with a previous entry since"
msgstr "これまでの入力日数"
msgstr "この時点より後に入力が行われた日数"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:147
#, fuzzy
#| msgid "Number of days with a previous entry"
msgid "Number of days with a previous entry before"
msgstr "これまでの入力日数"
msgstr "この時点より前に入力が行われた日数"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:151
msgid "Minutes since last entry (-1 on first entry)"
msgstr ""
msgstr "最後の登録からの経過分数(最初の登録は-1)"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:155
msgid "Minutes since first entry (-1 on first entry)"
msgstr ""
msgstr "最初のとうろくからの経過分数(最初の登録は-1)"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:182
msgid "All of the conditions below (AND)"
@@ -557,17 +547,17 @@ msgstr "分"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:192
msgid "Duplicate"
msgstr ""
msgstr "複製"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:193
msgctxt "entry_status"
msgid "present"
msgstr ""
msgstr "出席"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:194
msgctxt "entry_status"
msgid "absent"
msgstr ""
msgstr "欠席"
#: pretix/static/pretixcontrol/js/ui/editor.js:171
msgid "Check-in QR"
@@ -582,10 +572,8 @@ msgid "Group of objects"
msgstr "オブジェクトグループ"
#: pretix/static/pretixcontrol/js/ui/editor.js:899
#, fuzzy
#| msgid "Text object"
msgid "Text object (deprecated)"
msgstr "テキストオブジェクト"
msgstr "テキストオブジェクト (廃止済)"
#: pretix/static/pretixcontrol/js/ui/editor.js:901
#, fuzzy
@@ -654,40 +642,40 @@ msgstr ""
"このテキストカラーは白い背景とのコントラストがよくありません。暗い色に選び直"
"してください。"
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr "検索ワード"
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr "全"
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr "ない"
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr "選択したもののみ"
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
msgstr "1以上%(max)s以下のページ番号を入力。"
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
msgstr "無効なページ番号。"
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr "内部で別の名前を使用してください"
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr "クリックして閉じる"
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr "保存されていない変更があります!"
@@ -737,68 +725,63 @@ msgstr "%(currency)s %(amount)s が払い戻されます"
msgid "Please enter the amount the organizer can keep."
msgstr "イベント開催者が受け取る料金を入力してください。"
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr "商品の総数を入力してください。"
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
msgid "required"
msgstr "必須"
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr "タイムゾーン:"
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr "現地時間:"
#: pretix/static/pretixpresale/js/walletdetection.js:39
msgid "Google Pay"
msgstr ""
msgstr "Google Pay"
#: pretix/static/pretixpresale/js/widget/widget.js:16
msgctxt "widget"
msgid "Quantity"
msgstr ""
msgstr "数量"
#: pretix/static/pretixpresale/js/widget/widget.js:17
msgctxt "widget"
msgid "Decrease quantity"
msgstr ""
msgstr "数量を減らす"
#: pretix/static/pretixpresale/js/widget/widget.js:18
msgctxt "widget"
msgid "Increase quantity"
msgstr ""
msgstr "数量を増やす"
#: pretix/static/pretixpresale/js/widget/widget.js:19
msgctxt "widget"
msgid "Price"
msgstr ""
msgstr "価格"
#: pretix/static/pretixpresale/js/widget/widget.js:20
#, fuzzy
#| msgid "Selected only"
msgctxt "widget"
msgid "Select"
msgstr "選択したもののみ"
msgstr "選択"
#: pretix/static/pretixpresale/js/widget/widget.js:21
#, fuzzy, javascript-format
#| msgid "Selected only"
#, javascript-format
msgctxt "widget"
msgid "Select %s"
msgstr "選択したもののみ"
msgstr "%sを選択"
#: pretix/static/pretixpresale/js/widget/widget.js:22
#, fuzzy, javascript-format
#| msgctxt "widget"
#| msgid "See variations"
#, javascript-format
msgctxt "widget"
msgid "Select variant %s"
msgstr "バリエーションを確認する"
msgstr "バリアント %sを選択"
#: pretix/static/pretixpresale/js/widget/widget.js:23
msgctxt "widget"
@@ -862,25 +845,19 @@ msgid "Only available with a voucher"
msgstr "クーポンをお持ちの方のみ"
#: pretix/static/pretixpresale/js/widget/widget.js:35
#, fuzzy
#| msgctxt "widget"
#| msgid "currently available: %s"
msgctxt "widget"
msgid "Not yet available"
msgstr "現在%s使用可能"
msgstr "提供開始前"
#: pretix/static/pretixpresale/js/widget/widget.js:36
msgctxt "widget"
msgid "Not available anymore"
msgstr ""
msgstr "今後の提供不可"
#: pretix/static/pretixpresale/js/widget/widget.js:37
#, fuzzy
#| msgctxt "widget"
#| msgid "currently available: %s"
msgctxt "widget"
msgid "Currently not available"
msgstr "現在%s使用可能"
msgstr "現時点で提供不可"
#: pretix/static/pretixpresale/js/widget/widget.js:38
#, javascript-format
@@ -915,7 +892,7 @@ msgstr "チケットショップを開く"
#: pretix/static/pretixpresale/js/widget/widget.js:44
msgctxt "widget"
msgid "The cart could not be created. Please try again later"
msgstr "カート作成に失敗しました。再試行してください"
msgstr "カート作成できません。後ほど再度お試しください"
#: pretix/static/pretixpresale/js/widget/widget.js:45
msgctxt "widget"
@@ -929,7 +906,7 @@ msgstr ""
#: pretix/static/pretixpresale/js/widget/widget.js:47
msgctxt "widget"
msgid "Waiting list"
msgstr "待機リスト"
msgstr "空席待ちリスト"
#: pretix/static/pretixpresale/js/widget/widget.js:48
msgctxt "widget"
@@ -971,20 +948,14 @@ msgid "Continue"
msgstr "続ける"
#: pretix/static/pretixpresale/js/widget/widget.js:56
#, fuzzy
#| msgctxt "widget"
#| msgid "See variations"
msgctxt "widget"
msgid "Show variants"
msgstr "バリエーションを確認する"
msgstr "バリエーションを表示"
#: pretix/static/pretixpresale/js/widget/widget.js:57
#, fuzzy
#| msgctxt "widget"
#| msgid "See variations"
msgctxt "widget"
msgid "Hide variants"
msgstr "バリエーションを確認する"
msgstr "バリエーションを隠す"
#: pretix/static/pretixpresale/js/widget/widget.js:58
msgctxt "widget"
@@ -1033,6 +1004,9 @@ msgid ""
"add yourself to the waiting list. We will then notify if seats are available "
"again."
msgstr ""
"現在、一部またはすべてのカテゴリでチケットが売り切れています。ご希望に応じて"
"、ご自身で空席待ちリストに追加することができます。その後、空席が出来次第お知"
"らせします。"
#: pretix/static/pretixpresale/js/widget/widget.js:67
msgctxt "widget"
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+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"
@@ -622,40 +622,40 @@ msgid ""
"darker shade."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr ""
@@ -705,20 +705,20 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
msgid "required"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr ""
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+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"
@@ -624,40 +624,40 @@ msgid ""
"darker shade."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr ""
@@ -707,20 +707,20 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
msgid "required"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr ""
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2022-04-06 03:00+0000\n"
"Last-Translator: Liga V <lerning_by_dreaming@gmx.de>\n"
"Language-Team: Latvian <https://translate.pretix.eu/projects/pretix/pretix-"
@@ -661,40 +661,40 @@ msgstr ""
"Izvēlētā krāsa tekstam neizceļas uz esošā fona, lūdzu, izvēlieties tumšāku "
"krāsu."
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr "Meklēšanas pieprasījums"
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr "Visi"
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr "Neviens"
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr "Tikai atzīmētos"
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr "Izmantojiet citu nosaukumu iekšēji"
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr "Noklikšķiniet, lai aizvērtu"
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr "Jums ir nesaglabātas izmaiņas!"
@@ -748,20 +748,20 @@ msgstr "Jūs saņemsiet %(valūta)s %(cena)s atpakaļ"
msgid "Please enter the amount the organizer can keep."
msgstr "Lūdzu ievadiet skaitu (summu), ko pasākuma organizators var paturēt."
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr "Lūdzu, ievadiet nepieciešamo daudzumu izvēlētajam biļešu veidam."
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
msgid "required"
msgstr "obligāts"
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr "Laika zona:"
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr "Vietējais laiks:"
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+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"
@@ -622,40 +622,40 @@ msgid ""
"darker shade."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr ""
@@ -705,20 +705,20 @@ msgstr ""
msgid "Please enter the amount the organizer can keep."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
msgid "required"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr ""
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr ""
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-08 13:45+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2024-03-10 03:00+0000\n"
"Last-Translator: fyksen <fredrik@fyksen.me>\n"
"Language-Team: Norwegian Bokmål <https://translate.pretix.eu/projects/pretix/"
@@ -641,40 +641,40 @@ msgid ""
"darker shade."
msgstr "Fargen du valgte har dårlig kontrast mot hvit, velg en mørkere farge."
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr "Søkeord"
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr "Alle"
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr "Ingen"
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr "Kun valgte"
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr "Bruk et annet navn internt"
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr "Klikk for å lukke"
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr "Du har ikke-lagrede endringer!"
@@ -726,20 +726,20 @@ msgstr "Du mottar %(currency)s %(amount)s tilbake"
msgid "Please enter the amount the organizer can keep."
msgstr "Vennligst skriv inn beløpet arrangøren kan beholde."
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr "Vennligst skriv inn et antall for en av billetttypene."
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
msgid "required"
msgstr "nødvendig"
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr "Tidssone:"
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr "Din lokale tid:"
File diff suppressed because it is too large Load Diff
+16 -16
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-18 15:16+0000\n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2024-10-23 14:30+0000\n"
"Last-Translator: arjan-s <github@anymore.nl>\n"
"Language-Team: Dutch <https://translate.pretix.eu/projects/pretix/pretix-js/"
@@ -643,40 +643,40 @@ msgstr ""
"Uw kleur heeft een slecht contrast voor tekst op een witte achtergrond, kies "
"een donkerdere kleur."
#: pretix/static/pretixcontrol/js/ui/main.js:496
#: pretix/static/pretixcontrol/js/ui/main.js:516
#: pretix/static/pretixcontrol/js/ui/main.js:442
#: pretix/static/pretixcontrol/js/ui/main.js:462
msgid "Search query"
msgstr "Zoekopdracht"
#: pretix/static/pretixcontrol/js/ui/main.js:514
#: pretix/static/pretixcontrol/js/ui/main.js:460
msgid "All"
msgstr "Alle"
#: pretix/static/pretixcontrol/js/ui/main.js:515
#: pretix/static/pretixcontrol/js/ui/main.js:461
msgid "None"
msgstr "Geen"
#: pretix/static/pretixcontrol/js/ui/main.js:519
#: pretix/static/pretixcontrol/js/ui/main.js:465
msgid "Selected only"
msgstr "Alleen geselecteerde"
#: pretix/static/pretixcontrol/js/ui/main.js:862
#: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:865
#: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number."
msgstr ""
#: pretix/static/pretixcontrol/js/ui/main.js:1023
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
msgstr "Gebruik intern een andere naam"
#: pretix/static/pretixcontrol/js/ui/main.js:1063
#: pretix/static/pretixcontrol/js/ui/main.js:1009
msgid "Click to close"
msgstr "Klik om te sluiten"
#: pretix/static/pretixcontrol/js/ui/main.js:1138
#: pretix/static/pretixcontrol/js/ui/main.js:1084
msgid "You have unsaved changes!"
msgstr "U heeft nog niet opgeslagen wijzigingen!"
@@ -729,20 +729,20 @@ msgstr "U krijgt %(currency)s %(amount)s terug"
msgid "Please enter the amount the organizer can keep."
msgstr "Voer het bedrag in dat de organisator mag houden."
#: pretix/static/pretixpresale/js/ui/main.js:449
#: pretix/static/pretixpresale/js/ui/main.js:454
msgid "Please enter a quantity for one of the ticket types."
msgstr "Voer een hoeveelheid voor een van de producten in."
#: pretix/static/pretixpresale/js/ui/main.js:485
#: pretix/static/pretixpresale/js/ui/main.js:506
msgid "required"
msgstr "verplicht"
#: pretix/static/pretixpresale/js/ui/main.js:588
#: pretix/static/pretixpresale/js/ui/main.js:607
#: pretix/static/pretixpresale/js/ui/main.js:550
#: pretix/static/pretixpresale/js/ui/main.js:569
msgid "Time zone:"
msgstr "Tijdzone:"
#: pretix/static/pretixpresale/js/ui/main.js:598
#: pretix/static/pretixpresale/js/ui/main.js:560
msgid "Your local time:"
msgstr "Uw lokale tijd:"

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