Compare commits

...

75 Commits

Author SHA1 Message Date
Raphael Michel
e2fe2500ba Code style 2025-01-15 17:20:40 +01:00
Mira Weller
13aee2b3bb fix RelativeDateTimeField.set_event: apply relative_to filter not only to minutes, but to days as well 2025-01-14 13:49:08 +01:00
Mira Weller
ba9d0823c7 use namedtuples for the parts of RelDate[Time]{Field,Widget} 2025-01-14 13:49:08 +01:00
Mira Weller
87768a2b74 fix bug in RelativeDateTimeField.clean
validate days relation_to instead of minutes relation_to when "Relative date" is selected
2025-01-14 13:49:08 +01:00
Raphael Michel
ff6b4ae7bf Translations: Allow to change field order for relative date form field (#4738) 2025-01-14 13:48:37 +01:00
Raphael Michel
6b5fd07535 Questions: Increase field size for min/max number (#4741) 2025-01-14 11:18:28 +01:00
Nikolai
7a423ebead Translations: Update Danish
Currently translated at 47.9% (2799 of 5836 strings)

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

powered by weblate
2025-01-14 10:57:01 +01:00
Raphael Michel
62c028d9ac Fix order availability with blocked seeat (Z#23178286) (#4734) 2025-01-13 12:49:49 +01:00
Hijiri
57f5eeff82 Update name scheme examples, adapt addressing system for Japan 2025-01-13 10:51:24 +01:00
Hijiri Umemoto
d92e82a133 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-13 10:47:57 +01:00
Hijiri Umemoto
5704142fe1 Translations: Update Korean
Currently translated at 0.4% (26 of 5836 strings)

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

powered by weblate
2025-01-13 10:47:57 +01:00
Hijiri Umemoto
8c5768912c 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-13 10:47:57 +01:00
Hijiri Umemoto
934567c811 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-13 10:47:57 +01:00
David Vaz
b16f54fad9 Translations: Update Portuguese (Portugal)
Currently translated at 85.5% (4991 of 5836 strings)

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

powered by weblate
2025-01-13 10:47:57 +01:00
Martin Gross
5dcd1f229b 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
2025-01-10 19:21:20 +01:00
Martin Gross
40e4f8a05a 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
2025-01-10 19:21:20 +01:00
Hijiri Umemoto
8d9295a628 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-10 19:21:20 +01:00
Bernd Mohring
063e1e16a3 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
2025-01-10 19:21:20 +01:00
Hijiri Umemoto
b5733a433d 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-10 19:21:20 +01:00
Bernd Mohring
454354f148 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
2025-01-10 19:21:20 +01:00
Hijiri Umemoto
8480f45997 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-10 19:21:20 +01:00
Hijiri Umemoto
b909b0b4bd 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-10 19:21:20 +01:00
Hijiri Umemoto
c4b45b7d95 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-10 19:21:20 +01:00
Raphael Michel
3ce6030122 PDF n-up generation: Fix ordering of badges 2025-01-07 19:32:51 +01:00
Martin Gross
28e26284a6 API: Return order-information on availability-endpoint, even if quota is unlimited 2025-01-07 17:25:39 +01:00
Raphael Michel
aaf1b7776e Set up flag for japanese fields 2025-01-07 16:09:28 +01:00
Raphael Michel
d545b15d0d Fix incorrect language code for Japanese 2025-01-07 15:12:26 +01:00
Raphael Michel
0a334d1c67 Explicitly set none algorithm 2025-01-07 12:01:52 +01:00
dependabot[bot]
1a2fb688de Update pyjwt requirement from ==2.9.* to ==2.10.*
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.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-07 12:01:52 +01:00
Raphael Michel
c1333d6edb Add Japanese to supported languages 2025-01-07 11:37:42 +01:00
Hijiri Umemoto
e3e432a9e4 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-07 11:19:37 +01:00
Hijiri Umemoto
36ea18970b 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-07 11:19:37 +01:00
Hector
bde2d50828 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-07 11:19:37 +01:00
Hijiri Umemoto
e8334df908 Translations: Update Chinese (Traditional Han script)
Currently translated at 91.6% (5351 of 5836 strings)

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

powered by weblate
2025-01-07 11:19:37 +01:00
Hector
c8943785d7 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-07 11:19:37 +01:00
Hijiri Umemoto
41b878b667 Translations: Update Turkish
Currently translated at 43.1% (2516 of 5836 strings)

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

powered by weblate
2025-01-07 11:19:37 +01:00
Hijiri Umemoto
4f63ba967b Translations: Update Chinese (Traditional Han script)
Currently translated at 91.3% (5331 of 5836 strings)

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

powered by weblate
2025-01-07 11:19:37 +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
42 changed files with 8917 additions and 6568 deletions

View File

@@ -855,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**:
@@ -886,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**:

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",
@@ -72,9 +72,9 @@ dependencies = [
"packaging",
"paypalrestsdk==1.13.*",
"paypal-checkout-serversdk==1.0.*",
"PyJWT==2.9.*",
"PyJWT==2.10.*",
"phonenumberslite==8.13.*",
"Pillow==11.0.*",
"Pillow==11.1.*",
"pretix-plugin-build",
"protobuf==5.29.*",
"psycopg2-binary",

View File

@@ -94,6 +94,7 @@ ALL_LANGUAGES = [
('el', _('Greek')),
('id', _('Indonesian')),
('it', _('Italian')),
('ja', _('Japanese')),
('lv', _('Latvian')),
('nb-no', _('Norwegian Bokmål')),
('pl', _('Polish')),

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:

View File

@@ -437,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})
@@ -450,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:

View File

@@ -619,7 +619,7 @@ class QuotaViewSet(ConditionalListView, viewsets.ModelViewSet):
def availability(self, request, *args, **kwargs):
quota = self.get_object()
qa = QuotaAvailability()
qa = QuotaAvailability(full_results=True)
qa.queue(quota)
qa.compute()
avail = qa.results[quota]

View File

@@ -647,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
)

View File

@@ -0,0 +1,23 @@
# Generated by Django 4.2.17 on 2025-01-13 14:55
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("pretixbase", "0274_tax_codes"),
]
operations = [
migrations.AlterField(
model_name="question",
name="valid_number_max",
field=models.DecimalField(decimal_places=6, max_digits=30, null=True),
),
migrations.AlterField(
model_name="question",
name="valid_number_min",
field=models.DecimalField(decimal_places=6, max_digits=30, null=True),
),
]

View File

@@ -1718,10 +1718,10 @@ class Question(LoggedModel):
'Question', null=True, blank=True, on_delete=models.SET_NULL, related_name='dependent_questions'
)
dependency_values = MultiStringField(default=[])
valid_number_min = models.DecimalField(decimal_places=6, max_digits=16, null=True, blank=True,
valid_number_min = models.DecimalField(decimal_places=6, max_digits=30, null=True, blank=True,
verbose_name=_('Minimum value'),
help_text=_('Currently not supported in our apps and during check-in'))
valid_number_max = models.DecimalField(decimal_places=6, max_digits=16, null=True, blank=True,
valid_number_max = models.DecimalField(decimal_places=6, max_digits=30, null=True, blank=True,
verbose_name=_('Maximum value'),
help_text=_('Currently not supported in our apps and during check-in'))
valid_date_min = models.DateField(null=True, blank=True,

View File

@@ -1087,7 +1087,7 @@ class Order(LockModel, LoggedModel):
for i, op in enumerate(positions):
if op.seat:
if not op.seat.is_available(ignore_orderpos=op):
if not op.seat.is_available(ignore_orderpos=op, sales_channel=self.sales_channel.identifier):
raise Quota.QuotaExceededException(error_messages['seat_unavailable'].format(seat=op.seat))
if force:
continue

View File

@@ -185,43 +185,104 @@ BEFORE_AFTER_CHOICE = (
)
reldatetimeparts = namedtuple('reldatetimeparts', (
"status", # 0
"absolute", # 1
"rel_days_number", # 2
"rel_mins_relationto", # 3
"rel_days_timeofday", # 4
"rel_mins_number", # 5
"rel_days_relationto", # 6
"rel_mins_relation", # 7
"rel_days_relation" # 8
))
reldatetimeparts.indizes = reldatetimeparts(*range(9))
class RelativeDateTimeWidget(forms.MultiWidget):
template_name = 'pretixbase/forms/widgets/reldatetime.html'
parts = reldatetimeparts
def __init__(self, *args, **kwargs):
self.status_choices = kwargs.pop('status_choices')
base_choices = kwargs.pop('base_choices')
widgets = (
forms.RadioSelect(choices=self.status_choices),
forms.DateTimeInput(
widgets = reldatetimeparts(
status=forms.RadioSelect(choices=self.status_choices),
absolute=forms.DateTimeInput(
attrs={'class': 'datetimepicker'}
),
forms.NumberInput(),
forms.Select(choices=base_choices),
forms.TimeInput(attrs={'placeholder': _('Time'), 'class': 'timepickerfield'}),
forms.NumberInput(),
forms.Select(choices=base_choices),
forms.Select(choices=BEFORE_AFTER_CHOICE),
forms.Select(choices=BEFORE_AFTER_CHOICE),
rel_days_number=forms.NumberInput(),
rel_mins_relationto=forms.Select(choices=base_choices),
rel_days_timeofday=forms.TimeInput(attrs={'placeholder': _('Time'), 'class': 'timepickerfield'}),
rel_mins_number=forms.NumberInput(),
rel_days_relationto=forms.Select(choices=base_choices),
rel_mins_relation=forms.Select(choices=BEFORE_AFTER_CHOICE),
rel_days_relation=forms.Select(choices=BEFORE_AFTER_CHOICE),
)
super().__init__(widgets=widgets, *args, **kwargs)
def decompress(self, value):
if isinstance(value, str):
value = RelativeDateWrapper.from_string(value)
if isinstance(value, reldatetimeparts):
return value
if not value:
return ['unset', None, 1, 'date_from', None, 0, "date_from", "before", "before"]
return reldatetimeparts(
status="unset",
absolute=None,
rel_days_number=1,
rel_mins_relationto="date_from",
rel_days_timeofday=None,
rel_mins_number=0,
rel_days_relationto="date_from",
rel_mins_relation="before",
rel_days_relation="before"
)
elif isinstance(value.data, (datetime.datetime, datetime.date)):
return ['absolute', value.data, 1, 'date_from', None, 0, "date_from", "before", "before"]
return reldatetimeparts(
status="absolute",
absolute=value.data,
rel_days_number=1,
rel_mins_relationto="date_from",
rel_days_timeofday=None,
rel_mins_number=0,
rel_days_relationto="date_from",
rel_mins_relation="before",
rel_days_relation="before"
)
elif value.data.minutes is not None:
return ['relative_minutes', None, None, value.data.base_date_name, None, value.data.minutes, value.data.base_date_name,
"after" if value.data.is_after else "before", "after" if value.data.is_after else "before"]
return ['relative', None, value.data.days, value.data.base_date_name, value.data.time, 0, value.data.base_date_name,
"after" if value.data.is_after else "before", "after" if value.data.is_after else "before"]
return reldatetimeparts(
status="relative_minutes",
absolute=None,
rel_days_number=None,
rel_mins_relationto=value.data.base_date_name,
rel_days_timeofday=None,
rel_mins_number=value.data.minutes,
rel_days_relationto=value.data.base_date_name,
rel_mins_relation="after" if value.data.is_after else "before",
rel_days_relation="after" if value.data.is_after else "before"
)
return reldatetimeparts(
status="relative",
absolute=None,
rel_days_number=value.data.days,
rel_mins_relationto=value.data.base_date_name,
rel_days_timeofday=value.data.time,
rel_mins_number=0,
rel_days_relationto=value.data.base_date_name,
rel_mins_relation="after" if value.data.is_after else "before",
rel_days_relation="after" if value.data.is_after else "before"
)
def get_context(self, name, value, attrs):
ctx = super().get_context(name, value, attrs)
ctx['required'] = self.status_choices[0][0] == 'unset'
ctx['rendered_subwidgets'] = self.parts(*(
self._render(w['template_name'], {**ctx, 'widget': w})
for w in ctx['widget']['subwidgets']
))._asdict()
return ctx
@@ -239,36 +300,36 @@ class RelativeDateTimeField(forms.MultiValueField):
choices = BASE_CHOICES
if not kwargs.get('required', True):
status_choices.insert(0, ('unset', _('Not set')))
fields = (
forms.ChoiceField(
fields = reldatetimeparts(
status=forms.ChoiceField(
choices=status_choices,
required=True
),
forms.DateTimeField(
absolute=forms.DateTimeField(
required=False
),
forms.IntegerField(
rel_days_number=forms.IntegerField(
required=False
),
forms.ChoiceField(
rel_mins_relationto=forms.ChoiceField(
choices=choices,
required=False
),
forms.TimeField(
rel_days_timeofday=forms.TimeField(
required=False,
),
forms.IntegerField(
rel_mins_number=forms.IntegerField(
required=False
),
forms.ChoiceField(
rel_days_relationto=forms.ChoiceField(
choices=choices,
required=False
),
forms.ChoiceField(
rel_mins_relation=forms.ChoiceField(
choices=BEFORE_AFTER_CHOICE,
required=False
),
forms.ChoiceField(
rel_days_relation=forms.ChoiceField(
choices=BEFORE_AFTER_CHOICE,
required=False
),
@@ -282,32 +343,36 @@ class RelativeDateTimeField(forms.MultiValueField):
)
def set_event(self, event):
self.widget.widgets[3].choices = [
self.widget.widgets[reldatetimeparts.indizes.rel_days_relationto].choices = [
(k, v) for k, v in BASE_CHOICES if getattr(event, k, None)
]
self.widget.widgets[reldatetimeparts.indizes.rel_mins_relationto].choices = [
(k, v) for k, v in BASE_CHOICES if getattr(event, k, None)
]
def compress(self, data_list):
if not data_list:
return None
if data_list[0] == 'absolute':
return RelativeDateWrapper(data_list[1])
elif data_list[0] == 'unset':
data = reldatetimeparts(*data_list)
if data.status == 'absolute':
return RelativeDateWrapper(data.absolute)
elif data.status == 'unset':
return None
elif data_list[0] == 'relative_minutes':
elif data.status == 'relative_minutes':
return RelativeDateWrapper(RelativeDate(
days=0,
base_date_name=data_list[3],
base_date_name=data.rel_mins_relationto,
time=None,
minutes=data_list[5],
is_after=data_list[7] == "after",
minutes=data.rel_mins_number,
is_after=data.rel_mins_relation == "after",
))
else:
return RelativeDateWrapper(RelativeDate(
days=data_list[2],
base_date_name=data_list[6],
time=data_list[4],
days=data.rel_days_number,
base_date_name=data.rel_days_relationto,
time=data.rel_days_timeofday,
minutes=None,
is_after=data_list[8] == "after",
is_after=data.rel_days_relation == "after",
))
def has_changed(self, initial, data):
@@ -316,29 +381,41 @@ class RelativeDateTimeField(forms.MultiValueField):
return super().has_changed(initial, data)
def clean(self, value):
if value[0] == 'absolute' and not value[1]:
data = reldatetimeparts(*value)
if data.status == 'absolute' and not data.absolute:
raise ValidationError(self.error_messages['incomplete'])
elif value[0] == 'relative' and (value[2] is None or not value[3]):
elif data.status == 'relative' and (data.rel_days_number is None or not data.rel_days_relationto):
raise ValidationError(self.error_messages['incomplete'])
elif value[0] == 'relative_minutes' and (value[5] is None or not value[3]):
elif data.status == 'relative_minutes' and (data.rel_mins_number is None or not data.rel_mins_relationto):
raise ValidationError(self.error_messages['incomplete'])
return super().clean(value)
reldateparts = namedtuple('reldateparts', (
"status", # 0
"absolute", # 1
"rel_days_number", # 2
"rel_days_relationto", # 3
"rel_days_relation", # 4
))
reldateparts.indizes = reldateparts(*range(5))
class RelativeDateWidget(RelativeDateTimeWidget):
template_name = 'pretixbase/forms/widgets/reldate.html'
parts = reldateparts
def __init__(self, *args, **kwargs):
self.status_choices = kwargs.pop('status_choices')
widgets = (
forms.RadioSelect(choices=self.status_choices),
forms.DateInput(
widgets = reldateparts(
status=forms.RadioSelect(choices=self.status_choices),
absolute=forms.DateInput(
attrs={'class': 'datepickerfield'}
),
forms.NumberInput(),
forms.Select(choices=kwargs.pop('base_choices')),
forms.Select(choices=BEFORE_AFTER_CHOICE),
rel_days_number=forms.NumberInput(),
rel_days_relationto=forms.Select(choices=kwargs.pop('base_choices')),
rel_days_relation=forms.Select(choices=BEFORE_AFTER_CHOICE),
)
forms.MultiWidget.__init__(self, widgets=widgets, *args, **kwargs)
@@ -346,10 +423,30 @@ class RelativeDateWidget(RelativeDateTimeWidget):
if isinstance(value, str):
value = RelativeDateWrapper.from_string(value)
if not value:
return ['unset', None, 1, 'date_from', 'before']
return reldateparts(
status="unset",
absolute=None,
rel_days_number=1,
rel_days_relationto="date_from",
rel_days_relation="before"
)
if isinstance(value, reldateparts):
return value
elif isinstance(value.data, (datetime.datetime, datetime.date)):
return ['absolute', value.data, 1, 'date_from', 'before']
return ['relative', None, value.data.days, value.data.base_date_name, "after" if value.data.is_after else "before"]
return reldateparts(
status="absolute",
absolute=value.data,
rel_days_number=1,
rel_days_relationto="date_from",
rel_days_relation="before"
)
return reldateparts(
status="relative",
absolute=None,
rel_days_number=value.data.days,
rel_days_relationto=value.data.base_date_name,
rel_days_relation="after" if value.data.is_after else "before"
)
class RelativeDateField(RelativeDateTimeField):
@@ -361,22 +458,22 @@ class RelativeDateField(RelativeDateTimeField):
]
if not kwargs.get('required', True):
status_choices.insert(0, ('unset', _('Not set')))
fields = (
forms.ChoiceField(
fields = reldateparts(
status=forms.ChoiceField(
choices=status_choices,
required=True
),
forms.DateField(
absolute=forms.DateField(
required=False
),
forms.IntegerField(
rel_days_number=forms.IntegerField(
required=False
),
forms.ChoiceField(
rel_days_relationto=forms.ChoiceField(
choices=BASE_CHOICES,
required=False
),
forms.ChoiceField(
rel_days_relation=forms.ChoiceField(
choices=BEFORE_AFTER_CHOICE,
required=False
),
@@ -387,28 +484,35 @@ class RelativeDateField(RelativeDateTimeField):
self, fields=fields, require_all_fields=False, *args, **kwargs
)
def set_event(self, event):
self.widget.widgets[reldateparts.indizes.rel_days_relationto].choices = [
(k, v) for k, v in BASE_CHOICES if getattr(event, k, None)
]
def compress(self, data_list):
if not data_list:
return None
if data_list[0] == 'absolute':
return RelativeDateWrapper(data_list[1])
elif data_list[0] == 'unset':
data = reldateparts(*data_list)
if data.status == 'absolute':
return RelativeDateWrapper(data.absolute)
elif data.status == 'unset':
return None
else:
return RelativeDateWrapper(RelativeDate(
days=data_list[2],
base_date_name=data_list[3],
days=data.rel_days_number,
base_date_name=data.rel_days_relationto,
time=None, minutes=None,
is_after=data_list[4] == "after"
is_after=data.rel_days_relation == "after"
))
def clean(self, value):
if value[0] == 'absolute' and not value[1]:
data = reldateparts(*value)
if data.status == 'absolute' and not data.absolute:
raise ValidationError(self.error_messages['incomplete'])
elif value[0] == 'relative' and (value[2] is None or not value[3]):
elif data.status == 'relative' and (data.rel_days_number is None or not data.rel_days_relationto):
raise ValidationError(self.error_messages['incomplete'])
return super().clean(value)
return forms.MultiValueField.clean(self, value)
class ModelRelativeDateTimeField(models.CharField):

View File

@@ -2425,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
)
@@ -2531,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,
)

View File

@@ -3557,8 +3557,8 @@ PERSON_NAME_SCHEMES = OrderedDict([
str(p) for p in [d.get('family_name', ''), d.get('given_name', '')] if p
),
'sample': {
'given_name': '泽东',
'family_name': '',
'family_name': '',
'given_name': '',
'_scheme': 'family_nospace_given',
},
}),
@@ -3609,8 +3609,8 @@ PERSON_NAME_SCHEMES = OrderedDict([
'concatenation': lambda d: str(d.get('full_name', '')),
'concatenation_all_components': lambda d: str(d.get('full_name', '')) + " (" + d.get('latin_transcription', '') + ")",
'sample': {
'full_name': '庄司',
'latin_transcription': 'Shōji',
'full_name': '山田花子',
'latin_transcription': 'Yamada Hanako',
'_scheme': 'full_transcription',
},
}),
@@ -3701,6 +3701,7 @@ COUNTRIES_WITH_STATE_IN_ADDRESS = {
'BR': (['State'], 'short'),
'CA': (['Province', 'Territory'], 'short'),
# 'CN': (['Province', 'Autonomous region', 'Munincipality'], 'long'),
'JP': (['Prefecture'], 'long'),
'MY': (['State', 'Federal territory'], 'long'),
'MX': (['State', 'Federal district'], 'short'),
'US': (['State', 'Outlying area', 'District'], 'short'),

View File

@@ -9,12 +9,11 @@
{{ selopt.label }}
</label>
{% if selopt.value == "absolute" %}
{% include widget.subwidgets.1.template_name with widget=widget.subwidgets.1 %}
{{ rendered_subwidgets.absolute }}
{% elif selopt.value == "relative" %}
{% include widget.subwidgets.2.template_name with widget=widget.subwidgets.2 %}
{% trans "days" %}
{% include widget.subwidgets.4.template_name with widget=widget.subwidgets.4 %}
{% include widget.subwidgets.3.template_name with widget=widget.subwidgets.3 %}
{% blocktrans trimmed with number=rendered_subwidgets.rel_days_number relation=rendered_subwidgets.rel_days_relation relation_to=rendered_subwidgets.rel_days_relationto %}
{{ number }} days {{ relation }} {{ relation_to }}
{% endblocktrans %}
{% endif %}
</div>
{% endfor %}

View File

@@ -9,19 +9,15 @@
{{ selopt.label }}
</label>
{% if selopt.value == "absolute" %}
{% include widget.subwidgets.1.template_name with widget=widget.subwidgets.1 %}
{{ rendered_subwidgets.absolute }}
{% elif selopt.value == "relative_minutes" %}
{% include widget.subwidgets.5.template_name with widget=widget.subwidgets.5 %}
{% trans "minutes" %}
{% include widget.subwidgets.7.template_name with widget=widget.subwidgets.7 %}
{% include widget.subwidgets.3.template_name with widget=widget.subwidgets.3 %}
{% blocktrans trimmed with number=rendered_subwidgets.rel_mins_number relation=rendered_subwidgets.rel_mins_relation relation_to=rendered_subwidgets.rel_mins_relationto %}
{{ number }} minutes {{ relation }} {{ relation_to }}
{% endblocktrans %}
{% elif selopt.value == "relative" %}
{% include widget.subwidgets.2.template_name with widget=widget.subwidgets.2 %}
{% trans "days" %}
{% include widget.subwidgets.8.template_name with widget=widget.subwidgets.8 %}
{% include widget.subwidgets.6.template_name with widget=widget.subwidgets.6 %}
{% trans "at" %}
{% include widget.subwidgets.4.template_name with widget=widget.subwidgets.4 %}
{% blocktrans trimmed with number=rendered_subwidgets.rel_days_number relation=rendered_subwidgets.rel_days_relation relation_to=rendered_subwidgets.rel_days_relationto time_of_day=rendered_subwidgets.rel_days_timeofday %}
{{ number }} days {{ relation }} {{ relation_to }} at {{ time_of_day }}
{% endblocktrans %}
{% endif %}
</div>
{% endfor %}

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,

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
)

View File

@@ -4,8 +4,8 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2024-11-04 13:44+0000\n"
"Last-Translator: Katrine Tella <ktl@hjoerring.dk>\n"
"PO-Revision-Date: 2025-01-14 09:56+0000\n"
"Last-Translator: Nikolai <nikolai@lengefeldt.de>\n"
"Language-Team: Danish <https://translate.pretix.eu/projects/pretix/pretix/da/"
">\n"
"Language: da\n"
@@ -13,7 +13,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.1\n"
"X-Generator: Weblate 5.9.2\n"
#: pretix/_base_settings.py:79
msgid "English"
@@ -20841,7 +20841,7 @@ msgstr "Nej, gå tilbage"
#: pretix/control/templates/pretixcontrol/order/approve.html:25
msgid "Yes, approve order"
msgstr "Ja, annullér bestilling"
msgstr "Ja, godkend bestilling"
#: pretix/control/templates/pretixcontrol/order/cancel.html:6
#: pretix/control/templates/pretixcontrol/order/cancel.html:10

View File

@@ -5,8 +5,8 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2024-12-16 16:15+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"PO-Revision-Date: 2025-01-10 10:00+0000\n"
"Last-Translator: Martin Gross <gross@rami.io>\n"
"Language-Team: German <https://translate.pretix.eu/projects/pretix/pretix/de/"
">\n"
"Language: de\n"
@@ -14,7 +14,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.4\n"
"X-Generator: Weblate 5.9.2\n"
"X-Poedit-Bookmarks: -1,-1,904,-1,-1,-1,-1,-1,-1,-1\n"
#: pretix/_base_settings.py:79
@@ -19542,7 +19542,7 @@ msgid ""
msgstr ""
"Wenn Sie komplexere Funktionen wie zusätzliche Produkte, Produktvarianten "
"oder freie Kontingentstrukturen nutzen wollen, können Sie dies später über "
"den Konfigurationsbereich \"Produkte\" in der linken Navigationsleiste tun. "
"den Konfigurationsbereich Produkte in der linken Navigationsleiste tun. "
"Keine Sorge, alles was Sie hier eingeben, können Sie später noch ändern."
#: pretix/control/templates/pretixcontrol/event/quick_setup.html:132
@@ -32366,7 +32366,7 @@ msgstr "Wir versuchen nun, diese Zusatzprodukte für Sie zu buchen!"
#: pretix/presale/templates/pretixpresale/event/checkout_addons.html:28
msgid "Additional options for"
msgstr "Zusätzliche Einstellungen für"
msgstr "Zusätzliche Optionen für"
#: pretix/presale/templates/pretixpresale/event/checkout_addons.html:64
msgid "More recommendations"

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: 1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2024-12-16 16:28+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"PO-Revision-Date: 2025-01-10 10:00+0000\n"
"Last-Translator: Martin Gross <gross@rami.io>\n"
"Language-Team: German (informal) <https://translate.pretix.eu/projects/"
"pretix/pretix/de_Informal/>\n"
"Language: de_Informal\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.8.4\n"
"X-Generator: Weblate 5.9.2\n"
#: pretix/_base_settings.py:79
msgid "English"
@@ -19511,7 +19511,7 @@ msgstr ""
"Wenn du komplexere Funktionen wie zusätzliche Produkte, Produktvarianten "
"oder freie Kontingentstrukturen nutzen willst, kannst du dies später über "
"den Konfigurationsbereich \"Produkte\" in der linken Navigationsleiste tun. "
"Keine Sorge, alles was du hier gibst, kannst du später noch ändern."
"Keine Sorge, alles was du hier eingibst, kannst du später noch ändern."
#: pretix/control/templates/pretixcontrol/event/quick_setup.html:132
#: pretix/control/views/event.py:357
@@ -19524,7 +19524,7 @@ msgid ""
"your event, but if you're in a hurry and want to get started quickly, here's "
"a short version:"
msgstr ""
"Wir empfehlen, dass du dich die Zeit nimmst und die Einstellungen deiner "
"Wir empfehlen, dass du dir die Zeit nimmst und die Einstellungen deiner "
"Veranstaltungen in Ruhe durchgehst. Wenn du aber schnell loslegen willst, "
"ist hier die Kurzversion:"
@@ -32309,7 +32309,7 @@ msgstr "Wir versuchen nun, diese Zusatzprodukte für dich zu buchen!"
#: pretix/presale/templates/pretixpresale/event/checkout_addons.html:28
msgid "Additional options for"
msgstr "Zusätzliche Einstellungen für"
msgstr "Zusätzliche Optionen für"
#: pretix/presale/templates/pretixpresale/event/checkout_addons.html:64
msgid "More recommendations"

View File

@@ -8,16 +8,16 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2024-05-31 15:52+0000\n"
"Last-Translator: danijossnet <danijoss@yahoo.com>\n"
"Language-Team: Greek <https://translate.pretix.eu/projects/pretix/pretix/el/"
">\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/el/>"
"\n"
"Language: el\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.5.5\n"
"X-Generator: Weblate 5.9.2\n"
#: pretix/_base_settings.py:79
msgid "English"
@@ -36881,8 +36881,8 @@ msgid ""
"If you're looking to configure this installation, please <a %(a_attr)s>head "
"over here</a>."
msgstr ""
"Αν θέλετε να διαμορφώσετε αυτήν την εγκατάσταση, παρακαλούμε να "
"%(a_attr)ατευθυνθείτε εδώ</a>."
"Αν θέλετε να διαμορφώσετε αυτήν την εγκατάσταση, παρακαλούμε να <a %(a_attr)"
"s>κατευθυνθείτε εδώ</a>."
#: pretix/presale/templates/pretixpresale/index.html:24
msgid "Enjoy!"

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2019-10-03 19:00+0000\n"
"Last-Translator: Chris Spy <chrispiropoulou@hotmail.com>\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"

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2024-12-17 18:00+0000\n"
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n"
"PO-Revision-Date: 2025-01-04 19:00+0000\n"
"Last-Translator: Hector <hector@demandaeventos.es>\n"
"Language-Team: Spanish <https://translate.pretix.eu/projects/pretix/pretix/"
"es/>\n"
"Language: es\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.8.4\n"
"X-Generator: Weblate 5.9.2\n"
#: pretix/_base_settings.py:79
msgid "English"
@@ -121,11 +121,11 @@ msgstr "Ruso"
#: pretix/_base_settings.py:104
msgid "Slovak"
msgstr "eslovaco"
msgstr "Eslovaco"
#: pretix/_base_settings.py:105
msgid "Swedish"
msgstr "sueco"
msgstr "Sueco"
#: pretix/_base_settings.py:106
msgid "Spanish"
@@ -162,37 +162,38 @@ msgstr "pretixSCAN (solo en línea, sin sincronización de pedidos)"
#: pretix/api/models.py:39 pretix/base/models/customers.py:402
msgid "Application name"
msgstr "Nombre de Aplicación"
msgstr "Nombre de aplicación"
#: pretix/api/models.py:42 pretix/base/models/customers.py:421
msgid "Redirection URIs"
msgstr "URI de Redirección"
msgstr "URI de redirección"
#: pretix/api/models.py:43 pretix/base/models/customers.py:422
msgid "Allowed URIs list, space separated"
msgstr "Lista de URI permitida, separada por espacio"
msgstr "Lista de URIs permitidas, separadas por espacio"
#: pretix/api/models.py:47
msgid "Allowed Post Logout URIs list, space separated"
msgstr "Lista de URI permitidas, separadas por espacios"
msgstr ""
"Lista de URIs después del cierre de sesión permitidas, separadas por espacios"
#: pretix/api/models.py:51 pretix/base/models/customers.py:406
#: pretix/plugins/paypal/payment.py:113 pretix/plugins/paypal2/payment.py:110
msgid "Client ID"
msgstr "ID Cliente"
msgstr "ID de cliente"
#: pretix/api/models.py:55
msgid "Client secret"
msgstr "Clave Secreta"
msgstr "Secreto de cliente"
#: pretix/api/models.py:116
msgid "Enable webhook"
msgstr "Habilitar webhook"
msgstr "Habilitar webhooks"
#: pretix/api/models.py:117
#: pretix/control/templates/pretixcontrol/organizers/webhooks.html:36
msgid "Target URL"
msgstr "URL destino"
msgstr "URL de destino"
#: pretix/api/models.py:118 pretix/base/models/devices.py:122
#: pretix/base/models/organizer.py:286
@@ -220,7 +221,7 @@ msgstr "Comentario"
#: pretix/api/serializers/cart.py:168 pretix/api/serializers/order.py:1384
msgid "The product \"{}\" is not assigned to a quota."
msgstr "El producto \"{}\" no tiene asignada una cuota."
msgstr "El producto \"{}\" no está asignado a una cuota."
#: pretix/api/serializers/checkin.py:65 pretix/base/models/event.py:1667
#: pretix/base/models/items.py:1905 pretix/base/models/items.py:2163
@@ -265,11 +266,11 @@ msgstr "Plugin restringido: '{name}'."
#: pretix/api/serializers/item.py:359
#, python-brace-format
msgid "Item meta data property '{name}' does not exist."
msgstr "Los metadatos de propiedad '{name}' no existe."
msgstr "La propiedad '{name}' de metadatos del elemento no existe."
#: pretix/api/serializers/item.py:207 pretix/control/forms/item.py:1269
msgid "The bundled item must not be the same item as the bundling one."
msgstr "El artículo en el paquete no debe ser el paquete."
msgstr "El artículo agrupado no debe ser el mismo que el del paquete."
#: pretix/api/serializers/item.py:210 pretix/control/forms/item.py:1271
msgid "The bundled item must not have bundles on its own."
@@ -280,8 +281,8 @@ msgid ""
"Updating add-ons, bundles, or variations via PATCH/PUT is not supported. "
"Please use the dedicated nested endpoint."
msgstr ""
"Actualizando los add-ons, paquetes o variaciones por medio de PATCH/PUT no "
"es soportado. Use un punto dedicado para esta finalidad."
"Actualizar los add-ons, paquetes o variaciones por medio de PATCH/PUT no "
"es soportado. Por favor, use el endpoint dedicado para esta finalidad."
#: pretix/api/serializers/item.py:306
msgid "Only admission products can currently be personalized."
@@ -304,12 +305,13 @@ msgid ""
"Updating options via PATCH/PUT is not supported. Please use the dedicated "
"nested endpoint."
msgstr ""
"Actualizando las opciones por medio de PATCH/PUT no es soportado. Use un "
"punto dedicado para esta finalidad."
"Actualizando las opciones por medio de PATCH/PUT no es soportado. Por "
"favor, use el endpoint dedicado para esta finalidad."
#: pretix/api/serializers/item.py:533 pretix/control/forms/item.py:177
msgid "Question cannot depend on a question asked during check-in."
msgstr "La pregunta no debe depender de otra realizada durante el check-in."
msgstr ""
"La pregunta no puede depender de otra pregunta realizada durante el check-in."
#: pretix/api/serializers/item.py:538 pretix/control/forms/item.py:182
msgid "Circular dependency between questions detected."
@@ -317,7 +319,7 @@ msgstr "Se ha detectado una dependencia circular entre las preguntas."
#: pretix/api/serializers/item.py:543 pretix/control/forms/item.py:191
msgid "This type of question cannot be asked during check-in."
msgstr "Este tipo de pregunta no se puede hacer durante el check-in."
msgstr "Este tipo de pregunta no se puede preguntar durante el check-in."
#: pretix/api/serializers/item.py:546 pretix/control/forms/item.py:199
msgid "This type of question cannot be shown during check-in."
@@ -328,19 +330,19 @@ msgid ""
"A medium with the same identifier and type already exists in your organizer "
"account."
msgstr ""
"Ya existe un medio con el mismo identificador en tu cuenta de organizador o "
"en otra afiliada."
"Un medio con el mismo identificador y tipo ya existe en tu cuenta de "
"organizador."
#: pretix/api/serializers/order.py:78
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr "\"{input}\" no es una entrada valida."
msgstr "\"{input}\" no es una opción valida."
#: pretix/api/serializers/order.py:1345 pretix/api/views/cart.py:224
#: pretix/base/services/orders.py:1530
#, python-brace-format
msgid "The selected seat \"{seat}\" is not available."
msgstr "La butaca seleccionada {seat} no está disponible."
msgstr "El asiento seleccionado {seat} no está disponible."
#: pretix/api/serializers/order.py:1371 pretix/api/serializers/order.py:1378
msgid "The product \"{}\" is not available on this date."
@@ -351,12 +353,12 @@ msgid ""
"There is not enough quota available on quota \"{}\" to perform the operation."
msgstr ""
"No hay suficiente cuota disponible en la cuota \"{}\" para realizar esta "
"operacion."
"operación."
#: pretix/api/serializers/organizer.py:103
#: pretix/control/forms/organizer.py:888 pretix/presale/forms/customer.py:445
msgid "An account with this email address is already registered."
msgstr "Una cuenta con esta dirección de correo ya está registrada."
msgstr "Una cuenta con esta dirección de correo electrónico ya está registrada."
#: pretix/api/serializers/organizer.py:236
#: pretix/control/forms/organizer.py:737
@@ -364,13 +366,13 @@ msgid ""
"A gift card with the same secret already exists in your or an affiliated "
"organizer account."
msgstr ""
"Ya existe una tarjeta regalo con el mismo secreto en tu cuenta de "
"Una tarjeta regalo con el mismo secreto ya existe en tu cuenta de "
"organizador o en otra afiliada."
#: pretix/api/serializers/organizer.py:327
#: pretix/control/views/organizer.py:769
msgid "pretix account invitation"
msgstr "invitación a la cuenta pretix"
msgstr "Invitación a la cuenta pretix"
#: pretix/api/serializers/organizer.py:349
#: pretix/control/views/organizer.py:868
@@ -386,7 +388,7 @@ msgstr "Este usuario ya tiene permisos para este equipo."
msgid ""
"The specified voucher has already been used the maximum number of times."
msgstr ""
"El vale de compra empleado ya ha sido utilizado el número máximo de veces "
"El vale de compra utilizado ya ha sido utilizado el máximo número de veces "
"permitido."
#: pretix/api/views/checkin.py:610 pretix/api/views/checkin.py:617
@@ -405,7 +407,7 @@ msgstr ""
#: pretix/api/views/order.py:607 pretix/control/views/orders.py:1588
#: pretix/presale/views/order.py:742 pretix/presale/views/order.py:815
msgid "You cannot generate an invoice for this order."
msgstr "No se puede generar una factura para este pedido."
msgstr "No puedes generar una factura para este pedido."
#: pretix/api/views/order.py:612 pretix/control/views/orders.py:1590
#: pretix/presale/views/order.py:744 pretix/presale/views/order.py:817
@@ -426,7 +428,7 @@ msgstr ""
#: pretix/api/webhooks.py:237 pretix/base/notifications.py:233
msgid "New order placed"
msgstr "Se hizo nuevo pedido"
msgstr "Se hizo un nuevo pedido"
#: pretix/api/webhooks.py:241 pretix/base/notifications.py:239
msgid "New order requires approval"
@@ -453,7 +455,7 @@ msgstr "Pedido caducado"
#: pretix/api/webhooks.py:261
msgid "Order expiry date changed"
msgstr "Se ha modificado la fecha de caducidad del pedido"
msgstr "Fecha de caducidad del pedido modificada"
#: pretix/api/webhooks.py:265 pretix/base/notifications.py:269
msgid "Order information changed"
@@ -461,16 +463,16 @@ msgstr "Información de pedido modificada"
#: pretix/api/webhooks.py:269 pretix/base/notifications.py:275
msgid "Order contact address changed"
msgstr "Cambiar la dirección de contacto del pedido"
msgstr "Dirección de contacto del pedido modificada"
#: pretix/api/webhooks.py:273 pretix/base/notifications.py:281
#: pretix/control/templates/pretixcontrol/event/mail.html:102
msgid "Order changed"
msgstr "Perdido cambiado"
msgstr "Pedido cambiado"
#: pretix/api/webhooks.py:277
msgid "Refund of payment created"
msgstr "Devolución del pago creado"
msgstr "Orden de devolución de pago creada"
#: pretix/api/webhooks.py:281 pretix/base/notifications.py:293
msgid "External refund of payment"
@@ -494,23 +496,23 @@ msgstr "Devolución fallida del pago"
#: pretix/api/webhooks.py:301
msgid "Payment confirmed"
msgstr "Pago confimado"
msgstr "Pago confirmado"
#: pretix/api/webhooks.py:305
msgid "Order approved"
msgstr "Perdido aprobado"
msgstr "Pedido aprobado"
#: pretix/api/webhooks.py:309
msgid "Order denied"
msgstr "Perdido denegado"
msgstr "Pedido denegado"
#: pretix/api/webhooks.py:313
msgid "Order deleted"
msgstr "Perdido borrado"
msgstr "Pedido eliminado"
#: pretix/api/webhooks.py:317
msgid "Ticket checked in"
msgstr "Entrada comprobada"
msgstr "Entrada escaneada"
#: pretix/api/webhooks.py:321
msgid "Ticket check-in reverted"
@@ -531,7 +533,7 @@ msgstr "Evento eliminado"
#: pretix/api/webhooks.py:337
msgctxt "subevent"
msgid "Event series date added"
msgstr "Fecha de inicio de la serie de eventos creada"
msgstr "Fechas de la serie de eventos añadidas"
#: pretix/api/webhooks.py:341
msgctxt "subevent"
@@ -569,15 +571,15 @@ msgstr "Modo de pruebas de la tienda ha sido desactivado"
#: pretix/api/webhooks.py:370
msgid "Waiting list entry added"
msgstr "Agregado a la lista de espera"
msgstr "Elemento agregado a la lista de espera"
#: pretix/api/webhooks.py:374
msgid "Waiting list entry changed"
msgstr "Entrada a la lista de espera"
msgstr "Elemento de la lista de espera cambiado"
#: pretix/api/webhooks.py:378
msgid "Waiting list entry deleted"
msgstr "Entrada a la lista de espera eliminada"
msgstr "Elemento de la lista de espera eliminado"
#: pretix/api/webhooks.py:382
msgid "Waiting list entry received voucher"
@@ -610,11 +612,11 @@ msgstr "Este campo es obligatorio."
#: pretix/base/addressvalidation.py:213
msgid "Enter a postal code in the format XXX."
msgstr "Ingresa el código postal en el formato XXX."
msgstr "Ingresa el código postal en el formato XXXXX."
#: pretix/base/addressvalidation.py:222 pretix/base/addressvalidation.py:224
msgid "Enter a postal code in the format XXXX."
msgstr "Ingresa un código postal en el formato XXX."
msgstr "Ingresa un código postal en el formato XXXXX."
#: pretix/base/auth.py:146
#, python-brace-format
@@ -655,7 +657,7 @@ msgstr "Contraseña"
#: pretix/base/auth.py:176 pretix/base/auth.py:183
msgid "Your password must contain both numeric and alphabetic characters."
msgstr "Su contraseña debe contener caracteres numéricos y alfabéticos."
msgstr "Su contraseña debe contener caracteres alfanuméricos."
#: pretix/base/auth.py:202 pretix/base/auth.py:212
#, python-format
@@ -687,7 +689,7 @@ msgstr ""
#: pretix/base/context.py:45
#, python-brace-format
msgid "powered by {name} based on <a {a_attr}>pretix</a>"
msgstr "hecho posible por {name} basado en <a {a_attr}>pretix</a>"
msgstr "desarrollado por {name} basado en <a {a_attr}>pretix</a>"
#: pretix/base/context.py:52
#, python-format
@@ -701,7 +703,7 @@ msgstr "Código fuente"
#: pretix/base/customersso/oidc.py:61
#, python-brace-format
msgid "Configuration option \"{name}\" is missing."
msgstr "La opción de configuración \"{name}\" no existe."
msgstr "La opción de configuración \"{name}\" falta."
#: pretix/base/customersso/oidc.py:69 pretix/base/customersso/oidc.py:74
#, python-brace-format
@@ -721,7 +723,7 @@ msgstr "Proveedor SSO incompatible: \"{error}\"."
#: pretix/base/customersso/oidc.py:111
#, python-brace-format
msgid "You are not requesting \"{scope}\"."
msgstr "No esta solicitando \"{scope}\"."
msgstr "No estas solicitando \"{scope}\"."
#: pretix/base/customersso/oidc.py:117
#, python-brace-format
@@ -729,8 +731,8 @@ msgid ""
"You are requesting scope \"{scope}\" but provider only supports these: "
"{scopes}."
msgstr ""
"Está solicitando el scope \"{scope}\", pero el proveedor solo admite estos: "
"{scopes}."
"Estás solicitando la funcionalidad \"{scope}\", pero el proveedor solo "
"admite estos: {scopes}."
#: pretix/base/customersso/oidc.py:127
#, python-brace-format
@@ -738,7 +740,7 @@ msgid ""
"You are requesting field \"{field}\" but provider only supports these: "
"{fields}."
msgstr ""
"Está solicitando el campo \"{field}\", pero el proveedor solo admite estos: "
"Estás solicitando el campo \"{field}\", pero el proveedor solo admite estos: "
"{fields}."
#: pretix/base/customersso/oidc.py:137
@@ -757,7 +759,7 @@ msgstr ""
#: pretix/presale/views/customer.py:862
#, python-brace-format
msgid "Login was not successful. Error message: \"{error}\"."
msgstr "El inicio de sesión no fue exitoso. Mensaje de error: \"{error}\"."
msgstr "El inicio de sesión no tuvo éxito. Mensaje de error: \"{error}\"."
#: pretix/base/customersso/oidc.py:236
msgid ""
@@ -808,7 +810,7 @@ msgstr "Excel combinado (.xlsx)"
#: pretix/base/exporters/answers.py:54
msgid "Question answer file uploads"
msgstr "Cargas de archivos de respuestas a preguntas"
msgstr "Subida de archivo de preguntas y respuestas"
#: pretix/base/exporters/answers.py:55 pretix/base/exporters/json.py:52
#: pretix/base/exporters/mail.py:53 pretix/base/exporters/orderlist.py:87
@@ -891,12 +893,12 @@ msgstr "Todas las fechas"
#: pretix/base/exporters/customers.py:49 pretix/control/navigation.py:606
#: pretix/control/templates/pretixcontrol/organizers/edit.html:132
msgid "Customer accounts"
msgstr "Cuenta de cliente"
msgstr "Cuentas de clientes"
#: pretix/base/exporters/customers.py:51
msgctxt "export_category"
msgid "Customer accounts"
msgstr "Cuenta de cliente"
msgstr "Cuentas de clientes"
#: pretix/base/exporters/customers.py:52
msgid "Download a spreadsheet of all currently registered customer accounts."
@@ -910,7 +912,7 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/event/checkout_customer.html:36
#: pretix/presale/templates/pretixpresale/organizers/customer_base.html:37
msgid "Customer ID"
msgstr "ID Cliente"
msgstr "ID de cliente"
#: pretix/base/exporters/customers.py:65
#: pretix/control/templates/pretixcontrol/organizers/customer.html:32
@@ -1107,7 +1109,7 @@ msgstr ""
#: pretix/base/exporters/dekodi.py:105
#, python-brace-format
msgid "Event ticket {event}-{code}"
msgstr "Entrada para evento {event}-{code}"
msgstr "Entrada para el evento {event}-{code}"
#: pretix/base/exporters/dekodi.py:234 pretix/base/exporters/invoices.py:74
#: pretix/base/exporters/orderlist.py:128
@@ -1202,12 +1204,12 @@ msgstr "Hora de admisión"
#: pretix/base/exporters/events.py:65 pretix/base/models/event.py:598
#: pretix/base/models/event.py:1484 pretix/control/forms/subevents.py:93
msgid "Start of presale"
msgstr "Inicio de preventa"
msgstr "Inicio de la preventa"
#: pretix/base/exporters/events.py:66 pretix/base/models/event.py:592
#: pretix/base/models/event.py:1478 pretix/control/forms/subevents.py:99
msgid "End of presale"
msgstr "Finalización de preventa"
msgstr "Finalización de la preventa"
#: pretix/base/exporters/events.py:67 pretix/base/exporters/invoices.py:351
#: pretix/base/models/event.py:604 pretix/base/models/event.py:1490
@@ -1217,7 +1219,7 @@ msgstr "Ubicación"
#: pretix/base/exporters/events.py:68 pretix/base/models/event.py:607
#: pretix/base/models/event.py:1493
msgid "Latitude"
msgstr "Lalitud"
msgstr "Latitud"
#: pretix/base/exporters/events.py:69 pretix/base/models/event.py:615
#: pretix/base/models/event.py:1501
@@ -1244,7 +1246,7 @@ msgstr "Comentario interno"
#: pretix/control/templates/pretixcontrol/orders/refunds.html:50
#: pretix/control/templates/pretixcontrol/search/payments.html:93
msgid "Payment provider"
msgstr "Proveedor de pagos"
msgstr "Proveedor de pago"
#: pretix/base/exporters/invoices.py:84 pretix/base/exporters/invoices.py:86
#: pretix/control/forms/filter.py:206 pretix/control/forms/filter.py:1020
@@ -1270,7 +1272,7 @@ msgstr "Todas las facturas"
#: pretix/base/exporters/invoices.py:127
msgid "Download all invoices created by the system as a ZIP file of PDF files."
msgstr ""
"Descargue todas las facturas creadas por el sistema como un archivo ZIP de "
"Descargue todas las facturas creadas por el sistema en un archivo ZIP de "
"archivos PDF."
#: pretix/base/exporters/invoices.py:178
@@ -1444,7 +1446,7 @@ msgstr "País"
#: pretix/base/exporters/invoices.py:211 pretix/base/exporters/invoices.py:337
msgid "Tax ID"
msgstr "IVA-ID"
msgstr "CIF"
#: pretix/base/exporters/invoices.py:212 pretix/base/exporters/invoices.py:220
#: pretix/base/exporters/invoices.py:338 pretix/base/exporters/invoices.py:346
@@ -1488,7 +1490,7 @@ msgstr "Destinatario de la factura:"
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:83
#: pretix/presale/templates/pretixpresale/event/order.html:307
msgid "Company"
msgstr "Compañía"
msgstr "Empresa"
#: pretix/base/exporters/invoices.py:215 pretix/base/exporters/invoices.py:341
msgid "Street address"
@@ -3418,7 +3420,7 @@ msgstr "Formato de facturas predeterminado (carta de estilo europeo)"
#: pretix/base/invoice.py:947
msgctxt "invoice"
msgid "(Please quote at all times.)"
msgstr "{Por favor, siempre seleccionar quota.}"
msgstr "(Por favor cite en todo momento.)"
#: pretix/base/invoice.py:994
msgid "Simplified invoice renderer"
@@ -4565,13 +4567,13 @@ msgstr "Transacción manual"
#, python-format
msgctxt "invoice"
msgid "Tax ID: %s"
msgstr "IVA-ID: %s"
msgstr "CIF: %s"
#: pretix/base/models/invoices.py:191 pretix/base/services/invoices.py:139
#, python-format
msgctxt "invoice"
msgid "VAT-ID: %s"
msgstr "IVA-ID: %s"
msgstr "CIF: %s"
#: pretix/base/models/items.py:93
msgid "Category name"
@@ -5967,7 +5969,7 @@ msgstr "Tarifa de envío"
#: pretix/base/models/orders.py:2286
msgid "Service fee"
msgstr "Tarifa por servicio"
msgstr "Gastos de gestión"
#: pretix/base/models/orders.py:2287
#: pretix/control/templates/pretixcontrol/order/index.html:156

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -8,16 +8,16 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-16 14:20+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"
"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
@@ -673,11 +661,11 @@ msgstr "選択したもののみ"
#: 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:811
msgid "Invalid page number."
msgstr ""
msgstr "無効なページ番号。"
#: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally"
@@ -756,49 +744,44 @@ 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"

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2023-04-06 02:00+0000\n"
"Last-Translator: 전윤수 <jeonyunsoo123@gmail.com>\n"
"PO-Revision-Date: 2025-01-11 21:00+0000\n"
"Last-Translator: Hijiri Umemoto <hijiri@umemoto.org>\n"
"Language-Team: Korean <https://translate.pretix.eu/projects/pretix/pretix/ko/"
">\n"
"Language: ko\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.16.4\n"
"X-Generator: Weblate 5.9.2\n"
#: pretix/_base_settings.py:79
msgid "English"
@@ -163,17 +163,15 @@ msgstr "어플리케이션 이름"
#: pretix/api/models.py:42 pretix/base/models/customers.py:421
msgid "Redirection URIs"
msgstr "리다이렉션URI"
msgstr "리다이렉션 URI"
#: pretix/api/models.py:43 pretix/base/models/customers.py:422
msgid "Allowed URIs list, space separated"
msgstr "허용된 URI 리스트, 스페이스로 구분"
#: pretix/api/models.py:47
#, fuzzy
#| msgid "Allowed URIs list, space separated"
msgid "Allowed Post Logout URIs list, space separated"
msgstr "허용된 URI 리스트, 스페이스로 구분"
msgstr "공백으로 구분된 허용된 로그아웃 후 URI 목록"
#: pretix/api/models.py:51 pretix/base/models/customers.py:406
#: pretix/plugins/paypal/payment.py:113 pretix/plugins/paypal2/payment.py:110
@@ -201,7 +199,7 @@ msgstr "모든 이벤트 (향후 생성될 이벤트들도 포함)"
#: pretix/api/models.py:119 pretix/base/models/devices.py:123
#: pretix/base/models/organizer.py:287
msgid "Limit to events"
msgstr "다음 이벤트로 제한하"
msgstr "이러한 이벤트로 제한하"
#: pretix/api/models.py:120 pretix/base/exporters/orderlist.py:284
#: pretix/base/exporters/orderlist.py:1077
@@ -17954,10 +17952,8 @@ msgid "December"
msgstr ""
#: pretix/control/templates/pretixcontrol/global_sysreport.html:32
#, fuzzy
#| msgid "Generate tickets"
msgid "Generate report"
msgstr "티켓 생성"
msgstr "보고서를 생성"
#: pretix/control/templates/pretixcontrol/global_update.html:7
msgid "Update check results"
@@ -19895,11 +19891,8 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/orders/bulk_action.html:5
#: pretix/control/templates/pretixcontrol/orders/bulk_action.html:7
#, fuzzy
#| msgid "1 order"
#| msgid_plural "%(s)s orders"
msgid "Modify orders"
msgstr "%(s)s개 주문"
msgstr "주문을 수정"
#: pretix/control/templates/pretixcontrol/orders/bulk_action.html:12
#, python-format
@@ -22091,11 +22084,8 @@ msgid "Begin"
msgstr ""
#: pretix/control/templates/pretixcontrol/subevents/index.html:176
#, fuzzy
#| msgid "1 order"
#| msgid_plural "%(s)s orders"
msgid "Show orders"
msgstr "%(s)s개 주문"
msgstr "주문을 표시"
#: pretix/control/templates/pretixcontrol/subevents/index.html:187
msgctxt "subevent"
@@ -26628,10 +26618,8 @@ msgid ""
msgstr ""
#: pretix/plugins/returnurl/views.py:37
#, fuzzy
#| msgid "Redirection URIs"
msgid "Base redirection URLs"
msgstr "리다이렉션URI"
msgstr "기본 리다이렉션 URL"
#: pretix/plugins/returnurl/views.py:38
msgid ""
@@ -27315,10 +27303,8 @@ msgid "Publishable key"
msgstr ""
#: pretix/plugins/stripe/payment.py:280
#, fuzzy
#| msgid "Generate tickets"
msgid "Generate API keys"
msgstr "티켓 생성"
msgstr "API 키 생성"
#: pretix/plugins/stripe/payment.py:282
msgid ""
@@ -28495,11 +28481,8 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/event/base.html:127
#: pretix/presale/templates/pretixpresale/event/base.html:201
#, fuzzy
#| msgid "This ticket has been used once."
#| msgid_plural "This ticket has been used %(count)s times."
msgid "This ticket shop is currently in test mode."
msgstr "티켓이 %(count)s회 사용되었습니다."
msgstr "이 티켓 상점은 현재 테스트 모드입니다."
#: pretix/presale/templates/pretixpresale/event/base.html:130
#: pretix/presale/templates/pretixpresale/event/base.html:204
@@ -29761,11 +29744,8 @@ msgid "Shop offline"
msgstr ""
#: pretix/presale/templates/pretixpresale/event/offline.html:9
#, fuzzy
#| msgid "This ticket has been used once."
#| msgid_plural "This ticket has been used %(count)s times."
msgid "This ticket shop is currently turned off."
msgstr "티켓이 %(count)s회 사용되었습니다."
msgstr "이 티켓 상점은 현재 비활성화되어 있습니다."
#: pretix/presale/templates/pretixpresale/event/offline.html:10
msgid "It is only accessible to authenticated team members."
@@ -30208,11 +30188,8 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/event/position_modify.html:5
#: pretix/presale/templates/pretixpresale/event/position_modify.html:8
#, fuzzy
#| msgid "1 order"
#| msgid_plural "%(s)s orders"
msgid "Modify ticket"
msgstr "%(s)s개 주문"
msgstr "티켓 수정"
#: pretix/presale/templates/pretixpresale/event/resend_link.html:4
#: pretix/presale/templates/pretixpresale/event/resend_link.html:11
@@ -30738,7 +30715,7 @@ msgstr ""
#: pretix/presale/views/cart.py:546
msgid "The products have been successfully added to your cart."
msgstr "성공적으로 추가되었습니다."
msgstr "제품이 장바구니에 성공적으로 추가되었습니다."
#: pretix/presale/views/cart.py:570 pretix/presale/views/event.py:537
#: pretix/presale/views/widget.py:377

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2024-10-29 21:00+0000\n"
"Last-Translator: Anarion Dunedain <anarion80@gmail.com>\n"
"PO-Revision-Date: 2024-12-29 22:00+0000\n"
"Last-Translator: Wiktor Przybylski <wikprzybylski@gmail.com>\n"
"Language-Team: Polish <https://translate.pretix.eu/projects/pretix/pretix/pl/"
">\n"
"Language: pl\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 5.8.1\n"
"X-Generator: Weblate 5.9.2\n"
#: pretix/_base_settings.py:79
msgid "English"
@@ -3077,7 +3077,7 @@ msgstr "Proszę wprowadzić nazwę firmy."
#: pretix/base/forms/questions.py:1176
msgid "You need to provide your name."
msgstr "Proszę wprowadzić swoję imie i nazwisko."
msgstr "Proszę wprowadzić swoje imię i nazwisko."
#: pretix/base/forms/user.py:51 pretix/control/forms/users.py:43
msgid ""
@@ -10866,7 +10866,7 @@ msgid ""
msgstr ""
"Witaj,\n"
"\n"
"Płatność za {event} się powiodła. Dziękujmy!\n"
"Płatność za {event} się powiodła. Dziękujemy!\n"
"\n"
"{payment_info}\n"
"\n"
@@ -19747,10 +19747,8 @@ msgid "Calculation"
msgstr "Anulowanie"
#: pretix/control/templates/pretixcontrol/event/tax_edit.html:64
#, fuzzy
#| msgid "Reason:"
msgid "Reason"
msgstr "Powód:"
msgstr "Powód"
#: pretix/control/templates/pretixcontrol/event/tax_edit.html:137
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:251

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2024-12-13 08:00+0000\n"
"Last-Translator: Vasco Baleia <vb2003.12@gmail.com>\n"
"PO-Revision-Date: 2025-01-10 20:00+0000\n"
"Last-Translator: David Vaz <davidmgvaz@gmail.com>\n"
"Language-Team: Portuguese (Portugal) <https://translate.pretix.eu/projects/"
"pretix/pretix/pt_PT/>\n"
"Language: pt_PT\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.8.4\n"
"X-Generator: Weblate 5.9.2\n"
#: pretix/_base_settings.py:79
msgid "English"
@@ -34876,7 +34876,7 @@ msgstr "Nenhuma associação é armazenada em sua conta."
#| msgid "+ %(count)s invited"
msgid "%(counter)s item"
msgid_plural "%(counter)s items"
msgstr[0] "+%(count)s convidados"
msgstr[0] "+%(count)s convidado"
msgstr[1] "+%(count)s convidados"
#: pretix/presale/templates/pretixpresale/organizers/customer_orders.html:78

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2024-08-02 23:00+0000\n"
"Last-Translator: baris gormez <vbgormez@gmail.com>\n"
"PO-Revision-Date: 2025-01-04 01:00+0000\n"
"Last-Translator: Hijiri Umemoto <hijiri@umemoto.org>\n"
"Language-Team: Turkish <https://translate.pretix.eu/projects/pretix/pretix/"
"tr/>\n"
"Language: tr\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.6.2\n"
"X-Generator: Weblate 5.9.2\n"
#: pretix/_base_settings.py:79
msgid "English"
@@ -465,7 +465,7 @@ msgstr "Siparişin süresi doldu"
#: pretix/api/webhooks.py:261
msgid "Order expiry date changed"
msgstr "Siparişin son tarihi değiştirildi."
msgstr "Siparişin son kullanma tarihi değiştirildi"
#: pretix/api/webhooks.py:265 pretix/base/notifications.py:269
msgid "Order information changed"
@@ -494,11 +494,11 @@ msgstr "Müşteri tarafından iade talep edildi"
#: pretix/api/webhooks.py:289
msgid "Refund of payment completed"
msgstr "Ödeme iadesi tamamlandı."
msgstr "Ödemenin iadesi tamamlandı"
#: pretix/api/webhooks.py:293
msgid "Refund of payment canceled"
msgstr "İade iptal edildi."
msgstr "Ödemenin iadesi iptal edildi"
#: pretix/api/webhooks.py:297
msgid "Refund of payment failed"
@@ -1041,10 +1041,8 @@ msgid "Name"
msgstr "Ad"
#: pretix/base/exporters/customers.py:77 pretix/base/models/customers.py:99
#, fuzzy
#| msgid "This account is inactive."
msgid "Account active"
msgstr "Bu hesap aktif değildir."
msgstr "Hesap aktif"
#: pretix/base/exporters/customers.py:78 pretix/base/models/customers.py:100
#, fuzzy
@@ -1192,17 +1190,13 @@ msgstr ""
"tarihinin her zaman sipariş veya ödeme tarihine uygun olmadığını unutmayın."
#: pretix/base/exporters/events.py:47
#, fuzzy
#| msgid "Event date"
msgid "Event data"
msgstr "Etkinlik tarihi"
msgstr "Etkinlik verileri"
#: pretix/base/exporters/events.py:48
#, fuzzy
#| msgid "Event date"
msgctxt "export_category"
msgid "Event data"
msgstr "Etkinlik tarihi"
msgstr "Etkinlik verileri"
#: pretix/base/exporters/events.py:49
msgid ""
@@ -1857,7 +1851,7 @@ msgstr "Bekleme listesi"
#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:171
#: pretix/control/templates/pretixcontrol/subevents/detail.html:149
msgid "Available from"
msgstr "Mevcut"
msgstr "Şuradan temin edilebilir"
#: pretix/base/exporters/items.py:81 pretix/base/models/discount.py:85
#: pretix/base/models/items.py:229 pretix/base/models/items.py:285
@@ -4379,10 +4373,8 @@ msgid "Profile data (name, addresses)"
msgstr "Yeni bir tarih oluştur"
#: pretix/base/models/customers.py:414
#, fuzzy
#| msgid "Event date"
msgid "Client type"
msgstr "Etkinlik tarihi"
msgstr "Müşteri türü"
#: pretix/base/models/customers.py:417
#, fuzzy
@@ -8227,10 +8219,8 @@ msgstr ""
#: pretix/base/services/cancelevent.py:229
#: pretix/base/services/cancelevent.py:287
#, fuzzy
#| msgid "Event date"
msgid "Event canceled"
msgstr "Etkinlik tarihi"
msgstr "Etkinlik iptal edildi"
#: pretix/base/services/cart.py:101 pretix/base/services/modelimport.py:194
#: pretix/base/services/orders.py:150
@@ -9079,6 +9069,9 @@ msgid ""
"place at {date}, however you already used the same membership for a "
"different ticket at the same time."
msgstr ""
"{date}'de gerçekleşen bir etkinlik için \"{type}\" türünde bir üyelik "
"kullanmaya çalışıyorsunuz, ancak aynı üyeliği aynı anda farklı bir bilet "
"için zaten kullandınız."
#: pretix/base/services/modelimport.py:53
#, python-brace-format
@@ -10835,7 +10828,7 @@ msgstr "Seçilen ürün aktif değil veya fiyat ayarlı değil."
#: pretix/base/settings.py:1659
msgid "Hide all unavailable dates from calendar or list views"
msgstr ""
msgstr "Takvim veya liste görünümlerinden tüm uygun olmayan tarihleri gizle"
#: pretix/base/settings.py:1660 pretix/base/settings.py:1671
msgid ""
@@ -11292,8 +11285,8 @@ msgid ""
msgstr ""
"Merhaba,\n"
"\n"
"Bu mesajı size {event} etkinliğine ait siparişiniz ile ilgili bağlantıyı "
"göndermemizi istediğiniz için aldınız\n"
"Bu mesajı size bağlantıyı göndermemizi istediğiniz için alıyorsunuz\n"
"to your order for {event}.\n"
"\n"
"Bu adresten sipariş ayrıntılarınızı değiştirebilir ve siparişinizin durumunu "
"görebilirsiniz\n"
@@ -14143,12 +14136,12 @@ msgid "Text (if an incomplete payment was received)"
msgstr "Siparişiniz için ödeme alındı: {code}"
#: pretix/control/forms/event.py:1169
#, fuzzy
#| msgid "This plugin allows you to receive payments via bank transfer "
msgid ""
"This email only applies to payment methods that can receive incomplete "
"payments, such as bank transfer."
msgstr "Bu eklenti banka havalesi yoluyla ödeme almanızı sağlar "
msgstr ""
"Bu e-posta yalnızca banka havalesi gibi eksik ödemeler alabilen ödeme "
"yöntemleri için geçerlidir."
#: pretix/control/forms/event.py:1237
msgid ""
@@ -14942,10 +14935,8 @@ msgid "Date filter"
msgstr "Tarih geçmişi"
#: pretix/control/forms/filter.py:2332 pretix/plugins/reports/exporters.py:690
#, fuzzy
#| msgid "Filter by tag"
msgid "Filter by…"
msgstr "Etikete göre filtrele"
msgstr "Filtrele"
#: pretix/control/forms/filter.py:2334 pretix/plugins/reports/exporters.py:692
#, fuzzy
@@ -16001,6 +15992,10 @@ msgid ""
"series is only partially canceled since it consists of tickets for multiple "
"dates."
msgstr ""
"Seçilen ücret türleri iade edilmeyecek, bunun yerine iptal ücretine "
"eklenecektir. Bir etkinlik serisindeki bir sipariş, birden fazla tarih için "
"biletlerden oluştuğu için yalnızca kısmen iptal edildiğinde ücretler asla "
"iade edilmez."
#: pretix/control/forms/orders.py:905
#, fuzzy
@@ -16191,11 +16186,9 @@ msgid "This will be attached to every email."
msgstr "Bu her e-postaya eklenecektir. Mevcut yer tutucuları: {event}"
#: pretix/control/forms/organizer.py:681
#, fuzzy
#| msgid "Event date"
msgctxt "webhooks"
msgid "Event types"
msgstr "Etkinlik tarihi"
msgstr "Etkinlik türleri"
#: pretix/control/forms/organizer.py:713
#, fuzzy
@@ -16718,9 +16711,9 @@ msgid "Position #{posid} created: {item} ({price})."
msgstr "Poziyon #{posid} oluşturuldu: {item} ({price})."
#: pretix/control/logdisplay.py:162
#, python-brace-format
#, fuzzy, python-brace-format
msgid "A new secret has been generated for position #{posid}."
msgstr "Pozisyon #{posid} için yeni bir sır oluşturuldu"
msgstr "#{Posid} pozisyonu için yeni bir sır oluşturuldu."
#: pretix/control/logdisplay.py:166
#, fuzzy, python-brace-format
@@ -18369,10 +18362,8 @@ msgstr "Soruyu sil"
#: pretix/control/navigation.py:494
#: pretix/control/templates/pretixcontrol/organizers/properties.html:5
#, fuzzy
#| msgid "Event date"
msgid "Event metadata"
msgstr "Etkinlik tarihi"
msgstr "Olay meta verileri"
#: pretix/control/navigation.py:515
#: pretix/control/templates/pretixcontrol/organizers/webhooks.html:6
@@ -19540,10 +19531,8 @@ msgid "Valid check-in"
msgstr "Check-in listeleri"
#: pretix/control/templates/pretixcontrol/checkin/simulator.html:68
#, fuzzy
#| msgid "Meta information"
msgid "Additional information required"
msgstr "Meta bilgisi"
msgstr "Ek bilgi gerekli"
#: pretix/control/templates/pretixcontrol/checkin/simulator.html:70
msgid ""
@@ -19720,8 +19709,8 @@ msgid ""
msgstr ""
"Merhaba,\n"
"\n"
"pretix hesabınızdaki bilgiler değiştiği için bu e-postayı aldınız. Aşağıdaki "
"değişiklikler gerçekleşti:\n"
"Bu, pretix hesabınızın hesap bilgilerinin\n"
"Değişti. Özellikle, aşağıdaki değişiklikler yapılmıştır:\n"
"\n"
"%(messages)s\n"
"\n"
@@ -19981,6 +19970,9 @@ msgid ""
"event and only retain the financial information such as the number and type "
"of tickets sold."
msgstr ""
"İsimler ve e-posta adresleri gibi kişisel verileri etkinliğinizden "
"kaldırabilir ve yalnızca satılan bilet sayısı ve türü gibi finansal "
"bilgileri saklayabilirsiniz."
#: pretix/control/templates/pretixcontrol/event/dangerzone.html:76
#: pretix/control/templates/pretixcontrol/event/dangerzone.html:89
@@ -20080,11 +20072,8 @@ msgid "Failed to retrieve geo coordinates"
msgstr ""
#: pretix/control/templates/pretixcontrol/event/fragment_geodata_autoupdate.html:5
#, fuzzy
#| msgctxt "subevent"
#| msgid "No dates"
msgid "Retrieving geo coordinates …"
msgstr "Tarih yok"
msgstr "Coğrafi koordinatlar alınıyor …"
#: pretix/control/templates/pretixcontrol/event/fragment_geodata_autoupdate.html:6
#, fuzzy
@@ -20991,6 +20980,10 @@ msgid ""
"quota, you might run into situations where people are sent an email from the "
"waiting list but still are unable to book a seat."
msgstr ""
"Bekleme listesi, kullanılabilirliği esas olarak kotalara göre belirler. Bir "
"oturma planı kullanıyorsanız ve mevcut koltuk sayınız mevcut kotadan azsa, "
"insanlara bekleme listesinden bir e-posta gönderildiği ancak yine de bir "
"koltuk ayırtamadıkları durumlarla karşılaşabilirsiniz."
#: pretix/control/templates/pretixcontrol/event/settings.html:366
msgid ""
@@ -21011,10 +21004,8 @@ msgid "Manage waiting list"
msgstr "Bekleme listesini etkinleştir"
#: pretix/control/templates/pretixcontrol/event/settings.html:396
#, fuzzy
#| msgid "Event date"
msgid "Item metadata"
msgstr "Etkinlik tarihi"
msgstr "Öğe meta verileri"
#: pretix/control/templates/pretixcontrol/event/settings.html:398
#, fuzzy
@@ -21390,10 +21381,8 @@ msgstr ""
"tarih ve saat ayarları ve etkinlik adını içeren metinler."
#: pretix/control/templates/pretixcontrol/events/create_foundation.html:7
#, fuzzy
#| msgid "Event date"
msgid "Event type"
msgstr "Etkinlik tarihi"
msgstr "Etkinlik türü"
#: pretix/control/templates/pretixcontrol/events/create_foundation.html:13
msgid "Singular event or non-event shop"
@@ -24890,6 +24879,10 @@ msgid ""
"data such as event metadata and POS transactions will persist until you "
"uninstall or reset the software manually."
msgstr ""
"Cihaz yazılımı destekliyorsa, siparişler gibi kişisel veriler bir sonraki "
"senkronizasyon denemesinde cihazdan silinecektir. Olay meta verileri ve POS "
"işlemleri gibi kişisel olmayan veriler, yazılımı manuel olarak kaldırana "
"veya sıfırlayana kadar devam edecektir."
#: pretix/control/templates/pretixcontrol/organizers/devices.html:10
msgid ""
@@ -25344,10 +25337,10 @@ msgid ""
"can later set for your events and re-use in places like ticket layouts. This "
"is an useful timesaver if you create lots and lots of events."
msgstr ""
"Burada daha sonra etkinlikleriniz için ayarlayabileceğiniz ve bilet "
"Burada, daha sonra etkinlikleriniz için ayarlayabileceğiniz ve bilet "
"düzenleri gibi yerlerde yeniden kullanabileceğiniz bir dizi meta veri "
"özelliği (yani değişkenler) tanımlayabilirsiniz. Çok sayıda etkinlik "
"oluşturursanız, bu yararlı bir zaman çizelgesidir."
"özelliği (yani değişkenler) tanımlayabilirsiniz. Bu, çok sayıda etkinlik "
"oluşturursanız yararlı bir zaman tasarrufudur."
#: pretix/control/templates/pretixcontrol/organizers/properties.html:15
#: pretix/control/templates/pretixcontrol/organizers/property_edit.html:9
@@ -25955,10 +25948,8 @@ msgstr "E-posta içeriği"
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_create.html:20
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_update.html:34
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/send_form.html:29
#, fuzzy
#| msgid "Bancontact"
msgid "Content"
msgstr "Bancontact"
msgstr "Içerik"
#: pretix/control/templates/pretixcontrol/pdf/index.html:270
#: pretix/control/templates/pretixcontrol/pdf/placeholders.html:50
@@ -27445,11 +27436,7 @@ msgid "Quota unlimited"
msgstr "Kota adı"
#: pretix/control/templates/pretixcontrol/waitinglist/index.html:240
#, fuzzy, python-format
#| msgid ""
#| "\n"
#| " Waiting, product %(num)sx available\n"
#| " "
#, python-format
msgid ""
"\n"
" Waiting, product %(num)sx "
@@ -27457,8 +27444,8 @@ msgid ""
" "
msgstr ""
"\n"
" Bekliyor, ürün %(num)sx mevcut\n"
" "
" Bekliyor, ürün %(num)sx mevcut\n"
" "
#: pretix/control/templates/pretixcontrol/waitinglist/index.html:246
msgid "Waiting, product unavailable"
@@ -27821,7 +27808,7 @@ msgstr "Yakında"
msgid "{num} order"
msgid_plural "{num} orders"
msgstr[0] "{num} sipariş"
msgstr[1] "{num} sipariş"
msgstr[1] "{num} siparişler"
#: pretix/control/views/discounts.py:67 pretix/control/views/discounts.py:109
#: pretix/control/views/discounts.py:214
@@ -27904,10 +27891,9 @@ msgid "invalid item"
msgstr "geçersiz öğe"
#: pretix/control/views/event.py:802
#, fuzzy, python-format
#| msgid "Your order: {code}"
#, python-format
msgid "Your order: %(code)s"
msgstr "Siparişiniz: {code}"
msgstr "Siparişiniz: %(code)s"
#: pretix/control/views/event.py:811
msgid "Unknown email renderer."
@@ -29821,10 +29807,8 @@ msgid "Only include tickets for dates on or after this date."
msgstr ""
#: pretix/plugins/badges/exporters.py:472
#, fuzzy
#| msgid "Event date"
msgid "End event date"
msgstr "Etkinlik tarihi"
msgstr "Etkinlik bitiş tarihi"
#: pretix/plugins/badges/exporters.py:475
#, fuzzy
@@ -35584,8 +35568,8 @@ msgid ""
" "
msgstr ""
"\n"
" Bekliyor, ürün %(num)sx mevcut\n"
" "
" %(Datetime)s için takvim\n"
" "
#: pretix/presale/templates/pretixpresale/event/index.html:48
msgid "Your cart, general information, add products to your cart"
@@ -36403,9 +36387,7 @@ msgid ""
" "
msgstr ""
"\n"
" ……………………………………………"
"itibaren %(start_date)s\n"
"………………………………………\n"
" %(start_date)s'den\n"
" "
#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:12
@@ -36441,22 +36423,15 @@ msgid "to"
msgstr "için"
#: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:119
#, fuzzy, python-format
#| msgid ""
#| "\n"
#| " from "
#| "%(start_date)s\n"
#| " "
#, python-format
msgid ""
"\n"
" from %(start_date)s\n"
" "
msgstr ""
"\n"
" ……………………………………………"
"itibaren %(start_date)s\n"
"………………………………………\n"
" "
" %(start_date)s'den\n"
" "
#: pretix/presale/templates/pretixpresale/fragment_login_status.html:5
#, fuzzy
@@ -36539,22 +36514,15 @@ msgid "Save selection"
msgstr "Veri seçimi"
#: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:82
#, fuzzy, python-format
#| msgid ""
#| "\n"
#| " from "
#| "%(start_date)s\n"
#| " "
#, python-format
msgid ""
"\n"
" from %(start_date)s\n"
" "
msgstr ""
"\n"
" ……………………………………………"
"itibaren %(start_date)s\n"
"………………………………………\n"
" "
" %(start_date)s'den\n"
" "
#: pretix/presale/templates/pretixpresale/index.html:7
msgid "Hello!"
@@ -37009,10 +36977,8 @@ msgid "This feature is only available in test mode."
msgstr "Bu geri ödeme şu anda işleme alınamaz."
#: pretix/presale/views/event.py:985
#, fuzzy
#| msgid "This account is inactive."
msgid "Time machine disabled!"
msgstr "Bu hesap aktif değildir."
msgstr "Zaman makinesi devre dışı!"
#: pretix/presale/views/order.py:368 pretix/presale/views/order.py:433
#: pretix/presale/views/order.py:514

View File

@@ -8,16 +8,16 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2024-04-10 23:00+0000\n"
"Last-Translator: Shiiko <shiiko@xlclan.com>\n"
"Language-Team: Chinese (Simplified) <https://translate.pretix.eu/projects/"
"pretix/pretix/zh_Hans/>\n"
"PO-Revision-Date: 2024-12-25 23:27+0000\n"
"Last-Translator: Aarni Heinonen <vamoosev@gmail.com>\n"
"Language-Team: Chinese (Simplified Han script) <https://translate.pretix.eu/"
"projects/pretix/pretix/zh_Hans/>\n"
"Language: zh_Hans\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 5.4.3\n"
"X-Generator: Weblate 5.9.2\n"
#: pretix/_base_settings.py:79
msgid "English"
@@ -37,11 +37,11 @@ msgstr "阿拉伯语"
#: pretix/_base_settings.py:83
msgid "Basque"
msgstr ""
msgstr "巴斯克语"
#: pretix/_base_settings.py:84
msgid "Catalan"
msgstr ""
msgstr "加泰罗尼亚语"
#: pretix/_base_settings.py:85
msgid "Chinese (simplified)"
@@ -99,7 +99,7 @@ msgstr "拉脱维亚语"
#: pretix/_base_settings.py:98
msgid "Norwegian Bokmål"
msgstr ""
msgstr "挪威语"
#: pretix/_base_settings.py:99
msgid "Polish"
@@ -123,11 +123,11 @@ msgstr "俄语"
#: pretix/_base_settings.py:104
msgid "Slovak"
msgstr ""
msgstr "斯洛伐克语"
#: pretix/_base_settings.py:105
msgid "Swedish"
msgstr ""
msgstr "瑞典语"
#: pretix/_base_settings.py:106
msgid "Spanish"
@@ -172,10 +172,8 @@ msgid "Allowed URIs list, space separated"
msgstr "允许的 URIs 列表, 用空格分隔"
#: pretix/api/models.py:47
#, fuzzy
#| msgid "Allowed URIs list, space separated"
msgid "Allowed Post Logout URIs list, space separated"
msgstr "允许的 URIs 列表, 用空格分隔"
msgstr "允许的注销后 URI 列表,以空格分隔"
#: pretix/api/models.py:51 pretix/base/models/customers.py:406
#: pretix/plugins/paypal/payment.py:113 pretix/plugins/paypal2/payment.py:110
@@ -247,10 +245,9 @@ msgid "Meta data property '{name}' does not exist."
msgstr "元数据属性“{name}”不存在."
#: pretix/api/serializers/event.py:249 pretix/api/serializers/event.py:552
#, fuzzy, python-brace-format
#| msgid "Meta data property '{name}' does not exist."
#, python-brace-format
msgid "Meta data property '{name}' does not allow value '{value}'."
msgstr "元数据属性“{name}”不存在."
msgstr "元数据属性“{name}”不允许值“{value}”。"
#: pretix/api/serializers/event.py:293
#, python-brace-format

View File

@@ -8,16 +8,16 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-16 14:20+0000\n"
"PO-Revision-Date: 2024-01-22 17:08+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n"
"Language-Team: Chinese (Traditional) <https://translate.pretix.eu/projects/"
"pretix/pretix/zh_Hant/>\n"
"PO-Revision-Date: 2025-01-04 19:00+0000\n"
"Last-Translator: Hijiri Umemoto <hijiri@umemoto.org>\n"
"Language-Team: Chinese (Traditional Han script) <https://translate.pretix.eu/"
"projects/pretix/pretix/zh_Hant/>\n"
"Language: zh_Hant\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 5.3.1\n"
"X-Generator: Weblate 5.9.2\n"
#: pretix/_base_settings.py:79
msgid "English"
@@ -37,11 +37,11 @@ msgstr "阿拉伯語"
#: pretix/_base_settings.py:83
msgid "Basque"
msgstr ""
msgstr "巴斯克語"
#: pretix/_base_settings.py:84
msgid "Catalan"
msgstr ""
msgstr "嘉泰羅尼亞語"
#: pretix/_base_settings.py:85
msgid "Chinese (simplified)"
@@ -85,7 +85,7 @@ msgstr "希臘語"
#: pretix/_base_settings.py:95
msgid "Indonesian"
msgstr ""
msgstr "印尼語"
#: pretix/_base_settings.py:96
msgid "Italian"
@@ -97,7 +97,7 @@ msgstr "拉脫維亞語"
#: pretix/_base_settings.py:98
msgid "Norwegian Bokmål"
msgstr ""
msgstr "挪威博克馬爾語"
#: pretix/_base_settings.py:99
msgid "Polish"
@@ -121,11 +121,11 @@ msgstr "俄語"
#: pretix/_base_settings.py:104
msgid "Slovak"
msgstr ""
msgstr "斯洛伐克語"
#: pretix/_base_settings.py:105
msgid "Swedish"
msgstr ""
msgstr "瑞典語"
#: pretix/_base_settings.py:106
msgid "Spanish"
@@ -582,10 +582,8 @@ msgid "Customer account changed"
msgstr "客戶帳戶電子郵件更改"
#: pretix/api/webhooks.py:394
#, fuzzy
#| msgid "The customer account has been anonymized."
msgid "Customer account anonymized"
msgstr "客戶帳戶已匿名化"
msgstr "客戶帳戶已匿名化"
#: pretix/base/addressvalidation.py:100 pretix/base/addressvalidation.py:103
#: pretix/base/addressvalidation.py:108 pretix/base/forms/questions.py:960
@@ -647,7 +645,7 @@ msgstr "密碼"
#: pretix/base/auth.py:176 pretix/base/auth.py:183
msgid "Your password must contain both numeric and alphabetic characters."
msgstr ""
msgstr "您的密碼必須包含數字和字母字元。"
#: pretix/base/auth.py:202 pretix/base/auth.py:212
#, python-format
@@ -655,7 +653,7 @@ msgid "Your password may not be the same as your previous password."
msgid_plural ""
"Your password may not be the same as one of your %(history_length)s previous "
"passwords."
msgstr[0] ""
msgstr[0] "您的密碼可能與您之前的 %(history_length)s密碼之一不同。"
#: pretix/base/channels.py:168
msgid "Online shop"
@@ -663,13 +661,13 @@ msgstr "網上商店"
#: pretix/base/channels.py:174
msgid "API"
msgstr ""
msgstr "API"
#: pretix/base/channels.py:175
msgid ""
"API sales channels come with no built-in functionality, but may be used for "
"custom integrations."
msgstr ""
msgstr "API銷售渠道沒有內建功能但可用於自定義整合。"
#: pretix/base/context.py:45
#, python-brace-format
@@ -2889,7 +2887,7 @@ msgstr "優惠券代碼"
#: pretix/base/forms/__init__.py:118
#, python-brace-format
msgid "You can use {markup_name} in this field."
msgstr ""
msgstr "您可以在此欄位中使用{markup_name}。"
#: pretix/base/forms/__init__.py:178
#, python-format
@@ -3089,6 +3087,8 @@ msgid ""
"up. Please note: to use literal \"{\" or \"}\", you need to double them as "
"\"{{\" and \"}}\"."
msgstr ""
"您的佔位符語法有誤。 請檢查佔位符上的開頭“{”和結尾“}”花括號是否匹配。 "
"請注意:要使用字面“{”或“}”,您需要將它們加倍為“{{”和“}}”。"
#: pretix/base/forms/validators.py:72 pretix/control/views/event.py:758
#, fuzzy, python-format
@@ -3097,10 +3097,9 @@ msgid "Invalid placeholder: {%(value)s}"
msgstr "無效的佔位元: %(value)ss"
#: pretix/base/forms/widgets.py:68
#, fuzzy, python-format
#| msgid "Sample city"
#, python-format
msgid "Sample: %s"
msgstr "範例城市"
msgstr "範例: %s"
#: pretix/base/forms/widgets.py:71
#, python-brace-format
@@ -3339,7 +3338,7 @@ msgstr ""
#: pretix/base/invoice.py:858
msgid "Default invoice renderer (European-style letter)"
msgstr ""
msgstr "預設發票渲染器(歐式信件)"
#: pretix/base/invoice.py:947
msgctxt "invoice"
@@ -3348,14 +3347,13 @@ msgstr "(請隨時報價)"
#: pretix/base/invoice.py:994
msgid "Simplified invoice renderer"
msgstr ""
msgstr "簡化的發票渲染器"
#: pretix/base/invoice.py:1013
#, fuzzy, python-brace-format
#| msgid "Event date range"
#, python-brace-format
msgctxt "invoice"
msgid "Event date: {date_range}"
msgstr "活動日期區間"
msgstr "活動日期: {date_range}"
#: pretix/base/media.py:71
msgid "Barcode / QR-Code"
@@ -3576,10 +3574,8 @@ msgid "Maximum usages"
msgstr "最大使用量"
#: pretix/base/modelimport_vouchers.py:79
#, fuzzy
#| msgid "Maximum number of items per order"
msgid "The maximum number of usages must be set."
msgstr "每項訂單的最大商品數量"
msgstr "必須設定最大使用次數。"
#: pretix/base/modelimport_vouchers.py:88 pretix/base/models/vouchers.py:205
msgid "Minimum usages"
@@ -3614,7 +3610,7 @@ msgstr "優惠券價值"
#: pretix/base/modelimport_vouchers.py:165
msgid "It is pointless to set a value without a price mode."
msgstr ""
msgstr "在沒有價格模式的情況下設定值是沒有意義的。"
#: pretix/base/modelimport_vouchers.py:237 pretix/base/models/items.py:2081
#: pretix/base/models/vouchers.py:272
@@ -3743,18 +3739,18 @@ msgstr ""
#: pretix/base/models/checkin.py:65
msgctxt "checkin"
msgid "Ignore check-ins on this list in statistics"
msgstr ""
msgstr "忽略統計中此列表中的簽到"
#: pretix/base/models/checkin.py:69
msgctxt "checkin"
msgid "Tickets with a check-in on this list should be considered \"used\""
msgstr ""
msgstr "此列表中有簽到的門票應被視為「已使用」"
#: pretix/base/models/checkin.py:70
msgid ""
"This is relevant in various situations, e.g. for deciding if a ticket can "
"still be canceled by the customer."
msgstr ""
msgstr "這與各種情況有關,例如用於決定客戶是否仍然可以取消門票。"
#: pretix/base/models/checkin.py:74
msgctxt "checkin"
@@ -4065,7 +4061,8 @@ msgid ""
"By default, the discount is applied across the same selection of products "
"than the condition for the discount given above. If you want, you can "
"however also select a different selection of products."
msgstr ""
msgstr "預設情況下,折扣適用於與上述折扣條件相同的產品選擇。 "
"然而,如果您願意,您也可以選擇不同的產品。"
#: pretix/base/models/discount.py:138
#, fuzzy
@@ -4356,7 +4353,7 @@ msgstr "對客戶顯示簽到次數"
msgid ""
"This field will be shown to filter events in the public event list and "
"calendar."
msgstr ""
msgstr "將顯示此欄位,以過濾公共活動列表和日曆中的活動。"
#: pretix/base/models/event.py:1731 pretix/control/forms/organizer.py:269
#: pretix/control/forms/organizer.py:273
@@ -5899,10 +5896,8 @@ msgid "Team members"
msgstr "團隊成員"
#: pretix/base/models/organizer.py:289
#, fuzzy
#| msgid "Do you really want to disable two-factor authentication?"
msgid "Require all members of this team to use two-factor authentication"
msgstr "你真的要禁用兩步驟驗證嗎?"
msgstr "要求該團隊的所有成員使用雙因素身份驗證"
#: pretix/base/models/organizer.py:290
msgid ""
@@ -7822,10 +7817,9 @@ msgid "number of entries before {datetime}"
msgstr "今日條目數數量"
#: pretix/base/services/checkin.py:320
#, fuzzy, python-brace-format
#| msgid "number of entries today"
#, python-brace-format
msgid "number of days with an entry since {datetime}"
msgstr "今日條目數數量"
msgstr "自 {datetime}以來條目的天數"
#: pretix/base/services/checkin.py:321
#, fuzzy, python-brace-format
@@ -13807,10 +13801,8 @@ msgstr ""
"的所有部分VIP區除外。"
#: pretix/control/forms/item.py:664
#, fuzzy
#| msgid "The ordered product \"{item}\" is no longer available."
msgid "Show product with info on why its unavailable"
msgstr "訂購的產品“{item}”不再可用"
msgstr "顯示產品,並瞭解為什麼它不可用"
#: pretix/control/forms/item.py:677
msgid ""
@@ -18881,10 +18873,8 @@ msgid "Calculation"
msgstr "取消"
#: pretix/control/templates/pretixcontrol/event/tax_edit.html:64
#, fuzzy
#| msgid "Reason:"
msgid "Reason"
msgstr "理由"
msgstr "理由"
#: pretix/control/templates/pretixcontrol/event/tax_edit.html:137
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:251
@@ -19956,11 +19946,8 @@ msgid ""
msgstr "目前不可用,因為已設定此產品的有限時間範圍"
#: pretix/control/templates/pretixcontrol/items/discounts.html:111
#, fuzzy
#| msgctxt "discount"
#| msgid "Condition"
msgid "Condition:"
msgstr "條件"
msgstr "條件:"
#: pretix/control/templates/pretixcontrol/items/discounts.html:126
msgid "Applies to:"
@@ -22022,10 +22009,8 @@ msgid "Channel type"
msgstr "掃描"
#: pretix/control/templates/pretixcontrol/organizers/channel_delete.html:5
#, fuzzy
#| msgid "Sales channel"
msgid "Delete sales channel:"
msgstr "銷售管道"
msgstr "銷售管道:"
#: pretix/control/templates/pretixcontrol/organizers/channel_delete.html:10
#, fuzzy
@@ -22044,10 +22029,8 @@ msgid ""
msgstr "無法刪除此成員資格,因為它已在訂單中使用。將其結束日期更改為過去。"
#: pretix/control/templates/pretixcontrol/organizers/channel_edit.html:6
#, fuzzy
#| msgid "Sales channel"
msgid "Sales channel:"
msgstr "銷售管道"
msgstr "銷售管道:"
#: pretix/control/templates/pretixcontrol/organizers/channels.html:8
msgid ""
@@ -26454,10 +26437,8 @@ msgid "Login from new source detected"
msgstr "未檢測到訂購號"
#: pretix/helpers/security.py:170
#, fuzzy
#| msgid "Unknown country code."
msgid "Unknown country"
msgstr "未知國家代碼."
msgstr "未知國家"
#: pretix/multidomain/models.py:36
#, fuzzy
@@ -29485,7 +29466,7 @@ msgstr ""
#: pretix/plugins/stripe/payment.py:350 pretix/plugins/stripe/payment.py:1552
msgid "Alipay"
msgstr "Alipay"
msgstr "支付寶"
#: pretix/plugins/stripe/payment.py:358 pretix/plugins/stripe/payment.py:1564
msgid "Bancontact"
@@ -30070,16 +30051,12 @@ msgid "Enter the entity number, reference number, and amount."
msgstr ""
#: pretix/plugins/stripe/templates/pretixplugins/stripe/pending.html:25
#, fuzzy
#| msgid "Invoice number"
msgid "Entity number:"
msgstr "發票編號"
msgstr "公司編號"
#: pretix/plugins/stripe/templates/pretixplugins/stripe/pending.html:26
#, fuzzy
#| msgid "Reference code"
msgid "Reference number:"
msgstr "參考代碼"
msgstr "參考代碼:"
#: pretix/plugins/stripe/templates/pretixplugins/stripe/pending.html:35
msgid ""
@@ -31156,10 +31133,9 @@ msgstr "新價格:"
#: pretix/presale/templates/pretixpresale/event/voucher.html:176
#: pretix/presale/templates/pretixpresale/event/voucher.html:329
#: pretix/presale/templates/pretixpresale/event/voucher.html:331
#, fuzzy, python-format
#| msgid "Modify price for %(item)s"
#, python-format
msgid "Modify price for %(item)s, at least %(price)s"
msgstr "修改%(item)s 的價格"
msgstr "修改%(item)s的價格,至少 %(price)s"
#: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:153
#: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:294
@@ -31263,16 +31239,12 @@ msgid "Enter a voucher code below to buy this product."
msgstr "在下面輸入優惠券代碼以購買此票。"
#: pretix/presale/templates/pretixpresale/event/fragment_availability.html:10
#, fuzzy
#| msgid "Not available"
msgid "Not available yet."
msgstr "無法使用"
msgstr "尚不可用。"
#: pretix/presale/templates/pretixpresale/event/fragment_availability.html:14
#, fuzzy
#| msgid "Not available"
msgid "Not available any more."
msgstr "無法使用"
msgstr "不再可用。"
#: pretix/presale/templates/pretixpresale/event/fragment_availability.html:19
#: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:85
@@ -32615,7 +32587,7 @@ msgid ""
" "
msgstr ""
"\n"
" from %(start_date)s\n"
" %(start_date)s\n"
" "
#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:12
@@ -33132,10 +33104,8 @@ msgid "This feature is only available in test mode."
msgstr "此禮品卡只能在測試模式下使用。"
#: pretix/presale/views/event.py:985
#, fuzzy
#| msgid "This account is disabled."
msgid "Time machine disabled!"
msgstr "此帳戶已禁用"
msgstr "時間機器被禁用"
#: pretix/presale/views/order.py:368 pretix/presale/views/order.py:433
#: pretix/presale/views/order.py:514
@@ -33266,14 +33236,12 @@ msgid ""
msgstr "你不能將自己添加到候補名單中,因為該商品目前有貨。"
#: pretix/presale/views/waiting.py:180
#, fuzzy, python-brace-format
#| msgid ""
#| "We've added you to the waiting list. You will receive an email as soon as "
#| "this product gets available again."
#, python-brace-format
msgid ""
"We've added you to the waiting list. We will send an email to {email} as "
"soon as this product gets available again."
msgstr "我們已將你添加到候補名單一旦該產品再次,您將收到一封電子郵件。"
msgstr "我們已將您列入候補名單。 "
"一旦該產品再次上市,我們將立即向{email}傳送電子郵件。"
#: pretix/presale/views/waiting.py:208
msgid "We could not find you on our waiting list."

View File

@@ -289,7 +289,7 @@ def _render_nup(input_files: List[str], num_pages: int, output_file: BytesIO, op
pass
try:
badges_pdf = PdfReader(input_files.pop())
badges_pdf = PdfReader(input_files.pop(0))
offset = 0
for i, chunk_indices in enumerate(_chunks(range(num_pages), badges_per_page * max_nup_pages)):
chunk = []
@@ -298,7 +298,7 @@ def _render_nup(input_files: List[str], num_pages: int, output_file: BytesIO, op
# file has beforehand
if j - offset >= len(badges_pdf.pages):
offset += len(badges_pdf.pages)
badges_pdf = PdfReader(input_files.pop())
badges_pdf = PdfReader(input_files.pop(0))
chunk.append(badges_pdf.pages[j - offset])
# Reset some internal state from pypdf. This will make it a little slower, but will prevent us from
# running out of memory if we process a really large file.

View File

@@ -37,7 +37,7 @@ class PayPalEnvironment(VendorPayPalEnvironment):
'payer_id': self.merchant_id
},
key=None,
algorithm=None,
algorithm="none",
)
return ""

View File

@@ -743,7 +743,7 @@ class SSOLoginReturnView(RedirectBackMixin, View):
popup_origin,
)
nonce, redirect_to = re.split("[%#§]", request.GET['state'], 1) # Allow § and # for backwards-compatibility for a while
nonce, redirect_to = re.split("[%#§]", request.GET['state'], maxsplit=1) # Allow § and # for backwards-compatibility for a while
if nonce != request.session.get(f'pretix_customerauth_{self.provider.pk}_nonce'):
return self._fail(

View File

@@ -11,7 +11,7 @@
"@babel/core": "^7.26.0",
"@babel/preset-env": "^7.26.0",
"@rollup/plugin-babel": "^6.0.4",
"@rollup/plugin-node-resolve": "^15.3.0",
"@rollup/plugin-node-resolve": "^16.0.0",
"rollup": "^2.79.1",
"rollup-plugin-vue": "^5.0.1",
"vue": "^2.7.16",
@@ -1522,9 +1522,9 @@
}
},
"node_modules/@rollup/plugin-node-resolve": {
"version": "15.3.0",
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.0.tgz",
"integrity": "sha512-9eO5McEICxMzJpDW9OnMYSv4Sta3hmt7VtBFz5zR9273suNOydOyq/FrGeGy+KsTRFm8w0SLVhzig2ILFT63Ag==",
"version": "16.0.0",
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.0.tgz",
"integrity": "sha512-0FPvAeVUT/zdWoO0jnb/V5BlBsUSNfkIOtFHzMO4H9MOklrmQFY6FduVHKucNb/aTFxvnGhj4MNj/T1oNdDfNg==",
"dependencies": {
"@rollup/pluginutils": "^5.0.1",
"@types/resolve": "1.20.2",
@@ -4761,9 +4761,9 @@
}
},
"@rollup/plugin-node-resolve": {
"version": "15.3.0",
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.0.tgz",
"integrity": "sha512-9eO5McEICxMzJpDW9OnMYSv4Sta3hmt7VtBFz5zR9273suNOydOyq/FrGeGy+KsTRFm8w0SLVhzig2ILFT63Ag==",
"version": "16.0.0",
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.0.tgz",
"integrity": "sha512-0FPvAeVUT/zdWoO0jnb/V5BlBsUSNfkIOtFHzMO4H9MOklrmQFY6FduVHKucNb/aTFxvnGhj4MNj/T1oNdDfNg==",
"requires": {
"@rollup/pluginutils": "^5.0.1",
"@types/resolve": "1.20.2",

View File

@@ -7,7 +7,7 @@
"@babel/core": "^7.26.0",
"@babel/preset-env": "^7.26.0",
"@rollup/plugin-babel": "^6.0.4",
"@rollup/plugin-node-resolve": "^15.3.0",
"@rollup/plugin-node-resolve": "^16.0.0",
"vue": "^2.7.16",
"rollup": "^2.79.1",
"rollup-plugin-vue": "^5.0.1",

View File

@@ -169,7 +169,7 @@ pre[lang=is], input[lang=is], textarea[lang=is], div[lang=is] { background-image
pre[lang=it], input[lang=it], textarea[lang=it], div[lang=it] { background-image: url(static('pretixbase/img/flags/it.png')); }
pre[lang=jm], input[lang=jm], textarea[lang=jm], div[lang=jm] { background-image: url(static('pretixbase/img/flags/jm.png')); }
pre[lang=jo], input[lang=jo], textarea[lang=jo], div[lang=jo] { background-image: url(static('pretixbase/img/flags/jo.png')); }
pre[lang=jp], input[lang=jp], textarea[lang=jp], div[lang=jp] { background-image: url(static('pretixbase/img/flags/jp.png')); }
pre[lang=ja], input[lang=ja], textarea[lang=ja], div[lang=ja] { background-image: url(static('pretixbase/img/flags/jp.png')); }
pre[lang=ke], input[lang=ke], textarea[lang=ke], div[lang=ke] { background-image: url(static('pretixbase/img/flags/ke.png')); }
pre[lang=kg], input[lang=kg], textarea[lang=kg], div[lang=kg] { background-image: url(static('pretixbase/img/flags/kg.png')); }
pre[lang=kh], input[lang=kh], textarea[lang=kh], div[lang=kh] { background-image: url(static('pretixbase/img/flags/kh.png')); }

View File

@@ -497,6 +497,51 @@ def test_event_create_with_clone(token_client, organizer, event, meta_prop, urls
assert cloned_event.plugins == ""
@pytest.mark.django_db
@pytest.mark.parametrize("urlstyle", [
'/api/v1/organizers/{}/events/{}/clone/',
'/api/v1/organizers/{}/events/?clone_from={}',
])
def test_event_create_with_clone_migrate_sales_channels(token_client, organizer, event, meta_prop, urlstyle):
with scopes_disabled():
all_channels = list(organizer.sales_channels.values_list("identifier", flat=True))
resp = token_client.post(
urlstyle.format(organizer.slug, event.slug),
{
"name": {
"de": "Demo Konference 2020 Test",
"en": "Demo Conference 2020 Test"
},
"live": False,
"testmode": True,
"currency": "EUR",
"date_from": "2018-12-27T10:00:00Z",
"date_to": "2018-12-28T10:00:00Z",
"date_admission": "2018-12-27T08:00:00Z",
"is_public": False,
"presale_start": None,
"presale_end": None,
"location": None,
"slug": "2030",
"sales_channels": all_channels,
"meta_data": {
"type": "Workshop"
},
"plugins": [
"pretix.plugins.ticketoutputpdf"
],
"timezone": "Europe/Vienna"
},
format='json'
)
assert resp.status_code == 201
with scopes_disabled():
cloned_event = Event.objects.get(organizer=organizer.pk, slug='2030')
assert cloned_event.all_sales_channels
assert not cloned_event.limit_sales_channels.exists()
@pytest.mark.django_db
def test_event_create_with_clone_unknown_source(user, user_client, organizer, event):
with scopes_disabled():

View File

@@ -526,6 +526,7 @@ def test_order_regenerate_secrets(token_client, organizer, event, order):
s = order.secret
with scopes_disabled():
ps = order.positions.first().secret
psw = order.positions.first().web_secret
resp = token_client.post(
'/api/v1/organizers/{}/events/{}/orders/{}/regenerate_secrets/'.format(
organizer.slug, event.slug, order.code
@@ -536,6 +537,7 @@ def test_order_regenerate_secrets(token_client, organizer, event, order):
assert s != order.secret
with scopes_disabled():
assert ps != order.positions.first().secret
assert psw != order.positions.first().web_secret
@pytest.mark.django_db
@@ -543,6 +545,7 @@ def test_position_regenerate_secrets(token_client, organizer, event, order):
with scopes_disabled():
p = order.positions.first()
ps = p.secret
psw = p.web_secret
resp = token_client.post(
'/api/v1/organizers/{}/events/{}/orderpositions/{}/regenerate_secrets/'.format(
organizer.slug, event.slug, p.pk,
@@ -552,6 +555,7 @@ def test_position_regenerate_secrets(token_client, organizer, event, order):
p.refresh_from_db()
with scopes_disabled():
assert ps != p.secret
assert psw != p.web_secret
@pytest.mark.django_db

View File

@@ -1133,6 +1133,49 @@ def test_order_mark_paid_expired_seat_taken(client, env):
assert o.status == Order.STATUS_EXPIRED
@pytest.mark.django_db
def test_order_mark_paid_expired_blocked(client, env):
with scopes_disabled():
o = Order.objects.get(id=env[2].id)
o.expires = now() - timedelta(days=5)
o.status = Order.STATUS_EXPIRED
o.sales_channel = env[0].organizer.sales_channels.get(identifier="bar")
olddate = o.expires
o.save()
seat_a1 = env[0].seats.create(seat_number="A1", product=env[3], seat_guid="A1", blocked=True)
p = o.positions.first()
p.seat = seat_a1
p.save()
q = Quota.objects.create(event=env[0], size=100)
q.items.add(env[3])
client.login(email='dummy@dummy.dummy', password='dummy')
response = client.post('/control/event/dummy/dummy/orders/FOO/transition', {
'status': 'p',
'payment_date': now().date().isoformat(),
'amount': str(o.pending_sum),
'force': 'on'
}, follow=True)
assert b'alert-danger' in response.content
with scopes_disabled():
o = Order.objects.get(id=env[2].id)
assert o.expires.strftime("%Y-%m-%d %H:%M:%S") == olddate.strftime("%Y-%m-%d %H:%M:%S")
assert o.status == Order.STATUS_EXPIRED
env[0].settings.seating_allow_blocked_seats_for_channel = ["bar"]
response = client.post('/control/event/dummy/dummy/orders/FOO/transition', {
'status': 'p',
'payment_date': now().date().isoformat(),
'amount': str(o.pending_sum),
'force': 'on'
}, follow=True)
assert b'alert-success' in response.content
with scopes_disabled():
o = Order.objects.get(id=env[2].id)
assert o.status == Order.STATUS_PAID
@pytest.mark.django_db
def test_order_go_lowercase(client, env):
client.login(email='dummy@dummy.dummy', password='dummy')

View File

@@ -1604,6 +1604,8 @@ class EventLocaleTest(EventTestMixin, SoupTest):
self.event.settings.locales = ['de', 'en']
self.event.settings.locale = 'de'
self.event.settings.timezone = 'UTC'
self.event.date_from = datetime.datetime(2024, 12, 26, 14, 0, tzinfo=datetime.timezone.utc)
self.event.save()
def test_german_by_default(self):
response = self.client.get(
@@ -1619,7 +1621,7 @@ class EventLocaleTest(EventTestMixin, SoupTest):
'/%s/%s/' % (self.orga.slug, self.event.slug)
)
self.assertEqual(response.status_code, 200)
self.assertIn('Fri, Dec. 26th,', response.rendered_content)
self.assertIn('Thu, Dec. 26th,', response.rendered_content)
self.assertIn('14:00', response.rendered_content)
def test_english_region_US(self):
@@ -1629,7 +1631,7 @@ class EventLocaleTest(EventTestMixin, SoupTest):
'/%s/%s/' % (self.orga.slug, self.event.slug)
)
self.assertEqual(response.status_code, 200)
self.assertIn('Fri, Dec. 26th,', response.rendered_content)
self.assertIn('Thu, Dec. 26th,', response.rendered_content)
self.assertIn('2 p.m.', response.rendered_content)
def test_german_region_US(self):
@@ -1639,5 +1641,5 @@ class EventLocaleTest(EventTestMixin, SoupTest):
'/%s/%s/' % (self.orga.slug, self.event.slug)
)
self.assertEqual(response.status_code, 200)
self.assertIn('Fr, 26. Dezember', response.rendered_content)
self.assertIn('Do, 26. Dezember', response.rendered_content)
self.assertIn('14:00', response.rendered_content)