From d97f203d707a6c22dcec1f4e8c17358e47a80f01 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Mon, 2 Jun 2025 12:15:28 +0200 Subject: [PATCH 01/98] [A11y] fix error page focus outline (#5193) --- src/pretix/static/pretixbase/scss/error.scss | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/pretix/static/pretixbase/scss/error.scss b/src/pretix/static/pretixbase/scss/error.scss index a4af8b15d2..ec5218ec78 100644 --- a/src/pretix/static/pretixbase/scss/error.scss +++ b/src/pretix/static/pretixbase/scss/error.scss @@ -10,6 +10,12 @@ body { padding: 50px 0; } +*:focus, .btn:focus { + outline: 2px solid $link-hover-color; + outline-offset: 2px; + box-shadow: none; +} + .big-icon { font-size: 200px; color: $navbar-inverse-bg; From f9c0baf3693d104e184a82f5f9da9d8fcf39770a Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Fri, 30 May 2025 13:40:34 +0200 Subject: [PATCH 02/98] Bump version to 2025.6.0.dev0 --- src/pretix/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pretix/__init__.py b/src/pretix/__init__.py index af6c99d6ba..2866a3b557 100644 --- a/src/pretix/__init__.py +++ b/src/pretix/__init__.py @@ -19,4 +19,4 @@ # You should have received a copy of the GNU Affero General Public License along with this program. If not, see # . # -__version__ = "2025.5.0" +__version__ = "2025.6.0.dev0" From 5866162932bc16a899230486a06d1647c1e7f4c4 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Mon, 2 Jun 2025 15:52:21 +0200 Subject: [PATCH 03/98] [A11y] change organizer page-titles based calendar-view (#5197) * [A11y] change organizer page-titles based calendar-view * add current date to title as in h2 --- .../templates/pretixpresale/organizers/calendar.html | 6 +++++- .../templates/pretixpresale/organizers/calendar_day.html | 6 +++++- .../templates/pretixpresale/organizers/calendar_week.html | 8 ++++++-- src/pretix/presale/views/organizer.py | 1 + 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/pretix/presale/templates/pretixpresale/organizers/calendar.html b/src/pretix/presale/templates/pretixpresale/organizers/calendar.html index 2cb977dbe2..a2b0e4b04f 100644 --- a/src/pretix/presale/templates/pretixpresale/organizers/calendar.html +++ b/src/pretix/presale/templates/pretixpresale/organizers/calendar.html @@ -4,7 +4,11 @@ {% load rich_text %} {% load eventurl %} {% load urlreplace %} -{% block title %}{% trans "Event overview" %}{% endblock %} +{% block title %} + {% blocktrans trimmed with month=date|date:"F Y" %} + Events in {{ month }} + {% endblocktrans %} +{% endblock %} {% block content %} {% if organizer_homepage_text %}
diff --git a/src/pretix/presale/templates/pretixpresale/organizers/calendar_day.html b/src/pretix/presale/templates/pretixpresale/organizers/calendar_day.html index b616cf8338..820f07e3f3 100644 --- a/src/pretix/presale/templates/pretixpresale/organizers/calendar_day.html +++ b/src/pretix/presale/templates/pretixpresale/organizers/calendar_day.html @@ -4,7 +4,11 @@ {% load rich_text %} {% load eventurl %} {% load urlreplace %} -{% block title %}{% trans "Event overview" %}{% endblock %} +{% block title %} + {% blocktrans trimmed with day=date|date:"DATE_FORMAT" %} + Events on {{ day }} + {% endblocktrans %} +{% endblock %} {% block content %} {% if organizer_homepage_text %}
diff --git a/src/pretix/presale/templates/pretixpresale/organizers/calendar_week.html b/src/pretix/presale/templates/pretixpresale/organizers/calendar_week.html index 49bc9fe7c8..b4077d6d04 100644 --- a/src/pretix/presale/templates/pretixpresale/organizers/calendar_week.html +++ b/src/pretix/presale/templates/pretixpresale/organizers/calendar_week.html @@ -4,7 +4,11 @@ {% load rich_text %} {% load eventurl %} {% load urlreplace %} -{% block title %}{% trans "Event overview" %}{% endblock %} +{% block title %} + {% blocktrans trimmed with week=date|date:week_format week_day_from=date|date:short_month_day_format week_day_to=date_to|date:short_month_day_format %} + Events in {{ week }} ({{ week_day_from }} – {{ week_day_to }}) + {% endblocktrans %} +{% endblock %} {% block content %} {% if organizer_homepage_text %}
@@ -18,7 +22,7 @@

- {% blocktrans trimmed with week=date|date:week_format week_day_from=date|date:short_month_day_format week_day_to=date|date:short_month_day_format %} + {% blocktrans trimmed with week=date|date:week_format week_day_from=date|date:short_month_day_format week_day_to=date_to|date:short_month_day_format %} Events in {{ week }} ({{ week_day_from }} – {{ week_day_to }}) {% endblocktrans %} diff --git a/src/pretix/presale/views/organizer.py b/src/pretix/presale/views/organizer.py index 480480fda2..6d7c3e4202 100644 --- a/src/pretix/presale/views/organizer.py +++ b/src/pretix/presale/views/organizer.py @@ -811,6 +811,7 @@ class WeekCalendarView(OrganizerViewMixin, EventListMixin, TemplateView): ) + timedelta(days=1) ctx['date'] = week.monday() + ctx['date_to'] = week.sunday() ctx['before'] = before ctx['after'] = after From f0c95c4b03c9fb1bae21f840e6d6c1860c004aaa Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Mon, 2 Jun 2025 15:52:42 +0200 Subject: [PATCH 04/98] [A11y] fix color contrast on hover for .active default-buttons (#5198) --- src/pretix/static/pretixpresale/scss/main.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pretix/static/pretixpresale/scss/main.scss b/src/pretix/static/pretixpresale/scss/main.scss index b047b1827b..97c54c975e 100644 --- a/src/pretix/static/pretixpresale/scss/main.scss +++ b/src/pretix/static/pretixpresale/scss/main.scss @@ -170,6 +170,10 @@ input:focus, .form-control:focus { .btn-checkbox input:focus, .input-item-count-group input:focus, .input-group-price input:focus { outline: none; } +/* bootstrap sets dark background for active elements with hover/focus, we need to match specifity of selector */ +.btn-default:active:hover, .btn-default:active:focus, .btn-default:active.focus, .btn-default.active:hover, .btn-default.active:focus, .btn-default.active.focus, .open > .btn-default.dropdown-toggle:hover, .open > .btn-default.dropdown-toggle:focus, .open > .btn-default.dropdown-toggle.focus { + background-color: inherit; +} /* border-radius on these containers is needed for correctly rounded focus-outlines */ .input-item-count-group, .input-group-price { border-radius: var(--pretix-border-radius-base); From 0ee451560a16221a5f4da6abb73d2253f0d0adc9 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Mon, 2 Jun 2025 15:53:11 +0200 Subject: [PATCH 05/98] [A11y] fix organizer event view navigation missing aria-current (#5196) * [A11y] fix organizer event view navigation * Update src/pretix/presale/templates/pretixpresale/fragment_calendar_nav.html Co-authored-by: Richard Schreiber --------- Co-authored-by: Raphael Michel --- .../pretixpresale/fragment_calendar_nav.html | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/pretix/presale/templates/pretixpresale/fragment_calendar_nav.html b/src/pretix/presale/templates/pretixpresale/fragment_calendar_nav.html index 557bd458a9..749c7c694a 100644 --- a/src/pretix/presale/templates/pretixpresale/fragment_calendar_nav.html +++ b/src/pretix/presale/templates/pretixpresale/fragment_calendar_nav.html @@ -2,22 +2,21 @@ {% load eventurl %} {% load urlreplace %} -
- + From 3a48279b224a9f201d7a2d279e9fee14a81fc31c Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Mon, 2 Jun 2025 15:53:35 +0200 Subject: [PATCH 06/98] [A11y] add group labelling to single input name-widget (#5195) --- src/pretix/base/forms/questions.py | 3 +-- src/pretix/presale/forms/renderers.py | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/pretix/base/forms/questions.py b/src/pretix/base/forms/questions.py index 5064dd5a34..bc3ad9d806 100644 --- a/src/pretix/base/forms/questions.py +++ b/src/pretix/base/forms/questions.py @@ -184,8 +184,7 @@ class NamePartsWidget(forms.MultiWidget): these_attrs.pop('data-no-required-attr', None) these_attrs['autocomplete'] = (self.attrs.get('autocomplete', '') + ' ' + self.autofill_map.get(self.scheme['fields'][i][0], 'off')).strip() these_attrs['data-size'] = self.scheme['fields'][i][2] - if len(self.widgets) > 1: - these_attrs['aria-label'] = self.scheme['fields'][i][1] + these_attrs['aria-label'] = self.scheme['fields'][i][1] else: these_attrs = final_attrs output.append(widget.render(name + '_%s' % i, widget_value, these_attrs, renderer=renderer)) diff --git a/src/pretix/presale/forms/renderers.py b/src/pretix/presale/forms/renderers.py index 8106fc63bd..ae36b29b03 100644 --- a/src/pretix/presale/forms/renderers.py +++ b/src/pretix/presale/forms/renderers.py @@ -79,7 +79,7 @@ class CheckoutFieldRenderer(FieldRenderer): def __init__(self, *args, **kwargs): kwargs['layout'] = 'horizontal' super().__init__(*args, **kwargs) - self.is_group_widget = isinstance(self.widget, (CheckboxSelectMultiple, RadioSelect, )) or (self.is_multi_widget and len(self.widget.widgets) > 1) + self.is_group_widget = isinstance(self.widget, (CheckboxSelectMultiple, RadioSelect, )) or self.is_multi_widget def get_form_group_class(self): form_group_class = self.form_group_class From c271c6dea8b4773ec18f81b85bc863677339f7f9 Mon Sep 17 00:00:00 2001 From: Hijiri Umemoto Date: Mon, 2 Jun 2025 02:53:28 +0200 Subject: [PATCH 07/98] Translations: Update Japanese Currently translated at 99.3% (5862 of 5900 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ja/ powered by weblate --- src/pretix/locale/ja/LC_MESSAGES/django.po | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/pretix/locale/ja/LC_MESSAGES/django.po b/src/pretix/locale/ja/LC_MESSAGES/django.po index 8431d28b08..a1458f60da 100644 --- a/src/pretix/locale/ja/LC_MESSAGES/django.po +++ b/src/pretix/locale/ja/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-30 10:35+0000\n" -"PO-Revision-Date: 2025-05-27 23:00+0000\n" -"Last-Translator: Yasunobu YesNo Kawaguchi \n" +"PO-Revision-Date: 2025-06-02 09:00+0000\n" +"Last-Translator: Hijiri Umemoto \n" "Language-Team: Japanese \n" "Language: ja\n" @@ -32540,10 +32540,8 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:509 #: pretix/presale/templates/pretixpresale/fragment_modals.html:48 -#, fuzzy -#| msgid "Event description" msgid "Renew reservation" -msgstr "イベントの説明" +msgstr "予約を更新" #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:514 msgid "Overview of your ordered products." From 3180bd8a6eaa5f95e0adb1fe19518479f89741fa Mon Sep 17 00:00:00 2001 From: Hijiri Umemoto Date: Mon, 2 Jun 2025 02:54:14 +0200 Subject: [PATCH 08/98] Translations: Update Japanese Currently translated at 96.4% (243 of 252 strings) Translation: pretix/pretix (JavaScript parts) Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/ja/ powered by weblate --- src/pretix/locale/ja/LC_MESSAGES/djangojs.po | 27 ++++++++------------ 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/src/pretix/locale/ja/LC_MESSAGES/djangojs.po b/src/pretix/locale/ja/LC_MESSAGES/djangojs.po index e1edfcdb8e..414c590052 100644 --- a/src/pretix/locale/ja/LC_MESSAGES/djangojs.po +++ b/src/pretix/locale/ja/LC_MESSAGES/djangojs.po @@ -8,10 +8,10 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-30 10:36+0000\n" -"PO-Revision-Date: 2025-05-12 13:00+0000\n" +"PO-Revision-Date: 2025-06-02 09:00+0000\n" "Last-Translator: Hijiri Umemoto \n" -"Language-Team: Japanese \n" +"Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -727,34 +727,27 @@ msgid_plural "The items in your cart are reserved for you for {num} minutes." msgstr[0] "カート内の商品の予約は {num} 分以内に完了します。" #: pretix/static/pretixpresale/js/ui/cart.js:86 -#, fuzzy -#| msgid "Cart expired" msgid "Your cart has expired." -msgstr "カートの有効期限が切れています" +msgstr "カートの保存期限が切れています。" #: pretix/static/pretixpresale/js/ui/cart.js:89 -#, fuzzy -#| msgid "" -#| "The items in your cart are no longer reserved for you. You can still " -#| "complete your order as long as they’re available." msgid "" "The items in your cart are no longer reserved for you. You can still " "complete your order as long as they're available." -msgstr "" -"カートに入っている商品は現在売り切れです。在庫があれば、このまま注文を完了す" -"ることができます。" +msgstr "カートに入っている商品はお取り置きできません。在庫があれば、このまま注文を進" +"めることができます。" #: pretix/static/pretixpresale/js/ui/cart.js:90 msgid "Do you want to renew the reservation period?" -msgstr "" +msgstr "予約の期間を更新しますか?" #: pretix/static/pretixpresale/js/ui/cart.js:93 msgid "Renew reservation" -msgstr "" +msgstr "予約を更新" #: pretix/static/pretixpresale/js/ui/main.js:194 msgid "The organizer keeps %(currency)s %(amount)s" -msgstr "主催者には%(currency)s %(amount)sが与えられます" +msgstr "主催者は%(currency)s %(amount)sを留保します" #: pretix/static/pretixpresale/js/ui/main.js:202 msgid "You get %(currency)s %(amount)s back" @@ -762,7 +755,7 @@ msgstr "%(currency)s %(amount)s が払い戻されます" #: pretix/static/pretixpresale/js/ui/main.js:218 msgid "Please enter the amount the organizer can keep." -msgstr "イベント開催者が受け取る料金を入力してください。" +msgstr "主催者が留保する料金を入力してください。" #: pretix/static/pretixpresale/js/ui/main.js:558 msgid "Your local time:" From 54e109251cc48271882ace53900638dddf9a2d02 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 17:48:00 +0200 Subject: [PATCH 09/98] Bump @babel/core from 7.27.1 to 7.27.4 in /src/pretix/static/npm_dir (#5191) Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.27.1 to 7.27.4. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.27.4/packages/babel-core) --- updated-dependencies: - dependency-name: "@babel/core" dependency-version: 7.27.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- src/pretix/static/npm_dir/package-lock.json | 202 ++++++++++---------- src/pretix/static/npm_dir/package.json | 2 +- 2 files changed, 102 insertions(+), 102 deletions(-) diff --git a/src/pretix/static/npm_dir/package-lock.json b/src/pretix/static/npm_dir/package-lock.json index 2437a397bd..8d2b78980a 100644 --- a/src/pretix/static/npm_dir/package-lock.json +++ b/src/pretix/static/npm_dir/package-lock.json @@ -8,7 +8,7 @@ "name": "pretix", "version": "0.0.0", "dependencies": { - "@babel/core": "^7.27.1", + "@babel/core": "^7.27.4", "@babel/preset-env": "^7.27.1", "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-node-resolve": "^16.0.1", @@ -45,30 +45,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.1.tgz", - "integrity": "sha512-Q+E+rd/yBzNQhXkG+zQnF58e4zoZfBedaxwzPmicKsiK3nt8iJYrSrDbjwFFDGC4f+rPafqRaPH6TsDoSvMf7A==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.3.tgz", + "integrity": "sha512-V42wFfx1ymFte+ecf6iXghnnP8kWTO+ZLXIyZq+1LAXHHvTZdVxicn4yiVYdYMGaCO3tmqub11AorKkv+iodqw==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.1.tgz", - "integrity": "sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==", + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz", + "integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==", "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.1", - "@babel/helper-compilation-targets": "^7.27.1", - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helpers": "^7.27.1", - "@babel/parser": "^7.27.1", - "@babel/template": "^7.27.1", - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1", + "@babel/generator": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.4", + "@babel/parser": "^7.27.4", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.27.4", + "@babel/types": "^7.27.3", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -103,13 +103,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.1.tgz", - "integrity": "sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.3.tgz", + "integrity": "sha512-xnlJYj5zepml8NXtjkG0WquFUv8RskFqyFcVgTBp5k+NaA/8uw/K+OSVf8AMGw5e9HKP2ETd5xpK5MLZQD6b4Q==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.27.1", - "@babel/types": "^7.27.1", + "@babel/parser": "^7.27.3", + "@babel/types": "^7.27.3", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -144,12 +144,12 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.1.tgz", - "integrity": "sha512-2YaDd/Rd9E598B5+WIc8wJPmWETiiJXFYVE60oX8FDohv7rAUU3CQj+A1MgeEmcsk2+dQuEjIe/GDvig0SqL4g==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.27.1", + "@babel/compat-data": "^7.27.2", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", @@ -278,14 +278,14 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz", - "integrity": "sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/traverse": "^7.27.3" }, "engines": { "node": ">=6.9.0" @@ -404,25 +404,25 @@ } }, "node_modules/@babel/helpers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.1.tgz", - "integrity": "sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==", + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.4.tgz", + "integrity": "sha512-Y+bO6U+I7ZKaM5G5rDUZiYfUvQPUibYmAFe7EnKdnKBbVXDZxvp+MWOH5gYciY0EPk4EScsuFMQBbEfpdRKSCQ==", "license": "MIT", "dependencies": { - "@babel/template": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.3" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.1.tgz", - "integrity": "sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ==", + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.4.tgz", + "integrity": "sha512-BRmLHGwpUqLFR2jzx9orBuX/ABDkj2jLKOXrHDTN2aOKL+jFDDKaRNo9nyYsIl9h/UE/7lMKdDjKQQyxKKDZ7g==", "license": "MIT", "dependencies": { - "@babel/types": "^7.27.1" + "@babel/types": "^7.27.3" }, "bin": { "parser": "bin/babel-parser.js" @@ -1457,13 +1457,13 @@ } }, "node_modules/@babel/template": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.1.tgz", - "integrity": "sha512-Fyo3ghWMqkHHpHQCoBs2VnYjR4iWFFjguTDEqA5WgZDOrFesVjMhMM2FSqTKSoUSDO1VQtavj8NFpdRBEvJTtg==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.1", + "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" }, "engines": { @@ -1471,16 +1471,16 @@ } }, "node_modules/@babel/traverse": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.1.tgz", - "integrity": "sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==", + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.4.tgz", + "integrity": "sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.1", - "@babel/parser": "^7.27.1", - "@babel/template": "^7.27.1", - "@babel/types": "^7.27.1", + "@babel/generator": "^7.27.3", + "@babel/parser": "^7.27.4", + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.3", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1489,9 +1489,9 @@ } }, "node_modules/@babel/types": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz", - "integrity": "sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.3.tgz", + "integrity": "sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", @@ -3838,25 +3838,25 @@ } }, "@babel/compat-data": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.1.tgz", - "integrity": "sha512-Q+E+rd/yBzNQhXkG+zQnF58e4zoZfBedaxwzPmicKsiK3nt8iJYrSrDbjwFFDGC4f+rPafqRaPH6TsDoSvMf7A==" + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.3.tgz", + "integrity": "sha512-V42wFfx1ymFte+ecf6iXghnnP8kWTO+ZLXIyZq+1LAXHHvTZdVxicn4yiVYdYMGaCO3tmqub11AorKkv+iodqw==" }, "@babel/core": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.1.tgz", - "integrity": "sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==", + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz", + "integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==", "requires": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.1", - "@babel/helper-compilation-targets": "^7.27.1", - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helpers": "^7.27.1", - "@babel/parser": "^7.27.1", - "@babel/template": "^7.27.1", - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1", + "@babel/generator": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.4", + "@babel/parser": "^7.27.4", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.27.4", + "@babel/types": "^7.27.3", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -3877,12 +3877,12 @@ } }, "@babel/generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.1.tgz", - "integrity": "sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.3.tgz", + "integrity": "sha512-xnlJYj5zepml8NXtjkG0WquFUv8RskFqyFcVgTBp5k+NaA/8uw/K+OSVf8AMGw5e9HKP2ETd5xpK5MLZQD6b4Q==", "requires": { - "@babel/parser": "^7.27.1", - "@babel/types": "^7.27.1", + "@babel/parser": "^7.27.3", + "@babel/types": "^7.27.3", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -3909,11 +3909,11 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.1.tgz", - "integrity": "sha512-2YaDd/Rd9E598B5+WIc8wJPmWETiiJXFYVE60oX8FDohv7rAUU3CQj+A1MgeEmcsk2+dQuEjIe/GDvig0SqL4g==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", "requires": { - "@babel/compat-data": "^7.27.1", + "@babel/compat-data": "^7.27.2", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", @@ -4009,13 +4009,13 @@ } }, "@babel/helper-module-transforms": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz", - "integrity": "sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", "requires": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/traverse": "^7.27.3" } }, "@babel/helper-optimise-call-expression": { @@ -4086,20 +4086,20 @@ } }, "@babel/helpers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.1.tgz", - "integrity": "sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==", + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.4.tgz", + "integrity": "sha512-Y+bO6U+I7ZKaM5G5rDUZiYfUvQPUibYmAFe7EnKdnKBbVXDZxvp+MWOH5gYciY0EPk4EScsuFMQBbEfpdRKSCQ==", "requires": { - "@babel/template": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.3" } }, "@babel/parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.1.tgz", - "integrity": "sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ==", + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.4.tgz", + "integrity": "sha512-BRmLHGwpUqLFR2jzx9orBuX/ABDkj2jLKOXrHDTN2aOKL+jFDDKaRNo9nyYsIl9h/UE/7lMKdDjKQQyxKKDZ7g==", "requires": { - "@babel/types": "^7.27.1" + "@babel/types": "^7.27.3" } }, "@babel/plugin-bugfix-firefox-class-in-computed-class-key": { @@ -4707,33 +4707,33 @@ } }, "@babel/template": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.1.tgz", - "integrity": "sha512-Fyo3ghWMqkHHpHQCoBs2VnYjR4iWFFjguTDEqA5WgZDOrFesVjMhMM2FSqTKSoUSDO1VQtavj8NFpdRBEvJTtg==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "requires": { "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.1", + "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" } }, "@babel/traverse": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.1.tgz", - "integrity": "sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==", + "version": "7.27.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.4.tgz", + "integrity": "sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==", "requires": { "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.1", - "@babel/parser": "^7.27.1", - "@babel/template": "^7.27.1", - "@babel/types": "^7.27.1", + "@babel/generator": "^7.27.3", + "@babel/parser": "^7.27.4", + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.3", "debug": "^4.3.1", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz", - "integrity": "sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.3.tgz", + "integrity": "sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==", "requires": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" diff --git a/src/pretix/static/npm_dir/package.json b/src/pretix/static/npm_dir/package.json index 7c1a76e138..45bb99dfa2 100644 --- a/src/pretix/static/npm_dir/package.json +++ b/src/pretix/static/npm_dir/package.json @@ -4,7 +4,7 @@ "private": true, "scripts": {}, "dependencies": { - "@babel/core": "^7.27.1", + "@babel/core": "^7.27.4", "@babel/preset-env": "^7.27.1", "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-node-resolve": "^16.0.1", From 75215b64e176d8679c6b22374fc5fd443309dafa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 17:48:17 +0200 Subject: [PATCH 10/98] Update aiohttp requirement from ==3.11.* to ==3.12.* (#5187) --- updated-dependencies: - dependency-name: aiohttp dependency-version: 3.12.4 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index c90d6a4859..148cfde284 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -107,7 +107,7 @@ dependencies = [ [project.optional-dependencies] memcached = ["pylibmc"] dev = [ - "aiohttp==3.11.*", + "aiohttp==3.12.*", "coverage", "coveralls", "fakeredis==2.26.*", From ac2f2e073eed512f34bd4387f73f67af0c35a151 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 17:48:31 +0200 Subject: [PATCH 11/98] Update pytest-xdist requirement from ==3.6.* to ==3.7.* (#5186) Updates the requirements on [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) to permit the latest version. - [Release notes](https://github.com/pytest-dev/pytest-xdist/releases) - [Changelog](https://github.com/pytest-dev/pytest-xdist/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-xdist/compare/v3.6.0...v3.7.0) --- updated-dependencies: - dependency-name: pytest-xdist dependency-version: 3.7.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 148cfde284..cf0a4bca00 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -122,7 +122,7 @@ dev = [ "pytest-django==4.*", "pytest-mock==3.14.*", "pytest-sugar", - "pytest-xdist==3.6.*", + "pytest-xdist==3.7.*", "pytest==8.3.*", "responses", ] From 36c0acc57456710f4f57045a46f6327d1028e17f Mon Sep 17 00:00:00 2001 From: Phin Wolkwitz Date: Mon, 2 Jun 2025 18:41:47 +0200 Subject: [PATCH 12/98] Fix unavailable input options (Z#23194875) (#5178) * Fix unavailable input options * Fix it also for items with variations * Fix it also for items with variations --- .../templates/pretixpresale/event/fragment_addon_choice.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html b/src/pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html index e84f3c38ef..fd9c11b612 100644 --- a/src/pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html +++ b/src/pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html @@ -186,7 +186,7 @@ {% endif %} {% endif %}
- {% if var.cached_availability.0 == 100 or var.initial %} + {% if not item.current_unavailability_reason and not var.current_unavailability_reason and var.cached_availability.0 == 100 or var.initial %}
{% if c.max_count == 1 or not c.multi_allowed %}
- {% if item.cached_availability.0 == 100 or item.initial %} + {% if not item.current_unavailability_reason and item.cached_availability.0 == 100 or item.initial %}
{% if c.max_count == 1 or not c.multi_allowed %}

@@ -89,6 +82,17 @@ {% if event.settings.attendee_data_explanation_text and pos.item.ask_attendee_data %} {{ event.settings.attendee_data_explanation_text|rich_text }} {% endif %} + {% if forloop.counter > 1 and event.settings.checkout_show_copy_answers_button %} +
+
+ +
+
+ {% endif %} {% if pos.seat %}
{% endif %} +
+ {{ pos.item.name }}{% if pos.variation %} – {{ pos.variation }}{% endif %} {% for form in forms %} {% if form.pos.item != pos.item %} +
+
{# Add-Ons #} - {% if form.show_copy_answers_to_addon_button and event.settings.checkout_show_copy_answers_button %} - - - - {% endif %} + {{ form.pos.item.name }}{% if form.pos.variation %} – {{ form.pos.variation.value }}{% endif %} {% endif %} @@ -157,8 +160,20 @@
{% endif %} + {% if form.show_copy_answers_to_addon_button and event.settings.checkout_show_copy_answers_button %} +
+
+ +
+
+ {% endif %} + {% bootstrap_form form layout="checkout" %}
+ {% endfor %}
From d255c40a0b74b0b11efd1e80022abb3267db57b8 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 3 Jun 2025 11:08:17 +0200 Subject: [PATCH 15/98] [A11y] Do not set autocomplete section if autocomplete is off (#5194) --- src/pretix/base/forms/questions.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/pretix/base/forms/questions.py b/src/pretix/base/forms/questions.py index bc3ad9d806..d1ba1ec12e 100644 --- a/src/pretix/base/forms/questions.py +++ b/src/pretix/base/forms/questions.py @@ -182,7 +182,13 @@ class NamePartsWidget(forms.MultiWidget): if self.field.required: these_attrs['required'] = 'required' these_attrs.pop('data-no-required-attr', None) - these_attrs['autocomplete'] = (self.attrs.get('autocomplete', '') + ' ' + self.autofill_map.get(self.scheme['fields'][i][0], 'off')).strip() + + autofill_section = self.attrs.get('autocomplete', '') + autofill_by_name_scheme = self.autofill_map.get(self.scheme['fields'][i][0], 'off') + if autofill_by_name_scheme == "off" or autofill_section.strip() == "off": + these_attrs['autocomplete'] = "off" + else: + these_attrs['autocomplete'] = (autofill_section + ' ' + autofill_by_name_scheme).strip() these_attrs['data-size'] = self.scheme['fields'][i][2] these_attrs['aria-label'] = self.scheme['fields'][i][1] else: @@ -987,7 +993,11 @@ class BaseQuestionsForm(forms.Form): for k, v in self.fields.items(): if v.widget.attrs.get('autocomplete') or k == 'attendee_name_parts': - v.widget.attrs['autocomplete'] = 'section-{} '.format(self.prefix) + v.widget.attrs.get('autocomplete', '') + autocomplete = v.widget.attrs.get('autocomplete', '') + if autocomplete.strip() == "off": + v.widget.attrs['autocomplete'] = 'off' + else: + v.widget.attrs['autocomplete'] = 'section-{} '.format(self.prefix) + autocomplete def clean(self): from pretix.base.addressvalidation import \ @@ -1201,7 +1211,11 @@ class BaseInvoiceAddressForm(forms.ModelForm): for k, v in self.fields.items(): if v.widget.attrs.get('autocomplete') or k == 'name_parts': - v.widget.attrs['autocomplete'] = 'section-invoice billing ' + v.widget.attrs.get('autocomplete', '') + autocomplete = v.widget.attrs.get('autocomplete', '') + if autocomplete.strip() == "off": + v.widget.attrs['autocomplete'] = 'off' + else: + v.widget.attrs['autocomplete'] = 'section-invoice billing ' + autocomplete def clean(self): from pretix.base.addressvalidation import \ From 6aa3747403dd55f0cdf170b74f143545052ac540 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Tue, 3 Jun 2025 21:49:59 +0200 Subject: [PATCH 16/98] Fix sneak-peek missing inert-attribute (#5207) --- src/pretix/static/pretixbase/js/details.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/pretix/static/pretixbase/js/details.js b/src/pretix/static/pretixbase/js/details.js index fdcd8eebd0..a6fc54ebba 100644 --- a/src/pretix/static/pretixbase/js/details.js +++ b/src/pretix/static/pretixbase/js/details.js @@ -12,10 +12,12 @@ setup_collapsible_details = function (el) { return; } content.setAttribute('aria-hidden', 'true'); + content.setAttribute('inert', true); button.setAttribute('aria-expanded', 'false'); button.addEventListener('click', function (e) { button.setAttribute('aria-expanded', 'true'); content.setAttribute('aria-hidden', 'false'); + content.removeAttribute('inert'); content.addEventListener('transitionend', function() { content.classList.remove('sneak-peek-content'); @@ -47,6 +49,7 @@ setup_collapsible_details = function (el) { container.removeEventListener("toggle", removeSneekPeakWhenClosed); trigger.remove(); content.removeAttribute('aria-hidden'); + content.removeAttribute('inert'); content.classList.remove('sneak-peek-content'); } } From 87fb3d2df8cd4857729b8d394dfc8ea9c95a3fe0 Mon Sep 17 00:00:00 2001 From: luelista Date: Thu, 5 Jun 2025 12:59:26 +0200 Subject: [PATCH 17/98] Event timeline: add direct links, payment provider availability (Z#23195903) (#5209) * link directly to tabs/fields * add missing payment provider availability_start dates --- src/pretix/base/timeline.py | 38 +++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/src/pretix/base/timeline.py b/src/pretix/base/timeline.py index a056ead5f8..b44076627b 100644 --- a/src/pretix/base/timeline.py +++ b/src/pretix/base/timeline.py @@ -58,7 +58,7 @@ def timeline_for_event(event, subevent=None): event=event, subevent=subevent, datetime=ev.date_from, description=pgettext_lazy('timeline', 'Your event starts'), - edit_url=ev_edit_url + edit_url=ev_edit_url + '#id_date_from_0' )) if ev.date_to: @@ -66,7 +66,7 @@ def timeline_for_event(event, subevent=None): event=event, subevent=subevent, datetime=ev.date_to, description=pgettext_lazy('timeline', 'Your event ends'), - edit_url=ev_edit_url + edit_url=ev_edit_url + '#id_date_to_0' )) if ev.date_admission: @@ -74,7 +74,7 @@ def timeline_for_event(event, subevent=None): event=event, subevent=subevent, datetime=ev.date_admission, description=pgettext_lazy('timeline', 'Admissions for your event start'), - edit_url=ev_edit_url + edit_url=ev_edit_url + '#id_date_admission_0' )) if ev.presale_start: @@ -82,7 +82,7 @@ def timeline_for_event(event, subevent=None): event=event, subevent=subevent, datetime=ev.presale_start, description=pgettext_lazy('timeline', 'Start of ticket sales'), - edit_url=ev_edit_url + edit_url=ev_edit_url + '#id_presale_start_0' )) tl.append(TimelineEvent( @@ -95,7 +95,7 @@ def timeline_for_event(event, subevent=None): pgettext_lazy('timeline', 'End of ticket sales'), pgettext_lazy('timeline', 'automatically because the event is over and no end of presale has been configured') if not ev.presale_end else "" ), - edit_url=ev_edit_url + edit_url=ev_edit_url + '#id_presale_end_0' )) rd = event.settings.get('last_order_modification_date', as_type=RelativeDateWrapper) @@ -104,7 +104,7 @@ def timeline_for_event(event, subevent=None): event=event, subevent=subevent, datetime=rd.datetime(ev), description=pgettext_lazy('timeline', 'Customers can no longer modify their order information'), - edit_url=ev_edit_url + edit_url=ev_edit_url + '#id_settings-last_order_modification_date_0_0' )) rd = event.settings.get('payment_term_last', as_type=RelativeDateWrapper) @@ -281,7 +281,7 @@ def timeline_for_event(event, subevent=None): 'event': event.slug, 'organizer': event.organizer.slug, 'item': p.pk, - }) + }) + '#id_available_from_0' )) if p.available_until: tl.append(TimelineEvent( @@ -292,7 +292,7 @@ def timeline_for_event(event, subevent=None): 'event': event.slug, 'organizer': event.organizer.slug, 'item': p.pk, - }) + }) + '#id_available_until_0' )) for v in ItemVariation.objects.filter( @@ -311,7 +311,7 @@ def timeline_for_event(event, subevent=None): 'event': event.slug, 'organizer': event.organizer.slug, 'item': v.item.pk, - }) + }) + '#tab-0-3-open' )) if v.available_until: tl.append(TimelineEvent( @@ -325,7 +325,7 @@ def timeline_for_event(event, subevent=None): 'event': event.slug, 'organizer': event.organizer.slug, 'item': v.item.pk, - }) + }) + '#tab-0-3-open' )) pprovs = event.get_payment_providers() @@ -339,6 +339,24 @@ def timeline_for_event(event, subevent=None): continue except: pass + availability_start = pprov.settings.get('_availability_start', as_type=RelativeDateWrapper) + if availability_start: + d = make_aware(datetime.combine( + availability_start.date(ev), + time(hour=0, minute=0, second=0) + ), event.timezone) + tl.append(TimelineEvent( + event=event, subevent=subevent, + datetime=d, + description=pgettext_lazy('timeline', 'Payment provider "{name}" becomes active').format( + name=str(pprov.verbose_name) + ), + edit_url=reverse('control:event.settings.payment.provider', kwargs={ + 'event': event.slug, + 'organizer': event.organizer.slug, + 'provider': pprov.identifier, + }) + )) availability_date = pprov.settings.get('_availability_date', as_type=RelativeDateWrapper) if availability_date: d = make_aware(datetime.combine( From c53fc8df4eb6bf101fa21674957b9ec92d3426d3 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 10 Jun 2025 12:20:41 +0200 Subject: [PATCH 18/98] Developer docs: Remove some ancient history (#5224) --- doc/api/resources/carts.rst | 5 - doc/api/resources/checkin.rst | 8 -- doc/api/resources/checkinlists.rst | 4 - doc/api/resources/customers.rst | 6 -- doc/api/resources/events.rst | 23 ----- doc/api/resources/giftcards.rst | 5 - doc/api/resources/invoices.rst | 12 --- doc/api/resources/item_variations.rst | 4 - doc/api/resources/items.rst | 22 ----- doc/api/resources/orders.rst | 53 ----------- doc/api/resources/organizers.rst | 4 - doc/api/resources/quotas.rst | 5 - doc/api/resources/shredders.rst | 4 - doc/api/resources/subevents.rst | 13 --- doc/api/resources/taxrules.rst | 4 - doc/api/resources/teams.rst | 4 - doc/development/api/customview.rst | 7 -- doc/development/api/index.rst | 1 - doc/development/api/payment_2.0.rst | 129 -------------------------- src/pretix/base/payment.py | 5 - 20 files changed, 318 deletions(-) delete mode 100644 doc/development/api/payment_2.0.rst diff --git a/doc/api/resources/carts.rst b/doc/api/resources/carts.rst index cf270edca8..74afdc4565 100644 --- a/doc/api/resources/carts.rst +++ b/doc/api/resources/carts.rst @@ -48,11 +48,6 @@ seat objects The assigned se └ seat_guid string Identifier of the seat within the seating plan ===================================== ========================== ======================================================= -.. versionchanged:: 4.14 - - This ``is_bundled`` attribute has been added and the cart creation endpoints have been updated. - - Cart position endpoints ----------------------- diff --git a/doc/api/resources/checkin.rst b/doc/api/resources/checkin.rst index 7f6861da8c..16e36424d1 100644 --- a/doc/api/resources/checkin.rst +++ b/doc/api/resources/checkin.rst @@ -9,14 +9,6 @@ This page describes special APIs built for ticket scanning apps. For managing ch please also see :ref:`rest-checkinlists`. The check-in list API also contains endpoints to obtain statistics or log failed scans. -.. versionchanged:: 4.12 - - The endpoints listed on this page have been added. - -.. versionchanged:: 4.18 - - The ``source_type`` parameter has been added. - .. _`rest-checkin-redeem`: Checking a ticket in diff --git a/doc/api/resources/checkinlists.rst b/doc/api/resources/checkinlists.rst index 0db56047d6..6090772b58 100644 --- a/doc/api/resources/checkinlists.rst +++ b/doc/api/resources/checkinlists.rst @@ -40,10 +40,6 @@ ignore_in_statistics boolean If ``true``, ch consider_tickets_used boolean If ``true`` (default), tickets checked in on this list will be considered "used" by other functionality, i.e. when checking if they can still be canceled. ===================================== ========================== ======================================================= -.. versionchanged:: 4.12 - - The ``addon_match`` attribute has been added. - .. versionchanged:: 2023.9 The ``ignore_in_statistics`` and ``consider_tickets_used`` attributes have been added. diff --git a/doc/api/resources/customers.rst b/doc/api/resources/customers.rst index 06f4ebd168..8431129627 100644 --- a/doc/api/resources/customers.rst +++ b/doc/api/resources/customers.rst @@ -34,12 +34,6 @@ password string Can only be set not be included in any responses. ===================================== ========================== ======================================================= -.. versionadded:: 4.0 - -.. versionchanged:: 4.3 - - Passwords can now be set through the API during customer creation. - .. versionchanged:: 2024.3 The attribute ``phone`` has been added. diff --git a/doc/api/resources/events.rst b/doc/api/resources/events.rst index 1fbe079f57..5064377b6a 100644 --- a/doc/api/resources/events.rst +++ b/doc/api/resources/events.rst @@ -61,25 +61,6 @@ public_url string The public, cus Endpoints --------- -.. versionchanged:: 4.0 - - The ``clone_from`` parameter has been added to the event creation endpoint. - -.. versionchanged:: 4.1 - - The ``with_availability_for`` parameter has been added. - - The ``search`` query parameter has been added to filter events by their slug, name, or location in any language. - -.. versionchanged:: 4.17 - - The ``public_url`` field has been added. - -.. versionchanged:: 5.0 - - The ``date_from_before``, ``date_from_after``, ``date_to_before``, and ``date_to_after`` query parameters have been - added. - .. http:get:: /api/v1/organizers/(organizer)/events/ Returns a list of all events within a given organizer the authenticated user/token has access to. @@ -630,10 +611,6 @@ organizer level. :statuscode 401: Authentication failure :statuscode 403: The requested organizer/event does not exist **or** you have no permission to view this resource. - .. versionchanged:: 4.18 - - The ``readonly`` flag has been added. - .. http:patch:: /api/v1/organizers/(organizer)/events/(event)/settings/ Updates event settings. Note that ``PUT`` is not allowed here, only ``PATCH``. diff --git a/doc/api/resources/giftcards.rst b/doc/api/resources/giftcards.rst index d7ebb62481..1e43611137 100644 --- a/doc/api/resources/giftcards.rst +++ b/doc/api/resources/giftcards.rst @@ -47,11 +47,6 @@ acceptor string Organizer slug this field was added.) ===================================== ========================== ======================================================= -.. versionchanged:: 4.20 - - The ``owner_ticket`` and ``issuer`` attributes of the gift card and the ``info`` and ``acceptor`` attributes of the - gift card transaction resource have been added. - Endpoints --------- diff --git a/doc/api/resources/invoices.rst b/doc/api/resources/invoices.rst index a155405502..8e4aae6441 100644 --- a/doc/api/resources/invoices.rst +++ b/doc/api/resources/invoices.rst @@ -111,18 +111,6 @@ internal_reference string Customer's refe ===================================== ========================== ======================================================= -.. versionchanged:: 4.1 - - The attributes ``fee_type`` and ``fee_internal_type`` have been added. - -.. versionchanged:: 4.1 - - The attribute ``lines.event_location`` has been added. - -.. versionchanged:: 4.6 - - The attribute ``lines.subevent`` has been added. - .. versionchanged:: 2023.8 The ``event`` attribute has been added. The organizer-level endpoint has been added. diff --git a/doc/api/resources/item_variations.rst b/doc/api/resources/item_variations.rst index b687f4c064..83aba7daa2 100644 --- a/doc/api/resources/item_variations.rst +++ b/doc/api/resources/item_variations.rst @@ -64,10 +64,6 @@ hide_without_voucher boolean If ``true``, th meta_data object Values set for event-specific meta data parameters. ===================================== ========================== ======================================================= -.. versionchanged:: 4.16 - - The ``meta_data`` and ``checkin_attention`` attributes have been added. - .. versionchanged:: 2023.10 The ``free_price_suggestion`` attribute has been added. diff --git a/doc/api/resources/items.rst b/doc/api/resources/items.rst index 2214c54ba9..383da02d7d 100644 --- a/doc/api/resources/items.rst +++ b/doc/api/resources/items.rst @@ -211,28 +211,6 @@ bundles list of objects Definition of meta_data object Values set for event-specific meta data parameters. ======================================= ========================== ======================================================= -.. versionchanged:: 4.0 - - The attributes ``require_membership``, ``require_membership_types``, ``grant_membership_type``, ``grant_membership_duration_like_event``, - ``grant_membership_duration_days`` and ``grant_membership_duration_months`` have been added. - -.. versionchanged:: 4.4 - - The attributes ``require_membership_hidden`` attribute has been added. - -.. versionchanged:: 4.16 - - The ``variations[x].meta_data`` and ``variations[x].checkin_attention`` attributes have been added. - The ``personalized`` attribute has been added. - -.. versionchanged:: 4.17 - - The ``validity_*`` attributes have been added. - -.. versionchanged:: 4.18 - - The ``media_policy`` and ``media_type`` attributes have been added. - .. versionchanged:: 2023.10 The ``checkin_text`` and ``variations[x].checkin_text`` attributes have been added. diff --git a/doc/api/resources/orders.rst b/doc/api/resources/orders.rst index df5e00e6d8..52f200d442 100644 --- a/doc/api/resources/orders.rst +++ b/doc/api/resources/orders.rst @@ -114,34 +114,6 @@ plugin_data object Additional data ===================================== ========================== ======================================================= -.. versionchanged:: 4.0 - - The ``customer`` attribute has been added. - -.. versionchanged:: 4.1 - - The ``custom_followup_at`` attribute has been added. - -.. versionchanged:: 4.4 - - The ``item`` and ``variation`` query parameters have been added. - -.. versionchanged:: 4.6 - - The ``subevent`` query parameters has been added. - -.. versionchanged:: 4.8 - - The ``order.fees.id`` attribute has been added. - -.. versionchanged:: 4.15 - - The ``include`` query parameter has been added. - -.. versionchanged:: 4.16 - - The ``valid_if_pending`` attribute has been added. - .. versionchanged:: 2023.8 The ``event`` attribute has been added. The organizer-level endpoint has been added. @@ -260,10 +232,6 @@ pdf_data object Data object req plugin_data object Additional data added by plugins. ===================================== ========================== ======================================================= -.. versionchanged:: 4.16 - - The attributes ``blocked``, ``valid_from`` and ``valid_until`` have been added. - .. versionchanged:: 2024.9 The attribute ``print_logs`` has been added. @@ -756,10 +724,6 @@ Fetching individual orders Order ticket download --------------------- -.. versionchanged:: 4.10 - - The API now supports ticket downloads for pending orders if allowed by the event settings. - .. http:get:: /api/v1/organizers/(organizer)/events/(event)/orders/(code)/download/(output)/ Download tickets for an order, identified by its order code. Depending on the chosen output, the response might @@ -1832,10 +1796,6 @@ Fetching individual positions Order position ticket download ------------------------------ -.. versionchanged:: 4.10 - - The API now supports ticket downloads for pending orders if allowed by the event settings. - .. http:get:: /api/v1/organizers/(organizer)/events/(event)/orderpositions/(id)/download/(output)/ Download tickets for one order position, identified by its internal ID. @@ -1888,15 +1848,6 @@ Order position ticket download Manipulating individual positions --------------------------------- -.. versionchanged:: 4.8 - - The ``PATCH`` method now supports changing items, variations, subevents, seats, prices, and tax rules. - The ``POST`` endpoint to add individual positions has been added. - -.. versionadded:: 4.16 - - The endpoints to manage blocks have been added. - .. versionchanged:: 2024.9 The API now supports logging ticket and badge prints. @@ -2226,10 +2177,6 @@ multiple changes to an order at once within one transaction. This makes it possi attendees in an order without running into conflicts. This interface also offers some possibilities not available otherwise, such as splitting an order or changing fees. -.. versionchanged:: 4.8 - - This endpoint has been added to the system. - .. http:post:: /api/v1/organizers/(organizer)/events/(event)/orders/(code)/change/ Performs a change operation on an order. You can supply the following fields: diff --git a/doc/api/resources/organizers.rst b/doc/api/resources/organizers.rst index e58652e1b8..eb3b28fe4a 100644 --- a/doc/api/resources/organizers.rst +++ b/doc/api/resources/organizers.rst @@ -25,10 +25,6 @@ public_url string The public, cus Endpoints --------- -.. versionchanged:: 4.17 - - The ``public_url`` field has been added. - .. http:get:: /api/v1/organizers/ Returns a list of all organizers the authenticated user/token has access to. diff --git a/doc/api/resources/quotas.rst b/doc/api/resources/quotas.rst index d409751cc5..8856af2d05 100644 --- a/doc/api/resources/quotas.rst +++ b/doc/api/resources/quotas.rst @@ -36,11 +36,6 @@ available_number integer Number of avail slightly out of date. ``null`` means unlimited. ===================================== ========================== ======================================================= -.. versionchanged:: 4.1 - - The ``with_availability`` query parameter has been added. - - Endpoints --------- diff --git a/doc/api/resources/shredders.rst b/doc/api/resources/shredders.rst index 005d117eeb..a4d3a4391e 100644 --- a/doc/api/resources/shredders.rst +++ b/doc/api/resources/shredders.rst @@ -6,10 +6,6 @@ Data shredders pretix and it's plugins include a number of data shredders that allow you to clear personal information from the system. This page shows you how to use these shredders through the API. -.. versionchanged:: 4.12 - - This feature has been added to the API. - .. warning:: Unlike the user interface, the API will not force you to download tax-relevant data before you delete it. diff --git a/doc/api/resources/subevents.rst b/doc/api/resources/subevents.rst index 768ad07f02..0a3f77a193 100644 --- a/doc/api/resources/subevents.rst +++ b/doc/api/resources/subevents.rst @@ -59,15 +59,6 @@ seat_category_mapping object An object mappi last_modified datetime Last modification of this object ===================================== ========================== ======================================================= -.. versionchanged:: 4.15 - - The ``search`` query parameter has been added to filter sub-events by their name or location in any language. - -.. versionchanged:: 5.0 - - The ``date_from_before``, ``date_from_after``, ``date_to_before``, and ``date_to_after`` query parameters have been - added. - .. versionchanged:: 2023.8.0 For the organizer-wide endpoint, the ``search`` query parameter has been modified to filter sub-events by their parent events slug too. @@ -75,10 +66,6 @@ last_modified datetime Last modificati Endpoints --------- -.. versionchanged:: 4.1 - - The ``with_availability_for`` parameter has been added. - .. http:get:: /api/v1/organizers/(organizer)/events/(event)/subevents/ Returns a list of all sub-events of an event. diff --git a/doc/api/resources/taxrules.rst b/doc/api/resources/taxrules.rst index feb68dbcb5..2947015f1b 100644 --- a/doc/api/resources/taxrules.rst +++ b/doc/api/resources/taxrules.rst @@ -40,10 +40,6 @@ custom_rules object Dynamic rules s ===================================== ========================== ======================================================= -.. versionchanged:: 4.6 - - The ``internal_name`` and ``keep_gross_if_rate_changes`` attributes have been added. - .. versionchanged:: 2023.6 The ``custom_rules`` attribute has been added. diff --git a/doc/api/resources/teams.rst b/doc/api/resources/teams.rst index f1aba2a5fa..baff8e493a 100644 --- a/doc/api/resources/teams.rst +++ b/doc/api/resources/teams.rst @@ -39,10 +39,6 @@ can_change_vouchers boolean can_checkin_orders boolean ===================================== ========================== ======================================================= -.. versionchanged:: 4.18 - - The ``can_manage_reusable_media`` permission has been added. - Team member resource -------------------- diff --git a/doc/development/api/customview.rst b/doc/development/api/customview.rst index 8b11f0c5c3..8c18dc9821 100644 --- a/doc/development/api/customview.rst +++ b/doc/development/api/customview.rst @@ -178,13 +178,6 @@ You can then implement a view as you would normally do. It will be automatically * Your plugin is enabled * The locale is set correctly -.. versionchanged:: 1.7 - - The ``event_url()`` wrapper has been added in 1.7 to replace the former ``@event_view`` decorator. The - ``event_url()`` wrapper is optional and using ``url()`` still works, but you will not be able to set the - ``require_live`` setting any more via the decorator. The ``@event_view`` decorator is now deprecated and - does nothing. - REST API viewsets ----------------- diff --git a/doc/development/api/index.rst b/doc/development/api/index.rst index 5ccf0596ad..eeb7ea445b 100644 --- a/doc/development/api/index.rst +++ b/doc/development/api/index.rst @@ -10,7 +10,6 @@ Contents: exporter ticketoutput payment - payment_2.0 email placeholder invoice diff --git a/doc/development/api/payment_2.0.rst b/doc/development/api/payment_2.0.rst deleted file mode 100644 index ab5fcc8820..0000000000 --- a/doc/development/api/payment_2.0.rst +++ /dev/null @@ -1,129 +0,0 @@ -.. highlight:: python - :linenothreshold: 5 - -.. _`payment2.0`: - -Porting a payment provider from pretix 1.x to pretix 2.x -======================================================== - -In pretix 2.x, we changed large parts of the payment provider API. This documentation details the changes we made -and shows you how you can make an existing pretix 1.x payment provider compatible with pretix 2.x - -Conceptual overview -------------------- - -In pretix 1.x, an order was always directly connected to a payment provider for the full life of an order. As long as -an order was unpaid, this could still be changed in some cases, but once an order was paid, no changes to the payment -provider were possible any more. Additionally, the internal state of orders allowed orders only to be fully paid or -not paid at all. This leads to a couple of consequences: - -* Payment-related functions (like "execute payment" or "do a refund") always operated on full orders. - -* Changing the total of an order was basically impossible once an order was paid, since there was no concept of - partial payments or partial refunds. - -* Payment provider plugins needed to take complicated steps to detect cases that require human intervention, like e.g. - - * An order has expired, no quota is left to revive it, but a payment has been received - - * A payment has been received for a canceled order - - * A payment has been received for an order that has already been paid with a different payment method - - * An external payment service notified us of a refund/dispute - - We noticed that we copied and repeated large portions of code in all our official payment provider plugins, just - to deal with some of these cases. - -* Sometimes, there is the need to mark an order as refunded within pretix, without automatically triggering a refund - with an external API. Every payment method needed to implement a user interface for this independently. - -* If a refund was not possible automatically, there was no way user to track which payments actually have been refunded - manually and which are still left to do. - -* When the payment with one payment provider failed and the user changed to a different payment provider, all - information about the first payment was lost from the order object and could only be retrieved from order log data, - which also made it hard to design a data shredder API to get rid of this data. - -In pretix 2.x, we introduced two new models, :py:class:`OrderPayment ` and -:py:class:`OrderRefund `. Each instance of these is connected to an order and -represents one single attempt to pay or refund a specific amount of money. Each one of these has an individual state, -can individually fail or succeed, and carries an amount variable that can differ from the order total. - -This has the following advantages: - -* The system can now detect orders that are over- or underpaid, independent of the payment providers in use. - -* Therefore, we can now allow partial payments, partial refunds, and changing paid orders, and automatically detect - the cases listed above and notify the user. - -Payment providers now interact with those payment and refund objects more than with orders. - -Your to-do list ---------------- - -Payment processing -"""""""""""""""""" - -* The method ``BasePaymentProvider.order_pending_render`` has been removed and replaced by a new - ``BasePaymentProvider.payment_pending_render(request, payment)`` method that is passed an ``OrderPayment`` - object instead of an ``Order``. - -* The method ``BasePaymentProvider.payment_form_render`` now receives a new ``total`` parameter. - -* The method ``BasePaymentProvider.payment_perform`` has been removed and replaced by a new method - ``BasePaymentProvider.execute_payment(request, payment)`` that is passed an ``OrderPayment`` - object instead of an ``Order``. - -* The function ``pretix.base.services.mark_order_paid`` has been removed, instead call ``payment.confirm()`` - on a pending ``OrderPayment`` object. If no further payments are required for this order, this will also - mark the order as paid automatically. Note that ``payment.confirm()`` can still throw a ``QuotaExceededException``, - however it will still mark the payment as complete (not the order!), so you should catch this exception and - inform the user, but not abort the transaction. - -* A new property ``BasePaymentProvider.abort_pending_allowed`` has been introduced. Only if set, the user will - be able to retry a payment or switch the payment method when the order currently has a payment object in - state ``"pending"``. This replaces ``BasePaymentProvider.order_can_retry``, which no longer exists. - -* The methods ``BasePaymentProvider.retry_prepare`` and ``BasePaymentProvider.order_prepare`` have both been - replaced by a new method ``BasePaymentProvider.payment_prepare(request, payment)`` that is passed an ``OrderPayment`` - object instead of an ``Order``. **Keep in mind that this payment object might have an amount property that - differs from the order total, if the order is already partially paid.** - -* The method ``BasePaymentProvider.order_paid_render`` has been removed. - -* The method ``BasePaymentProvider.order_control_render`` has been removed and replaced by a new method - ``BasePaymentProvider.payment_control_render(request, payment)`` that is passed an ``OrderPayment`` - object instead of an ``Order``. - -* There's no need to manually deal with excess payments or duplicate payments anymore, just setting the ``OrderPayment`` - methods to the correct state will do the job. - -Creating refunds -"""""""""""""""" - -* The methods ``BasePaymentProvider.order_control_refund_render`` and ``BasePaymentProvider.order_control_refund_perform`` - have been removed. - -* Two new boolean methods ``BasePaymentProvider.payment_refund_supported(payment)`` and ``BasePaymentProvider.payment_partial_refund_supported(payment)`` - have been introduced. They should be set to return ``True`` if and only if the payment API allows to *automatically* - transfer the money back to the customer. - -* A new method ``BasePaymentProvider.execute_refund(refund)`` has been introduced. This method is called using a - ``OrderRefund`` object in ``"created"`` state and is expected to transfer the money back and confirm success with - calling ``refund.done()``. This will only ever be called if either ``BasePaymentProvider.payment_refund_supported(payment)`` - or ``BasePaymentProvider.payment_partial_refund_supported(payment)`` return ``True``. - -Processing external refunds -""""""""""""""""""""""""""" - -* If e.g. a webhook API notifies you that a payment has been disputed or refunded with the external API, you are - expected to call ``OrderPayment.create_external_refund(self, amount, execution_date, info='{}')`` on this payment. - This will create and return an appropriate ``OrderRefund`` object and send out a notification. However, it will not - mark the order as refunded, but will ask the event organizer for a decision. - -Data shredders -"""""""""""""" - -* The method ``BasePaymentProvider.shred_payment_info`` is no longer passed an order, but instead **either** - an ``OrderPayment`` **or** an ``OrderRefund``. diff --git a/src/pretix/base/payment.py b/src/pretix/base/payment.py index 95f303dc81..b73fecd1a5 100644 --- a/src/pretix/base/payment.py +++ b/src/pretix/base/payment.py @@ -689,11 +689,6 @@ class BasePaymentProvider: the ``_restrict_countries`` and ``_restrict_to_sales_channels`` setting. :param total: The total value without the payment method fee, after taxes. - - .. versionchanged:: 1.17.0 - - The ``total`` parameter has been added. For backwards compatibility, this method is called again - without this parameter if it raises a ``TypeError`` on first try. """ timing = self._is_available_by_time(cart_id=get_or_create_cart_id(request)) pricing = True From ab72abea0a11e215d41ef73cc27d506243cb9fc8 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Tue, 10 Jun 2025 12:54:25 +0200 Subject: [PATCH 19/98] [A11y] add autocomplete to customer forms email input (#5214) --- src/pretix/presale/forms/customer.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pretix/presale/forms/customer.py b/src/pretix/presale/forms/customer.py index 825892beae..9d188dd64a 100644 --- a/src/pretix/presale/forms/customer.py +++ b/src/pretix/presale/forms/customer.py @@ -55,7 +55,7 @@ class AuthenticationForm(forms.Form): required_css_class = 'required' email = forms.EmailField( label=_("Email"), - widget=forms.EmailInput() + widget=forms.EmailInput(attrs={'autocomplete': 'email'}) ) password = forms.CharField( label=_("Password"), @@ -140,6 +140,7 @@ class RegistrationForm(forms.Form): name_parts = forms.CharField() email = forms.EmailField( label=_("Email"), + widget=forms.EmailInput(attrs={'autocomplete': 'email'}) ) error_messages = { From 572973b5c0a51a5a384dfe1cbbb6a5cdc01a29a8 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Tue, 10 Jun 2025 14:12:26 +0200 Subject: [PATCH 20/98] Remove fade-in for dialogs to remove flickering when showing multiple dialogs in a row (#5208) --- src/pretix/static/pretixbase/scss/_dialogs.scss | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/src/pretix/static/pretixbase/scss/_dialogs.scss b/src/pretix/static/pretixbase/scss/_dialogs.scss index 3812cae33a..fa0012db9e 100644 --- a/src/pretix/static/pretixbase/scss/_dialogs.scss +++ b/src/pretix/static/pretixbase/scss/_dialogs.scss @@ -8,9 +8,6 @@ dialog.modal-card { box-shadow: 0 7px 14px 0 rgba(78, 50, 92, 0.1),0 3px 6px 0 rgba(0,0,0,.07); background: white; border-radius: $border-radius-large; - - opacity: 0; - transition: opacity .5s allow-discrete; } .modal-card-inner { display: flex; @@ -52,18 +49,8 @@ dialog.modal-card .modal-card-content { dialog::backdrop { background-color: rgba(255, 255, 255, .5); - opacity: 0; - transition: opacity .5s allow-discrete; backdrop-filter: blur(2px); } -dialog[open], dialog[open]::backdrop { - opacity: 1; -} -@starting-style { - dialog[open], dialog[open]::backdrop { - opacity: 0; - } -} @media screen and (min-width: $screen-sm-min) { dialog.modal-card:has(.modal-card-icon) .modal-card-inner { From 53ebee37fec616db746b26e8ae82c853519cdd02 Mon Sep 17 00:00:00 2001 From: Anarion Dunedain Date: Mon, 2 Jun 2025 16:49:55 +0200 Subject: [PATCH 21/98] Translations: Update Polish Currently translated at 99.0% (5846 of 5900 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pl/ powered by weblate --- src/pretix/locale/pl/LC_MESSAGES/django.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pretix/locale/pl/LC_MESSAGES/django.po b/src/pretix/locale/pl/LC_MESSAGES/django.po index ca1ce43d4c..49abb7c7ce 100644 --- a/src/pretix/locale/pl/LC_MESSAGES/django.po +++ b/src/pretix/locale/pl/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-30 10:35+0000\n" -"PO-Revision-Date: 2025-04-28 01:00+0000\n" +"PO-Revision-Date: 2025-06-02 23:00+0000\n" "Last-Translator: Anarion Dunedain \n" "Language-Team: Polish \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.11\n" +"X-Generator: Weblate 5.11.4\n" #: pretix/_base_settings.py:87 msgid "English" @@ -11070,7 +11070,7 @@ msgstr "" #: pretix/base/settings.py:2434 #, python-brace-format msgid "Your order is about to expire: {code}" -msgstr "Twoje zamówienie ma wygasa: {code}" +msgstr "Twoje zamówienie wkrótce wygaśnie: {code}" #: pretix/base/settings.py:2438 #, python-brace-format @@ -11090,7 +11090,7 @@ msgstr "" "Witaj,\n" "\n" "Nie otrzymaliśmy jeszcze pełnej płatności za zamówienie na {event}.\n" -"Pamiętaj, że Twoje zamówienie będzi pewne tylko wtedy, jeżeli otrzymamy\n" +"Pamiętaj, że Twoje zamówienie będzie pewne tylko wtedy, jeżeli otrzymamy\n" "Twoją płatność przed {expire_date}.\n" "\n" "Możesz wyświetlić informacje o płatności i status Twojego zamówienia pod " From 0f4d5b639d2c423fc5367971391d98a7a3a25b17 Mon Sep 17 00:00:00 2001 From: Renne Rocha Date: Wed, 4 Jun 2025 02:33:31 +0200 Subject: [PATCH 22/98] Translations: Update Portuguese (Brazil) Currently translated at 92.0% (5430 of 5900 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt_BR/ powered by weblate --- src/pretix/locale/pt_BR/LC_MESSAGES/django.po | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/pretix/locale/pt_BR/LC_MESSAGES/django.po b/src/pretix/locale/pt_BR/LC_MESSAGES/django.po index 8d6e65f124..0d50d25f9c 100644 --- a/src/pretix/locale/pt_BR/LC_MESSAGES/django.po +++ b/src/pretix/locale/pt_BR/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-30 10:35+0000\n" -"PO-Revision-Date: 2025-05-28 08:00+0000\n" +"PO-Revision-Date: 2025-06-04 06:32+0000\n" "Last-Translator: Renne Rocha \n" "Language-Team: Portuguese (Brazil) \n" @@ -10604,10 +10604,8 @@ msgstr "" "você usa os dados coletados em sua loja de ingressos." #: pretix/base/settings.py:2071 -#, fuzzy -#| msgid "Account information" msgid "Accessibility information URL" -msgstr "Informações da conta" +msgstr "URL de informação de acessibilidade" #: pretix/base/settings.py:2072 #, fuzzy From 6b95bfbc965e9da2a50fe05c23f8b92b50be4e4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A1=B0=EC=A0=95=ED=99=94?= Date: Wed, 4 Jun 2025 03:48:49 +0200 Subject: [PATCH 23/98] Translations: Update Korean Currently translated at 48.6% (2868 of 5900 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ko/ powered by weblate --- src/pretix/locale/ko/LC_MESSAGES/django.po | 704 +++++++++++---------- 1 file changed, 377 insertions(+), 327 deletions(-) diff --git a/src/pretix/locale/ko/LC_MESSAGES/django.po b/src/pretix/locale/ko/LC_MESSAGES/django.po index 8c155ea550..c47744a90a 100644 --- a/src/pretix/locale/ko/LC_MESSAGES/django.po +++ b/src/pretix/locale/ko/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-30 10:35+0000\n" -"PO-Revision-Date: 2025-05-28 08:41+0000\n" -"Last-Translator: Martin Gross \n" +"PO-Revision-Date: 2025-06-04 06:32+0000\n" +"Last-Translator: 조정화 \n" "Language-Team: Korean \n" "Language: ko\n" @@ -15531,1077 +15531,1092 @@ msgstr "" msgid "" "Position #{posid} has been scanned and rejected because it has already been " "scanned before on list \"{list}\"." -msgstr "" +msgstr "위치 #{posid}는 이미 목록 \"{list}\"에서 스캔된 이력이 있어, 이번에는 " +"거부되었습니다." #: pretix/control/logdisplay.py:392 msgid "The user confirmed the following message: \"{}\"" -msgstr "" +msgstr "사용자가 다음 메시지를 승인했습니다: \"{}\"" #: pretix/control/logdisplay.py:404 #, python-brace-format msgid "The order has been canceled (comment: \"{comment}\")." -msgstr "" +msgstr "주문이 취소되었습니다. (사유: \"{comment}\")" #: pretix/control/logdisplay.py:406 pretix/control/views/orders.py:1573 #: pretix/presale/views/order.py:1047 msgid "The order has been canceled." -msgstr "" +msgstr "주문이 정상적으로 취소 처리되었습니다." #: pretix/control/logdisplay.py:414 #, python-brace-format msgid "Position #{posid} has been printed at {datetime} with type \"{type}\"." -msgstr "" +msgstr "위치 #{posid}가 {datetime}에 \"{type}\" 유형으로 출력되었습니다." #: pretix/control/logdisplay.py:428 pretix/control/logdisplay.py:741 msgid "The settings of a payment provider have been changed." -msgstr "" +msgstr "결제 서비스 제공업체의 설정이 변경되었습니다." #: pretix/control/logdisplay.py:431 pretix/control/logdisplay.py:740 msgid "The settings of a ticket output provider have been changed." -msgstr "" +msgstr "티켓 출력 공급자의 설정이 변경되었습니다." #: pretix/control/logdisplay.py:437 msgid "Blocked manually" -msgstr "" +msgstr "수동으로 차단되었습니다" #: pretix/control/logdisplay.py:439 msgid "Blocked because of an API integration" msgstr "" +"API 인터페이스 때문에 연결이 차단되었습니다. (어떤 시스템이나 서비스가 외부 " +"애플리케이션 프로그래밍 인터페이스(API)를 통해 데이터를 주고받으려 했지만, " +"보안이나 정책 상의 이유로 접근이 막혔다는 뜻)" #: pretix/control/logdisplay.py:443 #, python-brace-format msgid "The test mode order {code} has been deleted." -msgstr "" +msgstr "테스트 모드 순서 {code}가 삭제되었습니다." #: pretix/control/logdisplay.py:444 msgid "The order details have been changed." -msgstr "" +msgstr "주문 세부 사항이 변경되었습니다." #: pretix/control/logdisplay.py:445 msgid "The order has been marked as unpaid." -msgstr "" +msgstr "주문이 미결제로 표시되었습니다." #: pretix/control/logdisplay.py:446 msgid "The order's secret has been changed." -msgstr "" +msgstr "주문의 비밀이 변경되었습니다." #: pretix/control/logdisplay.py:447 msgid "The order's expiry date has been changed." -msgstr "" +msgstr "주문의 만료일이 변경되었습니다." #: pretix/control/logdisplay.py:448 msgid "The order has been set to be usable before it is paid." -msgstr "" +msgstr "주문이 결제되기 전에 사용할 수 있도록 설정되었습니다." #: pretix/control/logdisplay.py:449 msgid "The order has been set to require payment before use." -msgstr "" +msgstr "주문은 사용 전에 결제가 필요하도록 설정되었습니다." #: pretix/control/logdisplay.py:450 pretix/control/views/orders.py:1578 msgid "The order has been marked as expired." -msgstr "" +msgstr "주문이 만료된 것으로 표시되었습니다." #: pretix/control/logdisplay.py:451 pretix/control/views/orders.py:1476 msgid "The order has been marked as paid." -msgstr "" +msgstr "주문이 결제된 것으로 표시되었습니다." #: pretix/control/logdisplay.py:452 msgid "The cancellation request has been deleted." -msgstr "" +msgstr "취소 요청이 삭제되었습니다." #: pretix/control/logdisplay.py:453 msgid "The order has been refunded." -msgstr "" +msgstr "주문이 환불되었습니다." #: pretix/control/logdisplay.py:454 pretix/control/views/orders.py:1861 msgid "The order has been reactivated." -msgstr "" +msgstr "주문이 다시 활성화되었습니다." #: pretix/control/logdisplay.py:455 msgid "The order has been created." -msgstr "" +msgstr "주문이 생성되었습니다." #: pretix/control/logdisplay.py:457 msgid "The order requires approval before it can continue to be processed." -msgstr "" +msgstr "주문이 계속 처리되기 전에 승인이 필요합니다." #: pretix/control/logdisplay.py:458 pretix/control/views/orders.py:800 msgid "The order has been approved." -msgstr "" +msgstr "주문이 승인되었습니다." #: pretix/control/logdisplay.py:459 -#, python-brace-format +#, fuzzy, python-brace-format msgid "The order has been denied (comment: \"{comment}\")." -msgstr "" +msgstr "주문이 거부되었습니다(댓글: \"{댓글}\")." #: pretix/control/logdisplay.py:460 #, python-brace-format msgid "" "The email address has been changed from \"{old_email}\" to \"{new_email}\"." -msgstr "" +msgstr "이메일 주소가 \"{old_email}\"에서 \"{new_email}\"로 변경되었습니다." #: pretix/control/logdisplay.py:463 msgid "" "The email address has been confirmed to be working (the user clicked on a " "link in the email for the first time)." -msgstr "" +msgstr "이메일 주소가 작동 중인 것으로 확인되었습니다(사용자가 이메일의 링크를 처음 " +"클릭했습니다)." #: pretix/control/logdisplay.py:465 #, python-brace-format msgid "" "The phone number has been changed from \"{old_phone}\" to \"{new_phone}\"." -msgstr "" +msgstr "전화번호가 \"{old_phone}\"에서 \"{new_phone}\"으로 변경되었습니다." #: pretix/control/logdisplay.py:467 msgid "The customer account has been changed." -msgstr "" +msgstr "고객 계정이 변경되었습니다." #: pretix/control/logdisplay.py:468 msgid "The order locale has been changed." -msgstr "" +msgstr "주문 로케일이 변경되었습니다." #: pretix/control/logdisplay.py:469 pretix/control/views/orders.py:1617 #: pretix/presale/views/order.py:739 pretix/presale/views/order.py:812 msgid "The invoice has been generated." -msgstr "" +msgstr "송장이 생성되었습니다." #: pretix/control/logdisplay.py:470 pretix/control/views/orders.py:1688 msgid "The invoice has been regenerated." -msgstr "" +msgstr "송장이 재생성되었습니다." #: pretix/control/logdisplay.py:471 pretix/control/views/orders.py:1719 #: pretix/presale/views/order.py:825 msgid "The invoice has been reissued." -msgstr "" +msgstr "송장이 재발행되었습니다" #: pretix/control/logdisplay.py:472 msgid "The order's internal comment has been updated." -msgstr "" +msgstr "주문의 내부 의견이 업데이트되었습니다." #: pretix/control/logdisplay.py:473 msgid "The order's follow-up date has been updated." -msgstr "" +msgstr "주문의 후속 조치 날짜가 업데이트되었습니다." #: pretix/control/logdisplay.py:474 msgid "The order's flag to require attention at check-in has been toggled." -msgstr "" +msgstr "해당 주문에 대해 체크인 시 주의가 필요하다는 표시가 켜졌거나 꺼졌습니다" #: pretix/control/logdisplay.py:476 msgid "The order's check-in text has been changed." -msgstr "" +msgstr "주문의 체크인 텍스트가 변경되었습니다." #: pretix/control/logdisplay.py:477 msgid "" "The order's flag to be considered valid even if unpaid has been toggled." -msgstr "" +msgstr "미지급 상태에서도 유효한 것으로 간주되는 주문의 표시가 켜졌거나 꺼졌습니다." #: pretix/control/logdisplay.py:479 #, python-brace-format msgid "A new payment {local_id} has been started instead of the previous one." -msgstr "" +msgstr "이전 결제 대신 새로운 결제 {local_id}가 시작되었습니다(local_ID; 결제를 " +"식별하는 고유 ID)" #: pretix/control/logdisplay.py:480 msgid "An unidentified type email has been sent." -msgstr "" +msgstr "미확인 유형의 이메일이 전송되었습니다." #: pretix/control/logdisplay.py:481 pretix/control/logdisplay.py:666 msgid "Sending of an email has failed." -msgstr "" +msgstr "이메일 전송이 실패했습니다." #: pretix/control/logdisplay.py:482 msgid "" "The email has been sent without attached tickets since they would have been " "too large to be likely to arrive." -msgstr "" +msgstr "이메일은 너무 커서 도착할 가능성이 높았기 때문에 첨부된 티켓 없이 " +"발송되었습니다." #: pretix/control/logdisplay.py:484 msgid "A custom email has been sent." -msgstr "" +msgstr "맞춤형 이메일이 전송되었습니다." #: pretix/control/logdisplay.py:485 msgid "A custom email has been sent to an attendee." -msgstr "" +msgstr "참석자에게 맞춤형 이메일이 발송되었습니다." #: pretix/control/logdisplay.py:486 msgid "" "An email has been sent with a reminder that the ticket is available for " "download." -msgstr "" +msgstr "티켓을 다운로드할 수 있다는 알림과 함께 이메일이 발송되었습니다." #: pretix/control/logdisplay.py:488 msgid "" "An email has been sent with a warning that the order is about to expire." -msgstr "" +msgstr "주문이 곧 만료될 것이라는 경고와 함께 이메일이 발송되었습니다." #: pretix/control/logdisplay.py:491 msgid "" "An email has been sent to notify the user that the order has been canceled." -msgstr "" +msgstr "사용자에게 주문이 취소되었음을 알리는 이메일이 발송되었습니다." #: pretix/control/logdisplay.py:492 msgid "" "An email has been sent to notify the user that the event has been canceled." -msgstr "" +msgstr "사용자에게 이벤트가 취소되었음을 알리는 이메일이 발송되었습니다." #: pretix/control/logdisplay.py:495 msgid "" "An email has been sent to notify the user that the order has been changed." -msgstr "" +msgstr "사용자에게 주문이 변경되었음을 알리는 이메일이 발송되었습니다." #: pretix/control/logdisplay.py:497 msgid "" "An email has been sent to notify the user that the order has been received." -msgstr "" +msgstr "주문이 접수되었음을 사용자에게 알리기 위한 이메일이 발송되었습니다." #: pretix/control/logdisplay.py:499 msgid "" "An email has been sent to notify the user that payment has been received." -msgstr "" +msgstr "사용자에게 결제가 완료되었음을 알리는 이메일이 발송되었습니다." #: pretix/control/logdisplay.py:501 msgid "" "An email has been sent to notify the user that the order has been denied." -msgstr "" +msgstr "주문이 거부되었음을 사용자에게 알리기 위한 이메일이 발송되었습니다." #: pretix/control/logdisplay.py:502 msgid "" "An email has been sent to notify the user that the order has been approved." -msgstr "" +msgstr "주문이 승인되었음을 사용자에게 알리기 위한 이메일이 발송되었습니다." #: pretix/control/logdisplay.py:505 msgid "" "An email has been sent to notify the user that the order has been received " "and requires payment." -msgstr "" +msgstr "주문이 접수되었으며 결제가 필요하다는 것을 사용자에게 알리기 위해 이메일이 " +"발송되었습니다." #: pretix/control/logdisplay.py:506 msgid "" "An email has been sent to notify the user that the order has been received " "and requires approval." -msgstr "" +msgstr "주문이 접수되었으며 승인이 필요함을 사용자에게 알리기 위해 이메일이 " +"발송되었습니다." #: pretix/control/logdisplay.py:509 msgid "" "An email with a link to the order detail page has been resent to the user." -msgstr "" +msgstr "주문 세부 정보 페이지 링크가 포함된 이메일이 사용자에게 발송되었습니다" #: pretix/control/logdisplay.py:510 msgid "An email has been sent to notify the user that the payment failed." -msgstr "" +msgstr "사용자에게 결제가 실패했음을 알리는 이메일이 발송되었습니다." #: pretix/control/logdisplay.py:517 msgid "The voucher has been created." -msgstr "" +msgstr "바우처가 생성되었습니다" #: pretix/control/logdisplay.py:519 msgid "The voucher has been created and sent to a person on the waiting list." -msgstr "" +msgstr "바우처가 생성되어 대기자 명단에 있는 사람에게 전송되었습니다." #: pretix/control/logdisplay.py:521 msgid "" "The voucher has been set to expire because the recipient removed themselves " "from the waiting list." -msgstr "" +msgstr "수신자가 대기자 명단에서 삭제했기 때문에 바우처가 만료될 예정입니다." #: pretix/control/logdisplay.py:522 msgid "The voucher has been changed." -msgstr "" +msgstr "바우처가 변경되었습니다." #: pretix/control/logdisplay.py:523 msgid "The voucher has been deleted." -msgstr "" +msgstr "바우처가 삭제되었습니다." #: pretix/control/logdisplay.py:532 #, python-brace-format msgid "The voucher has been redeemed in order {order_code}." -msgstr "" +msgstr "바우처가 {order_code} 순서로 사용되었습니다." #: pretix/control/logdisplay.py:547 msgid "The category has been added." -msgstr "" +msgstr "카테고리가 추가되었습니다." #: pretix/control/logdisplay.py:548 msgid "The category has been deleted." -msgstr "" +msgstr "카테고리가 삭제되었습니다." #: pretix/control/logdisplay.py:549 msgid "The category has been changed." -msgstr "" +msgstr "카테고리가 변경되었습니다." #: pretix/control/logdisplay.py:550 msgid "The category has been reordered." -msgstr "" +msgstr "카테고리가 재주문되었습니다." #: pretix/control/logdisplay.py:557 msgid "The tax rule has been added." -msgstr "" +msgstr "세금 규정이 추가되었습니다." #: pretix/control/logdisplay.py:558 msgid "The tax rule has been deleted." -msgstr "" +msgstr "세금 규정이 삭제되었습니다." #: pretix/control/logdisplay.py:559 msgid "The tax rule has been changed." -msgstr "" +msgstr "세금 규정이 변경되었습니다." #: pretix/control/logdisplay.py:571 #, python-brace-format msgid "{user} has been added to the team." -msgstr "" +msgstr "{user}가 팀에 추가되었습니다." #: pretix/control/logdisplay.py:572 #, python-brace-format msgid "{user} has been removed from the team." -msgstr "" +msgstr "{user}가 팀에 제거되었습니다." #: pretix/control/logdisplay.py:573 #, python-brace-format msgid "{user} has been invited to the team." -msgstr "" +msgstr "{user}가 팀에 초대되었습니다." #: pretix/control/logdisplay.py:574 #, python-brace-format msgid "Invite for {user} has been resent." -msgstr "" +msgstr "{user} 초대장이 다시 발송되었습니다." #: pretix/control/logdisplay.py:585 #, python-brace-format msgid "{user} has joined the team using the invite sent to {email}." -msgstr "" +msgstr "{user}가 {email}에게 보낸 초대를 사용하여 팀에 합류했습니다." #: pretix/control/logdisplay.py:595 msgid "Your account settings have been changed." -msgstr "" +msgstr "계정 설정이 변경되었습니다." #: pretix/control/logdisplay.py:598 pretix/control/views/user.py:253 #, python-brace-format msgid "Your email address has been changed to {email}." -msgstr "" +msgstr "귀하의 이메일 주소가 {email}로 변경되었습니다." #: pretix/control/logdisplay.py:600 pretix/control/views/user.py:250 msgid "Your password has been changed." -msgstr "" +msgstr "비밀번호가 변경되었습니다." #: pretix/control/logdisplay.py:602 msgid "Your account has been enabled." -msgstr "" +msgstr "계정이 활성화되었습니다." #: pretix/control/logdisplay.py:604 msgid "Your account has been disabled." -msgstr "" +msgstr "계정이 비활성화되었습니다." #: pretix/control/logdisplay.py:614 msgid "You impersonated {}." -msgstr "" +msgstr "{}을 사칭했습니다." #: pretix/control/logdisplay.py:615 msgid "You stopped impersonating {}." -msgstr "" +msgstr "{}을 사칭하는 것을 멈췄습니다." #: pretix/control/logdisplay.py:622 msgid "This object has been created by cloning." -msgstr "" +msgstr "이 객체는 복제를 통해 만들어졌습니다." #: pretix/control/logdisplay.py:623 msgid "The organizer has been changed." -msgstr "" +msgstr "주최자가 변경되었습니다." #: pretix/control/logdisplay.py:624 msgid "The organizer settings have been changed." -msgstr "" +msgstr "정리함 설정이 변경되었습니다." #: pretix/control/logdisplay.py:625 pretix/control/logdisplay.py:748 msgid "The footer links have been changed." -msgstr "" +msgstr "바닥글 링크가 변경되었습니다." #: pretix/control/logdisplay.py:626 pretix/control/logdisplay.py:672 msgid "A scheduled export has been added." -msgstr "" +msgstr "예약된 내보내기가 추가되었습니다." #: pretix/control/logdisplay.py:627 pretix/control/logdisplay.py:673 msgid "A scheduled export has been changed." -msgstr "" +msgstr "예약된 내보내기가 변경되었습니다." #: pretix/control/logdisplay.py:628 pretix/control/logdisplay.py:674 msgid "A scheduled export has been deleted." -msgstr "" +msgstr "예약된 내보내기가 삭제되었습니다." #: pretix/control/logdisplay.py:629 pretix/control/logdisplay.py:675 msgid "A scheduled export has been executed." -msgstr "" +msgstr "예약된 내보내기가 실행되었습니다." #: pretix/control/logdisplay.py:630 pretix/control/logdisplay.py:676 -#, python-brace-format +#, fuzzy, python-brace-format msgid "A scheduled export has failed: {reason}." -msgstr "" +msgstr "예약된 내보내기가 실패했습니다: {이유}." #: pretix/control/logdisplay.py:631 msgid "Gift card acceptance for another organizer has been added." -msgstr "" +msgstr "다른 주최자의 기프트 카드 수락이 추가되었습니다." #: pretix/control/logdisplay.py:632 msgid "Gift card acceptance for another organizer has been removed." -msgstr "" +msgstr "다른 주최자의 기프트 카드 수락이 취소되었습니다." #: pretix/control/logdisplay.py:633 msgid "A new gift card acceptor has been invited." -msgstr "" +msgstr "새로운 기프트 카드 수령인이 초대되었습니다." #: pretix/control/logdisplay.py:634 msgid "A gift card acceptor has been removed." -msgstr "" +msgstr "기프트 카드 수락자가 제거되었습니다." #: pretix/control/logdisplay.py:635 msgid "A gift card issuer has been removed or declined." -msgstr "" +msgstr "기프트 카드 발급자가 삭제되었거나 거부되었습니다." #: pretix/control/logdisplay.py:636 msgid "A new gift card issuer has been accepted." -msgstr "" +msgstr "새로운 기프트 카드 발급자가 수락되었습니다." #: pretix/control/logdisplay.py:637 msgid "The webhook has been created." msgstr "" +"이제 특정 이벤트 발생 시 자동으로 지정한 URL로 알림(데이터)을 보내도록 " +"설정이 완료되었습니다.(웹훅: 특정 이벤트가 발생했을 때, 정해진 URL로 " +"자동으로 알림이나 데이터를 전송하는 기능)" #: pretix/control/logdisplay.py:638 msgid "The webhook has been changed." -msgstr "" +msgstr "웹훅이 변경되었습니다" #: pretix/control/logdisplay.py:639 msgid "The webhook call retry jobs have been manually expedited." msgstr "" +"웹훅 호출 재시도 작업이 수동으로 신속 처리되었습니다 (실패한 웹훅 호출들을 " +"다시 시도하는 작업을, 자동이 아닌 사람이 직접 개입해 더 빨리 실행되도록 " +"처리했다는 의미)" #: pretix/control/logdisplay.py:640 msgid "The webhook call retry jobs have been dropped." -msgstr "" +msgstr "웹훅 호출 재시도 작업이 중단되었습니다" #: pretix/control/logdisplay.py:641 msgid "The SSO provider has been created." msgstr "" +"이제 특정 로그인 서비스(예: Google, Microsoft)를 사용해 로그인할 수 있도록 " +"설정이 완료되었습니다. (SSO; 한 번 로그인으로 여러 서비스에 자동 로그인할 수 " +"있게 해주는 시스템으로서 구글, 마이크로소프트, 카카오, 네이버 로그인을 " +"이용한 서비스 접근입니다)" #: pretix/control/logdisplay.py:642 msgid "The SSO provider has been changed." -msgstr "" +msgstr "SSO 제공자가 변경되었습니다." #: pretix/control/logdisplay.py:643 msgid "The SSO provider has been deleted." -msgstr "" +msgstr "SSO 제공자가 삭제되었습니다." #: pretix/control/logdisplay.py:644 msgid "The SSO client has been created." -msgstr "" +msgstr "SSO 클라이언트가 생성되었습니다." #: pretix/control/logdisplay.py:645 msgid "The SSO client has been changed." -msgstr "" +msgstr "SSO 클라이언트가 변경되었습니다." #: pretix/control/logdisplay.py:646 msgid "The SSO client has been deleted." -msgstr "" +msgstr "SSO 클라이언트가 삭제되었습니다." #: pretix/control/logdisplay.py:647 pretix/control/views/organizer.py:2346 msgid "The membership type has been created." -msgstr "" +msgstr "멤버십 유형이 생성되었습니다." #: pretix/control/logdisplay.py:648 msgid "The membership type has been changed." -msgstr "" +msgstr "멤버십 유형이 변경되었습니다." #: pretix/control/logdisplay.py:649 msgid "The membership type has been deleted." -msgstr "" +msgstr "멤버십 유형이 삭제되었습니다." #: pretix/control/logdisplay.py:650 pretix/control/views/organizer.py:3184 msgid "The sales channel has been created." -msgstr "" +msgstr "판매 채널이 생성되었습니다" #: pretix/control/logdisplay.py:651 msgid "The sales channel has been changed." -msgstr "" +msgstr "판매 채널이 변경되었습니다" #: pretix/control/logdisplay.py:652 msgid "The sales channel has been deleted." -msgstr "" +msgstr "판매 채널이 삭제되었습니다" #: pretix/control/logdisplay.py:653 msgid "The account has been created." -msgstr "" +msgstr "계정이 생성되었습니다" #: pretix/control/logdisplay.py:654 msgid "The account has been changed." -msgstr "" +msgstr "계정이 변경되었습니다" #: pretix/control/logdisplay.py:655 msgid "A membership for this account has been added." -msgstr "" +msgstr "이 계정의 멤버십이 추가되었습니다" #: pretix/control/logdisplay.py:656 msgid "A membership of this account has been changed." -msgstr "" +msgstr "이 계정의 멤버십이 변경되었습니다" #: pretix/control/logdisplay.py:657 msgid "A membership of this account has been deleted." -msgstr "" +msgstr "이 계정의 멤버십이 삭제되었습니다" #: pretix/control/logdisplay.py:658 msgid "The account has been disabled and anonymized." -msgstr "" +msgstr "계정이 비활성화되고 익명화되었습니다." #: pretix/control/logdisplay.py:659 msgid "A new password has been requested." -msgstr "" +msgstr "새 비밀번호가 요청되었습니다." #: pretix/control/logdisplay.py:660 msgid "A new password has been set." -msgstr "" +msgstr "새 비밀번호가 설정되었습니다." #: pretix/control/logdisplay.py:661 msgid "The reusable medium has been created." -msgstr "" +msgstr "재사용 가능한 매체가 만들어졌습니다." #: pretix/control/logdisplay.py:662 msgid "The reusable medium has been created automatically." -msgstr "" +msgstr "재사용 가능한 매체가 자동으로 생성되었습니다." #: pretix/control/logdisplay.py:663 msgid "The reusable medium has been changed." -msgstr "" +msgstr "재사용 가능한 매체가 변경되었습니다." #: pretix/control/logdisplay.py:664 msgid "The medium has been connected to a new ticket." -msgstr "" +msgstr "매체가 새 티켓에 연결되었습니다." #: pretix/control/logdisplay.py:665 msgid "The medium has been connected to a new gift card." -msgstr "" +msgstr "매체가 새 기프트 카드에 연결되었습니다." #: pretix/control/logdisplay.py:667 msgid "The event's internal comment has been updated." -msgstr "" +msgstr "이벤트의 내부 의견이 업데이트되었습니다." #: pretix/control/logdisplay.py:668 msgid "The event has been canceled." -msgstr "" +msgstr "행사가 취소되었습니다." #: pretix/control/logdisplay.py:669 msgid "An event has been deleted." -msgstr "" +msgstr "행사가 삭제되었습니다." #: pretix/control/logdisplay.py:670 msgid "A removal process for personal data has been started." -msgstr "" +msgstr "개인 데이터 제거 프로세스가 시작되었습니다." #: pretix/control/logdisplay.py:671 msgid "A removal process for personal data has been completed." -msgstr "" +msgstr "개인 데이터 제거 프로세스가 완성되었습니다." #: pretix/control/logdisplay.py:677 msgid "The user has been created." -msgstr "" +msgstr "사용자가 생성되었습니다." #: pretix/control/logdisplay.py:678 #, python-brace-format msgid "" "A first login using {agent_type} on {os_type} from {country} has been " "detected." -msgstr "" +msgstr "{country}에서 {os_type}을(를) 사용하는 {agent_type}을 통해 첫 로그인이 " +"감지되었습니다" #: pretix/control/logdisplay.py:680 pretix/control/views/user.py:490 #: pretix/control/views/user.py:550 pretix/control/views/user.py:609 msgid "Two-factor authentication has been enabled." -msgstr "" +msgstr "2단계 인증이 활성화되었습니다." #: pretix/control/logdisplay.py:681 pretix/control/views/user.py:393 #: pretix/control/views/user.py:625 msgid "Two-factor authentication has been disabled." -msgstr "" +msgstr "2단계 인증이 비활성화되었습니다." #: pretix/control/logdisplay.py:682 pretix/control/views/user.py:642 msgid "Your two-factor emergency codes have been regenerated." -msgstr "" +msgstr "당신의 2단계 인증 비상 코드가 재생성되었습니다" #: pretix/control/logdisplay.py:683 msgid "A two-factor emergency code has been generated." -msgstr "" +msgstr "당신의 2단계 인증 비상 코드가 생성되었습니다" #: pretix/control/logdisplay.py:684 #, python-brace-format msgid "" "A new two-factor authentication device \"{name}\" has been added to your " "account." -msgstr "" +msgstr "새로운 2단계 인증 장치 \"{name}\"이(가) 귀하의 계정에 추가되었습니다" #: pretix/control/logdisplay.py:686 -#, python-brace-format +#, fuzzy, python-brace-format msgid "" "The two-factor authentication device \"{name}\" has been removed from your " "account." -msgstr "" +msgstr "이중 인증 장치 \"이름\"이 계정에서 제거되었습니다." #: pretix/control/logdisplay.py:688 msgid "Notifications have been enabled." -msgstr "" +msgstr "알림이 활성화되었습니다" #: pretix/control/logdisplay.py:689 msgid "Notifications have been disabled." -msgstr "" +msgstr "알림이 비활성화되었습니다." #: pretix/control/logdisplay.py:690 msgid "Your notification settings have been changed." -msgstr "" +msgstr "알림 설정이 변경되었습니다." #: pretix/control/logdisplay.py:691 msgid "This user has been anonymized." -msgstr "" +msgstr "이 사용자는 익명화되었습니다" #: pretix/control/logdisplay.py:694 msgid "Password reset mail sent." -msgstr "" +msgstr "비밀번호 재설정 메일이 전송되었습니다" #: pretix/control/logdisplay.py:695 msgid "The password has been reset." -msgstr "" +msgstr "비밀번호가 재설정되었습니다" #: pretix/control/logdisplay.py:696 msgid "" "A repeated password reset has been denied, as the last request was less than " "24 hours ago." -msgstr "" +msgstr "마지막 요청이 24시간도 채 되지 않아 반복적인 비밀번호 재설정이 거부되었습니다" #: pretix/control/logdisplay.py:698 -#, python-brace-format +#, fuzzy, python-brace-format msgid "The organizer \"{name}\" has been deleted." -msgstr "" +msgstr "주최자 \"이름\"이 삭제되었습니다." #: pretix/control/logdisplay.py:699 pretix/control/logdisplay.py:700 msgid "A voucher has been sent to a person on the waiting list." -msgstr "" +msgstr "대기자 명단에 있는 사람에게 바우처가 발송되었습니다." #: pretix/control/logdisplay.py:701 msgid "An entry has been removed from the waiting list." -msgstr "" +msgstr "대기자 명단에서 항목이 삭제되었습니다." #: pretix/control/logdisplay.py:702 msgid "An entry has been transferred to another waiting list." -msgstr "" +msgstr "항목이 다른 대기자 명단으로 전송되었습니다." #: pretix/control/logdisplay.py:703 msgid "An entry has been changed on the waiting list." -msgstr "" +msgstr "대기자 명단에 항목이 변경되었습니다." #: pretix/control/logdisplay.py:704 msgid "An entry has been added to the waiting list." -msgstr "" +msgstr "대기자 명단에 항목이 추가되었습니다" #: pretix/control/logdisplay.py:705 msgid "The team has been created." -msgstr "" +msgstr "팀이 생성되었습니다" #: pretix/control/logdisplay.py:706 msgid "The team settings have been changed." -msgstr "" +msgstr "팀 설정이 변경되었습니다" #: pretix/control/logdisplay.py:707 msgid "The team has been deleted." -msgstr "" +msgstr "팀이 삭제되었습니다" #: pretix/control/logdisplay.py:708 pretix/control/views/organizer.py:2012 msgid "The gate has been created." -msgstr "" +msgstr "게이트가 생성되었습니다" #: pretix/control/logdisplay.py:709 msgid "The gate has been changed." -msgstr "" +msgstr "게이트가 변경되었습니다" #: pretix/control/logdisplay.py:710 msgid "The gate has been deleted." -msgstr "" +msgstr "게이트가 삭제되었습니다" #: pretix/control/logdisplay.py:711 msgctxt "subevent" msgid "The event date has been deleted." -msgstr "" +msgstr "이벤트 날짜가 삭제되었습니다" #: pretix/control/logdisplay.py:712 msgctxt "subevent" msgid "The event date has been canceled." -msgstr "" +msgstr "이벤트 날짜가 취소되었습니다" #: pretix/control/logdisplay.py:713 msgctxt "subevent" msgid "The event date has been changed." -msgstr "" +msgstr "이벤트 날짜가 변경되었습니다" #: pretix/control/logdisplay.py:714 msgctxt "subevent" msgid "The event date has been created." -msgstr "" +msgstr "이벤트 날짜가 생성되었습니다" #: pretix/control/logdisplay.py:715 msgctxt "subevent" msgid "A quota has been added to the event date." -msgstr "" +msgstr "행사 날짜에 할당량이 추가되었습니다." #: pretix/control/logdisplay.py:716 msgctxt "subevent" msgid "A quota has been changed on the event date." -msgstr "" +msgstr "행사 날짜에 할당량이 변경되었습니다." #: pretix/control/logdisplay.py:717 msgctxt "subevent" msgid "A quota has been removed from the event date." -msgstr "" +msgstr "행사 날짜에 할당량이 제거되었습니다." #: pretix/control/logdisplay.py:718 msgid "The device has been created." -msgstr "" +msgstr "장치가 생성되었습니다" #: pretix/control/logdisplay.py:719 msgid "The device has been changed." -msgstr "" +msgstr "장치가 변경되었습니다" #: pretix/control/logdisplay.py:720 msgid "Access of the device has been revoked." -msgstr "" +msgstr "기기 접근이 취소되었습니다." #: pretix/control/logdisplay.py:721 msgid "The device has been initialized." -msgstr "" +msgstr "장치가 초기화되었습니다." #: pretix/control/logdisplay.py:722 msgid "The access token of the device has been regenerated." -msgstr "" +msgstr "장치의 액세스 토큰이 재생성되었습니다." #: pretix/control/logdisplay.py:723 msgid "The device has notified the server of an hardware or software update." -msgstr "" +msgstr "장치가 하드웨어 또는 소프트웨어 업데이트를 서버에 알렸습니다." #: pretix/control/logdisplay.py:724 msgid "The gift card has been created." -msgstr "" +msgstr "기프트 카드가 생성되었습니다." #: pretix/control/logdisplay.py:725 pretix/control/views/organizer.py:1656 msgid "The gift card has been changed." -msgstr "" +msgstr "기프트 카드가 변경되었습니다." #: pretix/control/logdisplay.py:726 msgid "A manual transaction has been performed." -msgstr "" +msgstr "A manual transaction has been performed." #: pretix/control/logdisplay.py:727 #, python-brace-format msgid "The token \"{name}\" has been created." -msgstr "" +msgstr "토큰 \"{name}\"이 생성되었습니다." #: pretix/control/logdisplay.py:728 #, python-brace-format msgid "The token \"{name}\" has been revoked." -msgstr "" +msgstr "토큰 \"{name}\"이 취소되었습니다." #: pretix/control/logdisplay.py:735 msgid "A meta property has been added to this event." -msgstr "" +msgstr "이 이벤트에 메타 속성이 추가되었습니다." #: pretix/control/logdisplay.py:736 msgid "A meta property has been removed from this event." -msgstr "" +msgstr "이 이벤트에서 메타 속성이 제거되었습니다" #: pretix/control/logdisplay.py:737 msgid "A meta property has been changed on this event." -msgstr "" +msgstr "이 이벤트에서 메타 속성이 변경되었습니다" #: pretix/control/logdisplay.py:738 msgid "The event settings have been changed." -msgstr "" +msgstr "이벤트 설정이 변경되었습니다" #: pretix/control/logdisplay.py:739 msgid "The ticket download settings have been changed." -msgstr "" +msgstr "티켓 다운로드 설정이 변경되었습니다" #: pretix/control/logdisplay.py:742 msgid "The shop has been taken live." -msgstr "" +msgstr "가게가 운영되고 있습니다" #: pretix/control/logdisplay.py:743 msgid "The shop has been taken offline." -msgstr "" +msgstr "가게가 오프라인 상태입니다" #: pretix/control/logdisplay.py:744 msgid "The shop has been taken into test mode." -msgstr "" +msgstr "상점이 테스트 모드로 전환되었습니다." #: pretix/control/logdisplay.py:745 msgid "The test mode has been disabled." -msgstr "" +msgstr "테스트 모드가 비활성화되었습니다." #: pretix/control/logdisplay.py:746 msgid "The event has been created." -msgstr "" +msgstr "이벤트가 생성되었습니다" #: pretix/control/logdisplay.py:747 msgid "The event details have been changed." -msgstr "" +msgstr "이벤트 세부 정보가 변경되었습니다." #: pretix/control/logdisplay.py:749 msgid "An answer option has been added to the question." -msgstr "" +msgstr "질문에 답변 옵션이 추가되었습니다." #: pretix/control/logdisplay.py:750 msgid "An answer option has been removed from the question." -msgstr "" +msgstr "질문에 답변 옵션이 제거되었습니다." #: pretix/control/logdisplay.py:751 msgid "An answer option has been changed." -msgstr "" +msgstr "답변 옵션이 변경되었습니다." #: pretix/control/logdisplay.py:752 msgid "A user has been added to the event team." -msgstr "" +msgstr "이벤트 팀에 사용자가 추가되었습니다." #: pretix/control/logdisplay.py:753 msgid "A user has been invited to the event team." -msgstr "" +msgstr "사용자가 이벤트 팀에 초대되었습니다." #: pretix/control/logdisplay.py:754 msgid "A user's permissions have been changed." -msgstr "" +msgstr "사용자 권한이 변경되었습니다." #: pretix/control/logdisplay.py:755 msgid "A user has been removed from the event team." -msgstr "" +msgstr "사용자가 이벤트 팀에서 삭제되었습니다." #: pretix/control/logdisplay.py:762 msgid "The check-in list has been added." -msgstr "" +msgstr "체크인 목록이 추가되었습니다." #: pretix/control/logdisplay.py:763 pretix/control/logdisplay.py:764 msgid "The check-in list has been deleted." -msgstr "" +msgstr "체크인 목록이 삭제되었습니다." #: pretix/control/logdisplay.py:765 msgid "The check-in list has been changed." -msgstr "" +msgstr "체크인 목록이 변경되었습니다." #: pretix/control/logdisplay.py:768 #, python-brace-format msgid "Check-in list {val}" -msgstr "" +msgstr "체크인 목록 {val}" #: pretix/control/logdisplay.py:775 -#, fuzzy -#| msgid "This ticket has been used once." -#| msgid_plural "This ticket has been used %(count)s times." msgid "The plugin has been enabled." -msgstr "티켓이 %(count)s회 사용되었습니다." +msgstr "플러그인이 활성화되었습니다" #: pretix/control/logdisplay.py:776 pretix/control/views/event.py:464 -#, fuzzy -#| msgid "This ticket has been used once." -#| msgid_plural "This ticket has been used %(count)s times." msgid "The plugin has been disabled." -msgstr "티켓이 %(count)s회 사용되었습니다." +msgstr "플러그인이 비활성화되었습니다" #: pretix/control/logdisplay.py:779 #, python-brace-format msgid "Plugin {val}" -msgstr "" +msgstr "플러그인 {val}" #: pretix/control/logdisplay.py:795 msgid "The product has been created." -msgstr "" +msgstr "제품이 생성되었습니다." #: pretix/control/logdisplay.py:796 msgid "The product has been changed." -msgstr "" +msgstr "제품이 변경되었습니다." #: pretix/control/logdisplay.py:797 msgid "The product has been reordered." -msgstr "" +msgstr "제품이 재주문되었습니다." #: pretix/control/logdisplay.py:798 msgid "The product has been deleted." -msgstr "" +msgstr "제품이 삭제되었습니다." #: pretix/control/logdisplay.py:799 msgid "An add-on has been added to this product." -msgstr "" +msgstr "이 상품에 추가 기능이 추가되었습니다" #: pretix/control/logdisplay.py:800 msgid "An add-on has been removed from this product." -msgstr "" +msgstr "이 상품에 추가 기능이 제거되었습니다" #: pretix/control/logdisplay.py:801 msgid "An add-on has been changed on this product." -msgstr "" +msgstr "이 상품에 추가 기능이 변경되었습니다" #: pretix/control/logdisplay.py:802 msgid "A bundled item has been added to this product." -msgstr "" +msgstr "이 제품에 함께 제공되는 구성품이 추가되었습니다" #: pretix/control/logdisplay.py:803 msgid "A bundled item has been removed from this product." -msgstr "" +msgstr "이 제품에 함께 제공되는 구성품이 제거되었습니다" #: pretix/control/logdisplay.py:804 msgid "A bundled item has been changed on this product." -msgstr "" +msgstr "이 제품에 함께 제공되는 구성품이 변경되었습니다" #: pretix/control/logdisplay.py:811 #, python-brace-format msgid "The variation \"{value}\" has been created." -msgstr "" +msgstr "\"{value}\" 변형이 생성되었습니다." #: pretix/control/logdisplay.py:812 #, python-brace-format msgid "The variation \"{value}\" has been deleted." -msgstr "" +msgstr "\"{value}\" 변형이 삭제되었습니다." #: pretix/control/logdisplay.py:813 #, python-brace-format msgid "The variation \"{value}\" has been changed." -msgstr "" +msgstr "\"{value}\" 변형이 변경되었습니다." #: pretix/control/logdisplay.py:830 #, python-brace-format msgid "Payment {local_id} has been confirmed." -msgstr "" +msgstr "{local_id} 결제가 확인되었습니다." #: pretix/control/logdisplay.py:831 #, python-brace-format msgid "Payment {local_id} has been canceled." -msgstr "" +msgstr "{local_id} 결제가 취소되었습니다." #: pretix/control/logdisplay.py:832 #, python-brace-format msgid "Canceling payment {local_id} has failed." -msgstr "" +msgstr "결제 {local_id} 취소에 실패했습니다" #: pretix/control/logdisplay.py:833 #, python-brace-format msgid "Payment {local_id} has been started." -msgstr "" +msgstr "{local_id} 결제가 시작되었습니다" #: pretix/control/logdisplay.py:834 #, python-brace-format msgid "Payment {local_id} has failed." -msgstr "" +msgstr "{local_id} 결제에 실패했습니다." #: pretix/control/logdisplay.py:835 -#, python-brace-format +#, fuzzy, python-brace-format msgid "The order could not be marked as paid: {message}" -msgstr "" +msgstr "주문을 결제된 것으로 표시할 수 없습니다: {메시지}" #: pretix/control/logdisplay.py:836 msgid "The order has been overpaid." -msgstr "" +msgstr "주문이 초과 결제되었습니다." #: pretix/control/logdisplay.py:837 #, python-brace-format msgid "Refund {local_id} has been created." -msgstr "" +msgstr "환불 {local_id}이(가) 생성되었습니다." #: pretix/control/logdisplay.py:838 #, python-brace-format msgid "Refund {local_id} has been created by an external entity." -msgstr "" +msgstr "환불 {local_id}이(가) 외부 기관에 의해 생성되었습니다" #: pretix/control/logdisplay.py:839 msgid "The customer requested you to issue a refund." -msgstr "" +msgstr "고객이 환불을 요청했습니다." #: pretix/control/logdisplay.py:840 #, python-brace-format msgid "Refund {local_id} has been completed." -msgstr "" +msgstr "{local_id} 환불이 완료되었습니다." #: pretix/control/logdisplay.py:841 #, python-brace-format msgid "Refund {local_id} has been canceled." -msgstr "" +msgstr "{local_id} 환불이 취소되었습니다." #: pretix/control/logdisplay.py:842 #, python-brace-format msgid "Refund {local_id} has failed." -msgstr "" +msgstr "{local_id} 환불이 실패했습니다." #: pretix/control/logdisplay.py:849 msgid "The quota has been added." -msgstr "" +msgstr "할당량이 추가되었습니다" #: pretix/control/logdisplay.py:850 msgid "The quota has been deleted." -msgstr "" +msgstr "할당량이 삭제되었습니다" #: pretix/control/logdisplay.py:851 msgid "The quota has been changed." -msgstr "" +msgstr "할당량이 변경되었습니다" #: pretix/control/logdisplay.py:852 msgid "The quota has closed." -msgstr "" +msgstr "할당량이 마감되었습니다" #: pretix/control/logdisplay.py:853 pretix/control/views/item.py:1075 msgid "The quota has been re-opened." -msgstr "" +msgstr "할당량이 다시 열렸습니다." #: pretix/control/logdisplay.py:860 msgid "The question has been added." -msgstr "" +msgstr "질문이 추가되었습니다." #: pretix/control/logdisplay.py:861 msgid "The question has been deleted." -msgstr "" +msgstr "질문이 삭제되었습니다." #: pretix/control/logdisplay.py:862 msgid "The question has been changed." -msgstr "" +msgstr "질문이 변겅되었습니다." #: pretix/control/logdisplay.py:863 msgid "The question has been reordered." -msgstr "" +msgstr "질문이 재주문되었습니다." #: pretix/control/logdisplay.py:870 msgid "The discount has been added." -msgstr "" +msgstr "할인이 추가되었습니다." #: pretix/control/logdisplay.py:871 msgid "The discount has been deleted." -msgstr "" +msgstr "할인이 삭제되었습니다." #: pretix/control/logdisplay.py:872 msgid "The discount has been changed." -msgstr "" +msgstr "할인이 변경되었습니다." #: pretix/control/logdisplay.py:896 #, python-brace-format msgid "" "Position #{posid} has been checked in manually at {datetime} on list \"{list}" "\"." -msgstr "" +msgstr "위치 #{posid}가 목록 \"{list}\"에서 {datetime}에 수동으로 체크인되었습니다." #: pretix/control/logdisplay.py:901 #, python-brace-format msgid "" "Position #{posid} has been checked in again at {datetime} on list \"{list}\"." -msgstr "" +msgstr "위치 #{posid}가 목록 \"{list}\"에서 {datetime}에 다시 체크인되었습니다." #: pretix/control/middleware.py:153 pretix/control/middleware.py:167 msgid "" "The selected event was not found or you have no permission to administrate " "it." -msgstr "" +msgstr "선택한 이벤트를 찾을 수 없거나 관리 권한이 없습니다." #: pretix/control/middleware.py:180 pretix/control/middleware.py:190 msgid "" "The selected organizer was not found or you have no permission to " "administrate it." -msgstr "" +msgstr "선택한 주최자를 찾을 수 없거나 관리 권한이 없습니다." #: pretix/control/navigation.py:37 pretix/control/navigation.py:338 #: pretix/control/templates/pretixcontrol/dashboard.html:3 #: pretix/control/templates/pretixcontrol/dashboard.html:5 msgid "Dashboard" -msgstr "" +msgstr "대시보드 (시스템 또는 애플리케이션의 정보를 시각적으로 요약해 보여주는 " +"화면이나 인터페이스를 의미)" #: pretix/control/navigation.py:49 pretix/control/navigation.py:382 #: pretix/control/navigation.py:487 @@ -16616,7 +16631,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/organizers/mail.html:19 #: pretix/control/templates/pretixcontrol/organizers/property_edit.html:15 msgid "General" -msgstr "" +msgstr "일반적인" #: pretix/control/navigation.py:57 #: pretix/control/templates/pretixcontrol/event/quick_setup.html:151 @@ -16628,7 +16643,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:43 #: pretix/presale/templates/pretixpresale/event/order.html:86 msgid "Payment" -msgstr "" +msgstr "지불" #: pretix/control/navigation.py:73 pretix/control/views/event.py:1520 #: pretix/control/views/event.py:1522 pretix/control/views/event.py:1554 @@ -16640,27 +16655,27 @@ msgstr "" #: pretix/presale/templates/pretixpresale/organizers/index.html:89 #: pretix/presale/templates/pretixpresale/organizers/index.html:91 msgid "Tickets" -msgstr "" +msgstr "티켓" #: pretix/control/navigation.py:89 #: pretix/control/templates/pretixcontrol/event/tax_index.html:3 #: pretix/control/templates/pretixcontrol/event/tax_index.html:5 msgid "Tax rules" -msgstr "" +msgstr "세금 규정" #: pretix/control/navigation.py:97 msgid "Invoicing" -msgstr "" +msgstr "송장 처리" #: pretix/control/navigation.py:105 msgctxt "action" msgid "Cancellation" -msgstr "" +msgstr "취소" #: pretix/control/navigation.py:113 #: pretix/control/templates/pretixcontrol/event/widget.html:8 msgid "Widget" -msgstr "" +msgstr "위젯 (웹사이트나 앱에 추가하는 작고 유용한 도구나 정보 표시 창)" #: pretix/control/navigation.py:126 pretix/control/navigation.py:435 #: pretix/control/navigation.py:480 @@ -16670,19 +16685,19 @@ msgstr "" #: pretix/plugins/returnurl/apps.py:40 #: pretix/plugins/ticketoutputpdf/apps.py:55 msgid "Settings" -msgstr "" +msgstr "설정" #: pretix/control/navigation.py:164 msgid "Categories" -msgstr "" +msgstr "카테고리" #: pretix/control/navigation.py:180 msgid "Discounts" -msgstr "" +msgstr "할인" #: pretix/control/navigation.py:213 msgid "Overview" -msgstr "" +msgstr "개요" #: pretix/control/navigation.py:221 #: pretix/control/templates/pretixcontrol/order/index.html:825 @@ -16692,36 +16707,36 @@ msgstr "" #: pretix/plugins/reports/accountingreport.py:684 #: pretix/presale/templates/pretixpresale/event/order.html:137 msgid "Refunds" -msgstr "" +msgstr "환불" #: pretix/control/navigation.py:247 msgid "Import" -msgstr "" +msgstr "수입품" #: pretix/control/navigation.py:276 msgid "All vouchers" -msgstr "" +msgstr "모든 바우처" #: pretix/control/navigation.py:284 msgid "Tags" -msgstr "" +msgstr "태그" #: pretix/control/navigation.py:296 msgctxt "navigation" msgid "Check-in" -msgstr "" +msgstr "체크인" #: pretix/control/navigation.py:313 #: pretix/control/templates/pretixcontrol/checkin/checkins.html:4 #: pretix/control/templates/pretixcontrol/checkin/checkins.html:6 msgid "Check-in history" -msgstr "" +msgstr "체크인 역사" #: pretix/control/navigation.py:356 #: pretix/control/templates/pretixcontrol/event/plugins.html:20 #: pretix/control/templates/pretixcontrol/orders/search.html:20 msgid "Search" -msgstr "" +msgstr "조사" #: pretix/control/navigation.py:368 #: pretix/control/templates/pretixcontrol/order/index.html:731 @@ -16729,24 +16744,24 @@ msgstr "" #: pretix/plugins/reports/accountingreport.py:677 #: pretix/plugins/reports/accountingreport.py:871 msgid "Payments" -msgstr "" +msgstr "지불" #: pretix/control/navigation.py:376 msgid "User settings" -msgstr "" +msgstr "사용자 설정" #: pretix/control/navigation.py:387 #: pretix/control/templates/pretixcontrol/user/settings.html:16 msgid "Notifications" -msgstr "" +msgstr "알림" #: pretix/control/navigation.py:392 msgid "2FA" -msgstr "" +msgstr "2단계 인증" #: pretix/control/navigation.py:397 msgid "Authorized apps" -msgstr "" +msgstr "허가된 앱" #: pretix/control/navigation.py:402 #: pretix/control/templates/pretixcontrol/user/history.html:4 @@ -16754,95 +16769,98 @@ msgstr "" #: pretix/control/templates/pretixcontrol/user/history.html:10 #: pretix/control/templates/pretixcontrol/user/settings.html:70 msgid "Account history" -msgstr "" +msgstr "계정 기록" #: pretix/control/navigation.py:417 msgid "All users" -msgstr "" +msgstr "모든 사용자" #: pretix/control/navigation.py:422 #: pretix/control/templates/pretixcontrol/user/staff_session_list.html:5 #: pretix/control/templates/pretixcontrol/user/staff_session_list.html:7 msgid "Admin sessions" -msgstr "" +msgstr "관리자 세션" #: pretix/control/navigation.py:429 #: pretix/control/templates/pretixcontrol/global_settings_base.html:5 #: pretix/control/templates/pretixcontrol/global_settings_base.html:7 msgid "Global settings" -msgstr "" +msgstr "전체 설정" #: pretix/control/navigation.py:440 msgid "Update check" -msgstr "" +msgstr "업데이트 확인" #: pretix/control/navigation.py:445 msgid "License check" -msgstr "" +msgstr "사용 권한 검증" #: pretix/control/navigation.py:450 msgid "System report" -msgstr "" +msgstr "시스템 보고서" #: pretix/control/navigation.py:494 #: pretix/control/templates/pretixcontrol/organizers/properties.html:5 msgid "Event metadata" -msgstr "" +msgstr "이벤트 메타데이터" #: pretix/control/navigation.py:515 #: pretix/control/templates/pretixcontrol/organizers/webhooks.html:6 msgid "Webhooks" -msgstr "" +msgstr "웹훅 (어떤 일이 생기면 자동으로 그 사실을 다른 서비스에 알려주는 ‘콜백’ 기능)" #: pretix/control/navigation.py:548 msgid "Acceptance" -msgstr "" +msgstr "승인" #: pretix/control/navigation.py:569 #: pretix/control/templates/pretixcontrol/organizers/customers.html:6 #: pretix/control/templates/pretixcontrol/organizers/customers.html:9 msgid "Customers" -msgstr "" +msgstr "고객" #: pretix/control/navigation.py:588 #: pretix/control/templates/pretixcontrol/organizers/ssoclients.html:4 #: pretix/control/templates/pretixcontrol/organizers/ssoclients.html:6 msgid "SSO clients" -msgstr "" +msgstr "SSO 클라이언트 (하나의 로그인으로 접근할 수 있도록 SSO 시스템에 등록된 " +"애플리케이션들을 의미함)" #: pretix/control/navigation.py:597 #: pretix/control/templates/pretixcontrol/organizers/ssoproviders.html:4 #: pretix/control/templates/pretixcontrol/organizers/ssoproviders.html:6 msgid "SSO providers" msgstr "" +"SSO 제공자 (사용자 로그인 정보를 관리하고, 여러 앱이나 서비스가 그 로그인 " +"정보를 믿고 사용할 수 있도록 인증을 제공하는 주체를 의미함)" #: pretix/control/navigation.py:626 pretix/control/navigation.py:633 msgid "Devices" -msgstr "" +msgstr "장치" #: pretix/control/permissions.py:72 pretix/control/permissions.py:109 #: pretix/control/permissions.py:140 pretix/control/permissions.py:157 msgid "You do not have permission to view this content." -msgstr "" +msgstr "이 콘텐츠를 볼 권한이 없습니다" #: pretix/control/templates/pretixcontrol/auth/base.html:44 #: pretix/control/templates/pretixcontrol/base.html:360 #, python-format msgid "You are currently working on behalf of %(user)s." -msgstr "" +msgstr "현재 %(user)s 님을 대신하여 작업 중입니다." #: pretix/control/templates/pretixcontrol/auth/base.html:49 #: pretix/control/templates/pretixcontrol/base.html:365 msgid "Stop impersonating" -msgstr "" +msgstr "대리 로그인 종료 (다른 사람 계정으로 대신 작업하는 것을 멈추세요)" #: pretix/control/templates/pretixcontrol/auth/forgot.html:14 msgid "Send recovery information" -msgstr "" +msgstr "복구 정보를 전송하다" #: pretix/control/templates/pretixcontrol/auth/invite.html:7 msgid "Accept an invitation" -msgstr "" +msgstr "초대장을 수락하다" #: pretix/control/templates/pretixcontrol/auth/invite.html:10 #, python-format @@ -16851,17 +16869,20 @@ msgid "" "you can log in first and then click this link again to " "accept the invitation with your existing account." msgstr "" +"이 사이트에 이미 다른 이메일 주소를 가진 계정이 있는 경우, 먼저 " +"<%(login_href)s>로그인한 다음 이 링크를 다시 클릭하여 기존 계정과의 초대를 " +"수락할 수 있습니다." #: pretix/control/templates/pretixcontrol/auth/invite.html:23 #: pretix/control/templates/pretixcontrol/auth/register.html:18 msgid "Login" -msgstr "" +msgstr "로그인" #: pretix/control/templates/pretixcontrol/auth/invite.html:27 #: pretix/control/templates/pretixcontrol/auth/login.html:43 #: pretix/control/templates/pretixcontrol/auth/register.html:22 msgid "Register" -msgstr "" +msgstr "가입하다" #: pretix/control/templates/pretixcontrol/auth/login.html:27 #: pretix/presale/templates/pretixpresale/fragment_login_status.html:19 @@ -16870,26 +16891,27 @@ msgstr "" #: pretix/presale/templates/pretixpresale/organizers/customer_resetpw.html:28 #: pretix/presale/templates/pretixpresale/organizers/customer_resetpw.html:44 msgid "Log in" -msgstr "" +msgstr "로그인" #: pretix/control/templates/pretixcontrol/auth/login.html:38 msgid "Lost password?" -msgstr "" +msgstr "비밀번호를 잊으셨나요?" #: pretix/control/templates/pretixcontrol/auth/login_2fa.html:9 #: pretix/control/templates/pretixcontrol/user/reauth.html:9 msgid "Welcome back!" -msgstr "" +msgstr "다시 오신 것을 환영합니다!" #: pretix/control/templates/pretixcontrol/auth/login_2fa.html:11 msgid "" "You configured your account to require authentication with a second medium, " "e.g. your phone. Please enter your verification code here:" -msgstr "" +msgstr "두 번째 매체(예: 휴대폰)로 인증이 필요하도록 계정을 구성했습니다. 여기에 " +"인증 코드를 입력하세요:" #: pretix/control/templates/pretixcontrol/auth/login_2fa.html:14 msgid "Token" -msgstr "" +msgstr "토큰" #: pretix/control/templates/pretixcontrol/auth/login_2fa.html:18 #: pretix/control/templates/pretixcontrol/user/reauth.html:22 @@ -16897,12 +16919,17 @@ msgid "" "WebAuthn failed. Check that the correct authentication device is correctly " "plugged in." msgstr "" +"WebAuthn 인증에 실패했습니다. 올바른 인증 장치가 제대로 연결되어 있는지 " +"확인하세요 (WebAuthn은 웹에서 사용하는 강력한 생체인증 또는 하드웨어 인증 " +"장치(FIDO 보안 키 등) 기반 인증 표준입니다)" #: pretix/control/templates/pretixcontrol/auth/login_2fa.html:22 msgid "" "Alternatively, connect your WebAuthn device. If it has a button, touch it " "now. You might have to unplug the device and plug it back in again." msgstr "" +"또는 WebAuthn 장치에 연결합니다. 버튼이 있는 경우 지금 터치하세요. 장치의 " +"플러그를 뽑았다가 다시 꽂아야 할 수도 있습니다." #: pretix/control/templates/pretixcontrol/auth/login_2fa.html:27 #: pretix/control/templates/pretixcontrol/email_setup.html:123 @@ -16931,42 +16958,47 @@ msgstr "계속하기" #: pretix/control/templates/pretixcontrol/auth/oauth_authorization.html:8 msgid "Authorize an application" -msgstr "" +msgstr "애플리케이션 승인" #: pretix/control/templates/pretixcontrol/auth/oauth_authorization.html:18 -#, python-format +#, fuzzy, python-format msgid "" "Do you really want to grant the application %(application)s " "access to your pretix account?" -msgstr "" +msgstr "애플리케이션에 프리픽스 계정에 %(애플리케이션) 접근 권한을 " +"부여하시겠습니까?" #: pretix/control/templates/pretixcontrol/auth/oauth_authorization.html:24 -#, python-format +#, fuzzy, python-format msgid "You are currently logged in as %(user)s." -msgstr "" +msgstr "현재 %(사용자)으로 로그인되어 있습니다." #: pretix/control/templates/pretixcontrol/auth/oauth_authorization.html:28 msgid "The application requires the following permissions:" -msgstr "" +msgstr "애플리케이션에는 다음 권한이 필요합니다:" #: pretix/control/templates/pretixcontrol/auth/oauth_authorization.html:35 msgid "" "Please select the organizer accounts this application should get access to:" -msgstr "" +msgstr "이 애플리케이션이 액세스할 수 있는 주최자 계정을 선택해 주세요:" #: pretix/control/templates/pretixcontrol/auth/oauth_authorization.html:41 +#, fuzzy msgid "" "This application has not been reviewed by the pretix team. " "Granting access to your pretix account happens at your own risk." msgstr "" +"이 애플리케이션은 프리픽스 팀에 의해 <강함>으로 검토되었습니다. " +"프리픽스 계정에 대한 액세스 권한을 부여하는 것은 본인의 위험 부담으로 " +"이루어집니다." #: pretix/control/templates/pretixcontrol/auth/oauth_authorization.html:54 msgid "Error:" -msgstr "" +msgstr "에러:" #: pretix/control/templates/pretixcontrol/auth/recover.html:7 msgid "Set new password" -msgstr "" +msgstr "새 비밀번호를 설정하세요" #: pretix/control/templates/pretixcontrol/auth/recover.html:15 #: pretix/control/templates/pretixcontrol/checkin/list_edit.html:124 @@ -17042,53 +17074,54 @@ msgstr "저장하기" #: pretix/control/templates/pretixcontrol/auth/register.html:7 msgid "Create a new account" -msgstr "" +msgstr "새 계정을 생성하세요" #: pretix/control/templates/pretixcontrol/base.html:103 msgid "Toggle navigation" -msgstr "" +msgstr "탐색 전환" #: pretix/control/templates/pretixcontrol/base.html:118 #: pretix/control/templates/pretixcontrol/base.html:141 #: pretix/control/templates/pretixcontrol/base.html:145 #: pretix/control/templates/pretixcontrol/base.html:146 msgid "Go to shop" -msgstr "" +msgstr "쇼핑하러 가기" #: pretix/control/templates/pretixcontrol/base.html:124 #: pretix/control/templates/pretixcontrol/base.html:152 #: pretix/control/templates/pretixcontrol/base.html:153 msgid "Public profile" -msgstr "" +msgstr "공개 프로필" #: pretix/control/templates/pretixcontrol/base.html:204 msgid "End admin session" -msgstr "" +msgstr "관리 세션 종료" #: pretix/control/templates/pretixcontrol/base.html:216 msgid "Account Settings" -msgstr "" +msgstr "계정 설정" #: pretix/control/templates/pretixcontrol/base.html:221 #: pretix/control/templates/pretixcontrol/base.html:223 #: pretix/presale/templates/pretixpresale/fragment_login_status.html:14 msgid "Log out" -msgstr "" +msgstr "로그 아웃" #: pretix/control/templates/pretixcontrol/base.html:249 msgid "Organizer account" -msgstr "" +msgstr "주최자 계정" #: pretix/control/templates/pretixcontrol/base.html:272 msgid "Search for events" -msgstr "" +msgstr "이벤트 검색" #: pretix/control/templates/pretixcontrol/base.html:329 #: pretix/presale/templates/pretixpresale/base.html:54 msgid "" "We've detected that you are using Microsoft Internet Explorer." -msgstr "" +msgstr "귀하께서 Microsoft Internet Explorer을 사용하고 계신 것을 " +"감지했습니다." #: pretix/control/templates/pretixcontrol/base.html:332 #: pretix/presale/templates/pretixpresale/base.html:57 @@ -17096,6 +17129,8 @@ msgid "" "Internet Explorer is an old browser that does not support lots of recent web-" "based technologies and is no longer supported by this website." msgstr "" +"Internet Explorer는 오래된 브라우저로, 많은 최신 웹 기반 기술을 지원하지 " +"않으며 더 이상 이 웹사이트에서 지원하지 않습니다." #: pretix/control/templates/pretixcontrol/base.html:336 #: pretix/presale/templates/pretixpresale/base.html:61 @@ -17103,27 +17138,34 @@ msgid "" "We kindly ask you to move to one of our supported browsers, such as " "Microsoft Edge, Mozilla Firefox, Google Chrome, or Safari." msgstr "" +"Microsoft Edge, Mozilla Firefox, Google Chrome 또는 Safari와 같은 지원 " +"브라우저 중 하나로 이동해 주시기 바랍니다." #: pretix/control/templates/pretixcontrol/base.html:345 msgid "" "Please leave a short comment on what you did in the following admin sessions:" -msgstr "" +msgstr "다음 관리 세션에서 수행한 작업에 대해 짧은 댓글을 남겨주세요:" #: pretix/control/templates/pretixcontrol/base.html:376 msgid "Read more" -msgstr "" +msgstr "더 읽기" #: pretix/control/templates/pretixcontrol/base.html:393 +#, fuzzy msgid "" "Your event contains test mode orders even though " "test mode has been disabled. You should delete those orders " "to make sure they do not show up in your reports and statistics and block " "people from actually buying tickets." msgstr "" +"이벤트에는 테스트 모드가 비활성화되었음에도 불구하고 테스트 " +"모드 주문이 포함되어 있습니다. 이러한 주문이 보고서와 통계에 " +"나타나지 않도록 삭제하고 사람들이 실제로 티켓을 구매하지 못하도록 차단해야 " +"합니다." #: pretix/control/templates/pretixcontrol/base.html:400 msgid "Show all test mode orders" -msgstr "" +msgstr "모든 테스트 모드 순서 표시하시오" #: pretix/control/templates/pretixcontrol/base.html:408 msgid "" @@ -17133,12 +17175,18 @@ msgid "" "disable this feature or enter your email address to get notified via email " "if a new update arrives. This message will disappear once you clicked it." msgstr "" +"버전 1.2.0부터 프리틱스는 백그라운드에서 업데이트를 자동으로 확인합니다. 이 " +"확인 중에 익명의 데이터가 프리틱스 개발자가 운영하는 서버로 전송됩니다. " +"자세한 내용을 확인하려면 이 메시지를 클릭하고, 이 기능을 비활성화하거나, " +"이메일 주소를 입력하여 새 업데이트가 도착하면 이메일을 통해 알림을 받으세요. " +"이 메시지를 클릭하면 사라집니다." #: pretix/control/templates/pretixcontrol/base.html:421 msgid "" "Click here to do a license compliance check to make sure your usage of " "pretix is in line with pretix' license." -msgstr "" +msgstr "여기를 클릭하여 라이선스 준수 여부를 확인하여 프리틱스의 라이선스 사용이 " +"프리틱스의 라이선스와 일치하는지 확인하세요." #: pretix/control/templates/pretixcontrol/base.html:430 msgid "" @@ -17146,12 +17194,16 @@ msgid "" "check that you have completed all installation steps and your cronjob is " "executed correctly." msgstr "" +"pretix의 cronjob 구성 요소가 지난 몇 시간 동안 실행되지 않았습니다. 모든 " +"설치 단계를 완료했는지, cronjob이 올바르게 실행되었는지 확인해 주세요." #: pretix/control/templates/pretixcontrol/base.html:439 msgid "" "pretix is running in debug mode. For security reasons, please never run " "debug mode on a production instance." msgstr "" +"pretix가 디버그 모드로 실행 중입니다. 보안상의 이유로, 운영 환경(프로덕션 " +"인스턴스)에서는 절대 디버그 모드를 사용하지 마십시오" #: pretix/control/templates/pretixcontrol/base.html:445 msgid "" @@ -30966,10 +31018,8 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:509 #: pretix/presale/templates/pretixpresale/fragment_modals.html:48 -#, fuzzy -#| msgid "Event description" msgid "Renew reservation" -msgstr "이벤트 설명" +msgstr "예약 갱신" #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:514 msgid "Overview of your ordered products." From d03af3ce065a68820b189337ae5ce11a725ad80a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A1=B0=EC=A0=95=ED=99=94?= Date: Wed, 4 Jun 2025 03:17:17 +0200 Subject: [PATCH 24/98] Translations: Update Korean Currently translated at 97.6% (246 of 252 strings) Translation: pretix/pretix (JavaScript parts) Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/ko/ powered by weblate --- src/pretix/locale/ko/LC_MESSAGES/djangojs.po | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/pretix/locale/ko/LC_MESSAGES/djangojs.po b/src/pretix/locale/ko/LC_MESSAGES/djangojs.po index bf433de8ba..9b2ffd4848 100644 --- a/src/pretix/locale/ko/LC_MESSAGES/djangojs.po +++ b/src/pretix/locale/ko/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-30 10:36+0000\n" -"PO-Revision-Date: 2025-05-28 08:00+0000\n" +"PO-Revision-Date: 2025-06-04 06:32+0000\n" "Last-Translator: 조정화 \n" "Language-Team: Korean \n" @@ -733,7 +733,7 @@ msgstr "카트가 만료되었습니다" #: pretix/static/pretixpresale/js/ui/cart.js:59 #: pretix/static/pretixpresale/js/ui/cart.js:87 msgid "Your cart is about to expire." -msgstr "" +msgstr "카트가 곧 만료됩니다." #: pretix/static/pretixpresale/js/ui/cart.js:64 msgid "The items in your cart are reserved for you for one minute." @@ -764,11 +764,11 @@ msgstr "" #: pretix/static/pretixpresale/js/ui/cart.js:90 msgid "Do you want to renew the reservation period?" -msgstr "" +msgstr "예약 기간을 갱신하시겠습니까?" #: pretix/static/pretixpresale/js/ui/cart.js:93 msgid "Renew reservation" -msgstr "" +msgstr "예약 갱신" #: pretix/static/pretixpresale/js/ui/main.js:194 msgid "The organizer keeps %(currency)s %(amount)s" @@ -811,12 +811,13 @@ msgstr "수량 증가" #: pretix/static/pretixpresale/js/widget/widget.js:19 msgctxt "widget" msgid "Filter events by" -msgstr "" +msgstr "이벤트를 걸러내다(이벤트 중에서 특정 조건에 맞는 것만 골라서 보여주거나, " +"나머지를 숨기는 것을 의미)" #: pretix/static/pretixpresale/js/widget/widget.js:20 msgctxt "widget" msgid "Filter" -msgstr "" +msgstr "걸러내다(데이터나 목록, 정보에서 조건에 맞는 것만 보여주기라는 의미)" #: pretix/static/pretixpresale/js/widget/widget.js:21 #: pretix/static/pretixpresale/js/widget/widget.v1.js:19 @@ -1075,7 +1076,7 @@ msgstr "체크아웃 재개" #: pretix/static/pretixpresale/js/widget/widget.js:63 msgctxt "widget" msgid "You cannot cancel this operation. Please wait for loading to finish." -msgstr "" +msgstr "이 작업은 취소할 수 없습니다. 로딩이 끝날 때까지 기다려 주세요" #: pretix/static/pretixpresale/js/widget/widget.js:64 #: pretix/static/pretixpresale/js/widget/widget.v1.js:60 From 2f2991105a7d556190b3e00379bdb12980d0c858 Mon Sep 17 00:00:00 2001 From: Francisco Rosa Date: Wed, 4 Jun 2025 21:56:16 +0200 Subject: [PATCH 25/98] Translations: Update Portuguese Currently translated at 5.2% (309 of 5900 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/pt/ powered by weblate --- src/pretix/locale/pt/LC_MESSAGES/django.po | 311 +++++++++++---------- 1 file changed, 168 insertions(+), 143 deletions(-) diff --git a/src/pretix/locale/pt/LC_MESSAGES/django.po b/src/pretix/locale/pt/LC_MESSAGES/django.po index 42b0c9dd94..a7831128f0 100644 --- a/src/pretix/locale/pt/LC_MESSAGES/django.po +++ b/src/pretix/locale/pt/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-30 10:35+0000\n" -"PO-Revision-Date: 2025-02-03 16:07+0000\n" -"Last-Translator: Cornelius Kibelka \n" +"PO-Revision-Date: 2025-06-05 04:00+0000\n" +"Last-Translator: Francisco Rosa \n" "Language-Team: Portuguese \n" "Language: pt\n" @@ -17,59 +17,59 @@ 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.9.2\n" +"X-Generator: Weblate 5.11.4\n" #: pretix/_base_settings.py:87 msgid "English" -msgstr "" +msgstr "Inglês" #: pretix/_base_settings.py:88 msgid "German" -msgstr "" +msgstr "Alemão" #: pretix/_base_settings.py:89 msgid "German (informal)" -msgstr "" +msgstr "Alemão (informal)" #: pretix/_base_settings.py:90 msgid "Arabic" -msgstr "" +msgstr "Arabe" #: pretix/_base_settings.py:91 msgid "Basque" -msgstr "" +msgstr "Basco" #: pretix/_base_settings.py:92 msgid "Catalan" -msgstr "" +msgstr "Catalão" #: pretix/_base_settings.py:93 msgid "Chinese (simplified)" -msgstr "" +msgstr "Chinês (simplificado)" #: pretix/_base_settings.py:94 msgid "Chinese (traditional)" -msgstr "" +msgstr "chinês (tradicional)" #: pretix/_base_settings.py:95 msgid "Czech" -msgstr "" +msgstr "Tcheco" #: pretix/_base_settings.py:96 msgid "Croatian" -msgstr "" +msgstr "Croata" #: pretix/_base_settings.py:97 msgid "Danish" -msgstr "" +msgstr "Dinamarquês" #: pretix/_base_settings.py:98 msgid "Dutch" -msgstr "Alemão" +msgstr "Holandês" #: pretix/_base_settings.py:99 msgid "Dutch (informal)" -msgstr "Alemão (informal)" +msgstr "Holandês (informal)" #: pretix/_base_settings.py:100 msgid "French" @@ -81,7 +81,7 @@ msgstr "Finlandês" #: pretix/_base_settings.py:102 msgid "Galician" -msgstr "" +msgstr "Galego" #: pretix/_base_settings.py:103 msgid "Greek" @@ -89,11 +89,11 @@ msgstr "Grego" #: pretix/_base_settings.py:104 msgid "Hebrew" -msgstr "" +msgstr "Hebraico" #: pretix/_base_settings.py:105 msgid "Indonesian" -msgstr "" +msgstr "Indonésio" #: pretix/_base_settings.py:106 msgid "Italian" @@ -101,15 +101,15 @@ msgstr "Italiano" #: pretix/_base_settings.py:107 msgid "Japanese" -msgstr "" +msgstr "Japonês" #: pretix/_base_settings.py:108 msgid "Latvian" -msgstr "" +msgstr "Letão" #: pretix/_base_settings.py:109 msgid "Norwegian Bokmål" -msgstr "" +msgstr "Bokmål norueguês" #: pretix/_base_settings.py:110 msgid "Polish" @@ -125,7 +125,7 @@ msgstr "Português (Brasil)" #: pretix/_base_settings.py:113 msgid "Romanian" -msgstr "" +msgstr "Romano" #: pretix/_base_settings.py:114 msgid "Russian" @@ -133,11 +133,11 @@ msgstr "Russo" #: pretix/_base_settings.py:115 msgid "Slovak" -msgstr "" +msgstr "Eslovaco" #: pretix/_base_settings.py:116 msgid "Swedish" -msgstr "" +msgstr "Suéco" #: pretix/_base_settings.py:117 msgid "Spanish" @@ -149,7 +149,7 @@ msgstr "Turco" #: pretix/_base_settings.py:119 msgid "Ukrainian" -msgstr "" +msgstr "Ucraniano" #: pretix/api/auth/devicesecurity.py:58 msgid "" @@ -184,10 +184,8 @@ msgid "Allowed URIs list, space separated" msgstr "Lista de URIs permitidos, separados por espaço" #: pretix/api/models.py:47 -#, fuzzy -#| msgid "Allowed URIs list, space separated" msgid "Allowed Post Logout URIs list, space separated" -msgstr "Lista de URIs permitidos, separados por espaço" +msgstr "Lista de URIs de saída de postagem permitidas, separadas por espaços" #: pretix/api/models.py:51 pretix/base/models/customers.py:406 #: pretix/plugins/paypal/payment.py:113 pretix/plugins/paypal2/payment.py:110 @@ -233,7 +231,7 @@ msgstr "Comentário" #: pretix/api/serializers/cart.py:168 pretix/api/serializers/order.py:1414 msgid "The product \"{}\" is not assigned to a quota." -msgstr "" +msgstr "O produto \"{}\" não está atribuído a uma cota." #: pretix/api/serializers/checkin.py:65 pretix/base/models/event.py:1685 #: pretix/base/models/items.py:1917 pretix/base/models/items.py:2184 @@ -251,6 +249,8 @@ msgid "" "Events cannot be created as 'live'. Quotas and payment must be added to the " "event before sales can go live." msgstr "" +"Eventos não podem ser criados como \"ao vivo\". Cotas e pagamentos devem ser " +"adicionados ao evento antes que as vendas sejam publicadas." #: pretix/api/serializers/event.py:246 pretix/api/serializers/event.py:555 #, python-brace-format @@ -281,21 +281,23 @@ msgstr "A propriedade de metadados do item '{name}' não existe." #: pretix/api/serializers/item.py:207 pretix/control/forms/item.py:1267 msgid "The bundled item must not be the same item as the bundling one." -msgstr "" +msgstr "O item agrupado não deve ser o mesmo item que o do pacote." #: pretix/api/serializers/item.py:210 pretix/control/forms/item.py:1269 msgid "The bundled item must not have bundles on its own." -msgstr "" +msgstr "O item agrupado não deve ter pacotes próprios." #: pretix/api/serializers/item.py:298 msgid "" "Updating add-ons, bundles, or variations via PATCH/PUT is not supported. " "Please use the dedicated nested endpoint." msgstr "" +"Não há suporte para atualização de complementos, pacotes ou variações via " +"PATCH/PUT. Use o endpoint aninhado dedicado." #: pretix/api/serializers/item.py:306 msgid "Only admission products can currently be personalized." -msgstr "" +msgstr "Atualmente, somente produtos de admissão podem ser personalizados." #: pretix/api/serializers/item.py:317 msgid "" @@ -317,6 +319,8 @@ msgid "" "Updating options via PATCH/PUT is not supported. Please use the dedicated " "nested endpoint." msgstr "" +"A atualização de opções via PATCH/PUT não é suportada. Use o endpoint " +"aninhado dedicado." #: pretix/api/serializers/item.py:533 pretix/control/forms/item.py:178 msgid "Question cannot depend on a question asked during check-in." @@ -351,7 +355,7 @@ msgstr "" #: pretix/api/serializers/order.py:79 #, python-brace-format msgid "\"{input}\" is not a valid choice." -msgstr "" +msgstr "\"{input}\" não é uma escolha válida." #: pretix/api/serializers/order.py:1375 pretix/api/views/cart.py:224 #: pretix/base/services/orders.py:1533 @@ -367,11 +371,12 @@ msgstr "O produto \"{}\" não está disponível nesta data." msgid "" "There is not enough quota available on quota \"{}\" to perform the operation." msgstr "" +"Não há cota suficiente disponível na cota \"{}\" para executar a operação." #: pretix/api/serializers/organizer.py:105 #: pretix/control/forms/organizer.py:892 pretix/presale/forms/customer.py:456 msgid "An account with this email address is already registered." -msgstr "" +msgstr "Uma conta com este endereço de e-mail já está registrada." #: pretix/api/serializers/organizer.py:238 #: pretix/control/forms/organizer.py:741 @@ -400,11 +405,11 @@ msgstr "Este usuário já tem permissões para esta equipe." #: pretix/api/views/cart.py:209 msgid "" "The specified voucher has already been used the maximum number of times." -msgstr "" +msgstr "O voucher especificado já foi utilizado o número máximo de vezes." #: pretix/api/views/checkin.py:611 pretix/api/views/checkin.py:618 msgid "Medium connected to other event" -msgstr "" +msgstr "Meio conectado a outro evento" #: pretix/api/views/oauth.py:107 pretix/control/logdisplay.py:692 #, python-brace-format @@ -462,9 +467,8 @@ msgid "Order expired" msgstr "Pedido expirado" #: pretix/api/webhooks.py:261 -#, fuzzy msgid "Order expiry date changed" -msgstr "Informações de pedido alteradas" +msgstr "Data de validade do pedido alterada" #: pretix/api/webhooks.py:265 pretix/base/notifications.py:269 msgid "Order information changed" @@ -480,9 +484,8 @@ msgid "Order changed" msgstr "Pedido alterado" #: pretix/api/webhooks.py:277 -#, fuzzy msgid "Refund of payment created" -msgstr "Reembolso externo de pagamento" +msgstr "Reembolso de pagamento criado" #: pretix/api/webhooks.py:281 pretix/base/notifications.py:293 msgid "External refund of payment" @@ -490,28 +493,23 @@ msgstr "Reembolso externo de pagamento" #: pretix/api/webhooks.py:285 msgid "Refund of payment requested by customer" -msgstr "" +msgstr "Reembolso do pagamento solicitado pelo cliente" #: pretix/api/webhooks.py:289 -#, fuzzy msgid "Refund of payment completed" -msgstr "Reembolso externo de pagamento" +msgstr "Reembolso de pagamento concluído" #: pretix/api/webhooks.py:293 -#, fuzzy msgid "Refund of payment canceled" -msgstr "Reembolso externo de pagamento" +msgstr "Reembolso de pagamento cancelado" #: pretix/api/webhooks.py:297 -#, fuzzy msgid "Refund of payment failed" -msgstr "Reembolso externo de pagamento" +msgstr "Falha no reembolso do pagamento" #: pretix/api/webhooks.py:301 -#, fuzzy -#| msgid "Payment provider" msgid "Payment confirmed" -msgstr "Provedor de pagamento" +msgstr "Pagamento confirmado" #: pretix/api/webhooks.py:305 msgid "Order approved" @@ -522,18 +520,16 @@ msgid "Order denied" msgstr "Pedido negado" #: pretix/api/webhooks.py:313 -#, fuzzy -#| msgid "Order denied" msgid "Order deleted" -msgstr "Pedido negado" +msgstr "Pedido excluído" #: pretix/api/webhooks.py:317 msgid "Ticket checked in" -msgstr "Ingresso registrado" +msgstr "Check-in do bilhete" #: pretix/api/webhooks.py:321 msgid "Ticket check-in reverted" -msgstr "Ingresso revertido" +msgstr "O check-in do bilhete foi revertido" #: pretix/api/webhooks.py:325 msgid "Event created" @@ -544,14 +540,13 @@ msgid "Event details changed" msgstr "Detalhes do evento alterados" #: pretix/api/webhooks.py:333 -#, fuzzy msgid "Event deleted" -msgstr "Evento criado" +msgstr "Evento excluído" #: pretix/api/webhooks.py:337 msgctxt "subevent" msgid "Event series date added" -msgstr "Data da série de eventos adicionada" +msgstr "Data de adição da série de eventos" #: pretix/api/webhooks.py:341 msgctxt "subevent" @@ -561,64 +556,59 @@ msgstr "Data da série de eventos alterada" #: pretix/api/webhooks.py:345 msgctxt "subevent" msgid "Event series date deleted" -msgstr "Data da série de eventos apagada" +msgstr "Data da série de eventos excluída" #: pretix/api/webhooks.py:349 msgid "" "Product changed (including product added or deleted and including changes to " "nested objects like variations or bundles)" msgstr "" +"Produto alterado (incluindo produtos adicionados ou excluídos e incluindo " +"alterações em objetos aninhados, como variações ou pacotes)" #: pretix/api/webhooks.py:354 msgid "Shop taken live" -msgstr "" +msgstr "Loja ao vivo" #: pretix/api/webhooks.py:358 msgid "Shop taken offline" -msgstr "" +msgstr "Loja offline" #: pretix/api/webhooks.py:362 -#, fuzzy msgid "Test-Mode of shop has been activated" -msgstr "A equipe selecionada não pode ser deletada." +msgstr "O modo de teste da loja foi ativado" #: pretix/api/webhooks.py:366 -#, fuzzy msgid "Test-Mode of shop has been deactivated" -msgstr "A equipe selecionada não pode ser deletada." +msgstr "O modo de teste da loja foi desativado" #: pretix/api/webhooks.py:370 msgid "Waiting list entry added" -msgstr "" +msgstr "Adicionado em aguardando na lista de espera" #: pretix/api/webhooks.py:374 -#, fuzzy msgid "Waiting list entry changed" -msgstr "O valor foi creditado no seu cartão." +msgstr "Entrada na lista de espera alterada" #: pretix/api/webhooks.py:378 -#, fuzzy msgid "Waiting list entry deleted" -msgstr "O valor foi creditado no seu cartão." +msgstr "Entrada na lista de espera excluída" #: pretix/api/webhooks.py:382 msgid "Waiting list entry received voucher" -msgstr "" +msgstr "Inscrição na lista de espera recebeu voucher" #: pretix/api/webhooks.py:386 -#, fuzzy msgid "Customer account created" -msgstr "País" +msgstr "Conta de cliente criada" #: pretix/api/webhooks.py:390 -#, fuzzy msgid "Customer account changed" -msgstr "País" +msgstr "Conta do cliente alterada" #: pretix/api/webhooks.py:394 -#, fuzzy msgid "Customer account anonymized" -msgstr "País" +msgstr "Conta de cliente anonimizada" #: pretix/base/addressvalidation.py:100 pretix/base/addressvalidation.py:103 #: pretix/base/addressvalidation.py:108 pretix/base/forms/questions.py:1004 @@ -631,15 +621,15 @@ msgstr "País" #: pretix/plugins/banktransfer/payment.py:679 #: pretix/presale/forms/customer.py:151 msgid "This field is required." -msgstr "" +msgstr "Este campo é obrigatório." #: pretix/base/addressvalidation.py:213 msgid "Enter a postal code in the format XXX." -msgstr "" +msgstr "Digite um código postal no formato XXX." #: pretix/base/addressvalidation.py:222 pretix/base/addressvalidation.py:224 msgid "Enter a postal code in the format XXXX." -msgstr "" +msgstr "Digite um código postal no formato XXXX." #: pretix/base/auth.py:146 #, python-brace-format @@ -680,7 +670,7 @@ msgstr "Senha" #: pretix/base/auth.py:176 pretix/base/auth.py:183 msgid "Your password must contain both numeric and alphabetic characters." -msgstr "" +msgstr "Sua senha deve conter caracteres numéricos e alfabéticos." #: pretix/base/auth.py:202 pretix/base/auth.py:212 #, python-format @@ -688,8 +678,10 @@ 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] "Sua senha pode não ser a mesma que sua senha anterior." msgstr[1] "" +"Sua senha pode não ser a mesma que uma das suas senhas anteriores de " +"%(history_length)s." #: pretix/base/channels.py:168 msgid "Online shop" @@ -697,13 +689,15 @@ msgstr "Loja online" #: 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 "" +"API de canais de vendas de não vêm com nenhuma funcionalidade integrada, " +"mas podem ser usados para integrações personalizadas." #: pretix/base/context.py:38 #, fuzzy, python-brace-format @@ -729,25 +723,27 @@ msgstr "código-fonte" #: pretix/base/customersso/oidc.py:61 #, python-brace-format msgid "Configuration option \"{name}\" is missing." -msgstr "" +msgstr "A opção de configuração \"{name}\" está ausente." #: pretix/base/customersso/oidc.py:69 pretix/base/customersso/oidc.py:74 #, python-brace-format msgid "" "Unable to retrieve configuration from \"{url}\". Error message: \"{error}\"." msgstr "" +"Não foi possível recuperar a configuração de \"{url}\". Mensagem de erro: " +"\"{error}\"." #: pretix/base/customersso/oidc.py:80 pretix/base/customersso/oidc.py:85 #: pretix/base/customersso/oidc.py:90 pretix/base/customersso/oidc.py:95 #: pretix/base/customersso/oidc.py:100 pretix/base/customersso/oidc.py:105 #, python-brace-format msgid "Incompatible SSO provider: \"{error}\"." -msgstr "" +msgstr "Provedor SSO incompatível: \"{error}\"." #: pretix/base/customersso/oidc.py:111 #, python-brace-format msgid "You are not requesting \"{scope}\"." -msgstr "" +msgstr "Você não está solicitando \"{scope}\"." #: pretix/base/customersso/oidc.py:117 #, python-brace-format @@ -755,6 +751,8 @@ msgid "" "You are requesting scope \"{scope}\" but provider only supports these: " "{scopes}." msgstr "" +"Você está solicitando o escopo \"{scope}\", mas o provedor só oferece " +"suporte a estes: {scopes}." #: pretix/base/customersso/oidc.py:127 #, python-brace-format @@ -762,6 +760,8 @@ msgid "" "You are requesting field \"{field}\" but provider only supports these: " "{fields}." msgstr "" +"Você está solicitando o campo \"{field}\", mas o provedor suporta somente " +"estes: {fields}." #: pretix/base/customersso/oidc.py:219 pretix/base/customersso/oidc.py:226 #: pretix/base/customersso/oidc.py:245 pretix/base/customersso/oidc.py:262 @@ -770,13 +770,15 @@ msgstr "" #: pretix/presale/views/customer.py:866 #, python-brace-format msgid "Login was not successful. Error message: \"{error}\"." -msgstr "" +msgstr "O login não foi bem-sucedido. Mensagem de erro: \"{error}\"." #: pretix/base/customersso/oidc.py:252 msgid "" "The email address on this account is not yet verified. Please first confirm " "the email address in your customer account." msgstr "" +"O endereço de e-mail desta conta ainda não foi verificado. Primeiro, " +"confirme o endereço de e-mail na sua conta de cliente." #: pretix/base/email.py:203 pretix/base/exporters/items.py:157 #: pretix/base/exporters/items.py:205 pretix/control/views/main.py:322 @@ -830,17 +832,17 @@ msgstr "Respostas para perguntas sobre o upload de arquivos" #: pretix/base/exporters/orderlist.py:1241 #: pretix/plugins/reports/exporters.py:478 #: pretix/plugins/reports/exporters.py:651 -#, fuzzy -#| msgid "Order data" msgctxt "export_category" msgid "Order data" -msgstr "Dia do pedido" +msgstr "Data do pedido" #: pretix/base/exporters/answers.py:56 msgid "" "Download a ZIP file including all files that have been uploaded by your " "customers while creating an order." msgstr "" +"Baixe um arquivo ZIP incluindo todos os arquivos que foram enviados pelos " +"seus clientes ao criar um pedido." #: pretix/base/exporters/answers.py:66 pretix/base/models/items.py:1767 #: pretix/control/navigation.py:172 @@ -881,7 +883,7 @@ msgstr "Perguntas" #: pretix/presale/templates/pretixpresale/event/fragment_change_form.html:20 msgctxt "subevent" msgid "Date" -msgstr "" +msgstr "Data" #: pretix/base/exporters/answers.py:79 pretix/base/exporters/answers.py:88 #: pretix/control/forms/checkin.py:83 pretix/control/forms/event.py:1611 @@ -899,22 +901,22 @@ msgstr "" #: pretix/plugins/sendmail/forms.py:351 msgctxt "subevent" msgid "All dates" -msgstr "" +msgstr "Todas as datas" #: pretix/base/exporters/customers.py:49 pretix/control/navigation.py:606 #: pretix/control/templates/pretixcontrol/organizers/edit.html:132 msgid "Customer accounts" -msgstr "" +msgstr "Contas de clientes" #: pretix/base/exporters/customers.py:51 -#, fuzzy msgctxt "export_category" msgid "Customer accounts" -msgstr "País" +msgstr "Contas de clientes" #: pretix/base/exporters/customers.py:52 msgid "Download a spreadsheet of all currently registered customer accounts." msgstr "" +"Baixe uma planilha de todas as contas de clientes registradas atualmente." #: pretix/base/exporters/customers.py:64 pretix/base/models/customers.py:82 #: pretix/control/templates/pretixcontrol/organizers/customer.html:29 @@ -922,20 +924,19 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/checkout_customer.html:36 #: pretix/presale/templates/pretixpresale/organizers/customer_base.html:37 msgid "Customer ID" -msgstr "" +msgstr "ID do cliente" #: pretix/base/exporters/customers.py:65 #: pretix/control/templates/pretixcontrol/organizers/customer.html:32 -#, fuzzy msgid "SSO provider" -msgstr "Provedor de pagamento" +msgstr "Provedor de SSO" #: pretix/base/exporters/customers.py:66 pretix/base/models/customers.py:108 #: pretix/control/templates/pretixcontrol/organizers/customer.html:36 #: pretix/control/templates/pretixcontrol/organizers/customers.html:65 #: pretix/control/templates/pretixcontrol/users/form.html:49 msgid "External identifier" -msgstr "" +msgstr "Identificador externo" #: pretix/base/exporters/customers.py:68 pretix/base/exporters/orderlist.py:262 #: pretix/base/exporters/orderlist.py:445 @@ -960,7 +961,7 @@ msgstr "Número de telefone" #: pretix/base/settings.py:3640 pretix/base/settings.py:3652 #: pretix/control/templates/pretixcontrol/users/index.html:47 msgid "Full name" -msgstr "" +msgstr "Nome Completo" #: pretix/base/exporters/customers.py:74 pretix/base/exporters/invoices.py:206 #: pretix/base/exporters/invoices.py:214 pretix/base/exporters/invoices.py:332 @@ -1008,21 +1009,21 @@ msgstr "Nome" #: pretix/base/exporters/customers.py:77 pretix/base/models/customers.py:99 msgid "Account active" -msgstr "" +msgstr "Conta ativa" #: pretix/base/exporters/customers.py:78 pretix/base/models/customers.py:100 msgid "Verified email address" -msgstr "" +msgstr "Endereço de e-mail verificado" #: pretix/base/exporters/customers.py:79 pretix/base/models/customers.py:101 #: pretix/control/templates/pretixcontrol/organizers/customer.html:68 msgid "Last login" -msgstr "" +msgstr "Último login" #: pretix/base/exporters/customers.py:80 pretix/base/models/customers.py:102 #: pretix/control/templates/pretixcontrol/organizers/customer.html:66 msgid "Registration date" -msgstr "" +msgstr "Data de inscrição" #: pretix/base/exporters/customers.py:81 pretix/base/exporters/invoices.py:205 #: pretix/base/exporters/waitinglist.py:120 pretix/base/models/auth.py:258 @@ -1038,7 +1039,7 @@ msgstr "Idioma" #: pretix/control/templates/pretixcontrol/organizers/customer.html:72 #: pretix/control/templates/pretixcontrol/organizers/reusable_medium.html:68 msgid "Notes" -msgstr "" +msgstr "Notas" #: pretix/base/exporters/customers.py:100 #: pretix/base/exporters/customers.py:101 pretix/base/exporters/events.py:83 @@ -1115,6 +1116,8 @@ msgid "" "Download invoices in a format that can be used by the dekodi NREI conversion " "software." msgstr "" +"Baixe faturas em um formato que possa ser usado pelo software de conversão " +"de NREI dekodi." #: pretix/base/exporters/dekodi.py:105 #, python-brace-format @@ -1132,7 +1135,7 @@ msgstr "Ingresso do evento {event}-{code}" #: pretix/plugins/reports/exporters.py:698 #: pretix/plugins/ticketoutputpdf/exporters.py:85 msgid "Date range" -msgstr "" +msgstr "Intervalo de datas" #: pretix/base/exporters/dekodi.py:237 pretix/base/exporters/invoices.py:77 #, fuzzy @@ -1147,21 +1150,21 @@ msgstr "" "fatura nem sempre corresponde à data do pedido ou do pagamento." #: pretix/base/exporters/events.py:47 -#, fuzzy msgid "Event data" -msgstr "Data final do evento" +msgstr "Dados do evento" #: pretix/base/exporters/events.py:48 -#, fuzzy msgctxt "export_category" msgid "Event data" -msgstr "Data final do evento" +msgstr "Dados do evento" #: pretix/base/exporters/events.py:49 msgid "" "Download a spreadsheet with information on all events in this organizer " "account." msgstr "" +"Baixe uma planilha com informações sobre todos os eventos nesta conta do " +"organizador." #: pretix/base/exporters/events.py:57 pretix/base/exporters/orderlist.py:261 #: pretix/base/exporters/orderlist.py:441 @@ -1173,17 +1176,17 @@ msgstr "" #: pretix/control/templates/pretixcontrol/events/index.html:68 #: pretix/control/templates/pretixcontrol/organizers/detail.html:64 msgid "Event name" -msgstr "" +msgstr "Nome do evento" #: pretix/base/exporters/events.py:58 pretix/base/models/event.py:588 #: pretix/base/models/organizer.py:91 #: pretix/control/templates/pretixcontrol/organizers/index.html:47 msgid "Short form" -msgstr "" +msgstr "Forma abreviada" #: pretix/base/exporters/events.py:59 pretix/base/models/event.py:590 msgid "Shop is live" -msgstr "" +msgstr "A loja está no ar" #: pretix/base/exporters/events.py:60 pretix/base/models/event.py:592 msgid "Event currency" @@ -1192,59 +1195,59 @@ msgstr "Moeda do evento" #: pretix/base/exporters/events.py:61 pretix/base/models/auth.py:261 #: pretix/base/models/exports.py:133 pretix/control/forms/exports.py:93 msgid "Timezone" -msgstr "" +msgstr "Fuso horário" #: pretix/base/exporters/events.py:62 pretix/base/models/event.py:595 #: pretix/base/models/event.py:1489 pretix/base/settings.py:3263 #: pretix/base/settings.py:3273 pretix/control/forms/subevents.py:480 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:268 msgid "Event start time" -msgstr "" +msgstr "Hora de início do evento" #: pretix/base/exporters/events.py:63 pretix/base/models/event.py:597 #: pretix/base/models/event.py:1491 pretix/base/pdf.py:286 #: pretix/control/forms/subevents.py:485 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:270 msgid "Event end time" -msgstr "" +msgstr "Horário de término do evento" #: pretix/base/exporters/events.py:64 pretix/base/models/event.py:599 #: pretix/base/models/event.py:1493 pretix/control/forms/subevents.py:490 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:274 msgid "Admission time" -msgstr "" +msgstr "Horário de entrada" #: pretix/base/exporters/events.py:65 pretix/base/models/event.py:611 #: pretix/base/models/event.py:1502 pretix/control/forms/subevents.py:93 msgid "Start of presale" -msgstr "" +msgstr "Início da pré-venda" #: pretix/base/exporters/events.py:66 pretix/base/models/event.py:605 #: pretix/base/models/event.py:1496 pretix/control/forms/subevents.py:99 msgid "End of presale" -msgstr "" +msgstr "Fim da pré-venda" #: pretix/base/exporters/events.py:67 pretix/base/exporters/invoices.py:351 #: pretix/base/models/event.py:617 pretix/base/models/event.py:1508 msgid "Location" -msgstr "" +msgstr "Localização" #: pretix/base/exporters/events.py:68 pretix/base/models/event.py:625 #: pretix/base/models/event.py:1511 msgid "Latitude" -msgstr "" +msgstr "Latitude" #: pretix/base/exporters/events.py:69 pretix/base/models/event.py:633 #: pretix/base/models/event.py:1519 msgid "Longitude" -msgstr "" +msgstr "Longitude" #: pretix/base/exporters/events.py:70 pretix/base/models/event.py:645 #: pretix/base/models/event.py:1534 #: pretix/control/templates/pretixcontrol/event/index.html:128 #: pretix/control/templates/pretixcontrol/order/index.html:991 msgid "Internal comment" -msgstr "" +msgstr "Comentário interno" #: pretix/base/exporters/invoices.py:82 pretix/base/models/orders.py:1753 #: pretix/base/models/orders.py:2162 pretix/control/forms/filter.py:204 @@ -1284,7 +1287,7 @@ msgstr "Todas faturas" #: pretix/base/exporters/invoices.py:127 msgid "Download all invoices created by the system as a ZIP file of PDF files." -msgstr "" +msgstr "Baixe todas as faturas criadas pelo sistema como um arquivo ZIP ou PDF." #: pretix/base/exporters/invoices.py:178 msgid "Invoice data" @@ -1296,6 +1299,9 @@ msgid "" "The spreadsheet includes two sheets, one with a line for every invoice, and " "one with a line for every position of every invoice." msgstr "" +"Baixe uma planilha com os dados de todas as faturas criadas pelo sistema. A " +"planilha inclui duas folhas, uma com uma linha para cada fatura e outra com " +"uma linha para cada posição de cada fatura." #: pretix/base/exporters/invoices.py:191 pretix/base/shredder.py:576 #: pretix/control/templates/pretixcontrol/order/index.html:268 @@ -1355,7 +1361,7 @@ msgstr "Data" #: pretix/plugins/reports/exporters.py:884 #: pretix/plugins/ticketoutputpdf/exporters.py:96 msgid "Order code" -msgstr "Código de pedido" +msgstr "Código do pedido" #: pretix/base/exporters/invoices.py:202 pretix/base/exporters/invoices.py:329 #: pretix/base/forms/auth.py:160 pretix/base/modelimport_orders.py:59 @@ -26318,7 +26324,7 @@ msgstr "" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/transaction_list.html:80 msgid "Comment:" -msgstr "" +msgstr "Comentário:" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/transaction_list.html:98 msgid "No order code detected" @@ -26591,7 +26597,7 @@ msgstr "" #: pretix/plugins/paypal2/payment.py:1096 #: pretix/plugins/paypal2/payment.py:1097 pretix/plugins/stripe/payment.py:1816 msgid "PayPal" -msgstr "" +msgstr "PayPal" #: pretix/plugins/paypal/apps.py:53 msgid "" @@ -28075,7 +28081,7 @@ msgstr "" #: pretix/plugins/stripe/payment.py:342 pretix/plugins/stripe/payment.py:1527 msgid "iDEAL" -msgstr "" +msgstr "iDEAL" #: pretix/plugins/stripe/payment.py:344 pretix/plugins/stripe/payment.py:352 #: pretix/plugins/stripe/payment.py:360 pretix/plugins/stripe/payment.py:395 @@ -28095,11 +28101,11 @@ msgstr "" #: pretix/plugins/stripe/payment.py:358 pretix/plugins/stripe/payment.py:1564 msgid "Bancontact" -msgstr "" +msgstr "Contato bancário" #: pretix/plugins/stripe/payment.py:366 msgid "SEPA Direct Debit" -msgstr "" +msgstr "Débito Direto SEPA" #: pretix/plugins/stripe/payment.py:369 msgid "" @@ -28135,7 +28141,7 @@ msgstr "" #: pretix/plugins/stripe/payment.py:409 pretix/plugins/stripe/payment.py:1730 msgid "Przelewy24" -msgstr "" +msgstr "Przelewy24" #: pretix/plugins/stripe/payment.py:417 pretix/plugins/stripe/payment.py:1769 msgid "WeChat Pay" @@ -28284,7 +28290,7 @@ msgstr "" #: pretix/plugins/stripe/payment.py:1480 msgid "giropay" -msgstr "" +msgstr "giropay" #: pretix/plugins/stripe/payment.py:1483 msgid "" @@ -31717,14 +31723,17 @@ msgid "" "while we are processing your current payment. Please check back after your " "current payment has been accepted." msgstr "" +"Você não pode alterar seu pedido de forma que exija pagamento adicional " +"enquanto estivermos processando seu pagamento atual. Verifique novamente " +"após a aceitação do seu pagamento atual." #: pretix/presale/views/order.py:1662 pretix/presale/views/order.py:1693 msgid "You cannot change this order." -msgstr "" +msgstr "Você não pode alterar este pedido." #: pretix/presale/views/user.py:61 msgid "We had difficulties processing your input." -msgstr "" +msgstr "Tivemos dificuldades em processar sua entrada." #: pretix/presale/views/user.py:70 #, python-brace-format @@ -31734,32 +31743,43 @@ msgid "" "{number} hours. If the email did not arrive, please check your spam folder " "and also double check that you used the correct email address." msgstr "" +"Se o endereço de e-mail informado for válido e estiver associado a um " +"ingresso, já enviamos um e-mail com um link para o seu ingresso nas últimas " +"{number} horas. Se o e-mail não chegou, verifique sua caixa de spam e " +"verifique se você usou o endereço de e-mail correto." #: pretix/presale/views/user.py:91 msgid "We have trouble sending emails right now, please check back later." msgstr "" +"Estamos com problemas para enviar e-mails neste momento. Volte mais tarde." #: pretix/presale/views/user.py:94 msgid "" "If there were any orders by this user, they will receive an email with their " "order codes." msgstr "" +"Se houver algum pedido deste usuário, ele receberá um e-mail com seus " +"códigos de pedido." #: pretix/presale/views/waiting.py:127 msgid "" "No ticket types are available for the waiting list, have a look at the " "ticket shop instead." msgstr "" +"Não há tipos de ingressos disponíveis para a lista de espera; em vez disso, " +"dê uma olhada na loja de ingressos." #: pretix/presale/views/waiting.py:137 pretix/presale/views/waiting.py:161 msgid "Waiting lists are disabled for this event." -msgstr "" +msgstr "As listas de espera estão desativadas para este evento." #: pretix/presale/views/waiting.py:173 msgid "" "You cannot add yourself to the waiting list as this product is currently " "available." msgstr "" +"Você não pode se adicionar à lista de espera, pois este produto ainda não " +"está disponível." #: pretix/presale/views/waiting.py:180 #, python-brace-format @@ -31767,35 +31787,40 @@ 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 "" +"Adicionamos você à lista de espera. Enviaremos um e-mail para {email} assim " +"que este produto estiver disponível novamente." #: pretix/presale/views/waiting.py:208 msgid "We could not find you on our waiting list." -msgstr "" +msgstr "Não conseguimos encontrá-lo em nossa lista de espera." #: pretix/presale/views/waiting.py:212 msgid "" "Your waiting list spot is no longer valid or already used. There's nothing " "more to do here." msgstr "" +"Sua vaga na lista de espera não é mais válida ou já foi usada. Não há mais " +"nada a fazer aqui." #: pretix/presale/views/waiting.py:222 msgid "" "Thank you very much! We will assign your spot on the waiting list to someone " "else." msgstr "" +"Muito obrigado! Vamos atribuir a sua vaga na lista de espera a outra pessoa." #: pretix/presale/views/widget.py:397 msgid "This ticket shop is currently disabled." -msgstr "" +msgstr "Esta bilheteria está desativada no momento." #: pretix/presale/views/widget.py:411 msgid "The selected date does not exist in this event series." -msgstr "" +msgstr "A data selecionada não existe nesta série de eventos." #: pretix/presale/views/widget.py:474 #, python-format msgid "from %(start_date)s" -msgstr "" +msgstr "a partir de %(start_date)s" #: pretix/settings.py:789 msgid "User profile only" @@ -31803,15 +31828,15 @@ msgstr "Somente perfil de usuário" #: pretix/settings.py:790 msgid "Read access" -msgstr "" +msgstr "Acesso de leitura" #: pretix/settings.py:791 msgid "Write access" -msgstr "" +msgstr "Acesso de escrita" #: pretix/settings.py:802 msgid "Kosovo" -msgstr "" +msgstr "Kosovo" #, fuzzy #~| msgid "Email" From 177717d594bcb6f6406f3efe801aec2d39979460 Mon Sep 17 00:00:00 2001 From: Francisco Rosa Date: Wed, 4 Jun 2025 22:29:38 +0200 Subject: [PATCH 26/98] Translations: Update Portuguese Currently translated at 7.1% (18 of 252 strings) Translation: pretix/pretix (JavaScript parts) Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/pt/ powered by weblate --- src/pretix/locale/pt/LC_MESSAGES/djangojs.po | 47 ++++++++++---------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/src/pretix/locale/pt/LC_MESSAGES/djangojs.po b/src/pretix/locale/pt/LC_MESSAGES/djangojs.po index 0d2c135b0e..278e625028 100644 --- a/src/pretix/locale/pt/LC_MESSAGES/djangojs.po +++ b/src/pretix/locale/pt/LC_MESSAGES/djangojs.po @@ -3,79 +3,80 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-30 10:36+0000\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" +"PO-Revision-Date: 2025-06-05 04:00+0000\n" +"Last-Translator: Francisco Rosa \n" +"Language-Team: Portuguese \n" +"Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Weblate 5.11.4\n" #: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56 #: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62 #: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:68 msgid "Marked as paid" -msgstr "" +msgstr "Marcado como pago" #: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:76 msgid "Comment:" -msgstr "" +msgstr "Comentário:" #: 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" -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 "Crédito PayPal" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:39 msgid "Credit Card" -msgstr "" +msgstr "Cartão de crédito" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:40 msgid "PayPal Pay Later" -msgstr "" +msgstr "PayPal Pagar Depois" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:41 msgid "iDEAL" -msgstr "" +msgstr "iDEAL" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:42 msgid "SEPA Direct Debit" -msgstr "" +msgstr "Débito Direto SEPA" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:43 msgid "Bancontact" -msgstr "" +msgstr "Contato bancário" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:44 msgid "giropay" -msgstr "" +msgstr "giropay" #: 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 msgid "eps" @@ -83,15 +84,15 @@ msgstr "" #: 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" -msgstr "" +msgstr "Przelewy24" #: 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" @@ -127,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 From 62b3af2197f501e16fa88b9e8eb16e1ac812d5a2 Mon Sep 17 00:00:00 2001 From: Michael Dao Date: Thu, 5 Jun 2025 19:34:47 +0200 Subject: [PATCH 27/98] Translations: Update Vietnamese Currently translated at 2.5% (150 of 5900 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/vi/ powered by weblate --- src/pretix/locale/vi/LC_MESSAGES/django.po | 135 +++++++++++---------- 1 file changed, 72 insertions(+), 63 deletions(-) diff --git a/src/pretix/locale/vi/LC_MESSAGES/django.po b/src/pretix/locale/vi/LC_MESSAGES/django.po index 70824be458..f97d1dc012 100644 --- a/src/pretix/locale/vi/LC_MESSAGES/django.po +++ b/src/pretix/locale/vi/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-30 10:35+0000\n" -"PO-Revision-Date: 2024-06-01 01:00+0000\n" -"Last-Translator: Luan Thien \n" +"PO-Revision-Date: 2025-06-05 17:48+0000\n" +"Last-Translator: Michael Dao \n" "Language-Team: Vietnamese \n" "Language: vi\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 5.5.5\n" +"X-Generator: Weblate 5.11.4\n" #: pretix/_base_settings.py:87 msgid "English" @@ -37,11 +37,11 @@ msgstr "Tiếng A-rập" #: pretix/_base_settings.py:91 msgid "Basque" -msgstr "" +msgstr "Tiếng Basque" #: pretix/_base_settings.py:92 msgid "Catalan" -msgstr "" +msgstr "Tiếng Catalan" #: pretix/_base_settings.py:93 msgid "Chinese (simplified)" @@ -57,7 +57,7 @@ msgstr "Tiếng Séc" #: pretix/_base_settings.py:96 msgid "Croatian" -msgstr "" +msgstr "Tiếng Croatia" #: pretix/_base_settings.py:97 msgid "Danish" @@ -89,7 +89,7 @@ msgstr "Tiếng Hy Lạp" #: pretix/_base_settings.py:104 msgid "Hebrew" -msgstr "" +msgstr "Tiếng Do Thái" #: pretix/_base_settings.py:105 msgid "Indonesian" @@ -101,7 +101,7 @@ msgstr "Tiếng Ý" #: pretix/_base_settings.py:107 msgid "Japanese" -msgstr "" +msgstr "Tiếng Nhật" #: pretix/_base_settings.py:108 msgid "Latvian" @@ -133,11 +133,11 @@ msgstr "Tiếng Nga" #: pretix/_base_settings.py:115 msgid "Slovak" -msgstr "" +msgstr "Tiếng Slovak" #: pretix/_base_settings.py:116 msgid "Swedish" -msgstr "" +msgstr "Tiếng Thụy Điển" #: pretix/_base_settings.py:117 msgid "Spanish" @@ -182,10 +182,8 @@ msgid "Allowed URIs list, space separated" msgstr "Đường link cho phép, cách nhau với dấu cách" #: pretix/api/models.py:47 -#, fuzzy -#| msgid "Allowed URIs list, space separated" msgid "Allowed Post Logout URIs list, space separated" -msgstr "Đường link cho phép, cách nhau với dấu cách" +msgstr "Danh sách URI Đăng xuất được cho phép, phân tách bằng dấu cách" #: pretix/api/models.py:51 pretix/base/models/customers.py:406 #: pretix/plugins/paypal/payment.py:113 pretix/plugins/paypal2/payment.py:110 @@ -242,13 +240,15 @@ msgstr "Một hoặc một vài mục không thuộc sự kiện này." #: pretix/base/models/items.py:2195 pretix/base/models/items.py:2198 #: pretix/base/models/waitinglist.py:307 pretix/base/models/waitinglist.py:310 msgid "The subevent does not belong to this event." -msgstr "" +msgstr "Sự kiện phụ không thuộc về sự kiện này." #: pretix/api/serializers/event.py:231 msgid "" "Events cannot be created as 'live'. Quotas and payment must be added to the " "event before sales can go live." msgstr "" +"Không thể tạo sự kiện dưới dạng 'xuất bản'. Phải thêm hạn ngạch và thanh " +"toán vào sự kiện trước khi có thể xuất bản." #: pretix/api/serializers/event.py:246 pretix/api/serializers/event.py:555 #, python-brace-format @@ -279,84 +279,92 @@ msgstr "Không tồn tại mục chứa thuộc tính '{name}'." #: pretix/api/serializers/item.py:207 pretix/control/forms/item.py:1267 msgid "The bundled item must not be the same item as the bundling one." -msgstr "" +msgstr "Sản phẩm được đóng gói không được trùng với sản phẩm được đóng gói." #: pretix/api/serializers/item.py:210 pretix/control/forms/item.py:1269 msgid "The bundled item must not have bundles on its own." -msgstr "" +msgstr "Sản phẩm được đóng gói không được có gói riêng." #: pretix/api/serializers/item.py:298 msgid "" "Updating add-ons, bundles, or variations via PATCH/PUT is not supported. " "Please use the dedicated nested endpoint." msgstr "" +"Không hỗ trợ cập nhật tiện ích bổ sung, gói hoặc biến thể thông qua PATCH/" +"PUT. Vui lòng sử dụng điểm cuối lồng nhau chuyên dụng." #: pretix/api/serializers/item.py:306 msgid "Only admission products can currently be personalized." -msgstr "" +msgstr "Hiện tại chỉ có thể cá nhân hóa các sản phẩm nhập học." #: pretix/api/serializers/item.py:317 msgid "" "Gift card products should not be associated with non-zero tax rates since " "sales tax will be applied when the gift card is redeemed." msgstr "" +"Các sản phẩm thẻ quà tặng không nên liên quan đến mức thuế suất khác 0 vì " +"thuế bán hàng sẽ được áp dụng khi thẻ quà tặng được đổi." #: pretix/api/serializers/item.py:322 pretix/control/forms/item.py:774 msgid "Gift card products should not be admission products at the same time." -msgstr "" +msgstr "Sản phẩm thẻ quà tặng không nên đồng thời là sản phẩm vé vào cửa." #: pretix/api/serializers/item.py:519 msgid "" "Updating options via PATCH/PUT is not supported. Please use the dedicated " "nested endpoint." msgstr "" +"Không hỗ trợ tùy chọn cập nhật qua PATCH/PUT. Vui lòng sử dụng điểm cuối " +"lồng nhau chuyên dụng." #: pretix/api/serializers/item.py:533 pretix/control/forms/item.py:178 msgid "Question cannot depend on a question asked during check-in." -msgstr "" +msgstr "Câu hỏi không thể phụ thuộc vào câu hỏi được hỏi khi làm check-in." #: pretix/api/serializers/item.py:538 pretix/control/forms/item.py:183 msgid "Circular dependency between questions detected." -msgstr "" +msgstr "Đã phát hiện sự phụ thuộc tuần hoàn giữa các câu hỏi." #: pretix/api/serializers/item.py:543 pretix/control/forms/item.py:192 msgid "This type of question cannot be asked during check-in." -msgstr "" +msgstr "Không được hỏi loại câu hỏi này khi làm thủ tục nhận phòng." #: pretix/api/serializers/item.py:546 pretix/control/forms/item.py:200 msgid "This type of question cannot be shown during check-in." -msgstr "" +msgstr "Loại câu hỏi này không thể được hiển thị trong quá trình check-in." #: pretix/api/serializers/media.py:108 msgid "" "A medium with the same identifier and type already exists in your organizer " "account." msgstr "" +"Một phương tiện có cùng mã định danh và loại đã tồn tại trong tài khoản " +"người tổ chức của bạn." #: pretix/api/serializers/order.py:79 #, python-brace-format msgid "\"{input}\" is not a valid choice." -msgstr "" +msgstr "\"{input}\" không phải là lựa chọn hợp lệ." #: pretix/api/serializers/order.py:1375 pretix/api/views/cart.py:224 #: pretix/base/services/orders.py:1533 #, python-brace-format msgid "The selected seat \"{seat}\" is not available." -msgstr "" +msgstr "Ghế đã chọn \"{seat}\" không còn chỗ." #: pretix/api/serializers/order.py:1401 pretix/api/serializers/order.py:1408 msgid "The product \"{}\" is not available on this date." -msgstr "" +msgstr "Sản phẩm \"{}\" không có sẵn vào ngày này." #: pretix/api/serializers/order.py:1423 pretix/api/views/cart.py:200 msgid "" "There is not enough quota available on quota \"{}\" to perform the operation." -msgstr "" +msgstr "Không có đủ hạn ngạch trên hạn ngạch \"{}\" để thực hiện thao tác." #: pretix/api/serializers/organizer.py:105 #: pretix/control/forms/organizer.py:892 pretix/presale/forms/customer.py:456 msgid "An account with this email address is already registered." -msgstr "" +msgstr "Một tài khoản với địa chỉ email này đã được đăng ký." #: pretix/api/serializers/organizer.py:238 #: pretix/control/forms/organizer.py:741 @@ -364,30 +372,32 @@ msgid "" "A gift card with the same secret already exists in your or an affiliated " "organizer account." msgstr "" +"Thẻ quà tặng có cùng bí mật đã tồn tại trong tài khoản của bạn hoặc tài " +"khoản của đơn vị tổ chức liên kết." #: pretix/api/serializers/organizer.py:329 #: pretix/control/views/organizer.py:773 msgid "pretix account invitation" -msgstr "" +msgstr "lời mời mở tài khoản pretix" #: pretix/api/serializers/organizer.py:351 #: pretix/control/views/organizer.py:872 msgid "This user already has been invited for this team." -msgstr "" +msgstr "Người dùng này đã được mời vào nhóm này." #: pretix/api/serializers/organizer.py:367 #: pretix/control/views/organizer.py:889 msgid "This user already has permissions for this team." -msgstr "" +msgstr "Người dùng này đã có quyền cho nhóm này." #: pretix/api/views/cart.py:209 msgid "" "The specified voucher has already been used the maximum number of times." -msgstr "" +msgstr "Phiếu giảm giá đã nhập đã được sử dụng số lần tối đa." #: pretix/api/views/checkin.py:611 pretix/api/views/checkin.py:618 msgid "Medium connected to other event" -msgstr "" +msgstr "Phương tiện kết nối với sự kiện khác" #: pretix/api/views/oauth.py:107 pretix/control/logdisplay.py:692 #, python-brace-format @@ -395,132 +405,131 @@ msgid "" "The application \"{application_name}\" has been authorized to access your " "account." msgstr "" +"Ứng dụng \"{application_name}\" đã được phép truy cập vào tài khoản của bạn." #: pretix/api/views/order.py:607 pretix/control/views/orders.py:1609 #: pretix/presale/views/order.py:731 pretix/presale/views/order.py:804 msgid "You cannot generate an invoice for this order." -msgstr "" +msgstr "Bạn không thể tạo hóa đơn cho đơn hàng này." #: pretix/api/views/order.py:612 pretix/control/views/orders.py:1611 #: pretix/presale/views/order.py:733 pretix/presale/views/order.py:806 msgid "An invoice for this order already exists." -msgstr "" +msgstr "Đã có hóa đơn cho đơn hàng này." #: pretix/api/views/order.py:638 pretix/control/views/orders.py:1737 #: pretix/control/views/users.py:145 msgid "There was an error sending the mail. Please try again later." -msgstr "" +msgstr "Đã xảy ra lỗi khi gửi thư. Vui lòng thử lại sau." #: pretix/api/views/order.py:718 pretix/base/services/cart.py:216 #: pretix/base/services/orders.py:187 pretix/presale/views/order.py:788 msgid "One of the selected products is not available in the selected country." -msgstr "" +msgstr "Đã xảy ra lỗi khi gửi thư. Vui lòng thử lại sau." #: pretix/api/webhooks.py:237 pretix/base/notifications.py:233 msgid "New order placed" -msgstr "" +msgstr "Đơn hàng mới được đặt" #: pretix/api/webhooks.py:241 pretix/base/notifications.py:239 msgid "New order requires approval" -msgstr "" +msgstr "Đơn đặt hàng mới cần được phê duyệt" #: pretix/api/webhooks.py:245 pretix/base/notifications.py:245 msgid "Order marked as paid" -msgstr "" +msgstr "Đơn hàng được đánh dấu là đã thanh toán" #: pretix/api/webhooks.py:249 pretix/base/models/checkin.py:354 #: pretix/base/notifications.py:251 #: pretix/control/templates/pretixcontrol/event/mail.html:114 #: pretix/control/views/orders.py:1570 msgid "Order canceled" -msgstr "Đã huỷ đơn hàng" +msgstr "Đơn hàng bị hủy" #: pretix/api/webhooks.py:253 pretix/base/notifications.py:257 msgid "Order reactivated" -msgstr "" +msgstr "Đơn hàng đã được kích hoạt lại" #: pretix/api/webhooks.py:257 pretix/base/notifications.py:263 msgid "Order expired" -msgstr "" +msgstr "Đơn hàng đã hết hạn" #: pretix/api/webhooks.py:261 msgid "Order expiry date changed" -msgstr "" +msgstr "Ngày hết hạn của đơn hàng đã thay đổi" #: pretix/api/webhooks.py:265 pretix/base/notifications.py:269 msgid "Order information changed" -msgstr "" +msgstr "Thông tin đơn hàng đã thay đổi" #: pretix/api/webhooks.py:269 pretix/base/notifications.py:275 msgid "Order contact address changed" -msgstr "" +msgstr "Địa chỉ liên hệ đặt hàng đã thay đổi" #: pretix/api/webhooks.py:273 pretix/base/notifications.py:281 #: pretix/control/templates/pretixcontrol/event/mail.html:102 msgid "Order changed" -msgstr "" +msgstr "Đơn hàng đã thay đổi" #: pretix/api/webhooks.py:277 msgid "Refund of payment created" -msgstr "" +msgstr "Hoàn tiền thanh toán đã được tạo" #: pretix/api/webhooks.py:281 pretix/base/notifications.py:293 msgid "External refund of payment" -msgstr "" +msgstr "Hoàn trả khoản thanh toán bên ngoài" #: pretix/api/webhooks.py:285 msgid "Refund of payment requested by customer" -msgstr "" +msgstr "Hoàn lại tiền thanh toán theo yêu cầu của khách hàng" #: pretix/api/webhooks.py:289 msgid "Refund of payment completed" -msgstr "" +msgstr "Hoàn trả thanh toán đã hoàn tất" #: pretix/api/webhooks.py:293 msgid "Refund of payment canceled" -msgstr "" +msgstr "Hoàn tiền thanh toán đã bị hủy" #: pretix/api/webhooks.py:297 msgid "Refund of payment failed" -msgstr "" +msgstr "Hoàn tiền thanh toán không thành công" #: pretix/api/webhooks.py:301 msgid "Payment confirmed" -msgstr "" +msgstr "Đã xác nhận thanh toán" #: pretix/api/webhooks.py:305 msgid "Order approved" -msgstr "" +msgstr "Đơn hàng đã được phê duyệt" #: pretix/api/webhooks.py:309 msgid "Order denied" -msgstr "" +msgstr "Đơn hàng bị từ chối" #: pretix/api/webhooks.py:313 -#, fuzzy -#| msgid "Order canceled" msgid "Order deleted" -msgstr "Đã huỷ đơn hàng" +msgstr "Đã xóa đơn hàng" #: pretix/api/webhooks.py:317 msgid "Ticket checked in" -msgstr "" +msgstr "Vé đã được kiểm tra" #: pretix/api/webhooks.py:321 msgid "Ticket check-in reverted" -msgstr "" +msgstr "Đã hoàn lại thủ tục check-in vé" #: pretix/api/webhooks.py:325 msgid "Event created" -msgstr "" +msgstr "Đã tạo sự kiện" #: pretix/api/webhooks.py:329 msgid "Event details changed" -msgstr "" +msgstr "Chi tiết sự kiện đã thay đổi" #: pretix/api/webhooks.py:333 msgid "Event deleted" -msgstr "" +msgstr "Đã xóa sự kiện" #: pretix/api/webhooks.py:337 msgctxt "subevent" From fbbc6502f3deaf6c3fdaa3ac77bb00b050ebe48e Mon Sep 17 00:00:00 2001 From: Michael Dao Date: Fri, 6 Jun 2025 07:37:58 +0200 Subject: [PATCH 28/98] Translations: Update Vietnamese Currently translated at 2.6% (156 of 5900 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/vi/ powered by weblate --- src/pretix/locale/vi/LC_MESSAGES/django.po | 27 +++++++++++----------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/pretix/locale/vi/LC_MESSAGES/django.po b/src/pretix/locale/vi/LC_MESSAGES/django.po index f97d1dc012..18285ac13b 100644 --- a/src/pretix/locale/vi/LC_MESSAGES/django.po +++ b/src/pretix/locale/vi/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-30 10:35+0000\n" -"PO-Revision-Date: 2025-06-05 17:48+0000\n" +"PO-Revision-Date: 2025-06-06 05:51+0000\n" "Last-Translator: Michael Dao \n" "Language-Team: Vietnamese \n" @@ -258,7 +258,7 @@ msgstr "Thuộc tính '{name}' không tồn tại." #: pretix/api/serializers/event.py:249 pretix/api/serializers/event.py:558 #, python-brace-format msgid "Meta data property '{name}' does not allow value '{value}'." -msgstr "Thuộc tính '{name}' không chấp nhận giá trị '{value}'" +msgstr "Thuộc tính '{name}' không chấp nhận giá trị '{value}'." #: pretix/api/serializers/event.py:293 #, python-brace-format @@ -266,10 +266,9 @@ msgid "Unknown plugin: '{name}'." msgstr "Không có plugin: '{name}'." #: pretix/api/serializers/event.py:296 -#, fuzzy, python-brace-format -#| msgid "Unknown plugin: '{name}'." +#, python-brace-format msgid "Restricted plugin: '{name}'." -msgstr "Không có plugin: '{name}'." +msgstr "Plugin bị hạn chế: '{name}'." #: pretix/api/serializers/item.py:86 pretix/api/serializers/item.py:148 #: pretix/api/serializers/item.py:359 @@ -444,7 +443,7 @@ msgstr "Đơn hàng được đánh dấu là đã thanh toán" #: pretix/control/templates/pretixcontrol/event/mail.html:114 #: pretix/control/views/orders.py:1570 msgid "Order canceled" -msgstr "Đơn hàng bị hủy" +msgstr "Đơn hàng đã bị hủy" #: pretix/api/webhooks.py:253 pretix/base/notifications.py:257 msgid "Order reactivated" @@ -12182,7 +12181,7 @@ msgstr "" #: pretix/plugins/reports/exporters.py:380 #: pretix/presale/templates/pretixpresale/event/fragment_order_status.html:7 msgid "Approval pending" -msgstr "" +msgstr "Đang chờ phê duyệt" #: pretix/control/forms/filter.py:241 msgid "Follow-up configured" @@ -15757,6 +15756,8 @@ msgstr "" #: pretix/presale/templates/pretixpresale/waiting.html:42 msgid "If this takes longer than a few minutes, please contact us." msgstr "" +"Yêu cầu của bạn hiện đang được xử lý. Tùy theo quy mô sự kiện, quá trình này " +"có thể mất đến vài phút." #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:4 #: pretix/control/templates/pretixcontrol/organizers/devices.html:71 @@ -21961,7 +21962,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/pdf/index.html:498 msgid "Text box" -msgstr "" +msgstr "Văn bản chữ" #: pretix/control/templates/pretixcontrol/pdf/index.html:502 msgid "Text (deprecated)" @@ -27657,7 +27658,7 @@ msgstr "" #: pretix/plugins/stripe/payment.py:342 pretix/plugins/stripe/payment.py:1527 msgid "iDEAL" -msgstr "iDEAL" +msgstr "Nền tảng iDEAL" #: pretix/plugins/stripe/payment.py:344 pretix/plugins/stripe/payment.py:352 #: pretix/plugins/stripe/payment.py:360 pretix/plugins/stripe/payment.py:395 @@ -27677,7 +27678,7 @@ msgstr "" #: pretix/plugins/stripe/payment.py:358 pretix/plugins/stripe/payment.py:1564 msgid "Bancontact" -msgstr "Bancontact" +msgstr "Nền tảng Bancontact" #: pretix/plugins/stripe/payment.py:366 msgid "SEPA Direct Debit" @@ -27717,11 +27718,11 @@ msgstr "" #: pretix/plugins/stripe/payment.py:409 pretix/plugins/stripe/payment.py:1730 msgid "Przelewy24" -msgstr "" +msgstr "Nền tảng Przelewy24" #: pretix/plugins/stripe/payment.py:417 pretix/plugins/stripe/payment.py:1769 msgid "WeChat Pay" -msgstr "" +msgstr "Nền tảng WeChat Pay" #: pretix/plugins/stripe/payment.py:433 pretix/plugins/stripe/payment.py:1824 msgid "Swish" @@ -27866,7 +27867,7 @@ msgstr "" #: pretix/plugins/stripe/payment.py:1480 msgid "giropay" -msgstr "giropay" +msgstr "Nền tảng giropay" #: pretix/plugins/stripe/payment.py:1483 msgid "" From cc55aba2e6c2eb3b808fc227406a5df1109060b3 Mon Sep 17 00:00:00 2001 From: Michael Dao Date: Fri, 6 Jun 2025 07:45:58 +0200 Subject: [PATCH 29/98] Translations: Update Vietnamese Currently translated at 60.3% (152 of 252 strings) Translation: pretix/pretix (JavaScript parts) Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/vi/ powered by weblate --- src/pretix/locale/vi/LC_MESSAGES/djangojs.po | 98 ++++++++++---------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/src/pretix/locale/vi/LC_MESSAGES/djangojs.po b/src/pretix/locale/vi/LC_MESSAGES/djangojs.po index 2a1a6d1bc2..47a3add0ce 100644 --- a/src/pretix/locale/vi/LC_MESSAGES/djangojs.po +++ b/src/pretix/locale/vi/LC_MESSAGES/djangojs.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-30 10:36+0000\n" -"PO-Revision-Date: 2024-05-30 17:00+0000\n" -"Last-Translator: Luan Thien \n" +"PO-Revision-Date: 2025-06-06 05:51+0000\n" +"Last-Translator: Michael Dao \n" "Language-Team: Vietnamese \n" "Language: vi\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 5.5.5\n" +"X-Generator: Weblate 5.11.4\n" #: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56 #: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62 @@ -35,16 +35,16 @@ msgstr "PayPal" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:35 msgid "Venmo" -msgstr "Venmo" +msgstr "Nền tảng Venmo" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:36 #: pretix/static/pretixpresale/js/walletdetection.js:38 msgid "Apple Pay" -msgstr "Apple Pay" +msgstr "Nền tảng Apple Pay" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:37 msgid "Itaú" -msgstr "Itaú" +msgstr "Nền tảng Itaú" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:38 msgid "PayPal Credit" @@ -56,11 +56,11 @@ msgstr "Thẻ tín dụng" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:40 msgid "PayPal Pay Later" -msgstr "PayPal Pay Later" +msgstr "Nền tảng PayPal Pay Later" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:41 msgid "iDEAL" -msgstr "iDEAL" +msgstr "Nền tảng iDEAL" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:42 msgid "SEPA Direct Debit" @@ -68,11 +68,11 @@ msgstr "Ghi nợ trực tiếp SEPA" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:43 msgid "Bancontact" -msgstr "Bancontact" +msgstr "Nền tảng Bancontact" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:44 msgid "giropay" -msgstr "giropay" +msgstr "Nền tảng giropay" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:45 msgid "SOFORT" @@ -80,55 +80,55 @@ msgstr "SOFORT" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:46 msgid "eps" -msgstr "eps" +msgstr "Nền tảng eps" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:47 msgid "MyBank" -msgstr "" +msgstr "Nền tảng MyBank" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:48 msgid "Przelewy24" -msgstr "" +msgstr "Nền tảng Przelewy24" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:49 msgid "Verkkopankki" -msgstr "" +msgstr "Nền tảng Verkkopankki" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:50 msgid "PayU" -msgstr "" +msgstr "Nền tảng PayU" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:51 msgid "BLIK" -msgstr "" +msgstr "Nền tảng BLIK" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:52 msgid "Trustly" -msgstr "" +msgstr "Nền tảng Trustly" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:53 msgid "Zimpler" -msgstr "" +msgstr "Nền tảng Zimpler" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:54 msgid "Maxima" -msgstr "" +msgstr "Nền tảng 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 "Nền tảng Boleto" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:57 msgid "WeChat Pay" -msgstr "" +msgstr "Nền tảng WeChat Pay" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:58 msgid "Mercado Pago" -msgstr "" +msgstr "Nền tảng Mercado Pago" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167 #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:50 @@ -238,11 +238,11 @@ msgstr "Đã huỷ" #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:46 msgid "Confirmed" -msgstr "" +msgstr "Đã Xác Nhận" #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:47 msgid "Approval pending" -msgstr "" +msgstr "Đang chờ phê duyệt" #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:48 msgid "Redeemed" @@ -307,7 +307,7 @@ msgstr "Vé không hợp lệ tại thời điểm này" #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:65 msgid "Order canceled" -msgstr "Đã huỷ đơn hàng" +msgstr "Đơn hàng đã bị hủy" #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:66 msgid "Ticket code is ambiguous on list" @@ -348,7 +348,7 @@ msgstr "đóng" #: pretix/static/pretixbase/js/addressform.js:59 #: pretix/static/pretixpresale/js/ui/main.js:513 msgid "required" -msgstr "" +msgstr "bắt buộc" #: pretix/static/pretixbase/js/asynctask.js:12 msgid "" @@ -411,6 +411,8 @@ msgstr "" #: pretix/static/pretixbase/js/asynctask.js:270 msgid "If this takes longer than a few minutes, please contact us." msgstr "" +"Yêu cầu của bạn hiện đang được xử lý. Tùy theo quy mô sự kiện, quá trình này " +"có thể mất đến vài phút." #: pretix/static/pretixbase/js/asynctask.js:325 msgid "Close message" @@ -480,27 +482,27 @@ msgstr "Số mục trước từ khi" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:135 msgid "Number of previous entries before" -msgstr "Số mục trước trước lúc" +msgstr "Số lượt nhập trước đó" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:139 msgid "Number of days with a previous entry" -msgstr "" +msgstr "Số ngày có lượt nhập trước đó" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:143 msgid "Number of days with a previous entry since" -msgstr "" +msgstr "Số ngày có lượt nhập trước đó kể từ khi" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:147 msgid "Number of days with a previous entry before" -msgstr "" +msgstr "Số ngày có lượt nhập trước đó trước" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:151 msgid "Minutes since last entry (-1 on first entry)" -msgstr "" +msgstr "Số phút kể từ lượt nhập cuối cùng (-1 đối với lượt nhập đầu tiên)" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:155 msgid "Minutes since first entry (-1 on first entry)" -msgstr "" +msgstr "Số phút kể từ lượt nhập đầu tiên (-1 đối với lượt nhập đầu tiên)" #: pretix/static/pretixcontrol/js/ui/checkinrules.js:182 msgid "All of the conditions below (AND)" @@ -569,16 +571,12 @@ msgid "Group of objects" msgstr "Nhóm các đối tượng" #: pretix/static/pretixcontrol/js/ui/editor.js:908 -#, fuzzy -#| msgid "Text object" msgid "Text object (deprecated)" -msgstr "Văn bản" +msgstr "Đối tượng văn bản (đã lỗi thời)" #: pretix/static/pretixcontrol/js/ui/editor.js:910 -#, fuzzy -#| msgid "Text object" msgid "Text box" -msgstr "Văn bản" +msgstr "Văn bản chữ" #: pretix/static/pretixcontrol/js/ui/editor.js:912 msgid "Barcode area" @@ -626,24 +624,26 @@ msgid "Unknown error." msgstr "Lỗi không xác định." #: pretix/static/pretixcontrol/js/ui/main.js:292 -#, fuzzy -#| msgid "Your color has great contrast and is very easy to read!" msgid "Your color has great contrast and will provide excellent accessibility." -msgstr "Bạn đã chọn màu có độ tương phản tốt và dễ đọc!" +msgstr "" +"Màu sắc của bạn có độ tương phản cao và sẽ mang lại khả năng tiếp cận tuyệt " +"vời." #: pretix/static/pretixcontrol/js/ui/main.js:296 -#, fuzzy -#| msgid "Your color has decent contrast and is probably good-enough to read!" msgid "" "Your color has decent contrast and is sufficient for minimum accessibility " "requirements." -msgstr "Bạn đã giảm độ tương phản và có lẽ khá tốt để đọc!" +msgstr "" +"Màu sắc của bạn có độ tương phản khá và đủ đáp ứng yêu cầu tối thiểu về khả " +"năng tiếp cận." #: pretix/static/pretixcontrol/js/ui/main.js:300 msgid "" "Your color has insufficient contrast to white. Accessibility of your site " "will be impacted." msgstr "" +"Màu sắc của bạn có độ tương phản không đủ so với màu trắng. Khả năng tiếp " +"cận của trang web bạn sẽ bị ảnh hưởng." #: pretix/static/pretixcontrol/js/ui/main.js:416 #: pretix/static/pretixcontrol/js/ui/main.js:436 @@ -672,19 +672,19 @@ msgstr "Số trang không hợp lệ." #: pretix/static/pretixcontrol/js/ui/main.js:943 msgid "Use a different name internally" -msgstr "" +msgstr "Sử dụng tên khác ở bên trong" #: pretix/static/pretixcontrol/js/ui/main.js:983 msgid "Click to close" -msgstr "" +msgstr "Nhấn để đóng" #: pretix/static/pretixcontrol/js/ui/main.js:1064 msgid "You have unsaved changes!" -msgstr "" +msgstr "Bạn có những thay đổi chưa được lưu!" #: pretix/static/pretixcontrol/js/ui/orderchange.js:25 msgid "Calculating default price…" -msgstr "" +msgstr "Đang tính giá mặc định…" #: pretix/static/pretixcontrol/js/ui/plugins.js:69 #, fuzzy From 4b697b92448111a18ffbf65b3cae929ed028320b Mon Sep 17 00:00:00 2001 From: Michael Dao Date: Fri, 6 Jun 2025 08:08:25 +0200 Subject: [PATCH 30/98] Translations: Update Vietnamese Currently translated at 3.0% (181 of 5900 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/vi/ powered by weblate --- src/pretix/locale/vi/LC_MESSAGES/django.po | 52 +++++++++++----------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/src/pretix/locale/vi/LC_MESSAGES/django.po b/src/pretix/locale/vi/LC_MESSAGES/django.po index 18285ac13b..821ce58c76 100644 --- a/src/pretix/locale/vi/LC_MESSAGES/django.po +++ b/src/pretix/locale/vi/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-30 10:35+0000\n" -"PO-Revision-Date: 2025-06-06 05:51+0000\n" +"PO-Revision-Date: 2025-06-06 06:09+0000\n" "Last-Translator: Michael Dao \n" "Language-Team: Vietnamese \n" @@ -533,7 +533,7 @@ msgstr "Đã xóa sự kiện" #: pretix/api/webhooks.py:337 msgctxt "subevent" msgid "Event series date added" -msgstr "" +msgstr "Ngày của chuỗi sự kiện đã được thêm" #: pretix/api/webhooks.py:341 msgctxt "subevent" @@ -6938,7 +6938,7 @@ msgstr "" #: pretix/base/pdf.py:266 pretix/base/pdf.py:295 #: pretix/base/services/checkin.py:362 pretix/control/forms/filter.py:1240 msgid "Friday" -msgstr "" +msgstr "Thứ Sáu" #: pretix/base/pdf.py:270 msgid "Event end date and time" @@ -7595,27 +7595,27 @@ msgstr "" #: pretix/base/services/checkin.py:358 pretix/control/forms/filter.py:1236 msgid "Monday" -msgstr "" +msgstr "Thứ Hai" #: pretix/base/services/checkin.py:359 pretix/control/forms/filter.py:1237 msgid "Tuesday" -msgstr "" +msgstr "Thứ Ba" #: pretix/base/services/checkin.py:360 pretix/control/forms/filter.py:1238 msgid "Wednesday" -msgstr "" +msgstr "Thứ Tư" #: pretix/base/services/checkin.py:361 pretix/control/forms/filter.py:1239 msgid "Thursday" -msgstr "" +msgstr "Thứ Năm" #: pretix/base/services/checkin.py:363 pretix/control/forms/filter.py:1241 msgid "Saturday" -msgstr "" +msgstr "Thứ Bảy" #: pretix/base/services/checkin.py:364 pretix/control/forms/filter.py:1242 msgid "Sunday" -msgstr "" +msgstr "Chủ Nhật" #: pretix/base/services/checkin.py:368 #, python-brace-format @@ -17120,7 +17120,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/organizers/device_logs.html:50 #: pretix/control/templates/pretixcontrol/organizers/logs.html:80 msgid "No results" -msgstr "" +msgstr "Không có kết quả" #: pretix/control/templates/pretixcontrol/event/mail.html:7 #: pretix/control/templates/pretixcontrol/organizers/mail.html:11 @@ -18103,51 +18103,51 @@ msgstr "" #: pretix/control/templates/pretixcontrol/global_sysreport.html:16 msgid "January" -msgstr "" +msgstr "Tháng 1" #: pretix/control/templates/pretixcontrol/global_sysreport.html:17 msgid "February" -msgstr "" +msgstr "Tháng 2" #: pretix/control/templates/pretixcontrol/global_sysreport.html:18 msgid "March" -msgstr "" +msgstr "Tháng 3" #: pretix/control/templates/pretixcontrol/global_sysreport.html:19 msgid "April" -msgstr "" +msgstr "Tháng 4" #: pretix/control/templates/pretixcontrol/global_sysreport.html:20 msgid "May" -msgstr "" +msgstr "Tháng 5" #: pretix/control/templates/pretixcontrol/global_sysreport.html:21 msgid "June" -msgstr "" +msgstr "Tháng 6" #: pretix/control/templates/pretixcontrol/global_sysreport.html:22 msgid "July" -msgstr "" +msgstr "Tháng 7" #: pretix/control/templates/pretixcontrol/global_sysreport.html:23 msgid "August" -msgstr "" +msgstr "Tháng 8" #: pretix/control/templates/pretixcontrol/global_sysreport.html:24 msgid "September" -msgstr "" +msgstr "Tháng 9" #: pretix/control/templates/pretixcontrol/global_sysreport.html:25 msgid "October" -msgstr "" +msgstr "Tháng 10" #: pretix/control/templates/pretixcontrol/global_sysreport.html:26 msgid "November" -msgstr "" +msgstr "Tháng 11" #: pretix/control/templates/pretixcontrol/global_sysreport.html:27 msgid "December" -msgstr "" +msgstr "Tháng 12" #: pretix/control/templates/pretixcontrol/global_sysreport.html:32 msgid "Generate report" @@ -18864,7 +18864,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/items/question.html:91 msgid "Count" -msgstr "" +msgstr "Số lượng" #: pretix/control/templates/pretixcontrol/items/question.html:92 msgid "Percentage" @@ -28947,7 +28947,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:28 #: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:18 msgid "Cart expired" -msgstr "" +msgstr "Giỏ hàng đã hết hạn" #: pretix/presale/templates/pretixpresale/event/checkout_base.html:36 msgid "Show full cart" @@ -29553,11 +29553,13 @@ msgid "" "The items in your cart are no longer reserved for you. You can still " "complete your order as long as they’re available." msgstr "" +"Các mặt hàng trong giỏ của bạn không còn được giữ chỗ nữa. Bạn vẫn có thể " +"hoàn tất đơn hàng miễn là chúng còn hàng." #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:509 #: pretix/presale/templates/pretixpresale/fragment_modals.html:48 msgid "Renew reservation" -msgstr "" +msgstr "Gia hạn giữ chỗ" #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:514 msgid "Overview of your ordered products." From 87312c9d8a2f9df50b01a4dd3d95af70d31dfabb Mon Sep 17 00:00:00 2001 From: Michael Dao Date: Fri, 6 Jun 2025 07:57:14 +0200 Subject: [PATCH 31/98] Translations: Update Vietnamese Currently translated at 100.0% (252 of 252 strings) Translation: pretix/pretix (JavaScript parts) Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/vi/ powered by weblate --- src/pretix/locale/vi/LC_MESSAGES/djangojs.po | 206 ++++++++++--------- 1 file changed, 107 insertions(+), 99 deletions(-) diff --git a/src/pretix/locale/vi/LC_MESSAGES/djangojs.po b/src/pretix/locale/vi/LC_MESSAGES/djangojs.po index 47a3add0ce..6d1e52e08a 100644 --- a/src/pretix/locale/vi/LC_MESSAGES/djangojs.po +++ b/src/pretix/locale/vi/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-30 10:36+0000\n" -"PO-Revision-Date: 2025-06-06 05:51+0000\n" +"PO-Revision-Date: 2025-06-06 06:09+0000\n" "Last-Translator: Michael Dao \n" "Language-Team: Vietnamese \n" @@ -687,231 +687,231 @@ msgid "Calculating default price…" msgstr "Đang tính giá mặc định…" #: pretix/static/pretixcontrol/js/ui/plugins.js:69 -#, fuzzy -#| msgid "Search results" msgid "No results" -msgstr "Kết quả tìm kiếm" +msgstr "Không có kết quả" #: pretix/static/pretixcontrol/js/ui/question.js:42 msgid "Others" -msgstr "" +msgstr "Khác" #: pretix/static/pretixcontrol/js/ui/question.js:82 msgid "Count" -msgstr "" +msgstr "Số lượng" #: pretix/static/pretixcontrol/js/ui/subevent.js:111 msgid "(one more date)" msgid_plural "({num} more dates)" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "{num} ngày còn lại" #: pretix/static/pretixpresale/js/ui/cart.js:48 msgid "" "The items in your cart are no longer reserved for you. You can still " "complete your order as long as they’re available." msgstr "" +"Các mặt hàng trong giỏ của bạn không còn được giữ chỗ nữa. Bạn vẫn có thể " +"hoàn tất đơn hàng miễn là chúng còn hàng." #: pretix/static/pretixpresale/js/ui/cart.js:50 msgid "Cart expired" -msgstr "" +msgstr "Giỏ hàng đã hết hạn" #: pretix/static/pretixpresale/js/ui/cart.js:59 #: pretix/static/pretixpresale/js/ui/cart.js:87 msgid "Your cart is about to expire." -msgstr "" +msgstr "Giỏ hàng của bạn sắp hết hạn." #: pretix/static/pretixpresale/js/ui/cart.js:64 msgid "The items in your cart are reserved for you for one minute." msgid_plural "The items in your cart are reserved for you for {num} minutes." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Các mặt hàng trong giỏ của bạn được giữ trong vòng {num} phút." #: pretix/static/pretixpresale/js/ui/cart.js:86 msgid "Your cart has expired." -msgstr "" +msgstr "Giỏ hàng của bạn đã hết hạn." #: pretix/static/pretixpresale/js/ui/cart.js:89 msgid "" "The items in your cart are no longer reserved for you. You can still " "complete your order as long as they're available." msgstr "" +"Các mặt hàng trong giỏ của bạn không còn được giữ chỗ nữa. Bạn vẫn có thể " +"hoàn tất đơn hàng miễn là chúng còn hàng." #: pretix/static/pretixpresale/js/ui/cart.js:90 msgid "Do you want to renew the reservation period?" -msgstr "" +msgstr "Bạn có muốn gia hạn thời gian giữ chỗ không?" #: pretix/static/pretixpresale/js/ui/cart.js:93 msgid "Renew reservation" -msgstr "" +msgstr "Gia hạn giữ chỗ" #: pretix/static/pretixpresale/js/ui/main.js:194 msgid "The organizer keeps %(currency)s %(amount)s" -msgstr "" +msgstr "Người tổ chức giữ lại %(currency)s %(amount)s" #: pretix/static/pretixpresale/js/ui/main.js:202 msgid "You get %(currency)s %(amount)s back" -msgstr "" +msgstr "Bạn nhận lại %(currency)s %(amount)s" #: pretix/static/pretixpresale/js/ui/main.js:218 msgid "Please enter the amount the organizer can keep." -msgstr "" +msgstr "Vui lòng nhập số tiền người tổ chức được giữ lại." #: pretix/static/pretixpresale/js/ui/main.js:558 msgid "Your local time:" -msgstr "" +msgstr "Thời gian địa phương của bạn:" #: pretix/static/pretixpresale/js/walletdetection.js:39 msgid "Google Pay" -msgstr "" +msgstr "Nền tảng Google Pay" #: pretix/static/pretixpresale/js/widget/widget.js:16 #: pretix/static/pretixpresale/js/widget/widget.v1.js:16 msgctxt "widget" msgid "Quantity" -msgstr "" +msgstr "Số lượng" #: pretix/static/pretixpresale/js/widget/widget.js:17 #: pretix/static/pretixpresale/js/widget/widget.v1.js:17 msgctxt "widget" msgid "Decrease quantity" -msgstr "" +msgstr "Giảm số lượng" #: pretix/static/pretixpresale/js/widget/widget.js:18 #: pretix/static/pretixpresale/js/widget/widget.v1.js:18 msgctxt "widget" msgid "Increase quantity" -msgstr "" +msgstr "Tăng số lượng" #: pretix/static/pretixpresale/js/widget/widget.js:19 msgctxt "widget" msgid "Filter events by" -msgstr "" +msgstr "Lọc sự kiện bởi" #: pretix/static/pretixpresale/js/widget/widget.js:20 msgctxt "widget" msgid "Filter" -msgstr "" +msgstr "Lọc" #: pretix/static/pretixpresale/js/widget/widget.js:21 #: pretix/static/pretixpresale/js/widget/widget.v1.js:19 msgctxt "widget" msgid "Price" -msgstr "" +msgstr "Giá" #: pretix/static/pretixpresale/js/widget/widget.js:22 #: pretix/static/pretixpresale/js/widget/widget.v1.js:20 #, javascript-format msgctxt "widget" msgid "Original price: %s" -msgstr "" +msgstr "Giá gốc: %s" #: pretix/static/pretixpresale/js/widget/widget.js:23 #: pretix/static/pretixpresale/js/widget/widget.v1.js:21 #, javascript-format msgctxt "widget" msgid "New price: %s" -msgstr "" +msgstr "Giá mới: %s" #: pretix/static/pretixpresale/js/widget/widget.js:24 #: pretix/static/pretixpresale/js/widget/widget.v1.js:22 msgctxt "widget" msgid "Select" -msgstr "" +msgstr "Chọn" #: pretix/static/pretixpresale/js/widget/widget.js:25 #: pretix/static/pretixpresale/js/widget/widget.v1.js:23 #, javascript-format msgctxt "widget" msgid "Select %s" -msgstr "" +msgstr "Chọn %s" #: pretix/static/pretixpresale/js/widget/widget.js:26 #: pretix/static/pretixpresale/js/widget/widget.v1.js:24 #, javascript-format msgctxt "widget" msgid "Select variant %s" -msgstr "" +msgstr "Chọn biến thể %s" #: pretix/static/pretixpresale/js/widget/widget.js:27 #: pretix/static/pretixpresale/js/widget/widget.v1.js:25 msgctxt "widget" msgid "Sold out" -msgstr "" +msgstr "Bán hết" #: pretix/static/pretixpresale/js/widget/widget.js:28 #: pretix/static/pretixpresale/js/widget/widget.v1.js:26 msgctxt "widget" msgid "Buy" -msgstr "" +msgstr "Mua" #: pretix/static/pretixpresale/js/widget/widget.js:29 #: pretix/static/pretixpresale/js/widget/widget.v1.js:27 msgctxt "widget" msgid "Register" -msgstr "" +msgstr "Đăng ký" #: pretix/static/pretixpresale/js/widget/widget.js:30 #: pretix/static/pretixpresale/js/widget/widget.v1.js:28 msgctxt "widget" msgid "Reserved" -msgstr "" +msgstr "Đã đặt" #: pretix/static/pretixpresale/js/widget/widget.js:31 #: pretix/static/pretixpresale/js/widget/widget.v1.js:29 msgctxt "widget" msgid "FREE" -msgstr "" +msgstr "MIỄN PHÍ" #: pretix/static/pretixpresale/js/widget/widget.js:32 #: pretix/static/pretixpresale/js/widget/widget.v1.js:30 msgctxt "widget" msgid "from %(currency)s %(price)s" -msgstr "" +msgstr "từ %(currency)s %(price)s" #: pretix/static/pretixpresale/js/widget/widget.js:33 #: pretix/static/pretixpresale/js/widget/widget.v1.js:31 #, javascript-format msgctxt "widget" msgid "Image of %s" -msgstr "" +msgstr "Hình của %s" #: pretix/static/pretixpresale/js/widget/widget.js:34 #: pretix/static/pretixpresale/js/widget/widget.v1.js:32 msgctxt "widget" msgid "incl. %(rate)s% %(taxname)s" -msgstr "" +msgstr "đã bao gồm %(rate)s% %(taxname)s" #: pretix/static/pretixpresale/js/widget/widget.js:35 #: pretix/static/pretixpresale/js/widget/widget.v1.js:33 msgctxt "widget" msgid "plus %(rate)s% %(taxname)s" -msgstr "" +msgstr "cộng thêm %(rate)s% %(taxname)s" #: pretix/static/pretixpresale/js/widget/widget.js:36 #: pretix/static/pretixpresale/js/widget/widget.v1.js:34 msgctxt "widget" msgid "incl. taxes" -msgstr "" +msgstr "đã bao gồm thuế" #: pretix/static/pretixpresale/js/widget/widget.js:37 #: pretix/static/pretixpresale/js/widget/widget.v1.js:35 msgctxt "widget" msgid "plus taxes" -msgstr "" +msgstr "cộng thêm thuế" #: pretix/static/pretixpresale/js/widget/widget.js:38 #: pretix/static/pretixpresale/js/widget/widget.v1.js:36 #, javascript-format msgctxt "widget" msgid "currently available: %s" -msgstr "" +msgstr "hiện có sẵn: %s" #: pretix/static/pretixpresale/js/widget/widget.js:39 #: pretix/static/pretixpresale/js/widget/widget.v1.js:37 msgctxt "widget" msgid "Only available with a voucher" -msgstr "" +msgstr "Chỉ áp dụng với phiếu giảm giá" #: pretix/static/pretixpresale/js/widget/widget.js:40 #: pretix/static/pretixpresale/js/widget/widget.js:43 @@ -919,38 +919,38 @@ msgstr "" #: pretix/static/pretixpresale/js/widget/widget.v1.js:41 msgctxt "widget" msgid "Not yet available" -msgstr "" +msgstr "Chưa có sẵn" #: pretix/static/pretixpresale/js/widget/widget.js:41 #: pretix/static/pretixpresale/js/widget/widget.v1.js:39 msgctxt "widget" msgid "Not available anymore" -msgstr "" +msgstr "Không có nữa" #: pretix/static/pretixpresale/js/widget/widget.js:42 #: pretix/static/pretixpresale/js/widget/widget.v1.js:40 msgctxt "widget" msgid "Currently not available" -msgstr "" +msgstr "Hiện tại không có sẵn" #: pretix/static/pretixpresale/js/widget/widget.js:44 #: pretix/static/pretixpresale/js/widget/widget.v1.js:42 #, javascript-format msgctxt "widget" msgid "minimum amount to order: %s" -msgstr "" +msgstr "Số lượng đặt hàng tối thiểu: %s" #: pretix/static/pretixpresale/js/widget/widget.js:45 #: pretix/static/pretixpresale/js/widget/widget.v1.js:43 msgctxt "widget" msgid "Close ticket shop" -msgstr "" +msgstr "Đóng cửa hàng vé" #: pretix/static/pretixpresale/js/widget/widget.js:46 #: pretix/static/pretixpresale/js/widget/widget.v1.js:44 msgctxt "widget" msgid "The ticket shop could not be loaded." -msgstr "" +msgstr "Không thể tải cửa hàng vé." #: pretix/static/pretixpresale/js/widget/widget.js:47 #: pretix/static/pretixpresale/js/widget/widget.v1.js:45 @@ -959,24 +959,26 @@ msgid "" "There are currently a lot of users in this ticket shop. Please open the shop " "in a new tab to continue." msgstr "" +"Hiện có rất nhiều người dùng trong cửa hàng vé này. Vui lòng mở cửa hàng ở " +"tab mới để tiếp tục." #: pretix/static/pretixpresale/js/widget/widget.js:49 #: pretix/static/pretixpresale/js/widget/widget.v1.js:47 msgctxt "widget" msgid "Open ticket shop" -msgstr "" +msgstr "Mở cửa hàng vé" #: pretix/static/pretixpresale/js/widget/widget.js:50 #: pretix/static/pretixpresale/js/widget/widget.v1.js:48 msgctxt "widget" msgid "Checkout" -msgstr "" +msgstr "Thanh toán" #: pretix/static/pretixpresale/js/widget/widget.js:51 #: pretix/static/pretixpresale/js/widget/widget.v1.js:49 msgctxt "widget" msgid "The cart could not be created. Please try again later" -msgstr "" +msgstr "Không thể tạo giỏ hàng. Vui lòng thử lại sau" #: pretix/static/pretixpresale/js/widget/widget.js:52 #: pretix/static/pretixpresale/js/widget/widget.v1.js:50 @@ -985,12 +987,14 @@ msgid "" "We could not create your cart, since there are currently too many users in " "this ticket shop. Please click \"Continue\" to retry in a new tab." msgstr "" +"Chúng tôi không thể tạo giỏ hàng của bạn do hiện có quá nhiều người dùng " +"trong cửa hàng vé này. Vui lòng nhấn \"Tiếp tục\" để thử lại trong tab mới." #: pretix/static/pretixpresale/js/widget/widget.js:54 #: pretix/static/pretixpresale/js/widget/widget.v1.js:52 msgctxt "widget" msgid "Waiting list" -msgstr "" +msgstr "Danh sách chờ" #: pretix/static/pretixpresale/js/widget/widget.js:55 #: pretix/static/pretixpresale/js/widget/widget.v1.js:53 @@ -999,112 +1003,114 @@ msgid "" "You currently have an active cart for this event. If you select more " "products, they will be added to your existing cart." msgstr "" +"Hiện bạn đang có một giỏ hàng còn hiệu lực cho sự kiện này. Nếu bạn chọn " +"thêm sản phẩm, chúng sẽ được thêm vào giỏ hàng hiện tại của bạn." #: pretix/static/pretixpresale/js/widget/widget.js:57 #: pretix/static/pretixpresale/js/widget/widget.v1.js:55 msgctxt "widget" msgid "Resume checkout" -msgstr "" +msgstr "Tiếp tục thanh toán" #: pretix/static/pretixpresale/js/widget/widget.js:58 #: pretix/static/pretixpresale/js/widget/widget.v1.js:56 msgctxt "widget" msgid "Redeem a voucher" -msgstr "" +msgstr "Sử dụng phiếu giảm giá" #: pretix/static/pretixpresale/js/widget/widget.js:59 #: pretix/static/pretixpresale/js/widget/widget.v1.js:57 msgctxt "widget" msgid "Redeem" -msgstr "" +msgstr "Đổi mã" #: pretix/static/pretixpresale/js/widget/widget.js:60 #: pretix/static/pretixpresale/js/widget/widget.v1.js:58 msgctxt "widget" msgid "Voucher code" -msgstr "" +msgstr "Mã giảm giá" #: pretix/static/pretixpresale/js/widget/widget.js:61 #: pretix/static/pretixpresale/js/widget/widget.v1.js:59 msgctxt "widget" msgid "Close" -msgstr "" +msgstr "Đóng" #: pretix/static/pretixpresale/js/widget/widget.js:62 msgctxt "widget" msgid "Close checkout" -msgstr "" +msgstr "Đóng trang thanh toán" #: pretix/static/pretixpresale/js/widget/widget.js:63 msgctxt "widget" msgid "You cannot cancel this operation. Please wait for loading to finish." -msgstr "" +msgstr "Bạn không thể hủy thao tác này. Vui lòng chờ quá trình tải hoàn tất." #: pretix/static/pretixpresale/js/widget/widget.js:64 #: pretix/static/pretixpresale/js/widget/widget.v1.js:60 msgctxt "widget" msgid "Continue" -msgstr "" +msgstr "Tiếp tục" #: pretix/static/pretixpresale/js/widget/widget.js:65 #: pretix/static/pretixpresale/js/widget/widget.v1.js:61 msgctxt "widget" msgid "Show variants" -msgstr "" +msgstr "Hiển thị các biến thể" #: pretix/static/pretixpresale/js/widget/widget.js:66 #: pretix/static/pretixpresale/js/widget/widget.v1.js:62 msgctxt "widget" msgid "Hide variants" -msgstr "" +msgstr "Ẩn các biến thể" #: pretix/static/pretixpresale/js/widget/widget.js:67 #: pretix/static/pretixpresale/js/widget/widget.v1.js:63 msgctxt "widget" msgid "Choose a different event" -msgstr "" +msgstr "Chọn sự kiện khác" #: pretix/static/pretixpresale/js/widget/widget.js:68 #: pretix/static/pretixpresale/js/widget/widget.v1.js:64 msgctxt "widget" msgid "Choose a different date" -msgstr "" +msgstr "Chọn ngày khác" #: pretix/static/pretixpresale/js/widget/widget.js:69 #: pretix/static/pretixpresale/js/widget/widget.v1.js:65 msgctxt "widget" msgid "Back" -msgstr "" +msgstr "Quay về" #: pretix/static/pretixpresale/js/widget/widget.js:70 #: pretix/static/pretixpresale/js/widget/widget.v1.js:66 msgctxt "widget" msgid "Next month" -msgstr "" +msgstr "Tháng sau" #: pretix/static/pretixpresale/js/widget/widget.js:71 #: pretix/static/pretixpresale/js/widget/widget.v1.js:67 msgctxt "widget" msgid "Previous month" -msgstr "" +msgstr "Tháng trước" #: pretix/static/pretixpresale/js/widget/widget.js:72 #: pretix/static/pretixpresale/js/widget/widget.v1.js:68 msgctxt "widget" msgid "Next week" -msgstr "" +msgstr "Tuần sau" #: pretix/static/pretixpresale/js/widget/widget.js:73 #: pretix/static/pretixpresale/js/widget/widget.v1.js:69 msgctxt "widget" msgid "Previous week" -msgstr "" +msgstr "Tuần trước" #: pretix/static/pretixpresale/js/widget/widget.js:74 #: pretix/static/pretixpresale/js/widget/widget.v1.js:70 msgctxt "widget" msgid "Open seat selection" -msgstr "" +msgstr "Mở chọn chỗ ngồi" #: pretix/static/pretixpresale/js/widget/widget.js:75 #: pretix/static/pretixpresale/js/widget/widget.v1.js:71 @@ -1114,142 +1120,144 @@ msgid "" "add yourself to the waiting list. We will then notify if seats are available " "again." msgstr "" +"Một số hoặc tất cả các loại vé hiện đã bán hết. Nếu bạn muốn, bạn có thể " +"thêm tên vào danh sách chờ. Chúng tôi sẽ thông báo khi có chỗ ngồi lại." #: pretix/static/pretixpresale/js/widget/widget.js:76 #: pretix/static/pretixpresale/js/widget/widget.v1.js:72 msgctxt "widget" msgid "Load more" -msgstr "" +msgstr "Tải thêm" #: pretix/static/pretixpresale/js/widget/widget.js:78 #: pretix/static/pretixpresale/js/widget/widget.v1.js:74 msgid "Mo" -msgstr "" +msgstr "T2" #: pretix/static/pretixpresale/js/widget/widget.js:79 #: pretix/static/pretixpresale/js/widget/widget.v1.js:75 msgid "Tu" -msgstr "" +msgstr "T3" #: pretix/static/pretixpresale/js/widget/widget.js:80 #: pretix/static/pretixpresale/js/widget/widget.v1.js:76 msgid "We" -msgstr "" +msgstr "T4" #: pretix/static/pretixpresale/js/widget/widget.js:81 #: pretix/static/pretixpresale/js/widget/widget.v1.js:77 msgid "Th" -msgstr "" +msgstr "T5" #: pretix/static/pretixpresale/js/widget/widget.js:82 #: pretix/static/pretixpresale/js/widget/widget.v1.js:78 msgid "Fr" -msgstr "" +msgstr "T6" #: pretix/static/pretixpresale/js/widget/widget.js:83 #: pretix/static/pretixpresale/js/widget/widget.v1.js:79 msgid "Sa" -msgstr "" +msgstr "T7" #: pretix/static/pretixpresale/js/widget/widget.js:84 #: pretix/static/pretixpresale/js/widget/widget.v1.js:80 msgid "Su" -msgstr "" +msgstr "CN" #: pretix/static/pretixpresale/js/widget/widget.js:85 #: pretix/static/pretixpresale/js/widget/widget.v1.js:81 msgid "Monday" -msgstr "" +msgstr "Thứ Hai" #: pretix/static/pretixpresale/js/widget/widget.js:86 #: pretix/static/pretixpresale/js/widget/widget.v1.js:82 msgid "Tuesday" -msgstr "" +msgstr "Thứ Ba" #: pretix/static/pretixpresale/js/widget/widget.js:87 #: pretix/static/pretixpresale/js/widget/widget.v1.js:83 msgid "Wednesday" -msgstr "" +msgstr "Thứ Tư" #: pretix/static/pretixpresale/js/widget/widget.js:88 #: pretix/static/pretixpresale/js/widget/widget.v1.js:84 msgid "Thursday" -msgstr "" +msgstr "Thứ Năm" #: pretix/static/pretixpresale/js/widget/widget.js:89 #: pretix/static/pretixpresale/js/widget/widget.v1.js:85 msgid "Friday" -msgstr "" +msgstr "Thứ Sáu" #: pretix/static/pretixpresale/js/widget/widget.js:90 #: pretix/static/pretixpresale/js/widget/widget.v1.js:86 msgid "Saturday" -msgstr "" +msgstr "Thứ Bảy" #: pretix/static/pretixpresale/js/widget/widget.js:91 #: pretix/static/pretixpresale/js/widget/widget.v1.js:87 msgid "Sunday" -msgstr "" +msgstr "Chủ Nhật" #: pretix/static/pretixpresale/js/widget/widget.js:94 #: pretix/static/pretixpresale/js/widget/widget.v1.js:90 msgid "January" -msgstr "" +msgstr "Tháng 1" #: pretix/static/pretixpresale/js/widget/widget.js:95 #: pretix/static/pretixpresale/js/widget/widget.v1.js:91 msgid "February" -msgstr "" +msgstr "Tháng 2" #: pretix/static/pretixpresale/js/widget/widget.js:96 #: pretix/static/pretixpresale/js/widget/widget.v1.js:92 msgid "March" -msgstr "" +msgstr "Tháng 3" #: pretix/static/pretixpresale/js/widget/widget.js:97 #: pretix/static/pretixpresale/js/widget/widget.v1.js:93 msgid "April" -msgstr "" +msgstr "Tháng 4" #: pretix/static/pretixpresale/js/widget/widget.js:98 #: pretix/static/pretixpresale/js/widget/widget.v1.js:94 msgid "May" -msgstr "" +msgstr "Tháng 5" #: pretix/static/pretixpresale/js/widget/widget.js:99 #: pretix/static/pretixpresale/js/widget/widget.v1.js:95 msgid "June" -msgstr "" +msgstr "Tháng 6" #: pretix/static/pretixpresale/js/widget/widget.js:100 #: pretix/static/pretixpresale/js/widget/widget.v1.js:96 msgid "July" -msgstr "" +msgstr "Tháng 7" #: pretix/static/pretixpresale/js/widget/widget.js:101 #: pretix/static/pretixpresale/js/widget/widget.v1.js:97 msgid "August" -msgstr "" +msgstr "Tháng 8" #: pretix/static/pretixpresale/js/widget/widget.js:102 #: pretix/static/pretixpresale/js/widget/widget.v1.js:98 msgid "September" -msgstr "" +msgstr "Tháng 9" #: pretix/static/pretixpresale/js/widget/widget.js:103 #: pretix/static/pretixpresale/js/widget/widget.v1.js:99 msgid "October" -msgstr "" +msgstr "Tháng 10" #: pretix/static/pretixpresale/js/widget/widget.js:104 #: pretix/static/pretixpresale/js/widget/widget.v1.js:100 msgid "November" -msgstr "" +msgstr "Tháng 11" #: pretix/static/pretixpresale/js/widget/widget.js:105 #: pretix/static/pretixpresale/js/widget/widget.v1.js:101 msgid "December" -msgstr "" +msgstr "Tháng 12" #~ msgid "" #~ "Your color has bad contrast for text on white background, please choose a " From 6959dca7c1dae0750447be9c1156cd3a41c8578b Mon Sep 17 00:00:00 2001 From: Michael Dao Date: Fri, 6 Jun 2025 08:31:35 +0200 Subject: [PATCH 32/98] Translations: Update Vietnamese Currently translated at 23.7% (1404 of 5900 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/vi/ powered by weblate --- src/pretix/locale/vi/LC_MESSAGES/django.po | 2808 +++++++++++--------- 1 file changed, 1602 insertions(+), 1206 deletions(-) diff --git a/src/pretix/locale/vi/LC_MESSAGES/django.po b/src/pretix/locale/vi/LC_MESSAGES/django.po index 821ce58c76..6bccc86bca 100644 --- a/src/pretix/locale/vi/LC_MESSAGES/django.po +++ b/src/pretix/locale/vi/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-30 10:35+0000\n" -"PO-Revision-Date: 2025-06-06 06:09+0000\n" +"PO-Revision-Date: 2025-06-06 06:35+0000\n" "Last-Translator: Michael Dao \n" "Language-Team: Vietnamese \n" @@ -247,8 +247,9 @@ msgid "" "Events cannot be created as 'live'. Quotas and payment must be added to the " "event before sales can go live." msgstr "" -"Không thể tạo sự kiện dưới dạng 'xuất bản'. Phải thêm hạn ngạch và thanh " -"toán vào sự kiện trước khi có thể xuất bản." +"Các sự kiện không thể được tạo thành 'Trực tiếp'. Không thể tạo sự kiện dưới " +"dạng 'xuất bản'. Phải thêm hạn ngạch và thanh toán vào sự kiện trước khi có " +"thể xuất bản." #: pretix/api/serializers/event.py:246 pretix/api/serializers/event.py:555 #, python-brace-format @@ -289,8 +290,9 @@ msgid "" "Updating add-ons, bundles, or variations via PATCH/PUT is not supported. " "Please use the dedicated nested endpoint." msgstr "" -"Không hỗ trợ cập nhật tiện ích bổ sung, gói hoặc biến thể thông qua PATCH/" -"PUT. Vui lòng sử dụng điểm cuối lồng nhau chuyên dụng." +"Cập nhật các tiện ích bổ sung, gói hoặc biến thể thông qua bản vá/đặt không " +"được hỗ trợ. Không hỗ trợ cập nhật tiện ích bổ sung, gói hoặc biến thể thông " +"qua PATCH/PUT. Vui lòng sử dụng điểm cuối lồng nhau chuyên dụng." #: pretix/api/serializers/item.py:306 msgid "Only admission products can currently be personalized." @@ -301,8 +303,10 @@ msgid "" "Gift card products should not be associated with non-zero tax rates since " "sales tax will be applied when the gift card is redeemed." msgstr "" -"Các sản phẩm thẻ quà tặng không nên liên quan đến mức thuế suất khác 0 vì " -"thuế bán hàng sẽ được áp dụng khi thẻ quà tặng được đổi." +"Sản phẩm thẻ quà tặng không nên được liên kết với thuế suất khác không vì " +"thuế bán hàng sẽ được áp dụng khi thẻ quà tặng được đổi.Các sản phẩm thẻ quà " +"tặng không nên liên quan đến mức thuế suất khác 0 vì thuế bán hàng sẽ được " +"áp dụng khi thẻ quà tặng được đổi." #: pretix/api/serializers/item.py:322 pretix/control/forms/item.py:774 msgid "Gift card products should not be admission products at the same time." @@ -313,8 +317,9 @@ msgid "" "Updating options via PATCH/PUT is not supported. Please use the dedicated " "nested endpoint." msgstr "" -"Không hỗ trợ tùy chọn cập nhật qua PATCH/PUT. Vui lòng sử dụng điểm cuối " -"lồng nhau chuyên dụng." +"Cập nhật các tùy chọn thông qua Patch/Put không được hỗ trợ. Không hỗ trợ " +"tùy chọn cập nhật qua PATCH/PUT. Vui lòng sử dụng điểm cuối lồng nhau chuyên " +"dụng." #: pretix/api/serializers/item.py:533 pretix/control/forms/item.py:178 msgid "Question cannot depend on a question asked during check-in." @@ -337,8 +342,9 @@ msgid "" "A medium with the same identifier and type already exists in your organizer " "account." msgstr "" -"Một phương tiện có cùng mã định danh và loại đã tồn tại trong tài khoản " -"người tổ chức của bạn." +"Một phương tiện có cùng một định danh và loại đã tồn tại trong tài khoản nhà " +"tổ chức của bạn.Một phương tiện có cùng mã định danh và loại đã tồn tại " +"trong tài khoản người tổ chức của bạn." #: pretix/api/serializers/order.py:79 #, python-brace-format @@ -371,8 +377,9 @@ msgid "" "A gift card with the same secret already exists in your or an affiliated " "organizer account." msgstr "" -"Thẻ quà tặng có cùng bí mật đã tồn tại trong tài khoản của bạn hoặc tài " -"khoản của đơn vị tổ chức liên kết." +"Thẻ quà tặng có cùng bí mật đã tồn tại trong tài khoản tổ chức liên kết hoặc " +"của bạn.Thẻ quà tặng có cùng bí mật đã tồn tại trong tài khoản của bạn hoặc " +"tài khoản của đơn vị tổ chức liên kết." #: pretix/api/serializers/organizer.py:329 #: pretix/control/views/organizer.py:773 @@ -399,12 +406,14 @@ msgid "Medium connected to other event" msgstr "Phương tiện kết nối với sự kiện khác" #: pretix/api/views/oauth.py:107 pretix/control/logdisplay.py:692 -#, python-brace-format +#, fuzzy, python-brace-format msgid "" "The application \"{application_name}\" has been authorized to access your " "account." msgstr "" -"Ứng dụng \"{application_name}\" đã được phép truy cập vào tài khoản của bạn." +"Ứng dụng \"{application_name} \" đã được ủy quyền truy cập vào tài khoản " +"của bạn.Ứng dụng \"{application_name}\" đã được phép truy cập vào tài khoản " +"của bạn." #: pretix/api/views/order.py:607 pretix/control/views/orders.py:1609 #: pretix/presale/views/order.py:731 pretix/presale/views/order.py:804 @@ -538,62 +547,64 @@ msgstr "Ngày của chuỗi sự kiện đã được thêm" #: pretix/api/webhooks.py:341 msgctxt "subevent" msgid "Event series date changed" -msgstr "" +msgstr "Chuỗi sự kiện đã thay đổi" #: pretix/api/webhooks.py:345 msgctxt "subevent" msgid "Event series date deleted" -msgstr "" +msgstr "Dòng sự kiện ngày bị xóa" #: pretix/api/webhooks.py:349 msgid "" "Product changed (including product added or deleted and including changes to " "nested objects like variations or bundles)" msgstr "" +"Sản phẩm đã thay đổi (bao gồm cả sản phẩm được thêm hoặc bị xóa và bao gồm " +"các thay đổi đối với các đối tượng lồng nhau như biến thể hoặc gói)" #: pretix/api/webhooks.py:354 msgid "Shop taken live" -msgstr "" +msgstr "Cửa hàng lấy trực tiếp" #: pretix/api/webhooks.py:358 msgid "Shop taken offline" -msgstr "" +msgstr "Cửa hàng được thực hiện ngoại tuyến" #: pretix/api/webhooks.py:362 msgid "Test-Mode of shop has been activated" -msgstr "" +msgstr "chế độ thử nghiệm của cửa hàng đã được kích hoạt" #: pretix/api/webhooks.py:366 msgid "Test-Mode of shop has been deactivated" -msgstr "" +msgstr "chế độ thử nghiệm của cửa hàng đã bị vô hiệu hóa" #: pretix/api/webhooks.py:370 msgid "Waiting list entry added" -msgstr "" +msgstr "Mục nhập danh sách chờ được thêm vào" #: pretix/api/webhooks.py:374 msgid "Waiting list entry changed" -msgstr "" +msgstr "Mục nhập danh sách chờ đã thay đổi" #: pretix/api/webhooks.py:378 msgid "Waiting list entry deleted" -msgstr "" +msgstr "Danh sách chờ đã xóa" #: pretix/api/webhooks.py:382 msgid "Waiting list entry received voucher" -msgstr "" +msgstr "Mục nhập danh sách chờ nhận được chứng từ" #: pretix/api/webhooks.py:386 msgid "Customer account created" -msgstr "" +msgstr "Tài khoản khách hàng được tạo" #: pretix/api/webhooks.py:390 msgid "Customer account changed" -msgstr "" +msgstr "Tài khoản khách hàng đã thay đổi" #: pretix/api/webhooks.py:394 msgid "Customer account anonymized" -msgstr "" +msgstr "Tài khoản khách hàng ẩn danh" #: pretix/base/addressvalidation.py:100 pretix/base/addressvalidation.py:103 #: pretix/base/addressvalidation.py:108 pretix/base/forms/questions.py:1004 @@ -606,20 +617,20 @@ msgstr "" #: pretix/plugins/banktransfer/payment.py:679 #: pretix/presale/forms/customer.py:151 msgid "This field is required." -msgstr "" +msgstr "Trường này là bắt buộc." #: pretix/base/addressvalidation.py:213 msgid "Enter a postal code in the format XXX." -msgstr "" +msgstr "Nhập mã bưu chính theo định dạng xxx." #: pretix/base/addressvalidation.py:222 pretix/base/addressvalidation.py:224 msgid "Enter a postal code in the format XXXX." -msgstr "" +msgstr "Nhập mã bưu chính trong định dạng xxxx." #: pretix/base/auth.py:146 -#, python-brace-format +#, fuzzy, python-brace-format msgid "{system} User" -msgstr "" +msgstr "{System} Người dùng" #: pretix/base/auth.py:155 pretix/base/exporters/customers.py:67 #: pretix/base/exporters/orderlist.py:261 @@ -651,11 +662,11 @@ msgstr "" #: pretix/base/models/customers.py:96 pretix/control/forms/mailsetup.py:57 #: pretix/presale/forms/customer.py:61 pretix/presale/forms/customer.py:301 msgid "Password" -msgstr "" +msgstr "Mật khẩu" #: pretix/base/auth.py:176 pretix/base/auth.py:183 msgid "Your password must contain both numeric and alphabetic characters." -msgstr "" +msgstr "Mật khẩu của bạn phải chứa cả ký tự số và chữ cái." #: pretix/base/auth.py:202 pretix/base/auth.py:212 #, python-format @@ -667,17 +678,19 @@ msgstr[0] "" #: pretix/base/channels.py:168 msgid "Online shop" -msgstr "" +msgstr "Cửa hàng trực tuyến" #: pretix/base/channels.py:174 msgid "API" -msgstr "" +msgstr "Mã API" #: pretix/base/channels.py:175 msgid "" "API sales channels come with no built-in functionality, but may be used for " "custom integrations." msgstr "" +"Các kênh bán hàng API không có chức năng tích hợp, nhưng có thể được sử dụng " +"cho các tích hợp tùy chỉnh." #: pretix/base/context.py:38 #, python-brace-format @@ -687,68 +700,72 @@ msgstr "" #: pretix/base/context.py:48 #, python-brace-format msgid "powered by {name} based on pretix" -msgstr "" +msgstr " Được cung cấp bởi {name} dựa trên Pretix " #: pretix/base/context.py:55 -#, python-format +#, fuzzy, python-format msgid "ticketing powered by pretix" -msgstr "" +msgstr " vé được cung cấp bởi Pretix " #: pretix/base/context.py:64 msgid "source code" -msgstr "" +msgstr "Mã nguồn" #: pretix/base/customersso/oidc.py:61 #, python-brace-format msgid "Configuration option \"{name}\" is missing." -msgstr "" +msgstr "Tùy chọn cấu hình \"{name} \" bị thiếu." #: pretix/base/customersso/oidc.py:69 pretix/base/customersso/oidc.py:74 -#, python-brace-format +#, fuzzy, python-brace-format msgid "" "Unable to retrieve configuration from \"{url}\". Error message: \"{error}\"." -msgstr "" +msgstr "Không thể truy xuất cấu hình từ \"{url} \"." #: pretix/base/customersso/oidc.py:80 pretix/base/customersso/oidc.py:85 #: pretix/base/customersso/oidc.py:90 pretix/base/customersso/oidc.py:95 #: pretix/base/customersso/oidc.py:100 pretix/base/customersso/oidc.py:105 #, python-brace-format msgid "Incompatible SSO provider: \"{error}\"." -msgstr "" +msgstr "Nhà cung cấp SSO không tương thích: \"{error} \"." #: pretix/base/customersso/oidc.py:111 -#, python-brace-format +#, fuzzy, python-brace-format msgid "You are not requesting \"{scope}\"." -msgstr "" +msgstr "Bạn không yêu cầu \"{phạm vi} \"." #: pretix/base/customersso/oidc.py:117 -#, python-brace-format +#, fuzzy, python-brace-format msgid "" "You are requesting scope \"{scope}\" but provider only supports these: " "{scopes}." msgstr "" +"Bạn đang yêu cầu phạm vi \"{phạm vi} \" nhưng nhà cung cấp chỉ hỗ trợ những " +"điều này: {phạm vi}." #: pretix/base/customersso/oidc.py:127 -#, python-brace-format +#, fuzzy, python-brace-format msgid "" "You are requesting field \"{field}\" but provider only supports these: " "{fields}." msgstr "" +"Bạn đang yêu cầu trường \"{field} \" nhưng nhà cung cấp chỉ hỗ trợ sau: " +"{trường}." #: pretix/base/customersso/oidc.py:219 pretix/base/customersso/oidc.py:226 #: pretix/base/customersso/oidc.py:245 pretix/base/customersso/oidc.py:262 #: pretix/base/customersso/oidc.py:269 pretix/presale/views/customer.py:743 #: pretix/presale/views/customer.py:753 pretix/presale/views/customer.py:792 #: pretix/presale/views/customer.py:866 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Login was not successful. Error message: \"{error}\"." -msgstr "" +msgstr "Đăng nhập không thành công." #: pretix/base/customersso/oidc.py:252 msgid "" "The email address on this account is not yet verified. Please first confirm " "the email address in your customer account." -msgstr "" +msgstr "Địa chỉ email trên tài khoản này chưa được xác minh." #: pretix/base/email.py:203 pretix/base/exporters/items.py:157 #: pretix/base/exporters/items.py:205 pretix/control/views/main.py:322 @@ -759,15 +776,15 @@ msgstr "" #: pretix/plugins/ticketoutputpdf/templates/pretixplugins/ticketoutputpdf/index.html:33 #: pretix/plugins/ticketoutputpdf/templates/pretixplugins/ticketoutputpdf/index.html:53 msgid "Default" -msgstr "" +msgstr "Mặc định" #: pretix/base/email.py:210 msgid "Simple with logo" -msgstr "" +msgstr "Đơn giản với logo" #: pretix/base/exporter.py:187 pretix/base/exporter.py:320 msgid "Export format" -msgstr "" +msgstr "Định dạng xuất" #: pretix/base/exporter.py:189 msgid "Excel (.xlsx)" @@ -775,23 +792,23 @@ msgstr "" #: pretix/base/exporter.py:190 pretix/base/exporter.py:312 msgid "CSV (with commas)" -msgstr "" +msgstr "CSV (với dấu phẩy)" #: pretix/base/exporter.py:191 pretix/base/exporter.py:313 msgid "CSV (Excel-style)" -msgstr "" +msgstr "CSV (phong cách Excel)" #: pretix/base/exporter.py:192 pretix/base/exporter.py:314 msgid "CSV (with semicolons)" -msgstr "" +msgstr "CSV (với dấu chấm phẩy)" #: pretix/base/exporter.py:308 msgid "Combined Excel (.xlsx)" -msgstr "" +msgstr "Excel kết hợp (.xlsx)" #: pretix/base/exporters/answers.py:54 msgid "Question answer file uploads" -msgstr "" +msgstr "Câu trả lời Câu trả lời tải lên" #: pretix/base/exporters/answers.py:55 pretix/base/exporters/json.py:52 #: pretix/base/exporters/mail.py:53 pretix/base/exporters/orderlist.py:87 @@ -802,20 +819,22 @@ msgstr "" #: pretix/plugins/reports/exporters.py:651 msgctxt "export_category" msgid "Order data" -msgstr "" +msgstr "Dữ liệu đặt hàng" #: pretix/base/exporters/answers.py:56 msgid "" "Download a ZIP file including all files that have been uploaded by your " "customers while creating an order." msgstr "" +"Tải xuống tệp zip bao gồm tất cả các tệp đã được khách hàng của bạn tải lên " +"trong khi tạo đơn đặt hàng." #: pretix/base/exporters/answers.py:66 pretix/base/models/items.py:1767 #: pretix/control/navigation.py:172 #: pretix/control/templates/pretixcontrol/items/questions.html:3 #: pretix/control/templates/pretixcontrol/items/questions.html:5 msgid "Questions" -msgstr "" +msgstr "Câu hỏi" #: pretix/base/exporters/answers.py:76 pretix/base/exporters/orderlist.py:583 #: pretix/base/exporters/orderlist.py:898 @@ -849,7 +868,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_change_form.html:20 msgctxt "subevent" msgid "Date" -msgstr "" +msgstr "Ngày" #: pretix/base/exporters/answers.py:79 pretix/base/exporters/answers.py:88 #: pretix/control/forms/checkin.py:83 pretix/control/forms/event.py:1611 @@ -867,21 +886,22 @@ msgstr "" #: pretix/plugins/sendmail/forms.py:351 msgctxt "subevent" msgid "All dates" -msgstr "" +msgstr "Tất cả các ngày" #: pretix/base/exporters/customers.py:49 pretix/control/navigation.py:606 #: pretix/control/templates/pretixcontrol/organizers/edit.html:132 msgid "Customer accounts" -msgstr "" +msgstr "Tài khoản khách hàng" #: pretix/base/exporters/customers.py:51 msgctxt "export_category" msgid "Customer accounts" -msgstr "" +msgstr "Tài khoản khách hàng" #: pretix/base/exporters/customers.py:52 msgid "Download a spreadsheet of all currently registered customer accounts." msgstr "" +"Tải xuống bảng tính của tất cả các tài khoản khách hàng hiện đã đăng ký." #: pretix/base/exporters/customers.py:64 pretix/base/models/customers.py:82 #: pretix/control/templates/pretixcontrol/organizers/customer.html:29 @@ -889,19 +909,19 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/checkout_customer.html:36 #: pretix/presale/templates/pretixpresale/organizers/customer_base.html:37 msgid "Customer ID" -msgstr "" +msgstr "ID khách hàng" #: pretix/base/exporters/customers.py:65 #: pretix/control/templates/pretixcontrol/organizers/customer.html:32 msgid "SSO provider" -msgstr "" +msgstr "Nhà cung cấp SSO" #: pretix/base/exporters/customers.py:66 pretix/base/models/customers.py:108 #: pretix/control/templates/pretixcontrol/organizers/customer.html:36 #: pretix/control/templates/pretixcontrol/organizers/customers.html:65 #: pretix/control/templates/pretixcontrol/users/form.html:49 msgid "External identifier" -msgstr "" +msgstr "Định danh bên ngoài" #: pretix/base/exporters/customers.py:68 pretix/base/exporters/orderlist.py:262 #: pretix/base/exporters/orderlist.py:445 @@ -919,14 +939,14 @@ msgstr "" #: pretix/presale/forms/waitinglist.py:78 #: pretix/presale/templates/pretixpresale/event/order.html:304 msgid "Phone number" -msgstr "" +msgstr "Số điện thoại" #: pretix/base/exporters/customers.py:69 pretix/base/models/auth.py:246 #: pretix/base/models/customers.py:97 pretix/base/models/orders.py:3270 #: pretix/base/settings.py:3640 pretix/base/settings.py:3652 #: pretix/control/templates/pretixcontrol/users/index.html:47 msgid "Full name" -msgstr "" +msgstr "Tên đầy đủ" #: pretix/base/exporters/customers.py:74 pretix/base/exporters/invoices.py:206 #: pretix/base/exporters/invoices.py:214 pretix/base/exporters/invoices.py:332 @@ -970,25 +990,25 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/checkout_customer.html:34 #: pretix/presale/templates/pretixpresale/event/order.html:312 msgid "Name" -msgstr "" +msgstr "Tên" #: pretix/base/exporters/customers.py:77 pretix/base/models/customers.py:99 msgid "Account active" -msgstr "" +msgstr "Tài khoản hoạt động" #: pretix/base/exporters/customers.py:78 pretix/base/models/customers.py:100 msgid "Verified email address" -msgstr "" +msgstr "Địa chỉ email đã được xác minh" #: pretix/base/exporters/customers.py:79 pretix/base/models/customers.py:101 #: pretix/control/templates/pretixcontrol/organizers/customer.html:68 msgid "Last login" -msgstr "" +msgstr "Đăng nhập cuối cùng" #: pretix/base/exporters/customers.py:80 pretix/base/models/customers.py:102 #: pretix/control/templates/pretixcontrol/organizers/customer.html:66 msgid "Registration date" -msgstr "" +msgstr "Ngày đăng ký" #: pretix/base/exporters/customers.py:81 pretix/base/exporters/invoices.py:205 #: pretix/base/exporters/waitinglist.py:120 pretix/base/models/auth.py:258 @@ -996,7 +1016,7 @@ msgstr "" #: pretix/control/forms/event.py:1616 pretix/control/forms/exports.py:49 #: pretix/control/forms/exports.py:88 pretix/control/views/waitinglist.py:315 msgid "Language" -msgstr "" +msgstr "Ngôn ngữ" #: pretix/base/exporters/customers.py:82 #: pretix/base/exporters/reusablemedia.py:53 @@ -1004,7 +1024,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/organizers/customer.html:72 #: pretix/control/templates/pretixcontrol/organizers/reusable_medium.html:68 msgid "Notes" -msgstr "" +msgstr "Ghi chú" #: pretix/base/exporters/customers.py:100 #: pretix/base/exporters/customers.py:101 pretix/base/exporters/events.py:83 @@ -1072,18 +1092,20 @@ msgstr "Không" #: pretix/base/exporters/dekodi.py:42 pretix/base/exporters/invoices.py:66 msgctxt "export_category" msgid "Invoices" -msgstr "" +msgstr "Hóa đơn" #: pretix/base/exporters/dekodi.py:43 msgid "" "Download invoices in a format that can be used by the dekodi NREI conversion " "software." msgstr "" +"Tải xuống hóa đơn ở định dạng có thể được sử dụng bởi phần mềm chuyển đổi " +"Dekodi NREI." #: pretix/base/exporters/dekodi.py:105 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Event ticket {event}-{code}" -msgstr "" +msgstr "Ticket Event {Event}-{Code}" #: pretix/base/exporters/dekodi.py:234 pretix/base/exporters/invoices.py:74 #: pretix/base/exporters/orderlist.py:128 @@ -1096,28 +1118,30 @@ msgstr "" #: pretix/plugins/reports/exporters.py:698 #: pretix/plugins/ticketoutputpdf/exporters.py:85 msgid "Date range" -msgstr "" +msgstr "Phạm vi ngày" #: pretix/base/exporters/dekodi.py:237 pretix/base/exporters/invoices.py:77 msgid "" "Only include invoices issued in this time frame. Note that the invoice date " "does not always correspond to the order or payment date." -msgstr "" +msgstr "Chỉ bao gồm các hóa đơn được cấp trong khung thời gian này." #: pretix/base/exporters/events.py:47 msgid "Event data" -msgstr "" +msgstr "Dữ liệu sự kiện" #: pretix/base/exporters/events.py:48 msgctxt "export_category" msgid "Event data" -msgstr "" +msgstr "Dữ liệu sự kiện" #: pretix/base/exporters/events.py:49 msgid "" "Download a spreadsheet with information on all events in this organizer " "account." msgstr "" +"Tải xuống bảng tính với thông tin về tất cả các sự kiện trong tài khoản tổ " +"chức này." #: pretix/base/exporters/events.py:57 pretix/base/exporters/orderlist.py:261 #: pretix/base/exporters/orderlist.py:441 @@ -1129,21 +1153,21 @@ msgstr "" #: pretix/control/templates/pretixcontrol/events/index.html:68 #: pretix/control/templates/pretixcontrol/organizers/detail.html:64 msgid "Event name" -msgstr "" +msgstr "Tên sự kiện" #: pretix/base/exporters/events.py:58 pretix/base/models/event.py:588 #: pretix/base/models/organizer.py:91 #: pretix/control/templates/pretixcontrol/organizers/index.html:47 msgid "Short form" -msgstr "" +msgstr "Hình thức ngắn" #: pretix/base/exporters/events.py:59 pretix/base/models/event.py:590 msgid "Shop is live" -msgstr "" +msgstr "Cửa hàng trực tiếp" #: pretix/base/exporters/events.py:60 pretix/base/models/event.py:592 msgid "Event currency" -msgstr "" +msgstr "Tiền tệ sự kiện" #: pretix/base/exporters/events.py:61 pretix/base/models/auth.py:261 #: pretix/base/models/exports.py:133 pretix/control/forms/exports.py:93 @@ -1155,52 +1179,52 @@ msgstr "" #: pretix/base/settings.py:3273 pretix/control/forms/subevents.py:480 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:268 msgid "Event start time" -msgstr "" +msgstr "Thời gian bắt đầu sự kiện" #: pretix/base/exporters/events.py:63 pretix/base/models/event.py:597 #: pretix/base/models/event.py:1491 pretix/base/pdf.py:286 #: pretix/control/forms/subevents.py:485 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:270 msgid "Event end time" -msgstr "" +msgstr "Thời gian kết thúc sự kiện" #: pretix/base/exporters/events.py:64 pretix/base/models/event.py:599 #: pretix/base/models/event.py:1493 pretix/control/forms/subevents.py:490 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:274 msgid "Admission time" -msgstr "" +msgstr "Thời gian nhập học" #: pretix/base/exporters/events.py:65 pretix/base/models/event.py:611 #: pretix/base/models/event.py:1502 pretix/control/forms/subevents.py:93 msgid "Start of presale" -msgstr "" +msgstr "Bắt đầu trước" #: pretix/base/exporters/events.py:66 pretix/base/models/event.py:605 #: pretix/base/models/event.py:1496 pretix/control/forms/subevents.py:99 msgid "End of presale" -msgstr "" +msgstr "Kết thúc trước" #: pretix/base/exporters/events.py:67 pretix/base/exporters/invoices.py:351 #: pretix/base/models/event.py:617 pretix/base/models/event.py:1508 msgid "Location" -msgstr "" +msgstr "Vị trí" #: pretix/base/exporters/events.py:68 pretix/base/models/event.py:625 #: pretix/base/models/event.py:1511 msgid "Latitude" -msgstr "" +msgstr "Vĩ độ" #: pretix/base/exporters/events.py:69 pretix/base/models/event.py:633 #: pretix/base/models/event.py:1519 msgid "Longitude" -msgstr "" +msgstr "Kinh độ" #: pretix/base/exporters/events.py:70 pretix/base/models/event.py:645 #: pretix/base/models/event.py:1534 #: pretix/control/templates/pretixcontrol/event/index.html:128 #: pretix/control/templates/pretixcontrol/order/index.html:991 msgid "Internal comment" -msgstr "" +msgstr "Nhận xét nội bộ" #: pretix/base/exporters/invoices.py:82 pretix/base/models/orders.py:1753 #: pretix/base/models/orders.py:2162 pretix/control/forms/filter.py:204 @@ -1215,13 +1239,13 @@ msgstr "" #: pretix/control/templates/pretixcontrol/orders/refunds.html:50 #: pretix/control/templates/pretixcontrol/search/payments.html:93 msgid "Payment provider" -msgstr "" +msgstr "Nhà cung cấp thanh toán" #: pretix/base/exporters/invoices.py:84 pretix/base/exporters/invoices.py:86 #: pretix/control/forms/filter.py:206 pretix/control/forms/filter.py:1026 #: pretix/control/forms/filter.py:2280 msgid "All payment providers" -msgstr "" +msgstr "Tất cả các nhà cung cấp thanh toán" #: pretix/base/exporters/invoices.py:92 msgid "" @@ -1229,18 +1253,22 @@ msgid "" "this payment provider. Note that this might include some invoices of orders " "which in the end have been fully or partially paid with a different provider." msgstr "" +"Chỉ bao gồm các hóa đơn cho các đơn đặt hàng có ít nhất một nỗ lực thanh " +"toán với nhà cung cấp thanh toán này." #: pretix/base/exporters/invoices.py:126 msgid "All invoices" -msgstr "" +msgstr "Tất cả hóa đơn" #: pretix/base/exporters/invoices.py:127 msgid "Download all invoices created by the system as a ZIP file of PDF files." msgstr "" +"Tải xuống tất cả các hóa đơn được tạo bởi hệ thống dưới dạng tệp zip của các " +"tệp PDF." #: pretix/base/exporters/invoices.py:178 msgid "Invoice data" -msgstr "" +msgstr "Dữ liệu hóa đơn" #: pretix/base/exporters/invoices.py:179 msgid "" @@ -1248,6 +1276,7 @@ msgid "" "The spreadsheet includes two sheets, one with a line for every invoice, and " "one with a line for every position of every invoice." msgstr "" +"Tải xuống bảng tính với dữ liệu của tất cả các hóa đơn do hệ thống tạo ra." #: pretix/base/exporters/invoices.py:191 pretix/base/shredder.py:576 #: pretix/control/templates/pretixcontrol/order/index.html:268 @@ -1256,15 +1285,15 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/order.html:236 #: pretix/presale/templates/pretixpresale/event/order.html:257 msgid "Invoices" -msgstr "" +msgstr "Hóa đơn" #: pretix/base/exporters/invoices.py:192 msgid "Invoice lines" -msgstr "" +msgstr "dòng hóa đơn" #: pretix/base/exporters/invoices.py:199 pretix/base/exporters/invoices.py:318 msgid "Invoice number" -msgstr "" +msgstr "Số hóa đơn" #: pretix/base/exporters/invoices.py:200 pretix/base/exporters/invoices.py:327 #: pretix/base/exporters/orderlist.py:1214 @@ -1280,7 +1309,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_giftcard_history.html:6 #: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:54 msgid "Date" -msgstr "" +msgstr "Ngày" #: pretix/base/exporters/invoices.py:201 pretix/base/exporters/invoices.py:328 #: pretix/base/exporters/orderlist.py:261 @@ -1307,7 +1336,7 @@ msgstr "" #: pretix/plugins/reports/exporters.py:884 #: pretix/plugins/ticketoutputpdf/exporters.py:96 msgid "Order code" -msgstr "" +msgstr "Mã đặt hàng" #: pretix/base/exporters/invoices.py:202 pretix/base/exporters/invoices.py:329 #: pretix/base/forms/auth.py:160 pretix/base/modelimport_orders.py:59 @@ -1317,15 +1346,15 @@ msgstr "" #: pretix/control/views/waitinglist.py:314 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/pending.html:163 msgid "Email address" -msgstr "" +msgstr "Địa chỉ email" #: pretix/base/exporters/invoices.py:203 pretix/base/exporters/invoices.py:330 msgid "Invoice type" -msgstr "" +msgstr "Loại hóa đơn" #: pretix/base/exporters/invoices.py:204 pretix/base/exporters/invoices.py:331 msgid "Cancellation of" -msgstr "" +msgstr "Hủy bỏ" #: pretix/base/exporters/invoices.py:206 pretix/base/exporters/invoices.py:207 #: pretix/base/exporters/invoices.py:208 pretix/base/exporters/invoices.py:209 @@ -1335,7 +1364,7 @@ msgstr "" #: pretix/base/exporters/invoices.py:335 pretix/base/exporters/invoices.py:336 #: pretix/base/exporters/invoices.py:337 pretix/base/exporters/invoices.py:338 msgid "Invoice sender:" -msgstr "" +msgstr "Người gửi hóa đơn:" #: pretix/base/exporters/invoices.py:207 pretix/base/exporters/invoices.py:333 #: pretix/base/exporters/orderlist.py:269 @@ -1351,7 +1380,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:89 #: pretix/presale/templates/pretixpresale/event/order.html:316 msgid "Address" -msgstr "" +msgstr "Địa chỉ" #: pretix/base/exporters/invoices.py:208 pretix/base/exporters/invoices.py:216 #: pretix/base/exporters/invoices.py:334 pretix/base/exporters/invoices.py:342 @@ -1366,7 +1395,7 @@ msgstr "" #: pretix/plugins/checkinlists/exporters.py:535 #: pretix/plugins/reports/exporters.py:841 msgid "ZIP code" -msgstr "" +msgstr "Mã zip" #: pretix/base/exporters/invoices.py:209 pretix/base/exporters/invoices.py:217 #: pretix/base/exporters/invoices.py:335 pretix/base/exporters/invoices.py:343 @@ -1381,7 +1410,7 @@ msgstr "" #: pretix/plugins/checkinlists/exporters.py:536 #: pretix/plugins/reports/exporters.py:842 msgid "City" -msgstr "" +msgstr "Thành phố" #: pretix/base/exporters/invoices.py:210 pretix/base/exporters/invoices.py:218 #: pretix/base/exporters/invoices.py:336 pretix/base/exporters/invoices.py:344 @@ -1402,11 +1431,11 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:93 #: pretix/presale/templates/pretixpresale/event/order.html:320 msgid "Country" -msgstr "" +msgstr "Quốc gia" #: pretix/base/exporters/invoices.py:211 pretix/base/exporters/invoices.py:337 msgid "Tax ID" -msgstr "" +msgstr "ID thuế" #: pretix/base/exporters/invoices.py:212 pretix/base/exporters/invoices.py:220 #: pretix/base/exporters/invoices.py:338 pretix/base/exporters/invoices.py:346 @@ -1420,7 +1449,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:100 #: pretix/presale/templates/pretixpresale/event/order.html:327 msgid "VAT ID" -msgstr "" +msgstr "ID VAT" #: pretix/base/exporters/invoices.py:213 pretix/base/exporters/invoices.py:214 #: pretix/base/exporters/invoices.py:215 pretix/base/exporters/invoices.py:216 @@ -1433,7 +1462,7 @@ msgstr "" #: pretix/base/exporters/invoices.py:345 pretix/base/exporters/invoices.py:346 #: pretix/base/exporters/invoices.py:347 pretix/base/exporters/invoices.py:348 msgid "Invoice recipient:" -msgstr "" +msgstr "Người nhận hóa đơn:" #: pretix/base/exporters/invoices.py:213 pretix/base/exporters/invoices.py:339 #: pretix/base/exporters/orderlist.py:262 @@ -1450,11 +1479,11 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:84 #: pretix/presale/templates/pretixpresale/event/order.html:308 msgid "Company" -msgstr "" +msgstr "Công ty" #: pretix/base/exporters/invoices.py:215 pretix/base/exporters/invoices.py:341 msgid "Street address" -msgstr "" +msgstr "Địa chỉ đường phố" #: pretix/base/exporters/invoices.py:219 pretix/base/exporters/invoices.py:345 #: pretix/base/exporters/orderlist.py:269 @@ -1470,45 +1499,45 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/order.html:323 msgctxt "address" msgid "State" -msgstr "" +msgstr "Nhà nước" #: pretix/base/exporters/invoices.py:221 pretix/base/exporters/invoices.py:347 #: pretix/base/models/orders.py:3288 pretix/base/models/orders.py:3323 #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:104 msgid "Beneficiary" -msgstr "" +msgstr "Người thụ hưởng" #: pretix/base/exporters/invoices.py:222 pretix/base/exporters/invoices.py:348 #: pretix/base/modelimport_orders.py:299 pretix/base/models/orders.py:3283 #: pretix/control/templates/pretixcontrol/order/index.html:980 #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:112 msgid "Internal reference" -msgstr "" +msgstr "Tham khảo nội bộ" #: pretix/base/exporters/invoices.py:223 pretix/base/models/tax.py:162 #: pretix/control/forms/event.py:1506 msgid "Reverse charge" -msgstr "" +msgstr "Phí đảo ngược" #: pretix/base/exporters/invoices.py:224 msgid "Shown foreign currency" -msgstr "" +msgstr "Hiển thị ngoại tệ" #: pretix/base/exporters/invoices.py:225 msgid "Foreign currency rate" -msgstr "" +msgstr "Tỷ lệ ngoại tệ" #: pretix/base/exporters/invoices.py:226 msgid "Total value (with taxes)" -msgstr "" +msgstr "Tổng giá trị (với thuế)" #: pretix/base/exporters/invoices.py:227 msgid "Total value (without taxes)" -msgstr "" +msgstr "Tổng giá trị (không có thuế)" #: pretix/base/exporters/invoices.py:228 msgid "Payment matching IDs" -msgstr "" +msgstr "ID khớp thanh toán" #: pretix/base/exporters/invoices.py:229 pretix/base/exporters/invoices.py:349 #: pretix/base/exporters/orderlist.py:289 @@ -1517,43 +1546,43 @@ msgstr "" #: pretix/control/templates/pretixcontrol/event/payment.html:11 #: pretix/control/views/event.py:382 msgid "Payment providers" -msgstr "" +msgstr "Nhà cung cấp thanh toán" #: pretix/base/exporters/invoices.py:285 pretix/base/exporters/invoices.py:388 msgid "Cancellation" -msgstr "" +msgstr "Hủy bỏ" #: pretix/base/exporters/invoices.py:285 pretix/base/exporters/invoices.py:388 #: pretix/control/templates/pretixcontrol/order/index.html:272 #: pretix/control/templates/pretixcontrol/order/mail_history.html:70 #: pretix/presale/templates/pretixpresale/event/order.html:244 msgid "Invoice" -msgstr "" +msgstr "Hóa đơn" #: pretix/base/exporters/invoices.py:319 msgid "Line number" -msgstr "" +msgstr "Số dòng" #: pretix/base/exporters/invoices.py:320 pretix/base/exporters/orderlist.py:449 #: pretix/base/models/items.py:492 pretix/base/models/items.py:1155 #: pretix/control/templates/pretixcontrol/pdf/placeholders.html:32 msgid "Description" -msgstr "" +msgstr "Mô tả" #: pretix/base/exporters/invoices.py:321 pretix/control/forms/orders.py:343 msgid "Gross price" -msgstr "" +msgstr "Tổng giá" #: pretix/base/exporters/invoices.py:322 msgid "Net price" -msgstr "" +msgstr "Giá ròng" #: pretix/base/exporters/invoices.py:323 pretix/base/exporters/orderlist.py:453 #: pretix/base/exporters/orderlist.py:594 #: pretix/base/exporters/orderlist.py:904 pretix/base/models/orders.py:2326 #: pretix/base/models/orders.py:2498 pretix/base/models/orders.py:3020 msgid "Tax value" -msgstr "" +msgstr "Giá trị thuế" #: pretix/base/exporters/invoices.py:324 pretix/base/exporters/orderlist.py:451 #: pretix/base/exporters/orderlist.py:592 @@ -1565,62 +1594,63 @@ msgstr "" #: pretix/plugins/reports/exporters.py:793 #: pretix/plugins/reports/exporters.py:838 msgid "Tax rate" -msgstr "" +msgstr "Thuế suất" #: pretix/base/exporters/invoices.py:325 msgid "Tax name" -msgstr "" +msgstr "Tên thuế" #: pretix/base/exporters/invoices.py:326 msgid "Event start date" -msgstr "" +msgstr "Ngày bắt đầu sự kiện" #: pretix/base/exporters/invoices.py:350 pretix/base/pdf.py:278 msgid "Event end date" -msgstr "" +msgstr "Ngày kết thúc sự kiện" #: pretix/base/exporters/items.py:49 msgid "Product data" -msgstr "" +msgstr "Dữ liệu sản phẩm" #: pretix/base/exporters/items.py:50 pretix/base/exporters/orderlist.py:1128 msgctxt "export_category" msgid "Product data" -msgstr "" +msgstr "Dữ liệu sản phẩm" #: pretix/base/exporters/items.py:51 msgid "Download a spreadsheet with details about all products and variations." msgstr "" +"Tải xuống một bảng tính với chi tiết về tất cả các sản phẩm và biến thể." #: pretix/base/exporters/items.py:57 pretix/base/exporters/orderlist.py:588 #: pretix/base/exporters/orderlist.py:890 #: pretix/base/exporters/waitinglist.py:112 msgid "Product ID" -msgstr "" +msgstr "ID sản phẩm" #: pretix/base/exporters/items.py:58 pretix/base/exporters/orderlist.py:590 #: pretix/base/exporters/orderlist.py:892 #: pretix/base/exporters/waitinglist.py:114 msgid "Variation ID" -msgstr "" +msgstr "ID biến thể" #: pretix/base/exporters/items.py:59 pretix/base/models/items.py:142 #: pretix/base/pdf.py:151 #: pretix/control/templates/pretixcontrol/items/category.html:4 #: pretix/control/templates/pretixcontrol/items/category.html:6 msgid "Product category" -msgstr "" +msgstr "Danh mục sản phẩm" #: pretix/base/exporters/items.py:60 pretix/base/models/discount.py:64 #: pretix/base/models/items.py:96 pretix/base/models/items.py:483 #: pretix/base/models/tax.py:320 pretix/control/forms/organizer.py:264 #: pretix/control/templates/pretixcontrol/items/discounts.html:57 msgid "Internal name" -msgstr "" +msgstr "Tên nội bộ" #: pretix/base/exporters/items.py:64 pretix/base/models/items.py:480 msgid "Item name" -msgstr "" +msgstr "Tên vật phẩm" #: pretix/base/exporters/items.py:68 pretix/base/exporters/orderlist.py:589 #: pretix/base/exporters/orderlist.py:893 @@ -1628,7 +1658,7 @@ msgstr "" #: pretix/base/models/orders.py:1495 pretix/base/models/orders.py:2992 #: pretix/plugins/checkinlists/exporters.py:695 msgid "Variation" -msgstr "" +msgstr "Biến thể" #: pretix/base/exporters/items.py:71 pretix/base/exporters/reusablemedia.py:48 #: pretix/base/models/customers.py:57 pretix/base/models/customers.py:403 @@ -1641,7 +1671,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/event/plugins.html:75 #: pretix/control/templates/pretixcontrol/users/index.html:51 msgid "Active" -msgstr "" +msgstr "Hoạt động" #: pretix/base/exporters/items.py:72 pretix/base/models/discount.py:77 #: pretix/control/forms/event.py:986 pretix/control/navigation.py:508 @@ -1649,36 +1679,36 @@ msgstr "" #: pretix/plugins/autocheckin/models.py:64 #: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/index.html:30 msgid "Sales channels" -msgstr "" +msgstr "Kênh bán hàng" #: pretix/base/exporters/items.py:73 pretix/base/models/items.py:497 #: pretix/base/models/items.py:1166 #: pretix/control/templates/pretixcontrol/items/index.html:44 msgid "Default price" -msgstr "" +msgstr "Giá mặc định" #: pretix/base/exporters/items.py:74 pretix/base/models/items.py:505 #: pretix/control/templates/pretixcontrol/items/index.html:140 msgid "Free price input" -msgstr "" +msgstr "Đầu vào giá miễn phí" #: pretix/base/exporters/items.py:75 pretix/base/models/items.py:520 msgid "Sales tax" -msgstr "" +msgstr "Thuế bán hàng" #: pretix/base/exporters/items.py:76 pretix/base/models/items.py:525 msgid "Is an admission ticket" -msgstr "" +msgstr "là một vé nhập học" #: pretix/base/exporters/items.py:77 #: pretix/control/templates/pretixcontrol/item/create.html:74 #: pretix/control/templates/pretixcontrol/item/index.html:87 msgid "Personalized ticket" -msgstr "" +msgstr "Vé cá nhân" #: pretix/base/exporters/items.py:78 pretix/base/models/items.py:539 msgid "Generate tickets" -msgstr "" +msgstr "Tạo vé" #: pretix/base/exporters/items.py:79 pretix/base/exporters/orderlist.py:1135 #: pretix/base/exporters/waitinglist.py:41 pretix/base/shredder.py:367 @@ -1701,7 +1731,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:66 #: pretix/presale/views/widget.py:447 msgid "Waiting list" -msgstr "" +msgstr "Danh sách chờ đợi" #: pretix/base/exporters/items.py:80 pretix/base/models/discount.py:82 #: pretix/base/models/items.py:224 pretix/base/models/items.py:280 @@ -1712,7 +1742,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:171 #: pretix/control/templates/pretixcontrol/subevents/detail.html:149 msgid "Available from" -msgstr "" +msgstr "Có sẵn từ" #: pretix/base/exporters/items.py:81 pretix/base/models/discount.py:87 #: pretix/base/models/items.py:229 pretix/base/models/items.py:285 @@ -1722,44 +1752,46 @@ msgstr "" #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:176 #: pretix/control/templates/pretixcontrol/subevents/detail.html:154 msgid "Available until" -msgstr "" +msgstr "Có sẵn cho đến khi" #: pretix/base/exporters/items.py:82 pretix/base/models/items.py:609 msgid "This product can only be bought using a voucher." -msgstr "" +msgstr "Sản phẩm này chỉ có thể được mua bằng chứng từ." #: pretix/base/exporters/items.py:83 pretix/base/models/items.py:622 msgid "" "This product will only be shown if a voucher matching the product is " "redeemed." msgstr "" +"Sản phẩm này sẽ chỉ được hiển thị nếu một chứng từ phù hợp với sản phẩm được " +"đổi." #: pretix/base/exporters/items.py:84 pretix/base/models/items.py:615 msgid "Buying this product requires approval" -msgstr "" +msgstr "Mua sản phẩm này yêu cầu phê duyệt" #: pretix/base/exporters/items.py:85 pretix/base/models/items.py:628 msgid "Only sell this product as part of a bundle" -msgstr "" +msgstr "Chỉ bán sản phẩm này như một phần của gói" #: pretix/base/exporters/items.py:86 pretix/base/models/items.py:635 msgid "Allow product to be canceled or changed" -msgstr "" +msgstr "Cho phép sản phẩm bị hủy hoặc thay đổi" #: pretix/base/exporters/items.py:87 pretix/base/models/items.py:641 msgid "Minimum amount per order" -msgstr "" +msgstr "Số tiền tối thiểu cho mỗi đơn hàng" #: pretix/base/exporters/items.py:88 pretix/base/models/items.py:648 msgid "Maximum amount per order" -msgstr "" +msgstr "Số tiền tối đa cho mỗi đơn hàng" #: pretix/base/exporters/items.py:89 pretix/base/exporters/orderlist.py:282 #: pretix/base/modelimport_orders.py:610 pretix/base/models/items.py:656 #: pretix/base/models/items.py:1242 pretix/base/models/orders.py:282 #: pretix/plugins/checkinlists/exporters.py:522 msgid "Requires special attention" -msgstr "" +msgstr "đòi hỏi sự chú ý đặc biệt" #: pretix/base/exporters/items.py:90 pretix/base/exporters/orderlist.py:283 #: pretix/base/modelimport_orders.py:618 pretix/base/models/items.py:663 @@ -1773,55 +1805,57 @@ msgstr "ID người dùng" #: pretix/base/exporters/items.py:91 pretix/base/models/items.py:668 #: pretix/base/models/items.py:1169 msgid "Original price" -msgstr "" +msgstr "Giá ban đầu" #: pretix/base/exporters/items.py:92 pretix/base/models/items.py:685 msgid "This product is a gift card" -msgstr "" +msgstr "Sản phẩm này là thẻ quà tặng" #: pretix/base/exporters/items.py:93 pretix/base/models/items.py:691 #: pretix/base/models/items.py:1190 #: pretix/control/templates/pretixcontrol/item/include_variations.html:41 #: pretix/control/templates/pretixcontrol/item/include_variations.html:167 msgid "Require a valid membership" -msgstr "" +msgstr "Yêu cầu thành viên hợp lệ" #: pretix/base/exporters/items.py:94 pretix/base/models/items.py:700 #: pretix/base/models/items.py:1199 msgid "Hide without a valid membership" -msgstr "" +msgstr "Ẩn mà không có thành viên hợp lệ" #: pretix/base/exporters/json.py:51 pretix/base/exporters/orderlist.py:86 msgid "Order data" -msgstr "" +msgstr "Dữ liệu đặt hàng" #: pretix/base/exporters/json.py:53 msgid "" "Download a structured JSON representation of all orders. This might be " "useful for the import in third-party systems." -msgstr "" +msgstr "Tải xuống biểu diễn JSON có cấu trúc của tất cả các đơn đặt hàng." #: pretix/base/exporters/mail.py:52 msgid "Email addresses (text file)" -msgstr "" +msgstr "Địa chỉ email (Tệp văn bản)" #: pretix/base/exporters/mail.py:54 msgid "" "Download a text file with all email addresses collected either from buyers " "or from ticket holders." msgstr "" +"Tải xuống một tệp văn bản với tất cả các địa chỉ email được thu thập từ " +"người mua hoặc từ chủ vé." #: pretix/base/exporters/mail.py:76 pretix/plugins/reports/exporters.py:487 #: pretix/plugins/reports/exporters.py:669 msgid "Filter by status" -msgstr "" +msgstr "Lọc theo trạng thái" #: pretix/base/exporters/orderlist.py:88 msgid "" "Download a spreadsheet of all orders. The spreadsheet will include three " "sheets, one with a line for every order, one with a line for every order " "position, and one with a line for every additional fee charged in an order." -msgstr "" +msgstr "Tải xuống bảng tính của tất cả các đơn đặt hàng." #: pretix/base/exporters/orderlist.py:100 pretix/base/models/orders.py:332 #: pretix/control/navigation.py:255 pretix/control/navigation.py:362 @@ -1834,33 +1868,33 @@ msgstr "" #: pretix/presale/templates/pretixpresale/organizers/customer_orders.html:13 #: pretix/presale/views/customer.py:360 msgid "Orders" -msgstr "" +msgstr "Đơn đặt hàng" #: pretix/base/exporters/orderlist.py:101 pretix/base/models/orders.py:2547 #: pretix/base/notifications.py:205 msgid "Order positions" -msgstr "" +msgstr "Vị trí đặt hàng" #: pretix/base/exporters/orderlist.py:102 msgid "Order fees" -msgstr "" +msgstr "Phí đặt hàng" #: pretix/base/exporters/orderlist.py:110 msgid "Only paid orders" -msgstr "" +msgstr "Chỉ có đơn đặt hàng trả tiền" #: pretix/base/exporters/orderlist.py:116 msgid "Include payment amounts" -msgstr "" +msgstr "Bao gồm số tiền thanh toán" #: pretix/base/exporters/orderlist.py:122 msgid "Show multiple choice answers grouped in one column" -msgstr "" +msgstr "Hiển thị câu trả lời trắc nghiệm được nhóm trong một cột" #: pretix/base/exporters/orderlist.py:131 #: pretix/plugins/reports/exporters.py:701 msgid "Only include orders created within this date range." -msgstr "" +msgstr "Chỉ bao gồm các đơn đặt hàng được tạo trong phạm vi ngày này." #: pretix/base/exporters/orderlist.py:135 pretix/base/notifications.py:194 #: pretix/base/pdf.py:234 pretix/plugins/badges/exporters.py:499 @@ -1868,13 +1902,15 @@ msgstr "" #: pretix/plugins/reports/exporters.py:454 #: pretix/plugins/ticketoutputpdf/exporters.py:97 msgid "Event date" -msgstr "" +msgstr "Ngày sự kiện" #: pretix/base/exporters/orderlist.py:138 msgid "" "Only include orders including at least one ticket for a date in this range. " "Will also include other dates in case of mixed orders!" msgstr "" +"Chỉ bao gồm các đơn đặt hàng bao gồm ít nhất một vé cho một ngày trong phạm " +"vi này." #: pretix/base/exporters/orderlist.py:261 #: pretix/base/exporters/orderlist.py:440 @@ -1885,7 +1921,7 @@ msgstr "" #: pretix/base/exporters/waitinglist.py:115 pretix/control/forms/event.py:1662 #: pretix/control/forms/organizer.py:116 msgid "Event slug" -msgstr "" +msgstr "Sên sự kiện" #: pretix/base/exporters/orderlist.py:261 pretix/base/notifications.py:201 #: pretix/control/templates/pretixcontrol/orders/bulk_action.html:25 @@ -1893,7 +1929,7 @@ msgstr "" #: pretix/plugins/reports/exporters.py:561 #: pretix/plugins/reports/exporters.py:886 msgid "Order total" -msgstr "" +msgstr "Tổng số đặt hàng" #: pretix/base/exporters/orderlist.py:261 #: pretix/base/exporters/orderlist.py:443 @@ -1933,7 +1969,7 @@ msgstr "" #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_inspect.html:34 #: pretix/plugins/stripe/templates/pretixplugins/stripe/control.html:79 msgid "Status" -msgstr "" +msgstr "Trạng thái" #: pretix/base/exporters/orderlist.py:262 #: pretix/base/exporters/orderlist.py:446 @@ -1955,7 +1991,7 @@ msgstr "" #: pretix/plugins/reports/exporters.py:691 #: pretix/plugins/reports/exporters.py:884 msgid "Order date" -msgstr "" +msgstr "Ngày đặt hàng" #: pretix/base/exporters/orderlist.py:262 #: pretix/base/exporters/orderlist.py:447 @@ -1963,86 +1999,86 @@ msgstr "" #: pretix/base/exporters/orderlist.py:881 #: pretix/plugins/checkinlists/exporters.py:521 msgid "Order time" -msgstr "" +msgstr "Thời gian đặt hàng" #: pretix/base/exporters/orderlist.py:270 msgid "Custom address field" -msgstr "" +msgstr "Trường địa chỉ tùy chỉnh" #: pretix/base/exporters/orderlist.py:270 msgid "Date of last payment" -msgstr "" +msgstr "Ngày thanh toán cuối cùng" #: pretix/base/exporters/orderlist.py:270 pretix/base/services/stats.py:237 msgid "Fees" -msgstr "" +msgstr "Phí" #: pretix/base/exporters/orderlist.py:270 #: pretix/base/exporters/orderlist.py:657 pretix/base/modelimport_orders.py:472 #: pretix/control/templates/pretixcontrol/order/index.html:193 #: pretix/control/templates/pretixcontrol/pdf/index.html:189 msgid "Order locale" -msgstr "" +msgstr "Đặt hàng địa phương" #: pretix/base/exporters/orderlist.py:275 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Gross at {rate} % tax" -msgstr "" +msgstr "Tổng tại {tỷ lệ} % thuế" #: pretix/base/exporters/orderlist.py:276 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Net at {rate} % tax" -msgstr "" +msgstr "Net ở {tỷ lệ} % thuế" #: pretix/base/exporters/orderlist.py:277 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Tax value at {rate} % tax" -msgstr "" +msgstr "Giá trị thuế ở {tỷ lệ} % thuế" #: pretix/base/exporters/orderlist.py:280 msgid "Invoice numbers" -msgstr "" +msgstr "Số hóa đơn" #: pretix/base/exporters/orderlist.py:281 #: pretix/base/exporters/orderlist.py:656 pretix/base/modelimport_orders.py:540 #: pretix/control/forms/filter.py:585 #: pretix/control/templates/pretixcontrol/order/index.html:190 msgid "Sales channel" -msgstr "" +msgstr "Kênh bán hàng" #: pretix/base/exporters/orderlist.py:285 #: pretix/base/exporters/orderlist.py:621 pretix/base/models/orders.py:277 #: pretix/control/forms/filter.py:240 msgid "Follow-up date" -msgstr "" +msgstr "Ngày theo dõi" #: pretix/base/exporters/orderlist.py:286 #: pretix/control/templates/pretixcontrol/orders/index.html:150 #: pretix/control/templates/pretixcontrol/organizers/customer.html:208 msgid "Positions" -msgstr "" +msgstr "Vị trí" #: pretix/base/exporters/orderlist.py:287 #: pretix/base/exporters/orderlist.py:658 pretix/base/models/orders.py:321 #: pretix/control/forms/filter.py:567 msgid "Email address verified" -msgstr "" +msgstr "Địa chỉ email được xác minh" #: pretix/base/exporters/orderlist.py:288 #: pretix/base/exporters/orderlist.py:465 #: pretix/base/exporters/orderlist.py:659 msgid "External customer ID" -msgstr "" +msgstr "ID khách hàng bên ngoài" #: pretix/base/exporters/orderlist.py:293 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Paid by {method}" -msgstr "" +msgstr "được trả bởi {Phương thức}" #: pretix/base/exporters/orderlist.py:448 #: pretix/base/exporters/orderlist.py:894 msgid "Fee type" -msgstr "" +msgstr "Loại phí" #: pretix/base/exporters/orderlist.py:450 #: pretix/base/exporters/orderlist.py:591 @@ -2059,7 +2095,7 @@ msgstr "" #: pretix/plugins/checkinlists/exporters.py:499 #: pretix/plugins/reports/accountingreport.py:314 msgid "Price" -msgstr "" +msgstr "Giá cả" #: pretix/base/exporters/orderlist.py:452 #: pretix/base/exporters/orderlist.py:593 @@ -2068,25 +2104,25 @@ msgstr "" #: pretix/control/templates/pretixcontrol/event/tax_edit.html:16 #: pretix/control/templates/pretixcontrol/order/change.html:165 msgid "Tax rule" -msgstr "" +msgstr "Quy tắc thuế" #: pretix/base/exporters/orderlist.py:455 #: pretix/base/exporters/orderlist.py:460 #: pretix/base/exporters/orderlist.py:644 #: pretix/base/exporters/orderlist.py:648 pretix/base/pdf.py:330 msgid "Invoice address name" -msgstr "" +msgstr "Tên địa chỉ hóa đơn" #: pretix/base/exporters/orderlist.py:480 #: pretix/base/exporters/orderlist.py:683 pretix/base/models/orders.py:205 msgid "canceled" -msgstr "" +msgstr "Hủy bỏ" #: pretix/base/exporters/orderlist.py:575 #: pretix/base/exporters/orderlist.py:887 #: pretix/plugins/checkinlists/exporters.py:757 msgid "Position ID" -msgstr "" +msgstr "ID vị trí" #: pretix/base/exporters/orderlist.py:584 #: pretix/base/exporters/orderlist.py:1139 @@ -2104,7 +2140,7 @@ msgstr "" #: pretix/plugins/checkinlists/exporters.py:512 #: pretix/plugins/checkinlists/exporters.py:701 msgid "Start date" -msgstr "" +msgstr "Ngày bắt đầu" #: pretix/base/exporters/orderlist.py:585 #: pretix/base/exporters/orderlist.py:1140 @@ -2117,7 +2153,7 @@ msgstr "" #: pretix/plugins/checkinlists/exporters.py:513 #: pretix/plugins/checkinlists/exporters.py:702 msgid "End date" -msgstr "" +msgstr "Ngày kết thúc" #: pretix/base/exporters/orderlist.py:587 #: pretix/base/exporters/orderlist.py:891 @@ -2166,7 +2202,7 @@ msgstr "Sản phẩm" #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:50 #: pretix/presale/templates/pretixpresale/organizers/customer_memberships.html:36 msgid "Attendee name" -msgstr "" +msgstr "Tên người tham dự" #: pretix/base/exporters/orderlist.py:602 pretix/base/forms/questions.py:677 #: pretix/base/models/customers.py:307 pretix/base/models/orders.py:1512 @@ -2176,7 +2212,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:171 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:174 msgid "Attendee email" -msgstr "" +msgstr "Email người tham dự" #: pretix/base/exporters/orderlist.py:609 pretix/base/models/vouchers.py:312 #: pretix/control/templates/pretixcontrol/vouchers/bulk.html:5 @@ -2184,42 +2220,42 @@ msgstr "" #: pretix/control/templates/pretixcontrol/vouchers/detail.html:8 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:171 msgid "Voucher" -msgstr "" +msgstr "Chứng từ" #: pretix/base/exporters/orderlist.py:610 msgid "Pseudonymization ID" -msgstr "" +msgstr "ID giả danh" #: pretix/base/exporters/orderlist.py:611 pretix/control/forms/filter.py:678 #: pretix/control/templates/pretixcontrol/order/change.html:280 msgid "Ticket secret" -msgstr "" +msgstr "Bí mật vé" #: pretix/base/exporters/orderlist.py:612 pretix/base/modelimport_orders.py:570 #: pretix/base/modelimport_vouchers.py:272 #: pretix/plugins/checkinlists/exporters.py:525 msgid "Seat ID" -msgstr "" +msgstr "ID chỗ ngồi" #: pretix/base/exporters/orderlist.py:613 #: pretix/plugins/checkinlists/exporters.py:526 msgid "Seat name" -msgstr "" +msgstr "Tên chỗ ngồi" #: pretix/base/exporters/orderlist.py:614 #: pretix/plugins/checkinlists/exporters.py:527 msgid "Seat zone" -msgstr "" +msgstr "Vùng chỗ ngồi" #: pretix/base/exporters/orderlist.py:615 #: pretix/plugins/checkinlists/exporters.py:528 msgid "Seat row" -msgstr "" +msgstr "Hàng ghế" #: pretix/base/exporters/orderlist.py:616 #: pretix/plugins/checkinlists/exporters.py:529 msgid "Seat number" -msgstr "" +msgstr "Số ghế" #: pretix/base/exporters/orderlist.py:617 #: pretix/control/templates/pretixcontrol/order/change.html:224 @@ -2228,7 +2264,7 @@ msgstr "" #: pretix/plugins/statistics/templates/pretixplugins/statistics/index.html:108 #: pretix/plugins/statistics/templates/pretixplugins/statistics/index.html:110 msgid "Blocked" -msgstr "" +msgstr "bị chặn" #: pretix/base/exporters/orderlist.py:618 pretix/base/modelimport_orders.py:500 #: pretix/base/models/orders.py:2514 @@ -2238,7 +2274,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:46 #: pretix/presale/templates/pretixpresale/organizers/customer_memberships.html:54 msgid "Valid from" -msgstr "" +msgstr "Hợp lệ từ" #: pretix/base/exporters/orderlist.py:619 pretix/base/modelimport_orders.py:508 #: pretix/base/modelimport_vouchers.py:111 pretix/base/models/orders.py:2519 @@ -2250,36 +2286,36 @@ msgstr "" #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:48 #: pretix/presale/templates/pretixpresale/organizers/customer_memberships.html:60 msgid "Valid until" -msgstr "" +msgstr "Hợp lệ cho đến khi" #: pretix/base/exporters/orderlist.py:620 msgid "Order comment" -msgstr "" +msgstr "Nhận xét đặt hàng" #: pretix/base/exporters/orderlist.py:622 msgid "Add-on to position ID" -msgstr "" +msgstr "Bổ trợ vào ID vị trí" #: pretix/base/exporters/orderlist.py:650 pretix/base/pdf.py:340 msgid "Invoice address street" -msgstr "" +msgstr "Đường địa chỉ hóa đơn" #: pretix/base/exporters/orderlist.py:650 pretix/base/pdf.py:345 msgid "Invoice address ZIP code" -msgstr "" +msgstr "Mã zip địa chỉ hóa đơn" #: pretix/base/exporters/orderlist.py:650 pretix/base/pdf.py:350 msgid "Invoice address city" -msgstr "" +msgstr "Thành phố địa chỉ hóa đơn" #: pretix/base/exporters/orderlist.py:651 pretix/base/pdf.py:360 msgid "Invoice address country" -msgstr "" +msgstr "Hóa đơn địa chỉ quốc gia" #: pretix/base/exporters/orderlist.py:652 msgctxt "address" msgid "Invoice address state" -msgstr "" +msgstr "Trạng thái địa chỉ hóa đơn" #: pretix/base/exporters/orderlist.py:660 pretix/control/navigation.py:305 #: pretix/control/templates/pretixcontrol/checkin/lists.html:6 @@ -2289,11 +2325,11 @@ msgstr "" #: pretix/control/templates/pretixcontrol/subevents/detail.html:162 #: pretix/plugins/checkinlists/apps.py:44 msgid "Check-in lists" -msgstr "" +msgstr "Danh sách nhận phòng" #: pretix/base/exporters/orderlist.py:822 msgid "Order transaction data" -msgstr "" +msgstr "Dữ liệu giao dịch đặt hàng" #: pretix/base/exporters/orderlist.py:824 msgid "" @@ -2301,10 +2337,12 @@ msgid "" "changes to products, prices or tax rates. The information is only accurate " "for changes made with pretix versions released after October 2021." msgstr "" +"Tải xuống bảng tính của tất cả các thay đổi đáng kể đối với các đơn đặt " +"hàng, tức là tất cả các thay đổi đối với sản phẩm, giá cả hoặc thuế suất." #: pretix/base/exporters/orderlist.py:840 msgid "Only include transactions created within this date range." -msgstr "" +msgstr "Chỉ bao gồm các giao dịch được tạo trong phạm vi ngày này." #: pretix/base/exporters/orderlist.py:875 pretix/base/models/event.py:672 #: pretix/base/models/items.py:468 pretix/base/models/items.py:2041 @@ -2320,7 +2358,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/waitinglist.html:11 #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:95 msgid "Event" -msgstr "" +msgstr "Sự kiện" #: pretix/base/exporters/orderlist.py:877 #: pretix/base/exporters/orderlist.py:1216 @@ -2334,19 +2372,19 @@ msgstr "" #: pretix/plugins/paypal2/templates/pretixplugins/paypal2/control_legacy.html:15 #: pretix/plugins/stripe/templates/pretixplugins/stripe/control.html:75 msgid "Currency" -msgstr "" +msgstr "Tiền tệ" #: pretix/base/exporters/orderlist.py:883 msgid "Transaction date" -msgstr "" +msgstr "Ngày giao dịch" #: pretix/base/exporters/orderlist.py:884 msgid "Transaction time" -msgstr "" +msgstr "Thời gian giao dịch" #: pretix/base/exporters/orderlist.py:885 msgid "Old data" -msgstr "" +msgstr "Dữ liệu cũ" #: pretix/base/exporters/orderlist.py:888 pretix/base/models/items.py:1555 #: pretix/control/templates/pretixcontrol/order/transactions.html:23 @@ -2358,70 +2396,76 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/voucher.html:234 #: pretix/presale/templates/pretixpresale/event/voucher.html:389 msgid "Quantity" -msgstr "" +msgstr "Số lượng" #: pretix/base/exporters/orderlist.py:895 msgid "Internal fee type" -msgstr "" +msgstr "Loại phí nội bộ" #: pretix/base/exporters/orderlist.py:897 msgctxt "subevent" msgid "Date ID" -msgstr "" +msgstr "ID ngày" #: pretix/base/exporters/orderlist.py:902 msgid "Tax rule ID" -msgstr "" +msgstr "ID quy tắc thuế" #: pretix/base/exporters/orderlist.py:905 #: pretix/plugins/reports/accountingreport.py:319 msgid "Gross total" -msgstr "" +msgstr "Tổng số" #: pretix/base/exporters/orderlist.py:906 #: pretix/plugins/reports/accountingreport.py:318 msgid "Tax total" -msgstr "" +msgstr "Tổng số thuế" #: pretix/base/exporters/orderlist.py:916 msgid "" "This value is supplied for informational purposes, it is not part of the " "original transaction data and might have changed since the transaction." msgstr "" +"Giá trị này được cung cấp cho mục đích thông tin, nó không phải là một phần " +"của dữ liệu giao dịch ban đầu và có thể đã thay đổi kể từ giao dịch." #: pretix/base/exporters/orderlist.py:939 msgid "Converted from legacy version" -msgstr "" +msgstr "Được chuyển đổi từ phiên bản kế thừa" #: pretix/base/exporters/orderlist.py:1001 msgid "Payments and refunds" -msgstr "" +msgstr "Thanh toán và hoàn lại tiền" #: pretix/base/exporters/orderlist.py:1003 msgid "Download a spreadsheet of all payments or refunds of every order." msgstr "" +"Tải xuống bảng tính của tất cả các khoản thanh toán hoặc hoàn lại tiền của " +"mỗi đơn đặt hàng." #: pretix/base/exporters/orderlist.py:1012 msgid "Date range (payment date)" -msgstr "" +msgstr "Phạm vi ngày (ngày thanh toán)" #: pretix/base/exporters/orderlist.py:1015 msgid "" "Note that using this will exclude any non-confirmed payments or non-" "completed refunds." msgstr "" +"Lưu ý rằng việc sử dụng điều này sẽ loại trừ bất kỳ khoản thanh toán nào " +"không được xác nhận hoặc hoàn tiền không hoàn thành." #: pretix/base/exporters/orderlist.py:1019 msgid "Date range (start of transaction)" -msgstr "" +msgstr "Phạm vi ngày (bắt đầu giao dịch)" #: pretix/base/exporters/orderlist.py:1025 msgid "Payment states" -msgstr "" +msgstr "trạng thái thanh toán" #: pretix/base/exporters/orderlist.py:1033 msgid "Refund states" -msgstr "" +msgstr "Trạng thái hoàn trả" #: pretix/base/exporters/orderlist.py:1076 #: pretix/base/exporters/orderlist.py:1217 @@ -2436,7 +2480,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/order.html:67 #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:70 msgid "Order" -msgstr "" +msgstr "Đặt hàng" #: pretix/base/exporters/orderlist.py:1076 #: pretix/base/exporters/orderlist.py:1259 @@ -2444,23 +2488,23 @@ msgstr "" #: pretix/plugins/paypal/templates/pretixplugins/paypal/control.html:5 #: pretix/plugins/paypal2/templates/pretixplugins/paypal2/control_legacy.html:5 msgid "Payment ID" -msgstr "" +msgstr "ID thanh toán" #: pretix/base/exporters/orderlist.py:1076 #: pretix/base/exporters/orderlist.py:1357 #: pretix/control/templates/pretixcontrol/organizers/giftcard.html:30 #: pretix/control/templates/pretixcontrol/organizers/giftcards.html:59 msgid "Creation date" -msgstr "" +msgstr "Ngày sáng tạo" #: pretix/base/exporters/orderlist.py:1076 #: pretix/control/templates/pretixcontrol/order/index.html:835 msgid "Completion date" -msgstr "" +msgstr "Ngày hoàn thành" #: pretix/base/exporters/orderlist.py:1077 msgid "Status code" -msgstr "" +msgstr "Mã trạng thái" #: pretix/base/exporters/orderlist.py:1077 #: pretix/base/exporters/orderlist.py:1215 @@ -2477,7 +2521,7 @@ msgstr "" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_assign.html:25 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/transaction_list.html:13 msgid "Amount" -msgstr "" +msgstr "Số tiền" #: pretix/base/exporters/orderlist.py:1077 #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:102 @@ -2488,35 +2532,37 @@ msgstr "" #: pretix/plugins/reports/accountingreport.py:495 #: pretix/plugins/stripe/templates/pretixplugins/stripe/checkout_payment_confirm.html:29 msgid "Payment method" -msgstr "" +msgstr "Phương thức thanh toán" #: pretix/base/exporters/orderlist.py:1077 msgid "Matching ID" -msgstr "" +msgstr "ID khớp" #: pretix/base/exporters/orderlist.py:1077 #: pretix/control/templates/pretixcontrol/order/refund_choose.html:38 msgid "Payment details" -msgstr "" +msgstr "Chi tiết thanh toán" #: pretix/base/exporters/orderlist.py:1127 msgid "Quota availabilities" -msgstr "" +msgstr "Tính khả dụng của hạn ngạch" #: pretix/base/exporters/orderlist.py:1129 msgid "" "Download a spreadsheet of all quotas including their current availability." msgstr "" +"Tải xuống bảng tính của tất cả các hạn ngạch bao gồm cả tính khả dụng hiện " +"tại của chúng." #: pretix/base/exporters/orderlist.py:1134 #: pretix/control/templates/pretixcontrol/items/quotas.html:45 msgid "Quota name" -msgstr "" +msgstr "Tên hạn ngạch" #: pretix/base/exporters/orderlist.py:1134 #: pretix/control/templates/pretixcontrol/items/quota.html:56 msgid "Total quota" -msgstr "" +msgstr "Tổng số hạn ngạch" #: pretix/base/exporters/orderlist.py:1134 #: pretix/control/templates/pretixcontrol/event/cancel.html:20 @@ -2526,44 +2572,44 @@ msgstr "Đơn hàng đã thanh toán" #: pretix/base/exporters/orderlist.py:1134 pretix/control/views/item.py:969 msgid "Pending orders" -msgstr "" +msgstr "Đơn đặt hàng đang chờ xử lý" #: pretix/base/exporters/orderlist.py:1134 msgid "Blocking vouchers" -msgstr "" +msgstr "Chặn chứng từ" #: pretix/base/exporters/orderlist.py:1135 pretix/control/views/item.py:988 msgid "Current user's carts" -msgstr "" +msgstr "Giỏ hàng của người dùng hiện tại" #: pretix/base/exporters/orderlist.py:1135 msgid "Exited orders" -msgstr "" +msgstr "Lệnh thoát" #: pretix/base/exporters/orderlist.py:1135 msgid "Current availability" -msgstr "" +msgstr "Tính khả dụng hiện tại" #: pretix/base/exporters/orderlist.py:1152 #: pretix/base/exporters/orderlist.py:1159 #: pretix/control/templates/pretixcontrol/items/quota.html:58 #: pretix/control/views/item.py:995 msgid "Infinite" -msgstr "" +msgstr "Vô hạn" #: pretix/base/exporters/orderlist.py:1181 msgid "Gift card transactions" -msgstr "" +msgstr "Giao dịch thẻ quà tặng" #: pretix/base/exporters/orderlist.py:1183 #: pretix/base/exporters/orderlist.py:1288 msgctxt "export_category" msgid "Gift cards" -msgstr "" +msgstr "Thẻ quà tặng" #: pretix/base/exporters/orderlist.py:1184 msgid "Download a spreadsheet of all gift card transactions." -msgstr "" +msgstr "Tải xuống bảng tính của tất cả các giao dịch thẻ quà tặng." #: pretix/base/exporters/orderlist.py:1212 #: pretix/base/exporters/orderlist.py:1259 @@ -2575,7 +2621,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/organizers/giftcards.html:56 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:151 msgid "Gift card code" -msgstr "" +msgstr "Mã thẻ quà tặng" #: pretix/base/exporters/orderlist.py:1213 #: pretix/base/exporters/orderlist.py:1302 @@ -2584,7 +2630,7 @@ msgstr "" #: pretix/control/forms/filter.py:1417 pretix/control/forms/filter.py:1420 #: pretix/control/templates/pretixcontrol/event/live.html:75 msgid "Test mode" -msgstr "" +msgstr "Chế độ kiểm tra" #: pretix/base/exporters/orderlist.py:1218 pretix/base/models/organizer.py:96 #: pretix/control/forms/event.py:110 pretix/control/forms/event.py:116 @@ -2600,7 +2646,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/organizers/giftcard_acceptance_list.html:112 #: pretix/control/templates/pretixcontrol/organizers/mail.html:9 msgid "Organizer" -msgstr "" +msgstr "Nhà tổ chức" #: pretix/base/exporters/orderlist.py:1225 pretix/base/invoice.py:573 #: pretix/control/templates/pretixcontrol/base.html:283 @@ -2628,40 +2674,44 @@ msgstr "" #: pretix/presale/templates/pretixpresale/organizers/customer_memberships.html:71 #: pretix/presale/templates/pretixpresale/organizers/customer_orders.html:40 msgid "TEST MODE" -msgstr "" +msgstr "Chế độ kiểm tra" #: pretix/base/exporters/orderlist.py:1240 msgid "Gift card redemptions" -msgstr "" +msgstr "Giới thiệu thẻ quà tặng" #: pretix/base/exporters/orderlist.py:1242 msgid "" "Download a spreadsheet of all payments or refunds that involve gift cards." msgstr "" +"Tải xuống bảng tính của tất cả các khoản thanh toán hoặc hoàn tiền liên quan " +"đến thẻ quà tặng." #: pretix/base/exporters/orderlist.py:1259 #: pretix/control/templates/pretixcontrol/giftcards/payment.html:16 msgid "Issuer" -msgstr "" +msgstr "Nhà phát hành" #: pretix/base/exporters/orderlist.py:1286 pretix/control/navigation.py:538 #: pretix/control/navigation.py:556 #: pretix/control/templates/pretixcontrol/organizers/edit.html:156 #: pretix/plugins/reports/accountingreport.py:898 msgid "Gift cards" -msgstr "" +msgstr "Thẻ quà tặng" #: pretix/base/exporters/orderlist.py:1289 msgid "Download a spreadsheet of all gift cards including their current value." msgstr "" +"Tải xuống bảng tính của tất cả các thẻ quà tặng bao gồm giá trị hiện tại của " +"chúng." #: pretix/base/exporters/orderlist.py:1296 msgid "Show value at" -msgstr "" +msgstr "Hiển thị giá trị tại" #: pretix/base/exporters/orderlist.py:1299 msgid "Defaults to the time of report." -msgstr "" +msgstr "Mặc định theo thời gian báo cáo." #: pretix/base/exporters/orderlist.py:1304 #: pretix/base/exporters/orderlist.py:1314 pretix/control/forms/filter.py:519 @@ -2688,20 +2738,20 @@ msgstr "Tất cả" #: pretix/base/exporters/orderlist.py:1306 pretix/control/forms/filter.py:1421 msgid "Live" -msgstr "" +msgstr "Trực tiếp" #: pretix/base/exporters/orderlist.py:1315 pretix/control/forms/filter.py:1429 #: pretix/control/templates/pretixcontrol/pdf/index.html:265 msgid "Empty" -msgstr "" +msgstr "trống rỗng" #: pretix/base/exporters/orderlist.py:1316 pretix/control/forms/filter.py:1430 msgid "Valid and with value" -msgstr "" +msgstr "hợp lệ và có giá trị" #: pretix/base/exporters/orderlist.py:1317 pretix/control/forms/filter.py:1431 msgid "Expired and with value" -msgstr "" +msgstr "đã hết hạn và có giá trị" #: pretix/base/exporters/orderlist.py:1318 pretix/control/forms/filter.py:227 #: pretix/control/forms/filter.py:1432 pretix/control/forms/filter.py:2094 @@ -2712,22 +2762,22 @@ msgstr "" #: pretix/plugins/reports/exporters.py:378 #: pretix/presale/templates/pretixpresale/event/fragment_order_status.html:26 msgid "Expired" -msgstr "" +msgstr "Hết hạn" #: pretix/base/exporters/orderlist.py:1356 pretix/base/models/giftcards.py:98 msgid "Test mode card" -msgstr "" +msgstr "Thẻ chế độ kiểm tra" #: pretix/base/exporters/orderlist.py:1358 #: pretix/base/modelimport_orders.py:516 pretix/base/models/giftcards.py:102 #: pretix/control/templates/pretixcontrol/order/index.html:203 #: pretix/control/templates/pretixcontrol/organizers/giftcards.html:62 msgid "Expiry date" -msgstr "" +msgstr "Ngày hết hạn" #: pretix/base/exporters/orderlist.py:1359 pretix/control/forms/orders.py:892 msgid "Special terms and conditions" -msgstr "" +msgstr "Điều khoản và điều kiện đặc biệt" #: pretix/base/exporters/orderlist.py:1361 #: pretix/control/templates/pretixcontrol/order/change.html:98 @@ -2735,19 +2785,19 @@ msgstr "" #: pretix/control/templates/pretixcontrol/organizers/giftcard.html:32 #: pretix/control/templates/pretixcontrol/organizers/giftcards.html:68 msgid "Current value" -msgstr "" +msgstr "Giá trị hiện tại" #: pretix/base/exporters/orderlist.py:1362 msgid "Created in order" -msgstr "" +msgstr "Được tạo theo thứ tự" #: pretix/base/exporters/orderlist.py:1363 msgid "Last invoice number of order" -msgstr "" +msgstr "Số hóa đơn cuối cùng của đơn đặt hàng" #: pretix/base/exporters/orderlist.py:1364 msgid "Last invoice date of order" -msgstr "" +msgstr "Ngày hóa đơn cuối cùng của đơn đặt hàng" #: pretix/base/exporters/reusablemedia.py:34 pretix/control/navigation.py:616 #: pretix/control/templates/pretixcontrol/organizers/edit.html:222 @@ -2756,104 +2806,106 @@ msgstr "" #: pretix/control/templates/pretixcontrol/organizers/reusable_media.html:6 #: pretix/control/templates/pretixcontrol/organizers/reusable_media.html:9 msgid "Reusable media" -msgstr "" +msgstr "Phương tiện tái sử dụng" #: pretix/base/exporters/reusablemedia.py:35 msgctxt "export_category" msgid "Reusable media" -msgstr "" +msgstr "Phương tiện tái sử dụng" #: pretix/base/exporters/reusablemedia.py:36 msgid "" "Download a spread sheet with the data of all reusable medias on your account." msgstr "" +"Tải xuống một bảng tính với dữ liệu của tất cả các phương tiện có thể tái sử " +"dụng trên tài khoản của bạn." #: pretix/base/exporters/reusablemedia.py:46 pretix/base/models/media.py:67 msgctxt "reusable_medium" msgid "Media type" -msgstr "" +msgstr "Loại phương tiện truyền thông" #: pretix/base/exporters/reusablemedia.py:47 pretix/base/models/media.py:73 msgctxt "reusable_medium" msgid "Identifier" -msgstr "" +msgstr "Định danh" #: pretix/base/exporters/reusablemedia.py:49 pretix/base/models/media.py:81 #: pretix/base/models/orders.py:265 pretix/base/models/orders.py:3098 #: pretix/control/forms/orders.py:78 #: pretix/control/templates/pretixcontrol/order/refund_choose.html:138 msgid "Expiration date" -msgstr "" +msgstr "Ngày hết hạn" #: pretix/base/exporters/reusablemedia.py:50 pretix/base/models/media.py:90 #: pretix/control/templates/pretixcontrol/order/index.html:216 #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:133 msgid "Customer account" -msgstr "" +msgstr "Tài khoản khách hàng" #: pretix/base/exporters/reusablemedia.py:51 pretix/base/models/media.py:97 msgid "Linked ticket" -msgstr "" +msgstr "Vé liên kết" #: pretix/base/exporters/reusablemedia.py:52 pretix/base/models/media.py:104 msgid "Linked gift card" -msgstr "" +msgstr "Thẻ quà tặng liên kết" #: pretix/base/exporters/waitinglist.py:42 msgctxt "export_category" msgid "Waiting list" -msgstr "" +msgstr "Danh sách chờ đợi" #: pretix/base/exporters/waitinglist.py:43 msgid "Download a spread sheet with all your waiting list data." -msgstr "" +msgstr "Tải xuống một bảng tính với tất cả dữ liệu danh sách chờ của bạn." #: pretix/base/exporters/waitinglist.py:49 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:102 msgid "All entries" -msgstr "" +msgstr "Tất cả các mục" #: pretix/base/exporters/waitinglist.py:54 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:105 msgid "Waiting for a voucher" -msgstr "" +msgstr "Chờ đợi một chứng từ" #: pretix/base/exporters/waitinglist.py:59 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:107 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:227 #: pretix/control/views/waitinglist.py:333 msgid "Voucher assigned" -msgstr "" +msgstr "Chứng từ được chỉ định" #: pretix/base/exporters/waitinglist.py:64 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:110 msgid "Waiting for redemption" -msgstr "" +msgstr "Chờ đợi sự cứu chuộc" #: pretix/base/exporters/waitinglist.py:72 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:223 #: pretix/control/views/waitinglist.py:329 msgid "Voucher redeemed" -msgstr "" +msgstr "Voucher chuộc lại" #: pretix/base/exporters/waitinglist.py:80 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:116 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:225 #: pretix/control/views/waitinglist.py:331 msgid "Voucher expired" -msgstr "" +msgstr "Voucher hết hạn" #: pretix/base/exporters/waitinglist.py:117 #: pretix/base/modelimport_orders.py:95 pretix/base/modelimport_vouchers.py:60 #: pretix/control/templates/pretixcontrol/checkin/index.html:100 msgctxt "subevents" msgid "Date" -msgstr "" +msgstr "Ngày" #: pretix/base/exporters/waitinglist.py:121 #: pretix/control/views/waitinglist.py:315 msgid "Priority" -msgstr "" +msgstr "Ưu tiên" #: pretix/base/exporters/waitinglist.py:123 #: pretix/base/modelimport_vouchers.py:39 pretix/base/models/vouchers.py:190 @@ -2866,194 +2918,207 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html:12 #: pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html:19 msgid "Voucher code" -msgstr "" +msgstr "Mã chứng từ" #: pretix/base/forms/__init__.py:95 pretix/base/forms/__init__.py:106 #: pretix/base/forms/__init__.py:118 #, python-brace-format msgid "You can use {markup_name} in this field." -msgstr "" +msgstr "Bạn có thể sử dụng {markup_name} trong trường này." #: pretix/base/forms/__init__.py:178 -#, python-format +#, fuzzy, python-format msgid "" "Due to technical reasons you cannot set inputs, that need to be masked (e.g. " "passwords), to %(value)s." msgstr "" +"Vì lý do kỹ thuật, bạn không thể đặt đầu vào, cần được che dấu (ví dụ: mật " +"khẩu), thành %(giá trị) s." #: pretix/base/forms/auth.py:61 pretix/base/forms/auth.py:179 msgid "Keep me logged in" -msgstr "" +msgstr "Giữ cho tôi đăng nhập" #: pretix/base/forms/auth.py:65 pretix/base/forms/auth.py:272 msgid "This combination of credentials is not known to our system." msgstr "" +"Sự kết hợp của thông tin đăng nhập này không được biết đến với hệ thống của " +"chúng tôi." #: pretix/base/forms/auth.py:66 pretix/base/forms/user.py:57 #: pretix/presale/forms/customer.py:383 pretix/presale/forms/customer.py:455 msgid "For security reasons, please wait 5 minutes before you try again." -msgstr "" +msgstr "Vì lý do bảo mật, vui lòng đợi 5 phút trước khi bạn thử lại." #: pretix/base/forms/auth.py:67 pretix/base/forms/auth.py:273 msgid "This account is inactive." -msgstr "" +msgstr "Tài khoản này không hoạt động." #: pretix/base/forms/auth.py:156 msgid "" "You already registered with that email address, please use the login form." msgstr "" +"Bạn đã đăng ký với địa chỉ email đó, vui lòng sử dụng biểu mẫu đăng nhập." #: pretix/base/forms/auth.py:157 pretix/base/forms/auth.py:215 #: pretix/base/forms/user.py:56 pretix/control/forms/users.py:45 #: pretix/presale/forms/customer.py:294 pretix/presale/forms/customer.py:382 msgid "Please enter the same password twice" -msgstr "" +msgstr "Vui lòng nhập cùng một mật khẩu hai lần" #: pretix/base/forms/auth.py:172 pretix/base/forms/auth.py:224 #: pretix/presale/forms/customer.py:307 pretix/presale/forms/customer.py:401 msgid "Repeat password" -msgstr "" +msgstr "Lặp lại mật khẩu" #: pretix/base/forms/questions.py:135 pretix/base/forms/questions.py:257 msgctxt "name_salutation" msgid "not specified" -msgstr "" +msgstr "Không được chỉ định" #: pretix/base/forms/questions.py:220 msgid "Please do not use special characters in names." -msgstr "" +msgstr "Vui lòng không sử dụng các ký tự đặc biệt trong tên." #: pretix/base/forms/questions.py:282 msgid "Please enter a shorter name." -msgstr "" +msgstr "Vui lòng nhập một tên ngắn hơn." #: pretix/base/forms/questions.py:306 msgctxt "phonenumber" msgid "International area code" -msgstr "" +msgstr "Mã khu vực quốc tế" #: pretix/base/forms/questions.py:330 msgctxt "phonenumber" msgid "Phone number (without international area code)" -msgstr "" +msgstr "Số điện thoại (không có mã khu vực quốc tế)" #: pretix/base/forms/questions.py:491 msgid "" "You uploaded an image in landscape orientation. Please upload an image in " "portrait orientation." -msgstr "" +msgstr "Bạn đã tải lên một hình ảnh theo định hướng cảnh quan." #: pretix/base/forms/questions.py:494 msgid "Please upload an image where the width is 3/4 of the height." -msgstr "" +msgstr "Vui lòng tải lên một hình ảnh trong đó chiều rộng là 3/4 chiều cao." #: pretix/base/forms/questions.py:497 msgid "" "The file you uploaded has a very large number of pixels, please upload an " "image no larger than 10000 x 10000 pixels." msgstr "" +"Tệp bạn đã tải lên có số lượng pixel rất lớn, vui lòng tải lên một hình ảnh " +"không lớn hơn 10000 x 10000 pixel." #: pretix/base/forms/questions.py:500 pretix/helpers/images.py:75 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." -msgstr "" +msgstr "Tải lên một hình ảnh hợp lệ." #: pretix/base/forms/questions.py:643 pretix/base/forms/questions.py:652 msgid "" "If you keep this empty, the ticket will be valid starting at the time of " "purchase." -msgstr "" +msgstr "Nếu bạn giữ trống này, vé sẽ có giá trị bắt đầu tại thời điểm mua." #: pretix/base/forms/questions.py:699 pretix/base/forms/questions.py:1058 msgid "Street and Number" -msgstr "" +msgstr "Đường phố và số" #: pretix/base/forms/questions.py:1112 msgid "" "Optional, but depending on the country you reside in we might need to charge " "you additional taxes if you do not enter it." msgstr "" +"Tùy chọn, nhưng tùy thuộc vào quốc gia bạn cư trú, chúng tôi có thể cần tính " +"phí bổ sung cho bạn nếu bạn không tham gia." #: pretix/base/forms/questions.py:1114 pretix/base/forms/questions.py:1120 msgid "If you are registered in Switzerland, you can enter your UID instead." -msgstr "" +msgstr "Nếu bạn đã đăng ký tại Thụy Sĩ, bạn có thể nhập UID của mình." #: pretix/base/forms/questions.py:1118 msgid "" "Optional, but it might be required for you to claim tax benefits on your " "invoice depending on your and the seller’s country of residence." msgstr "" +"Tùy chọn, nhưng bạn có thể yêu cầu yêu cầu trợ cấp thuế trên hóa đơn của bạn " +"tùy thuộc vào quốc gia cư trú của bạn và người bán." #: pretix/base/forms/questions.py:1220 msgid "You need to provide a company name." -msgstr "" +msgstr "Bạn cần cung cấp một tên công ty." #: pretix/base/forms/questions.py:1222 msgid "You need to provide your name." -msgstr "" +msgstr "Bạn cần cung cấp tên của bạn." #: pretix/base/forms/user.py:51 pretix/control/forms/users.py:43 msgid "" "There already is an account associated with this email address. Please " "choose a different one." -msgstr "" +msgstr "Đã có một tài khoản được liên kết với địa chỉ email này." #: pretix/base/forms/user.py:53 msgid "" "Please enter your current password if you want to change your email address " "or password." msgstr "" +"Vui lòng nhập mật khẩu hiện tại của bạn nếu bạn muốn thay đổi địa chỉ email " +"hoặc mật khẩu của bạn." #: pretix/base/forms/user.py:55 pretix/presale/forms/customer.py:381 #: pretix/presale/forms/customer.py:454 msgid "The current password you entered was not correct." -msgstr "" +msgstr "Mật khẩu hiện tại bạn đã nhập không chính xác." #: pretix/base/forms/user.py:58 msgid "Please choose a password different to your current one." -msgstr "" +msgstr "Vui lòng chọn một mật khẩu khác với mật khẩu của bạn." #: pretix/base/forms/user.py:63 pretix/presale/forms/customer.py:390 #: pretix/presale/forms/customer.py:459 msgid "Your current password" -msgstr "" +msgstr "Mật khẩu hiện tại của bạn" #: pretix/base/forms/user.py:67 pretix/control/forms/users.py:50 #: pretix/presale/forms/customer.py:395 msgid "New password" -msgstr "" +msgstr "Mật khẩu mới" #: pretix/base/forms/user.py:71 pretix/control/forms/users.py:54 msgid "Repeat new password" -msgstr "" +msgstr "Lặp lại mật khẩu mới" #: pretix/base/forms/user.py:75 pretix/control/forms/organizer.py:458 #: pretix/control/forms/users.py:58 msgid "Default timezone" -msgstr "" +msgstr "Thời gian mặc định" #: pretix/base/forms/user.py:76 pretix/control/forms/users.py:59 msgid "" "Only used for views that are not bound to an event. For all event views, the " "event timezone is used instead." -msgstr "" +msgstr "Chỉ được sử dụng cho các chế độ xem không bị ràng buộc với một sự kiện." #: pretix/base/forms/user.py:175 msgid "Device name" -msgstr "" +msgstr "Tên thiết bị" #: pretix/base/forms/user.py:176 msgid "Device type" -msgstr "" +msgstr "Loại thiết bị" #: pretix/base/forms/user.py:177 msgid "Smartphone with the Authenticator application" -msgstr "" +msgstr "Điện thoại thông minh với ứng dụng Authenticator" #: pretix/base/forms/user.py:178 msgid "WebAuthn-compatible hardware token (e.g. Yubikey)" -msgstr "" +msgstr "Mã thông báo phần cứng tương thích WebAuthn (ví dụ: Yubikey)" #: pretix/base/forms/validators.py:51 msgid "" @@ -3061,98 +3126,98 @@ msgid "" "opening \"{\" and closing \"}\" curly brackets on your placeholders match " "up. Please note: to use literal \"{\" or \"}\", you need to double them as " "\"{{\" and \"}}\"." -msgstr "" +msgstr "Có một lỗi với cú pháp giữ chỗ của bạn." #: pretix/base/forms/validators.py:72 pretix/control/views/event.py:807 -#, python-format +#, fuzzy, python-format msgid "Invalid placeholder: {%(value)s}" -msgstr "" +msgstr "Người giữ chỗ không hợp lệ: {%(giá trị) S}" #: pretix/base/forms/widgets.py:68 #, python-format msgid "Sample: %s" -msgstr "" +msgstr "Mẫu: %s" #: pretix/base/forms/widgets.py:71 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Available placeholders: {list}" -msgstr "" +msgstr "Người giữ chỗ có sẵn: {Danh sách}" #: pretix/base/forms/widgets.py:214 pretix/base/models/items.py:1656 #: pretix/base/reldate.py:216 pretix/plugins/checkinlists/exporters.py:753 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_create.html:40 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_update.html:54 msgid "Time" -msgstr "" +msgstr "Thời gian" #: pretix/base/forms/widgets.py:234 pretix/base/forms/widgets.py:239 msgid "Business or institutional customer" -msgstr "" +msgstr "Khách hàng kinh doanh hoặc tổ chức" #: pretix/base/forms/widgets.py:238 msgid "Individual customer" -msgstr "" +msgstr "Khách hàng cá nhân" #: pretix/base/invoice.py:138 -#, python-format +#, fuzzy, python-format msgctxt "invoice" msgid "Page %d of %d" -msgstr "" +msgstr "Trang %D của %d" #: pretix/base/invoice.py:375 msgctxt "invoice" msgid "Classic renderer (pretix 1.0)" -msgstr "" +msgstr "trình kết xuất cổ điển (Pretix 1.0)" #: pretix/base/invoice.py:419 msgctxt "invoice" msgid "Invoice from" -msgstr "" +msgstr "Hóa đơn từ" #: pretix/base/invoice.py:425 msgctxt "invoice" msgid "Invoice to" -msgstr "" +msgstr "Hóa đơn đến" #: pretix/base/invoice.py:462 pretix/base/invoice.py:1016 msgctxt "invoice" msgid "Order code" -msgstr "" +msgstr "Mã đặt hàng" #: pretix/base/invoice.py:471 pretix/base/invoice.py:1029 msgctxt "invoice" msgid "Cancellation number" -msgstr "" +msgstr "Số hủy" #: pretix/base/invoice.py:477 pretix/base/invoice.py:1031 msgctxt "invoice" msgid "Original invoice" -msgstr "" +msgstr "Hóa đơn gốc" #: pretix/base/invoice.py:482 pretix/base/invoice.py:1036 msgctxt "invoice" msgid "Invoice number" -msgstr "" +msgstr "Số hóa đơn" #: pretix/base/invoice.py:490 pretix/base/invoice.py:1051 msgctxt "invoice" msgid "Cancellation date" -msgstr "" +msgstr "Ngày hủy" #: pretix/base/invoice.py:496 msgctxt "invoice" msgid "Original invoice date" -msgstr "" +msgstr "Ngày hóa đơn gốc" #: pretix/base/invoice.py:503 pretix/base/invoice.py:1053 msgctxt "invoice" msgid "Invoice date" -msgstr "" +msgstr "Ngày hóa đơn" #: pretix/base/invoice.py:519 msgctxt "invoice" msgid "Event" -msgstr "" +msgstr "Sự kiện" #: pretix/base/invoice.py:545 #, python-brace-format @@ -3160,39 +3225,39 @@ msgctxt "invoice" msgid "" "{from_date}\n" "until {to_date}" -msgstr "" +msgstr "{from_date} nuntil {to_date}" #: pretix/base/invoice.py:578 pretix/base/services/mail.py:495 #, python-brace-format msgctxt "invoice" msgid "Invoice {num}" -msgstr "" +msgstr "Hóa đơn {num}" #: pretix/base/invoice.py:621 -#, python-brace-format +#, fuzzy, python-brace-format msgctxt "invoice" msgid "Customer reference: {reference}" -msgstr "" +msgstr "Tài liệu tham khảo khách hàng: {Tham khảo}" #: pretix/base/invoice.py:629 msgctxt "invoice" msgid "Customer VAT ID" -msgstr "" +msgstr "ID VAT khách hàng" #: pretix/base/invoice.py:636 msgctxt "invoice" msgid "Beneficiary" -msgstr "" +msgstr "Người thụ hưởng" #: pretix/base/invoice.py:657 msgctxt "invoice" msgid "Tax Invoice" -msgstr "" +msgstr "Hóa đơn thuế" #: pretix/base/invoice.py:658 msgctxt "invoice" msgid "Invoice" -msgstr "" +msgstr "Hóa đơn" #: pretix/base/invoice.py:659 #: pretix/control/templates/pretixcontrol/order/index.html:272 @@ -3200,12 +3265,12 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/order.html:244 msgctxt "invoice" msgid "Cancellation" -msgstr "" +msgstr "Hủy bỏ" #: pretix/base/invoice.py:681 pretix/base/invoice.py:689 msgctxt "invoice" msgid "Description" -msgstr "" +msgstr "Mô tả" #: pretix/base/invoice.py:682 pretix/base/invoice.py:690 msgctxt "invoice" @@ -3215,12 +3280,12 @@ msgstr "" #: pretix/base/invoice.py:683 pretix/base/invoice.py:833 msgctxt "invoice" msgid "Tax rate" -msgstr "" +msgstr "Thuế suất" #: pretix/base/invoice.py:684 msgctxt "invoice" msgid "Net" -msgstr "" +msgstr "net" #: pretix/base/invoice.py:685 msgctxt "invoice" @@ -3230,109 +3295,113 @@ msgstr "" #: pretix/base/invoice.py:691 msgctxt "invoice" msgid "Amount" -msgstr "" +msgstr "Số tiền" #: pretix/base/invoice.py:707 #, python-brace-format msgctxt "invoice" msgid "Single price: {net_price} net / {gross_price} gross" -msgstr "" +msgstr "Giá đơn: {net_price} net / {gross_price} gross" #: pretix/base/invoice.py:724 -#, python-brace-format +#, fuzzy, python-brace-format msgctxt "invoice" msgid "Single price: {price}" -msgstr "" +msgstr "Giá đơn: {Giá}" #: pretix/base/invoice.py:742 pretix/base/invoice.py:748 msgctxt "invoice" msgid "Invoice total" -msgstr "" +msgstr "Tổng số hóa đơn" #: pretix/base/invoice.py:758 msgctxt "invoice" msgid "Received payments" -msgstr "" +msgstr "Nhận thanh toán" #: pretix/base/invoice.py:763 msgctxt "invoice" msgid "Outstanding payments" -msgstr "" +msgstr "Thanh toán chưa thanh toán" #: pretix/base/invoice.py:780 msgctxt "invoice" msgid "Paid by gift card" -msgstr "" +msgstr "Được trả bằng thẻ quà tặng" #: pretix/base/invoice.py:785 msgctxt "invoice" msgid "Remaining amount" -msgstr "" +msgstr "Số tiền còn lại" #: pretix/base/invoice.py:834 msgctxt "invoice" msgid "Net value" -msgstr "" +msgstr "Giá trị ròng" #: pretix/base/invoice.py:835 msgctxt "invoice" msgid "Gross value" -msgstr "" +msgstr "Tổng giá trị" #: pretix/base/invoice.py:836 msgctxt "invoice" msgid "Tax" -msgstr "" +msgstr "Thuế" #: pretix/base/invoice.py:866 msgctxt "invoice" msgid "Included taxes" -msgstr "" +msgstr "Bao gồm thuế" #: pretix/base/invoice.py:894 -#, python-brace-format +#, fuzzy, python-brace-format msgctxt "invoice" msgid "" "Using the conversion rate of 1:{rate} as published by the {authority} on " "{date}, this corresponds to:" msgstr "" +"Sử dụng tỷ lệ chuyển đổi là 1: {Rate} như được xuất bản bởi {Author} trên " +"{ngày}, điều này tương ứng với:" #: pretix/base/invoice.py:909 -#, python-brace-format +#, fuzzy, python-brace-format msgctxt "invoice" msgid "" "Using the conversion rate of 1:{rate} as published by the {authority} on " "{date}, the invoice total corresponds to {total}." msgstr "" +"Sử dụng tỷ lệ chuyển đổi là 1: {Rate} như được xuất bản bởi {thẩm quyền} " +"trên {ngày}, tổng hóa đơn tương ứng với {Total}." #: pretix/base/invoice.py:923 msgid "Default invoice renderer (European-style letter)" -msgstr "" +msgstr "Kết xuất hóa đơn mặc định (Thư kiểu châu Âu)" #: pretix/base/invoice.py:1012 msgctxt "invoice" msgid "(Please quote at all times.)" -msgstr "" +msgstr "(Vui lòng trích dẫn mọi lúc.)" #: pretix/base/invoice.py:1059 msgid "Simplified invoice renderer" -msgstr "" +msgstr "Kết xuất hóa đơn đơn giản hóa" #: pretix/base/invoice.py:1078 -#, python-brace-format +#, fuzzy, python-brace-format msgctxt "invoice" msgid "Event date: {date_range}" -msgstr "" +msgstr "Sự kiện Ngày: {Date_Range}" #: pretix/base/logentrytype_registry.py:43 msgid "" "The relevant plugin is currently not active. To activate it, click here to " "go to the plugin settings." -msgstr "" +msgstr "Plugin có liên quan hiện không hoạt động." #: pretix/base/logentrytype_registry.py:53 msgid "The relevant plugin is currently not active." -msgstr "" +msgstr "Plugin có liên quan hiện không hoạt động." #: pretix/base/logentrytypes.py:49 #, fuzzy @@ -3341,118 +3410,118 @@ msgid "(deleted)" msgstr "Đã huỷ đơn hàng" #: pretix/base/logentrytypes.py:78 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Order {val}" -msgstr "" +msgstr "Đặt hàng {Val}" #: pretix/base/logentrytypes.py:90 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Voucher {val}…" -msgstr "" +msgstr "Voucher {Val}" #: pretix/base/logentrytypes.py:102 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Product {val}" -msgstr "" +msgstr "Sản phẩm {Val}" #: pretix/base/logentrytypes.py:109 -#, python-brace-format +#, fuzzy, python-brace-format msgctxt "subevent" msgid "Date {val}" -msgstr "" +msgstr "Ngày {Val}" #: pretix/base/logentrytypes.py:116 #, python-brace-format msgid "Quota {val}" -msgstr "" +msgstr "hạn ngạch {val}" #: pretix/base/logentrytypes.py:123 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Discount {val}" -msgstr "" +msgstr "Giảm giá {Val}" #: pretix/base/logentrytypes.py:130 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Category {val}" -msgstr "" +msgstr "Thể loại {Val}" #: pretix/base/logentrytypes.py:137 #, python-brace-format msgid "Question {val}" -msgstr "" +msgstr "câu hỏi {val}" #: pretix/base/logentrytypes.py:144 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Tax rule {val}" -msgstr "" +msgstr "Quy tắc thuế {Val}" #: pretix/base/media.py:71 msgid "Barcode / QR-Code" -msgstr "" +msgstr "Mã vạch / QR" #: pretix/base/media.py:88 #: pretix/control/templates/pretixcontrol/organizers/edit.html:255 msgid "NFC UID-based" -msgstr "" +msgstr "dựa trên NFC UID" #: pretix/base/migrations/0077_auto_20171124_1629.py:33 #: pretix/base/migrations/0077_auto_20171124_1629_squashed_0088_auto_20180328_1217.py:35 msgid "Default list" -msgstr "" +msgstr "Danh sách mặc định" #: pretix/base/modelimport.py:112 msgid "Keep empty" -msgstr "" +msgstr "Giữ trống" #: pretix/base/modelimport.py:139 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Invalid setting for column \"{header}\"." -msgstr "" +msgstr "Cài đặt không hợp lệ cho cột \"{tiêu đề} \"." #: pretix/base/modelimport.py:199 #, python-brace-format msgid "Could not parse {value} as a yes/no value." -msgstr "" +msgstr "Không thể phân tích {value} dưới dạng giá trị có/không." #: pretix/base/modelimport.py:222 #, python-brace-format msgid "Could not parse {value} as a date and time." -msgstr "" +msgstr "Không thể phân tích {value} là ngày và giờ." #: pretix/base/modelimport.py:232 pretix/control/views/orders.py:1183 #: pretix/control/views/orders.py:1212 pretix/control/views/orders.py:1256 #: pretix/control/views/orders.py:1291 pretix/control/views/orders.py:1314 msgid "You entered an invalid number." -msgstr "" +msgstr "Bạn đã nhập một số không hợp lệ." #: pretix/base/modelimport.py:279 pretix/base/modelimport.py:291 msgctxt "subevent" msgid "No matching date was found." -msgstr "" +msgstr "Không tìm thấy ngày phù hợp." #: pretix/base/modelimport.py:281 pretix/base/modelimport.py:293 msgctxt "subevent" msgid "Multiple matching dates were found." -msgstr "" +msgstr "Nhiều ngày phù hợp đã được tìm thấy." #: pretix/base/modelimport_orders.py:85 msgid "Enter a valid phone number." -msgstr "" +msgstr "Nhập số điện thoại hợp lệ." #: pretix/base/modelimport_orders.py:100 pretix/presale/views/waiting.py:157 msgctxt "subevent" msgid "You need to select a date." -msgstr "" +msgstr "Bạn cần chọn một ngày." #: pretix/base/modelimport_orders.py:128 #: pretix/base/modelimport_vouchers.py:194 msgid "No matching product was found." -msgstr "" +msgstr "Không tìm thấy sản phẩm phù hợp." #: pretix/base/modelimport_orders.py:130 #: pretix/base/modelimport_vouchers.py:196 msgid "Multiple matching products were found." -msgstr "" +msgstr "Nhiều sản phẩm phù hợp đã được tìm thấy." #: pretix/base/modelimport_orders.py:139 #: pretix/base/modelimport_vouchers.py:205 pretix/base/models/items.py:1257 @@ -3464,17 +3533,17 @@ msgstr "Biến thể sản phẩm" #: pretix/base/modelimport_vouchers.py:225 #: pretix/base/modelimport_vouchers.py:259 msgid "No matching variation was found." -msgstr "" +msgstr "Không tìm thấy biến thể phù hợp." #: pretix/base/modelimport_orders.py:161 #: pretix/base/modelimport_vouchers.py:227 #: pretix/base/modelimport_vouchers.py:261 msgid "Multiple matching variations were found." -msgstr "" +msgstr "Nhiều biến thể phù hợp đã được tìm thấy." #: pretix/base/modelimport_orders.py:164 msgid "You need to select a variation for this product." -msgstr "" +msgstr "Bạn cần chọn một biến thể cho sản phẩm này." #: pretix/base/modelimport_orders.py:176 pretix/base/modelimport_orders.py:191 #: pretix/base/modelimport_orders.py:206 pretix/base/modelimport_orders.py:217 @@ -3485,23 +3554,23 @@ msgstr "" #: pretix/control/forms/filter.py:633 pretix/control/forms/filter.py:638 #: pretix/control/forms/filter.py:643 msgid "Invoice address" -msgstr "" +msgstr "Địa chỉ hóa đơn" #: pretix/base/modelimport_orders.py:251 pretix/base/modelimport_orders.py:397 msgid "Please enter a valid country code." -msgstr "" +msgstr "Vui lòng nhập mã quốc gia hợp lệ." #: pretix/base/modelimport_orders.py:268 pretix/base/modelimport_orders.py:414 msgid "States are not supported for this country." -msgstr "" +msgstr "Các quốc gia không được hỗ trợ cho đất nước này." #: pretix/base/modelimport_orders.py:276 pretix/base/modelimport_orders.py:422 msgid "Please enter a valid state." -msgstr "" +msgstr "Vui lòng nhập trạng thái hợp lệ." #: pretix/base/modelimport_orders.py:325 pretix/control/forms/filter.py:652 msgid "Attendee email address" -msgstr "" +msgstr "Địa chỉ email của người tham dự" #: pretix/base/modelimport_orders.py:341 pretix/base/modelimport_orders.py:352 #: pretix/base/modelimport_orders.py:363 pretix/base/modelimport_orders.py:374 @@ -3513,47 +3582,47 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:192 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:195 msgid "Attendee address" -msgstr "" +msgstr "Địa chỉ người tham dự" #: pretix/base/modelimport_orders.py:409 msgid "State" -msgstr "" +msgstr "Nhà nước" #: pretix/base/modelimport_orders.py:432 msgid "Calculate from product" -msgstr "" +msgstr "Tính toán từ sản phẩm" #: pretix/base/modelimport_orders.py:450 #: pretix/control/templates/pretixcontrol/checkin/index.html:111 #: pretix/control/templates/pretixcontrol/order/index.html:491 msgid "Ticket code" -msgstr "" +msgstr "Mã vé" #: pretix/base/modelimport_orders.py:451 msgid "Generate automatically" -msgstr "" +msgstr "Tạo tự động" #: pretix/base/modelimport_orders.py:460 msgid "You cannot assign a position secret that already exists." -msgstr "" +msgstr "Bạn không thể gán một bí mật vị trí đã tồn tại." #: pretix/base/modelimport_orders.py:491 msgid "Please enter a valid language code." -msgstr "" +msgstr "Vui lòng nhập mã ngôn ngữ hợp lệ." #: pretix/base/modelimport_orders.py:559 pretix/base/modelimport_orders.py:561 msgid "Please enter a valid sales channel." -msgstr "" +msgstr "Vui lòng nhập một kênh bán hàng hợp lệ." #: pretix/base/modelimport_orders.py:585 #: pretix/base/modelimport_vouchers.py:291 msgid "Multiple matching seats were found." -msgstr "" +msgstr "Nhiều ghế phù hợp đã được tìm thấy." #: pretix/base/modelimport_orders.py:587 #: pretix/base/modelimport_vouchers.py:293 msgid "No matching seat was found." -msgstr "" +msgstr "Không tìm thấy chỗ ngồi phù hợp." #: pretix/base/modelimport_orders.py:590 #: pretix/base/modelimport_vouchers.py:296 pretix/base/services/cart.py:213 @@ -3561,11 +3630,11 @@ msgstr "" #: pretix/base/services/modelimport.py:246 msgid "" "The seat you selected has already been taken. Please select a different seat." -msgstr "" +msgstr "Ghế bạn đã chọn đã được thực hiện." #: pretix/base/modelimport_orders.py:593 pretix/base/services/cart.py:210 msgid "You need to select a specific seat." -msgstr "" +msgstr "Bạn cần chọn một chỗ ngồi cụ thể." #: pretix/base/modelimport_orders.py:647 pretix/base/models/items.py:1671 #: pretix/base/models/items.py:1766 pretix/control/forms/item.py:149 @@ -3573,101 +3642,102 @@ msgstr "" #: pretix/control/templates/pretixcontrol/items/question_edit.html:17 #: pretix/control/templates/pretixcontrol/items/questions.html:21 msgid "Question" -msgstr "" +msgstr "Câu hỏi" #: pretix/base/modelimport_orders.py:657 pretix/base/modelimport_orders.py:665 #: pretix/base/models/items.py:1830 pretix/base/models/items.py:1848 msgid "Invalid option selected." -msgstr "" +msgstr "Tùy chọn không hợp lệ được chọn." #: pretix/base/modelimport_orders.py:659 pretix/base/modelimport_orders.py:667 msgid "Ambiguous option selected." -msgstr "" +msgstr "Tùy chọn mơ hồ được chọn." #: pretix/base/modelimport_orders.py:698 pretix/base/models/orders.py:239 #: pretix/control/forms/orders.py:696 pretix/control/forms/organizer.py:844 msgid "Customer" -msgstr "" +msgstr "Khách hàng" #: pretix/base/modelimport_orders.py:711 msgid "No matching customer was found." -msgstr "" +msgstr "Không có khách hàng phù hợp được tìm thấy." #: pretix/base/modelimport_vouchers.py:50 pretix/base/models/vouchers.py:488 msgid "A voucher with this code already exists." -msgstr "" +msgstr "Một chứng từ với mã này đã tồn tại." #: pretix/base/modelimport_vouchers.py:68 pretix/base/models/memberships.py:57 #: pretix/base/models/vouchers.py:196 pretix/control/views/vouchers.py:120 #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:52 msgid "Maximum usages" -msgstr "" +msgstr "Sử dụng tối đa" #: pretix/base/modelimport_vouchers.py:79 msgid "The maximum number of usages must be set." -msgstr "" +msgstr "Số lượng sử dụng tối đa phải được đặt." #: pretix/base/modelimport_vouchers.py:88 pretix/base/models/vouchers.py:205 msgid "Minimum usages" -msgstr "" +msgstr "Sử dụng tối thiểu" #: pretix/base/modelimport_vouchers.py:103 pretix/base/models/vouchers.py:213 msgid "Maximum discount budget" -msgstr "" +msgstr "Ngân sách giảm giá tối đa" #: pretix/base/modelimport_vouchers.py:119 pretix/base/models/vouchers.py:225 #: pretix/control/forms/filter.py:2103 msgid "Reserve ticket from quota" -msgstr "" +msgstr "Vé dự trữ từ hạn ngạch" #: pretix/base/modelimport_vouchers.py:127 pretix/base/models/vouchers.py:233 msgid "Allow to bypass quota" -msgstr "" +msgstr "Cho phép bỏ qua hạn ngạch" #: pretix/base/modelimport_vouchers.py:135 pretix/base/models/vouchers.py:239 msgid "Price mode" -msgstr "" +msgstr "Chế độ giá" #: pretix/base/modelimport_vouchers.py:150 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Could not parse {value} as a price mode, use one of {options}." msgstr "" +"Không thể phân tích {value} làm chế độ giá, hãy sử dụng một trong {Tùy chọn}." #: pretix/base/modelimport_vouchers.py:160 pretix/base/models/vouchers.py:245 msgid "Voucher value" -msgstr "" +msgstr "Giá trị chứng từ" #: pretix/base/modelimport_vouchers.py:165 msgid "It is pointless to set a value without a price mode." -msgstr "" +msgstr "Việc đặt giá trị không có chế độ giá là vô nghĩa." #: pretix/base/modelimport_vouchers.py:237 pretix/base/models/items.py:2102 #: pretix/base/models/vouchers.py:272 #: pretix/control/templates/pretixcontrol/items/quota_edit.html:8 #: pretix/control/templates/pretixcontrol/items/quota_edit.html:15 msgid "Quota" -msgstr "" +msgstr "Hạn ngạch" #: pretix/base/modelimport_vouchers.py:253 msgid "You cannot specify a quota if you specified a product." -msgstr "" +msgstr "Bạn không thể chỉ định hạn ngạch nếu bạn chỉ định một sản phẩm." #: pretix/base/modelimport_vouchers.py:282 pretix/base/models/vouchers.py:495 msgid "You need to choose a date if you select a seat." -msgstr "" +msgstr "Bạn cần chọn một ngày nếu bạn chọn chỗ ngồi." #: pretix/base/modelimport_vouchers.py:299 pretix/base/models/vouchers.py:513 msgid "You need to choose a specific product if you select a seat." -msgstr "" +msgstr "Bạn cần chọn một sản phẩm cụ thể nếu bạn chọn một chỗ ngồi." #: pretix/base/modelimport_vouchers.py:302 pretix/base/models/vouchers.py:516 msgid "Seat-specific vouchers can only be used once." -msgstr "" +msgstr "Chứng từ dành riêng cho chỗ ngồi chỉ có thể được sử dụng một lần." #: pretix/base/modelimport_vouchers.py:306 pretix/base/models/vouchers.py:519 #, python-brace-format msgid "You need to choose the product \"{prod}\" for this seat." -msgstr "" +msgstr "Bạn cần chọn sản phẩm \"{prod} \" cho ghế này." #: pretix/base/modelimport_vouchers.py:318 pretix/base/models/vouchers.py:285 #: pretix/control/templates/pretixcontrol/vouchers/index.html:129 @@ -3678,45 +3748,47 @@ msgstr "" #: pretix/base/modelimport_vouchers.py:334 pretix/base/models/vouchers.py:297 msgid "Shows hidden products that match this voucher" -msgstr "" +msgstr "Hiển thị các sản phẩm ẩn phù hợp với chứng từ này" #: pretix/base/modelimport_vouchers.py:343 pretix/base/models/vouchers.py:301 msgid "Offer all add-on products for free when redeeming this voucher" -msgstr "" +msgstr "Cung cấp tất cả các sản phẩm bổ trợ miễn phí khi đổi phiếu mua hàng này" #: pretix/base/modelimport_vouchers.py:351 pretix/base/models/vouchers.py:305 msgid "" "Include all bundled products without a designated price when redeeming this " "voucher" msgstr "" +"Bao gồm tất cả các sản phẩm đi kèm mà không có giá được chỉ định khi đổi " +"phiếu mua hàng này" #: pretix/base/models/auth.py:248 msgid "Is active" -msgstr "" +msgstr "đang hoạt động" #: pretix/base/models/auth.py:250 msgid "Is site admin" -msgstr "" +msgstr "Là quản trị viên trang web" #: pretix/base/models/auth.py:252 msgid "Date joined" -msgstr "" +msgstr "Ngày tham gia" #: pretix/base/models/auth.py:254 msgid "Force user to select a new password" -msgstr "" +msgstr "Buộc người dùng chọn mật khẩu mới" #: pretix/base/models/auth.py:264 msgid "Two-factor authentication is required to log in" -msgstr "" +msgstr "Xác thực hai yếu tố được yêu cầu để đăng nhập" #: pretix/base/models/auth.py:268 msgid "Receive notifications according to my settings below" -msgstr "" +msgstr "Nhận thông báo theo cài đặt của tôi bên dưới" #: pretix/base/models/auth.py:269 msgid "If turned off, you will not get any notifications." -msgstr "" +msgstr "Nếu tắt, bạn sẽ không nhận được bất kỳ thông báo nào." #: pretix/base/models/auth.py:283 #: pretix/control/templates/pretixcontrol/orders/bulk_action.html:23 @@ -3728,31 +3800,31 @@ msgstr "" #: pretix/control/templates/pretixcontrol/users/form.html:6 #: pretix/control/views/organizer.py:158 tests/base/test_mail.py:149 msgid "User" -msgstr "" +msgstr "Người dùng" #: pretix/base/models/auth.py:284 pretix/control/navigation.py:411 #: pretix/control/templates/pretixcontrol/users/index.html:5 #: pretix/control/templates/pretixcontrol/users/index.html:7 msgid "Users" -msgstr "" +msgstr "Người dùng" #: pretix/base/models/auth.py:342 msgid "Account information changed" -msgstr "" +msgstr "Thông tin tài khoản đã thay đổi" #: pretix/base/models/auth.py:360 #: pretix/control/templates/pretixcontrol/auth/forgot.html:7 msgid "Password recovery" -msgstr "" +msgstr "Phục hồi mật khẩu" #: pretix/base/models/checkin.py:55 msgid "All products (including newly created ones)" -msgstr "" +msgstr "Tất cả các sản phẩm (bao gồm cả sản phẩm mới được tạo)" #: pretix/base/models/checkin.py:56 pretix/plugins/badges/exporters.py:436 #: pretix/plugins/checkinlists/exporters.py:850 msgid "Limit to products" -msgstr "" +msgstr "Giới hạn cho sản phẩm" #: pretix/base/models/checkin.py:60 msgid "" @@ -3760,37 +3832,41 @@ msgid "" "and valid for check-in regardless of which date they are purchased for. You " "can limit their validity through the advanced check-in rules, though." msgstr "" +"Nếu bạn chọn \"Tất cả ngày \", vé sẽ được coi là một phần của danh sách này " +"và hợp lệ để nhận phòng bất kể ngày nào họ được mua." #: pretix/base/models/checkin.py:65 msgctxt "checkin" msgid "Ignore check-ins on this list in statistics" -msgstr "" +msgstr "Bỏ qua các lần đăng ký trong danh sách này trong Thống kê" #: pretix/base/models/checkin.py:69 msgctxt "checkin" msgid "Tickets with a check-in on this list should be considered \"used\"" -msgstr "" +msgstr "Vé có nhận phòng trong danh sách này nên được coi là \"được sử dụng \"" #: 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 "Điều này có liên quan trong các tình huống khác nhau, ví dụ:" #: pretix/base/models/checkin.py:74 msgctxt "checkin" msgid "Include pending orders" -msgstr "" +msgstr "Bao gồm các đơn đặt hàng đang chờ xử lý" #: pretix/base/models/checkin.py:76 msgid "" "With this option, people will be able to check in even if the order has not " "been paid." msgstr "" +"Với tùy chọn này, mọi người sẽ có thể kiểm tra ngay cả khi đơn đặt hàng chưa " +"được thanh toán." #: pretix/base/models/checkin.py:79 msgid "Allow checking in add-on tickets by scanning the main ticket" -msgstr "" +msgstr "Cho phép kiểm tra vé bổ sung bằng cách quét vé chính" #: pretix/base/models/checkin.py:81 msgid "" @@ -3798,6 +3874,8 @@ msgid "" "there is always exactly one matching add-on ticket. Ambiguous scans will be " "rejected.." msgstr "" +"Việc quét sẽ chỉ có thể nếu danh sách nhận phòng được cấu hình sao cho luôn " +"có chính xác một vé bổ sung phù hợp." #: pretix/base/models/checkin.py:85 pretix/control/navigation.py:640 #: pretix/control/templates/pretixcontrol/organizers/gates.html:5 @@ -3809,23 +3887,25 @@ msgid "" "Does not have any effect for the validation of tickets, only for the " "automatic configuration of check-in devices." msgstr "" +"Không có bất kỳ ảnh hưởng nào cho việc xác thực vé, chỉ cho cấu hình tự động " +"của các thiết bị đăng ký." #: pretix/base/models/checkin.py:90 msgid "Allow re-entering after an exit scan" -msgstr "" +msgstr "Cho phép nhập lại sau khi quét thoát" #: pretix/base/models/checkin.py:94 msgid "Allow multiple entries per ticket" -msgstr "" +msgstr "Cho phép nhiều mục cho mỗi vé" #: pretix/base/models/checkin.py:95 msgid "" "Use this option to turn off warnings if a ticket is scanned a second time." -msgstr "" +msgstr "Sử dụng tùy chọn này để tắt cảnh báo nếu vé được quét lần thứ hai." #: pretix/base/models/checkin.py:99 msgid "Automatically check out everyone at" -msgstr "" +msgstr "Tự động kiểm tra mọi người tại" #: pretix/base/models/checkin.py:336 msgid "Entry" @@ -3845,7 +3925,7 @@ msgstr "Vé chưa thanh toán" #: pretix/base/models/checkin.py:357 msgid "Forbidden by custom rule" -msgstr "" +msgstr "bị cấm bởi quy tắc tùy chỉnh" #: pretix/base/models/checkin.py:358 msgid "Ticket code revoked/changed" @@ -3869,7 +3949,7 @@ msgstr "Mã vé không rõ ràng trong danh sách" #: pretix/base/models/checkin.py:363 msgid "Server error" -msgstr "" +msgstr "Lỗi máy chủ" #: pretix/base/models/checkin.py:364 msgid "Ticket blocked" @@ -3885,15 +3965,15 @@ msgstr "Vé không hợp lệ tại thời điểm này" #: pretix/base/models/customers.py:55 msgid "Provider name" -msgstr "" +msgstr "Tên nhà cung cấp" #: pretix/base/models/customers.py:60 msgid "Login button label" -msgstr "" +msgstr "Nhãn nút đăng nhập" #: pretix/base/models/customers.py:64 msgid "Single-sign-on method" -msgstr "" +msgstr "Phương thức ký hiệu đơn" #: pretix/base/models/customers.py:85 pretix/base/models/devices.py:71 #: pretix/base/models/items.py:1676 pretix/base/models/items.py:1933 @@ -3901,12 +3981,16 @@ msgid "" "You can enter any value here to make it easier to match the data with other " "sources. If you do not input one, we will generate one automatically." msgstr "" +"Bạn có thể nhập bất kỳ giá trị nào vào đây để giúp đối sánh dữ liệu với các " +"nguồn khác dễ dàng hơn." #: pretix/base/models/customers.py:90 msgid "" "The identifier may only contain letters, numbers, dots, dashes, and " "underscores. It must start and end with a letter or number." msgstr "" +"Mã định danh chỉ có thể chứa các chữ cái, số, dấu chấm, dấu gạch ngang và " +"gạch dưới." #: pretix/base/models/customers.py:195 pretix/control/forms/filter.py:1500 #: pretix/control/forms/filter.py:1572 @@ -3915,46 +3999,46 @@ msgstr "" #: pretix/control/templates/pretixcontrol/organizers/giftcard_acceptance_list.html:135 #: pretix/control/templates/pretixcontrol/organizers/reusable_medium.html:35 msgid "disabled" -msgstr "" +msgstr "Vô hiệu hóa" #: pretix/base/models/customers.py:310 pretix/base/models/orders.py:1538 #: pretix/base/models/orders.py:3269 pretix/base/settings.py:1112 msgid "Company name" -msgstr "" +msgstr "Tên công ty" #: pretix/base/models/customers.py:314 pretix/base/models/orders.py:1542 #: pretix/base/models/orders.py:3276 pretix/base/settings.py:83 #: pretix/plugins/stripe/payment.py:272 msgid "Select country" -msgstr "" +msgstr "Chọn quốc gia" #: pretix/base/models/customers.py:381 msgctxt "openidconnect" msgid "Confidential" -msgstr "" +msgstr "Bảo mật" #: pretix/base/models/customers.py:382 msgctxt "openidconnect" msgid "Public" -msgstr "" +msgstr "công khai" #: pretix/base/models/customers.py:388 msgctxt "openidconnect" msgid "Authorization code" -msgstr "" +msgstr "Mã ủy quyền" #: pretix/base/models/customers.py:389 msgctxt "openidconnect" msgid "Implicit" -msgstr "" +msgstr "ẩn" #: pretix/base/models/customers.py:393 msgid "OpenID Connect access (required)" -msgstr "" +msgstr "Truy cập OpenID Connect (Yêu cầu)" #: pretix/base/models/customers.py:394 msgid "Profile data (name, addresses)" -msgstr "" +msgstr "Dữ liệu hồ sơ (tên, địa chỉ)" #: pretix/base/models/customers.py:414 #, fuzzy @@ -3964,27 +4048,27 @@ msgstr "ID người dùng" #: pretix/base/models/customers.py:417 msgid "Grant type" -msgstr "" +msgstr "Loại cấp" #: pretix/base/models/customers.py:420 msgid "Require PKCE extension" -msgstr "" +msgstr "Yêu cầu mở rộng PKCE" #: pretix/base/models/customers.py:432 msgid "Allowed access scopes" -msgstr "" +msgstr "Phạm vi truy cập được phép" #: pretix/base/models/customers.py:433 msgid "Separate multiple values with spaces" -msgstr "" +msgstr "Tách nhiều giá trị với khoảng trống" #: pretix/base/models/devices.py:70 pretix/base/models/items.py:1675 msgid "Internal identifier" -msgstr "" +msgstr "Định danh nội bộ" #: pretix/base/models/devices.py:90 pretix/base/models/items.py:1788 msgid "This identifier is already used for a different question." -msgstr "" +msgstr "Mã định danh này đã được sử dụng cho một câu hỏi khác." #: pretix/base/models/devices.py:113 pretix/control/forms/checkin.py:196 #: pretix/control/forms/checkin.py:217 pretix/control/forms/filter.py:2394 @@ -3998,40 +4082,40 @@ msgstr "Cổng" #: pretix/base/models/devices.py:131 #: pretix/control/templates/pretixcontrol/organizers/devices.html:83 msgid "Setup date" -msgstr "" +msgstr "Ngày thiết lập" #: pretix/base/models/devices.py:134 msgid "Initialization date" -msgstr "" +msgstr "Ngày khởi tạo" #: pretix/base/models/discount.py:49 msgctxt "subevent" msgid "Dates can be mixed without limitation" -msgstr "" +msgstr "Ngày có thể được trộn lẫn mà không giới hạn" #: pretix/base/models/discount.py:50 msgctxt "subevent" msgid "All matching products must be for the same date" -msgstr "" +msgstr "Tất cả các sản phẩm phù hợp phải có cùng ngày" #: pretix/base/models/discount.py:51 msgctxt "subevent" msgid "Each matching product must be for a different date" -msgstr "" +msgstr "Mỗi sản phẩm phù hợp phải dành cho một ngày khác nhau" #: pretix/base/models/discount.py:69 pretix/base/models/items.py:1161 #: pretix/base/models/items.py:1481 pretix/base/models/items.py:1708 #: pretix/base/models/organizer.py:553 msgid "Position" -msgstr "" +msgstr "Vị trí" #: pretix/base/models/discount.py:72 msgid "All supported sales channels" -msgstr "" +msgstr "Tất cả các kênh bán hàng được hỗ trợ" #: pretix/base/models/discount.py:93 msgid "Event series handling" -msgstr "" +msgstr "Xử lý chuỗi sự kiện" #: pretix/base/models/discount.py:101 #, fuzzy @@ -4041,19 +4125,19 @@ msgstr "Tất cả các sự kiện (bao gồm cả sự kiện mới tạo)" #: pretix/base/models/discount.py:105 msgid "Apply to specific products" -msgstr "" +msgstr "Áp dụng cho các sản phẩm cụ thể" #: pretix/base/models/discount.py:110 msgid "Count add-on products" -msgstr "" +msgstr "Đếm sản phẩm bổ sung" #: pretix/base/models/discount.py:111 pretix/base/models/discount.py:166 msgid "Discounts never apply to bundled products" -msgstr "" +msgstr "Giảm giá không bao giờ áp dụng cho các sản phẩm đi kèm" #: pretix/base/models/discount.py:115 pretix/base/models/discount.py:170 msgid "Ignore products discounted by a voucher" -msgstr "" +msgstr "Bỏ qua các sản phẩm được giảm giá bởi một chứng từ" #: pretix/base/models/discount.py:116 msgid "" @@ -4062,18 +4146,20 @@ msgid "" "use a voucher only to e.g. unlock a hidden product or gain access to sold-" "out quota will still be considered." msgstr "" +"Nếu tùy chọn này được kiểm tra, các sản phẩm đã được giảm giá thông qua " +"chứng từ sẽ không được xem xét cho giảm giá này." #: pretix/base/models/discount.py:121 msgid "Minimum number of matching products" -msgstr "" +msgstr "Số lượng sản phẩm phù hợp tối thiểu" #: pretix/base/models/discount.py:125 msgid "Minimum gross value of matching products" -msgstr "" +msgstr "Tổng giá trị tối thiểu của các sản phẩm phù hợp" #: pretix/base/models/discount.py:133 msgid "Apply discount to same set of products" -msgstr "" +msgstr "Áp dụng giảm giá cho cùng một bộ sản phẩm" #: pretix/base/models/discount.py:134 msgid "" @@ -4081,18 +4167,20 @@ msgid "" "than the condition for the discount given above. If you want, you can " "however also select a different selection of products." msgstr "" +"Theo mặc định, giảm giá được áp dụng trên cùng một lựa chọn sản phẩm so với " +"điều kiện giảm giá ở trên." #: pretix/base/models/discount.py:140 msgid "Apply discount to specific products" -msgstr "" +msgstr "Áp dụng giảm giá cho các sản phẩm cụ thể" #: pretix/base/models/discount.py:145 msgid "Percentual discount on matching products" -msgstr "" +msgstr "Giảm giá phần trăm cho các sản phẩm phù hợp" #: pretix/base/models/discount.py:152 msgid "Apply discount only to this number of matching products" -msgstr "" +msgstr "Chỉ áp dụng giảm giá cho số lượng sản phẩm phù hợp này" #: pretix/base/models/discount.py:154 msgid "" @@ -4103,10 +4191,11 @@ msgid "" "discounted. If you want to grant the discount on all matching products, keep " "this field empty." msgstr "" +"Tùy chọn này cho phép bạn tạo giảm giá loại \"Mua x Nhận Y giảm/miễn phí \"." #: pretix/base/models/discount.py:165 msgid "Apply to add-on products" -msgstr "" +msgstr "Áp dụng cho các sản phẩm bổ sung" #: pretix/base/models/discount.py:171 msgid "" @@ -4115,54 +4204,65 @@ msgid "" "to e.g. unlock a hidden product or gain access to sold-out quota will still " "receive the discount." msgstr "" +"Nếu tùy chọn này được kiểm tra, các sản phẩm đã được giảm giá thông qua " +"chứng từ sẽ không được giảm giá." #: pretix/base/models/discount.py:177 msgctxt "subevent" msgid "Available for dates starting from" -msgstr "" +msgstr "Có sẵn cho ngày bắt đầu từ" #: pretix/base/models/discount.py:182 msgctxt "subevent" msgid "Available for dates starting until" -msgstr "" +msgstr "Có sẵn cho ngày bắt đầu cho đến khi" #: pretix/base/models/discount.py:214 msgid "" "You can either set a minimum number of matching products or a minimum value, " "not both." msgstr "" +"Bạn có thể đặt số lượng sản phẩm phù hợp tối thiểu hoặc giá trị tối thiểu, " +"không phải cả hai." #: pretix/base/models/discount.py:219 msgid "" "You need to either set a minimum number of matching products or a minimum " "value." -msgstr "" +msgstr "Bạn cần đặt số lượng sản phẩm phù hợp tối thiểu hoặc giá trị tối thiểu." #: pretix/base/models/discount.py:224 msgid "" "You cannot apply the discount only to some of the matched products if you " "are matching on a minimum value." msgstr "" +"Bạn không thể áp dụng giảm giá chỉ cho một số sản phẩm phù hợp nếu bạn phù " +"hợp với giá trị tối thiểu." #: pretix/base/models/discount.py:230 msgid "" "You cannot apply the discount only to bookings of different dates if you are " "matching on a minimum value." msgstr "" +"Bạn không thể áp dụng giảm giá chỉ cho các ngày của các ngày khác nhau nếu " +"bạn phù hợp với giá trị tối thiểu." #: pretix/base/models/discount.py:237 msgid "" "You cannot apply the discount to a different set of products if the discount " "is only valid for bookings of different dates." msgstr "" +"Bạn không thể áp dụng giảm giá cho một bộ sản phẩm khác nếu giảm giá chỉ có " +"giá trị cho việc đặt các ngày khác nhau." #: pretix/base/models/event.py:88 msgid "The end of the presale period has to be later than its start." msgstr "" +"Sự kết thúc của giai đoạn bán trước phải muộn hơn so với sự khởi đầu của nó." #: pretix/base/models/event.py:90 msgid "The end of the event has to be later than its start." -msgstr "" +msgstr "Sự kết thúc của sự kiện phải muộn hơn so với sự khởi đầu của nó." #: pretix/base/models/event.py:577 msgid "" @@ -4172,46 +4272,52 @@ msgid "" "you can also choose to use a random value. This will be used in URLs, order " "codes, invoice numbers, and bank transfer references." msgstr "" +"Nên ngắn, chỉ chứa các chữ cái, số, dấu chấm và dấu gạch ngang, và phải là " +"duy nhất trong số các sự kiện của bạn." #: pretix/base/models/event.py:584 pretix/base/models/organizer.py:87 msgid "The slug may only contain letters, numbers, dots and dashes." -msgstr "" +msgstr "Slug chỉ có thể chứa các chữ cái, số, chấm và dấu gạch ngang." #: pretix/base/models/event.py:601 pretix/base/models/event.py:1482 msgid "Show in lists" -msgstr "" +msgstr "Hiển thị trong danh sách" #: pretix/base/models/event.py:602 msgid "" "If selected, this event will show up publicly on the list of events for your " "organizer account." msgstr "" +"Nếu được chọn, sự kiện này sẽ hiển thị công khai trong danh sách các sự kiện " +"cho tài khoản tổ chức của bạn." #: pretix/base/models/event.py:606 pretix/base/models/event.py:1497 #: pretix/control/forms/subevents.py:100 msgid "" "Optional. No products will be sold after this date. If you do not set this " "value, the presale will end after the end date of your event." -msgstr "" +msgstr "Tùy chọn." #: pretix/base/models/event.py:612 pretix/base/models/event.py:1503 #: pretix/control/forms/subevents.py:94 msgid "Optional. No products will be sold before this date." -msgstr "" +msgstr "Tùy chọn." #: pretix/base/models/event.py:621 msgid "This event is remote or partially remote." -msgstr "" +msgstr "Sự kiện này là từ xa hoặc từ xa một phần." #: pretix/base/models/event.py:622 msgid "" "This will be used to let users know if the event is in a different timezone " "and let’s us calculate users’ local times." msgstr "" +"Điều này sẽ được sử dụng để cho người dùng biết nếu sự kiện này ở trong một " +"múi giờ khác và hãy để chúng tôi tính toán số giờ địa phương của người dùng." #: pretix/base/models/event.py:642 pretix/control/navigation.py:65 msgid "Plugins" -msgstr "" +msgstr "plugin" #: pretix/base/models/event.py:649 pretix/base/pdf.py:229 #: pretix/control/forms/event.py:274 pretix/control/forms/filter.py:1677 @@ -4223,20 +4329,20 @@ msgstr "" #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:7 #: pretix/presale/views/widget.py:707 msgid "Event series" -msgstr "" +msgstr "Chuỗi sự kiện" #: pretix/base/models/event.py:653 pretix/base/models/event.py:1531 msgid "Seating plan" -msgstr "" +msgstr "Kế hoạch chỗ ngồi" #: pretix/base/models/event.py:660 pretix/base/models/items.py:675 msgid "Sell on all sales channels" -msgstr "" +msgstr "Bán trên tất cả các kênh bán hàng" #: pretix/base/models/event.py:665 pretix/base/models/items.py:680 #: pretix/base/models/items.py:1230 pretix/base/payment.py:417 msgid "Restrict to specific sales channels" -msgstr "" +msgstr "Hạn chế các kênh bán hàng cụ thể" #: pretix/base/models/event.py:673 pretix/control/navigation.py:344 #: pretix/control/navigation.py:470 @@ -4249,129 +4355,142 @@ msgstr "" #: pretix/plugins/reports/accountingreport.py:104 #: pretix/plugins/reports/accountingreport.py:107 msgid "Events" -msgstr "" +msgstr "Sự kiện" #: pretix/base/models/event.py:1310 msgid "" "You have configured at least one paid product but have not enabled any " "payment methods." msgstr "" +"Bạn đã cấu hình ít nhất một sản phẩm trả phí nhưng không kích hoạt bất kỳ " +"phương thức thanh toán nào." #: pretix/base/models/event.py:1313 msgid "" "You have configured at least one paid product but have not configured a " "currency." msgstr "" +"Bạn đã cấu hình ít nhất một sản phẩm trả phí nhưng chưa cấu hình tiền tệ." #: pretix/base/models/event.py:1316 msgid "You need to configure at least one quota to sell anything." -msgstr "" +msgstr "Bạn cần cấu hình ít nhất một hạn ngạch để bán bất cứ thứ gì." #: pretix/base/models/event.py:1321 #, python-brace-format msgid "You need to fill the meta parameter \"{property}\"." -msgstr "" +msgstr "Bạn cần điền vào tham số meta \"{property} \"." #: pretix/base/models/event.py:1428 msgid "" "Once created an event cannot change between an series and a single event." msgstr "" +"Sau khi tạo ra một sự kiện không thể thay đổi giữa một chuỗi và một sự kiện " +"duy nhất." #: pretix/base/models/event.py:1434 msgid "The event slug cannot be changed." -msgstr "" +msgstr "Không thể thay đổi sên sự kiện." #: pretix/base/models/event.py:1437 msgid "This slug has already been used for a different event." -msgstr "" +msgstr "Sên này đã được sử dụng cho một sự kiện khác." #: pretix/base/models/event.py:1443 msgid "The event cannot end before it starts." -msgstr "" +msgstr "Sự kiện không thể kết thúc trước khi nó bắt đầu." #: pretix/base/models/event.py:1449 msgid "The event's presale cannot end before it starts." -msgstr "" +msgstr "Việc bán trước của sự kiện không thể kết thúc trước khi nó bắt đầu." #: pretix/base/models/event.py:1479 msgid "" "Only with this checkbox enabled, this date is visible in the frontend to " "users." msgstr "" +"Chỉ với hộp kiểm này được bật, ngày này có thể hiển thị ở phía trước cho " +"người dùng." #: pretix/base/models/event.py:1483 msgid "" "If selected, this event will show up publicly on the list of dates for your " "event." msgstr "" +"Nếu được chọn, sự kiện này sẽ hiển thị công khai trong danh sách các ngày " +"cho sự kiện của bạn." #: pretix/base/models/event.py:1528 pretix/base/settings.py:3064 msgid "Frontpage text" -msgstr "" +msgstr "Văn bản phía trước" #: pretix/base/models/event.py:1545 msgid "Date in event series" -msgstr "" +msgstr "Ngày trong chuỗi sự kiện" #: pretix/base/models/event.py:1546 msgid "Dates in event series" -msgstr "" +msgstr "Ngày trong chuỗi sự kiện" #: pretix/base/models/event.py:1691 msgid "One or more variations do not belong to this event." -msgstr "" +msgstr "Một hoặc nhiều biến thể không thuộc về sự kiện này." #: pretix/base/models/event.py:1721 pretix/base/models/items.py:2217 msgid "Can not contain spaces or special characters except underscores" -msgstr "" +msgstr "Không thể chứa khoảng trắng hoặc ký tự đặc biệt ngoại trừ nhấn mạnh" #: pretix/base/models/event.py:1726 pretix/base/models/items.py:2222 msgid "The property name may only contain letters, numbers and underscores." -msgstr "" +msgstr "Tên thuộc tính chỉ có thể chứa các chữ cái, số và nhấn mạnh." #: pretix/base/models/event.py:1731 msgid "Default value" -msgstr "" +msgstr "Giá trị mặc định" #: pretix/base/models/event.py:1733 #: pretix/control/templates/pretixcontrol/organizers/properties.html:50 msgid "Can only be changed by organizer-level administrators" -msgstr "" +msgstr "Chỉ có thể thay đổi bởi các quản trị viên cấp tổ chức" #: pretix/base/models/event.py:1735 msgid "Required for events" -msgstr "" +msgstr "Cần thiết cho các sự kiện" #: pretix/base/models/event.py:1736 msgid "" "If checked, an event can only be taken live if the property is set. In event " "series, its always optional to set a value for individual dates" msgstr "" +"Nếu được kiểm tra, một sự kiện chỉ có thể được thực hiện trực tiếp nếu tài " +"sản được đặt." #: pretix/base/models/event.py:1742 pretix/base/models/items.py:2234 msgid "Valid values" -msgstr "" +msgstr "Giá trị hợp lệ" #: pretix/base/models/event.py:1745 #: pretix/control/templates/pretixcontrol/organizers/properties.html:45 msgid "Show filter option to customers" -msgstr "" +msgstr "Hiển thị tùy chọn bộ lọc cho khách hàng" #: pretix/base/models/event.py:1746 msgid "" "This field will be shown to filter events in the public event list and " "calendar." msgstr "" +"Trường này sẽ được hiển thị để lọc các sự kiện trong danh sách sự kiện công " +"cộng và lịch." #: pretix/base/models/event.py:1749 pretix/control/forms/organizer.py:269 #: pretix/control/forms/organizer.py:273 msgid "Public name" -msgstr "" +msgstr "Tên công cộng" #: pretix/base/models/event.py:1753 #: pretix/control/templates/pretixcontrol/organizers/properties.html:40 msgid "Can be used for filtering" -msgstr "" +msgstr "có thể được sử dụng để lọc" #: pretix/base/models/event.py:1754 msgid "" @@ -4379,40 +4498,45 @@ msgid "" "can also be used for hidden filter parameters in the frontend (e.g. using " "the widget)." msgstr "" +"Trường này sẽ được hiển thị để lọc các sự kiện hoặc báo cáo trong phần phụ " +"trợ và nó cũng có thể được sử dụng cho các tham số bộ lọc ẩn ở phía trước (" +"ví dụ: sử dụng tiện ích)." #: pretix/base/models/event.py:1764 msgid "A property can either be required or have a default value, not both." msgstr "" +"Một thuộc tính có thể được yêu cầu hoặc có giá trị mặc định, không phải cả " +"hai." #: pretix/base/models/event.py:1844 pretix/base/models/organizer.py:516 msgid "Link text" -msgstr "" +msgstr "văn bản liên kết" #: pretix/base/models/event.py:1847 pretix/base/models/organizer.py:519 msgid "Link URL" -msgstr "" +msgstr "Liên kết URL" #: pretix/base/models/exports.py:42 pretix/control/navigation.py:229 #: pretix/control/navigation.py:650 msgid "Export" -msgstr "" +msgstr "Xuất khẩu" #: pretix/base/models/exports.py:59 msgid "Additional recipients" -msgstr "" +msgstr "Người nhận bổ sung" #: pretix/base/models/exports.py:61 pretix/base/models/exports.py:66 #: pretix/base/models/exports.py:71 msgid "You can specify multiple recipients separated by commas." -msgstr "" +msgstr "Bạn có thể chỉ định nhiều người nhận được phân tách bằng dấu phẩy." #: pretix/base/models/exports.py:64 msgid "Additional recipients (Cc)" -msgstr "" +msgstr "Người nhận bổ sung (CC)" #: pretix/base/models/exports.py:69 msgid "Additional recipients (Bcc)" -msgstr "" +msgstr "Người nhận bổ sung (BCC)" #: pretix/base/models/exports.py:74 pretix/control/forms/event.py:1101 #: pretix/control/forms/event.py:1175 pretix/control/forms/event.py:1185 @@ -4423,7 +4547,7 @@ msgstr "" #: pretix/plugins/sendmail/forms.py:57 pretix/plugins/sendmail/forms.py:73 #: pretix/plugins/sendmail/models.py:248 msgid "Subject" -msgstr "" +msgstr "Chủ đề" #: pretix/base/models/exports.py:78 pretix/control/forms/orders.py:759 #: pretix/control/forms/orders.py:782 pretix/control/forms/orders.py:950 @@ -4431,44 +4555,46 @@ msgstr "" #: pretix/plugins/sendmail/forms.py:58 pretix/plugins/sendmail/forms.py:78 #: pretix/plugins/sendmail/models.py:249 msgid "Message" -msgstr "" +msgstr "Tin nhắn" #: pretix/base/models/exports.py:85 msgid "Requested start time" -msgstr "" +msgstr "Thời gian bắt đầu được yêu cầu" #: pretix/base/models/exports.py:86 msgid "The actual start time might be delayed depending on system load." msgstr "" +"Thời gian bắt đầu thực tế có thể bị trì hoãn tùy thuộc vào tải hệ thống." #: pretix/base/models/fields.py:33 msgid "No value can contain the delimiter character." -msgstr "" +msgstr "Không có giá trị nào có thể chứa ký tự phân cách." #: pretix/base/models/giftcards.py:81 #: pretix/control/templates/pretixcontrol/organizers/giftcard.html:50 msgid "Owned by ticket holder" -msgstr "" +msgstr "Được sở hữu bởi người giữ vé" #: pretix/base/models/giftcards.py:93 msgid "The gift card code may only contain letters, numbers, dots and dashes." msgstr "" +"Mã thẻ quà tặng chỉ có thể chứa các chữ cái, số, dấu chấm và dấu gạch ngang." #: pretix/base/models/giftcards.py:105 #: pretix/control/templates/pretixcontrol/organizers/giftcard.html:39 msgctxt "giftcard" msgid "Special terms and conditions" -msgstr "" +msgstr "Điều khoản và điều kiện đặc biệt" #: pretix/base/models/giftcards.py:219 pretix/base/models/giftcards.py:223 msgid "Manual transaction" -msgstr "" +msgstr "Giao dịch thủ công" #: pretix/base/models/invoices.py:185 #, python-format msgctxt "invoice" msgid "Tax ID: %s" -msgstr "" +msgstr "ID thuế: %s" #: pretix/base/models/invoices.py:191 pretix/base/services/invoices.py:139 #, python-format @@ -4478,143 +4604,148 @@ msgstr "" #: pretix/base/models/items.py:93 msgid "Category name" -msgstr "" +msgstr "Tên danh mục" #: pretix/base/models/items.py:97 pretix/base/models/items.py:484 msgid "" "If you set this, this will be used instead of the public name in the backend." msgstr "" +"Nếu bạn đặt cái này, điều này sẽ được sử dụng thay vì tên công khai trong " +"phần phụ trợ." #: pretix/base/models/items.py:101 msgid "Category description" -msgstr "" +msgstr "Mô tả danh mục" #: pretix/base/models/items.py:108 msgid "Products in this category are add-on products" -msgstr "" +msgstr "Sản phẩm trong danh mục này là sản phẩm bổ sung" #: pretix/base/models/items.py:109 msgid "" "If selected, the products belonging to this category are not for sale on " "their own. They can only be bought in combination with a product that has " "this category configured as a possible source for add-ons." -msgstr "" +msgstr "Nếu được chọn, các sản phẩm thuộc danh mục này không được tự bán." #: pretix/base/models/items.py:114 pretix/base/models/items.py:159 #: pretix/control/forms/item.py:99 msgid "Normal category" -msgstr "" +msgstr "Thể loại bình thường" #: pretix/base/models/items.py:115 pretix/control/forms/item.py:112 msgid "Normal + cross-selling category" -msgstr "" +msgstr "Danh mục bán chéo bình thường" #: pretix/base/models/items.py:116 pretix/control/forms/item.py:107 msgid "Cross-selling category" -msgstr "" +msgstr "Danh mục bán chéo" #: pretix/base/models/items.py:124 msgid "Always show in cross-selling step" -msgstr "" +msgstr "Luôn hiển thị trong bước bán chéo" #: pretix/base/models/items.py:125 msgid "" "Only show products that qualify for a discount according to discount rules" -msgstr "" +msgstr "Chỉ hiển thị các sản phẩm đủ điều kiện giảm giá theo quy tắc giảm giá" #: pretix/base/models/items.py:126 msgid "Only show if the cart contains one of the following products" -msgstr "" +msgstr "Chỉ hiển thị nếu xe đẩy có chứa một trong các sản phẩm sau đây" #: pretix/base/models/items.py:129 msgid "Cross-selling condition" -msgstr "" +msgstr "Điều kiện bán chéo" #: pretix/base/models/items.py:137 msgid "Cross-selling condition products" -msgstr "" +msgstr "Sản phẩm điều kiện bán chéo" #: pretix/base/models/items.py:143 #: pretix/control/templates/pretixcontrol/items/categories.html:3 #: pretix/control/templates/pretixcontrol/items/categories.html:5 #: pretix/control/templates/pretixcontrol/items/categories.html:33 msgid "Product categories" -msgstr "" +msgstr "Danh mục sản phẩm" #: pretix/base/models/items.py:149 -#, python-brace-format +#, fuzzy, python-brace-format msgid "{category} ({category_type})" -msgstr "" +msgstr "{thể loại} ({cated_type})" #: pretix/base/models/items.py:155 msgid "Add-on category" -msgstr "" +msgstr "Danh mục bổ sung" #: pretix/base/models/items.py:222 pretix/base/models/items.py:278 msgid "Disable product for this date" -msgstr "" +msgstr "Tắt sản phẩm cho ngày này" #: pretix/base/models/items.py:226 pretix/base/models/items.py:282 #: pretix/base/models/items.py:564 msgid "This product will not be sold before the given date." -msgstr "" +msgstr "Sản phẩm này sẽ không được bán trước ngày nhất định." #: pretix/base/models/items.py:231 pretix/base/models/items.py:287 #: pretix/base/models/items.py:574 msgid "This product will not be sold after the given date." -msgstr "" +msgstr "Sản phẩm này sẽ không được bán sau ngày nhất định." #: pretix/base/models/items.py:436 msgid "Event validity (default)" -msgstr "" +msgstr "Hiệu lực của sự kiện (mặc định)" #: pretix/base/models/items.py:437 msgid "Fixed time frame" -msgstr "" +msgstr "Khung thời gian cố định" #: pretix/base/models/items.py:438 msgid "Dynamic validity" -msgstr "" +msgstr "Hiệu lực động" #: pretix/base/models/items.py:444 pretix/control/forms/item.py:661 #: pretix/control/templates/pretixcontrol/subevents/fragment_unavail_mode_indicator.html:3 msgid "Hide product if unavailable" -msgstr "" +msgstr "ẩn sản phẩm nếu không có sẵn" #: pretix/base/models/items.py:445 pretix/control/forms/item.py:662 #: pretix/control/templates/pretixcontrol/subevents/fragment_unavail_mode_indicator.html:5 msgid "Show product with info on why it’s unavailable" -msgstr "" +msgstr "Hiển thị sản phẩm với thông tin về lý do tại sao nó không khả dụng" #: pretix/base/models/items.py:456 pretix/base/models/items.py:781 msgid "Don't use re-usable media, use regular one-off tickets" msgstr "" +"Không sử dụng phương tiện có thể sử dụng lại, sử dụng vé một lần thông thường" #: pretix/base/models/items.py:457 msgid "Require an existing medium to be re-used" -msgstr "" +msgstr "Yêu cầu một phương tiện hiện có được sử dụng lại" #: pretix/base/models/items.py:458 msgid "Require a previously unknown medium to be newly added" -msgstr "" +msgstr "Yêu cầu một phương tiện chưa biết trước đây phải được thêm vào mới" #: pretix/base/models/items.py:459 msgid "Require either an existing or a new medium to be used" -msgstr "" +msgstr "Yêu cầu sử dụng phương tiện mới hoặc hiện tại" #: pretix/base/models/items.py:475 pretix/base/models/items.py:1458 msgid "Category" -msgstr "" +msgstr "Thể loại" #: pretix/base/models/items.py:476 msgid "" "If you have many products, you can optionally sort them into categories to " "keep things organized." msgstr "" +"Nếu bạn có nhiều sản phẩm, bạn có thể tùy chọn sắp xếp chúng thành các danh " +"mục để giữ mọi thứ được tổ chức." #: pretix/base/models/items.py:493 msgid "This is shown below the product name in lists." -msgstr "" +msgstr "Điều này được hiển thị bên dưới tên sản phẩm trong danh sách." #: pretix/base/models/items.py:498 msgid "" @@ -4622,6 +4753,8 @@ msgid "" "each of the variations. If a variation does not have a special price or if " "you do not have variations, this price will be used." msgstr "" +"Nếu sản phẩm này có nhiều biến thể, bạn có thể đặt giá khác nhau cho từng " +"biến thể." #: pretix/base/models/items.py:506 msgid "" @@ -4630,11 +4763,11 @@ msgid "" "to enter. You could use this e.g. to collect additional donations for your " "event. This is currently not supported for products that are bought as an " "add-on to other products." -msgstr "" +msgstr "Nếu tùy chọn này hoạt động, người dùng của bạn có thể tự chọn giá." #: pretix/base/models/items.py:512 pretix/base/models/items.py:1176 msgid "Suggested price" -msgstr "" +msgstr "Giá đề xuất" #: pretix/base/models/items.py:513 pretix/base/models/items.py:1177 msgid "" @@ -4642,45 +4775,48 @@ msgid "" "can choose a lower value, but not lower than the price this product would " "have without the free price option. This will be ignored if a voucher is " "used that lowers the price." -msgstr "" +msgstr "Giá này sẽ được sử dụng làm giá trị mặc định của trường đầu vào." #: pretix/base/models/items.py:527 msgid "Whether or not buying this product allows a person to enter your event" msgstr "" +"Việc mua sản phẩm này có cho phép một người tham gia sự kiện của bạn hay " +"không" #: pretix/base/models/items.py:532 msgid "Is a personalized ticket" -msgstr "" +msgstr "Là một vé được cá nhân hóa" #: pretix/base/models/items.py:534 msgid "Whether or not buying this product allows to enter attendee information" msgstr "" +"Việc mua sản phẩm này có cho phép nhập thông tin người tham dự hay không" #: pretix/base/models/items.py:543 msgid "Show a waiting list for this ticket" -msgstr "" +msgstr "Hiển thị danh sách chờ cho vé này" #: pretix/base/models/items.py:544 msgid "This will only work if waiting lists are enabled for this event." -msgstr "" +msgstr "Điều này sẽ chỉ hoạt động nếu danh sách chờ được bật cho sự kiện này." #: pretix/base/models/items.py:548 pretix/base/settings.py:1360 #: pretix/control/forms/event.py:1681 msgid "Show number of tickets left" -msgstr "" +msgstr "Hiển thị số lượng vé còn lại" #: pretix/base/models/items.py:549 msgid "Publicly show how many tickets are still available." -msgstr "" +msgstr "hiển thị công khai có bao nhiêu vé vẫn có sẵn." #: pretix/base/models/items.py:556 pretix/control/forms/item.py:626 msgid "Product picture" -msgstr "" +msgstr "Hình ảnh sản phẩm" #: pretix/base/models/items.py:585 msgctxt "hidden_if_available_legacy" msgid "Only show after sellout of" -msgstr "" +msgstr "Chỉ hiển thị sau khi bán hết" #: pretix/base/models/items.py:586 msgid "" @@ -4690,10 +4826,12 @@ msgid "" "out. There might be a short period in which both products are visible while " "all tickets in the referenced quota are reserved, but not yet sold." msgstr "" +"Nếu bạn chọn một hạn ngạch ở đây, sản phẩm này sẽ chỉ được hiển thị khi hạn " +"ngạch đó không có sẵn." #: pretix/base/models/items.py:596 msgid "Only show after sellout of" -msgstr "" +msgstr "Chỉ hiển thị sau khi bán hết" #: pretix/base/models/items.py:597 msgid "" @@ -4704,12 +4842,16 @@ msgid "" "products are visible while all tickets of the referenced product are " "reserved, but not yet sold." msgstr "" +"Nếu bạn chọn một sản phẩm ở đây, sản phẩm này sẽ chỉ được hiển thị khi sản " +"phẩm đó được bán hết." #: pretix/base/models/items.py:611 msgid "" "To buy this product, the user needs a voucher that applies to this product " "either directly or via a quota." msgstr "" +"Để mua sản phẩm này, người dùng cần một chứng từ áp dụng cho sản phẩm này " +"trực tiếp hoặc qua hạn ngạch." #: pretix/base/models/items.py:617 msgid "" @@ -4718,19 +4860,27 @@ msgid "" "paid and completed. You can use this e.g. for discounted tickets that are " "only available to specific groups." msgstr "" +"Nếu sản phẩm này là một phần của đơn đặt hàng, đơn đặt hàng sẽ được đưa vào " +"trạng thái \"phê duyệt \" và sẽ cần được bạn xác nhận trước khi có thể được " +"thanh toán và hoàn thành." #: pretix/base/models/items.py:624 msgid "" "This product will be hidden from the event page until the user enters a " "voucher that unlocks this product." msgstr "" +"Sản phẩm này sẽ được ẩn khỏi trang sự kiện cho đến khi người dùng nhập phiếu " +"mua hàng mở khóa sản phẩm này." #: pretix/base/models/items.py:630 +#, fuzzy msgid "" "If this option is set, the product will only be sold as part of bundle " "products. Do not check this option if you want to use this " "product as an add-on product, but only for fixed bundles!" msgstr "" +"Nếu tùy chọn này được đặt, sản phẩm sẽ chỉ được bán như một phần của các sản " +"phẩm gói." #: pretix/base/models/items.py:637 msgid "" @@ -4738,6 +4888,8 @@ msgid "" "event apply. If this is unchecked, orders containing this product can not be " "canceled by users but only by you." msgstr "" +"Nếu điều này được kiểm tra, việc hủy bỏ và cài đặt thay đổi thứ tự thông " +"thường của sự kiện này được áp dụng." #: pretix/base/models/items.py:644 msgid "" @@ -4745,6 +4897,8 @@ msgid "" "many times. If you keep the field empty or set it to 0, there is no special " "limit for this product." msgstr "" +"Sản phẩm này chỉ có thể được mua nếu nó được thêm vào giỏ hàng ít nhất là " +"nhiều lần." #: pretix/base/models/items.py:651 msgid "" @@ -4753,6 +4907,7 @@ msgid "" "product. The limit for the maximum number of items in the whole order " "applies regardless." msgstr "" +"Sản phẩm này chỉ có thể được mua nhiều nhất nhiều lần trong một đơn đặt hàng." #: pretix/base/models/items.py:658 pretix/base/models/items.py:1244 msgid "" @@ -4761,12 +4916,16 @@ msgid "" "tickets to indicate to the person at check-in that the student ID card still " "needs to be checked." msgstr "" +"Nếu bạn đặt cái này, ứng dụng nhận phòng sẽ hiển thị cảnh báo rõ ràng rằng " +"vé này đòi hỏi sự chú ý đặc biệt." #: pretix/base/models/items.py:665 pretix/base/models/items.py:1251 msgid "" "This text will be shown by the check-in app if a ticket of this type is " "scanned." msgstr "" +"Văn bản này sẽ được hiển thị bằng ứng dụng đăng ký nếu một vé thuộc loại này " +"được quét." #: pretix/base/models/items.py:671 pretix/base/models/items.py:1172 msgid "" @@ -4774,48 +4933,56 @@ msgid "" "current price is a discounted one. This is just a cosmetic setting and will " "not actually impact pricing." msgstr "" +"Nếu được đặt, điều này sẽ được hiển thị bên cạnh giá hiện tại để cho thấy " +"rằng giá hiện tại là một giá giảm giá." #: pretix/base/models/items.py:681 msgid "Only sell tickets for this product on the selected sales channels." -msgstr "" +msgstr "Chỉ bán vé cho sản phẩm này trên các kênh bán hàng được chọn." #: pretix/base/models/items.py:686 msgid "" "When a customer buys this product, they will get a gift card with a value " "corresponding to the product price." msgstr "" +"Khi khách hàng mua sản phẩm này, họ sẽ nhận được thẻ quà tặng có giá trị " +"tương ứng với giá sản phẩm." #: pretix/base/models/items.py:696 msgid "Allowed membership types" -msgstr "" +msgstr "cho phép các loại thành viên" #: pretix/base/models/items.py:701 pretix/base/models/items.py:1200 msgid "" "Do not show this unless the customer is logged in and has a valid " "membership. Be aware that this means it will never be visible in the widget." msgstr "" +"Không hiển thị điều này trừ khi khách hàng được đăng nhập và có tư cách " +"thành viên hợp lệ." #: pretix/base/models/items.py:710 msgid "This product creates a membership of type" -msgstr "" +msgstr "Sản phẩm này tạo ra một loại thành viên của loại" #: pretix/base/models/items.py:713 msgid "" "The duration of the membership is the same as the duration of the event or " "event series date" msgstr "" +"Thời lượng thành viên giống như thời lượng của sự kiện hoặc chuỗi sự kiện " +"ngày" #: pretix/base/models/items.py:717 msgid "Membership duration in days" -msgstr "" +msgstr "Thời gian thành viên theo ngày" #: pretix/base/models/items.py:721 msgid "Membership duration in months" -msgstr "" +msgstr "Thời gian thành viên tính theo tháng" #: pretix/base/models/items.py:728 msgid "Validity" -msgstr "" +msgstr "Hiệu lực" #: pretix/base/models/items.py:730 msgid "" @@ -4828,50 +4995,52 @@ msgid "" "change the settings here later, existing tickets will not be affected by the " "change but keep their current validity." msgstr "" +"Khi thiết lập một sự kiện thông thường hoặc chuỗi sự kiện với các khe thời " +"gian, bạn thường không cần phải thay đổi giá trị này." #: pretix/base/models/items.py:738 pretix/control/forms/item.py:729 msgid "Start of validity" -msgstr "" +msgstr "Bắt đầu hiệu lực" #: pretix/base/models/items.py:739 msgid "End of validity" -msgstr "" +msgstr "Kết thúc hiệu lực" #: pretix/base/models/items.py:742 msgid "Minutes" -msgstr "" +msgstr "phút" #: pretix/base/models/items.py:746 msgid "Hours" -msgstr "" +msgstr "giờ" #: pretix/base/models/items.py:750 msgid "Days" -msgstr "" +msgstr "Ngày" #: pretix/base/models/items.py:754 msgid "Months" -msgstr "" +msgstr "Tháng" #: pretix/base/models/items.py:757 msgid "Customers can select the validity start date" -msgstr "" +msgstr "Khách hàng có thể chọn ngày bắt đầu tính hợp lệ" #: pretix/base/models/items.py:758 msgid "If not selected, the validity always starts at the time of purchase." -msgstr "" +msgstr "Nếu không được chọn, tính hợp lệ luôn bắt đầu tại thời điểm mua." #: pretix/base/models/items.py:763 msgid "Maximum future start" -msgstr "" +msgstr "Bắt đầu tối đa trong tương lai" #: pretix/base/models/items.py:764 msgid "The selected start date may only be this many days in the future." -msgstr "" +msgstr "Ngày bắt đầu được chọn chỉ có thể là nhiều ngày trong tương lai." #: pretix/base/models/items.py:770 msgid "Reusable media policy" -msgstr "" +msgstr "Chính sách truyền thông có thể tái sử dụng" #: pretix/base/models/items.py:772 msgid "" @@ -4882,17 +5051,19 @@ msgid "" "feature that also requires specific configuration of ticketing and printing " "settings." msgstr "" +"Nếu sản phẩm này nên được lưu trữ trên phương tiện vật lý có thể sử dụng " +"lại, bạn có thể đính kèm chính sách truyền thông vật lý." #: pretix/base/models/items.py:782 msgid "Reusable media type" -msgstr "" +msgstr "Loại phương tiện có thể tái sử dụng" #: pretix/base/models/items.py:784 msgid "" "Select the type of physical medium that should be used for this product. " "Note that not all media types support all types of products, and not all " "media types are supported across all sales channels or check-in processes." -msgstr "" +msgstr "Chọn loại phương tiện vật lý nên được sử dụng cho sản phẩm này." #: pretix/base/models/items.py:795 pretix/base/models/items.py:1702 #: pretix/control/forms/filter.py:421 pretix/control/forms/filter.py:1895 @@ -4910,26 +5081,32 @@ msgstr "" #: pretix/plugins/autocheckin/templates/pretixplugins/autocheckin/index.html:31 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_list.html:32 msgid "Products" -msgstr "" +msgstr "Sản phẩm" #: pretix/base/models/items.py:989 msgid "" "If you select a reusable media policy, you also need to select a reusable " "media type." msgstr "" +"Nếu bạn chọn chính sách phương tiện có thể tái sử dụng, bạn cũng cần chọn " +"loại phương tiện có thể tái sử dụng." #: pretix/base/models/items.py:993 msgid "The selected media type is not enabled in your organizer settings." msgstr "" +"Loại phương tiện được chọn không được bật trong cài đặt trình tổ chức của " +"bạn." #: pretix/base/models/items.py:995 msgid "The selected media type does not support usage for tickets currently." -msgstr "" +msgstr "Loại phương tiện được chọn hiện không hỗ trợ việc sử dụng vé hiện tại." #: pretix/base/models/items.py:997 msgid "" "The selected media type does not support usage for gift cards currently." msgstr "" +"Loại phương tiện được chọn hiện không hỗ trợ việc sử dụng thẻ quà tặng hiện " +"tại." #: pretix/base/models/items.py:999 msgid "" @@ -4937,32 +5114,36 @@ msgid "" "Instead, gift cards for some reusable media types can be created or re-" "charged directly at the POS." msgstr "" +"Hiện tại bạn không thể tạo thẻ quà tặng với chính sách truyền thông có thể " +"tái sử dụng." #: pretix/base/models/items.py:1007 msgid "" "The maximum number per order can not be lower than the minimum number per " "order." msgstr "" +"Số lượng tối đa cho mỗi đơn hàng không thể thấp hơn số tối thiểu cho mỗi đơn " +"hàng." #: pretix/base/models/items.py:1013 msgid "The item's category must belong to the same event as the item." -msgstr "" +msgstr "Danh mục của mục phải thuộc cùng một sự kiện với mục." #: pretix/base/models/items.py:1018 msgid "The item's tax rule must belong to the same event as the item." -msgstr "" +msgstr "Quy tắc thuế của mặt hàng phải thuộc về cùng một sự kiện với mặt hàng." #: pretix/base/models/items.py:1024 msgid "The item's availability cannot end before it starts." -msgstr "" +msgstr "Tính khả dụng của vật phẩm không thể kết thúc trước khi nó bắt đầu." #: pretix/base/models/items.py:1156 msgid "This is shown below the variation name in lists." -msgstr "" +msgstr "Điều này được hiển thị bên dưới tên biến thể trong danh sách." #: pretix/base/models/items.py:1183 msgid "Require approval" -msgstr "" +msgstr "Yêu cầu phê duyệt" #: pretix/base/models/items.py:1185 msgid "" @@ -4971,24 +5152,27 @@ msgid "" "paid and completed. You can use this e.g. for discounted tickets that are " "only available to specific groups." msgstr "" +"Nếu biến thể này là một phần của đơn đặt hàng, lệnh sẽ được đưa vào trạng " +"thái \"Phê duyệt \" và sẽ cần được xác nhận bởi bạn trước khi có thể được " +"thanh toán và hoàn thành." #: pretix/base/models/items.py:1195 pretix/control/navigation.py:579 #: pretix/control/templates/pretixcontrol/organizers/membershiptypes.html:4 #: pretix/control/templates/pretixcontrol/organizers/membershiptypes.html:6 msgid "Membership types" -msgstr "" +msgstr "Các loại thành viên" #: pretix/base/models/items.py:1207 msgid "This variation will not be sold before the given date." -msgstr "" +msgstr "Biến thể này sẽ không được bán trước ngày nhất định." #: pretix/base/models/items.py:1217 msgid "This variation will not be sold after the given date." -msgstr "" +msgstr "Biến thể này sẽ không được bán sau ngày nhất định." #: pretix/base/models/items.py:1225 msgid "Sell on all sales channels the product is sold on" -msgstr "" +msgstr "Bán trên tất cả các kênh bán hàng mà sản phẩm được bán" #: pretix/base/models/items.py:1231 msgid "" @@ -4996,75 +5180,82 @@ msgid "" "if a sales channel is selected here but not on product level, the variation " "will not be available." msgstr "" +"Việc lựa chọn kênh bán hàng cho toàn bộ sản phẩm được ưu tiên, vì vậy nếu " +"kênh bán hàng được chọn ở đây nhưng không phải ở cấp độ sản phẩm, thì biến " +"thể sẽ không có sẵn." #: pretix/base/models/items.py:1236 msgid "Show only if a matching voucher is redeemed." -msgstr "" +msgstr "Chỉ hiển thị nếu một chứng từ phù hợp được đổi." #: pretix/base/models/items.py:1238 msgid "" "This variation will be hidden from the event page until the user enters a " "voucher that unlocks this variation." msgstr "" +"Biến thể này sẽ được ẩn khỏi trang sự kiện cho đến khi người dùng nhập phiếu " +"mua hàng mở khóa biến thể này." #: pretix/base/models/items.py:1258 #: pretix/control/templates/pretixcontrol/item/create.html:111 msgid "Product variations" -msgstr "" +msgstr "Biến thể sản phẩm" #: pretix/base/models/items.py:1463 msgid "Minimum number" -msgstr "" +msgstr "Số tối thiểu" #: pretix/base/models/items.py:1467 msgid "Maximum number" -msgstr "" +msgstr "Số tối đa" #: pretix/base/models/items.py:1471 msgid "Add-Ons are included in the price" -msgstr "" +msgstr "Các tiện ích bổ sung được bao gồm trong giá" #: pretix/base/models/items.py:1472 msgid "" "If selected, adding add-ons to this ticket is free, even if the add-ons " "would normally cost money individually." msgstr "" +"Nếu được chọn, việc thêm các tiện ích bổ sung vào vé này là miễn phí, ngay " +"cả khi các tiện ích bổ sung thường sẽ tốn tiền riêng lẻ." #: pretix/base/models/items.py:1477 msgid "Allow the same product to be selected multiple times" -msgstr "" +msgstr "Cho phép cùng một sản phẩm được chọn nhiều lần" #: pretix/base/models/items.py:1496 msgid "The add-on's category must belong to the same event as the item." -msgstr "" +msgstr "Danh mục của Tiện ích phải thuộc cùng một sự kiện với mục." #: pretix/base/models/items.py:1501 msgid "The item already has an add-on of this category." -msgstr "" +msgstr "Mục đã có một tiện ích bổ sung của danh mục này." #: pretix/base/models/items.py:1506 msgid "The minimum count needs to be equal to or greater than zero." -msgstr "" +msgstr "Số lượng tối thiểu cần phải bằng hoặc lớn hơn 0." #: pretix/base/models/items.py:1511 msgid "The maximum count needs to be equal to or greater than zero." -msgstr "" +msgstr "Số lượng tối đa cần phải bằng hoặc lớn hơn 0." #: pretix/base/models/items.py:1516 msgid "The maximum count needs to be greater than the minimum count." -msgstr "" +msgstr "Số lượng tối đa cần phải lớn hơn số lượng tối thiểu." #: pretix/base/models/items.py:1543 msgid "Bundled item" -msgstr "" +msgstr "Mục đi kèm" #: pretix/base/models/items.py:1549 msgid "Bundled variation" -msgstr "" +msgstr "Biến thể đi kèm" #: pretix/base/models/items.py:1560 msgid "Designated price part" -msgstr "" +msgstr "Phần giá được chỉ định" #: pretix/base/models/items.py:1561 msgid "" @@ -5073,59 +5264,61 @@ msgid "" "taxation, but can be kept blank otherwise. This value will NOT be added to " "the base item's price." msgstr "" +"Nếu được đặt, nó sẽ được chỉ ra rằng mặt hàng đi kèm này chịu trách nhiệm " +"cho giá trị đã cho của tổng giá." #: pretix/base/models/items.py:1584 msgid "The bundled item must belong to the same event as the item." -msgstr "" +msgstr "Các mục đi kèm phải thuộc về cùng một sự kiện với mục." #: pretix/base/models/items.py:1586 msgid "A variation needs to be set for this item." -msgstr "" +msgstr "Một biến thể cần được đặt cho mục này." #: pretix/base/models/items.py:1588 msgid "The chosen variation does not belong to this item." -msgstr "" +msgstr "Biến thể được chọn không thuộc về mục này." #: pretix/base/models/items.py:1593 msgid "The count needs to be equal to or greater than zero." -msgstr "" +msgstr "Số lượng cần phải bằng hoặc lớn hơn 0." #: pretix/base/models/items.py:1648 msgid "Number" -msgstr "" +msgstr "Số" #: pretix/base/models/items.py:1649 msgid "Text (one line)" -msgstr "" +msgstr "văn bản (một dòng)" #: pretix/base/models/items.py:1650 msgid "Multiline text" -msgstr "" +msgstr "Văn bản đa dòng" #: pretix/base/models/items.py:1651 msgid "Yes/No" -msgstr "" +msgstr "Có/không" #: pretix/base/models/items.py:1652 msgid "Choose one from a list" -msgstr "" +msgstr "Chọn một trong danh sách" #: pretix/base/models/items.py:1653 msgid "Choose multiple from a list" -msgstr "" +msgstr "Chọn bội từ một danh sách" #: pretix/base/models/items.py:1654 msgid "File upload" -msgstr "" +msgstr "Tải lên tệp" #: pretix/base/models/items.py:1657 #: pretix/control/templates/pretixcontrol/event/settings.html:240 msgid "Date and time" -msgstr "" +msgstr "Ngày và giờ" #: pretix/base/models/items.py:1658 msgid "Country code (ISO 3166-1 alpha-2)" -msgstr "" +msgstr "Mã quốc gia (ISO 3166-1 Alpha-2)" #: pretix/base/models/items.py:1681 pretix/base/models/items.py:1938 #: pretix/base/models/organizer.py:543 @@ -5133,57 +5326,61 @@ msgid "" "The identifier may only contain letters, numbers, dots, dashes, and " "underscores." msgstr "" +"Định danh chỉ có thể chứa các chữ cái, số, dấu chấm, dấu gạch ngang và gạch " +"dưới." #: pretix/base/models/items.py:1686 msgid "Help text" -msgstr "" +msgstr "Văn bản trợ giúp" #: pretix/base/models/items.py:1687 msgid "If the question needs to be explained or clarified, do it here!" -msgstr "" +msgstr "Nếu câu hỏi cần được giải thích hoặc làm rõ, hãy làm điều đó ở đây!" #: pretix/base/models/items.py:1693 msgid "Question type" -msgstr "" +msgstr "Loại câu hỏi" #: pretix/base/models/items.py:1697 #: pretix/control/templates/pretixcontrol/items/questions.html:55 msgid "Required question" -msgstr "" +msgstr "Câu hỏi cần thiết" #: pretix/base/models/items.py:1704 msgid "This question will be asked to buyers of the selected products" -msgstr "" +msgstr "Câu hỏi này sẽ được yêu cầu cho người mua các sản phẩm được chọn" #: pretix/base/models/items.py:1711 msgid "Ask during check-in instead of in the ticket buying process" -msgstr "" +msgstr "Hỏi trong khi nhận phòng thay vì trong quá trình mua vé" #: pretix/base/models/items.py:1712 pretix/base/models/items.py:1717 msgid "Not supported by all check-in apps for all question types." msgstr "" +"Không được hỗ trợ bởi tất cả các ứng dụng đăng ký cho tất cả các loại câu " +"hỏi." #: pretix/base/models/items.py:1716 msgid "Show answer during check-in" -msgstr "" +msgstr "Hiển thị câu trả lời trong khi nhận phòng" #: pretix/base/models/items.py:1721 #: pretix/control/templates/pretixcontrol/items/questions.html:66 msgid "Hidden question" -msgstr "" +msgstr "Câu hỏi ẩn" #: pretix/base/models/items.py:1722 msgid "This question will only show up in the backend." -msgstr "" +msgstr "Câu hỏi này sẽ chỉ hiển thị trong phần phụ trợ." #: pretix/base/models/items.py:1726 msgid "Print answer on invoices" -msgstr "" +msgstr "in câu trả lời trên hóa đơn" #: pretix/base/models/items.py:1734 pretix/base/models/items.py:1740 #: pretix/base/models/items.py:1746 msgid "Minimum value" -msgstr "" +msgstr "Giá trị tối thiểu" #: pretix/base/models/items.py:1735 pretix/base/models/items.py:1738 #: pretix/base/models/items.py:1741 pretix/base/models/items.py:1744 @@ -5191,29 +5388,32 @@ msgstr "" #: pretix/base/models/items.py:1754 msgid "Currently not supported in our apps and during check-in" msgstr "" +"Hiện không được hỗ trợ trong các ứng dụng của chúng tôi và trong khi nhận " +"phòng" #: pretix/base/models/items.py:1737 pretix/base/models/items.py:1743 #: pretix/base/models/items.py:1749 msgid "Maximum value" -msgstr "" +msgstr "Giá trị tối đa" #: pretix/base/models/items.py:1752 msgid "Maximum length" -msgstr "" +msgstr "Chiều dài tối đa" #: pretix/base/models/items.py:1758 msgid "Validate file to be a portrait" -msgstr "" +msgstr "Xác thực tệp để trở thành một bức chân dung" #: pretix/base/models/items.py:1759 msgid "" "If checked, files must be images with an aspect ratio of 3:4. This is " "commonly used for photos printed on badges." msgstr "" +"Nếu được kiểm tra, các tệp phải là hình ảnh có tỷ lệ khung hình là 3: 4." #: pretix/base/models/items.py:1814 msgid "An answer to this question is required to proceed." -msgstr "" +msgstr "Một câu trả lời cho câu hỏi này là bắt buộc để tiến hành." #: pretix/base/models/items.py:1824 #, fuzzy @@ -5223,89 +5423,89 @@ msgstr "ID người dùng" #: pretix/base/models/items.py:1858 msgid "The number is to low." -msgstr "" +msgstr "Số lượng là thấp." #: pretix/base/models/items.py:1860 msgid "The number is to high." -msgstr "" +msgstr "Số là cao." #: pretix/base/models/items.py:1863 msgid "Invalid number input." -msgstr "" +msgstr "Đầu vào số không hợp lệ." #: pretix/base/models/items.py:1870 pretix/base/models/items.py:1894 msgid "Please choose a later date." -msgstr "" +msgstr "Vui lòng chọn một ngày sau." #: pretix/base/models/items.py:1872 pretix/base/models/items.py:1896 msgid "Please choose an earlier date." -msgstr "" +msgstr "Vui lòng chọn một ngày sớm hơn." #: pretix/base/models/items.py:1875 msgid "Invalid date input." -msgstr "" +msgstr "Đầu vào ngày không hợp lệ." #: pretix/base/models/items.py:1882 msgid "Invalid time input." -msgstr "" +msgstr "Đầu vào thời gian không hợp lệ." #: pretix/base/models/items.py:1891 msgid "Invalid datetime input." -msgstr "" +msgstr "Đầu vào DateTime không hợp lệ." #: pretix/base/models/items.py:1903 msgid "Unknown country code." -msgstr "" +msgstr "Mã quốc gia chưa biết." #: pretix/base/models/items.py:1921 pretix/base/models/items.py:1923 msgid "The maximum date must not be before the minimum value." -msgstr "" +msgstr "Ngày tối đa không được trước giá trị tối thiểu." #: pretix/base/models/items.py:1925 msgid "The maximum value must not be lower than the minimum value." -msgstr "" +msgstr "Giá trị tối đa không được thấp hơn giá trị tối thiểu." #: pretix/base/models/items.py:1942 #: pretix/control/templates/pretixcontrol/items/question.html:90 msgid "Answer" -msgstr "" +msgstr "Trả lời" #: pretix/base/models/items.py:1966 msgid "The identifier \"{}\" is already used for a different option." -msgstr "" +msgstr "Định danh \"{} \" đã được sử dụng cho một tùy chọn khác." #: pretix/base/models/items.py:1969 msgid "Question option" -msgstr "" +msgstr "Tùy chọn câu hỏi" #: pretix/base/models/items.py:1970 msgid "Question options" -msgstr "" +msgstr "Tùy chọn câu hỏi" #: pretix/base/models/items.py:2055 pretix/control/forms/event.py:1715 #: pretix/control/templates/pretixcontrol/items/quotas.html:56 msgid "Total capacity" -msgstr "" +msgstr "Tổng công suất" #: pretix/base/models/items.py:2057 pretix/control/forms/item.py:449 msgid "Leave empty for an unlimited number of tickets." -msgstr "" +msgstr "Để trống cho một số lượng vé không giới hạn." #: pretix/base/models/items.py:2061 pretix/base/models/orders.py:1489 #: pretix/base/models/orders.py:2986 #: pretix/control/templates/pretixcontrol/checkin/index.html:97 msgid "Item" -msgstr "" +msgstr "Mục" #: pretix/base/models/items.py:2069 pretix/control/forms/item.py:908 #: pretix/plugins/autocheckin/models.py:74 msgid "Variations" -msgstr "" +msgstr "Biến thể" #: pretix/base/models/items.py:2073 #: pretix/control/templates/pretixcontrol/items/quotas.html:70 msgid "Ignore this quota when determining event availability" -msgstr "" +msgstr "Bỏ qua hạn ngạch này khi xác định tính khả dụng của sự kiện" #: pretix/base/models/items.py:2074 msgid "" @@ -5314,10 +5514,12 @@ msgid "" "that is added to each event but should not stop the event from being shown " "as sold out." msgstr "" +"Nếu bạn kích hoạt điều này, hạn ngạch này sẽ bị bỏ qua khi xác định tính khả " +"dụng của sự kiện trong lịch sự kiện của bạn." #: pretix/base/models/items.py:2081 msgid "Close this quota permanently once it is sold out" -msgstr "" +msgstr "Đóng hạn ngạch này vĩnh viễn sau khi nó được bán hết" #: pretix/base/models/items.py:2082 msgid "" @@ -5325,10 +5527,13 @@ msgid "" "sold, even if tickets become available again through cancellations or " "expiring orders. Of course, you can always re-open it manually." msgstr "" +"Nếu bạn kích hoạt điều này, khi hạn ngạch được bán hết một lần, sẽ không có " +"thêm vé, ngay cả khi vé có sẵn trở lại thông qua việc hủy bỏ hoặc đặt hàng " +"hết hạn." #: pretix/base/models/items.py:2090 msgid "Allow to sell more tickets once people have checked out" -msgstr "" +msgstr "Cho phép bán nhiều vé hơn khi mọi người đã kiểm tra" #: pretix/base/models/items.py:2091 msgid "" @@ -5339,6 +5544,8 @@ msgid "" "are ignored if they are set to \"Allow re-entering after an exit scan\" to " "prevent accidental overbooking." msgstr "" +"Với tùy chọn này, hạn ngạch sẽ được phát hành ngay khi mọi người được quét " +"tại lối ra của sự kiện của bạn." #: pretix/base/models/items.py:2103 pretix/control/navigation.py:156 #: pretix/control/templates/pretixcontrol/items/quotas.html:4 @@ -5347,52 +5554,56 @@ msgstr "" #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:184 #: pretix/control/templates/pretixcontrol/subevents/detail.html:59 msgid "Quotas" -msgstr "" +msgstr "Hạn ngạch" #: pretix/base/models/items.py:2176 msgid "All variations must belong to an item contained in the items list." -msgstr "" +msgstr "Tất cả các biến thể phải thuộc về một mục có trong danh sách các mục." #: pretix/base/models/items.py:2187 msgid "" "One or more items has variations but none of these are in the variations " "list." msgstr "" +"Một hoặc nhiều mục có các biến thể nhưng không có mục nào trong danh sách " +"biến thể." #: pretix/base/models/items.py:2193 pretix/base/models/waitinglist.py:305 msgid "Subevent cannot be null for event series." -msgstr "" +msgstr "Subevent không thể là null cho chuỗi sự kiện." #: pretix/base/models/items.py:2229 msgid "Required for products" -msgstr "" +msgstr "Cần thiết cho sản phẩm" #: pretix/base/models/items.py:2230 msgid "" "If checked, this property must be set in each product. Does not apply if a " "default value is set." -msgstr "" +msgstr "Nếu được kiểm tra, thuộc tính này phải được đặt trong mỗi sản phẩm." #: pretix/base/models/items.py:2235 msgid "" "If you keep this empty, any value is allowed. Otherwise, enter one possible " "value per line." -msgstr "" +msgstr "Nếu bạn giữ trống này, bất kỳ giá trị nào được cho phép." #: pretix/base/models/memberships.py:44 #: pretix/presale/templates/pretixpresale/organizers/customer_memberships.html:28 msgid "Membership is transferable" -msgstr "" +msgstr "Tư cách thành viên có thể chuyển nhượng" #: pretix/base/models/memberships.py:45 msgid "" "If this is selected, the membership can be used to purchase tickets for " "multiple persons. If not, the attendee name always needs to stay the same." msgstr "" +"Nếu điều này được chọn, tư cách thành viên có thể được sử dụng để mua vé cho " +"nhiều người." #: pretix/base/models/memberships.py:50 msgid "Parallel usage is allowed" -msgstr "" +msgstr "Sử dụng song song được cho phép" #: pretix/base/models/memberships.py:51 msgid "" @@ -5402,10 +5613,12 @@ msgid "" "overlap check will be performed if there is a product-level validity of the " "ticket." msgstr "" +"Nếu điều này được chọn, tư cách thành viên có thể được sử dụng để mua vé cho " +"các sự kiện xảy ra cùng một lúc." #: pretix/base/models/memberships.py:58 msgid "Number of times this membership can be used in a purchase." -msgstr "" +msgstr "Số lần thành viên này có thể được sử dụng trong giao dịch mua." #: pretix/base/models/memberships.py:124 #: pretix/control/templates/pretixcontrol/items/question.html:33 @@ -5423,41 +5636,43 @@ msgstr "Đã huỷ" #: pretix/control/templates/pretixcontrol/organizers/customer.html:116 #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:28 msgid "Membership type" -msgstr "" +msgstr "Loại thành viên" #: pretix/base/models/orders.py:202 msgid "pending" -msgstr "" +msgstr "Đang chờ xử lý" #: pretix/base/models/orders.py:203 pretix/base/payment.py:511 #: pretix/base/services/invoices.py:475 msgid "paid" -msgstr "" +msgstr "Trả tiền" #: pretix/base/models/orders.py:204 pretix/control/forms/filter.py:1573 #: pretix/control/templates/pretixcontrol/organizers/reusable_medium.html:37 msgid "expired" -msgstr "" +msgstr "Hết hạn" #: pretix/base/models/orders.py:254 pretix/control/forms/filter.py:561 #: pretix/control/templates/pretixcontrol/organizers/customer.html:64 msgid "Locale" -msgstr "" +msgstr "Địa phương" #: pretix/base/models/orders.py:269 pretix/control/forms/filter.py:572 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/refund_export.html:57 msgid "Total amount" -msgstr "" +msgstr "Tổng số tiền" #: pretix/base/models/orders.py:273 pretix/base/models/vouchers.py:293 msgid "" "The text entered in this field will not be visible to the user and is " "available for your convenience." msgstr "" +"Văn bản được nhập trong trường này sẽ không hiển thị cho người dùng và có " +"sẵn để bạn thuận tiện." #: pretix/base/models/orders.py:278 msgid "We'll show you this order to be due for a follow-up on this day." -msgstr "" +msgstr "Chúng tôi sẽ chỉ cho bạn đơn đặt hàng này để theo dõi vào ngày này." #: pretix/base/models/orders.py:284 msgid "" @@ -5466,199 +5681,208 @@ msgid "" "custom message, so you need to brief your check-in staff how to handle these " "cases." msgstr "" +"Nếu bạn đặt cái này, ứng dụng đăng ký sẽ hiển thị cảnh báo rõ ràng rằng vé " +"của đơn đặt hàng này đòi hỏi sự chú ý đặc biệt." #: pretix/base/models/orders.py:291 msgid "" "This text will be shown by the check-in app if a ticket of this order is " "scanned." msgstr "" +"Văn bản này sẽ được hiển thị bằng ứng dụng đăng ký nếu một vé của đơn đặt " +"hàng này được quét." #: pretix/base/models/orders.py:301 pretix/base/models/orders.py:1526 msgid "Meta information" -msgstr "" +msgstr "Thông tin meta" #: pretix/base/models/orders.py:305 msgid "API meta information" -msgstr "" +msgstr "Thông tin meta API" #: pretix/base/models/orders.py:414 pretix/plugins/sendmail/forms.py:236 #: pretix/plugins/sendmail/forms.py:391 pretix/plugins/sendmail/views.py:269 msgid "approval pending" -msgstr "" +msgstr "Phê duyệt đang chờ xử lý" #: pretix/base/models/orders.py:416 msgctxt "order state" msgid "pending (confirmed)" -msgstr "" +msgstr "đang chờ xử lý (xác nhận)" #: pretix/base/models/orders.py:418 msgid "canceled (paid fee)" -msgstr "" +msgstr "bị hủy (phí thanh toán)" #: pretix/base/models/orders.py:1031 msgid "" "The payment can not be accepted as the last date of payments configured in " "the payment settings is over." msgstr "" +"Không thể chấp nhận thanh toán vì ngày thanh toán cuối cùng được định cấu " +"hình trong cài đặt thanh toán đã kết thúc." #: pretix/base/models/orders.py:1033 msgid "" "The payment can not be accepted as the order is expired and you configured " "that no late payments should be accepted in the payment settings." msgstr "" +"Không thể chấp nhận thanh toán vì đơn đặt hàng đã hết hạn và bạn đã cấu hình " +"rằng không có khoản thanh toán trễ nào nên được chấp nhận trong cài đặt " +"thanh toán." #: pretix/base/models/orders.py:1035 msgid "This order is not yet approved by the event organizer." -msgstr "" +msgstr "Lệnh này chưa được chấp thuận bởi người tổ chức sự kiện." #: pretix/base/models/orders.py:1060 #, python-brace-format msgid "The ordered product \"{item}\" is no longer available." -msgstr "" +msgstr "Sản phẩm được đặt hàng \"{item} \" không còn khả dụng." #: pretix/base/models/orders.py:1061 -#, python-brace-format +#, fuzzy, python-brace-format msgid "The seat \"{seat}\" is no longer available." -msgstr "" +msgstr "Ghế \"{chỗ ngồi} \" không còn có sẵn." #: pretix/base/models/orders.py:1062 #, python-brace-format msgid "The voucher \"{voucher}\" no longer has sufficient budget." -msgstr "" +msgstr "Voucher \"{voucher} \" không còn đủ ngân sách." #: pretix/base/models/orders.py:1063 #, python-brace-format msgid "The voucher \"{voucher}\" has been used in the meantime." -msgstr "" +msgstr "Voucher \"{voucher} \" đã được sử dụng trong lúc này." #: pretix/base/models/orders.py:1405 msgid "" -msgstr "" +msgstr "" #: pretix/base/models/orders.py:1506 pretix/base/models/orders.py:1514 msgid "Empty, if this product is not an admission ticket" -msgstr "" +msgstr "trống rỗng, nếu sản phẩm này không phải là vé vào cửa" #: pretix/base/models/orders.py:1723 msgctxt "payment_state" msgid "created" -msgstr "" +msgstr "Được tạo ra" #: pretix/base/models/orders.py:1724 msgctxt "payment_state" msgid "pending" -msgstr "" +msgstr "Đang chờ xử lý" #: pretix/base/models/orders.py:1725 msgctxt "payment_state" msgid "confirmed" -msgstr "" +msgstr "Xác nhận" #: pretix/base/models/orders.py:1726 msgctxt "payment_state" msgid "canceled" -msgstr "" +msgstr "Hủy bỏ" #: pretix/base/models/orders.py:1727 msgctxt "payment_state" msgid "failed" -msgstr "" +msgstr "Thất bại" #: pretix/base/models/orders.py:1728 msgctxt "payment_state" msgid "refunded" -msgstr "" +msgstr "Được hoàn lại" #: pretix/base/models/orders.py:1756 pretix/base/models/orders.py:2170 #: pretix/base/shredder.py:629 msgid "Payment information" -msgstr "" +msgstr "Thông tin thanh toán" #: pretix/base/models/orders.py:2111 msgctxt "refund_state" msgid "started externally" -msgstr "" +msgstr "Bắt đầu bên ngoài" #: pretix/base/models/orders.py:2112 msgctxt "refund_state" msgid "created" -msgstr "" +msgstr "Được tạo ra" #: pretix/base/models/orders.py:2113 msgctxt "refund_state" msgid "in transit" -msgstr "" +msgstr "trong quá cảnh" #: pretix/base/models/orders.py:2114 msgctxt "refund_state" msgid "done" -msgstr "" +msgstr "Xong" #: pretix/base/models/orders.py:2115 msgctxt "refund_state" msgid "failed" -msgstr "" +msgstr "Thất bại" #: pretix/base/models/orders.py:2117 msgctxt "refund_state" msgid "canceled" -msgstr "" +msgstr "Hủy bỏ" #: pretix/base/models/orders.py:2125 msgctxt "refund_source" msgid "Organizer" -msgstr "" +msgstr "Nhà tổ chức" #: pretix/base/models/orders.py:2126 msgctxt "refund_source" msgid "Customer" -msgstr "" +msgstr "Khách hàng" #: pretix/base/models/orders.py:2127 msgctxt "refund_source" msgid "External" -msgstr "" +msgstr "Bên ngoài" #: pretix/base/models/orders.py:2165 #: pretix/control/templates/pretixcontrol/order/refund_choose.html:198 msgid "Refund reason" -msgstr "" +msgstr "Lý do hoàn trả" #: pretix/base/models/orders.py:2166 #: pretix/control/templates/pretixcontrol/order/refund_choose.html:199 #: pretix/control/templates/pretixcontrol/order/refund_choose.html:201 msgid "" "May be shown to the end user or used e.g. as part of a payment reference." -msgstr "" +msgstr "Có thể được hiển thị cho người dùng cuối hoặc được sử dụng, ví dụ:" #: pretix/base/models/orders.py:2286 msgid "Service fee" -msgstr "" +msgstr "Phí dịch vụ" #: pretix/base/models/orders.py:2287 msgid "Payment fee" -msgstr "" +msgstr "Phí thanh toán" #: pretix/base/models/orders.py:2288 msgid "Shipping fee" -msgstr "" +msgstr "Phí vận chuyển" #: pretix/base/models/orders.py:2289 #: pretix/control/templates/pretixcontrol/order/index.html:157 msgid "Cancellation fee" -msgstr "" +msgstr "Phí hủy bỏ" #: pretix/base/models/orders.py:2290 msgid "Insurance fee" -msgstr "" +msgstr "Phí bảo hiểm" #: pretix/base/models/orders.py:2291 msgid "Late fee" -msgstr "" +msgstr "Phí trễ" #: pretix/base/models/orders.py:2292 msgid "Other fees" -msgstr "" +msgstr "Các khoản phí khác" #: pretix/base/models/orders.py:2293 pretix/base/payment.py:1320 #: pretix/base/payment.py:1324 pretix/base/settings.py:992 @@ -5669,7 +5893,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/order_giftcard.html:7 #: pretix/presale/templates/pretixpresale/event/position_giftcard.html:7 msgid "Gift card" -msgstr "" +msgstr "Thẻ quà tặng" #: pretix/base/models/orders.py:2298 #: pretix/control/templates/pretixcontrol/organizers/giftcard.html:74 @@ -5677,84 +5901,85 @@ msgstr "" #: pretix/control/views/vouchers.py:120 #: pretix/presale/templates/pretixpresale/event/fragment_giftcard_history.html:8 msgid "Value" -msgstr "" +msgstr "Giá trị" #: pretix/base/models/orders.py:2546 msgid "Order position" -msgstr "" +msgstr "Vị trí đặt hàng" #: pretix/base/models/orders.py:3091 msgid "Cart ID (e.g. session key)" -msgstr "" +msgstr "ID giỏ hàng (ví dụ: khóa phiên)" #: pretix/base/models/orders.py:3102 msgid "Limit for extending expiration date" -msgstr "" +msgstr "Giới hạn cho ngày hết hạn kéo dài" #: pretix/base/models/orders.py:3131 msgid "Cart position" -msgstr "" +msgstr "Vị trí xe đẩy" #: pretix/base/models/orders.py:3132 msgid "Cart positions" -msgstr "" +msgstr "Vị trí xe đẩy" #: pretix/base/models/orders.py:3268 msgid "Business customer" -msgstr "" +msgstr "Khách hàng kinh doanh" #: pretix/base/models/orders.py:3284 msgid "This reference will be printed on your invoice for your convenience." msgstr "" +"Tài liệu tham khảo này sẽ được in trên hóa đơn của bạn để thuận tiện cho bạn." #: pretix/base/models/orders.py:3468 #: pretix/plugins/badges/templates/pretixplugins/badges/control_order_position_buttons.html:9 msgid "Badge" -msgstr "" +msgstr "Huy hiệu" #: pretix/base/models/orders.py:3469 pretix/base/pdf.py:1113 #: pretix/control/forms/organizer.py:781 pretix/control/forms/organizer.py:817 #: pretix/control/templates/pretixcontrol/checkin/checkins.html:66 #: pretix/plugins/ticketoutputpdf/ticketoutput.py:113 msgid "Ticket" -msgstr "" +msgstr "vé" #: pretix/base/models/orders.py:3470 msgid "Certificate" -msgstr "" +msgstr "Giấy chứng nhận" #: pretix/base/models/orders.py:3471 pretix/control/views/event.py:393 #: pretix/control/views/event.py:398 msgid "Other" -msgstr "" +msgstr "Khác" #: pretix/base/models/organizer.py:79 msgid "" "Should be short, only contain lowercase letters, numbers, dots, and dashes. " "Every slug can only be used once. This is being used in URLs to refer to " "your organizer accounts and your events." -msgstr "" +msgstr "Nên ngắn, chỉ chứa chữ thường, số, chấm và dấu gạch ngang." #: pretix/base/models/organizer.py:97 pretix/control/navigation.py:350 #: pretix/control/templates/pretixcontrol/oauth/authorized.html:19 #: pretix/control/templates/pretixcontrol/organizers/index.html:6 #: pretix/control/templates/pretixcontrol/organizers/index.html:8 msgid "Organizers" -msgstr "" +msgstr "Ban tổ chức" #: pretix/base/models/organizer.py:284 #: pretix/control/templates/pretixcontrol/organizers/teams.html:35 msgid "Team name" -msgstr "" +msgstr "Tên nhóm" #: pretix/base/models/organizer.py:285 #: pretix/control/templates/pretixcontrol/organizers/team_members.html:13 msgid "Team members" -msgstr "" +msgstr "Thành viên trong nhóm" #: pretix/base/models/organizer.py:289 msgid "Require all members of this team to use two-factor authentication" -msgstr "" +msgstr "Yêu cầu tất cả các thành viên của nhóm này sử dụng xác thực hai yếu tố" #: pretix/base/models/organizer.py:290 msgid "" @@ -5762,56 +5987,61 @@ msgid "" "up two-factor authentication or leave the team. The setting may take a few " "minutes to become effective for all users." msgstr "" +"Nếu bạn bật điều này, tất cả các thành viên của nhóm sẽ được yêu cầu thiết " +"lập xác thực hai yếu tố hoặc rời khỏi đội." #: pretix/base/models/organizer.py:297 msgid "Can create events" -msgstr "" +msgstr "Có thể tạo sự kiện" #: pretix/base/models/organizer.py:301 msgid "Can change teams and permissions" -msgstr "" +msgstr "Có thể thay đổi các đội và quyền" #: pretix/base/models/organizer.py:305 msgid "Can change organizer settings" -msgstr "" +msgstr "Có thể thay đổi cài đặt trình tổ chức" #: pretix/base/models/organizer.py:306 msgid "" "Someone with this setting can get access to most data of all of your events, " "i.e. via privacy reports, so be careful who you add to this team!" msgstr "" +"Ai đó có cài đặt này có thể truy cập vào hầu hết dữ liệu của tất cả các sự " +"kiện của bạn, tức là thông qua các báo cáo quyền riêng tư, vì vậy hãy cẩn " +"thận với người bạn thêm vào nhóm này!" #: pretix/base/models/organizer.py:311 msgid "Can manage customer accounts" -msgstr "" +msgstr "Có thể quản lý tài khoản khách hàng" #: pretix/base/models/organizer.py:315 msgid "Can manage reusable media" -msgstr "" +msgstr "Có thể quản lý phương tiện tái sử dụng" #: pretix/base/models/organizer.py:319 msgid "Can manage gift cards" -msgstr "" +msgstr "Có thể quản lý thẻ quà tặng" #: pretix/base/models/organizer.py:323 msgid "Can change event settings" -msgstr "" +msgstr "Có thể thay đổi cài đặt sự kiện" #: pretix/base/models/organizer.py:327 msgid "Can change product settings" -msgstr "" +msgstr "Có thể thay đổi cài đặt sản phẩm" #: pretix/base/models/organizer.py:331 msgid "Can view orders" -msgstr "" +msgstr "Có thể xem đơn đặt hàng" #: pretix/base/models/organizer.py:335 msgid "Can change orders" -msgstr "" +msgstr "Có thể thay đổi đơn đặt hàng" #: pretix/base/models/organizer.py:339 msgid "Can perform check-ins" -msgstr "" +msgstr "Có thể thực hiện kiểm tra" #: pretix/base/models/organizer.py:340 msgid "" @@ -5819,203 +6049,210 @@ msgid "" "information about attendees. Users with \"can change orders\" can also " "perform check-ins." msgstr "" +"Điều này bao gồm tìm kiếm người tham dự, có thể được sử dụng để có được " +"thông tin cá nhân về người tham dự." #: pretix/base/models/organizer.py:345 msgid "Can view vouchers" -msgstr "" +msgstr "Có thể xem chứng từ" #: pretix/base/models/organizer.py:349 msgid "Can change vouchers" -msgstr "" +msgstr "Có thể thay đổi chứng từ" #: pretix/base/models/organizer.py:353 -#, python-format +#, fuzzy, python-format msgid "%(name)s on %(object)s" -msgstr "" +msgstr "%(tên) s trên %(đối tượng) s" #: pretix/base/models/organizer.py:385 #: pretix/control/templates/pretixcontrol/events/create_basics.html:64 msgid "Team" -msgstr "" +msgstr "Đội" #: pretix/base/models/organizer.py:386 pretix/control/navigation.py:527 #: pretix/control/templates/pretixcontrol/organizers/teams.html:6 msgid "Teams" -msgstr "" +msgstr "Đội" #: pretix/base/models/organizer.py:406 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Invite to team '{team}' for '{email}'" -msgstr "" +msgstr "Mời đến nhóm '{Team}' cho '{email}'" #: pretix/base/models/organizer.py:538 #: pretix/control/templates/pretixcontrol/organizers/channels.html:23 msgid "Identifier" -msgstr "" +msgstr "Định danh" #: pretix/base/models/organizer.py:548 #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:54 #: pretix/control/templates/pretixcontrol/items/questions.html:22 msgid "Type" -msgstr "" +msgstr "Loại" #: pretix/base/models/seating.py:45 pretix/base/models/tax.py:305 #: pretix/base/pdf.py:1269 msgid "Your layout file is not a valid JSON file." -msgstr "" +msgstr "Tệp bố cục của bạn không phải là tệp JSON hợp lệ." #: pretix/base/models/seating.py:54 pretix/base/models/seating.py:78 msgid "Your layout file is not a valid seating plan. Error message: {}" -msgstr "" +msgstr "Tệp bố cục của bạn không phải là một gói chỗ ngồi hợp lệ." #: pretix/base/models/seating.py:63 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Seat with zone {zone}, row {row}, and number {number} has no seat ID." -msgstr "" +msgstr "chỗ ngồi có vùng {vùng}, hàng {hàng} và số {số} không có id ghế." #: pretix/base/models/seating.py:71 #, python-brace-format msgid "Multiple seats have the same ID: {id}" -msgstr "" +msgstr "Nhiều chỗ ngồi có cùng ID: {id}" #: pretix/base/models/seating.py:199 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Row {number}" -msgstr "" +msgstr "hàng {số}" #: pretix/base/models/seating.py:204 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Seat {number}" -msgstr "" +msgstr "chỗ ngồi {số}" #: pretix/base/models/tax.py:144 msgid "Standard rates" -msgstr "" +msgstr "Tỷ lệ tiêu chuẩn" #: pretix/base/models/tax.py:148 msgctxt "tax_code" msgid "Standard rate" -msgstr "" +msgstr "Tỷ lệ tiêu chuẩn" #: pretix/base/models/tax.py:152 msgctxt "tax_code" msgid "Reduced rate" -msgstr "" +msgstr "Tỷ lệ giảm" #: pretix/base/models/tax.py:156 msgctxt "tax_code" msgid "" "Averaged rate (other revenue in a agricultural and silvicultural business)" msgstr "" +"Tỷ lệ trung bình (doanh thu khác trong kinh doanh nông nghiệp và nông nghiệp)" #: pretix/base/models/tax.py:164 msgctxt "tax_code" msgid "Reverse charge" -msgstr "" +msgstr "Phí đảo ngược" #: pretix/base/models/tax.py:168 msgid "Tax free" -msgstr "" +msgstr "miễn thuế" #: pretix/base/models/tax.py:171 msgctxt "tax_code" msgid "Services outside of scope of tax" -msgstr "" +msgstr "Dịch vụ ngoài phạm vi thuế" #: pretix/base/models/tax.py:174 msgctxt "tax_code" msgid "Exempt from tax (no reason given)" -msgstr "" +msgstr "Miễn thuế (không có lý do nào)" #: pretix/base/models/tax.py:177 msgctxt "tax_code" msgid "Zero-rated goods" -msgstr "" +msgstr "Hàng hóa không được xếp hạng" #: pretix/base/models/tax.py:180 msgctxt "tax_code" msgid "Free export item, VAT not charged" -msgstr "" +msgstr "Mục xuất khẩu miễn phí, VAT không tính phí" #: pretix/base/models/tax.py:183 msgctxt "tax_code" msgid "VAT exempt for EEA intra-community supply of goods and services" -msgstr "" +msgstr "VAT miễn cho cung cấp hàng hóa và dịch vụ nội bộ EEA" #: pretix/base/models/tax.py:187 msgid "Special cases" -msgstr "" +msgstr "Các trường hợp đặc biệt" #: pretix/base/models/tax.py:189 msgctxt "tax_code" msgid "Canary Islands general indirect tax" -msgstr "" +msgstr "Quần đảo Canary Thuế gián tiếp chung" #: pretix/base/models/tax.py:190 msgctxt "tax_code" msgid "Tax for production, services and importation in Ceuta and Melilla" -msgstr "" +msgstr "Thuế cho sản xuất, dịch vụ và nhập khẩu tại Ceuta và Melilla" #: pretix/base/models/tax.py:191 msgctxt "tax_code" msgid "Transferred (VAT), only in Italy" -msgstr "" +msgstr "Chuyển nhượng (VAT), chỉ ở Ý" #: pretix/base/models/tax.py:195 msgid "Exempt with specific reason" -msgstr "" +msgstr "được miễn trừ với lý do cụ thể" #: pretix/base/models/tax.py:198 msgctxt "tax_code" msgid "Exempt based on article 79, point c of Council Directive 2006/112/EC" -msgstr "" +msgstr "Được miễn dựa trên Điều 79, Điểm C của Chỉ thị Hội đồng 2006/112/EC" #: pretix/base/models/tax.py:205 pretix/base/models/tax.py:218 #: pretix/base/models/tax.py:244 -#, python-brace-format +#, fuzzy, python-brace-format msgctxt "tax_code" msgid "" "Exempt based on article {article}, section {section} ({letter}) of Council " "Directive 2006/112/EC" msgstr "" +"Được miễn trừ dựa trên bài viết {Điều}, Phần {Phần} ({thư}) của Chỉ thị của " +"Hội đồng 2006/112/EC" #: pretix/base/models/tax.py:231 -#, python-brace-format +#, fuzzy, python-brace-format msgctxt "tax_code" msgid "" "Exempt based on article {article}, section ({letter}) of Council Directive " "2006/112/EC" msgstr "" +"Miễn dựa trên bài viết {Điều}, phần ({thư}) của Chỉ thị của Hội đồng 2006/" +"112/EC" #: pretix/base/models/tax.py:252 msgctxt "tax_code" msgid "Exempt based on article 309 of Council Directive 2006/112/EC" -msgstr "" +msgstr "Được miễn trừ dựa trên Điều 309 của Chỉ thị của Hội đồng 2006/112/EC" #: pretix/base/models/tax.py:254 msgctxt "tax_code" msgid "Intra-Community acquisition from second hand means of transport" -msgstr "" +msgstr "Việc mua lại nội bộ từ phương tiện giao thông cũ" #: pretix/base/models/tax.py:256 msgctxt "tax_code" msgid "Intra-Community acquisition of second hand goods" -msgstr "" +msgstr "Việc mua lại hàng hóa nội bộ của cộng đồng" #: pretix/base/models/tax.py:258 msgctxt "tax_code" msgid "Intra-Community acquisition of works of art" -msgstr "" +msgstr "Việc mua lại các tác phẩm nghệ thuật nội bộ" #: pretix/base/models/tax.py:260 msgctxt "tax_code" msgid "Intra-Community acquisition of collectors items and antiques" -msgstr "" +msgstr "Việc mua lại các mặt hàng và đồ cổ của các nhà sưu tập nội bộ" #: pretix/base/models/tax.py:262 msgctxt "tax_code" msgid "France domestic VAT franchise in base" -msgstr "" +msgstr "Nhượng quyền VAT trong nước Pháp tại cơ sở" #: pretix/base/models/tax.py:264 msgctxt "tax_code" @@ -6023,43 +6260,48 @@ msgid "" "France domestic Credit Notes without VAT, due to supplier forfeit of VAT for " "discount" msgstr "" +"Ghi chú tín dụng trong nước Pháp mà không có thuế VAT, do nhà cung cấp bị " +"tịch thu VAT để giảm giá" #: pretix/base/models/tax.py:314 msgid "Your set of rules is not valid. Error message: {}" -msgstr "" +msgstr "Bộ quy tắc của bạn không hợp lệ." #: pretix/base/models/tax.py:325 msgid "Official name" -msgstr "" +msgstr "Tên chính thức" #: pretix/base/models/tax.py:326 msgid "Should be short, e.g. \"VAT\"" -msgstr "" +msgstr "Nên ngắn, ví dụ:" #: pretix/base/models/tax.py:330 pretix/control/forms/event.py:1513 #: pretix/control/templates/pretixcontrol/order/transactions.html:22 msgid "Tax code" -msgstr "" +msgstr "Mã số thuế" #: pretix/base/models/tax.py:331 msgid "" "If you help us understand what this tax rules legally is, we can use this " "information for eInvoices, exporting to accounting system, etc." msgstr "" +"Nếu bạn giúp chúng tôi hiểu quy tắc thuế này là gì, chúng tôi có thể sử dụng " +"thông tin này cho einvoices, xuất khẩu sang hệ thống kế toán, v.v." #: pretix/base/models/tax.py:351 msgid "The configured product prices include the tax amount" -msgstr "" +msgstr "Giá sản phẩm được cấu hình bao gồm số tiền thuế" #: pretix/base/models/tax.py:355 msgid "" "Keep gross amount constant if the tax rate changes based on the invoice " "address" msgstr "" +"Giữ tổng số tiền không đổi nếu thuế suất thay đổi dựa trên địa chỉ hóa đơn" #: pretix/base/models/tax.py:359 msgid "Use EU reverse charge taxation rules" -msgstr "" +msgstr "Sử dụng các quy tắc thuế điện tích ngược của EU" #: pretix/base/models/tax.py:363 msgid "" @@ -6067,10 +6309,13 @@ msgid "" "business customers in other EU countries in a way that works for all " "organizers. Use custom rules instead." msgstr "" +"Tính năng này sẽ bị xóa trong tương lai vì nó không xử lý VAT cho các khách " +"hàng không kinh doanh ở các quốc gia EU khác theo cách hoạt động cho tất cả " +"các nhà tổ chức." #: pretix/base/models/tax.py:365 msgid "DEPRECATED" -msgstr "" +msgstr "Không dùng nữa" #: pretix/base/models/tax.py:366 msgid "" @@ -6080,46 +6325,47 @@ msgid "" "different EU countries who entered a valid EU VAT ID. Only enable this " "option after consulting a tax counsel. No warranty given for correct tax " "calculation. USE AT YOUR OWN RISK." -msgstr "" +msgstr "Không được khuyến nghị." #: pretix/base/models/tax.py:374 pretix/plugins/stripe/payment.py:299 msgid "Merchant country" -msgstr "" +msgstr "Quốc gia thương gia" #: pretix/base/models/tax.py:376 msgid "" "Your country of residence. This is the country the EU reverse charge rule " "will not apply in, if configured above." -msgstr "" +msgstr "Quốc gia cư trú của bạn." #: pretix/base/models/tax.py:412 msgid "You need to set your home country to use the reverse charge feature." -msgstr "" +msgstr "Bạn cần phải đặt đất nước của bạn để sử dụng tính năng sạc ngược." #: pretix/base/models/tax.py:416 pretix/control/forms/event.py:1560 msgid "" "A combination of this tax code with a non-zero tax rate does not make sense." msgstr "" +"Một sự kết hợp của mã số thuế này với mức thuế suất khác không có ý nghĩa." #: pretix/base/models/tax.py:421 pretix/control/forms/event.py:1564 msgid "" "A combination of this tax code with a zero tax rate does not make sense." -msgstr "" +msgstr "Một sự kết hợp của mã số thuế này với mức thuế suất không có ý nghĩa." #: pretix/base/models/tax.py:426 -#, python-brace-format +#, fuzzy, python-brace-format msgid "incl. {rate}% {name}" -msgstr "" +msgstr "bao gồm." #: pretix/base/models/tax.py:428 -#, python-brace-format +#, fuzzy, python-brace-format msgid "plus {rate}% {name}" -msgstr "" +msgstr "cộng với {Rate}% {name}" #: pretix/base/models/tax.py:430 #: pretix/control/templates/pretixcontrol/event/tax_index.html:46 msgid "reverse charge enabled" -msgstr "" +msgstr "Kích hoạt điện tích ngược" #: pretix/base/models/tax.py:568 msgctxt "invoice" @@ -6127,31 +6373,33 @@ msgid "" "Reverse Charge: According to Article 194, 196 of Council Directive 2006/112/" "EEC, VAT liability rests with the service recipient." msgstr "" +"Phí đảo ngược: Theo Điều 194, 196 của Chỉ thị của Hội đồng 2006/112/EEC, " +"Trách nhiệm VAT thuộc về người nhận dịch vụ." #: pretix/base/models/tax.py:574 msgctxt "invoice" msgid "VAT liability rests with the service recipient." -msgstr "" +msgstr "Trách nhiệm thuế VAT thuộc về người nhận dịch vụ." #: pretix/base/models/vouchers.py:171 msgid "No effect" -msgstr "" +msgstr "Không có tác dụng" #: pretix/base/models/vouchers.py:172 msgid "Set product price to" -msgstr "" +msgstr "Đặt giá sản phẩm thành" #: pretix/base/models/vouchers.py:173 msgid "Subtract from product price" -msgstr "" +msgstr "Trừ giá sản phẩm" #: pretix/base/models/vouchers.py:174 msgid "Reduce product price by (%)" -msgstr "" +msgstr "Giảm giá sản phẩm bằng (%)" #: pretix/base/models/vouchers.py:197 msgid "Number of times this voucher can be redeemed." -msgstr "" +msgstr "Số lần chứng từ này có thể được đổi." #: pretix/base/models/vouchers.py:201 pretix/control/views/vouchers.py:120 msgid "Redeemed" @@ -6165,6 +6413,8 @@ msgid "" "usages in some cases can be lower than this limit, e.g. in case of " "cancellations." msgstr "" +"Nếu được đặt thành nhiều hơn một, chứng từ phải được đổi cho nhiều sản phẩm " +"này khi nó được sử dụng lần đầu tiên." #: pretix/base/models/vouchers.py:214 msgid "" @@ -6172,6 +6422,8 @@ msgid "" "voucher across all usages. If this is sum reached, the voucher can no longer " "be used." msgstr "" +"Đây là số tiền tiền tệ tối đa sẽ được giảm giá bằng cách sử dụng chứng từ " +"này trên tất cả các cách sử dụng." #: pretix/base/models/vouchers.py:227 msgid "" @@ -6179,12 +6431,17 @@ msgid "" "quotas, such that it is guaranteed that anyone with this voucher code does " "receive a ticket." msgstr "" +"Nếu được kích hoạt, chứng từ này sẽ được điều chỉnh từ hạn ngạch của sản " +"phẩm bị ảnh hưởng, sao cho được đảm bảo rằng bất kỳ ai có mã chứng từ này " +"đều nhận được vé." #: pretix/base/models/vouchers.py:235 msgid "" "If activated, a holder of this voucher code can buy tickets, even if there " "are none left." msgstr "" +"Nếu được kích hoạt, một người giữ mã chứng từ này có thể mua vé, ngay cả khi " +"không còn lại." #: pretix/base/models/vouchers.py:254 pretix/control/forms/vouchers.py:69 msgid "" @@ -6192,40 +6449,44 @@ msgid "" "of a specific product, you can also select a quota. In this case, all " "products assigned to this quota can be selected." msgstr "" +"Sản phẩm này được thêm vào giỏ hàng của người dùng nếu phiếu mua hàng được " +"đổi." #: pretix/base/models/vouchers.py:265 msgid "This variation of the product select above is being used." -msgstr "" +msgstr "Biến thể này của sản phẩm chọn ở trên đang được sử dụng." #: pretix/base/models/vouchers.py:274 msgid "" "If enabled, the voucher is valid for any product affected by this quota." msgstr "" +"Nếu được bật, chứng từ có giá trị cho bất kỳ sản phẩm nào bị ảnh hưởng bởi " +"hạn ngạch này." #: pretix/base/models/vouchers.py:281 msgid "Specific seat" -msgstr "" +msgstr "Ghế cụ thể" #: pretix/base/models/vouchers.py:288 msgid "" "You can use this field to group multiple vouchers together. If you enter the " "same value for multiple vouchers, you can get statistics on how many of them " "have been redeemed etc." -msgstr "" +msgstr "Bạn có thể sử dụng trường này để nhóm nhiều chứng từ lại với nhau." #: pretix/base/models/vouchers.py:313 pretix/control/navigation.py:267 #: pretix/control/templates/pretixcontrol/vouchers/index.html:6 #: pretix/control/templates/pretixcontrol/vouchers/index.html:8 msgid "Vouchers" -msgstr "" +msgstr "Chứng từ" #: pretix/base/models/vouchers.py:339 msgid "You cannot select a quota that belongs to a different event." -msgstr "" +msgstr "Bạn không thể chọn một hạn ngạch thuộc về một sự kiện khác." #: pretix/base/models/vouchers.py:341 msgid "You cannot select a quota and a specific product at the same time." -msgstr "" +msgstr "Bạn không thể chọn một hạn ngạch và một sản phẩm cụ thể cùng một lúc." #: pretix/base/models/vouchers.py:344 msgid "" @@ -6233,63 +6494,74 @@ msgid "" "as part of a bundle, since vouchers cannot be applied to add-on products or " "bundled products." msgstr "" +"Bạn không thể chọn một sản phẩm chỉ có sẵn dưới dạng sản phẩm bổ sung hoặc " +"là một phần của gói, vì chứng từ không thể được áp dụng cho các sản phẩm bổ " +"sung hoặc sản phẩm đi kèm." #: pretix/base/models/vouchers.py:348 msgid "You cannot select a product that belongs to a different event." -msgstr "" +msgstr "Bạn không thể chọn một sản phẩm thuộc về một sự kiện khác." #: pretix/base/models/vouchers.py:350 pretix/base/models/vouchers.py:360 msgid "" "You cannot select a variation without having selected a product that " "provides variations." msgstr "" +"Bạn không thể chọn một biến thể mà không chọn một sản phẩm cung cấp các biến " +"thể." #: pretix/base/models/vouchers.py:353 msgid "This variation does not belong to this product." -msgstr "" +msgstr "Biến thể này không thuộc về sản phẩm này." #: pretix/base/models/vouchers.py:355 msgid "It is currently not possible to create vouchers for add-on products." -msgstr "" +msgstr "Hiện tại không thể tạo chứng từ cho các sản phẩm bổ sung." #: pretix/base/models/vouchers.py:357 pretix/base/models/vouchers.py:469 msgid "" "You need to select a specific product or quota if this voucher should " "reserve tickets." msgstr "" +"Bạn cần chọn một sản phẩm hoặc hạn ngạch cụ thể nếu phiếu mua hàng này sẽ " +"đặt vé." #: pretix/base/models/vouchers.py:367 -#, python-format +#, fuzzy, python-format msgid "" "This voucher has already been redeemed %(redeemed)s times. You cannot reduce " "the maximum number of usages below this number." -msgstr "" +msgstr "Voucher này đã được đổi %(đã đổi) lần." #: pretix/base/models/vouchers.py:376 msgid "" "The maximum number of usages may not be lower than the minimum number of " "usages." msgstr "" +"Số lượng sử dụng tối đa có thể không thấp hơn số lượng sử dụng tối thiểu." #: pretix/base/models/vouchers.py:382 pretix/base/models/vouchers.py:451 msgid "" "If you want this voucher to block quota, you need to select a specific date." -msgstr "" +msgstr "Nếu bạn muốn chứng từ này chặn hạn ngạch, bạn cần chọn một ngày cụ thể." #: pretix/base/models/vouchers.py:384 msgid "You can not select a subevent if your event is not an event series." msgstr "" +"Bạn không thể chọn Subevent nếu sự kiện của bạn không phải là chuỗi sự kiện." #: pretix/base/models/vouchers.py:482 msgid "" "You cannot create a voucher that blocks quota as the selected product or " "quota is currently sold out or completely reserved." msgstr "" +"Bạn không thể tạo một chứng từ chặn hạn ngạch vì sản phẩm hoặc hạn ngạch " +"được chọn hiện đang được bán hết hoặc hoàn toàn dành riêng." #: pretix/base/models/vouchers.py:504 #, python-brace-format msgid "The specified seat ID \"{id}\" does not exist for this event." -msgstr "" +msgstr "ID ghế được chỉ định \"{id} \" không tồn tại cho sự kiện này." #: pretix/base/models/vouchers.py:508 #, python-brace-format @@ -6297,65 +6569,67 @@ msgid "" "The seat \"{id}\" is currently unavailable (blocked, already sold or a " "different voucher)." msgstr "" +"Ghế \"{id} \" hiện không có sẵn (bị chặn, đã được bán hoặc một phiếu mua " +"hàng khác)." #: pretix/base/models/waitinglist.py:64 msgid "On waiting list since" -msgstr "" +msgstr "Danh sách chờ đợi kể từ khi" #: pretix/base/models/waitinglist.py:84 msgid "Assigned voucher" -msgstr "" +msgstr "Voucher được chỉ định" #: pretix/base/models/waitinglist.py:93 msgid "The product the user waits for." -msgstr "" +msgstr "Sản phẩm mà người dùng chờ đợi." #: pretix/base/models/waitinglist.py:101 msgid "The variation of the product selected above." -msgstr "" +msgstr "Biến thể của sản phẩm được chọn ở trên." #: pretix/base/models/waitinglist.py:113 msgid "Waiting list entry" -msgstr "" +msgstr "Nhập danh sách chờ" #: pretix/base/models/waitinglist.py:114 msgid "Waiting list entries" -msgstr "" +msgstr "Danh sách chờ các mục nhập" #: pretix/base/models/waitinglist.py:159 msgid "This product is currently not available." -msgstr "" +msgstr "Sản phẩm này hiện không có sẵn." #: pretix/base/models/waitinglist.py:186 msgid "No seat with this product is currently available." -msgstr "" +msgstr "Không có chỗ ngồi với sản phẩm này hiện có sẵn." #: pretix/base/models/waitinglist.py:189 msgid "A voucher has already been sent to this person." -msgstr "" +msgstr "Một chứng từ đã được gửi cho người này." #: pretix/base/models/waitinglist.py:191 msgid "This entry is anonymized and can no longer be used." -msgstr "" +msgstr "Mục nhập này được ẩn danh và không còn có thể được sử dụng." #: pretix/base/models/waitinglist.py:204 #, python-brace-format msgid "Automatically created from waiting list entry for {email}" -msgstr "" +msgstr "tự động được tạo từ mục nhập danh sách chờ cho {email}" #: pretix/base/models/waitinglist.py:297 msgid "The selected item does not belong to this event." -msgstr "" +msgstr "Mục được chọn không thuộc về sự kiện này." #: pretix/base/models/waitinglist.py:299 msgid "Please select a specific variation of this product." -msgstr "" +msgstr "Vui lòng chọn một biến thể cụ thể của sản phẩm này." #: pretix/base/models/waitinglist.py:317 msgid "" "You are already on this waiting list! We will notify you as soon as we have " "a ticket available for you." -msgstr "" +msgstr "Bạn đã có trong danh sách chờ này!" #: pretix/base/notifications.py:192 pretix/control/navigation.py:193 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:20 @@ -6363,101 +6637,101 @@ msgstr "" #: pretix/control/templates/pretixcontrol/subevents/index.html:7 msgctxt "subevent" msgid "Dates" -msgstr "" +msgstr "Ngày" #: pretix/base/notifications.py:200 #: pretix/control/templates/pretixcontrol/order/index.html:678 #: pretix/plugins/reports/accountingreport.py:317 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:441 msgid "Net total" -msgstr "" +msgstr "Tổng số ròng" #: pretix/base/notifications.py:202 msgid "Pending amount" -msgstr "" +msgstr "Số tiền đang chờ xử lý" #: pretix/base/notifications.py:204 pretix/control/forms/filter.py:211 #: pretix/control/forms/modelimport.py:81 msgid "Order status" -msgstr "" +msgstr "Trạng thái đặt hàng" #: pretix/base/notifications.py:222 msgid "Purchased products" -msgstr "" +msgstr "Sản phẩm đã mua" #: pretix/base/notifications.py:223 pretix/base/services/placeholders.py:384 #: pretix/base/services/placeholders.py:393 #: pretix/base/templates/pretixbase/email/order_details.html:141 msgid "View order details" -msgstr "" +msgstr "Xem chi tiết đơn hàng" #: pretix/base/notifications.py:234 #, python-brace-format msgid "A new order has been placed: {order.code}" -msgstr "" +msgstr "Một đơn đặt hàng mới đã được đặt: {order.code}" #: pretix/base/notifications.py:240 #, python-brace-format msgid "A new order has been placed that requires approval: {order.code}" -msgstr "" +msgstr "Một đơn đặt hàng mới đã được đặt yêu cầu phê duyệt: {order.code}" #: pretix/base/notifications.py:246 #, python-brace-format msgid "Order {order.code} has been marked as paid." -msgstr "" +msgstr "Đặt hàng {order.code} đã được đánh dấu là thanh toán." #: pretix/base/notifications.py:252 #, python-brace-format msgid "Order {order.code} has been canceled." -msgstr "" +msgstr "Đặt hàng {order.code} đã bị hủy." #: pretix/base/notifications.py:258 #, python-brace-format msgid "Order {order.code} has been reactivated." -msgstr "" +msgstr "Đặt hàng {order.code} đã được kích hoạt lại." #: pretix/base/notifications.py:264 #, python-brace-format msgid "Order {order.code} has been marked as expired." -msgstr "" +msgstr "Đặt hàng {order.code} đã được đánh dấu là hết hạn." #: pretix/base/notifications.py:270 #, python-brace-format msgid "The ticket information of order {order.code} has been changed." -msgstr "" +msgstr "Thông tin vé của đơn đặt hàng {order.code} đã được thay đổi." #: pretix/base/notifications.py:276 #, python-brace-format msgid "The contact address of order {order.code} has been changed." -msgstr "" +msgstr "Địa chỉ liên hệ của đơn đặt hàng {order.code} đã được thay đổi." #: pretix/base/notifications.py:282 #, python-brace-format msgid "Order {order.code} has been changed." -msgstr "" +msgstr "Đặt hàng {order.code} đã được thay đổi." #: pretix/base/notifications.py:287 msgid "Order has been overpaid" -msgstr "" +msgstr "Lệnh đã được trả quá cao" #: pretix/base/notifications.py:288 #, python-brace-format msgid "Order {order.code} has been overpaid." -msgstr "" +msgstr "Đặt hàng {order.code} đã được trả quá nhiều." #: pretix/base/notifications.py:294 #, python-brace-format msgid "An external refund for {order.code} has occurred." -msgstr "" +msgstr "Đã hoàn lại tiền bên ngoài cho {order.code} đã xảy ra." #: pretix/base/notifications.py:299 msgid "Refund requested" -msgstr "" +msgstr "Yêu cầu hoàn lại tiền" #: pretix/base/notifications.py:300 #, python-brace-format msgid "You have been requested to issue a refund for {order.code}." -msgstr "" +msgstr "Bạn đã được yêu cầu cấp tiền hoàn lại cho {order.code}." #: pretix/base/payment.py:86 msgctxt "payment" @@ -6472,25 +6746,27 @@ msgstr "" #: pretix/base/payment.py:256 #: pretix/presale/templates/pretixpresale/event/order.html:116 msgid "Pay now" -msgstr "" +msgstr "Thanh toán ngay" #: pretix/base/payment.py:330 msgid "Enable payment method" -msgstr "" +msgstr "Bật phương thức thanh toán" #: pretix/base/payment.py:336 msgid "" "Users will not be able to choose this payment provider before the given date." msgstr "" +"Người dùng sẽ không thể chọn nhà cung cấp thanh toán này trước ngày đã cho." #: pretix/base/payment.py:342 msgid "" "Users will not be able to choose this payment provider after the given date." msgstr "" +"Người dùng sẽ không thể chọn nhà cung cấp thanh toán này sau ngày đã cho." #: pretix/base/payment.py:347 msgid "Minimum order total" -msgstr "" +msgstr "Tổng số đơn hàng tối thiểu" #: pretix/base/payment.py:348 msgid "" @@ -6498,10 +6774,12 @@ msgid "" "exceeds the given value. The order total for this purpose may be computed " "without taking the fees imposed by this payment method into account." msgstr "" +"Khoản thanh toán này sẽ chỉ khả dụng nếu tổng số đơn hàng bằng hoặc vượt quá " +"giá trị đã cho." #: pretix/base/payment.py:358 msgid "Maximum order total" -msgstr "" +msgstr "Tổng số đơn hàng tối đa" #: pretix/base/payment.py:359 msgid "" @@ -6509,35 +6787,39 @@ msgid "" "the given value. The order total for this purpose may be computed without " "taking the fees imposed by this payment method into account." msgstr "" +"Khoản thanh toán này sẽ chỉ khả dụng nếu tổng số đơn hàng bằng hoặc dưới giá " +"trị đã cho." #: pretix/base/payment.py:369 pretix/base/payment.py:378 msgid "Additional fee" -msgstr "" +msgstr "Phí bổ sung" #: pretix/base/payment.py:370 msgid "Absolute value" -msgstr "" +msgstr "Giá trị tuyệt đối" #: pretix/base/payment.py:379 msgid "Percentage of the order total." -msgstr "" +msgstr "Tỷ lệ phần trăm của tổng số đơn hàng." #: pretix/base/payment.py:385 msgid "Calculate the fee from the total value including the fee." -msgstr "" +msgstr "Tính phí từ tổng giá trị bao gồm cả phí." #: pretix/base/payment.py:386 -#, python-brace-format +#, fuzzy, python-brace-format msgid "" "We recommend to enable this if you want your users to pay the payment fees " "of your payment provider. Click here for detailed information on what this does. " "Don't forget to set the correct fees above!" msgstr "" +"Chúng tôi khuyên bạn nên kích hoạt điều này nếu bạn muốn người dùng của bạn " +"thanh toán phí thanh toán của nhà cung cấp thanh toán của bạn." #: pretix/base/payment.py:394 msgid "Text on invoices" -msgstr "" +msgstr "Văn bản trên hóa đơn" #: pretix/base/payment.py:395 msgid "" @@ -6546,10 +6828,12 @@ msgid "" "order is paid. If the invoice is generated later, it will show a text " "stating that it has already been paid." msgstr "" +"Sẽ được in ngay bên dưới số liệu thanh toán và trên văn bản đóng trên hóa " +"đơn." #: pretix/base/payment.py:404 msgid "Restrict to countries" -msgstr "" +msgstr "Hạn chế cho các quốc gia" #: pretix/base/payment.py:406 msgid "" @@ -6557,275 +6841,298 @@ msgid "" "selected countries. If you don't select any country, all countries are " "allowed. This is only enabled if the invoice address is required." msgstr "" +"Chỉ cho phép chọn nhà cung cấp thanh toán này cho địa chỉ hóa đơn ở các quốc " +"gia được chọn." #: pretix/base/payment.py:425 msgid "" "Only allow the usage of this payment provider in the selected sales channels." msgstr "" +"Chỉ cho phép sử dụng nhà cung cấp thanh toán này trong các kênh bán hàng " +"được chọn." #: pretix/base/payment.py:429 msgid "Hide payment method" -msgstr "" +msgstr "ẩn phương thức thanh toán" #: pretix/base/payment.py:432 msgid "" "The payment method will not be shown by default but only to people who enter " "the shop through a special link." msgstr "" +"Phương thức thanh toán sẽ không được hiển thị theo mặc định mà chỉ cho những " +"người vào cửa hàng thông qua một liên kết đặc biệt." #: pretix/base/payment.py:438 msgid "Link to enable payment method" -msgstr "" +msgstr "Liên kết để Bật phương thức thanh toán" #: pretix/base/payment.py:447 msgid "Share this link with customers who should use this payment method." msgstr "" +"Chia sẻ liên kết này với khách hàng nên sử dụng phương thức thanh toán này." #: pretix/base/payment.py:452 msgid "Do not send a payment reminder mail" -msgstr "" +msgstr "Không gửi thư nhắc nhở thanh toán" #: pretix/base/payment.py:453 msgid "" "Users will not receive a reminder mail to pay for their order before it " "expires if they have chosen this payment method." msgstr "" +"Người dùng sẽ không nhận được thư nhắc nhở để thanh toán cho đơn đặt hàng " +"của họ trước khi hết hạn nếu họ đã chọn phương thức thanh toán này." #: pretix/base/payment.py:500 msgctxt "invoice" msgid "The payment for this invoice has already been received." -msgstr "" +msgstr "Khoản thanh toán cho hóa đơn này đã được nhận." #: pretix/base/payment.py:970 msgid "" "This payment is already being processed and can not be canceled any more." -msgstr "" +msgstr "Khoản thanh toán này đã được xử lý và không thể bị hủy nữa." #: pretix/base/payment.py:984 msgid "Automatic refunds are not supported by this payment provider." -msgstr "" +msgstr "Hoàn tiền tự động không được nhà cung cấp thanh toán này hỗ trợ." #: pretix/base/payment.py:1075 msgid "" "No payment is required as this order only includes products which are free " "of charge." msgstr "" +"Không có khoản thanh toán nào được yêu cầu vì đơn hàng này chỉ bao gồm các " +"sản phẩm miễn phí." #: pretix/base/payment.py:1082 msgid "Free of charge" -msgstr "" +msgstr "Miễn phí" #: pretix/base/payment.py:1114 msgid "Box office" -msgstr "" +msgstr "Phòng vé" #: pretix/base/payment.py:1162 pretix/base/payment.py:1181 #: pretix/plugins/manualpayment/apps.py:30 #: pretix/plugins/manualpayment/apps.py:33 #: pretix/plugins/manualpayment/apps.py:39 msgid "Manual payment" -msgstr "" +msgstr "Thanh toán thủ công" #: pretix/base/payment.py:1167 pretix/plugins/banktransfer/payment.py:202 msgid "" "In test mode, you can just manually mark this order as paid in the backend " "after it has been created." msgstr "" +"Trong chế độ kiểm tra, bạn có thể đánh dấu thủ công thứ tự này theo cách " +"được trả trong phần phụ trợ sau khi nó được tạo." #: pretix/base/payment.py:1188 pretix/base/payment.py:1332 #: pretix/plugins/banktransfer/payment.py:156 msgid "Payment method name" -msgstr "" +msgstr "Tên phương thức thanh toán" #: pretix/base/payment.py:1192 msgid "Payment process description during checkout" -msgstr "" +msgstr "Mô tả quy trình thanh toán trong quá trình thanh toán" #: pretix/base/payment.py:1193 msgid "" "This text will be shown during checkout when the user selects this payment " "method. It should give a short explanation on this payment method." msgstr "" +"Văn bản này sẽ được hiển thị trong khi thanh toán khi người dùng chọn phương " +"thức thanh toán này." #: pretix/base/payment.py:1198 msgid "Payment process description in order confirmation emails" -msgstr "" +msgstr "Mô tả quy trình thanh toán theo thứ tự email xác nhận" #: pretix/base/payment.py:1199 -#, python-brace-format +#, fuzzy, python-brace-format msgid "" "This text will be included for the {payment_info} placeholder in order " "confirmation mails. It should instruct the user on how to proceed with the " "payment. You can use the placeholders {order}, {amount}, {currency} and " "{amount_with_currency}." msgstr "" +"Văn bản này sẽ được bao gồm cho trình giữ chỗ {payal_info} theo thứ tự thư " +"xác nhận." #: pretix/base/payment.py:1206 msgid "Payment process description for pending orders" -msgstr "" +msgstr "Mô tả quy trình thanh toán cho các đơn đặt hàng đang chờ xử lý" #: pretix/base/payment.py:1207 -#, python-brace-format +#, fuzzy, python-brace-format msgid "" "This text will be shown on the order confirmation page for pending orders. " "It should instruct the user on how to proceed with the payment. You can use " "the placeholders {order}, {amount}, {currency} and {amount_with_currency}." msgstr "" +"Văn bản này sẽ được hiển thị trên trang Xác nhận đơn hàng cho các đơn đặt " +"hàng đang chờ xử lý." #: pretix/base/payment.py:1215 pretix/plugins/banktransfer/payment.py:151 msgid "" "Create an invoice for orders using bank transfer immediately if the event is " "otherwise configured to create invoices after payment is completed." msgstr "" +"Tạo hóa đơn cho các đơn đặt hàng bằng cách sử dụng chuyển khoản ngân hàng " +"ngay lập tức nếu sự kiện được cấu hình để tạo hóa đơn sau khi hoàn tất thanh " +"toán." #: pretix/base/payment.py:1266 msgid "Offsetting" -msgstr "" +msgstr "Bồi thường" #: pretix/base/payment.py:1280 pretix/control/views/orders.py:1265 msgid "You entered an order that could not be found." -msgstr "" +msgstr "Bạn đã nhập một đơn đặt hàng không thể tìm thấy." #: pretix/base/payment.py:1309 #, python-format msgid "Balanced against orders: %s" -msgstr "" +msgstr "Cân bằng với đơn đặt hàng: %s" #: pretix/base/payment.py:1338 msgid "Payment method description" -msgstr "" +msgstr "Mô tả phương thức thanh toán" #: pretix/base/payment.py:1355 msgid "In test mode, only test cards will work." -msgstr "" +msgstr "Trong chế độ kiểm tra, chỉ có thẻ kiểm tra sẽ hoạt động." #: pretix/base/payment.py:1436 pretix/base/payment.py:1501 #: pretix/base/payment.py:1546 pretix/base/payment.py:1548 msgid "This gift card does not support this currency." -msgstr "" +msgstr "Thẻ quà tặng này không hỗ trợ loại tiền này." #: pretix/base/payment.py:1438 pretix/base/payment.py:1504 #: pretix/base/payment.py:1554 msgid "This gift card can only be used in test mode." -msgstr "" +msgstr "Thẻ quà tặng này chỉ có thể được sử dụng ở chế độ thử nghiệm." #: pretix/base/payment.py:1440 pretix/base/payment.py:1507 #: pretix/base/payment.py:1556 msgid "Only test gift cards can be used in test mode." -msgstr "" +msgstr "Chỉ có thể sử dụng thẻ quà tặng thử nghiệm ở chế độ thử nghiệm." #: pretix/base/payment.py:1442 pretix/base/payment.py:1510 #: pretix/base/payment.py:1558 msgid "This gift card is no longer valid." -msgstr "" +msgstr "Thẻ quà tặng này không còn hợp lệ." #: pretix/base/payment.py:1444 pretix/base/payment.py:1513 msgid "All credit on this gift card has been used." -msgstr "" +msgstr "Tất cả tín dụng trên thẻ quà tặng này đã được sử dụng." #: pretix/base/payment.py:1448 msgid "This gift card is already used for your payment." -msgstr "" +msgstr "Thẻ quà tặng này đã được sử dụng để thanh toán của bạn." #: pretix/base/payment.py:1463 pretix/base/payment.py:1493 #: pretix/base/payment.py:1536 msgid "You cannot pay with gift cards when buying a gift card." -msgstr "" +msgstr "Bạn không thể thanh toán bằng thẻ quà tặng khi mua thẻ quà tặng." #: pretix/base/payment.py:1467 msgid "Please enter the code of your gift card." -msgstr "" +msgstr "Vui lòng nhập mã thẻ quà tặng của bạn." #: pretix/base/payment.py:1483 pretix/base/payment.py:1526 msgid "" "You entered a voucher instead of a gift card. Vouchers can only be entered " "on the first page of the shop below the product selection." -msgstr "" +msgstr "Bạn đã nhập một chứng từ thay vì thẻ quà tặng." #: pretix/base/payment.py:1486 pretix/base/payment.py:1529 msgid "This gift card is not known." -msgstr "" +msgstr "Thẻ quà tặng này không được biết đến." #: pretix/base/payment.py:1488 pretix/base/payment.py:1531 msgid "" "This gift card can not be redeemed since its code is not unique. Please " "contact the organizer of this event." msgstr "" +"Thẻ quà tặng này không thể được đổi vì mã của nó không phải là duy nhất." #: pretix/base/payment.py:1550 msgid "This gift card is not accepted by this event organizer." -msgstr "" +msgstr "Thẻ quà tặng này không được người tổ chức sự kiện này chấp nhận." #: pretix/base/payment.py:1552 msgid "This gift card was used in the meantime. Please try again." -msgstr "" +msgstr "Thẻ quà tặng này đã được sử dụng trong lúc này." #: pretix/base/pdf.py:96 msgid "Ticket code (barcode content)" -msgstr "" +msgstr "Mã vé (Nội dung mã vạch)" #: pretix/base/pdf.py:108 msgid "Order position number" -msgstr "" +msgstr "Số vị trí đặt hàng" #: pretix/base/pdf.py:116 msgid "Order code and position number" -msgstr "" +msgstr "Mã đặt hàng và số vị trí" #: pretix/base/pdf.py:121 pretix/control/forms/event.py:1768 #: pretix/control/templates/pretixcontrol/items/index.html:38 msgid "Product name" -msgstr "" +msgstr "Tên sản phẩm" #: pretix/base/pdf.py:122 pretix/base/services/tickets.py:101 #: pretix/control/views/event.py:844 pretix/control/views/pdf.py:94 msgid "Sample product" -msgstr "" +msgstr "Sản phẩm mẫu" #: pretix/base/pdf.py:126 msgid "Variation name" -msgstr "" +msgstr "Tên biến thể" #: pretix/base/pdf.py:127 msgid "Sample variation" -msgstr "" +msgstr "Biến thể mẫu" #: pretix/base/pdf.py:131 msgid "Product description" -msgstr "" +msgstr "Mô tả sản phẩm" #: pretix/base/pdf.py:132 pretix/base/services/tickets.py:102 #: pretix/control/views/event.py:845 pretix/control/views/pdf.py:95 msgid "Sample product description" -msgstr "" +msgstr "Mô tả sản phẩm mẫu" #: pretix/base/pdf.py:136 msgid "Product name and variation" -msgstr "" +msgstr "Tên sản phẩm và biến thể" #: pretix/base/pdf.py:137 msgid "Sample product – sample variation" -msgstr "" +msgstr "Sản phẩm mẫu - Biến thể mẫu" #: pretix/base/pdf.py:144 msgid "Product variation description" -msgstr "" +msgstr "Mô tả biến thể sản phẩm" #: pretix/base/pdf.py:145 msgid "Sample product variation description" -msgstr "" +msgstr "Mô tả biến thể sản phẩm mẫu" #: pretix/base/pdf.py:152 msgid "Ticket category" -msgstr "" +msgstr "Thể loại vé" #: pretix/base/pdf.py:159 pretix/base/pdf.py:164 msgid "123.45 EUR" -msgstr "" +msgstr "123,45 EUR" #: pretix/base/pdf.py:163 msgid "Price including add-ons" -msgstr "" +msgstr "Giá bao gồm cả tiện ích bổ sung" #: pretix/base/pdf.py:173 pretix/base/pdf.py:331 #: pretix/base/services/invoices.py:476 @@ -6843,18 +7150,18 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:181 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:184 msgid "Attendee company" -msgstr "" +msgstr "Công ty tham dự" #: pretix/base/pdf.py:178 pretix/base/pdf.py:336 #: pretix/base/services/tickets.py:119 pretix/control/views/pdf.py:110 #: pretix/control/views/pdf.py:116 pretix/control/views/pdf.py:123 #: pretix/control/views/pdf.py:128 msgid "Sample company" -msgstr "" +msgstr "Công ty mẫu" #: pretix/base/pdf.py:182 msgid "Full attendee address" -msgstr "" +msgstr "Địa chỉ người tham dự đầy đủ" #: pretix/base/pdf.py:183 msgid "" @@ -6864,50 +7171,52 @@ msgid "" "12345 Any City\n" "Atlantis" msgstr "" +"John Doe NSample Company Nsesame Street 42 N12345 Bất kỳ thành phố nào " +"Natlantis" #: pretix/base/pdf.py:187 msgid "Attendee street" -msgstr "" +msgstr "Đường tham dự" #: pretix/base/pdf.py:192 msgid "Attendee ZIP code" -msgstr "" +msgstr "Mã zip tham dự" #: pretix/base/pdf.py:197 msgid "Attendee city" -msgstr "" +msgstr "Thành phố tham dự" #: pretix/base/pdf.py:202 msgid "Attendee state" -msgstr "" +msgstr "Nhà nước tham dự" #: pretix/base/pdf.py:207 msgid "Attendee country" -msgstr "" +msgstr "Quốc gia tham dự" #: pretix/base/pdf.py:219 msgid "Pseudonymization ID (lead scanning)" -msgstr "" +msgstr "ID giả danh (quét chì)" #: pretix/base/pdf.py:225 pretix/base/pdf.py:230 msgid "Sample event name" -msgstr "" +msgstr "Tên sự kiện mẫu" #: pretix/base/pdf.py:235 msgid "May 31st, 2017" -msgstr "" +msgstr "Ngày 31 tháng 5 năm 2017" #: pretix/base/pdf.py:239 msgid "Event date range" -msgstr "" +msgstr "Phạm vi ngày sự kiện" #: pretix/base/pdf.py:240 msgid "May 31st – June 4th, 2017" -msgstr "" +msgstr "ngày 31 tháng 5 - 4 tháng 6 năm 2017" #: pretix/base/pdf.py:244 msgid "Event begin date and time" -msgstr "" +msgstr "Sự kiện bắt đầu ngày và giờ" #: pretix/base/pdf.py:245 msgid "2017-05-31 20:00" @@ -6915,7 +7224,7 @@ msgstr "" #: pretix/base/pdf.py:252 msgid "Event begin date" -msgstr "" +msgstr "Ngày bắt đầu sự kiện" #: pretix/base/pdf.py:253 pretix/base/pdf.py:279 pretix/base/pdf.py:388 #: pretix/base/pdf.py:412 pretix/base/pdf.py:436 pretix/base/pdf.py:460 @@ -6925,15 +7234,15 @@ msgstr "" #: pretix/base/pdf.py:260 msgid "Event begin time" -msgstr "" +msgstr "Sự kiện bắt đầu thời gian" #: pretix/base/pdf.py:261 msgid "20:00" -msgstr "" +msgstr "20: 00" #: pretix/base/pdf.py:265 msgid "Event begin weekday" -msgstr "" +msgstr "Sự kiện bắt đầu ngày trong tuần" #: pretix/base/pdf.py:266 pretix/base/pdf.py:295 #: pretix/base/services/checkin.py:362 pretix/control/forms/filter.py:1240 @@ -6942,7 +7251,7 @@ msgstr "Thứ Sáu" #: pretix/base/pdf.py:270 msgid "Event end date and time" -msgstr "" +msgstr "Ngày và giờ kết thúc sự kiện" #: pretix/base/pdf.py:271 msgid "2017-05-31 22:00" @@ -6950,15 +7259,15 @@ msgstr "" #: pretix/base/pdf.py:287 msgid "22:00" -msgstr "" +msgstr "22: 00" #: pretix/base/pdf.py:294 msgid "Event end weekday" -msgstr "" +msgstr "Sự kiện kết thúc ngày trong tuần" #: pretix/base/pdf.py:299 msgid "Event admission date and time" -msgstr "" +msgstr "Ngày và giờ nhập học sự kiện" #: pretix/base/pdf.py:300 pretix/base/pdf.py:396 pretix/base/pdf.py:420 #: pretix/base/pdf.py:444 pretix/base/pdf.py:468 pretix/base/pdf.py:511 @@ -6967,28 +7276,28 @@ msgstr "" #: pretix/base/pdf.py:307 msgid "Event admission time" -msgstr "" +msgstr "Thời gian nhập học sự kiện" #: pretix/base/pdf.py:308 pretix/base/pdf.py:404 pretix/base/pdf.py:428 #: pretix/base/pdf.py:452 pretix/base/pdf.py:476 msgid "19:00" -msgstr "" +msgstr "19: 00" #: pretix/base/pdf.py:315 msgid "Event location" -msgstr "" +msgstr "Vị trí sự kiện" #: pretix/base/pdf.py:316 pretix/base/settings.py:1134 msgid "Random City" -msgstr "" +msgstr "Thành phố ngẫu nhiên" #: pretix/base/pdf.py:335 msgid "Invoice address company" -msgstr "" +msgstr "Công ty địa chỉ hóa đơn" #: pretix/base/pdf.py:341 msgid "Sesame Street 42" -msgstr "" +msgstr "Đường Sesame 42" #: pretix/base/pdf.py:346 msgid "12345" @@ -6996,15 +7305,15 @@ msgstr "" #: pretix/base/pdf.py:351 pretix/base/services/invoices.py:479 msgid "Sample city" -msgstr "" +msgstr "Thành phố mẫu" #: pretix/base/pdf.py:355 msgid "Invoice address state" -msgstr "" +msgstr "Trạng thái địa chỉ hóa đơn" #: pretix/base/pdf.py:356 msgid "Sample State" -msgstr "" +msgstr "Trạng thái mẫu" #: pretix/base/pdf.py:361 msgid "Atlantis" @@ -7012,150 +7321,150 @@ msgstr "" #: pretix/base/pdf.py:365 msgid "List of Add-Ons" -msgstr "" +msgstr "Danh sách các tiện ích bổ sung" #: pretix/base/pdf.py:366 msgid "" "Add-on 1\n" "2x Add-on 2" -msgstr "" +msgstr "Bổ trợ 1 n2x bổ sung 2" #: pretix/base/pdf.py:372 pretix/control/forms/filter.py:1380 #: pretix/control/forms/filter.py:1382 #: pretix/control/templates/pretixcontrol/organizers/index.html:42 msgid "Organizer name" -msgstr "" +msgstr "Tên nhà tổ chức" #: pretix/base/pdf.py:373 msgid "Event organizer company" -msgstr "" +msgstr "Công ty tổ chức sự kiện" #: pretix/base/pdf.py:377 msgid "Organizer info text" -msgstr "" +msgstr "Văn bản thông tin tổ chức" #: pretix/base/pdf.py:378 msgid "Event organizer info text" -msgstr "" +msgstr "Văn bản thông tin tổ chức sự kiện" #: pretix/base/pdf.py:382 pretix/base/pdf.py:383 msgid "Event info text" -msgstr "" +msgstr "Văn bản thông tin sự kiện" #: pretix/base/pdf.py:387 msgid "Printing date" -msgstr "" +msgstr "Ngày in" #: pretix/base/pdf.py:395 msgid "Printing date and time" -msgstr "" +msgstr "Ngày và giờ in" #: pretix/base/pdf.py:403 msgid "Printing time" -msgstr "" +msgstr "Thời gian in" #: pretix/base/pdf.py:411 pretix/control/forms/item.py:731 msgid "Purchase date" -msgstr "" +msgstr "Ngày mua" #: pretix/base/pdf.py:419 msgid "Purchase date and time" -msgstr "" +msgstr "Ngày và giờ mua hàng" #: pretix/base/pdf.py:427 msgid "Purchase time" -msgstr "" +msgstr "Thời gian mua" #: pretix/base/pdf.py:435 msgid "Validity start date" -msgstr "" +msgstr "Ngày bắt đầu hiệu lực" #: pretix/base/pdf.py:443 msgid "Validity start date and time" -msgstr "" +msgstr "Ngày và giờ bắt đầu hợp lệ" #: pretix/base/pdf.py:451 msgid "Validity start time" -msgstr "" +msgstr "Thời gian bắt đầu hiệu lực" #: pretix/base/pdf.py:459 msgid "Validity end date" -msgstr "" +msgstr "Ngày kết thúc hiệu lực" #: pretix/base/pdf.py:467 msgid "Validity end date and time" -msgstr "" +msgstr "Ngày và giờ kết thúc hợp lệ" #: pretix/base/pdf.py:475 msgid "Validity end time" -msgstr "" +msgstr "Thời gian kết thúc hợp lệ" #: pretix/base/pdf.py:483 msgid "Reusable Medium ID" -msgstr "" +msgstr "ID trung bình có thể tái sử dụng" #: pretix/base/pdf.py:488 msgid "Seat: Full name" -msgstr "" +msgstr "Ghế: Tên đầy đủ" #: pretix/base/pdf.py:489 msgid "Ground floor, Row 3, Seat 4" -msgstr "" +msgstr "Tầng trệt, Hàng 3, Ghế 4" #: pretix/base/pdf.py:491 pretix/base/pdf.py:497 #: pretix/control/forms/orders.py:332 msgid "General admission" -msgstr "" +msgstr "Nhập học chung" #: pretix/base/pdf.py:494 msgid "Seat: zone" -msgstr "" +msgstr "Ghế: Khu vực" #: pretix/base/pdf.py:495 msgid "Ground floor" -msgstr "" +msgstr "Tầng trệt" #: pretix/base/pdf.py:500 msgid "Seat: row" -msgstr "" +msgstr "Ghế: Hàng" #: pretix/base/pdf.py:505 msgid "Seat: seat number" -msgstr "" +msgstr "Ghế: Số ghế" #: pretix/base/pdf.py:510 msgid "Date and time of first scan" -msgstr "" +msgstr "Ngày và giờ quét lần đầu tiên" #: pretix/base/pdf.py:516 msgid "Gift card: Issuance date" -msgstr "" +msgstr "Thẻ quà tặng: Ngày phát hành" #: pretix/base/pdf.py:521 msgid "Gift card: Expiration date" -msgstr "" +msgstr "Thẻ quà tặng: Ngày hết hạn" #: pretix/base/pdf.py:562 pretix/base/pdf.py:600 pretix/base/pdf.py:606 #: pretix/plugins/badges/exporters.py:504 #: pretix/plugins/ticketoutputpdf/exporters.py:102 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Question: {question}" -msgstr "" +msgstr "Câu hỏi: {câu hỏi}" #: pretix/base/pdf.py:601 pretix/base/pdf.py:607 -#, python-brace-format +#, fuzzy, python-brace-format msgid "" -msgstr "" +msgstr "" #: pretix/base/pdf.py:648 msgid "Attendee name for salutation" -msgstr "" +msgstr "Tên người tham dự để chào" #: pretix/base/pdf.py:649 pretix/base/pdf.py:672 #: pretix/base/services/placeholders.py:696 #: pretix/control/forms/organizer.py:661 msgid "Mr Doe" -msgstr "" +msgstr "Ông Doe" #: pretix/base/pdf.py:655 pretix/base/pdf.py:662 #: pretix/plugins/badges/exporters.py:501 @@ -7164,20 +7473,20 @@ msgstr "" #: pretix/plugins/ticketoutputpdf/exporters.py:99 #, python-brace-format msgid "Attendee name: {part}" -msgstr "" +msgstr "Tên người tham dự: {part}" #: pretix/base/pdf.py:671 msgid "Invoice address name for salutation" -msgstr "" +msgstr "Tên địa chỉ hóa đơn cho lời chào" #: pretix/base/pdf.py:678 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Invoice address name: {part}" -msgstr "" +msgstr "Tên địa chỉ hóa đơn: {phần}" #: pretix/base/pdf.py:1278 msgid "Your layout file is not a valid layout. Error message: {}" -msgstr "" +msgstr "Tệp bố cục của bạn không phải là bố cục hợp lệ." #: pretix/base/reldate.py:35 msgid "Event start" @@ -7193,101 +7502,103 @@ msgstr "Ghi danh sự kiện" #: pretix/base/reldate.py:38 msgid "Presale start" -msgstr "" +msgstr "Bắt đầu trước" #: pretix/base/reldate.py:39 msgid "Presale end" -msgstr "" +msgstr "Kết thúc trước" #: pretix/base/reldate.py:183 msgid "before" -msgstr "" +msgstr "Trước đây" #: pretix/base/reldate.py:184 msgid "after" -msgstr "" +msgstr "Sau" #: pretix/base/reldate.py:292 pretix/base/reldate.py:456 msgid "Fixed date:" -msgstr "" +msgstr "Ngày cố định:" #: pretix/base/reldate.py:293 pretix/base/reldate.py:457 msgid "Relative date:" -msgstr "" +msgstr "Ngày tương đối:" #: pretix/base/reldate.py:294 msgid "Relative time:" -msgstr "" +msgstr "Thời gian tương đối:" #: pretix/base/reldate.py:302 pretix/base/reldate.py:460 msgid "Not set" -msgstr "" +msgstr "Không được đặt" #: pretix/base/secrets.py:119 msgid "Random (default, works with all pretix apps)" -msgstr "" +msgstr "ngẫu nhiên (mặc định, hoạt động với tất cả các ứng dụng Pretix)" #: pretix/base/secrets.py:150 msgid "" "pretix signature scheme 1 (for very large events, changes semantics of " "offline scanning – please refer to documentation or support for details)" msgstr "" +"Sơ đồ chữ ký Pretix 1 (cho các sự kiện rất lớn, thay đổi ngữ nghĩa của quét " +"ngoại tuyến - vui lòng tham khảo tài liệu hoặc hỗ trợ để biết chi tiết)" #: pretix/base/services/cancelevent.py:229 #: pretix/base/services/cancelevent.py:287 msgid "Event canceled" -msgstr "" +msgstr "Sự kiện bị hủy" #: pretix/base/services/cart.py:102 pretix/base/services/modelimport.py:194 #: pretix/base/services/orders.py:151 msgid "" "We were not able to process your request completely as the server was too " "busy. Please try again." -msgstr "" +msgstr "Chúng tôi không thể xử lý hoàn toàn yêu cầu của bạn vì máy chủ quá bận." #: pretix/base/services/cart.py:105 pretix/presale/views/cart.py:262 msgid "You did not select any products." -msgstr "" +msgstr "Bạn đã không chọn bất kỳ sản phẩm nào." #: pretix/base/services/cart.py:106 msgid "Unknown cart position." -msgstr "" +msgstr "Vị trí xe không xác định." #: pretix/base/services/cart.py:107 msgctxt "subevent" msgid "No date was specified." -msgstr "" +msgstr "Không có ngày nào được chỉ định." #: pretix/base/services/cart.py:108 pretix/base/services/orders.py:188 msgid "You selected a product which is not available for sale." -msgstr "" +msgstr "Bạn đã chọn một sản phẩm không có sẵn để bán." #: pretix/base/services/cart.py:110 msgid "" "Some of the products you selected are no longer available. Please see below " "for details." -msgstr "" +msgstr "Một số sản phẩm bạn đã chọn không còn có sẵn." #: pretix/base/services/cart.py:114 msgid "" "Some of the products you selected are no longer available in the quantity " "you selected. Please see below for details." -msgstr "" +msgstr "Một số sản phẩm bạn đã chọn không còn có sẵn với số lượng bạn đã chọn." #: pretix/base/services/cart.py:118 -#, python-format +#, fuzzy, python-format msgid "" "Some of the products you selected are no longer available. The following " "products are affected and have not been added to your cart: %s" -msgstr "" +msgstr "Một số sản phẩm bạn đã chọn không còn có sẵn." #: pretix/base/services/cart.py:122 -#, python-format +#, fuzzy, python-format msgid "" "Some of the products you selected are no longer available in the quantity " "you selected. The following products are affected and have not been added to " "your cart: %s" -msgstr "" +msgstr "Một số sản phẩm bạn đã chọn không còn có sẵn với số lượng bạn đã chọn." #: pretix/base/services/cart.py:127 #, python-format @@ -7323,41 +7634,45 @@ msgstr[0] "" #: pretix/presale/templates/pretixpresale/event/index.html:171 #: pretix/presale/views/waiting.py:145 pretix/presale/views/widget.py:788 msgid "The booking period for this event has not yet started." -msgstr "" +msgstr "Thời gian đặt phòng cho sự kiện này vẫn chưa bắt đầu." #: pretix/base/services/cart.py:146 msgid "The booking period for this event has ended." -msgstr "" +msgstr "Thời gian đặt phòng cho sự kiện này đã kết thúc." #: pretix/base/services/cart.py:147 msgid "" "All payments for this event need to be confirmed already, so no new orders " "can be created." msgstr "" +"Tất cả các khoản thanh toán cho sự kiện này cần được xác nhận, vì vậy không " +"có đơn đặt hàng mới nào có thể được tạo." #: pretix/base/services/cart.py:149 msgid "" "The booking period for this event has not yet started. The affected " "positions have been removed from your cart." -msgstr "" +msgstr "Thời gian đặt phòng cho sự kiện này vẫn chưa bắt đầu." #: pretix/base/services/cart.py:152 pretix/base/services/orders.py:182 msgid "" "The booking period for one of the events in your cart has ended. The " "affected positions have been removed from your cart." msgstr "" +"Thời gian đặt phòng cho một trong những sự kiện trong giỏ hàng của bạn đã " +"kết thúc." #: pretix/base/services/cart.py:154 msgid "The entered price is not a number." -msgstr "" +msgstr "Giá nhập không phải là một số." #: pretix/base/services/cart.py:155 msgid "The entered price is to high." -msgstr "" +msgstr "Giá đã nhập là cao." #: pretix/base/services/cart.py:156 msgid "This voucher code is not known in our database." -msgstr "" +msgstr "Mã chứng từ này không được biết đến trong cơ sở dữ liệu của chúng tôi." #: pretix/base/services/cart.py:158 pretix/base/services/orders.py:157 #, python-format @@ -7384,45 +7699,48 @@ msgstr[0] "" #: pretix/base/services/cart.py:169 msgid "" "This voucher code has already been used the maximum number of times allowed." -msgstr "" +msgstr "Mã chứng từ này đã được sử dụng số lần tối đa cho phép." #: pretix/base/services/cart.py:171 -#, python-format +#, fuzzy, python-format msgid "" "This voucher code is currently locked since it is already contained in a " "cart. This might mean that someone else is redeeming this voucher right now, " "or that you tried to redeem it before but did not complete the checkout " "process. You can try to use it again in %d minutes." msgstr "" +"Mã chứng từ này hiện đang bị khóa vì nó đã được chứa trong một giỏ hàng." #: pretix/base/services/cart.py:176 -#, python-format +#, fuzzy, python-format msgid "This voucher code can only be redeemed %d more times." -msgstr "" +msgstr "Mã chứng từ này chỉ có thể được đổi %D nhiều lần hơn." #: pretix/base/services/cart.py:177 msgid "" "Applying a voucher to the whole cart should not be combined with other " "operations." msgstr "" +"Áp dụng một chứng từ cho toàn bộ giỏ hàng không nên được kết hợp với các " +"hoạt động khác." #: pretix/base/services/cart.py:179 msgid "" "You already used this voucher code. Remove the associated line from your " "cart if you want to use it for a different product." -msgstr "" +msgstr "Bạn đã sử dụng mã chứng từ này." #: pretix/base/services/cart.py:182 msgid "This voucher is expired." -msgstr "" +msgstr "Voucher này đã hết hạn." #: pretix/base/services/cart.py:183 msgid "This voucher is not valid for this product." -msgstr "" +msgstr "Voucher này không hợp lệ cho sản phẩm này." #: pretix/base/services/cart.py:184 msgid "This voucher is not valid for this seat." -msgstr "" +msgstr "Voucher này không có giá trị cho ghế này." #: pretix/base/services/cart.py:186 msgid "" @@ -7430,32 +7748,34 @@ msgid "" "for. If you want to add something new to your cart using that voucher, you " "can do so with the voucher redemption option on the bottom of the page." msgstr "" +"Chúng tôi không tìm thấy bất kỳ vị trí nào trong giỏ hàng của bạn mà chúng " +"tôi có thể sử dụng phiếu mua hàng này cho." #: pretix/base/services/cart.py:191 msgid "Your voucher is valid for a product that is currently not for sale." -msgstr "" +msgstr "Voucher của bạn có giá trị đối với một sản phẩm hiện không được bán." #: pretix/base/services/cart.py:192 msgctxt "subevent" msgid "This voucher is not valid for this event date." -msgstr "" +msgstr "Voucher này không hợp lệ cho ngày sự kiện này." #: pretix/base/services/cart.py:193 msgid "You need a valid voucher code to order this product." -msgstr "" +msgstr "Bạn cần một mã chứng từ hợp lệ để đặt hàng sản phẩm này." #: pretix/base/services/cart.py:194 msgctxt "subevent" msgid "The selected event date is not active." -msgstr "" +msgstr "Ngày sự kiện được chọn không hoạt động." #: pretix/base/services/cart.py:195 pretix/base/services/orders.py:189 msgid "You can not select an add-on for the selected product." -msgstr "" +msgstr "Bạn không thể chọn một tiện ích bổ sung cho sản phẩm đã chọn." #: pretix/base/services/cart.py:196 pretix/base/services/orders.py:190 msgid "You can not select two variations of the same add-on product." -msgstr "" +msgstr "Bạn không thể chọn hai biến thể của cùng một sản phẩm bổ trợ." #: pretix/base/services/cart.py:198 pretix/base/services/orders.py:192 #, python-format @@ -7478,120 +7798,127 @@ msgid_plural "" msgstr[0] "" #: pretix/base/services/cart.py:207 pretix/base/services/orders.py:201 -#, python-format +#, fuzzy, python-format msgid "" "You can select every add-on from the category %(cat)s for the product " "%(base)s at most once." msgstr "" +"Bạn có thể chọn mọi tiện ích bổ sung từ danh mục %(CAT) s cho sản phẩm %(cơ " +"sở) s nhiều nhất một lần." #: pretix/base/services/cart.py:208 msgid "" "One of the products you selected can only be bought as an add-on to another " "product." msgstr "" +"Một trong những sản phẩm bạn đã chọn chỉ có thể được mua dưới dạng tiện ích " +"bổ sung cho một sản phẩm khác." #: pretix/base/services/cart.py:209 msgid "One of the products you selected can only be bought part of a bundle." msgstr "" +"Một trong những sản phẩm bạn đã chọn chỉ có thể được mua một phần của gói." #: pretix/base/services/cart.py:211 msgid "Please select a valid seat." -msgstr "" +msgstr "Vui lòng chọn một chỗ ngồi hợp lệ." #: pretix/base/services/cart.py:212 msgid "You can not select a seat for this position." -msgstr "" +msgstr "Bạn không thể chọn một chỗ ngồi cho vị trí này." #: pretix/base/services/cart.py:214 msgid "You can not select the same seat multiple times." -msgstr "" +msgstr "Bạn không thể chọn cùng một chỗ ngồi nhiều lần." #: pretix/base/services/cart.py:215 msgid "" "You entered a gift card instead of a voucher. Gift cards can be entered " "later on when you're asked for your payment details." -msgstr "" +msgstr "Bạn đã nhập thẻ quà tặng thay vì chứng từ." #: pretix/base/services/cart.py:217 msgid "" "The configuration of this product requires mapping to a physical medium, " "which is currently not available online." msgstr "" +"Cấu hình của sản phẩm này yêu cầu ánh xạ tới phương tiện vật lý, hiện không " +"có sẵn trực tuyến." #: pretix/base/services/checkin.py:217 #: pretix/plugins/stripe/templates/pretixplugins/stripe/pending.html:69 msgid "Unknown reason" -msgstr "" +msgstr "Lý do không rõ" #: pretix/base/services/checkin.py:273 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Only allowed before {datetime}" -msgstr "" +msgstr "Chỉ được phép trước {DateTime}" #: pretix/base/services/checkin.py:275 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Only allowed after {datetime}" -msgstr "" +msgstr "Chỉ được phép sau {DateTime}" #: pretix/base/services/checkin.py:279 msgid "Attendee is checked out" -msgstr "" +msgstr "Người tham dự được kiểm tra" #: pretix/base/services/checkin.py:281 msgid "Attendee is already checked in" -msgstr "" +msgstr "Người tham dự đã được kiểm tra" #: pretix/base/services/checkin.py:286 msgid "Ticket type not allowed" -msgstr "" +msgstr "Không được phép loại vé" #: pretix/base/services/checkin.py:289 msgid "Wrong entrance gate" -msgstr "" +msgstr "Cổng vào sai" #: pretix/base/services/checkin.py:313 msgid "time since last entry" -msgstr "" +msgstr "Thời gian kể từ lần nhập cảnh cuối cùng" #: pretix/base/services/checkin.py:314 msgid "time since first entry" -msgstr "" +msgstr "Thời gian kể từ lần đầu tiên" #: pretix/base/services/checkin.py:315 msgid "number of days with an entry" -msgstr "" +msgstr "Số ngày có mục nhập" #: pretix/base/services/checkin.py:316 msgid "number of entries" -msgstr "" +msgstr "Số lượng mục" #: pretix/base/services/checkin.py:317 msgid "number of entries today" -msgstr "" +msgstr "Số lượng mục nhập hôm nay" #: pretix/base/services/checkin.py:318 -#, python-brace-format +#, fuzzy, python-brace-format msgid "number of entries since {datetime}" -msgstr "" +msgstr "Số lượng mục từ {DateTime}" #: pretix/base/services/checkin.py:319 -#, python-brace-format +#, fuzzy, python-brace-format msgid "number of entries before {datetime}" -msgstr "" +msgstr "Số lượng mục nhập trước {DateTime}" #: pretix/base/services/checkin.py:320 -#, python-brace-format +#, fuzzy, python-brace-format msgid "number of days with an entry since {datetime}" -msgstr "" +msgstr "Số ngày có mục từ {DateTime}" #: pretix/base/services/checkin.py:321 -#, python-brace-format +#, fuzzy, python-brace-format msgid "number of days with an entry before {datetime}" -msgstr "" +msgstr "Số ngày có mục trước {DateTime}" #: pretix/base/services/checkin.py:322 msgid "week day" -msgstr "" +msgstr "Ngày tuần" #: pretix/base/services/checkin.py:358 pretix/control/forms/filter.py:1236 msgid "Monday" @@ -7618,113 +7945,118 @@ msgid "Sunday" msgstr "Chủ Nhật" #: pretix/base/services/checkin.py:368 -#, python-brace-format +#, fuzzy, python-brace-format msgid "{variable} is not {value}" -msgstr "" +msgstr "{biến} không phải là {value}" #: pretix/base/services/checkin.py:370 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Maximum {variable} exceeded" -msgstr "" +msgstr "Tối đa {biến} đã vượt quá" #: pretix/base/services/checkin.py:372 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Minimum {variable} exceeded" -msgstr "" +msgstr "Tối thiểu {biến} vượt quá" #: pretix/base/services/checkin.py:374 -#, python-brace-format +#, fuzzy, python-brace-format msgid "{variable} is {value}" -msgstr "" +msgstr "{biến} là {value}" #: pretix/base/services/checkin.py:972 msgid "This order position has been canceled." -msgstr "" +msgstr "Vị trí đặt hàng này đã bị hủy bỏ." #: pretix/base/services/checkin.py:981 msgid "This ticket has been blocked." -msgstr "" +msgstr "Vé này đã bị chặn." #: pretix/base/services/checkin.py:990 msgid "This order is not yet approved." -msgstr "" +msgstr "Lệnh này chưa được phê duyệt." #: pretix/base/services/checkin.py:999 pretix/base/services/checkin.py:1003 -#, python-brace-format +#, fuzzy, python-brace-format msgid "This ticket is only valid after {datetime}." -msgstr "" +msgstr "Vé này chỉ hợp lệ sau {DateTime}." #: pretix/base/services/checkin.py:1013 pretix/base/services/checkin.py:1017 -#, python-brace-format +#, fuzzy, python-brace-format msgid "This ticket was only valid before {datetime}." -msgstr "" +msgstr "Vé này chỉ hợp lệ trước {DateTime}." #: pretix/base/services/checkin.py:1048 msgid "This order position has an invalid product for this check-in list." msgstr "" +"Vị trí đặt hàng này có một sản phẩm không hợp lệ cho danh sách nhận phòng " +"này." #: pretix/base/services/checkin.py:1057 msgid "This order position has an invalid date for this check-in list." msgstr "" +"Vị trí đặt hàng này có một ngày không hợp lệ cho danh sách nhận phòng này." #: pretix/base/services/checkin.py:1068 msgid "This order is not marked as paid." -msgstr "" +msgstr "Đơn hàng này không được đánh dấu là được trả tiền." #: pretix/base/services/checkin.py:1080 msgid "Evaluation of custom rules has failed." -msgstr "" +msgstr "Đánh giá các quy tắc tùy chỉnh đã thất bại." #: pretix/base/services/checkin.py:1090 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Entry not permitted: {explanation}." -msgstr "" +msgstr "mục nhập không được phép: {giải thích}." #: pretix/base/services/checkin.py:1099 msgid "You need to answer questions to complete this check-in." -msgstr "" +msgstr "Bạn cần trả lời các câu hỏi để hoàn thành việc đăng ký này." #: pretix/base/services/checkin.py:1152 msgid "This ticket has already been redeemed." -msgstr "" +msgstr "Vé này đã được đổi." #: pretix/base/services/currencies.py:38 pretix/base/services/currencies.py:39 msgid "European Central Bank" -msgstr "" +msgstr "Ngân hàng Trung ương châu Âu" #: pretix/base/services/currencies.py:40 msgid "Czech National Bank" -msgstr "" +msgstr "Ngân hàng Quốc gia Séc" #: pretix/base/services/export.py:86 pretix/base/services/export.py:157 #: pretix/base/services/export.py:215 msgid "Your export did not contain any data." -msgstr "" +msgstr "Xuất khẩu của bạn không chứa bất kỳ dữ liệu nào." #: pretix/base/services/export.py:151 msgid "You do not have sufficient permission to perform this export." -msgstr "" +msgstr "Bạn không có đủ quyền để thực hiện xuất khẩu này." #: pretix/base/services/export.py:189 msgid "Export failed" -msgstr "" +msgstr "Xuất khẩu không thành công" #: pretix/base/services/export.py:206 msgid "Permission denied." -msgstr "" +msgstr "sự cho phép bị từ chối." #: pretix/base/services/export.py:221 msgid "Your exported data exceeded the size limit for scheduled exports." msgstr "" +"Dữ liệu được xuất của bạn vượt quá giới hạn kích thước cho xuất khẩu theo " +"lịch trình." #: pretix/base/services/invoices.py:103 #, python-brace-format msgctxt "invoice" msgid "Please complete your payment before {expire_date}." -msgstr "" +msgstr "Vui lòng hoàn thành thanh toán của bạn trước {expire_date}." #: pretix/base/services/invoices.py:115 -#, python-brace-format +#, fuzzy, python-brace-format msgctxt "invoice" msgid "" "{i.company}\n" @@ -7733,31 +8065,33 @@ msgid "" "{i.zipcode} {i.city} {state}\n" "{country}" msgstr "" +"{i.company} n {i.name} n {i.street} n {i.zipcode} {i.city} {State} n " +"{Country}" #: pretix/base/services/invoices.py:220 pretix/base/services/invoices.py:257 -#, python-brace-format +#, fuzzy, python-brace-format msgctxt "invoice" msgid "Event location: {location}" -msgstr "" +msgstr "Vị trí sự kiện: {vị trí}" #: pretix/base/services/invoices.py:236 #, python-brace-format msgctxt "invoice" msgid "Attendee: {name}" -msgstr "" +msgstr "Người tham dự: {name}" #: pretix/base/services/invoices.py:254 pretix/plugins/reports/exporters.py:298 msgctxt "subevent" msgid "Date: {}" -msgstr "" +msgstr "Ngày: {}" #: pretix/base/services/invoices.py:469 msgid "A payment provider specific text might appear here." -msgstr "" +msgstr "Một văn bản cụ thể của nhà cung cấp thanh toán có thể xuất hiện ở đây." #: pretix/base/services/invoices.py:477 msgid "214th Example Street" -msgstr "" +msgstr "Đường ví dụ 214" #: pretix/base/services/invoices.py:478 msgid "012345" @@ -7765,19 +8099,19 @@ msgstr "" #: pretix/base/services/invoices.py:495 msgid "Sample product {}" -msgstr "" +msgstr "Sản phẩm mẫu {}" #: pretix/base/services/invoices.py:505 msgid "Sample product A" -msgstr "" +msgstr "Sản phẩm mẫu a" #: pretix/base/services/invoices.py:535 -#, python-brace-format +#, fuzzy, python-brace-format msgid "New invoice: {number}" -msgstr "" +msgstr "Hóa đơn mới: {Number}" #: pretix/base/services/invoices.py:537 -#, python-brace-format +#, fuzzy, python-brace-format msgid "" "Hello,\n" "\n" @@ -7786,68 +8120,80 @@ msgid "" "We are sending this email because you configured us to do so in your event " "settings." msgstr "" +"Xin chào, n na Hóa đơn mới cho đơn hàng {Order} tại {sự kiện} đã được tạo, " +"xem đính kèm." #: pretix/base/services/mail.py:121 msgid "This prefix has been set in your event or organizer settings." -msgstr "" +msgstr "Tiền tố này đã được đặt trong cài đặt sự kiện hoặc nhà tổ chức của bạn." #: pretix/base/services/mail.py:278 -#, python-brace-format +#, fuzzy, python-brace-format msgid "" "You are receiving this email because someone placed an order for {event} for " "you." msgstr "" +"Bạn đang nhận được email này vì ai đó đã đặt hàng cho {sự kiện} cho bạn." #: pretix/base/services/mail.py:282 pretix/base/services/mail.py:298 -#, python-brace-format +#, fuzzy, python-brace-format msgid "" "You can view your order details at the following URL:\n" "{orderurl}." msgstr "" +"Bạn có thể xem chi tiết đơn đặt hàng của mình tại URL sau: n {OrderURL}." #: pretix/base/services/mail.py:294 -#, python-brace-format +#, fuzzy, python-brace-format msgid "You are receiving this email because you placed an order for {event}." -msgstr "" +msgstr "Bạn đang nhận được email này vì bạn đã đặt hàng cho {sự kiện}." #: pretix/base/services/mail.py:478 msgctxt "attachment_filename" msgid "Calendar invite" -msgstr "" +msgstr "Lịch mời" #: pretix/base/services/memberships.py:108 -#, python-brace-format +#, fuzzy, python-brace-format msgid "" "You selected a membership for the product \"{product}\" which does not " "require a membership." msgstr "" +"Bạn đã chọn một thành viên cho sản phẩm \"{sản phẩm} \" không yêu cầu thành " +"viên." #: pretix/base/services/memberships.py:116 -#, python-brace-format +#, fuzzy, python-brace-format msgid "" "You selected the product \"{product}\" which requires an active membership " "to be selected." msgstr "" +"Bạn đã chọn sản phẩm \"{sản phẩm} \" yêu cầu phải chọn thành viên tích cực." #: pretix/base/services/memberships.py:149 msgid "" "You selected a membership that is connected to a different customer account." msgstr "" +"Bạn đã chọn một thành viên được kết nối với một tài khoản khách hàng khác." #: pretix/base/services/memberships.py:154 msgid "You selected membership that has been canceled." -msgstr "" +msgstr "Bạn đã chọn thành viên đã bị hủy bỏ." #: pretix/base/services/memberships.py:159 msgid "" "You can not use a test mode membership for tickets that are not in test mode." msgstr "" +"Bạn không thể sử dụng tư cách thành viên chế độ kiểm tra cho vé không ở chế " +"độ thử nghiệm." #: pretix/base/services/memberships.py:163 msgid "" "You need to add a test mode membership to the customer account to use it in " "test mode." msgstr "" +"Bạn cần thêm tư cách thành viên chế độ kiểm tra vào tài khoản khách hàng để " +"sử dụng nó ở chế độ kiểm tra." #: pretix/base/services/memberships.py:179 #, python-brace-format @@ -7855,6 +8201,8 @@ msgid "" "You selected a membership that is valid from {start} to {end}, but selected " "a ticket that starts to be valid on {date}." msgstr "" +"Bạn đã chọn một thành viên có giá trị từ {start} đến {end}, nhưng đã chọn " +"một vé bắt đầu hợp lệ trên {date}." #: pretix/base/services/memberships.py:188 #, python-brace-format @@ -7862,13 +8210,17 @@ msgid "" "You selected a membership that is valid from {start} to {end}, but selected " "an event taking place at {date}." msgstr "" +"Bạn đã chọn một thành viên có giá trị từ {start} đến {end}, nhưng đã chọn " +"một sự kiện diễn ra tại {date}." #: pretix/base/services/memberships.py:203 -#, python-brace-format +#, fuzzy, python-brace-format msgid "" "You selected a membership of type \"{type}\", which is not allowed for the " "product \"{product}\"." msgstr "" +"Bạn đã chọn một thành viên của Type \"{type} \", không được phép cho sản " +"phẩm \"{sản phẩm} \"." #: pretix/base/services/memberships.py:212 #, python-brace-format @@ -7876,25 +8228,31 @@ msgid "" "You are trying to use a membership of type \"{type}\" more than {number} " "times, which is the maximum amount." msgstr "" +"Bạn đang cố gắng sử dụng tư cách thành viên loại \"{type} \" nhiều hơn " +"{number} lần, là số tiền tối đa." #: pretix/base/services/memberships.py:227 -#, python-brace-format +#, fuzzy, python-brace-format msgid "" "You are trying to use a membership of type \"{type}\" for a ticket valid " "from {valid_from} until {valid_until}, however you already used the same " "membership for a different ticket that overlaps with this time frame " "({conflict_from} – {conflict_until})." msgstr "" +"Bạn đang cố gắng sử dụng tư cách thành viên của Type \"{type} \" cho một vé " +"hợp lệ từ {Valid_from} cho đến khi {Valid_until}, tuy nhiên bạn đã sử dụng " +"cùng một thành viên cho một vé khác trùng với khung thời gian này ({xung " +"đột_from} - {" #: pretix/base/services/memberships.py:231 #: pretix/base/services/memberships.py:233 msgid "start" -msgstr "" +msgstr "Bắt đầu" #: pretix/base/services/memberships.py:232 #: pretix/base/services/memberships.py:234 msgid "open end" -msgstr "" +msgstr "Kết thúc mở" #: pretix/base/services/memberships.py:244 #, python-brace-format @@ -7903,65 +8261,71 @@ msgid "" "place at {date}, however you already used the same membership for a " "different ticket at the same time." msgstr "" +"Bạn đang cố gắng sử dụng tư cách thành viên của Type \"{type} \" cho một sự " +"kiện diễn ra tại {date}, tuy nhiên bạn đã sử dụng cùng một thành viên cho " +"một vé khác cùng một lúc." #: pretix/base/services/modelimport.py:53 #, python-brace-format msgid "Error decoding special characters in your file: {message}" -msgstr "" +msgstr "Giải mã lỗi các ký tự đặc biệt trong tệp của bạn: {message}" #: pretix/base/services/modelimport.py:71 -#, python-brace-format +#, fuzzy, python-brace-format msgid "" "Error while importing value \"{value}\" for column \"{column}\" in line " "\"{line}\": {message}" msgstr "" +"Lỗi trong khi nhập giá trị \"{value} \" cho cột \"{cột} \" trong dòng " +"\"{line} \": {message}" #: pretix/base/services/modelimport.py:89 pretix/base/services/orders.py:1551 -#, python-format +#, fuzzy, python-format msgid "Orders cannot have more than %(max)s positions." -msgstr "" +msgstr "Đơn đặt hàng không thể có nhiều hơn các vị trí S (tối đa)." #: pretix/base/services/modelimport.py:124 #: pretix/base/services/modelimport.py:236 -#, python-brace-format +#, fuzzy, python-brace-format msgid "Invalid data in row {row}: {message}" -msgstr "" +msgstr "Dữ liệu không hợp lệ trong hàng {hàng}: {message}" #: pretix/base/services/modelimport.py:217 msgid "A voucher cannot be created without a code." -msgstr "" +msgstr "Một chứng từ không thể được tạo mà không có mã." #: pretix/base/services/orders.py:130 msgid "" "Some of the products you selected were no longer available. Please see below " "for details." -msgstr "" +msgstr "Một số sản phẩm bạn đã chọn không còn có sẵn." #: pretix/base/services/orders.py:134 msgid "" "Some of the products you selected were no longer available in the quantity " "you selected. Please see below for details." -msgstr "" +msgstr "Một số sản phẩm bạn đã chọn không còn có sẵn với số lượng bạn đã chọn." #: pretix/base/services/orders.py:138 msgid "" "The price of some of the items in your cart has changed in the meantime. " "Please see below for details." msgstr "" +"Giá của một số mặt hàng trong giỏ hàng của bạn đã thay đổi trong lúc này." #: pretix/base/services/orders.py:141 msgid "An internal error occurred, please try again." -msgstr "" +msgstr "Đã xảy ra lỗi nội bộ, vui lòng thử lại." #: pretix/base/services/orders.py:142 msgid "" "This order was changed by someone else simultaneously. Please check if your " "changes are still accurate and try again." -msgstr "" +msgstr "Đơn hàng này đã được thay đổi bởi người khác cùng một lúc." #: pretix/base/services/orders.py:144 msgid "Your cart is empty." -msgstr "" +msgstr "Giỏ hàng của bạn trống rỗng." #: pretix/base/services/orders.py:146 #, python-format @@ -7975,13 +8339,15 @@ msgstr[0] "" #: pretix/base/services/orders.py:155 msgid "The booking period has ended." -msgstr "" +msgstr "Thời gian đặt phòng đã kết thúc." #: pretix/base/services/orders.py:161 msgid "" "The voucher code used for one of the items in your cart is not known in our " "database." msgstr "" +"Mã chứng từ được sử dụng cho một trong các mục trong giỏ hàng của bạn không " +"được biết đến trong cơ sở dữ liệu của chúng tôi." #: pretix/base/services/orders.py:163 msgid "" @@ -7989,90 +8355,106 @@ msgid "" "used the maximum number of times allowed. We removed this item from your " "cart." msgstr "" +"Mã chứng từ được sử dụng cho một trong các mục trong giỏ hàng của bạn đã " +"được sử dụng số lần tối đa cho phép." #: pretix/base/services/orders.py:167 msgid "" "The voucher code used for one of the items in your cart has already been too " "often. We adjusted the price of the item in your cart." msgstr "" +"Mã chứng từ được sử dụng cho một trong các mục trong giỏ hàng của bạn đã quá " +"thường xuyên." #: pretix/base/services/orders.py:171 msgid "" "The voucher code used for one of the items in your cart is expired. We " "removed this item from your cart." msgstr "" +"Mã chứng từ được sử dụng cho một trong các mục trong giỏ hàng của bạn đã hết " +"hạn." #: pretix/base/services/orders.py:174 msgid "" "The voucher code used for one of the items in your cart is not valid for " "this item. We removed this item from your cart." msgstr "" +"Mã chứng từ được sử dụng cho một trong các mục trong giỏ hàng của bạn không " +"có giá trị cho mục này." #: pretix/base/services/orders.py:176 msgid "You need a valid voucher code to order one of the products." -msgstr "" +msgstr "Bạn cần một mã chứng từ hợp lệ để đặt hàng một trong các sản phẩm." #: pretix/base/services/orders.py:178 msgid "" "The booking period for one of the events in your cart has not yet started. " "The affected positions have been removed from your cart." msgstr "" +"Thời gian đặt phòng cho một trong những sự kiện trong giỏ hàng của bạn vẫn " +"chưa bắt đầu." #: pretix/base/services/orders.py:185 msgid "" "One of the seats in your order was invalid, we removed the position from " "your cart." msgstr "" +"Một trong những chỗ ngồi trong đơn đặt hàng của bạn không hợp lệ, chúng tôi " +"đã loại bỏ vị trí khỏi giỏ hàng của bạn." #: pretix/base/services/orders.py:186 msgid "" "One of the seats in your order has been taken in the meantime, we removed " "the position from your cart." msgstr "" +"Một trong những chỗ ngồi trong đơn đặt hàng của bạn đã được thực hiện trong " +"lúc này, chúng tôi đã loại bỏ vị trí khỏi giỏ hàng của bạn." #: pretix/base/services/orders.py:202 -#, python-format +#, fuzzy, python-format msgid "" "You cannot remove the position %(addon)s since it has already been checked " "in." -msgstr "" +msgstr "Bạn không thể xóa vị trí %(addon) vì nó đã được đăng ký." #: pretix/base/services/orders.py:203 msgid "Paid products not supported without a valid currency." -msgstr "" +msgstr "Sản phẩm trả phí không được hỗ trợ mà không có tiền tệ hợp lệ." #: pretix/base/services/orders.py:219 msgid "The order was not canceled." -msgstr "" +msgstr "Lệnh không bị hủy." #: pretix/base/services/orders.py:273 pretix/control/forms/orders.py:126 msgid "The new expiry date needs to be in the future." -msgstr "" +msgstr "Ngày hết hạn mới cần phải có trong tương lai." #: pretix/base/services/orders.py:367 pretix/base/services/orders.py:453 msgid "This order is not pending approval." -msgstr "" +msgstr "Lệnh này không chờ phê duyệt." #: pretix/base/services/orders.py:511 pretix/presale/views/order.py:928 #: pretix/presale/views/order.py:982 msgid "You cannot cancel this order." -msgstr "" +msgstr "Bạn không thể hủy đơn đặt hàng này." #: pretix/base/services/orders.py:523 -#, python-brace-format +#, fuzzy, python-brace-format msgid "" "This order can not be canceled since the gift card {card} purchased in this " "order has already been redeemed." msgstr "" +"Không thể hủy đơn đặt hàng này vì thẻ quà tặng {thẻ} đã mua theo thứ tự này " +"đã được đổi." #: pretix/base/services/orders.py:563 pretix/control/forms/orders.py:207 msgid "" "The cancellation fee cannot be higher than the total amount of this order." -msgstr "" +msgstr "Phí hủy không thể cao hơn tổng số lượng của đơn đặt hàng này." #: pretix/base/services/orders.py:958 msgid "The selected payment methods do not cover the total balance." -msgstr "" +msgstr "Các phương thức thanh toán được chọn không bao gồm tổng số dư." #: pretix/base/services/orders.py:1026 msgid "" @@ -8080,84 +8462,98 @@ msgid "" "changed. Either one of the prices changed just now, or a gift card you used " "has been used in the meantime. Please check the prices below and try again." msgstr "" +"Trong khi cố gắng đặt hàng của bạn, chúng tôi nhận thấy rằng tổng số đơn " +"hàng đã thay đổi." #: pretix/base/services/orders.py:1521 msgid "You need to select a variation of the product." -msgstr "" +msgstr "Bạn cần chọn một biến thể của sản phẩm." #: pretix/base/services/orders.py:1522 #, python-brace-format msgid "" "The quota {name} does not have enough capacity left to perform the operation." -msgstr "" +msgstr "Hạn ngạch {name} không còn đủ công suất để thực hiện thao tác." #: pretix/base/services/orders.py:1523 msgid "There is no quota defined that allows this operation." -msgstr "" +msgstr "Không có hạn ngạch được xác định cho phép hoạt động này." #: pretix/base/services/orders.py:1524 msgid "The selected product is not active or has no price set." -msgstr "" +msgstr "Sản phẩm được chọn không hoạt động hoặc không có giá." #: pretix/base/services/orders.py:1525 msgid "" "This operation would leave the order empty. Please cancel the order itself " "instead." -msgstr "" +msgstr "Hoạt động này sẽ để trống đơn hàng." #: pretix/base/services/orders.py:1527 msgid "" "This operation would make the order free and therefore immediately paid, " "however no quota is available." msgstr "" +"Hoạt động này sẽ làm cho đơn hàng miễn phí và do đó được thanh toán ngay lập " +"tức, tuy nhiên không có hạn ngạch nào." #: pretix/base/services/orders.py:1530 msgid "" "This is an add-on product, please select the base position it should be " "added to." msgstr "" +"Đây là một sản phẩm bổ sung, vui lòng chọn vị trí cơ sở mà nó nên được thêm " +"vào." #: pretix/base/services/orders.py:1531 msgid "" "The selected base position does not allow you to add this product as an add-" "on." msgstr "" +"Vị trí cơ sở được chọn không cho phép bạn thêm sản phẩm này dưới dạng tiện " +"ích bổ sung." #: pretix/base/services/orders.py:1532 msgid "You need to choose a subevent for the new position." -msgstr "" +msgstr "Bạn cần chọn một khu vực cho vị trí mới." #: pretix/base/services/orders.py:1535 -#, python-brace-format +#, fuzzy, python-brace-format msgid "" "You selected seat \"{seat}\" for a date that does not match the selected " "ticket date. Please choose a seat again." msgstr "" +"Bạn đã chọn chỗ ngồi \"{chỗ ngồi} \" cho một ngày không phù hợp với ngày vé " +"đã chọn." #: pretix/base/services/orders.py:1537 msgid "The selected product requires you to select a seat." -msgstr "" +msgstr "Sản phẩm được chọn yêu cầu bạn chọn một chỗ ngồi." #: pretix/base/services/orders.py:1538 msgid "The selected product does not allow to select a seat." -msgstr "" +msgstr "Sản phẩm đã chọn không cho phép chọn chỗ ngồi." #: pretix/base/services/orders.py:1539 msgid "The selected country is blocked by your tax rule." -msgstr "" +msgstr "Quốc gia được chọn bị chặn bởi quy tắc thuế của bạn." #: pretix/base/services/orders.py:1540 msgid "" "You cannot change the price of a position that has been used to issue a gift " "card." msgstr "" +"Bạn không thể thay đổi giá của một vị trí đã được sử dụng để cấp thẻ quà " +"tặng." #: pretix/base/services/orders.py:2365 pretix/base/services/orders.py:2382 -#, python-brace-format +#, fuzzy, python-brace-format msgid "" "A position can not be canceled since the gift card {card} purchased in this " "order has already been redeemed." msgstr "" +"Một vị trí không thể bị hủy vì thẻ quà tặng {thẻ} đã mua theo thứ tự này đã " +"được đổi." #: pretix/base/services/orders.py:3058 msgid "" From 053c713a2a9c06b63037c3b446200df7735b0186 Mon Sep 17 00:00:00 2001 From: Michael Dao Date: Fri, 6 Jun 2025 12:03:10 +0200 Subject: [PATCH 33/98] Translations: Update Vietnamese Currently translated at 24.5% (1448 of 5900 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/vi/ powered by weblate --- src/pretix/locale/vi/LC_MESSAGES/django.po | 173 ++++++++++----------- 1 file changed, 83 insertions(+), 90 deletions(-) diff --git a/src/pretix/locale/vi/LC_MESSAGES/django.po b/src/pretix/locale/vi/LC_MESSAGES/django.po index 6bccc86bca..712e4464dc 100644 --- a/src/pretix/locale/vi/LC_MESSAGES/django.po +++ b/src/pretix/locale/vi/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-30 10:35+0000\n" -"PO-Revision-Date: 2025-06-06 06:35+0000\n" +"PO-Revision-Date: 2025-06-06 18:00+0000\n" "Last-Translator: Michael Dao \n" "Language-Team: Vietnamese \n" @@ -406,14 +406,13 @@ msgid "Medium connected to other event" msgstr "Phương tiện kết nối với sự kiện khác" #: pretix/api/views/oauth.py:107 pretix/control/logdisplay.py:692 -#, fuzzy, python-brace-format +#, python-brace-format msgid "" "The application \"{application_name}\" has been authorized to access your " "account." msgstr "" -"Ứng dụng \"{application_name} \" đã được ủy quyền truy cập vào tài khoản " -"của bạn.Ứng dụng \"{application_name}\" đã được phép truy cập vào tài khoản " -"của bạn." +"Ứng dụng \"{application_name} \" đã được ủy quyền truy cập vào tài khoản của " +"bạn." #: pretix/api/views/order.py:607 pretix/control/views/orders.py:1609 #: pretix/presale/views/order.py:731 pretix/presale/views/order.py:804 @@ -628,9 +627,9 @@ msgid "Enter a postal code in the format XXXX." msgstr "Nhập mã bưu chính trong định dạng xxxx." #: pretix/base/auth.py:146 -#, fuzzy, python-brace-format +#, python-brace-format msgid "{system} User" -msgstr "{System} Người dùng" +msgstr "{system} Người dùng" #: pretix/base/auth.py:155 pretix/base/exporters/customers.py:67 #: pretix/base/exporters/orderlist.py:261 @@ -655,7 +654,7 @@ msgstr "{System} Người dùng" #: pretix/presale/templates/pretixpresale/event/checkout_customer.html:30 #: pretix/presale/templates/pretixpresale/event/order.html:300 msgid "Email" -msgstr "" +msgstr "Hộp thư điện tử" #: pretix/base/auth.py:157 pretix/base/forms/auth.py:164 #: pretix/base/forms/auth.py:218 pretix/base/models/auth.py:675 @@ -675,6 +674,8 @@ msgid_plural "" "Your password may not be the same as one of your %(history_length)s previous " "passwords." msgstr[0] "" +"Mật khẩu của bạn không được giống với một trong số %(history_length)s mật " +"khẩu trước." #: pretix/base/channels.py:168 msgid "Online shop" @@ -695,7 +696,7 @@ msgstr "" #: pretix/base/context.py:38 #, python-brace-format msgid "powered by {name} based on pretix" -msgstr "" +msgstr "xây dựng bởi {name}dựa trên pretix" #: pretix/base/context.py:48 #, python-brace-format @@ -703,9 +704,9 @@ msgid "powered by {name} based on pretix" msgstr " Được cung cấp bởi {name} dựa trên Pretix " #: pretix/base/context.py:55 -#, fuzzy, python-format +#, python-format msgid "ticketing powered by pretix" -msgstr " vé được cung cấp bởi Pretix " +msgstr " vé được cung cấp bởi Pretix " #: pretix/base/context.py:64 msgid "source code" @@ -717,10 +718,10 @@ msgid "Configuration option \"{name}\" is missing." msgstr "Tùy chọn cấu hình \"{name} \" bị thiếu." #: pretix/base/customersso/oidc.py:69 pretix/base/customersso/oidc.py:74 -#, fuzzy, python-brace-format +#, python-brace-format msgid "" "Unable to retrieve configuration from \"{url}\". Error message: \"{error}\"." -msgstr "Không thể truy xuất cấu hình từ \"{url} \"." +msgstr "Không thể truy xuất cấu hình từ \"{url} \". Lỗi: \"{error}\"." #: pretix/base/customersso/oidc.py:80 pretix/base/customersso/oidc.py:85 #: pretix/base/customersso/oidc.py:90 pretix/base/customersso/oidc.py:95 @@ -730,9 +731,9 @@ msgid "Incompatible SSO provider: \"{error}\"." msgstr "Nhà cung cấp SSO không tương thích: \"{error} \"." #: pretix/base/customersso/oidc.py:111 -#, fuzzy, python-brace-format +#, python-brace-format msgid "You are not requesting \"{scope}\"." -msgstr "Bạn không yêu cầu \"{phạm vi} \"." +msgstr "Bạn không yêu cầu \"{scope} \"." #: pretix/base/customersso/oidc.py:117 #, fuzzy, python-brace-format @@ -740,8 +741,8 @@ msgid "" "You are requesting scope \"{scope}\" but provider only supports these: " "{scopes}." msgstr "" -"Bạn đang yêu cầu phạm vi \"{phạm vi} \" nhưng nhà cung cấp chỉ hỗ trợ những " -"điều này: {phạm vi}." +"Bạn đang yêu cầu phạm vi quyền \"{scope} \" nhưng nhà cung cấp chỉ hỗ trợ " +"những phạm vi quyền này: {scope}." #: pretix/base/customersso/oidc.py:127 #, fuzzy, python-brace-format @@ -749,17 +750,17 @@ msgid "" "You are requesting field \"{field}\" but provider only supports these: " "{fields}." msgstr "" -"Bạn đang yêu cầu trường \"{field} \" nhưng nhà cung cấp chỉ hỗ trợ sau: " -"{trường}." +"Bạn đang yêu cầu trường \"{field} \" nhưng nhà cung cấp chỉ hỗ trợ sau: " +"{field}." #: pretix/base/customersso/oidc.py:219 pretix/base/customersso/oidc.py:226 #: pretix/base/customersso/oidc.py:245 pretix/base/customersso/oidc.py:262 #: pretix/base/customersso/oidc.py:269 pretix/presale/views/customer.py:743 #: pretix/presale/views/customer.py:753 pretix/presale/views/customer.py:792 #: pretix/presale/views/customer.py:866 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Login was not successful. Error message: \"{error}\"." -msgstr "Đăng nhập không thành công." +msgstr "Đăng nhập không thành công. Lỗi: \"{error}\"." #: pretix/base/customersso/oidc.py:252 msgid "" @@ -788,7 +789,7 @@ msgstr "Định dạng xuất" #: pretix/base/exporter.py:189 msgid "Excel (.xlsx)" -msgstr "" +msgstr "Bảng Excel (.xlsx)" #: pretix/base/exporter.py:190 pretix/base/exporter.py:312 msgid "CSV (with commas)" @@ -1103,9 +1104,9 @@ msgstr "" "Dekodi NREI." #: pretix/base/exporters/dekodi.py:105 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Event ticket {event}-{code}" -msgstr "Ticket Event {Event}-{Code}" +msgstr "Ticket Event {event}-{code}" #: pretix/base/exporters/dekodi.py:234 pretix/base/exporters/invoices.py:74 #: pretix/base/exporters/orderlist.py:128 @@ -1172,7 +1173,7 @@ msgstr "Tiền tệ sự kiện" #: pretix/base/exporters/events.py:61 pretix/base/models/auth.py:261 #: pretix/base/models/exports.py:133 pretix/control/forms/exports.py:93 msgid "Timezone" -msgstr "" +msgstr "Múi giờ" #: pretix/base/exporters/events.py:62 pretix/base/models/event.py:595 #: pretix/base/models/event.py:1489 pretix/base/settings.py:3263 @@ -1797,10 +1798,8 @@ msgstr "đòi hỏi sự chú ý đặc biệt" #: pretix/base/modelimport_orders.py:618 pretix/base/models/items.py:663 #: pretix/base/models/items.py:1249 pretix/base/models/orders.py:289 #: pretix/plugins/checkinlists/exporters.py:524 -#, fuzzy -#| msgid "Client ID" msgid "Check-in text" -msgstr "ID người dùng" +msgstr "Văn bản Check-in" #: pretix/base/exporters/items.py:91 pretix/base/models/items.py:668 #: pretix/base/models/items.py:1169 @@ -2021,19 +2020,19 @@ msgid "Order locale" msgstr "Đặt hàng địa phương" #: pretix/base/exporters/orderlist.py:275 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Gross at {rate} % tax" -msgstr "Tổng tại {tỷ lệ} % thuế" +msgstr "Tổng tại {rate} % thuế" #: pretix/base/exporters/orderlist.py:276 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Net at {rate} % tax" -msgstr "Net ở {tỷ lệ} % thuế" +msgstr "Net ở {rate} % thuế" #: pretix/base/exporters/orderlist.py:277 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Tax value at {rate} % tax" -msgstr "Giá trị thuế ở {tỷ lệ} % thuế" +msgstr "Giá trị thuế ở {rate} % thuế" #: pretix/base/exporters/orderlist.py:280 msgid "Invoice numbers" @@ -2071,9 +2070,9 @@ msgid "External customer ID" msgstr "ID khách hàng bên ngoài" #: pretix/base/exporters/orderlist.py:293 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Paid by {method}" -msgstr "được trả bởi {Phương thức}" +msgstr "được trả bởi {method}" #: pretix/base/exporters/orderlist.py:448 #: pretix/base/exporters/orderlist.py:894 @@ -2927,13 +2926,13 @@ msgid "You can use {markup_name} in this field." msgstr "Bạn có thể sử dụng {markup_name} trong trường này." #: pretix/base/forms/__init__.py:178 -#, fuzzy, python-format +#, python-format msgid "" "Due to technical reasons you cannot set inputs, that need to be masked (e.g. " "passwords), to %(value)s." msgstr "" "Vì lý do kỹ thuật, bạn không thể đặt đầu vào, cần được che dấu (ví dụ: mật " -"khẩu), thành %(giá trị) s." +"khẩu), thành %(value)s." #: pretix/base/forms/auth.py:61 pretix/base/forms/auth.py:179 msgid "Keep me logged in" @@ -3129,9 +3128,9 @@ msgid "" msgstr "Có một lỗi với cú pháp giữ chỗ của bạn." #: pretix/base/forms/validators.py:72 pretix/control/views/event.py:807 -#, fuzzy, python-format +#, python-format msgid "Invalid placeholder: {%(value)s}" -msgstr "Người giữ chỗ không hợp lệ: {%(giá trị) S}" +msgstr "Người giữ chỗ không hợp lệ: {%(value)s}" #: pretix/base/forms/widgets.py:68 #, python-format @@ -3139,9 +3138,9 @@ msgid "Sample: %s" msgstr "Mẫu: %s" #: pretix/base/forms/widgets.py:71 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Available placeholders: {list}" -msgstr "Người giữ chỗ có sẵn: {Danh sách}" +msgstr "Người giữ chỗ có sẵn: {list}" #: pretix/base/forms/widgets.py:214 pretix/base/models/items.py:1656 #: pretix/base/reldate.py:216 pretix/plugins/checkinlists/exporters.py:753 @@ -3159,10 +3158,10 @@ msgid "Individual customer" msgstr "Khách hàng cá nhân" #: pretix/base/invoice.py:138 -#, fuzzy, python-format +#, python-format msgctxt "invoice" msgid "Page %d of %d" -msgstr "Trang %D của %d" +msgstr "Trang %d của %d" #: pretix/base/invoice.py:375 msgctxt "invoice" @@ -3234,10 +3233,10 @@ msgid "Invoice {num}" msgstr "Hóa đơn {num}" #: pretix/base/invoice.py:621 -#, fuzzy, python-brace-format +#, python-brace-format msgctxt "invoice" msgid "Customer reference: {reference}" -msgstr "Tài liệu tham khảo khách hàng: {Tham khảo}" +msgstr "Mã khách hàng: {reference}" #: pretix/base/invoice.py:629 msgctxt "invoice" @@ -3275,7 +3274,7 @@ msgstr "Mô tả" #: pretix/base/invoice.py:682 pretix/base/invoice.py:690 msgctxt "invoice" msgid "Qty" -msgstr "" +msgstr "Số lượng" #: pretix/base/invoice.py:683 pretix/base/invoice.py:833 msgctxt "invoice" @@ -3290,7 +3289,7 @@ msgstr "net" #: pretix/base/invoice.py:685 msgctxt "invoice" msgid "Gross" -msgstr "" +msgstr "Tổng" #: pretix/base/invoice.py:691 msgctxt "invoice" @@ -3304,10 +3303,10 @@ msgid "Single price: {net_price} net / {gross_price} gross" msgstr "Giá đơn: {net_price} net / {gross_price} gross" #: pretix/base/invoice.py:724 -#, fuzzy, python-brace-format +#, python-brace-format msgctxt "invoice" msgid "Single price: {price}" -msgstr "Giá đơn: {Giá}" +msgstr "Đơn giá: {price}" #: pretix/base/invoice.py:742 pretix/base/invoice.py:748 msgctxt "invoice" @@ -3355,24 +3354,24 @@ msgid "Included taxes" msgstr "Bao gồm thuế" #: pretix/base/invoice.py:894 -#, fuzzy, python-brace-format +#, python-brace-format msgctxt "invoice" msgid "" "Using the conversion rate of 1:{rate} as published by the {authority} on " "{date}, this corresponds to:" msgstr "" -"Sử dụng tỷ lệ chuyển đổi là 1: {Rate} như được xuất bản bởi {Author} trên " -"{ngày}, điều này tương ứng với:" +"Sử dụng tỷ lệ chuyển đổi là 1: {rate} như được xuất bản bởi {authority} vào " +"ngày {date}, điều này tương ứng với:" #: pretix/base/invoice.py:909 -#, fuzzy, python-brace-format +#, python-brace-format msgctxt "invoice" msgid "" "Using the conversion rate of 1:{rate} as published by the {authority} on " "{date}, the invoice total corresponds to {total}." msgstr "" -"Sử dụng tỷ lệ chuyển đổi là 1: {Rate} như được xuất bản bởi {thẩm quyền} " -"trên {ngày}, tổng hóa đơn tương ứng với {Total}." +"Sử dụng tỷ lệ chuyển đổi là 1: {rate} như được xuất bản bởi {authority} vào " +"ngày {date}, tổng hóa đơn tương ứng với {total}." #: pretix/base/invoice.py:923 msgid "Default invoice renderer (European-style letter)" @@ -3388,10 +3387,10 @@ msgid "Simplified invoice renderer" msgstr "Kết xuất hóa đơn đơn giản hóa" #: pretix/base/invoice.py:1078 -#, fuzzy, python-brace-format +#, python-brace-format msgctxt "invoice" msgid "Event date: {date_range}" -msgstr "Sự kiện Ngày: {Date_Range}" +msgstr "Sự kiện Ngày: {date_range}" #: pretix/base/logentrytype_registry.py:43 msgid "" @@ -3404,31 +3403,29 @@ msgid "The relevant plugin is currently not active." msgstr "Plugin có liên quan hiện không hoạt động." #: pretix/base/logentrytypes.py:49 -#, fuzzy -#| msgid "Order canceled" msgid "(deleted)" -msgstr "Đã huỷ đơn hàng" +msgstr "(đã xóa)" #: pretix/base/logentrytypes.py:78 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Order {val}" -msgstr "Đặt hàng {Val}" +msgstr "Đơn hàng {val}" #: pretix/base/logentrytypes.py:90 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Voucher {val}…" -msgstr "Voucher {Val}" +msgstr "Voucher {val}" #: pretix/base/logentrytypes.py:102 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Product {val}" -msgstr "Sản phẩm {Val}" +msgstr "Sản phẩm {val}" #: pretix/base/logentrytypes.py:109 -#, fuzzy, python-brace-format +#, python-brace-format msgctxt "subevent" msgid "Date {val}" -msgstr "Ngày {Val}" +msgstr "Ngày {val}" #: pretix/base/logentrytypes.py:116 #, python-brace-format @@ -3436,14 +3433,14 @@ msgid "Quota {val}" msgstr "hạn ngạch {val}" #: pretix/base/logentrytypes.py:123 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Discount {val}" -msgstr "Giảm giá {Val}" +msgstr "Giảm giá {val}" #: pretix/base/logentrytypes.py:130 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Category {val}" -msgstr "Thể loại {Val}" +msgstr "Thể loại {val}" #: pretix/base/logentrytypes.py:137 #, python-brace-format @@ -3451,9 +3448,9 @@ msgid "Question {val}" msgstr "câu hỏi {val}" #: pretix/base/logentrytypes.py:144 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Tax rule {val}" -msgstr "Quy tắc thuế {Val}" +msgstr "Quy tắc thuế {val}" #: pretix/base/media.py:71 msgid "Barcode / QR-Code" @@ -3474,9 +3471,9 @@ msgid "Keep empty" msgstr "Giữ trống" #: pretix/base/modelimport.py:139 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Invalid setting for column \"{header}\"." -msgstr "Cài đặt không hợp lệ cho cột \"{tiêu đề} \"." +msgstr "Cài đặt không hợp lệ cho cột \"{header} \"." #: pretix/base/modelimport.py:199 #, python-brace-format @@ -3698,10 +3695,10 @@ msgid "Price mode" msgstr "Chế độ giá" #: pretix/base/modelimport_vouchers.py:150 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Could not parse {value} as a price mode, use one of {options}." msgstr "" -"Không thể phân tích {value} làm chế độ giá, hãy sử dụng một trong {Tùy chọn}." +"Không thể phân tích {value} làm chế độ giá, hãy sử dụng một trong {options}." #: pretix/base/modelimport_vouchers.py:160 pretix/base/models/vouchers.py:245 msgid "Voucher value" @@ -3744,7 +3741,7 @@ msgstr "Bạn cần chọn sản phẩm \"{prod} \" cho ghế này." #: pretix/control/templates/pretixcontrol/vouchers/tags.html:42 #: pretix/control/views/vouchers.py:120 msgid "Tag" -msgstr "" +msgstr "Đánh dấu" #: pretix/base/modelimport_vouchers.py:334 pretix/base/models/vouchers.py:297 msgid "Shows hidden products that match this voucher" @@ -3880,7 +3877,7 @@ msgstr "" #: pretix/base/models/checkin.py:85 pretix/control/navigation.py:640 #: pretix/control/templates/pretixcontrol/organizers/gates.html:5 msgid "Gates" -msgstr "" +msgstr "Cổng" #: pretix/base/models/checkin.py:86 msgid "" @@ -4041,10 +4038,8 @@ msgid "Profile data (name, addresses)" msgstr "Dữ liệu hồ sơ (tên, địa chỉ)" #: pretix/base/models/customers.py:414 -#, fuzzy -#| msgid "Client ID" msgid "Client type" -msgstr "ID người dùng" +msgstr "Loại người dùng" #: pretix/base/models/customers.py:417 msgid "Grant type" @@ -4118,10 +4113,8 @@ msgid "Event series handling" msgstr "Xử lý chuỗi sự kiện" #: pretix/base/models/discount.py:101 -#, fuzzy -#| msgid "All events (including newly created ones)" msgid "Apply to all products (including newly created ones)" -msgstr "Tất cả các sự kiện (bao gồm cả sự kiện mới tạo)" +msgstr "Áp dụng cho tất cả sản phẩm(bao gồm cả sản phẩm mới tạo)" #: pretix/base/models/discount.py:105 msgid "Apply to specific products" @@ -4600,7 +4593,7 @@ msgstr "ID thuế: %s" #, python-format msgctxt "invoice" msgid "VAT-ID: %s" -msgstr "" +msgstr "Mã VAT: %s" #: pretix/base/models/items.py:93 msgid "Category name" @@ -4670,9 +4663,9 @@ msgid "Product categories" msgstr "Danh mục sản phẩm" #: pretix/base/models/items.py:149 -#, fuzzy, python-brace-format +#, python-brace-format msgid "{category} ({category_type})" -msgstr "{thể loại} ({cated_type})" +msgstr "{category} ({category_type})" #: pretix/base/models/items.py:155 msgid "Add-on category" From b7228ff5b83623b5c3d65e45d9766e646af70c1d Mon Sep 17 00:00:00 2001 From: Tim Maurizio Dullaart Date: Mon, 9 Jun 2025 21:08:42 +0200 Subject: [PATCH 34/98] Translations: Update Dutch Currently translated at 100.0% (5900 of 5900 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/nl/ powered by weblate --- src/pretix/locale/nl/LC_MESSAGES/django.po | 168 +++++++-------------- 1 file changed, 57 insertions(+), 111 deletions(-) diff --git a/src/pretix/locale/nl/LC_MESSAGES/django.po b/src/pretix/locale/nl/LC_MESSAGES/django.po index ed7800cfec..cbeb723106 100644 --- a/src/pretix/locale/nl/LC_MESSAGES/django.po +++ b/src/pretix/locale/nl/LC_MESSAGES/django.po @@ -7,16 +7,16 @@ msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-30 10:35+0000\n" -"PO-Revision-Date: 2025-05-01 02:00+0000\n" -"Last-Translator: Foxy Hunter \n" -"Language-Team: Dutch \n" +"PO-Revision-Date: 2025-06-10 04:00+0000\n" +"Last-Translator: Tim Maurizio Dullaart \n" +"Language-Team: Dutch " +"\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.11.1\n" +"X-Generator: Weblate 5.11.4\n" #: pretix/_base_settings.py:87 msgid "English" @@ -88,7 +88,7 @@ msgstr "Grieks" #: pretix/_base_settings.py:104 msgid "Hebrew" -msgstr "" +msgstr "Hebreeuws" #: pretix/_base_settings.py:105 msgid "Indonesian" @@ -694,16 +694,16 @@ msgstr "" "gebruikt worden door integraties." #: pretix/base/context.py:38 -#, fuzzy, python-brace-format -#| msgid "powered by {name} based on pretix" +#, python-brace-format msgid "powered by {name} based on pretix" -msgstr "mogelijk gemaakt door {name}, gebaseerd op pretix" +msgstr "" +"mogelijk gemaakt door {name} gebaseerd op " +"pretix" #: pretix/base/context.py:48 -#, fuzzy, python-brace-format -#| msgid "powered by {name} based on pretix" +#, python-brace-format msgid "powered by {name} based on pretix" -msgstr "mogelijk gemaakt door {name}, gebaseerd op pretix" +msgstr "medemogelijk gemaakt door {name} gebasseerd op pretix" #: pretix/base/context.py:55 #, python-format @@ -4362,13 +4362,15 @@ msgstr "Optioneel. Er worden geen producten verkocht vóór deze datum." #: pretix/base/models/event.py:621 msgid "This event is remote or partially remote." -msgstr "" +msgstr "Dit evenement is afgelegen of gedeeltelijk afgelegen." #: pretix/base/models/event.py:622 msgid "" "This will be used to let users know if the event is in a different timezone " "and let’s us calculate users’ local times." msgstr "" +"Dit wordt gebruikt om gebruikers te laten weten of het evenement in een " +"andere tijdzone is en laat het ons de gebruikers lokale tijdzone berekenen." #: pretix/base/models/event.py:642 pretix/control/navigation.py:65 msgid "Plugins" @@ -6064,10 +6066,8 @@ msgid "Cart ID (e.g. session key)" msgstr "Winkelwagen-ID (bijv. sessiesleutel)" #: pretix/base/models/orders.py:3102 -#, fuzzy -#| msgid "Gift card: Expiration date" msgid "Limit for extending expiration date" -msgstr "Cadeaubon: Verloopdatum" +msgstr "Limiet voor het uitstellen van de vervaldatum" #: pretix/base/models/orders.py:3131 msgid "Cart position" @@ -7262,10 +7262,8 @@ msgid "You cannot pay with gift cards when buying a gift card." msgstr "U kunt niet met cadeaubonnen betalen wanneer u een cadeaubon koopt." #: pretix/base/payment.py:1467 -#, fuzzy -#| msgid "Please enter the correct result." msgid "Please enter the code of your gift card." -msgstr "Vul alstublieft het correcte resultaat in." +msgstr "Vul alstublieft de code van jouw cadeaukaart in." #: pretix/base/payment.py:1483 pretix/base/payment.py:1526 msgid "" @@ -10658,22 +10656,16 @@ msgstr "" "hoe uw de in uw ticketwinkel verzamelde gegevens gebruikt." #: pretix/base/settings.py:2071 -#, fuzzy -#| msgid "Account information" msgid "Accessibility information URL" -msgstr "Accountinformatie" +msgstr "Toegankelijkheids informatie URL" #: pretix/base/settings.py:2072 -#, fuzzy -#| msgid "" -#| "This should point e.g. to a part of your website that explains how you " -#| "use data gathered in your ticket shop." msgid "" "This should point e.g. to a part of your website that explains how your " "ticket shop complies with accessibility regulation." msgstr "" "Dit zou bijvoorbeeld naar een deel van uw website moeten wijzen dat uitlegt " -"hoe uw de in uw ticketwinkel verzamelde gegevens gebruikt." +"hoe uw ticketwinkel omgaat met de toegankelijkheids wetgevingen." #: pretix/base/settings.py:2079 #: pretix/presale/templates/pretixpresale/event/base.html:228 @@ -10681,22 +10673,16 @@ msgstr "" #: pretix/presale/templates/pretixpresale/organizers/accessibility.html:6 #: pretix/presale/templates/pretixpresale/organizers/base.html:106 #: pretix/presale/templates/pretixpresale/organizers/base.html:111 -#, fuzzy -#| msgid "Account information" msgid "Accessibility information" -msgstr "Accountinformatie" +msgstr "Toegankelijkheids informatie" #: pretix/base/settings.py:2083 -#, fuzzy -#| msgid "Account information" msgid "Accessibility information title" -msgstr "Accountinformatie" +msgstr "Toegankelijkheids informatie titel" #: pretix/base/settings.py:2093 -#, fuzzy -#| msgid "Account information" msgid "Accessibility information text" -msgstr "Accountinformatie" +msgstr "Toegankelijkheids informatie tekst" #: pretix/base/settings.py:2114 msgid "Attach ticket files" @@ -17767,7 +17753,9 @@ msgstr "draaiend in ontwikkelmodus" #: pretix/presale/templates/pretixpresale/postmessage.html:27 #: pretix/presale/templates/pretixpresale/waiting.html:42 msgid "If this takes longer than a few minutes, please contact us." -msgstr "Neem contact met ons op als dit langer dan een aantal minuten duurt." +msgstr "" +"Als dit langer dan een paar minuten duurt, neem dan alstublieft contact met " +"ons op." #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:4 #: pretix/control/templates/pretixcontrol/organizers/devices.html:71 @@ -21253,13 +21241,11 @@ msgstr "Product met varianten" #: pretix/control/templates/pretixcontrol/items/index.html:118 msgctxt "subevent" msgid "Product assigned to seating plan for one or more dates" -msgstr "" +msgstr "Product toegewezen tot een zittingsschema voor een of meerdere data" #: pretix/control/templates/pretixcontrol/items/index.html:118 -#, fuzzy -#| msgid "Product settings" msgid "Product assigned to seating plan" -msgstr "Productinstellingen" +msgstr "Product toegewezen tot een zittingsplan" #: pretix/control/templates/pretixcontrol/items/index.html:126 msgid "Only available as an add-on product" @@ -23786,10 +23772,8 @@ msgstr "" "trackingaanbieders niet kennen." #: pretix/control/templates/pretixcontrol/organizers/edit.html:204 -#, fuzzy -#| msgid "Availability" msgid "Accessibility" -msgstr "Beschikbaarheid" +msgstr "Toegankelijkheid" #: pretix/control/templates/pretixcontrol/organizers/edit.html:206 msgid "" @@ -23798,12 +23782,19 @@ msgid "" "template in our documentation." msgstr "" +"Sommige rechtsgebieden, waaronder de Europeese Unie, vereist jou om " +"informatie te publiceren over de toegankelijkheid van je ticket winkel. Je " +"kan een template vinden in onze " +"documentatie." #: pretix/control/templates/pretixcontrol/organizers/edit.html:216 msgid "" "Instead of an URL, you can also configure a text that will be shown within " "pretix. This will be ignored if a URL is configured." msgstr "" +"In plaats van een URL, kan je ook een tekst instellen, dat wordt laten zien " +"binnen pretix. Dit wordt genegeerd als een URL is ingesteld." #: pretix/control/templates/pretixcontrol/organizers/edit.html:228 msgid "Barcode media" @@ -29091,10 +29082,8 @@ msgid "Open BezahlCode in your banking app to start the payment process." msgstr "Open BezahlCode in uw bank-app om het betalingsproces te starten." #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/pending.html:129 -#, fuzzy -#| msgid "Scan the qr-code with your banking app" msgid "Scan the QR code with your banking app" -msgstr "Scan de qr-code met uw bankapplicatie" +msgstr "Scan de QR-code met uw bankapplicatie" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/pending.html:141 #, python-format @@ -32272,17 +32261,12 @@ msgid "You need to fill out all fields." msgstr "Vul alle velden in." #: pretix/presale/forms/customer.py:69 -#, fuzzy -#| msgid "Please enter a valid email address." msgid "You need to enter an email address." -msgstr "Vul alstublieft een geldig e-mailadres in." +msgstr "U moet een e-mailadres invullen." #: pretix/presale/forms/customer.py:70 -#, fuzzy -#| msgctxt "subevent" -#| msgid "You need to select a date." msgid "You need to enter a password." -msgstr "U moet een datum selecteren." +msgstr "U moet een wachtwoord invullen." #: pretix/presale/forms/customer.py:72 msgid "We have not found an account with this email address and password." @@ -32291,27 +32275,18 @@ msgstr "" "wachtwoord vinden." #: pretix/presale/forms/customer.py:74 -#, fuzzy -#| msgid "Please enter the same email address twice." msgid "Please verify that you entered the correct email address." -msgstr "Voer twee keer hetzelfde e-mailadres in." +msgstr "Alstublieft controleer of u het juiste emailadress heeft ingevuld." #: pretix/presale/forms/customer.py:75 -#, fuzzy -#| msgid "Please enter the correct result." msgid "Please enter the correct password." -msgstr "Vul alstublieft het correcte resultaat in." +msgstr "Vul alstublieft het correcte wachtwoord in." #: pretix/presale/forms/customer.py:76 msgid "This account is disabled." msgstr "Dit account is uitgeschakeld." #: pretix/presale/forms/customer.py:77 -#, fuzzy -#| msgid "" -#| "You have not yet activated your account and set a password. Please click " -#| "the link in the email we sent you. Click \"Reset password\" to receive a " -#| "new email in case you cannot find it again." msgid "" "You have not yet activated your account and set a password. Please click the " "link in the email we sent you. In case you cannot find it, click \"Forgot " @@ -32323,10 +32298,8 @@ msgstr "" "te klikken." #: pretix/presale/forms/customer.py:90 -#, fuzzy -#| msgid "Your password" msgid "Forgot your password?" -msgstr "Uw wachtwoord" +msgstr "Wachtwoord vergeten?" #: pretix/presale/forms/customer.py:146 msgid "" @@ -32431,17 +32404,13 @@ msgid "Organizer: {organizer}" msgstr "Organisator: {organizer}" #: pretix/presale/templates/pretixpresale/base.html:47 -#, fuzzy -#| msgid "Send links" msgctxt "skip-to-main-nav" msgid "Skip link" -msgstr "Verstuur links" +msgstr "Sla over link" #: pretix/presale/templates/pretixpresale/base.html:48 -#, fuzzy -#| msgid "Email content" msgid "Skip to main content" -msgstr "E-mailinhoud" +msgstr "Overslaan naar de hoofd-inhoud" #: pretix/presale/templates/pretixpresale/base.html:76 msgid "Footer Navigation" @@ -33286,10 +33255,8 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:509 #: pretix/presale/templates/pretixpresale/fragment_modals.html:48 -#, fuzzy -#| msgid "Event description" msgid "Renew reservation" -msgstr "Evenementomschrijving" +msgstr "Vernieuw reservering" #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:514 msgid "Overview of your ordered products." @@ -33643,8 +33610,6 @@ msgstr "Toon vorige maand, %(month)s" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:24 #: pretix/presale/templates/pretixpresale/organizers/calendar.html:52 -#, fuzzy -#| msgid "Select month to show" msgid "Select a month to display" msgstr "Kies maand om te tonen" @@ -33656,11 +33621,8 @@ msgstr "Maand" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:39 #: pretix/presale/templates/pretixpresale/organizers/calendar.html:67 -#, fuzzy -#| msgctxt "reporting_timeframe" -#| msgid "by month" msgid "Show month" -msgstr "per maand" +msgstr "Weergeven per maand" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:50 #, python-format @@ -33675,10 +33637,8 @@ msgstr "Toon vorige week, %(week)s" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:24 #: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:52 -#, fuzzy -#| msgid "Select week to show" msgid "Select a week to display" -msgstr "Kies week om te tonen" +msgstr "Kies een week om te weer te geven" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:26 #: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:12 @@ -33692,11 +33652,8 @@ msgstr "Kies week om te tonen" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:43 #: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:71 -#, fuzzy -#| msgctxt "reporting_timeframe" -#| msgid "by week" msgid "Show week" -msgstr "per week" +msgstr "Weergeef per week" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:54 #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:73 @@ -34622,8 +34579,6 @@ msgstr "" "gaan." #: pretix/presale/templates/pretixpresale/fragment_modals.html:58 -#, fuzzy -#| msgid "Closed" msgid "Close" msgstr "Gesloten" @@ -34668,8 +34623,6 @@ msgid "Save selection" msgstr "Selectie opslaan" #: pretix/presale/templates/pretixpresale/fragment_modals.html:141 -#, fuzzy -#| msgid "You did not select any products." msgid "You didn't select any ticket." msgstr "U heeft geen producten geselecteerd." @@ -34678,6 +34631,8 @@ msgid "" "Please tick a checkbox or enter a quantity for one of the ticket types to " "add to the cart." msgstr "" +"Alstublieft klik op een selectievak of voeg een quantiteit toe voor een van " +"de ticket types in de winkelwagen." #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:82 #, python-format @@ -34729,10 +34684,9 @@ msgid "Event overview" msgstr "Evenementenoverzicht" #: pretix/presale/templates/pretixpresale/organizers/calendar.html:21 -#, fuzzy, python-format -#| msgid "Show next month, %(month)s" +#, python-format msgid "Events in %(month)s" -msgstr "Toon volgende maand, %(month)s" +msgstr "Evenementen in %(month)s" #: pretix/presale/templates/pretixpresale/organizers/calendar.html:91 #: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:104 @@ -34742,28 +34696,22 @@ msgstr "" "Merk op dat de evenementen in dit overzicht in verschillende tijdzones zijn." #: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:21 -#, fuzzy, python-format -#| msgid "Entry scan: %(date)s" +#, python-format msgid "Events on %(day)s" -msgstr "Ingangsscan: %(date)s" +msgstr "Evenementen op %(day)s" #: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:52 -#, fuzzy -#| msgctxt "subevents" -#| msgid "Select date" msgid "Select a date to display" -msgstr "Kies een datum" +msgstr "Kies een datum om weer te geven" #: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:59 -#, fuzzy -#| msgid "Show start date" msgid "Show date" -msgstr "Toon startdatum" +msgstr "Weergeef startdatum" #: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:21 #, python-format msgid "Events in %(week)s (%(week_day_from)s – %(week_day_to)s)" -msgstr "" +msgstr "Evenementen in %(week)s (%(week_day_from)s – %(week_day_to)s)" #: pretix/presale/templates/pretixpresale/organizers/customer_address_delete.html:5 #: pretix/presale/templates/pretixpresale/organizers/customer_address_delete.html:10 @@ -34997,10 +34945,8 @@ msgid "Your cart is now empty." msgstr "Uw winkelwagen is nu leeg." #: pretix/presale/views/cart.py:553 -#, fuzzy -#| msgid "Your cart has been updated." msgid "Your cart timeout was extended." -msgstr "Uw winkelwagen is bijgewerkt." +msgstr "Uw winkelwagens tijdslimiet is verlengt." #: pretix/presale/views/cart.py:568 msgid "The products have been successfully added to your cart." From 234a3d0db11719a6ed6b454bbfc8dd8c7030e2e8 Mon Sep 17 00:00:00 2001 From: Tim Maurizio Dullaart Date: Mon, 9 Jun 2025 21:52:36 +0200 Subject: [PATCH 35/98] Translations: Update Dutch Currently translated at 100.0% (252 of 252 strings) Translation: pretix/pretix (JavaScript parts) Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/nl/ powered by weblate --- src/pretix/locale/nl/LC_MESSAGES/djangojs.po | 45 +++++++++----------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/src/pretix/locale/nl/LC_MESSAGES/djangojs.po b/src/pretix/locale/nl/LC_MESSAGES/djangojs.po index 1846811b69..8b31847fd3 100644 --- a/src/pretix/locale/nl/LC_MESSAGES/djangojs.po +++ b/src/pretix/locale/nl/LC_MESSAGES/djangojs.po @@ -7,8 +7,8 @@ msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-30 10:36+0000\n" -"PO-Revision-Date: 2025-05-01 02:00+0000\n" -"Last-Translator: Foxy Hunter \n" +"PO-Revision-Date: 2025-06-10 04:00+0000\n" +"Last-Translator: Tim Maurizio Dullaart \n" "Language-Team: Dutch \n" "Language: nl\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.11.1\n" +"X-Generator: Weblate 5.11.4\n" #: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56 #: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62 @@ -415,6 +415,8 @@ msgstr "" #: pretix/static/pretixbase/js/asynctask.js:270 msgid "If this takes longer than a few minutes, please contact us." msgstr "" +"Als dit langer dan een paar minuten duurt, neem dan alstublieft contact met " +"ons op." #: pretix/static/pretixbase/js/asynctask.js:325 msgid "Close message" @@ -626,25 +628,26 @@ msgid "Unknown error." msgstr "Onbekende fout." #: pretix/static/pretixcontrol/js/ui/main.js:292 -#, fuzzy -#| msgid "Your color has great contrast and is very easy to read!" msgid "Your color has great contrast and will provide excellent accessibility." -msgstr "Uw kleur heeft een goed contrast, en is gemakkelijk te lezen!" +msgstr "" +"Uw kleur heeft een goed contrast, en zal zorgen voor een uitstekende " +"toegankelijkheid." #: pretix/static/pretixcontrol/js/ui/main.js:296 -#, fuzzy -#| msgid "Your color has decent contrast and is probably good-enough to read!" msgid "" "Your color has decent contrast and is sufficient for minimum accessibility " "requirements." msgstr "" -"Uw kleur heeft een redelijk contrast, en is waarschijnlijk goed te lezen!" +"Uw kleur heeft een redelijk contrast, en is voldoende voor de minimale " +"toegankelijkheids eisen." #: pretix/static/pretixcontrol/js/ui/main.js:300 msgid "" "Your color has insufficient contrast to white. Accessibility of your site " "will be impacted." msgstr "" +"Uw kleur heeft een te weinig contrast met wit. De toegankelijkheid van jouw " +"site wordt beïnvloed." #: pretix/static/pretixcontrol/js/ui/main.js:416 #: pretix/static/pretixcontrol/js/ui/main.js:436 @@ -720,7 +723,7 @@ msgstr "Winkelwagen is verlopen" #: pretix/static/pretixpresale/js/ui/cart.js:59 #: pretix/static/pretixpresale/js/ui/cart.js:87 msgid "Your cart is about to expire." -msgstr "" +msgstr "Uw winkelwagen staat op het punt om te verlopen." #: pretix/static/pretixpresale/js/ui/cart.js:64 msgid "The items in your cart are reserved for you for one minute." @@ -730,16 +733,10 @@ msgstr[1] "" "De items in uw winkelwagen zijn nog {num} minuten voor u gereserveerd." #: pretix/static/pretixpresale/js/ui/cart.js:86 -#, fuzzy -#| msgid "Cart expired" msgid "Your cart has expired." -msgstr "Winkelwagen is verlopen" +msgstr "Uw winkelwagen is verlopen." #: pretix/static/pretixpresale/js/ui/cart.js:89 -#, fuzzy -#| msgid "" -#| "The items in your cart are no longer reserved for you. You can still " -#| "complete your order as long as they’re available." msgid "" "The items in your cart are no longer reserved for you. You can still " "complete your order as long as they're available." @@ -749,11 +746,11 @@ msgstr "" #: pretix/static/pretixpresale/js/ui/cart.js:90 msgid "Do you want to renew the reservation period?" -msgstr "" +msgstr "Wilt u de reservererings periode vernieuwen?" #: pretix/static/pretixpresale/js/ui/cart.js:93 msgid "Renew reservation" -msgstr "" +msgstr "Vernieuw reservering" #: pretix/static/pretixpresale/js/ui/main.js:194 msgid "The organizer keeps %(currency)s %(amount)s" @@ -796,12 +793,12 @@ msgstr "Verhoog aantal" #: pretix/static/pretixpresale/js/widget/widget.js:19 msgctxt "widget" msgid "Filter events by" -msgstr "" +msgstr "Filter evenementen op" #: pretix/static/pretixpresale/js/widget/widget.js:20 msgctxt "widget" msgid "Filter" -msgstr "" +msgstr "Filter" #: pretix/static/pretixpresale/js/widget/widget.js:21 #: pretix/static/pretixpresale/js/widget/widget.v1.js:19 @@ -1050,17 +1047,15 @@ msgid "Close" msgstr "Sluiten" #: pretix/static/pretixpresale/js/widget/widget.js:62 -#, fuzzy -#| msgctxt "widget" -#| msgid "Resume checkout" msgctxt "widget" msgid "Close checkout" -msgstr "Doorgaan met afrekenen" +msgstr "Stoppen met afrekenen" #: pretix/static/pretixpresale/js/widget/widget.js:63 msgctxt "widget" msgid "You cannot cancel this operation. Please wait for loading to finish." msgstr "" +"U kan niet deze actie annuleren. Alstublieft wacht tot het laden is voltooid." #: pretix/static/pretixpresale/js/widget/widget.js:64 #: pretix/static/pretixpresale/js/widget/widget.v1.js:60 From f9acefc0f9621cdd68e9826e9225e27759eba7ed Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Jun 2025 15:17:05 +0200 Subject: [PATCH 36/98] Update pypdf requirement from ==5.4.* to ==5.6.* (#5201) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index cf0a4bca00..4f91c6e873 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -81,7 +81,7 @@ dependencies = [ "pycountry", "pycparser==2.22", "pycryptodome==3.23.*", - "pypdf==5.4.*", + "pypdf==5.6.*", "python-bidi==0.6.*", # Support for Arabic in reportlab "python-dateutil==2.9.*", "pytz", From 767b01be9af0b2e69a199451f36238ae469bf372 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Jun 2025 15:17:20 +0200 Subject: [PATCH 37/98] Update pytest requirement from ==8.3.* to ==8.4.* (#5200) Updates the requirements on [pytest](https://github.com/pytest-dev/pytest) to permit the latest version. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/8.3.0.dev0...8.4.0) --- updated-dependencies: - dependency-name: pytest dependency-version: 8.4.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 4f91c6e873..5a43cb1065 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -123,7 +123,7 @@ dev = [ "pytest-mock==3.14.*", "pytest-sugar", "pytest-xdist==3.7.*", - "pytest==8.3.*", + "pytest==8.4.*", "responses", ] From 2f7a00e66080d4e3994c7ec462daad69670a51c7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Jun 2025 15:17:32 +0200 Subject: [PATCH 38/98] Update protobuf requirement from ==6.30.* to ==6.31.* (#5222) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 5a43cb1065..20c4a79302 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -76,7 +76,7 @@ dependencies = [ "phonenumberslite==9.0.*", "Pillow==11.2.*", "pretix-plugin-build", - "protobuf==6.30.*", + "protobuf==6.31.*", "psycopg2-binary", "pycountry", "pycparser==2.22", From 24c02751cccec729c0d06aef4e9c8670919e596f Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Tue, 10 Jun 2025 20:34:08 +0200 Subject: [PATCH 39/98] Fix phone tel-country-code label and autocomplete (#5227) * Fix phone tel-country-code label and autocomplete * Add autocomplete sectioning for MultiWidget --- src/pretix/base/forms/questions.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/pretix/base/forms/questions.py b/src/pretix/base/forms/questions.py index d1ba1ec12e..4b25f9864b 100644 --- a/src/pretix/base/forms/questions.py +++ b/src/pretix/base/forms/questions.py @@ -308,7 +308,10 @@ class WrappedPhonePrefixSelect(Select): self.initial = "+%d" % prefix break choices += get_phone_prefixes_sorted_and_localized() - super().__init__(choices=choices, attrs={'aria-label': pgettext_lazy('phonenumber', 'International area code')}) + super().__init__(choices=choices, attrs={ + 'aria-label': pgettext_lazy('phonenumber', 'International area code'), + 'autocomplete': 'tel-country-code', + }) def render(self, name, value, *args, **kwargs): return super().render(name, value or self.initial, *args, **kwargs) @@ -331,11 +334,11 @@ class WrappedPhonePrefixSelect(Select): class WrappedPhoneNumberPrefixWidget(PhoneNumberPrefixWidget): def __init__(self, attrs=None, initial=None): - attrs = { - 'aria-label': pgettext_lazy('phonenumber', 'Phone number (without international area code)') - } - widgets = (WrappedPhonePrefixSelect(initial), forms.TextInput(attrs=attrs)) - super(PhoneNumberPrefixWidget, self).__init__(widgets, attrs) + widgets = (WrappedPhonePrefixSelect(initial), forms.TextInput(attrs={ + 'aria-label': pgettext_lazy('phonenumber', 'Phone number (without international area code)'), + 'autocomplete': 'tel-national', + })) + super(PhoneNumberPrefixWidget, self).__init__(widgets) def render(self, name, value, attrs=None, renderer=None): output = super().render(name, value, attrs, renderer) @@ -992,6 +995,13 @@ class BaseQuestionsForm(forms.Form): value.initial = data.get('question_form_data', {}).get(key) for k, v in self.fields.items(): + if isinstance(v.widget, forms.MultiWidget): + for w in v.widget.widgets: + autocomplete = w.attrs.get('autocomplete', '') + if autocomplete.strip() == "off": + w.attrs['autocomplete'] = 'off' + else: + w.attrs['autocomplete'] = 'section-{} '.format(self.prefix) + autocomplete if v.widget.attrs.get('autocomplete') or k == 'attendee_name_parts': autocomplete = v.widget.attrs.get('autocomplete', '') if autocomplete.strip() == "off": From d53af424cfe16fe64ad506cf7b73d2c74a612b57 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Tue, 10 Jun 2025 20:34:47 +0200 Subject: [PATCH 40/98] Widget: fix prefill 1 with variation-product (#5229) --- src/pretix/static/pretixpresale/js/widget/widget.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pretix/static/pretixpresale/js/widget/widget.js b/src/pretix/static/pretixpresale/js/widget/widget.js index db9eb55966..079e1ddbd9 100644 --- a/src/pretix/static/pretixpresale/js/widget/widget.js +++ b/src/pretix/static/pretixpresale/js/widget/widget.js @@ -252,7 +252,7 @@ Vue.component('availbox', { variation: Object }, mounted: function() { - if (this.$root.itemnum === 1 && !this.$root.has_seating_plan ? 1 : 0) { + if (this.$root.itemnum === 1 && (!this.$root.categories[0].items[0].has_variations || this.$root.categories[0].items[0].variations.length < 2) && !this.$root.has_seating_plan ? 1 : 0) { this.$refs.quantity.value = 1; if (this.order_max === 1) { this.$refs.quantity.checked = true; From b75f8bf893c5bb043ef8ea4fa1dd785883c0fc27 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Tue, 10 Jun 2025 20:35:11 +0200 Subject: [PATCH 41/98] Widget: fix loading spinner not showing on API-request (#5228) * Widget: fix loading spinner not showing while API-request * remove not needed showModal as it is handled be frame_loading-watcher * add double check if dialog is open before closing it --- src/pretix/static/pretixpresale/js/widget/widget.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/pretix/static/pretixpresale/js/widget/widget.js b/src/pretix/static/pretixpresale/js/widget/widget.js index 079e1ddbd9..ce474d03a4 100644 --- a/src/pretix/static/pretixpresale/js/widget/widget.js +++ b/src/pretix/static/pretixpresale/js/widget/widget.js @@ -2182,11 +2182,22 @@ var create_overlay = function (app) { // show loading spinner only when previously no frame_src was set if (newValue && !oldValue) { this.frame_loading = true; - this.$el?.querySelector('dialog.pretix-widget-frame-holder').showModal(); } // to close and unload the iframe, frame_src can be empty -> make it valid HTML with about:blank this.$el.querySelector("iframe").src = newValue || "about:blank"; }, + frame_loading: function (newValue) { + var dialog = this.$el?.querySelector('dialog.pretix-widget-frame-holder'); + if (newValue) { + if (!dialog.open) { + dialog.showModal(); + } + } else { + if (!this.frame_src && dialog.open) {// finished loading, but no iframe to display => close + dialog.close(); + } + } + }, } }); app.$root.overlay = framechild; From 9f49b7747c5601355cc35a246d2bf601d39b51c6 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Tue, 10 Jun 2025 20:39:16 +0200 Subject: [PATCH 42/98] [A11y] Checkout: fix semantics for addon-list, etc. (#5212) --- .../event/checkout_membership.html | 22 +++++++++---------- .../event/checkout_questions.html | 22 +++++++++---------- .../event/fragment_change_form.html | 10 ++++----- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/pretix/presale/templates/pretixpresale/event/checkout_membership.html b/src/pretix/presale/templates/pretixpresale/event/checkout_membership.html index bf94bbcd59..238d7a9c65 100644 --- a/src/pretix/presale/templates/pretixpresale/event/checkout_membership.html +++ b/src/pretix/presale/templates/pretixpresale/event/checkout_membership.html @@ -19,9 +19,9 @@
{% if form.position.seat %}
- +
+ {% trans "Seat" %} +
{% include "icons/seat.svg" with cls="svg-icon" %} {{ form.position.seat }} @@ -30,9 +30,9 @@ {% endif %} {% if form.position.addons.all %}
- +
+ {% trans "Selected add-ons" %} +
    {% for a in form.position.addons.all %} @@ -44,13 +44,13 @@ {% endif %} {% if form.position.subevent %}
    - +
    + {% trans "Date" context "subevent" %} +
    -
      +

      {{ form.position.subevent.name }} · {{ form.position.subevent.get_date_range_display_with_times_as_html }} -

    +

    {% endif %} diff --git a/src/pretix/presale/templates/pretixpresale/event/checkout_questions.html b/src/pretix/presale/templates/pretixpresale/event/checkout_questions.html index f5320d954d..1a67a01c8f 100644 --- a/src/pretix/presale/templates/pretixpresale/event/checkout_questions.html +++ b/src/pretix/presale/templates/pretixpresale/event/checkout_questions.html @@ -95,9 +95,9 @@ {% endif %} {% if pos.seat %}
    - +
    + {% trans "Seat" %} +
    {% include "icons/seat.svg" with cls="svg-icon" %} {{ pos.seat }} @@ -106,9 +106,9 @@ {% endif %} {% if pos.addons_without_bundled %}
    - +
    + {% trans "Selected add-ons" %} +
      {% regroup pos.addons_without_bundled by item_and_variation as addons_by_itemvar %} @@ -121,13 +121,13 @@ {% endif %} {% if pos.subevent %}
      - +
      + {% trans "Date" context "subevent" %} +
      -
        +

        {{ pos.subevent.name }} · {{ pos.subevent.get_date_range_display_with_times_as_html }} -

      +

      {% endif %} diff --git a/src/pretix/presale/templates/pretixpresale/event/fragment_change_form.html b/src/pretix/presale/templates/pretixpresale/event/fragment_change_form.html index a3d13988e1..b08146b991 100644 --- a/src/pretix/presale/templates/pretixpresale/event/fragment_change_form.html +++ b/src/pretix/presale/templates/pretixpresale/event/fragment_change_form.html @@ -16,13 +16,13 @@
      {% if position.subevent %}
      - +
      + {% trans "Date" context "subevent" %} +
      -
        +

        {{ position.subevent.name }} · {{ position.subevent.get_date_range_display_with_times_as_html }} -

      +

      {% endif %} From 80148a8435815c1d750cbbb67a5976c0008a1ba6 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Tue, 10 Jun 2025 20:39:43 +0200 Subject: [PATCH 43/98] [A11y] Widget: move dialog-focus to close-button (#5221) --- src/pretix/static/pretixpresale/js/widget/widget.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/pretix/static/pretixpresale/js/widget/widget.js b/src/pretix/static/pretixpresale/js/widget/widget.js index ce474d03a4..e98d61e615 100644 --- a/src/pretix/static/pretixpresale/js/widget/widget.js +++ b/src/pretix/static/pretixpresale/js/widget/widget.js @@ -903,6 +903,14 @@ Vue.component('pretix-overlay', { } } }, + '$root.frame_shown': function (newValue) { + if (newValue) { + var btn = this.$el?.querySelector('.pretix-widget-frame-close button'); + this.$nextTick(function() { + btn.focus(); + }); + } + }, }, computed: { frameClasses: function () { From 23489f50f87096576f119aa6a217f2d2d4f31a42 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Tue, 10 Jun 2025 20:40:33 +0200 Subject: [PATCH 44/98] [A11y] Widget: change calendar table aria-label to labelledby (#5217) --- src/pretix/static/pretixpresale/js/widget/widget.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/pretix/static/pretixpresale/js/widget/widget.js b/src/pretix/static/pretixpresale/js/widget/widget.js index e98d61e615..33797af689 100644 --- a/src/pretix/static/pretixpresale/js/widget/widget.js +++ b/src/pretix/static/pretixpresale/js/widget/widget.js @@ -1571,14 +1571,14 @@ Vue.component('pretix-widget-event-calendar', { + '« ' + strings['previous_month'] + ' ' - + '{{ monthname }} ' + + '{{ monthname }} ' + '' + strings['next_month'] + ' »' + '
      ' // Calendar - + '' + + '
      ' + '' + '' + '' @@ -1605,6 +1605,9 @@ Vue.component('pretix-widget-event-calendar', { id: function () { return this.$root.html_id + "-event-calendar-table"; }, + aria_labelledby: function () { + return this.$root.html_id + "-event-calendar-table-label"; + }, }, methods: { back_to_list: function () { From dfb45e13ca72c14df5be4f16e84640f8902bf06a Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Tue, 10 Jun 2025 20:40:52 +0200 Subject: [PATCH 45/98] [A11y] Widget: make inputs min-height instead of fixed height (#5216) --- src/pretix/static/pretixpresale/scss/widget.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pretix/static/pretixpresale/scss/widget.scss b/src/pretix/static/pretixpresale/scss/widget.scss index ebd59a945b..4b33748488 100644 --- a/src/pretix/static/pretixpresale/scss/widget.scss +++ b/src/pretix/static/pretixpresale/scss/widget.scss @@ -113,7 +113,7 @@ line-height: normal; border: 1px solid $input-border; border-radius: $input-border-radius; - height: $input-height-base; + min-height: $input-height-base; padding: $padding-base-vertical $padding-base-horizontal; color: $input-color; background-color: $input-bg; From cced9cd768708f195cd6be81429d57f33db67ae2 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Tue, 10 Jun 2025 20:41:23 +0200 Subject: [PATCH 46/98] Widget: remove role=alertdialog for checkout overlay as it is to obtrusive in NVDA (#5211) --- src/pretix/static/pretixpresale/js/widget/widget.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pretix/static/pretixpresale/js/widget/widget.js b/src/pretix/static/pretixpresale/js/widget/widget.js index 33797af689..a3d2a152b5 100644 --- a/src/pretix/static/pretixpresale/js/widget/widget.js +++ b/src/pretix/static/pretixpresale/js/widget/widget.js @@ -823,7 +823,7 @@ var shared_loading_fragment = ( ); var shared_iframe_fragment = ( - '' + '' + '
      ' + '' + '

      '+strings.cancel_blocked+'

      ' From 362ac8de6f9711f342ad19de66480b7673d649cb Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Tue, 10 Jun 2025 20:41:51 +0200 Subject: [PATCH 47/98] [A11y] Widget: pass doc title in overlay to iframe.title (#5210) --- src/pretix/static/pretixpresale/js/ui/iframe.js | 8 ++++++++ src/pretix/static/pretixpresale/js/widget/widget.js | 11 +++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/pretix/static/pretixpresale/js/ui/iframe.js b/src/pretix/static/pretixpresale/js/ui/iframe.js index c7d0119e13..fc4706b572 100644 --- a/src/pretix/static/pretixpresale/js/ui/iframe.js +++ b/src/pretix/static/pretixpresale/js/ui/iframe.js @@ -7,4 +7,12 @@ var inIframe = function () { }; if (inIframe()) { document.documentElement.classList.add('in-iframe'); + try { + window.parent.postMessage({ + type: "pretix:widget:title", + title: document.title, + }, "*"); + } catch (e) { + console.error("Could not post message to parent.", e); + } } diff --git a/src/pretix/static/pretixpresale/js/widget/widget.js b/src/pretix/static/pretixpresale/js/widget/widget.js index a3d2a152b5..865c04e6c0 100644 --- a/src/pretix/static/pretixpresale/js/widget/widget.js +++ b/src/pretix/static/pretixpresale/js/widget/widget.js @@ -939,7 +939,18 @@ Vue.component('pretix-overlay', { } }, }, + mounted () { + window.addEventListener('message', this.onMessage, false); + }, + unmounted () { + window.removeEventListener('message', this.onMessage, false); + }, methods: { + onMessage: function(e) { + if (e.data.type && e.data.type == "pretix:widget:title") { + this.$el.querySelector("iframe").title = e.data.title; + } + }, lightboxClose: function () { this.$root.lightbox = null; }, From ae4073b3e4507304ec3ca2a574832619712dbd8f Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Wed, 11 Jun 2025 08:58:26 +0200 Subject: [PATCH 48/98] [A11y] improve cart renew confirmation (#5206) * [A11y] improve cart renew confirmation * revert time * add inline-dialog to cart-renewal-button so confirm-button has interactive meaning --- .../pretixpresale/event/fragment_cart.html | 16 ++++++++- .../pretixpresale/fragment_modals.html | 4 +++ .../static/pretixbase/scss/_dialogs.scss | 7 ++++ src/pretix/static/pretixpresale/js/ui/cart.js | 35 +++++++++++++------ 4 files changed, 51 insertions(+), 11 deletions(-) diff --git a/src/pretix/presale/templates/pretixpresale/event/fragment_cart.html b/src/pretix/presale/templates/pretixpresale/event/fragment_cart.html index aba0754eec..c0240381ab 100644 --- a/src/pretix/presale/templates/pretixpresale/event/fragment_cart.html +++ b/src/pretix/presale/templates/pretixpresale/event/fragment_cart.html @@ -1,4 +1,5 @@ {% load i18n %} +{% load icon %} {% load eventurl %} {% load daterange %} {% load safelink %} @@ -506,10 +507,23 @@

      + + +
      +

      + +

      + +
      {% else %}

      {% trans "Overview of your ordered products." %}

      {% endif %} diff --git a/src/pretix/presale/templates/pretixpresale/fragment_modals.html b/src/pretix/presale/templates/pretixpresale/fragment_modals.html index 1ba6b66709..0ae0d743dd 100644 --- a/src/pretix/presale/templates/pretixpresale/fragment_modals.html +++ b/src/pretix/presale/templates/pretixpresale/fragment_modals.html @@ -48,6 +48,10 @@ {% enddialog %} +{% dialog "dialog-cart-extended" "" "" icon="clock-o" alert=true %} + +{% enddialog %} +
      -
      +
      {% for var in item.available_variations %}
      -
      +
      {% for var in item.available_variations %}
      Date: Wed, 11 Jun 2025 10:47:17 +0200 Subject: [PATCH 53/98] [A11y] add missing autcomplete (#5236) --- src/pretix/presale/forms/customer.py | 9 ++++++--- src/pretix/presale/forms/waitinglist.py | 2 ++ .../pretixpresale/event/fragment_voucher_form.html | 5 +++-- .../templates/pretixpresale/event/waitinglist.html | 4 ++-- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/pretix/presale/forms/customer.py b/src/pretix/presale/forms/customer.py index 9d188dd64a..264b11b9bb 100644 --- a/src/pretix/presale/forms/customer.py +++ b/src/pretix/presale/forms/customer.py @@ -342,6 +342,7 @@ class ResetPasswordForm(forms.Form): } email = forms.EmailField( label=_('Email'), + widget=forms.EmailInput(attrs={'autocomplete': 'email'}), ) def __init__(self, request=None, *args, **kwargs): @@ -389,12 +390,12 @@ class ChangePasswordForm(forms.Form): ) password_current = forms.CharField( label=_('Your current password'), - widget=forms.PasswordInput, + widget=forms.PasswordInput(attrs={'autocomplete': 'current-password'}), required=True ) password = forms.CharField( label=_('New password'), - widget=forms.PasswordInput, + widget=forms.PasswordInput(attrs={'minlength': '8', 'autocomplete': 'new-password'}), max_length=4096, required=True ) @@ -458,7 +459,7 @@ class ChangeInfoForm(forms.ModelForm): } password_current = forms.CharField( label=_('Your current password'), - widget=forms.PasswordInput, + widget=forms.PasswordInput(attrs={'autocomplete': 'current-password'}), help_text=_('Only required if you change your email address'), max_length=4096, required=False @@ -472,6 +473,8 @@ class ChangeInfoForm(forms.ModelForm): self.request = request super().__init__(*args, **kwargs) + self.fields['email'].widget.attrs['autocomplete'] = 'email' + self.fields['name_parts'] = NamePartsFormField( max_length=255, required=True, diff --git a/src/pretix/presale/forms/waitinglist.py b/src/pretix/presale/forms/waitinglist.py index c2d545ed67..030fe96909 100644 --- a/src/pretix/presale/forms/waitinglist.py +++ b/src/pretix/presale/forms/waitinglist.py @@ -57,6 +57,8 @@ class WaitingListForm(forms.ModelForm): event = self.event + self.fields['email'].widget.attrs['autocomplete'] = 'email' + if event.settings.waiting_list_names_asked: self.fields['name_parts'] = NamePartsFormField( max_length=255, diff --git a/src/pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html b/src/pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html index 7fcdd8fd15..0834b30765 100644 --- a/src/pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html +++ b/src/pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html @@ -15,8 +15,9 @@
      + {% if "voucher_invalid" in request.GET %} aria-describedby="error-message"{% endif %} + autocomplete="off" + placeholder="{% trans "Voucher code" %}" required="required">
      diff --git a/src/pretix/presale/templates/pretixpresale/event/waitinglist.html b/src/pretix/presale/templates/pretixpresale/event/waitinglist.html index 3165530d45..dcf21698ce 100644 --- a/src/pretix/presale/templates/pretixpresale/event/waitinglist.html +++ b/src/pretix/presale/templates/pretixpresale/event/waitinglist.html @@ -34,13 +34,13 @@ {% endblocktrans %} {% endif %}

      -

      +

      {% blocktrans trimmed %} You will not receive a confirmation email after you have been added to the waiting list. We will only contact you once a spot opens up. {% endblocktrans %}

      -

      From df48adef1bb47dd8db9081abc752d5dd061c0cf8 Mon Sep 17 00:00:00 2001 From: luelista Date: Wed, 11 Jun 2025 10:56:58 +0200 Subject: [PATCH 54/98] Filter payment method sales channels when cloning event to new organizer (Z#23196085) (#5220) --- src/pretix/base/models/event.py | 6 ++++++ src/tests/base/test_event_clone.py | 23 +++++++++++++++++------ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/pretix/base/models/event.py b/src/pretix/base/models/event.py index 5267073b51..97e0c1ec56 100644 --- a/src/pretix/base/models/event.py +++ b/src/pretix/base/models/event.py @@ -1084,6 +1084,7 @@ class Event(EventMixin, LoggedModel): s.product = item_map[s.product_id] s.save(force_insert=True) + valid_sales_channel_identifers = set(self.organizer.sales_channels.values_list("identifier", flat=True)) skip_settings = ( 'ticket_secrets_pretix_sig1_pubkey', 'ticket_secrets_pretix_sig1_privkey', @@ -1119,6 +1120,11 @@ class Event(EventMixin, LoggedModel): settings_to_save.append(s) except ValueError: pass + elif s.key.startswith('payment_') and s.key.endswith('__restrict_to_sales_channels'): + data = other.settings._unserialize(s.value, as_type=list) + data = [ident for ident in data if ident in valid_sales_channel_identifers] + s.value = other.settings._serialize(data) + settings_to_save.append(s) else: settings_to_save.append(s) other.settings._objects.bulk_create(settings_to_save) diff --git a/src/tests/base/test_event_clone.py b/src/tests/base/test_event_clone.py index 6464e84675..7f81478a1a 100644 --- a/src/tests/base/test_event_clone.py +++ b/src/tests/base/test_event_clone.py @@ -225,8 +225,11 @@ def test_full_clone_cross_organizer_differences(): organizer2 = Organizer.objects.create(name='Dummy2', slug='dummy2') membership_type = organizer.membership_types.create(name="Membership") plan = SeatingPlan.objects.create(name="Plan", organizer=organizer, layout="{}") - sc = organizer.sales_channels.get(identifier="web") - sc2 = organizer2.sales_channels.get(identifier="web") + sc1_a = organizer.sales_channels.get(identifier="web") + sc1_b = organizer.sales_channels.create(identifier="b") + sc1_c = organizer.sales_channels.create(identifier="c") + sc2_a = organizer2.sales_channels.get(identifier="web") + sc2_c = organizer2.sales_channels.create(identifier="c") event = Event.objects.create( organizer=organizer, name='Dummy', slug='dummy', @@ -237,15 +240,20 @@ def test_full_clone_cross_organizer_differences(): seating_plan=plan, all_sales_channels=False, ) - event.limit_sales_channels.add(sc) + event.limit_sales_channels.add(sc1_a) + event.limit_sales_channels.add(sc1_b) + event.limit_sales_channels.add(sc1_c) item1 = event.items.create(name="Ticket", default_price=23, grant_membership_type=membership_type, all_sales_channels=False) - item1.limit_sales_channels.add(sc) + item1.limit_sales_channels.add(sc1_a) item2 = event.items.create(name="T-shirt", default_price=15) item2.require_membership_types.add(membership_type) + event.settings.payment_giftcard__enabled = True + event.settings.payment_giftcard__restrict_to_sales_channels = ['web', 'b', 'c'] + copied_event = Event.objects.create( organizer=organizer2, name='Dummy2', slug='dummy2', date_from=datetime.datetime(2022, 4, 15, 9, 0, 0, tzinfo=datetime.timezone.utc), @@ -257,11 +265,14 @@ def test_full_clone_cross_organizer_differences(): assert organizer2.seating_plans.count() == 1 assert organizer2.seating_plans.get().layout == plan.layout assert copied_event.seating_plan.organizer == organizer2 - assert copied_event.limit_sales_channels.get() == sc2 + assert set(copied_event.limit_sales_channels.all()) == {sc2_a, sc2_c} assert event.seating_plan.organizer == organizer copied_item1 = copied_event.items.get(name=item1.name) copied_item2 = copied_event.items.get(name=item2.name) assert copied_item1.grant_membership_type is None assert copied_item2.require_membership_types.count() == 0 - assert copied_item1.limit_sales_channels.get() == sc2 + assert copied_item1.limit_sales_channels.get() == sc2_a + + assert event.settings.get('payment_giftcard__restrict_to_sales_channels', as_type=list) == ['web', 'b', 'c'] + assert copied_event.settings.get('payment_giftcard__restrict_to_sales_channels', as_type=list) == ['web', 'c'] From 325f7c565d97539f3e7ba1b429d5759ea5f0caf5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Jun 2025 10:57:10 +0200 Subject: [PATCH 55/98] Bump django-localflavor from 4.0 to 5.0 (#5234) Bumps [django-localflavor](https://github.com/django/django-localflavor) from 4.0 to 5.0. - [Changelog](https://github.com/django/django-localflavor/blob/master/docs/changelog.rst) - [Commits](https://github.com/django/django-localflavor/compare/4.0...5.0) --- updated-dependencies: - dependency-name: django-localflavor dependency-version: '5.0' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 20c4a79302..dd7892ea2a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -46,7 +46,7 @@ dependencies = [ "django-hijack==3.7.*", "django-i18nfield==1.10.*", "django-libsass==0.9", - "django-localflavor==4.0", + "django-localflavor==5.0", "django-markup", "django-oauth-toolkit==2.3.*", "django-otp==1.6.*", From 235930746254a4104254a87d179f7f5637cf546a Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 12 Jun 2025 10:35:10 +0200 Subject: [PATCH 56/98] Remove replaced docs --- doc/license/faq.rst | 177 -------------------------------------------- 1 file changed, 177 deletions(-) delete mode 100644 doc/license/faq.rst diff --git a/doc/license/faq.rst b/doc/license/faq.rst deleted file mode 100644 index a11e611fb4..0000000000 --- a/doc/license/faq.rst +++ /dev/null @@ -1,177 +0,0 @@ -.. spelling:word-list:: - - AGPL - AGPLv3 - GPL - LGPL - Apache - BSD - MIT - CLA - django - i18nfields - hierarkey - rami.io - rami - io - GmbH - -License FAQ -=========== - -.. warning:: - - This FAQ tries to explain in simpler terms what the license of the pretix open source project does and does not - allow. It is based on our interpretation of the license and is not legal advice. The contents of this page are not - legally binding, only the original text of the license in the `license file`_ is legally binding. - -How is pretix licensed? ------------------------ - -pretix follows the popular dual licensing model. It is available under the `GNU Affero General Public License 3`_ (AGPL) -plus some additional terms, as well as under a proprietary license ("pretix Enterprise license") on request. - -How can it be AGPL if there are additional terms? -------------------------------------------------- - -Even though it is fairly unknown, the AGPL's section 7 is titled "Additional Terms" and outlines specific conditions -under which additional terms can be imposed on an AGPL-licensed work. In our case, we add three additional terms. - -The first additional term for pretix is an additional **permission**. It allows you to do something that the AGPL would -generally not allow. As it doesn't restrict your freedoms granted by AGPL, if you don't like it, you can ignore it, and -if you distribute pretix further, you can remove it. - -The second and third additional term for pretix are additional terms that restrict or specify other provisions of the -license. AGPL specifically requires that these terms can only restrict or specify very specific things and we believe -our additional terms are in compliance with that and are thus valid and may not be removed. - -Why did you choose this license model? --------------------------------------- - -pretix was born in the open source community and we're deeply committed to building the best open source ticketing -solution in the world. It is important to us that pretix is available with a comprehensive feature set under term that -are compatible with the `Open Source Definition`_. This enables event organizers from all industries and regions -to have access to a self-hosted, privacy-friendly and secure option to host their events. - -However, developing and maintaining pretix is a lot of work. Between 2014 and 2021, we've received external -contributions from more than 150 individuals. Not counting translations over 90 % of the development was -done by staff engineers of rami.io GmbH, the company that started pretix. While we're very happy to receive many more -contributions in the future, we also want to ensure that we continue to be able to pay people working on pretix -full-time. - -We believe our model creates a good balance between ensuring pretix is available freely as well as protecting our -business interests. Unlike licenses chosen by other projects recently, such as the Server-Side Public License, our -choice does not restrict using pretix for any possible use case, it just sets a few rules that you have to play by -if you do. - -What do I need to do if I use pretix unmodified? ------------------------------------------------- - -If you use pretix without any modifications or plugins, you can use it for whatever you want, as long as you keep -all copyright notices (including the link to pretix at the bottom of the site) intact. - -You are also allowed to make copies of the unmodified source code and distribute them to others as long as you keep -all copyright and license information intact. - -If you install **plugins**, you must follow the same terms as when using a **modified** version (see below). - -What do I need to do if I modify pretix? ----------------------------------------- - -If you want to modify pretix, you have the right to do so. However, you need to follow the following rules: - -* If you **run it for your own events** (events run by you or your company as well as companies from the same - corporate groups) our additional permission allows you to do so **without needing to share your source code - modifications** as long as you keep the link to pretix at the bottom of the site intact. - -* If you **run it for others**, for example as part of a Software-as-a-Service offering or a managed hosting service - you **must** make the source code **including all your modifications and all installed plugins** available under the - same license as pretix to every visitor of your site. You need to do so in a prominent place such as a link at the bottom of the - site. You also **must** keep the existing link intact. - You **may not** add additional restrictions on the result as a whole. You **may** add additional permissions, but - only on the parts you added. You **must** make clear which changes you made and you must not give the impression that - your modified version is an official version of pretix. - -* If you **distribute** the modified version, for example as a source code or software package, you **must** license it - under the AGPL license with the same additional terms. You **may not** add additional restrictions on the result as a - whole. You **may** add additional permissions, but only on the parts you added. You **must** make clear which changes - you made and you must not give the impression that your modified version is an official version of pretix. - -Does the AGPL copyleft mechanism extend to plugins? ---------------------------------------------------- - -Yes. pretix plugins are tightly integrated with pretix, so when running pretix together with a plugin in the same -environment they form a `combined work`_ and the copyleft mechanism of AGPL applies. - -Can I create proprietary or secret plugins? -------------------------------------------- - -Yes, you can create a proprietary or secret plugin, but it may only ever be **used** in an environment that is covered -by the additional permission from our license. As soon as the plugin is installed in an installation that is not covered -by our additional permission (e.g. when it is used in a SaaS environment) or covered by an active pretix Enterprise -license it **must** be released to the visitors of the site under the same license as pretix (like a modified version -of pretix). - -What licenses can plugins use? ------------------------------- - -Technically, you can distribute a plugin under any free or proprietary license as long as it is distributed separately. -However, once it is either **distributed together with pretix or used in an environment not covered by our -additional permission** or an active pretix Enterprise license, you **must** release it to all recipients of the -distribution or all visitors of your site under the same license as pretix (like a modified version of pretix). - -If you release a plugin publicly, it is therefore most practical to use a license that is `compatible to AGPL`_. -This includes most open source licenses such as AGPL, GPL, Apache, 3-clause BSD or MIT. - -Note however that when you license a plugin with pure AGPL, it will be incompatible with our additional permission. -Therefore, if you want to use an AGPL-licensed plugin, you'll need to publish the source code of **all** your plugins -under AGPL terms **even if you only use it for your own events**. A plugin would add its `own additional permission`_ -to its license to allow combining it with pretix for this use case. - -To make things less complicated, if you want to distribute a plugin freely, we therefore recommend distributing the -plugin under **Apache License 2.0**, like we do for most plugins we distribute as open source. - -What do I need to do if I want to contribute my changes back? -------------------------------------------------------------- - -In order to retain the possibility for us to offer pretix in a dual licensing model, we unfortunately need you to sign -a Contributor License Agreement (CLA) that gives us permission to use your contribution in all present and future -distributions of pretix. We know the bureaucracy sucks. Sorry. - -What if I want to re-use a minor part of pretix in my project? --------------------------------------------------------------- - -This is the main part we dislike about AGPL: If you see a specific thing in pretix that you'd like to use in another -project, you'll need to distribute your other project under AGPL terms as well which is often not practical. - -In this case, feel free to get in touch with us! We're happy to grant you special permission or pull the component -out into a separately, permissively licensed repository. We already did that with `django-hierarkey`_ and -`django-i18nfield`_ which have previously been parts of pretix. - -What can I use the name "pretix" for? -------------------------------------- - -The name pretix is a registered trademark by rami.io GmbH. - -* You **may** use it to **indicate copyright**, such as in the "powered by pretix" or "based on pretix" line, or when - indicating that a distribution is based on pretix. - -* You **may** use it to **indicate compatibility**, for example you are allowed to name your plugin " for pretix" - or you may state that an external service is compatible with pretix. - -* You **may not** give the impression that your modified version, plugin or compatible service is official or authorized - by rami.io GmbH or pretix unless we specifically allowed you to do so. - -* You **may not** use it to name your modified version of pretix. End-users must be able to easily identify whether - a version of pretix is distributed by us. - -* You **may not** use any variations of the name, such as "MyPretix". - -.. _license file: https://github.com/pretix/pretix/blob/master/LICENSE -.. _GNU Affero General Public License 3: https://www.gnu.org/licenses/agpl-3.0.en.html -.. _compatible to AGPL: https://www.gnu.org/licenses/license-list.en.html#GPLCompatibleLicenses -.. _Open Source Definition: https://opensource.org/osd -.. _combined work: https://www.gnu.org/licenses/gpl-faq.html#GPLPlugins -.. _own additional permission: https://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs -.. _django-hierarkey: https://github.com/raphaelm/django-hierarkey -.. _django-i18nfield: https://github.com/raphaelm/django-i18nfield \ No newline at end of file From 7d30ecf52760ae1f039fd1ccd574086a92dbf3c1 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 12 Jun 2025 12:24:45 +0200 Subject: [PATCH 57/98] API: Add items__in filter for quotas (Z#23195926) (#5232) * API: Add items__in filter for quotas (Z#23195926) * Update doc/api/resources/quotas.rst Co-authored-by: Richard Schreiber --------- Co-authored-by: Richard Schreiber --- doc/api/resources/quotas.rst | 3 ++- src/pretix/api/views/item.py | 11 ++++++++++- src/tests/api/test_items.py | 12 ++++++++++-- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/doc/api/resources/quotas.rst b/doc/api/resources/quotas.rst index 8856af2d05..87a985e18e 100644 --- a/doc/api/resources/quotas.rst +++ b/doc/api/resources/quotas.rst @@ -81,7 +81,8 @@ Endpoints :query string ordering: Manually set the ordering of results. Valid fields to be used are ``id`` and ``position``. Default: ``position`` :query integer subevent: Only return quotas of the sub-event with the given ID. - :query integer subevent__in: Only return quotas of sub-events with one the given IDs (comma-separated). + :query integer subevent__in: Only return quotas of sub-events with one of the given IDs (comma-separated). + :query integer items__in: Only return quotas that include a product with one of the given IDs (comma-separated). :query string with_availability: Set to ``true`` to get availability information. Can lead to increased answer times. :param organizer: The ``slug`` field of the organizer to fetch :param event: The ``slug`` field of the event to fetch diff --git a/src/pretix/api/views/item.py b/src/pretix/api/views/item.py index bbf6e5291d..83e0dc19be 100644 --- a/src/pretix/api/views/item.py +++ b/src/pretix/api/views/item.py @@ -485,8 +485,17 @@ class QuestionOptionViewSet(viewsets.ModelViewSet): super().perform_destroy(instance) +class NumberInFilter(django_filters.BaseInFilter, django_filters.NumberFilter): + pass + + with scopes_disabled(): class QuotaFilter(FilterSet): + items__in = NumberInFilter( + field_name='items__id', + lookup_expr='in', + ) + class Meta: model = Quota fields = { @@ -508,7 +517,7 @@ class QuotaViewSet(ConditionalListView, viewsets.ModelViewSet): return self.request.event.quotas.all() def list(self, request, *args, **kwargs): - queryset = self.filter_queryset(self.get_queryset()) + queryset = self.filter_queryset(self.get_queryset()).distinct() page = self.paginate_queryset(queryset) diff --git a/src/tests/api/test_items.py b/src/tests/api/test_items.py index 58b7b28393..4da007e4a7 100644 --- a/src/tests/api/test_items.py +++ b/src/tests/api/test_items.py @@ -1901,10 +1901,11 @@ TEST_QUOTA_RES = { @pytest.mark.django_db -def test_quota_list(token_client, organizer, event, quota, item, subevent): +def test_quota_list(token_client, organizer, event, quota, item, item3, subevent): + quota.items.add(item3) res = dict(TEST_QUOTA_RES) res["id"] = quota.pk - res["items"] = [item.pk] + res["items"] = [item.pk, item3.pk] resp = token_client.get('/api/v1/organizers/{}/events/{}/quotas/'.format(organizer.slug, event.slug)) assert resp.status_code == 200 @@ -1922,6 +1923,13 @@ def test_quota_list(token_client, organizer, event, quota, item, subevent): '/api/v1/organizers/{}/events/{}/quotas/?subevent={}'.format(organizer.slug, event.slug, se2.pk)) assert [] == resp.data['results'] + resp = token_client.get( + '/api/v1/organizers/{}/events/{}/quotas/?items__in={},{},0'.format(organizer.slug, event.slug, item.pk, item3.pk)) + assert [res] == resp.data['results'] + resp = token_client.get( + '/api/v1/organizers/{}/events/{}/quotas/?items__in=0'.format(organizer.slug, event.slug)) + assert [] == resp.data['results'] + @pytest.mark.django_db def test_quota_detail(token_client, organizer, event, quota, item): From eba5c1b36de78088e45db4d159c3d27142b1633f Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 12 Jun 2025 14:03:25 +0200 Subject: [PATCH 58/98] API: Fix crash on distributing a fee over tax rates with zero value (Z#23196669) (#5226) --- doc/api/resources/orders.rst | 7 +++--- src/pretix/api/serializers/order.py | 2 +- src/tests/api/test_order_create.py | 36 +++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 4 deletions(-) diff --git a/doc/api/resources/orders.rst b/doc/api/resources/orders.rst index 52f200d442..23ea2954a8 100644 --- a/doc/api/resources/orders.rst +++ b/doc/api/resources/orders.rst @@ -1059,9 +1059,10 @@ Creating orders prices. Note that this will not include other fees and is calculated once during order generation and will not be respected automatically when the order changes later.) * ``_split_taxes_like_products`` (Optional convenience flag. If set to ``true``, your ``tax_rule`` will be ignored - and the fee will be taxed like the products in the order. If the products have multiple tax rates, multiple fees - will be generated with weights adjusted to the net price of the products. Note that this will be calculated once - during order generation and is not respected automatically when the order changes later.) + and the fee will be taxed like the products in the order *unless* the total amount of the positions is zero. + If the products have multiple tax rates, multiple fees will be generated with weights adjusted to the net price + of the products. Note that this will be calculated once during order generation and is not respected automatically + when the order changes later.) * ``force`` (optional). If set to ``true``, quotas will be ignored. * ``send_email`` (optional). If set to ``true``, the same emails will be sent as for a regular order, regardless of diff --git a/src/pretix/api/serializers/order.py b/src/pretix/api/serializers/order.py index 147810a437..6cdec4b960 100644 --- a/src/pretix/api/serializers/order.py +++ b/src/pretix/api/serializers/order.py @@ -1600,7 +1600,7 @@ class OrderCreateSerializer(I18nAwareModelSerializer): self.context['event'].currency) is_split_taxes = fee_data.pop('_split_taxes_like_products', False) - if is_split_taxes: + if is_split_taxes and order.total: d = defaultdict(lambda: Decimal('0.00')) trz = TaxRule.zero() for p in pos_map.values(): diff --git a/src/tests/api/test_order_create.py b/src/tests/api/test_order_create.py index 9e3185c725..fc510eefd3 100644 --- a/src/tests/api/test_order_create.py +++ b/src/tests/api/test_order_create.py @@ -961,6 +961,42 @@ def test_order_create_fee_as_percentage(token_client, organizer, event, item, qu assert o.total == Decimal('25.30') +@pytest.mark.django_db +def test_order_create_fee_as_percentage_with_zero(token_client, organizer, event, item, quota, question): + with scopes_disabled(): + voucher = event.vouchers.create(price_mode="set", value=Decimal("0.00")) + res = copy.deepcopy(ORDER_CREATE_PAYLOAD) + res['fees'][0]['_treat_value_as_percentage'] = True + res['fees'][0]['_split_taxes_like_products'] = True + res['fees'][0]['value'] = '10.00' + res['positions'][0]['item'] = item.pk + res['positions'][0]['answers'][0]['question'] = question.pk + res['positions'][0]['voucher'] = voucher.code + del res['positions'][0]['price'] + + res['simulate'] = True + resp = token_client.post( + '/api/v1/organizers/{}/events/{}/orders/'.format( + organizer.slug, event.slug + ), format='json', data=res + ) + assert resp.status_code == 201 + assert resp.data["total"] == "0.00" + + res['simulate'] = False + resp = token_client.post( + '/api/v1/organizers/{}/events/{}/orders/'.format( + organizer.slug, event.slug + ), format='json', data=res + ) + assert resp.status_code == 201 + with scopes_disabled(): + o = Order.objects.get(code=resp.data['code']) + fee = o.fees.first() + assert fee.value == Decimal('0.00') + assert o.total == Decimal('0.00') + + @pytest.mark.django_db def test_order_create_fee_with_auto_tax(token_client, organizer, event, item, quota, question, taxrule): res = copy.deepcopy(ORDER_CREATE_PAYLOAD) From b5e20df508f98b8496374bc98cd02b627c6de549 Mon Sep 17 00:00:00 2001 From: luelista Date: Thu, 12 Jun 2025 14:03:40 +0200 Subject: [PATCH 59/98] Use proper log entry types for waiting list emails (#5070) (#5219) --- src/pretix/base/logentrytypes.py | 14 +++++++++++++- src/pretix/base/models/waitinglist.py | 2 +- src/pretix/control/logdisplay.py | 16 +++++++++++----- src/pretix/plugins/sendmail/signals.py | 8 +++++++- src/pretix/plugins/sendmail/tasks.py | 1 + 5 files changed, 33 insertions(+), 8 deletions(-) diff --git a/src/pretix/base/logentrytypes.py b/src/pretix/base/logentrytypes.py index d27232d532..7aebba883e 100644 --- a/src/pretix/base/logentrytypes.py +++ b/src/pretix/base/logentrytypes.py @@ -26,7 +26,7 @@ from django.utils.translation import gettext_lazy as _, pgettext_lazy from pretix.base.models import ( Discount, Item, ItemCategory, Order, Question, Quota, SubEvent, TaxRule, - Voucher, + Voucher, WaitingListEntry, ) from .logentrytype_registry import ( # noqa @@ -145,3 +145,15 @@ class TaxRuleLogEntryType(EventLogEntryType): object_link_viewname = 'control:event.settings.tax.edit' object_link_argname = 'rule' content_type = TaxRule + + +class WaitingListEntryLogEntryType(EventLogEntryType): + object_link_wrapper = _('{val}') + object_link_viewname = 'control:event.orders.waitinglist' + content_type = WaitingListEntry + + def get_object_link_info(self, logentry) -> Optional[dict]: + info = super().get_object_link_info(logentry) + if info and 'href' in info: + info['href'] += '?status=a&entry=' + str(logentry.content_object.pk) + return info diff --git a/src/pretix/base/models/waitinglist.py b/src/pretix/base/models/waitinglist.py index 2b9b48df75..38f50de50b 100644 --- a/src/pretix/base/models/waitinglist.py +++ b/src/pretix/base/models/waitinglist.py @@ -218,7 +218,6 @@ class WaitingListEntry(LoggedModel): 'waitinglistentry': self.pk, 'subevent': self.subevent.pk if self.subevent else None, }, user=user, auth=auth) - self.log_action('pretix.event.orders.waitinglist.voucher_assigned', user=user, auth=auth) self.voucher = v self.save() @@ -234,6 +233,7 @@ class WaitingListEntry(LoggedModel): ), user=user, auth=auth, + log_entry_type='pretix.event.orders.waitinglist.voucher_assigned', ) def send_mail(self, subject: Union[str, LazyI18nString], template: Union[str, LazyI18nString], diff --git a/src/pretix/control/logdisplay.py b/src/pretix/control/logdisplay.py index 7005579dc7..58001cb368 100644 --- a/src/pretix/control/logdisplay.py +++ b/src/pretix/control/logdisplay.py @@ -50,7 +50,7 @@ from pretix.base.logentrytypes import ( DiscountLogEntryType, EventLogEntryType, ItemCategoryLogEntryType, ItemLogEntryType, LogEntryType, OrderLogEntryType, QuestionLogEntryType, QuotaLogEntryType, TaxRuleLogEntryType, VoucherLogEntryType, - log_entry_types, + WaitingListEntryLogEntryType, log_entry_types, ) from pretix.base.models import ( Checkin, CheckinList, Event, ItemVariation, LogEntry, OrderPosition, @@ -697,11 +697,7 @@ class CoreUserImpersonatedLogEntryType(UserImpersonatedLogEntryType): 'the last request was less than 24 hours ago.'), 'pretix.organizer.deleted': _('The organizer "{name}" has been deleted.'), 'pretix.waitinglist.voucher': _('A voucher has been sent to a person on the waiting list.'), # legacy - 'pretix.event.orders.waitinglist.voucher_assigned': _('A voucher has been sent to a person on the waiting list.'), - 'pretix.event.orders.waitinglist.deleted': _('An entry has been removed from the waiting list.'), 'pretix.event.order.waitinglist.transferred': _('An entry has been transferred to another waiting list.'), # legacy - 'pretix.event.orders.waitinglist.changed': _('An entry has been changed on the waiting list.'), - 'pretix.event.orders.waitinglist.added': _('An entry has been added to the waiting list.'), 'pretix.team.created': _('The team has been created.'), 'pretix.team.changed': _('The team settings have been changed.'), 'pretix.team.deleted': _('The team has been deleted.'), @@ -903,3 +899,13 @@ class LegacyCheckinLogEntryType(OrderLogEntryType): datetime=dt_formatted, list=checkin_list ) + + +@log_entry_types.new_from_dict({ + 'pretix.event.orders.waitinglist.voucher_assigned': _('A voucher has been sent to a person on the waiting list.'), + 'pretix.event.orders.waitinglist.deleted': _('An entry has been removed from the waiting list.'), + 'pretix.event.orders.waitinglist.changed': _('An entry has been changed on the waiting list.'), + 'pretix.event.orders.waitinglist.added': _('An entry has been added to the waiting list.'), +}) +class CoreWaitingListEntryLogEntryType(WaitingListEntryLogEntryType): + pass diff --git a/src/pretix/plugins/sendmail/signals.py b/src/pretix/plugins/sendmail/signals.py index f1da7ca025..0bb80c535c 100644 --- a/src/pretix/plugins/sendmail/signals.py +++ b/src/pretix/plugins/sendmail/signals.py @@ -47,7 +47,8 @@ from django.utils.translation import gettext_lazy as _ from django_scopes import scope, scopes_disabled from pretix.base.logentrytypes import ( - EventLogEntryType, OrderLogEntryType, log_entry_types, + EventLogEntryType, OrderLogEntryType, WaitingListEntryLogEntryType, + log_entry_types, ) from pretix.base.models import SubEvent from pretix.base.signals import ( @@ -130,6 +131,11 @@ class SendmailPluginOrderLogEntryType(OrderLogEntryType): pass +@log_entry_types.new('pretix.plugins.sendmail.waitinglist.email.sent', _('The person on the waiting list received a mass email.')) +class SendmailPluginWaitingListLogEntryType(WaitingListEntryLogEntryType): + pass + + @log_entry_types.new('pretix.plugins.sendmail.rule.added', _('An email rule was created')) @log_entry_types.new('pretix.plugins.sendmail.rule.changed', _('An email rule was updated')) @log_entry_types.new('pretix.plugins.sendmail.rule.order.email.sent', _('A scheduled email was sent to the order')) diff --git a/src/pretix/plugins/sendmail/tasks.py b/src/pretix/plugins/sendmail/tasks.py index 08ae713e73..41dffdcd22 100644 --- a/src/pretix/plugins/sendmail/tasks.py +++ b/src/pretix/plugins/sendmail/tasks.py @@ -201,4 +201,5 @@ def send_mails_to_waitinglist(event: Event, user: int, subject: dict, message: d ), user=user, attach_cached_files=attachments, + log_entry_type='pretix.plugins.sendmail.waitinglist.email.sent', ) From 5420f57aa24d318b161dffbacd69e45c6c46ace1 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Fri, 13 Jun 2025 11:01:00 +0200 Subject: [PATCH 60/98] Subevent bulk editing: Warn about deleted quotas (#5238) * Subevent bulk editing: Warn about deleted quotas * Fix condition * Update alerts --- .../pretixcontrol/subevents/bulk_edit.html | 37 +++++++++++++------ src/pretix/static/pretixcontrol/js/ui/main.js | 35 ++++++++++++++++-- 2 files changed, 58 insertions(+), 14 deletions(-) diff --git a/src/pretix/control/templates/pretixcontrol/subevents/bulk_edit.html b/src/pretix/control/templates/pretixcontrol/subevents/bulk_edit.html index 5025e95c05..e6c9898953 100644 --- a/src/pretix/control/templates/pretixcontrol/subevents/bulk_edit.html +++ b/src/pretix/control/templates/pretixcontrol/subevents/bulk_edit.html @@ -5,6 +5,7 @@ {% load captureas %} {% load static %} {% load eventsignal %} +{% load dialog %} {% block title %}{% trans "Change multiple dates" context "subevent" %}{% endblock %} {% block content %}

      @@ -182,21 +183,22 @@
      {% trans "Quotas" %} - {% if sampled_quotas|default_if_none:"NONE" == "NONE" %} -
      - {% blocktrans trimmed %} - You selected a set of dates that currently have different quota setups. You can therefore - not change their quotas in bulk. If you want, you can set up a new set of quotas to - replace the quota setup of all selected dates. - {% endblocktrans %} -
      - {% endif %} -
      +
      + {% if sampled_quotas|default_if_none:"NONE" == "NONE" %} +
      + {% trans "You selected a set of dates that currently have different quota setups." %} + {% trans "Using this option will delete all current quotas from all selected dates." %} +
      + {% endif %} +
      {{ formset.management_form }} {% bootstrap_formset_errors formset %} @@ -271,7 +273,7 @@
      {% trans "Check-in lists" %} {% if sampled_lists|default_if_none:"NONE" == "NONE" %} -
      +
      {% blocktrans trimmed %} You selected a set of dates that currently have different check-in list setups. You can therefore not change their check-in lists in bulk. @@ -367,4 +369,17 @@
      + {% trans "Delete existing quotas" as dialog_title %} + {% trans "Using this option will delete all current quotas from all selected dates." as dialog_text %} + {% trans "This cannot be reverted. Are you sure to proceed?" as dialog_text2 %} + {% dialog "confirm-override-quotas" dialog_title dialog_text|add:" "|add:dialog_text2 icon="trash" %} + + {% enddialog %} {% endblock %} diff --git a/src/pretix/static/pretixcontrol/js/ui/main.js b/src/pretix/static/pretixcontrol/js/ui/main.js index 8156b34336..3b476ab22d 100644 --- a/src/pretix/static/pretixcontrol/js/ui/main.js +++ b/src/pretix/static/pretixcontrol/js/ui/main.js @@ -648,18 +648,47 @@ var form_handlers = function (el) { var $checkbox = $(this).find("input[type=checkbox][name=_bulk]"); var $content = $(this).find(".field-content"); var $fields = $content.find("input, select, textarea, button"); + var $dialog = $(this).attr("data-confirm-dialog") ? $($(this).attr("data-confirm-dialog")) : null; + var warningShown = false; + + if ($dialog) { + $dialog.on("close", function () { + if ($dialog.get(0).returnValue === "yes") { + $checkbox.prop("checked", true); + } else { + $checkbox.prop("checked", false); + warningShown = false; + } + update(); + }); + } var update = function () { var isChecked = $checkbox.prop("checked"); + $content.toggleClass("enabled", isChecked); $fields.attr("tabIndex", isChecked ? 0 : -1); } $content.on("focusin change click", function () { if ($checkbox.prop("checked")) return; - $checkbox.prop("checked", true); - update(); + if ($dialog && !warningShown) { + warningShown = true; + $dialog.get(0).showModal(); + } else { + $checkbox.prop("checked", true); + update(); + } }); - $checkbox.on('change', update) + $checkbox.on('change', function () { + var isChecked = $checkbox.prop("checked"); + if (isChecked && $dialog && !warningShown) { + warningShown = true; + $dialog.get(0).showModal(); + } else if (!isChecked) { + warningShown = false; + } + update(); + }) update(); }); From b5f8438c188ece09d09f660f754f87702281e584 Mon Sep 17 00:00:00 2001 From: luelista Date: Fri, 13 Jun 2025 11:01:18 +0200 Subject: [PATCH 61/98] Show warning on incompatible waiting list options (#5218) If "Hide all products that are sold out" is enabled, the waiting list won't work. --- .../pretixcontrol/event/settings.html | 21 +++++++++++++++++++ src/pretix/static/pretixcontrol/js/ui/tabs.js | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/pretix/control/templates/pretixcontrol/event/settings.html b/src/pretix/control/templates/pretixcontrol/event/settings.html index c736b3722a..3a90aef7ca 100644 --- a/src/pretix/control/templates/pretixcontrol/event/settings.html +++ b/src/pretix/control/templates/pretixcontrol/event/settings.html @@ -247,6 +247,17 @@ {% bootstrap_field sform.show_variations_expanded layout="control" %} {% bootstrap_field sform.hide_sold_out layout="control" %} +
      +
      +
      +

      {% trans "Incompatible settings" %}

      + {% blocktrans trimmed %} + Customers won't be able to add themselves to the waiting list, because "Hide all products that are sold out" is enabled. + {% endblocktrans %} +
      +
      +
      +

      {% trans "Calendar and list views" context "subevents" %}

      {% if sform.frontpage_subevent_ordering %} {% bootstrap_field sform.frontpage_subevent_ordering layout="control" %} @@ -372,6 +383,16 @@
      {% bootstrap_field sform.waiting_list_enabled layout="control" %} +
      +
      +
      +

      {% trans "Incompatible settings" %}

      + {% blocktrans trimmed %} + Customers won't be able to add themselves to the waiting list, because "Hide all products that are sold out" is enabled. + {% endblocktrans %} +
      +
      +
      {% bootstrap_field sform.waiting_list_auto layout="control" %}

      - + + @@ -102,6 +103,7 @@ + {% endfor %} @@ -110,6 +112,7 @@ +
      ' + strings['days']['MO'] + '
      {% trans "Answer" %} {% trans "Count" %}{% trans "Percentage" %}{% trans "% of answers" %}{% trans "% of tickets" %}
      {{ stat.count }} {{ stat.percentage|floatformat:1 }} %{{ stat.percentage_attendees|floatformat:1 }} %
      {% trans "Sum" %} {{ total }}
      diff --git a/src/pretix/control/views/item.py b/src/pretix/control/views/item.py index 9c4b51ef73..7c9c39b86f 100644 --- a/src/pretix/control/views/item.py +++ b/src/pretix/control/views/item.py @@ -64,8 +64,9 @@ from pretix.api.serializers.item import ( ) from pretix.base.forms import I18nFormSet from pretix.base.models import ( - CartPosition, Item, ItemCategory, ItemVariation, Order, Question, - QuestionAnswer, QuestionOption, Quota, SeatCategoryMapping, Voucher, + CartPosition, Item, ItemCategory, ItemVariation, Order, OrderPosition, + Question, QuestionAnswer, QuestionOption, Quota, SeatCategoryMapping, + Voucher, ) from pretix.base.models.event import SubEvent from pretix.base.models.items import ItemAddOn, ItemBundle, ItemMetaValue @@ -665,36 +666,41 @@ class QuestionView(EventPermissionRequiredMixin, QuestionMixin, ChartContainingV template_name_field = 'question' def get_answer_statistics(self): + opqs = OrderPosition.objects.filter( + order__event=self.request.event, + ) qs = QuestionAnswer.objects.filter( question=self.object, orderposition__isnull=False, - orderposition__order__event=self.request.event ) if self.request.GET.get("subevent", "") != "": - qs = qs.filter(orderposition__subevent=self.request.GET["subevent"]) + opqs = opqs.filter(subevent=self.request.GET["subevent"]) s = self.request.GET.get("status", "np") if s != "": if s == 'o': - qs = qs.filter(orderposition__order__status=Order.STATUS_PENDING, - orderposition__order__expires__lt=now().replace(hour=0, minute=0, second=0)) + opqs = opqs.filter(order__status=Order.STATUS_PENDING, + order__expires__lt=now().replace(hour=0, minute=0, second=0)) elif s == 'np': - qs = qs.filter(orderposition__order__status__in=[Order.STATUS_PENDING, Order.STATUS_PAID]) + opqs = opqs.filter(order__status__in=[Order.STATUS_PENDING, Order.STATUS_PAID]) elif s == 'pv': - qs = qs.filter( - Q(orderposition__order__status=Order.STATUS_PAID) | - Q(orderposition__order__status=Order.STATUS_PENDING, orderposition__order__valid_if_pending=True) + opqs = opqs.filter( + Q(order__status=Order.STATUS_PAID) | + Q(order__status=Order.STATUS_PENDING, order__valid_if_pending=True) ) elif s == 'ne': - qs = qs.filter(orderposition__order__status__in=[Order.STATUS_PENDING, Order.STATUS_EXPIRED]) + opqs = opqs.filter(order__status__in=[Order.STATUS_PENDING, Order.STATUS_EXPIRED]) else: - qs = qs.filter(orderposition__order__status=s) + opqs = opqs.filter(order__status=s) if s not in (Order.STATUS_CANCELED, ""): - qs = qs.filter(orderposition__canceled=False) + opqs = opqs.filter(canceled=False) if self.request.GET.get("item", "") != "": i = self.request.GET.get("item", "") - qs = qs.filter(orderposition__item_id__in=(i,)) + opqs = opqs.filter(item_id__in=(i,)) + + qs = qs.filter(orderposition__in=opqs) + op_cnt = opqs.filter(item__in=self.object.items.all()).count() if self.object.type == Question.TYPE_FILE: qs = [ @@ -734,6 +740,7 @@ class QuestionView(EventPermissionRequiredMixin, QuestionMixin, ChartContainingV total = sum(a['count'] for a in r) for a in r: a['percentage'] = (a['count'] / total * 100.) if total else 0 + a['percentage_attendees'] = (a['count'] / op_cnt * 100.) if op_cnt else 0 return r, total def get_context_data(self, **kwargs): From fdbb03d0380a69f4141dac12cfada342364e0d65 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Thu, 12 Jun 2025 10:57:26 +0200 Subject: [PATCH 63/98] Translations: Update German Currently translated at 100.0% (5900 of 5900 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/ powered by weblate --- src/pretix/locale/de/LC_MESSAGES/django.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pretix/locale/de/LC_MESSAGES/django.po b/src/pretix/locale/de/LC_MESSAGES/django.po index 970e59f620..dfcf23f0fb 100644 --- a/src/pretix/locale/de/LC_MESSAGES/django.po +++ b/src/pretix/locale/de/LC_MESSAGES/django.po @@ -5,8 +5,8 @@ msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-30 10:35+0000\n" -"PO-Revision-Date: 2025-05-30 11:15+0000\n" -"Last-Translator: Raphael Michel \n" +"PO-Revision-Date: 2025-06-12 17:00+0000\n" +"Last-Translator: Richard Schreiber \n" "Language-Team: German \n" "Language: de\n" @@ -33401,7 +33401,7 @@ msgstr "Übersicht über die bestellten Produkte" #: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:50 msgid "Continue with order process" -msgstr "Mit dem Bestellprozess fortfahren" +msgstr "Fortfahren mit dem Bestellprozess" #: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:55 #: pretix/presale/templates/pretixpresale/event/index.html:232 From dc198d4ab6c48ab2faab8480cd16b883b8453363 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Fri, 13 Jun 2025 11:05:10 +0200 Subject: [PATCH 64/98] Control: fix question graphs UI (#5242) --- .../static/pretixcontrol/js/ui/question.js | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/pretix/static/pretixcontrol/js/ui/question.js b/src/pretix/static/pretixcontrol/js/ui/question.js index a97c854f54..8b5a044dc8 100644 --- a/src/pretix/static/pretixcontrol/js/ui/question.js +++ b/src/pretix/static/pretixcontrol/js/ui/question.js @@ -7,17 +7,16 @@ $(function () { $(".chart").css("height", "250px"); var data_type = $("#question_chart").attr("data-type"), - data = JSON.parse($("#question-chart-data").html()), + data = JSON.parse($("#question-chart-data").text() || "[]"), others_sum = 0, max_num = 8; - for (var i in data) { - data[i].value = data[i].count; - data[i].label = data[i].answer; - if (data[i].label.length > 20) { - data[i].label = data[i].label.substring(0, 20) + '…'; + data = data[0]?.map(function (d) { + return { + 'value': d.count, + 'label': d.answer.length > 20 ? d.answer.substring(0, 20) + '…' : d.answer, } - } + }) || []; if (data_type == 'N') { // Sort @@ -36,7 +35,7 @@ $(function () { // Limit shown options if (data.length > max_num) { for (var i = max_num; i < data.length; i++) { - others_sum += data[i].count; + others_sum += data[i].value; } data = data.slice(0, max_num); data.push({'value': others_sum, 'label': gettext('Others')}); @@ -78,7 +77,7 @@ $(function () { data: data, resize: true, xkey: 'label', - ykeys: ['count'], + ykeys: ['value'], labels: [gettext('Count')] }); } From 70f71c80776e369e18c1ef2f462ea9c49c1e342d Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 16 Jun 2025 10:49:08 +0200 Subject: [PATCH 65/98] Email: Remove more characters from sender name (Z#23197264) (#5248) * Email: Remove more characters from sender name (Z#23197264) * fix typo --------- Co-authored-by: Richard Schreiber --- src/pretix/base/services/mail.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/pretix/base/services/mail.py b/src/pretix/base/services/mail.py index 29f681bd49..73cfedbbd4 100644 --- a/src/pretix/base/services/mail.py +++ b/src/pretix/base/services/mail.py @@ -96,12 +96,19 @@ class SendMailException(Exception): def clean_sender_name(sender_name: str) -> str: + # Even though we try to properly escape sender names, some characters seem to cause problems when the escaping + # fails due to some forwardings, etc. + # Emails with @ in their sender name are rejected by some mailservers (e.g. Microsoft) because it looks like # a phishing attempt. sender_name = sender_name.replace("@", " ") # Emails with : in their sender name are treated by Microsoft like emails with no From header at all, leading # to a higher spam likelihood. sender_name = sender_name.replace(":", " ") + # Emails with , in their sender name look like multiple senders + sender_name = sender_name.replace(",", "") + # Emails with " in their sender name could be escaped, but somehow create issues in reality + sender_name = sender_name.replace("\"", "") # Emails with excessively long sender names are rejected by some mailservers if len(sender_name) > 75: From 9fc9aaa661cccb5c4980d84fd35f88ffb5b09759 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 17 Jun 2025 09:58:18 +0200 Subject: [PATCH 66/98] Event settings: Fix duplicate font choices (Z#23196687) (#5230) --- src/pretix/control/forms/event.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pretix/control/forms/event.py b/src/pretix/control/forms/event.py index 7e5b594682..38772fde72 100644 --- a/src/pretix/control/forms/event.py +++ b/src/pretix/control/forms/event.py @@ -665,9 +665,9 @@ class EventSettingsForm(EventSettingsValidationMixin, FormPlaceholderMixin, Sett del self.fields['event_list_available_only'] del self.fields['event_list_filters'] del self.fields['event_calendar_future_only'] - self.fields['primary_font'].choices += [ + self.fields['primary_font'].choices = [('Open Sans', 'Open Sans')] + sorted([ (a, {"title": a, "data": v}) for a, v in get_fonts(self.event, pdf_support_required=False).items() - ] + ], key=lambda a: a[0]) # create "virtual" fields for better UX when editing _asked and _required fields self.virtual_keys = [] From dec07b2df1aaab01a13e0994072bcf9e99e1af4f Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 17 Jun 2025 11:30:52 +0200 Subject: [PATCH 67/98] Subevent calendar: Respect time machine (#5231) --- src/pretix/presale/views/organizer.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/pretix/presale/views/organizer.py b/src/pretix/presale/views/organizer.py index 6d7c3e4202..4056f03bc4 100644 --- a/src/pretix/presale/views/organizer.py +++ b/src/pretix/presale/views/organizer.py @@ -64,6 +64,7 @@ from pretix.base.models import ( Event, EventMetaValue, Organizer, Quota, SubEvent, SubEventMetaValue, ) from pretix.base.services.quotas import QuotaAvailability +from pretix.base.timemachine import time_machine_now from pretix.helpers.compat import date_fromisocalendar from pretix.helpers.daterange import daterange from pretix.helpers.formats.en.formats import ( @@ -228,7 +229,7 @@ class EventListMixin: def _set_month_to_next_subevent(self): tz = self.request.event.timezone - now_dt = now() + now_dt = time_machine_now() next_sev = self.request.event.subevents.using(settings.DATABASE_REPLICA).annotate( effective_date=Case( When(date_from__lt=now_dt, date_to__isnull=False, date_to__gte=now_dt, then=Value(now_dt)), @@ -245,8 +246,8 @@ class EventListMixin: self.year = datetime_from.astimezone(tz).year self.month = datetime_from.astimezone(tz).month else: - self.year = now().year - self.month = now().month + self.year = now_dt.year + self.month = now_dt.month def _set_month_to_next_event(self): now_dt = now() @@ -296,7 +297,7 @@ class EventListMixin: try: date = dateutil.parser.isoparse(self.request.GET.get('date')).date() except ValueError: - date = now().date() + date = time_machine_now().date() self.year = date.year self.month = date.month else: @@ -306,7 +307,7 @@ class EventListMixin: self._set_month_to_next_event() def _set_week_to_next_subevent(self): - now_dt = now() + now_dt = time_machine_now() tz = self.request.event.timezone next_sev = self.request.event.subevents.using(settings.DATABASE_REPLICA).annotate( effective_date=Case( @@ -324,8 +325,8 @@ class EventListMixin: self.year = datetime_from.astimezone(tz).isocalendar()[0] self.week = datetime_from.astimezone(tz).isocalendar()[1] else: - self.year = now().isocalendar()[0] - self.week = now().isocalendar()[1] + self.year = now_dt.isocalendar()[0] + self.week = now_dt.isocalendar()[1] def _set_week_to_next_event(self): now_dt = now() @@ -375,7 +376,7 @@ class EventListMixin: try: iso = dateutil.parser.isoparse(self.request.GET.get('date')).isocalendar() except ValueError: - iso = now().isocalendar() + iso = time_machine_now().isocalendar() self.year = iso[0] self.week = iso[1] else: From 7bb2e4c170eb0ce861cd5455f3922cd10b6b6d62 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Wed, 18 Jun 2025 09:11:16 +0200 Subject: [PATCH 68/98] Improve stats-UI fix (#5243) * Improve stats-UI fix * remove unused stats_json --- .../control/templates/pretixcontrol/items/question.html | 4 ++-- src/pretix/control/views/item.py | 1 - src/pretix/static/pretixcontrol/js/ui/question.js | 6 +++--- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/pretix/control/templates/pretixcontrol/items/question.html b/src/pretix/control/templates/pretixcontrol/items/question.html index 9dfe84023a..168c597449 100644 --- a/src/pretix/control/templates/pretixcontrol/items/question.html +++ b/src/pretix/control/templates/pretixcontrol/items/question.html @@ -59,7 +59,7 @@
    -
    +
    {% if not stats %}

    @@ -81,7 +81,7 @@

    - + {{ stats|json_script:"question-chart-data" }}
    diff --git a/src/pretix/control/views/item.py b/src/pretix/control/views/item.py index 7c9c39b86f..7cf68c9d41 100644 --- a/src/pretix/control/views/item.py +++ b/src/pretix/control/views/item.py @@ -748,7 +748,6 @@ class QuestionView(EventPermissionRequiredMixin, QuestionMixin, ChartContainingV ctx['items'] = self.object.items.all() stats = self.get_answer_statistics() ctx['stats'], ctx['total'] = stats - ctx['stats_json'] = json.dumps(stats) return ctx def get_object(self, queryset=None) -> Question: diff --git a/src/pretix/static/pretixcontrol/js/ui/question.js b/src/pretix/static/pretixcontrol/js/ui/question.js index 8b5a044dc8..99dff95d5f 100644 --- a/src/pretix/static/pretixcontrol/js/ui/question.js +++ b/src/pretix/static/pretixcontrol/js/ui/question.js @@ -1,7 +1,7 @@ /*global $, Morris, gettext*/ $(function () { // Question view - if (!$("#question-stats").length) { + if (!$("#question_chart").length) { return; } @@ -11,12 +11,12 @@ $(function () { others_sum = 0, max_num = 8; - data = data[0]?.map(function (d) { + data = data.map(function (d) { return { 'value': d.count, 'label': d.answer.length > 20 ? d.answer.substring(0, 20) + '…' : d.answer, } - }) || []; + }); if (data_type == 'N') { // Sort From 40855e14d904caef725dfd05f16093e3ddd10744 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 23 Jun 2025 10:04:12 +0200 Subject: [PATCH 69/98] Fix non-total ordering of items (fixes flaky test) (#5251) --- src/pretix/base/models/items.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pretix/base/models/items.py b/src/pretix/base/models/items.py index acd2bd7753..d69db384bf 100644 --- a/src/pretix/base/models/items.py +++ b/src/pretix/base/models/items.py @@ -793,7 +793,7 @@ class Item(LoggedModel): class Meta: verbose_name = _("Product") verbose_name_plural = _("Products") - ordering = ("category__position", "category", "position") + ordering = ("category__position", "category", "position", "pk") def __str__(self): return str(self.internal_name or self.name) From d55f4119893f72dd3fc07622c556c7620be04b00 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Mon, 23 Jun 2025 11:49:23 +0200 Subject: [PATCH 70/98] Add data-article-id to reference cart-item in product-list (#5244) --- .../presale/templates/pretixpresale/event/fragment_cart.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pretix/presale/templates/pretixpresale/event/fragment_cart.html b/src/pretix/presale/templates/pretixpresale/event/fragment_cart.html index c0240381ab..c701718eaf 100644 --- a/src/pretix/presale/templates/pretixpresale/event/fragment_cart.html +++ b/src/pretix/presale/templates/pretixpresale/event/fragment_cart.html @@ -25,7 +25,7 @@
    {% for line in cart.positions %} -
    +

    {% if line.addon_to %} From 90ec82ea1af80424633093133165d27f5baaa788 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Jun 2025 15:02:53 +0200 Subject: [PATCH 71/98] Update oauthlib requirement from ==3.2.* to ==3.3.* (#5254) Updates the requirements on [oauthlib](https://github.com/oauthlib/oauthlib) to permit the latest version. - [Release notes](https://github.com/oauthlib/oauthlib/releases) - [Changelog](https://github.com/oauthlib/oauthlib/blob/master/CHANGELOG.rst) - [Commits](https://github.com/oauthlib/oauthlib/compare/v3.2.0...v3.3.0) --- updated-dependencies: - dependency-name: oauthlib dependency-version: 3.3.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index dd7892ea2a..8169b95fef 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -67,7 +67,7 @@ dependencies = [ "markdown==3.8", # 3.3.5 requires importlib-metadata>=4.4, but django-bootstrap3 requires importlib-metadata<3. # We can upgrade markdown again once django-bootstrap3 upgrades or once we drop Python 3.6 and 3.7 "mt-940==4.30.*", - "oauthlib==3.2.*", + "oauthlib==3.3.*", "openpyxl==3.1.*", "packaging", "paypalrestsdk==1.13.*", From 512ca1966d14c65cf27cc396c0caeae70a600ac0 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 23 Jun 2025 15:40:15 +0200 Subject: [PATCH 72/98] Remove a cache isolation issue during tests --- src/tests/conftest.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/tests/conftest.py b/src/tests/conftest.py index 3c3556749f..abedc3192c 100644 --- a/src/tests/conftest.py +++ b/src/tests/conftest.py @@ -23,6 +23,7 @@ import inspect import os import pytest +from django.core.cache import cache from django.test import override_settings from django.utils import translation from django_scopes import scopes_disabled @@ -115,6 +116,7 @@ def fakeredis_client(monkeypatch): }, } ): + cache.clear() redis = get_redis_connection("default", True) redis.flushall() monkeypatch.setattr('django_redis.get_redis_connection', get_redis_connection, raising=False) From 8b119b329c06bd81c1506171bba9f9f66f735dc5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Jun 2025 15:44:22 +0200 Subject: [PATCH 73/98] Update django-redis requirement from ==5.4.* to ==6.0.* (#5252) Updates the requirements on [django-redis](https://github.com/jazzband/django-redis) to permit the latest version. - [Release notes](https://github.com/jazzband/django-redis/releases) - [Changelog](https://github.com/jazzband/django-redis/blob/master/CHANGELOG.rst) - [Commits](https://github.com/jazzband/django-redis/compare/5.4.0...6.0.0) --- updated-dependencies: - dependency-name: django-redis dependency-version: 6.0.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 8169b95fef..272275faeb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -51,7 +51,7 @@ dependencies = [ "django-oauth-toolkit==2.3.*", "django-otp==1.6.*", "django-phonenumber-field==7.3.*", - "django-redis==5.4.*", + "django-redis==6.0.*", "django-scopes==2.0.*", "django-statici18n==2.6.*", "djangorestframework==3.16.*", From 161404f15260f7ac993df5258d4acd09d62f7ac9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Jun 2025 16:06:30 +0200 Subject: [PATCH 74/98] Update sentry-sdk requirement from ==2.29.* to ==2.30.* (#5241) Updates the requirements on [sentry-sdk](https://github.com/getsentry/sentry-python) to permit the latest version. - [Release notes](https://github.com/getsentry/sentry-python/releases) - [Changelog](https://github.com/getsentry/sentry-python/blob/master/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-python/compare/2.29.0...2.30.0) --- updated-dependencies: - dependency-name: sentry-sdk dependency-version: 2.30.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 272275faeb..3535d08fca 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -91,7 +91,7 @@ dependencies = [ "redis==5.2.*", "reportlab==4.4.*", "requests==2.31.*", - "sentry-sdk==2.29.*", + "sentry-sdk==2.30.*", "sepaxml==2.6.*", "stripe==7.9.*", "text-unidecode==1.*", From ab3c03b278af17493e2b22844d6fc57e0047ba68 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Jun 2025 16:27:21 +0200 Subject: [PATCH 75/98] Update fakeredis requirement from ==2.26.* to ==2.30.* (#5253) Updates the requirements on [fakeredis](https://github.com/cunla/fakeredis-py) to permit the latest version. - [Release notes](https://github.com/cunla/fakeredis-py/releases) - [Commits](https://github.com/cunla/fakeredis-py/compare/v2.26.0...v2.30.0) --- updated-dependencies: - dependency-name: fakeredis dependency-version: 2.30.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 3535d08fca..dc80fef8af 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -110,7 +110,7 @@ dev = [ "aiohttp==3.12.*", "coverage", "coveralls", - "fakeredis==2.26.*", + "fakeredis==2.30.*", "flake8==7.2.*", "freezegun", "isort==6.0.*", From 308eac20b2c2878cfcc22eb9734f2eeaafb06002 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Jun 2025 17:03:41 +0200 Subject: [PATCH 76/98] Update redis requirement from ==5.2.* to ==6.2.* (#5181) Updates the requirements on [redis](https://github.com/redis/redis-py) to permit the latest version. - [Release notes](https://github.com/redis/redis-py/releases) - [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES) - [Commits](https://github.com/redis/redis-py/compare/v5.2.0...v6.2.0) --- updated-dependencies: - dependency-name: redis dependency-version: 6.2.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index dc80fef8af..e6d75f0b23 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -88,7 +88,7 @@ dependencies = [ "pytz-deprecation-shim==0.1.*", "pyuca", "qrcode==8.2", - "redis==5.2.*", + "redis==6.2.*", "reportlab==4.4.*", "requests==2.31.*", "sentry-sdk==2.30.*", From f6df03c42759cf466e65e57ed9ba389ac513eeb5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Jun 2025 17:17:57 +0200 Subject: [PATCH 77/98] Bump brace-expansion from 1.1.11 to 1.1.12 in /src/pretix/static/npm_dir (#5265) Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.11 to 1.1.12. - [Release notes](https://github.com/juliangruber/brace-expansion/releases) - [Commits](https://github.com/juliangruber/brace-expansion/compare/1.1.11...v1.1.12) --- updated-dependencies: - dependency-name: brace-expansion dependency-version: 1.1.12 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- src/pretix/static/npm_dir/package-lock.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/pretix/static/npm_dir/package-lock.json b/src/pretix/static/npm_dir/package-lock.json index 661b69f516..6b1430eea5 100644 --- a/src/pretix/static/npm_dir/package-lock.json +++ b/src/pretix/static/npm_dir/package-lock.json @@ -1887,9 +1887,10 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", "optional": true, "dependencies": { "balanced-match": "^1.0.0", @@ -5009,9 +5010,9 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "optional": true, "requires": { "balanced-match": "^1.0.0", From d67e1116f476efc6a3929bd02bd182bdfd7a1ca4 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 24 Jun 2025 10:05:36 +0200 Subject: [PATCH 78/98] Address forms: Add "federal entity" of Mexico to state list --- src/pretix/base/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pretix/base/settings.py b/src/pretix/base/settings.py index 50495abc1e..d9d93ea3c8 100644 --- a/src/pretix/base/settings.py +++ b/src/pretix/base/settings.py @@ -3749,7 +3749,7 @@ COUNTRIES_WITH_STATE_IN_ADDRESS = { # 'CN': (['Province', 'Autonomous region', 'Munincipality'], 'long'), 'JP': (['Prefecture'], 'long'), 'MY': (['State', 'Federal territory'], 'long'), - 'MX': (['State', 'Federal district'], 'short'), + 'MX': (['State', 'Federal district', 'Federal entity'], 'short'), 'US': (['State', 'Outlying area', 'District'], 'short'), 'IT': (['Province', 'Free municipal consortium', 'Metropolitan city', 'Autonomous province', 'Free municipal consortium', 'Decentralized regional entity'], 'short'), From f51906338fc566d3a72a9a28e14e68f3a2521740 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 24 Jun 2025 16:14:33 +0200 Subject: [PATCH 79/98] Order detail: Set correct language for invoice email (Z#23197863) (#5260) --- src/pretix/control/views/orders.py | 35 +++++++++++++++--------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/pretix/control/views/orders.py b/src/pretix/control/views/orders.py index cca5fef1f4..e1658b7873 100644 --- a/src/pretix/control/views/orders.py +++ b/src/pretix/control/views/orders.py @@ -548,23 +548,24 @@ class OrderDetail(OrderView): unsent_invoices = [ii.pk for ii in ctx['invoices'] if not ii.sent_to_customer] if unsent_invoices: - ctx['invoices_send_link'] = reverse('control:event.order.sendmail', kwargs={ - 'event': self.request.event.slug, - 'organizer': self.request.event.organizer.slug, - 'code': self.order.code - }) + '?' + urlencode({ - 'subject': ngettext('Your invoice', 'Your invoices', len(unsent_invoices)), - 'message': ngettext( - 'Hello,\n\nplease find your invoice attached to this email.\n\n' - 'Your {event} team', - 'Hello,\n\nplease find your invoices attached to this email.\n\n' - 'Your {event} team', - len(unsent_invoices) - ).format( - event="{event}", - ), - 'attach_invoices': unsent_invoices - }, doseq=True) + with language(self.order.locale): + ctx['invoices_send_link'] = reverse('control:event.order.sendmail', kwargs={ + 'event': self.request.event.slug, + 'organizer': self.request.event.organizer.slug, + 'code': self.order.code + }) + '?' + urlencode({ + 'subject': ngettext('Your invoice', 'Your invoices', len(unsent_invoices)), + 'message': ngettext( + 'Hello,\n\nplease find your invoice attached to this email.\n\n' + 'Your {event} team', + 'Hello,\n\nplease find your invoices attached to this email.\n\n' + 'Your {event} team', + len(unsent_invoices) + ).format( + event="{event}", + ), + 'attach_invoices': unsent_invoices + }, doseq=True) return ctx From 5129ed3846f3f52e038cfaf267948a70fd952c6b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 24 Jun 2025 16:18:17 +0200 Subject: [PATCH 80/98] Update webauthn requirement from ==2.5.* to ==2.6.* (#5269) Updates the requirements on [webauthn](https://github.com/duo-labs/py_webauthn) to permit the latest version. - [Release notes](https://github.com/duo-labs/py_webauthn/releases) - [Changelog](https://github.com/duo-labs/py_webauthn/blob/master/CHANGELOG.md) - [Commits](https://github.com/duo-labs/py_webauthn/compare/v2.5.0...v2.6.0) --- updated-dependencies: - dependency-name: webauthn dependency-version: 2.6.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index e6d75f0b23..ff74b0abc5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -100,7 +100,7 @@ dependencies = [ "ua-parser==1.0.*", "vat_moss_forked==2020.3.20.0.11.0", "vobject==0.9.*", - "webauthn==2.5.*", + "webauthn==2.6.*", "zeep==4.3.*" ] From a5eb009e5519cd7f2c4ee0e3c8ff395f209ea3aa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 24 Jun 2025 16:18:30 +0200 Subject: [PATCH 81/98] Update flake8 requirement from ==7.2.* to ==7.3.* (#5268) Updates the requirements on [flake8](https://github.com/pycqa/flake8) to permit the latest version. - [Commits](https://github.com/pycqa/flake8/compare/7.2.0...7.3.0) --- updated-dependencies: - dependency-name: flake8 dependency-version: 7.3.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index ff74b0abc5..bad69b37c9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -111,7 +111,7 @@ dev = [ "coverage", "coveralls", "fakeredis==2.30.*", - "flake8==7.2.*", + "flake8==7.3.*", "freezegun", "isort==6.0.*", "pep8-naming==0.15.*", From 5ea9f819e63f1055ee70ad4bc028c5fe619f0aea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 24 Jun 2025 16:18:41 +0200 Subject: [PATCH 82/98] Update css-inline requirement from ==0.14.* to ==0.15.* (#5267) Updates the requirements on [css-inline](https://github.com/Stranger6667/css-inline) to permit the latest version. - [Release notes](https://github.com/Stranger6667/css-inline/releases) - [Changelog](https://github.com/Stranger6667/css-inline/blob/master/CHANGELOG.md) - [Commits](https://github.com/Stranger6667/css-inline/compare/c-v0.14.0...c-v0.15.0) --- updated-dependencies: - dependency-name: css-inline dependency-version: 0.15.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index bad69b37c9..1cb6fe7d6d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,7 @@ dependencies = [ "celery==5.5.*", "chardet==5.2.*", "cryptography>=44.0.0", - "css-inline==0.14.*", + "css-inline==0.15.*", "defusedcsv>=1.1.0", "Django[argon2]==4.2.*,>=4.2.15", "django-bootstrap3==25.1", From 243db008e1eb6ccdecff9668645b2df36014560a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 24 Jun 2025 16:18:55 +0200 Subject: [PATCH 83/98] Bump markdown from 3.8 to 3.8.2 (#5266) Bumps [markdown](https://github.com/Python-Markdown/markdown) from 3.8 to 3.8.2. - [Release notes](https://github.com/Python-Markdown/markdown/releases) - [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md) - [Commits](https://github.com/Python-Markdown/markdown/compare/3.8...3.8.2) --- updated-dependencies: - dependency-name: markdown dependency-version: 3.8.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 1cb6fe7d6d..99e643d43a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -64,7 +64,7 @@ dependencies = [ "kombu==5.5.*", "libsass==0.23.*", "lxml", - "markdown==3.8", # 3.3.5 requires importlib-metadata>=4.4, but django-bootstrap3 requires importlib-metadata<3. + "markdown==3.8.2", # 3.3.5 requires importlib-metadata>=4.4, but django-bootstrap3 requires importlib-metadata<3. # We can upgrade markdown again once django-bootstrap3 upgrades or once we drop Python 3.6 and 3.7 "mt-940==4.30.*", "oauthlib==3.3.*", From 5d3fc62ba4981966f50411559cc45b61196f2395 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 24 Jun 2025 17:54:28 +0200 Subject: [PATCH 84/98] Questions: Validate type changes (Z#23197118) (#5259) * Questions: Validate type changes (Z#23197118) * Update src/pretix/base/forms/questions.py Co-authored-by: Richard Schreiber * Update src/pretix/base/forms/questions.py Co-authored-by: Richard Schreiber * Update src/pretix/base/forms/questions.py Co-authored-by: Richard Schreiber * Update src/pretix/base/models/items.py Co-authored-by: Richard Schreiber * Fix failing test --------- Co-authored-by: Richard Schreiber --- src/pretix/api/serializers/item.py | 5 ++++ src/pretix/base/forms/questions.py | 29 +++++++++++++++++++--- src/pretix/base/models/items.py | 19 +++++++++++++++ src/pretix/control/forms/item.py | 6 +++++ src/tests/api/test_items.py | 39 ++++++++++++++++++++++++++++++ 5 files changed, 95 insertions(+), 3 deletions(-) diff --git a/src/pretix/api/serializers/item.py b/src/pretix/api/serializers/item.py index 21b7d07ec1..d565abb552 100644 --- a/src/pretix/api/serializers/item.py +++ b/src/pretix/api/serializers/item.py @@ -505,6 +505,11 @@ class QuestionSerializer(I18nAwareModelSerializer): Question._clean_identifier(self.context['event'], value, self.instance) return value + def validate_type(self, value): + if self.instance: + self.instance.clean_type_change(self.instance.type, value) + return value + def validate_dependency_question(self, value): if value: if value.type not in (Question.TYPE_CHOICE, Question.TYPE_BOOLEAN, Question.TYPE_CHOICE_MULTIPLE): diff --git a/src/pretix/base/forms/questions.py b/src/pretix/base/forms/questions.py index 4b25f9864b..2a50588ac2 100644 --- a/src/pretix/base/forms/questions.py +++ b/src/pretix/base/forms/questions.py @@ -896,10 +896,17 @@ class BaseQuestionsForm(forms.Form): 'Please enter a date no later than {max}.', max=date_format(q.valid_date_max, "SHORT_DATE_FORMAT"), ) + if initial and initial.answer: + try: + _initial = dateutil.parser.parse(initial.answer).date() + except dateutil.parser.ParserError: + _initial = None + else: + _initial = None field = forms.DateField( label=label, required=required, help_text=help_text, - initial=dateutil.parser.parse(initial.answer).date() if initial and initial.answer else None, + initial=_initial, widget=DatePickerWidget(attrs), ) if q.valid_date_min: @@ -907,10 +914,17 @@ class BaseQuestionsForm(forms.Form): if q.valid_date_max: field.validators.append(MaxDateValidator(q.valid_date_max)) elif q.type == Question.TYPE_TIME: + if initial and initial.answer: + try: + _initial = dateutil.parser.parse(initial.answer).time() + except dateutil.parser.ParserError: + _initial = None + else: + _initial = None field = forms.TimeField( label=label, required=required, help_text=help_text, - initial=dateutil.parser.parse(initial.answer).time() if initial and initial.answer else None, + initial=_initial, widget=TimePickerWidget(time_format=get_format_without_seconds('TIME_INPUT_FORMATS')), ) elif q.type == Question.TYPE_DATETIME: @@ -931,10 +945,19 @@ class BaseQuestionsForm(forms.Form): 'Please enter a date and time no later than {max}.', max=date_format(q.valid_datetime_max, "SHORT_DATETIME_FORMAT"), ) + + if initial and initial.answer: + try: + _initial = dateutil.parser.parse(initial.answer).astimezone(tz) + except dateutil.parser.ParserError: + _initial = None + else: + _initial = None + field = SplitDateTimeField( label=label, required=required, help_text=help_text, - initial=dateutil.parser.parse(initial.answer).astimezone(tz) if initial and initial.answer else None, + initial=_initial, widget=SplitDateTimePickerWidget( time_format=get_format_without_seconds('TIME_INPUT_FORMATS'), min_date=q.valid_datetime_min, diff --git a/src/pretix/base/models/items.py b/src/pretix/base/models/items.py index d69db384bf..c13d4f8593 100644 --- a/src/pretix/base/models/items.py +++ b/src/pretix/base/models/items.py @@ -1925,6 +1925,25 @@ class Question(LoggedModel): raise ValidationError(_("The maximum value must not be lower than the minimum value.")) super().clean() + def clean_type_change(self, old_type, new_type): + if old_type == new_type: + return True + if not self.pk or not self.answers.exists(): + return True + if new_type == self.TYPE_TEXT and old_type != self.TYPE_FILE: + # All types can be converted to text except file + return True + if new_type == self.TYPE_STRING and old_type not in (self.TYPE_TEXT, self.TYPE_FILE): + # All types can be converted to string except text or file + return True + if new_type == self.TYPE_CHOICE_MULTIPLE and old_type == self.TYPE_CHOICE: + # Single-choice can be converted to multiple choice without loss + return True + raise ValidationError( + _("The system already contains answers to this question that are not compatible with changing the " + "type of question without data loss. Consider hiding this question and creating a new one instead.") + ) + class QuestionOption(models.Model): question = models.ForeignKey('Question', related_name='options', on_delete=models.CASCADE) diff --git a/src/pretix/control/forms/item.py b/src/pretix/control/forms/item.py index 16fc1038ff..083e7f8b0e 100644 --- a/src/pretix/control/forms/item.py +++ b/src/pretix/control/forms/item.py @@ -201,6 +201,12 @@ class QuestionForm(I18nModelForm): return val + def clean_type(self): + val = self.cleaned_data.get('type') + if self.instance: + self.instance.clean_type_change(self.instance.type, val) + return val + def clean_identifier(self): val = self.cleaned_data.get('identifier') Question._clean_identifier(self.instance.event, val, self.instance) diff --git a/src/tests/api/test_items.py b/src/tests/api/test_items.py index 4da007e4a7..23475259c1 100644 --- a/src/tests/api/test_items.py +++ b/src/tests/api/test_items.py @@ -2428,6 +2428,45 @@ def test_question_update(token_client, organizer, event, question): assert question.type == "N" +@pytest.mark.django_db +def test_question_update_type_changes(token_client, organizer, event, question): + # Allowed because no answers exist + resp = token_client.patch( + '/api/v1/organizers/{}/events/{}/questions/{}/'.format(organizer.slug, event.slug, question.pk), + { + "type": "B", + }, + format='json' + ) + assert resp.status_code == 200 + + with scopes_disabled(): + question.answers.create(answer="12") + + # Allowed change + resp = token_client.patch( + '/api/v1/organizers/{}/events/{}/questions/{}/'.format(organizer.slug, event.slug, question.pk), + { + "type": "S", + }, + format='json' + ) + assert resp.status_code == 200 + + # Forbidden change + resp = token_client.patch( + '/api/v1/organizers/{}/events/{}/questions/{}/'.format(organizer.slug, event.slug, question.pk), + { + "type": "B", + }, + format='json' + ) + assert resp.status_code == 400 + assert resp.content.decode() == ('{"type":["The system already contains answers to this question that are not ' + 'compatible with changing the type of question without data loss. Consider hiding ' + 'this question and creating a new one instead."]}') + + @pytest.mark.django_db def test_question_update_circular_dependency(token_client, organizer, event, question): with scopes_disabled(): From 9017128513039582deee61975297c89b85162422 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Wed, 25 Jun 2025 08:56:46 +0200 Subject: [PATCH 85/98] Webhooks: Fix retry logic (Z#23197527) (#5250) * Webhooks: Fix retry logic (Z#23197527) * Add no-op migration --- ..._alter_webhookcallretry_retry_not_before.py | 18 ++++++++++++++++++ src/pretix/api/models.py | 2 +- src/pretix/api/webhooks.py | 11 ++++++++--- 3 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 src/pretix/api/migrations/0013_alter_webhookcallretry_retry_not_before.py diff --git a/src/pretix/api/migrations/0013_alter_webhookcallretry_retry_not_before.py b/src/pretix/api/migrations/0013_alter_webhookcallretry_retry_not_before.py new file mode 100644 index 0000000000..120e363eae --- /dev/null +++ b/src/pretix/api/migrations/0013_alter_webhookcallretry_retry_not_before.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.17 on 2025-06-24 14:13 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("pretixapi", "0012_oauthapplication_post_logout_redirect_uris"), + ] + + operations = [ + migrations.AlterField( + model_name="webhookcallretry", + name="retry_not_before", + field=models.DateTimeField(), + ), + ] diff --git a/src/pretix/api/models.py b/src/pretix/api/models.py index ed5858d4b8..39787fc309 100644 --- a/src/pretix/api/models.py +++ b/src/pretix/api/models.py @@ -157,7 +157,7 @@ class WebHookCallRetry(models.Model): id = models.BigAutoField(primary_key=True) webhook = models.ForeignKey('WebHook', on_delete=models.CASCADE, related_name='retries') logentry = models.ForeignKey('pretixbase.LogEntry', on_delete=models.CASCADE, related_name='webhook_retries') - retry_not_before = models.DateTimeField(auto_now_add=True) + retry_not_before = models.DateTimeField() retry_count = models.PositiveIntegerField(default=0) action_type = models.CharField(max_length=255) diff --git a/src/pretix/api/webhooks.py b/src/pretix/api/webhooks.py index 7a625c28be..dc75668895 100644 --- a/src/pretix/api/webhooks.py +++ b/src/pretix/api/webhooks.py @@ -527,8 +527,10 @@ def send_webhook(self, logentry_id: int, action_type: str, webhook_id: int, retr if retry_count >= len(retry_intervals): return 'retry-given-up' elif retry_intervals[retry_count] < retry_celery_cutoff: - send_webhook.apply_async(args=(logentry_id, action_type, webhook_id, retry_count + 1), - countdown=retry_intervals[retry_count]) + send_webhook.apply_async( + args=(logentry_id, action_type, webhook_id, retry_count + 1), + countdown=retry_intervals[retry_count] + ) return 'retry-via-celery' else: webhook.retries.update_or_create( @@ -555,7 +557,10 @@ def send_webhook(self, logentry_id: int, action_type: str, webhook_id: int, retr if retry_count >= len(retry_intervals): return 'retry-given-up' elif retry_intervals[retry_count] < retry_celery_cutoff: - send_webhook.apply_async(args=(logentry_id, action_type, webhook_id, retry_count + 1)) + send_webhook.apply_async( + args=(logentry_id, action_type, webhook_id, retry_count + 1), + countdown=retry_intervals[retry_count] + ) return 'retry-via-celery' else: webhook.retries.update_or_create( From 530ce061556c30f09780792b79c538b9298b08d7 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 24 Jun 2025 16:20:10 +0200 Subject: [PATCH 86/98] Translations: Update German Currently translated at 100.0% (5900 of 5900 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de/ powered by weblate --- src/pretix/locale/de/LC_MESSAGES/django.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pretix/locale/de/LC_MESSAGES/django.po b/src/pretix/locale/de/LC_MESSAGES/django.po index dfcf23f0fb..1a4e599233 100644 --- a/src/pretix/locale/de/LC_MESSAGES/django.po +++ b/src/pretix/locale/de/LC_MESSAGES/django.po @@ -5,8 +5,8 @@ msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-30 10:35+0000\n" -"PO-Revision-Date: 2025-06-12 17:00+0000\n" -"Last-Translator: Richard Schreiber \n" +"PO-Revision-Date: 2025-06-24 23:00+0000\n" +"Last-Translator: Raphael Michel \n" "Language-Team: German \n" "Language: de\n" @@ -1424,7 +1424,7 @@ msgstr "Postleitzahl" #: pretix/plugins/checkinlists/exporters.py:536 #: pretix/plugins/reports/exporters.py:842 msgid "City" -msgstr "Ort" +msgstr "Stadt" #: pretix/base/exporters/invoices.py:210 pretix/base/exporters/invoices.py:218 #: pretix/base/exporters/invoices.py:336 pretix/base/exporters/invoices.py:344 From cb3d88a923aeb0bf7a9dd5321385b8e85c86779c Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 24 Jun 2025 17:15:22 +0200 Subject: [PATCH 87/98] Translations: Update German (informal) (de_Informal) Currently translated at 100.0% (5900 of 5900 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/de_Informal/ powered by weblate --- src/pretix/locale/de_Informal/LC_MESSAGES/django.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pretix/locale/de_Informal/LC_MESSAGES/django.po b/src/pretix/locale/de_Informal/LC_MESSAGES/django.po index 5f0e3a3527..bec589b5ac 100644 --- a/src/pretix/locale/de_Informal/LC_MESSAGES/django.po +++ b/src/pretix/locale/de_Informal/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: 1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-30 10:35+0000\n" -"PO-Revision-Date: 2025-05-30 11:15+0000\n" +"PO-Revision-Date: 2025-06-24 23:00+0000\n" "Last-Translator: Raphael Michel \n" "Language-Team: German (informal) \n" @@ -1425,7 +1425,7 @@ msgstr "Postleitzahl" #: pretix/plugins/checkinlists/exporters.py:536 #: pretix/plugins/reports/exporters.py:842 msgid "City" -msgstr "Ort" +msgstr "Stadt" #: pretix/base/exporters/invoices.py:210 pretix/base/exporters/invoices.py:218 #: pretix/base/exporters/invoices.py:336 pretix/base/exporters/invoices.py:344 From e820424bdf53948e7e344616c24a565b785b7362 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A1=B0=EC=A0=95=ED=99=94?= Date: Wed, 25 Jun 2025 04:34:35 +0200 Subject: [PATCH 88/98] Translations: Update Korean Currently translated at 100.0% (252 of 252 strings) Translation: pretix/pretix (JavaScript parts) Translate-URL: https://translate.pretix.eu/projects/pretix/pretix-js/ko/ powered by weblate --- src/pretix/locale/ko/LC_MESSAGES/djangojs.po | 42 ++++++-------------- 1 file changed, 12 insertions(+), 30 deletions(-) diff --git a/src/pretix/locale/ko/LC_MESSAGES/djangojs.po b/src/pretix/locale/ko/LC_MESSAGES/djangojs.po index 9b2ffd4848..4d5640d184 100644 --- a/src/pretix/locale/ko/LC_MESSAGES/djangojs.po +++ b/src/pretix/locale/ko/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-30 10:36+0000\n" -"PO-Revision-Date: 2025-06-04 06:32+0000\n" +"PO-Revision-Date: 2025-06-25 06:56+0000\n" "Last-Translator: 조정화 \n" "Language-Team: Korean \n" @@ -48,7 +48,7 @@ msgstr "이따우 (브라질 대형 민간 은행)" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:38 msgid "PayPal Credit" -msgstr "페이팔 신용 결제 서비스" +msgstr "페이팔 신용 결제 서비스" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:39 msgid "Credit Card" @@ -80,7 +80,7 @@ msgstr "조포르트 (PIN과 TAN 인증을 이용한 유럽 온라인 뱅킹 기 #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:46 msgid "eps" -msgstr "이피에스 (오스트리아 실시간 은행 계좌 이체 결제 서비스)" +msgstr "이피에스 (오스트리아 실시간 은행 계좌 이체 결제 서비스)" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:47 msgid "MyBank" @@ -102,8 +102,7 @@ msgstr "" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:51 msgid "BLIK" -msgstr "" -"블릭 (폴란드 모바일 결제 시스템, 앱기반 OR코드/코드 입력 방식 결제 수단)" +msgstr "블릭 (폴란드 모바일 결제 시스템, 앱기반 OR코드/코드 입력 방식 결제 수단)" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:52 msgid "Trustly" @@ -178,7 +177,7 @@ msgstr "총 수익" #: pretix/plugins/stripe/static/pretixplugins/stripe/pretix-stripe.js:15 msgid "Contacting Stripe …" -msgstr "스트라이프(미국의 핀기업 온라인 결제 시스템) 에 문의하기" +msgstr "스트라이프(미국의 핀기업 온라인 결제 시스템)에 문의하기" #: pretix/plugins/stripe/static/pretixplugins/stripe/pretix-stripe.js:72 msgid "Total" @@ -637,18 +636,14 @@ msgid "Unknown error." msgstr "알수 없는 에러입니다" #: pretix/static/pretixcontrol/js/ui/main.js:292 -#, fuzzy -#| msgid "Your color has great contrast and is very easy to read!" msgid "Your color has great contrast and will provide excellent accessibility." -msgstr "당신의 색깔은 대비가 뛰어나고 읽기 매우 쉽습니다!" +msgstr "당신의 색깔은 대비가 뛰어나고 매우 좋은 접근성을 제공합니다" #: pretix/static/pretixcontrol/js/ui/main.js:296 -#, fuzzy -#| msgid "Your color has decent contrast and is probably good-enough to read!" msgid "" "Your color has decent contrast and is sufficient for minimum accessibility " "requirements." -msgstr "당신의 색깔은 대비가 적당하고 읽기에 충분할 것입니다!" +msgstr "당신의 색깔은 적절한 대비가 가능하고 최소 접근성 요구사항을 충족합니다" #: pretix/static/pretixcontrol/js/ui/main.js:300 msgid "" @@ -745,22 +740,15 @@ msgstr[0] "" "카트에 있는 물품들은 {num}분 동안 예약되어 있습니다." #: pretix/static/pretixpresale/js/ui/cart.js:86 -#, fuzzy -#| msgid "Cart expired" msgid "Your cart has expired." -msgstr "카트가 만료되었습니다" +msgstr "장바구니의 유효 시간이 만료되었습니다" #: pretix/static/pretixpresale/js/ui/cart.js:89 -#, fuzzy -#| msgid "" -#| "The items in your cart are no longer reserved for you. You can still " -#| "complete your order as long as they’re available." msgid "" "The items in your cart are no longer reserved for you. You can still " "complete your order as long as they're available." -msgstr "" -"카트에 있는 상품은 더 이상 예약되지 않습니다. 주문이 가능한 한 주문을 완료할 " -"수 있습니다." +msgstr "장바구니에 있는 상품은 더 이상 예약되지 않습니다. 주문이 가능한 한 주문을 " +"완료할 수 있습니다." #: pretix/static/pretixpresale/js/ui/cart.js:90 msgid "Do you want to renew the reservation period?" @@ -996,12 +984,9 @@ msgstr "매표소 열림" #: pretix/static/pretixpresale/js/widget/widget.js:50 #: pretix/static/pretixpresale/js/widget/widget.v1.js:48 -#, fuzzy -#| msgctxt "widget" -#| msgid "Resume checkout" msgctxt "widget" msgid "Checkout" -msgstr "체크아웃 재개" +msgstr "체크아웃" #: pretix/static/pretixpresale/js/widget/widget.js:51 #: pretix/static/pretixpresale/js/widget/widget.v1.js:49 @@ -1066,12 +1051,9 @@ msgid "Close" msgstr "종료" #: pretix/static/pretixpresale/js/widget/widget.js:62 -#, fuzzy -#| msgctxt "widget" -#| msgid "Resume checkout" msgctxt "widget" msgid "Close checkout" -msgstr "체크아웃 재개" +msgstr "체크아웃 종료" #: pretix/static/pretixpresale/js/widget/widget.js:63 msgctxt "widget" From 2c094f4c300c0cb059fcc6e60b0c5d7bd9448bd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A1=B0=EC=A0=95=ED=99=94?= Date: Wed, 25 Jun 2025 04:54:51 +0200 Subject: [PATCH 89/98] Translations: Update Korean Currently translated at 52.3% (3088 of 5900 strings) Translation: pretix/pretix Translate-URL: https://translate.pretix.eu/projects/pretix/pretix/ko/ powered by weblate --- src/pretix/locale/ko/LC_MESSAGES/django.po | 233 ++++++++++----------- 1 file changed, 107 insertions(+), 126 deletions(-) diff --git a/src/pretix/locale/ko/LC_MESSAGES/django.po b/src/pretix/locale/ko/LC_MESSAGES/django.po index ad7e34e440..92aedd0d43 100644 --- a/src/pretix/locale/ko/LC_MESSAGES/django.po +++ b/src/pretix/locale/ko/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-05-30 10:35+0000\n" -"PO-Revision-Date: 2025-06-11 06:58+0000\n" +"PO-Revision-Date: 2025-06-25 06:56+0000\n" "Last-Translator: 조정화 \n" "Language-Team: Korean \n" @@ -290,8 +290,8 @@ msgid "" "Updating add-ons, bundles, or variations via PATCH/PUT is not supported. " "Please use the dedicated nested endpoint." msgstr "" -"추가 기능, 묶음 상품들, 또는 변형은 PATCH/PUT를 통해 업데이트 할 수 없습니" -"다. 전용 중첩은 마지막 지점에서 사용해주세요." +"추가 기능, 묶음 상품들, 또는 변형은 PATCH/PUT를 통해 업데이트 할 수 " +"없습니다. 전용 중첩은 마지막 지점에서 사용하세요" #: pretix/api/serializers/item.py:306 msgid "Only admission products can currently be personalized." @@ -660,15 +660,17 @@ msgid "Your password must contain both numeric and alphabetic characters." msgstr "비밀번호는 숫자와 알파벳 문자가 모두 포함되어야 합니다" #: pretix/base/auth.py:202 pretix/base/auth.py:212 -#, fuzzy, python-format +#, python-format 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] "" +"단수형\n" "비밀번호가 이전 비밀번호와 동일하지 않을 수 있습니다.\n" -"귀하의 비밀번호는 %(history_length)s 이전 비밀번호와 동일하지 않을 수 있습니" -"다." +"복수형\n" +"귀하의 비밀번호는 %(history_length)s 이전 비밀번호 중 하나와 동일하지 않을 " +"수 있습니다." #: pretix/base/channels.py:168 msgid "Online shop" @@ -690,13 +692,14 @@ msgstr "" #, fuzzy, python-brace-format #| msgid "powered by {name} based on pretix" msgid "powered by {name} based on pretix" -msgstr "{a_attr}>pretix를 기반으로 {name}에 의해 작동합니다" +msgstr "이 서비스는 {name}에 의해 제공되며 pretix(온라인 이벤트 티켓팅 및 등록 " +"시스템) 시스템 기반으로 작동합니다" #: pretix/base/context.py:48 #, fuzzy, python-brace-format #| msgid "powered by {name} based on pretix" msgid "powered by {name} based on pretix" -msgstr "{a_attr}>pretix를 기반으로 {name}에 의해 작동합니다" +msgstr "이 서비스는 {name}에서 제공하며 pretix를 기반으로 합니다." #: pretix/base/context.py:55 #, python-format @@ -726,16 +729,16 @@ msgid "Incompatible SSO provider: \"{error}\"." msgstr "호환되지 않는 단일 로그인(Single Sign On) 제공자: \"{error}\"." #: pretix/base/customersso/oidc.py:111 -#, fuzzy, python-brace-format +#, python-brace-format msgid "You are not requesting \"{scope}\"." -msgstr "\"범위\"를 요청하는 것이 아닙니다." +msgstr "'{scope}' 요청이 포함되어 있지 않습니다." #: pretix/base/customersso/oidc.py:117 -#, fuzzy, python-brace-format +#, python-brace-format msgid "" "You are requesting scope \"{scope}\" but provider only supports these: " "{scopes}." -msgstr "범위 \"{scope}\"를 요청하고 있지만 제공자는 이를 지원합니다: {scope}" +msgstr "범위 \"{scope}\"를 요청하고 있지만 제공자는 이를 지원합니다: {scopes}" #: pretix/base/customersso/oidc.py:127 #, python-brace-format @@ -2020,7 +2023,7 @@ msgstr "주문 지역 설정" #: pretix/base/exporters/orderlist.py:275 #, fuzzy, python-brace-format msgid "Gross at {rate} % tax" -msgstr "세율 {%}의 세금으로 총합" +msgstr "세율{%}의 세금으로 총합" #: pretix/base/exporters/orderlist.py:276 #, python-brace-format @@ -2028,9 +2031,9 @@ msgid "Net at {rate} % tax" msgstr "순세율 %{rate} 세금" #: pretix/base/exporters/orderlist.py:277 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Tax value at {rate} % tax" -msgstr "세율 % 세금에서의 세금 가치" +msgstr "{rate} % 세금에서의 세금 가치" #: pretix/base/exporters/orderlist.py:280 msgid "Invoice numbers" @@ -2070,7 +2073,7 @@ msgstr "외부고객 아이디" #: pretix/base/exporters/orderlist.py:293 #, fuzzy, python-brace-format msgid "Paid by {method}" -msgstr "{방법}으로 결제됨" +msgstr "{방법}에 의해 결제됨" #: pretix/base/exporters/orderlist.py:448 #: pretix/base/exporters/orderlist.py:894 @@ -3152,10 +3155,10 @@ msgid "Individual customer" msgstr "개별 고객" #: pretix/base/invoice.py:138 -#, fuzzy, python-format +#, python-format msgctxt "invoice" msgid "Page %d of %d" -msgstr "%d 페이지" +msgstr "%d의%d 페이지" #: pretix/base/invoice.py:375 msgctxt "invoice" @@ -3303,7 +3306,7 @@ msgstr "단일 가격: {net_price} 순 / {gross_price} 총합" #, fuzzy, python-brace-format msgctxt "invoice" msgid "Single price: {price}" -msgstr "단일 가격: {price}" +msgstr "단일 가격: {가격}" #: pretix/base/invoice.py:742 pretix/base/invoice.py:748 msgctxt "invoice" @@ -3356,8 +3359,7 @@ msgctxt "invoice" msgid "" "Using the conversion rate of 1:{rate} as published by the {authority} on " "{date}, this corresponds to:" -msgstr "" -"{날짜}에 {당국}에서 발표한 1:{rate}의 변환율을 사용하면 다음과 같습니다:" +msgstr "{날짜}에 {당국}에서 발표한 1:{세율}의 변환율을 사용하면 다음과 같습니다:" #: pretix/base/invoice.py:909 #, fuzzy, python-brace-format @@ -3365,8 +3367,7 @@ msgctxt "invoice" msgid "" "Using the conversion rate of 1:{rate} as published by the {authority} on " "{date}, the invoice total corresponds to {total}." -msgstr "" -"{날짜}에 {당국}에서 게시한 1:{rate}의 변환율을 사용하면 송장 총액이 {총합}에 " +msgstr "{날짜}에 {당국}에서 게시한 1:{세율}의 변환율을 사용하면 송장 총액이 {총합}에 " "해당합니다." #: pretix/base/invoice.py:923 @@ -4210,11 +4211,9 @@ msgid "Available for dates starting from" msgstr "다음 날짜부터 사용 가능" #: pretix/base/models/discount.py:182 -#, fuzzy -#| msgid "Available until" msgctxt "subevent" msgid "Available for dates starting until" -msgstr "다음까지 사용가능" +msgstr "다음~까지 사용가능" #: pretix/base/models/discount.py:214 msgid "" @@ -5448,16 +5447,12 @@ msgid "Unknown country code." msgstr "알수 없는 국가 코드 입니다" #: pretix/base/models/items.py:1921 pretix/base/models/items.py:1923 -#, fuzzy -#| msgid "The maximum count needs to be greater than the minimum count." msgid "The maximum date must not be before the minimum value." -msgstr "최대 카운트는 최소 카운트보다 커야 합니다." +msgstr "종료일(최대 날짜)은 시작일(최소값)보다 앞서면 안됩니다." #: pretix/base/models/items.py:1925 -#, fuzzy -#| msgid "The maximum count needs to be greater than the minimum count." msgid "The maximum value must not be lower than the minimum value." -msgstr "최대 카운트는 최소 카운트보다 커야 합니다." +msgstr "최대 값은 최소 값보다 커야 합니다." #: pretix/base/models/items.py:1942 #: pretix/control/templates/pretixcontrol/items/question.html:90 @@ -5913,10 +5908,8 @@ msgid "Cart ID (e.g. session key)" msgstr "카트 ID(예: 세션 키)" #: pretix/base/models/orders.py:3102 -#, fuzzy -#| msgid "Gift card: Expiration date" msgid "Limit for extending expiration date" -msgstr "기프트 카드: 만료일" +msgstr "만료일 연장 제한" #: pretix/base/models/orders.py:3131 msgid "Cart position" @@ -6080,9 +6073,9 @@ msgid "Teams" msgstr "팀들" #: pretix/base/models/organizer.py:406 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Invite to team '{team}' for '{email}'" -msgstr "'이메일'을 위해 '팀'에 초대하기" +msgstr "'{email}'님을 '{team}' 팀에 초대하기" #: pretix/base/models/organizer.py:538 #: pretix/control/templates/pretixcontrol/organizers/channels.html:23 @@ -6216,35 +6209,37 @@ msgstr "" #: pretix/base/models/tax.py:205 pretix/base/models/tax.py:218 #: pretix/base/models/tax.py:244 -#, fuzzy, python-brace-format +#, python-brace-format msgctxt "tax_code" msgid "" "Exempt based on article {article}, section {section} ({letter}) of Council " "Directive 2006/112/EC" -msgstr "위원회 지침 2006/112/EC의 {조문}, 섹션 {{편지}}에 따라 면제됩니다" +msgstr "" +"2006년 제정된 유럽연합 이사회 지침 2006/112/EC의 제{article}조 제{section}항 " +"({letter}호)에 따라 면제됩니다" #: pretix/base/models/tax.py:231 -#, fuzzy, python-brace-format +#, python-brace-format msgctxt "tax_code" msgid "" "Exempt based on article {article}, section ({letter}) of Council Directive " "2006/112/EC" -msgstr "2006/112/EC 이사회 지침 제{조문}, 섹션({편지})에 따라 면제됩니다" +msgstr "2006년 제정된 유럽연합 이사회 지침 2006/112/EC의 제{article}조 ({letter}항)" +"에 따라 면제됩니다" #: pretix/base/models/tax.py:252 msgctxt "tax_code" msgid "Exempt based on article 309 of Council Directive 2006/112/EC" msgstr "" -"2006/112/EC 이사회 지침 제309조에 따른 면제( 세우타/멜리야 의 공급에 대한 명" -"시적 부가가치세는 면세-EU VAT지역 밖이므로 해당지역으로의 공급은 수출로 간주" -"함)" +"2006년 제정된 유럽연합 이사회 지침 2006/112/EC의 제309조에 따라 면제됩니다( " +"세우타/멜리야 의 공급에 대한 명시적 부가가치세는 면세-EU VAT지역 밖이므로 " +"해당지역으로의 공급은 수출로 간주함)" #: pretix/base/models/tax.py:254 msgctxt "tax_code" msgid "Intra-Community acquisition from second hand means of transport" -msgstr "" -"중고 운송수단을 구매하면 ICA 적용한다 (EU 회원국간의 재화 이동에 서 발생하는 " -"VAT 개념)" +msgstr "중고 운송수단을 구매하면 EU 회원국 간 물품 취득(ICA)을 적용한다 (EU " +"회원국간의 재화 이동에 서 발생하는 VAT 개념)" #: pretix/base/models/tax.py:256 msgctxt "tax_code" @@ -6255,7 +6250,7 @@ msgstr "" #: pretix/base/models/tax.py:258 msgctxt "tax_code" msgid "Intra-Community acquisition of works of art" -msgstr "예술작품은 ICA(EU 회원간의 재화이동에서 적용되는 VAT개념)을 적용한다" +msgstr "예술작품은 ICA(EU 회원간의 재화이동에서 적용되는 VAT개념)을 적용한다" #: pretix/base/models/tax.py:260 msgctxt "tax_code" @@ -6268,8 +6263,8 @@ msgstr "" msgctxt "tax_code" msgid "France domestic VAT franchise in base" msgstr "" -"프랑스 소규모 사업자를 위한 부가가치세 면세제도(\"TVA non applicable, " -"article 293 B du CGI\" 기입)" +"프랑스 소규모 사업자를 위한 부가가치세 면세제도(" +"\"TVA non applicable, article 293 B du CGI\" 기입)" #: pretix/base/models/tax.py:264 msgctxt "tax_code" @@ -6317,9 +6312,8 @@ msgstr "청구서 주소에 따라 세율이 변경되는 경우 총 금액을 #: pretix/base/models/tax.py:359 msgid "Use EU reverse charge taxation rules" -msgstr "" -"EU 내 VAT 처리 방식 중 하나로 국경거래에서 VAT 납부 책임을 구매자에게 전가하" -"는 과세 규칙 사용 (프랑스, 독일 등)" +msgstr "EU 내 VAT 처리 방식(국경거래에서 VAT 납부 책임을 구매자에게 전가하는 과세 " +"규칙)을 사용합니다 (프랑스, 독일 등)" #: pretix/base/models/tax.py:363 msgid "" @@ -6333,7 +6327,7 @@ msgstr "" #: pretix/base/models/tax.py:365 msgid "DEPRECATED" -msgstr "사용중단 예정 (폐지 예정입니다)" +msgstr "사용중단 예정 (폐지 예정)" #: pretix/base/models/tax.py:366 msgid "" @@ -6352,7 +6346,7 @@ msgstr "" #: pretix/base/models/tax.py:374 pretix/plugins/stripe/payment.py:299 msgid "Merchant country" -msgstr "상인 국가" +msgstr "상업국가" #: pretix/base/models/tax.py:376 msgid "" @@ -6370,12 +6364,12 @@ msgstr "" #: pretix/base/models/tax.py:416 pretix/control/forms/event.py:1560 msgid "" "A combination of this tax code with a non-zero tax rate does not make sense." -msgstr "이 세법을 0이 아닌 세율과 결합하는 것은 의미가 없습니다." +msgstr "이 세법은 0이 아닌 세율과 결합하는 이 세율코드는 의미가 없습니다." #: pretix/base/models/tax.py:421 pretix/control/forms/event.py:1564 msgid "" "A combination of this tax code with a zero tax rate does not make sense." -msgstr "이 세법을 제로 세율과 결합하는 것은 의미가 없습니다." +msgstr "이 세법을 제로 세율과 결합하는 세율코드는 의미가 없습니다." #: pretix/base/models/tax.py:426 #, python-brace-format @@ -6400,9 +6394,9 @@ msgid "" "Reverse Charge: According to Article 194, 196 of Council Directive 2006/112/" "EEC, VAT liability rests with the service recipient." msgstr "" -"EU 내 VAT 처리 방식중 하나로 국경거래에서 VAT 납부책임을 구매자에게 전가하는 " -"과세 규칙: 2006/112/EEC 이사회 지침 제194조, 196조에 따르면 부가가치세 책임" -"은 서비스 수혜자에게 있습니다." +"(EU 내 VAT 처리 방식)국경거래에서 VAT 납부책임을 구매자에게 전가하는 과세 " +"규칙: 2006/112/EEC 이사회 지침 제194조, 196조에 따르면 부가가치세 책임은 " +"서비스 수혜자에게 있습니다." #: pretix/base/models/tax.py:574 msgctxt "invoice" @@ -6427,7 +6421,7 @@ msgstr "제품 가격 인하(%)" #: pretix/base/models/vouchers.py:197 msgid "Number of times this voucher can be redeemed." -msgstr "이 바우처를 사용할 수 있는 횟수." +msgstr "이 바우처가 사용될 수 있는 횟수입니다" #: pretix/base/models/vouchers.py:201 pretix/control/views/vouchers.py:120 msgid "Redeemed" @@ -6484,7 +6478,7 @@ msgstr "" #: pretix/base/models/vouchers.py:265 msgid "This variation of the product select above is being used." -msgstr "위의 선택한 제품의 변형(옵션)이 사용되고 있습니다." +msgstr "위의 선택한 제품의 변형(옵션)이 사용되고 있습니다." #: pretix/base/models/vouchers.py:274 msgid "" @@ -6545,7 +6539,7 @@ msgstr "이 변형은 이 제품에 속하지 않습니다." #: pretix/base/models/vouchers.py:355 msgid "It is currently not possible to create vouchers for add-on products." -msgstr "현재 애드온 제품에 대한 바우처를 만드는 것은 불가능합니다." +msgstr "현재 묶음 제품에 대한 바우처를 만드는 것은 불가능합니다." #: pretix/base/models/vouchers.py:357 pretix/base/models/vouchers.py:469 msgid "" @@ -6575,7 +6569,7 @@ msgstr "이 바우처가 할당량을 차단하려면 특정 날짜를 선택해 #: pretix/base/models/vouchers.py:384 msgid "You can not select a subevent if your event is not an event series." -msgstr "이벤트가 이벤트 시리즈가 아닌 경우 하위 이벤트를 선택할 수 없습니다." +msgstr "당신의이벤트가 이벤트 시리즈가 아닌 경우 하위 이벤트를 선택할 수 없습니다." #: pretix/base/models/vouchers.py:482 msgid "" @@ -17957,20 +17951,13 @@ msgid "" "Your %(instance)s team\n" msgstr "" "안녕하세요.\n" -"\n" "누군가 %(주소)를 %(instance)의 발신자 주소로 사용해 달라고 요청했습니다.\n" -"\n" "이렇게 하면 이 이메일 주소에서 발신된 것으로 표시된 이메일을 보낼 수 " "있습니다.\n" -"\n" "만약 당신이라면, 다음 확인 코드를 입력해 주세요:\n" -"\n" "%(코드)\n" -"\n" "이것이 당신의 요청이 아니라면, 이 이메일을 무시해도 괜찮습니다.\n" -"\n" "감사해요.\n" -"\n" "%(인스턴스) 팀\n" #: pretix/control/templates/pretixcontrol/email/forgot.txt:1 @@ -18018,23 +18005,14 @@ msgid "" "Your pretix team\n" msgstr "" "안녕하세요.\n" -"\n" "이벤트를 수행할 플랫폼인 프리틱스의 팀에 초대되었습니다\n" -"\n" "티켓 판매.\n" -"\n" "주최자: %(주최자)\n" -"\n" "팀: %(팀)\n" -"\n" "해당 팀에 합류하려면 다음 링크를 클릭하세요:\n" -"\n" "%(url)s\n" -"\n" "가입을 원하지 않으시면 이 이메일을 무시하거나 삭제하셔도 됩니다.\n" -"\n" "감사해요.\n" -"\n" "프리픽스 팀\n" #: pretix/control/templates/pretixcontrol/email/login_notice.txt:1 @@ -18057,19 +18035,13 @@ msgid "" "Your %(instance)s team\n" msgstr "" "안녕하세요.\n" -"\n" "비정상적이거나 새로운 위치에서 %(인스턴스) 계정에 로그인한 것이 " "감지되었습니다. 로그인은 %(국가)의 %(os)에서 %(에이전트)를 사용하여 " "수행되었습니다.\n" -"\n" "만약 이 이메일이 당신이라면, 이 이메일을 무시해도 됩니다.\n" -"\n" "본인이 아닌 경우 계정 설정에서 비밀번호를 변경하는 것이 좋습니다:\n" -"\n" "%(url)s\n" -"\n" "감사해요.\n" -"\n" "%(인스턴스) 팀\n" #: pretix/control/templates/pretixcontrol/email/security_notice.txt:1 @@ -18640,29 +18612,30 @@ msgstr "티켓샵을 게시하려면 먼저 다음 문제를 해결해야 합니 #: pretix/control/templates/pretixcontrol/event/live.html:51 #: pretix/control/templates/pretixcontrol/event/live.html:65 msgid "Go live" -msgstr "" +msgstr "실시간으로 전환하기" #: pretix/control/templates/pretixcontrol/event/live.html:59 msgid "If you want to, you can publish your ticket shop now." -msgstr "" +msgstr "원하신다면 지금 티켓 판매 페이지를 공개하실 수 있습니다" #: pretix/control/templates/pretixcontrol/event/live.html:83 msgid "" "Your shop is currently in test mode. All orders are not persistent and can " "be deleted at any point." -msgstr "" +msgstr "현재 상점이 테스트 모드로 설정되어 있습니다. 모든 주문은 실제로 저장되지 " +"않으며, 언제든 삭제될 수 있습니다." #: pretix/control/templates/pretixcontrol/event/live.html:88 msgid "Permanently delete all orders created in test mode" -msgstr "" +msgstr "테스트 모드에서 생성된 모든 주문을 영구적으로 삭제합니다" #: pretix/control/templates/pretixcontrol/event/live.html:93 msgid "Disable test mode" -msgstr "" +msgstr "테스트 모드 해제" #: pretix/control/templates/pretixcontrol/event/live.html:99 msgid "Your shop is currently in production mode." -msgstr "" +msgstr "현재 상점이 운영 모드로 설정되어 있습니다" #: pretix/control/templates/pretixcontrol/event/live.html:102 msgid "" @@ -18670,6 +18643,9 @@ msgid "" "As long as the shop is in test mode, all orders that are created are marked " "as test orders and can be deleted again." msgstr "" +"테스트 주문을 해보고 싶다면 상점의 테스트 모드를 켤 수 있습니다. 테스트 " +"모드가 활성화된 동안 생성되는 모든 주문은 테스트 주문으로 처리되며, 언제든 " +"삭제할 수 있습니다" #: pretix/control/templates/pretixcontrol/event/live.html:104 msgid "" @@ -18677,6 +18653,9 @@ msgid "" "vouchers and might perform actual payments. The only difference is that you " "can delete test orders. Use at your own risk!" msgstr "" +"테스트 주문 역시 할당량에 포함되며, 실제 바우처 사용과 결제가 발생할 수 " +"있습니다. 단지 테스트 주문은 삭제가 가능하다는 점만 다릅니다. 사용 시 이 " +"점에 유의하시고, 본인의 책임 하에 이용해 주세요" #: pretix/control/templates/pretixcontrol/event/live.html:108 msgid "" @@ -18684,6 +18663,8 @@ msgid "" "sales channels such as the box office or resellers module are still created " "as production orders." msgstr "" +"참고로, 테스트 모드는 메인 웹 상점에만 적용되며, 박스오피스나 리셀러 모듈 등 " +"다른 판매 채널에서 발생하는 주문은 실제 운영 주문으로 생성됩니다" #: pretix/control/templates/pretixcontrol/event/live.html:112 msgid "" @@ -18691,23 +18672,26 @@ msgid "" "recommend enabling test mode if your customers already know your shop, as it " "will confuse them." msgstr "" +"상점에 이미 실제 주문이 존재하는 것으로 확인됩니다. 고객들이 이미 상점을 " +"이용하고 있다면, 테스트 모드 활성화 시 혼란이 발생할 수 있으므로 권장하지 " +"않습니다" #: pretix/control/templates/pretixcontrol/event/live.html:119 msgid "Enable test mode" -msgstr "" +msgstr "테스트 모드 시작" #: pretix/control/templates/pretixcontrol/event/logs.html:12 #: pretix/control/templates/pretixcontrol/organizers/logs.html:12 msgid "All actions" -msgstr "" +msgstr "모든 작업" #: pretix/control/templates/pretixcontrol/event/logs.html:14 msgid "Team actions" -msgstr "" +msgstr "팀 작업" #: pretix/control/templates/pretixcontrol/event/logs.html:17 msgid "Customer actions" -msgstr "" +msgstr "고객 작업" #: pretix/control/templates/pretixcontrol/event/logs.html:49 #: pretix/control/templates/pretixcontrol/event/logs_embed.html:10 @@ -18715,14 +18699,14 @@ msgstr "" #: pretix/control/templates/pretixcontrol/organizers/device_logs.html:20 #: pretix/control/templates/pretixcontrol/organizers/logs.html:35 msgid "Personal data was cleared from this log entry." -msgstr "" +msgstr "이 로그 기록에서 개인정보가 삭제되었습니다" #: pretix/control/templates/pretixcontrol/event/logs.html:58 #: pretix/control/templates/pretixcontrol/event/logs_embed.html:19 #: pretix/control/templates/pretixcontrol/includes/logs.html:12 #: pretix/control/templates/pretixcontrol/organizers/logs.html:44 msgid "This change was performed by a pretix administrator." -msgstr "" +msgstr "이 변경 작업은 pretix 관리자가 진행하였습니다" #: pretix/control/templates/pretixcontrol/event/logs.html:86 #: pretix/control/templates/pretixcontrol/event/logs_embed.html:47 @@ -18734,7 +18718,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/organizers/logs.html:72 #: pretix/control/templates/pretixcontrol/search/payments.html:147 msgid "Inspect" -msgstr "" +msgstr "점검하기" #: pretix/control/templates/pretixcontrol/event/logs.html:94 #: pretix/control/templates/pretixcontrol/organizers/device_logs.html:50 @@ -18745,30 +18729,30 @@ msgstr "결과 없음" #: pretix/control/templates/pretixcontrol/event/mail.html:7 #: pretix/control/templates/pretixcontrol/organizers/mail.html:11 msgid "Email settings" -msgstr "" +msgstr "이메일 설정" #: pretix/control/templates/pretixcontrol/event/mail.html:21 #: pretix/control/templates/pretixcontrol/organizers/mail.html:22 msgid "Sending method" -msgstr "" +msgstr "전송방식" #: pretix/control/templates/pretixcontrol/event/mail.html:25 #: pretix/control/templates/pretixcontrol/organizers/mail.html:26 msgid "Custom SMTP server" -msgstr "" +msgstr "직접 설정하는 SMTP 서버" #: pretix/control/templates/pretixcontrol/event/mail.html:27 #: pretix/control/templates/pretixcontrol/organizers/mail.html:28 msgid "System-provided email server" -msgstr "" +msgstr "시스템 제공 이메일 서버" #: pretix/control/templates/pretixcontrol/event/mail.html:60 msgid "Calendar invites" -msgstr "" +msgstr "일정 초대" #: pretix/control/templates/pretixcontrol/event/mail.html:66 msgid "Email design" -msgstr "" +msgstr "이메일 디자인" #: pretix/control/templates/pretixcontrol/event/mail.html:79 #: pretix/control/templates/pretixcontrol/event/mail_settings_fragment.html:29 @@ -18777,63 +18761,63 @@ msgstr "" #: pretix/control/templates/pretixcontrol/vouchers/bulk.html:97 #: pretix/control/templates/pretixcontrol/vouchers/bulk.html:120 msgid "Preview" -msgstr "" +msgstr "미리보기" #: pretix/control/templates/pretixcontrol/event/mail.html:87 #: pretix/control/templates/pretixcontrol/organizers/mail.html:58 msgid "Email content" -msgstr "" +msgstr "메일 내용" #: pretix/control/templates/pretixcontrol/event/mail.html:90 msgid "Placed order" -msgstr "" +msgstr "주문 완료" #: pretix/control/templates/pretixcontrol/event/mail.html:93 msgid "Paid order" -msgstr "" +msgstr "결제 완료 주문" #: pretix/control/templates/pretixcontrol/event/mail.html:96 msgid "Free order" -msgstr "" +msgstr "무료 주문" #: pretix/control/templates/pretixcontrol/event/mail.html:99 #: pretix/control/templates/pretixcontrol/order/index.html:249 #: pretix/control/templates/pretixcontrol/order/index.html:532 msgid "Resend link" -msgstr "" +msgstr "링크 재전송" #: pretix/control/templates/pretixcontrol/event/mail.html:105 msgid "Payment reminder" -msgstr "" +msgstr "결제 알림" #: pretix/control/templates/pretixcontrol/event/mail.html:108 msgid "Payment failed" -msgstr "" +msgstr "지불 실패" #: pretix/control/templates/pretixcontrol/event/mail.html:111 msgid "Waiting list notification" -msgstr "" +msgstr "대기자 명단 알림" #: pretix/control/templates/pretixcontrol/event/mail.html:117 msgid "Order custom mail" -msgstr "" +msgstr "주문 맞춤 메일" #: pretix/control/templates/pretixcontrol/event/mail.html:120 msgid "Reminder to download tickets" -msgstr "" +msgstr "티켓 다운로드 알림" #: pretix/control/templates/pretixcontrol/event/mail.html:123 msgid "Order approval process" -msgstr "" +msgstr "주문 승인 절차" #: pretix/control/templates/pretixcontrol/event/mail.html:126 msgid "Attachments" -msgstr "" +msgstr "첨부파일" #: pretix/control/templates/pretixcontrol/event/payment.html:6 #: pretix/control/templates/pretixcontrol/event/payment_provider.html:5 msgid "Payment settings" -msgstr "" +msgstr "결제 설정" #: pretix/control/templates/pretixcontrol/event/payment.html:23 #: pretix/control/templates/pretixcontrol/user/settings.html:48 @@ -30279,10 +30263,8 @@ msgid "" msgstr "" #: pretix/presale/forms/customer.py:90 -#, fuzzy -#| msgid "Your current password" msgid "Forgot your password?" -msgstr "현재 비밀번호" +msgstr "현재 비밀번호를 잊었습니까?" #: pretix/presale/forms/customer.py:146 msgid "" @@ -32440,10 +32422,9 @@ msgid "Event overview" msgstr "" #: pretix/presale/templates/pretixpresale/organizers/calendar.html:21 -#, fuzzy, python-format -#| msgid "Event timezone" +#, python-format msgid "Events in %(month)s" -msgstr "이벤트 시간대" +msgstr "이벤트 시간대 %(month)s" #: pretix/presale/templates/pretixpresale/organizers/calendar.html:91 #: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:104 @@ -32989,7 +32970,7 @@ msgstr "" #: pretix/settings.py:802 msgid "Kosovo" -msgstr "" +msgstr "코소보" #, fuzzy #~| msgctxt "refund_source" From 0c7c50cffcd4249108f1660b339ed229a98a67ac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Jun 2025 11:19:13 +0200 Subject: [PATCH 90/98] Update sentry-sdk requirement from ==2.30.* to ==2.31.* (#5271) --- updated-dependencies: - dependency-name: sentry-sdk dependency-version: 2.31.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 99e643d43a..fc0ad0d5be 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -91,7 +91,7 @@ dependencies = [ "redis==6.2.*", "reportlab==4.4.*", "requests==2.31.*", - "sentry-sdk==2.30.*", + "sentry-sdk==2.31.*", "sepaxml==2.6.*", "stripe==7.9.*", "text-unidecode==1.*", From 9bf302e5aea05b7875219ccdc8307b7dd0626c4d Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Wed, 25 Jun 2025 11:20:34 +0200 Subject: [PATCH 91/98] Widget: deprecate v1 and deliver v2 instead (#5273) * Widget: deprecate v1 and redirect to v2 * Make redirect permanent * remove v1 files * do not redirect, just serve version_min * add version-comment to delivered css/js-file * fix tests --- .../pretixpresale/widget_dummy.v1.html | 5 - src/pretix/presale/views/widget.py | 19 +- .../pretixpresale/js/widget/widget.v1.js | 2504 ----------------- .../static/pretixpresale/scss/widget.v1.scss | 1088 ------- src/tests/presale/test_widget.py | 10 +- 5 files changed, 12 insertions(+), 3614 deletions(-) delete mode 100644 src/pretix/presale/templates/pretixpresale/widget_dummy.v1.html delete mode 100644 src/pretix/static/pretixpresale/js/widget/widget.v1.js delete mode 100644 src/pretix/static/pretixpresale/scss/widget.v1.scss diff --git a/src/pretix/presale/templates/pretixpresale/widget_dummy.v1.html b/src/pretix/presale/templates/pretixpresale/widget_dummy.v1.html deleted file mode 100644 index 72f58a9066..0000000000 --- a/src/pretix/presale/templates/pretixpresale/widget_dummy.v1.html +++ /dev/null @@ -1,5 +0,0 @@ -{% load compress %} -{% load static %} -{% compress css %} - -{% endcompress %} diff --git a/src/pretix/presale/views/widget.py b/src/pretix/presale/views/widget.py index d95624acf0..f99e83527b 100644 --- a/src/pretix/presale/views/widget.py +++ b/src/pretix/presale/views/widget.py @@ -83,7 +83,7 @@ logger = logging.getLogger(__name__) # we never change static source without restart, so we can cache this thread-wise _source_cache_key = None -version_min = 1 +version_min = 2 version_max = 2 version_default = 2 # used for output in widget-embed-code @@ -109,6 +109,8 @@ def indent(s): def widget_css_etag(request, version, **kwargs): + if version < version_min: + version = version_min # This makes sure a new version of the theme is loaded whenever settings or the source files have changed if hasattr(request, 'event'): return (f'{_get_source_cache_key(version)}-' @@ -130,11 +132,7 @@ def widget_css(request, version, **kwargs): if version > version_max: raise Http404() if version < version_min: - return redirect(reverse('presale:event.widget.css' if hasattr(request, 'event') else 'organizer.widget.css', kwargs={ - 'version': version_min, - 'organizer': request.organizer.slug, - 'event': request.event.slug if hasattr(request, 'event') else None, - })) + version = version_min o = getattr(request, 'event', request.organizer) template_path = 'pretixpresale/widget_dummy.html' if version == version_max else 'pretixpresale/widget_dummy.v{}.html'.format(version) @@ -145,7 +143,7 @@ def widget_css(request, version, **kwargs): widget_css = f.read() theme_css = get_theme_vars_css(o, widget=True) - css = theme_css + widget_css + css = f"/* v{version} */\n" + theme_css + widget_css resp = FileResponse(css, content_type='text/css') resp._csp_ignore = True @@ -202,7 +200,7 @@ def generate_widget_js(version, lang): code.append('})({});\n') code = ''.join(code) code = rJSMinFilter(content=code).output() - return code + return f"/* v{version} */\n" + code @gzip_page @@ -212,10 +210,7 @@ def widget_js(request, version, lang, **kwargs): raise Http404() if version < version_min: - return redirect(reverse('presale:widget.js', kwargs={ - 'version': version_min, - 'lang': lang, - })) + version = version_min cached_js = cache.get('widget_js_data_v{}_{}'.format(version, lang)) if cached_js and not settings.DEBUG: diff --git a/src/pretix/static/pretixpresale/js/widget/widget.v1.js b/src/pretix/static/pretixpresale/js/widget/widget.v1.js deleted file mode 100644 index 260606e946..0000000000 --- a/src/pretix/static/pretixpresale/js/widget/widget.v1.js +++ /dev/null @@ -1,2504 +0,0 @@ -/*global siteglobals, module, lang, django*/ -/* PRETIX WIDGET BEGINS HERE */ -/* This is embedded in an isolation wrapper that exposes siteglobals as the global - scope. */ - -window.PretixWidget = { - 'build_widgets': true, - 'widget_data': { - 'referer': location.href - } -}; - -var Vue = module.exports; - -var strings = { - 'quantity': django.pgettext('widget', 'Quantity'), - 'quantity_dec': django.pgettext('widget', 'Decrease quantity'), - 'quantity_inc': django.pgettext('widget', 'Increase quantity'), - 'price': django.pgettext('widget', 'Price'), - 'original_price': django.pgettext('widget', 'Original price: %s'), - 'new_price': django.pgettext('widget', 'New price: %s'), - 'select': django.pgettext('widget', 'Select'), - 'select_item': django.pgettext('widget', 'Select %s'), - 'select_variant': django.pgettext('widget', 'Select variant %s'), - 'sold_out': django.pgettext('widget', 'Sold out'), - 'buy': django.pgettext('widget', 'Buy'), - 'register': django.pgettext('widget', 'Register'), - 'reserved': django.pgettext('widget', 'Reserved'), - 'free': django.pgettext('widget', 'FREE'), - 'price_from': django.pgettext('widget', 'from %(currency)s %(price)s'), - 'image_of': django.pgettext('widget', 'Image of %s'), - 'tax_incl': django.pgettext('widget', 'incl. %(rate)s% %(taxname)s'), - 'tax_plus': django.pgettext('widget', 'plus %(rate)s% %(taxname)s'), - 'tax_incl_mixed': django.pgettext('widget', 'incl. taxes'), - 'tax_plus_mixed': django.pgettext('widget', 'plus taxes'), - 'quota_left': django.pgettext('widget', 'currently available: %s'), - 'unavailable_require_voucher': django.pgettext('widget', 'Only available with a voucher'), - 'unavailable_available_from': django.pgettext('widget', 'Not yet available'), - 'unavailable_available_until': django.pgettext('widget', 'Not available anymore'), - 'unavailable_active': django.pgettext('widget', 'Currently not available'), - 'unavailable_hidden_if_item_available': django.pgettext('widget', 'Not yet available'), - 'order_min': django.pgettext('widget', 'minimum amount to order: %s'), - 'exit': django.pgettext('widget', 'Close ticket shop'), - 'loading_error': django.pgettext('widget', 'The ticket shop could not be loaded.'), - 'loading_error_429': django.pgettext('widget', 'There are currently a lot of users in this ticket shop. Please ' + - 'open the shop in a new tab to continue.'), - 'open_new_tab': django.pgettext('widget', 'Open ticket shop'), - 'checkout': django.pgettext('widget', 'Checkout'), - 'cart_error': django.pgettext('widget', 'The cart could not be created. Please try again later'), - 'cart_error_429': django.pgettext('widget', 'We could not create your cart, since there are currently too many ' + - 'users in this ticket shop. Please click "Continue" to retry in a new tab.'), - 'waiting_list': django.pgettext('widget', 'Waiting list'), - 'cart_exists': django.pgettext('widget', 'You currently have an active cart for this event. If you select more' + - ' products, they will be added to your existing cart.'), - 'resume_checkout': django.pgettext('widget', 'Resume checkout'), - 'redeem_voucher': django.pgettext('widget', 'Redeem a voucher'), - 'redeem': django.pgettext('widget', 'Redeem'), - 'voucher_code': django.pgettext('widget', 'Voucher code'), - 'close': django.pgettext('widget', 'Close'), - 'continue': django.pgettext('widget', 'Continue'), - 'variations': django.pgettext('widget', 'Show variants'), - 'hide_variations': django.pgettext('widget', 'Hide variants'), - 'back_to_list': django.pgettext('widget', 'Choose a different event'), - 'back_to_dates': django.pgettext('widget', 'Choose a different date'), - 'back': django.pgettext('widget', 'Back'), - 'next_month': django.pgettext('widget', 'Next month'), - 'previous_month': django.pgettext('widget', 'Previous month'), - 'next_week': django.pgettext('widget', 'Next week'), - 'previous_week': django.pgettext('widget', 'Previous week'), - 'show_seating': django.pgettext('widget', 'Open seat selection'), - 'seating_plan_waiting_list': django.pgettext('widget', 'Some or all ticket categories are currently sold out. If you want, you can add yourself to the waiting list. We will then notify if seats are available again.'), - 'load_more': django.pgettext('widget', 'Load more'), - 'days': { - 'MO': django.gettext('Mo'), - 'TU': django.gettext('Tu'), - 'WE': django.gettext('We'), - 'TH': django.gettext('Th'), - 'FR': django.gettext('Fr'), - 'SA': django.gettext('Sa'), - 'SU': django.gettext('Su'), - 'MONDAY': django.gettext('Monday'), - 'TUESDAY': django.gettext('Tuesday'), - 'WEDNESDAY': django.gettext('Wednesday'), - 'THURSDAY': django.gettext('Thursday'), - 'FRIDAY': django.gettext('Friday'), - 'SATURDAY': django.gettext('Saturday'), - 'SUNDAY': django.gettext('Sunday'), - }, - 'months': { - '01': django.gettext('January'), - '02': django.gettext('February'), - '03': django.gettext('March'), - '04': django.gettext('April'), - '05': django.gettext('May'), - '06': django.gettext('June'), - '07': django.gettext('July'), - '08': django.gettext('August'), - '09': django.gettext('September'), - '10': django.gettext('October'), - '11': django.gettext('November'), - '12': django.gettext('December'), - } -}; - -var setCookie = function (cname, cvalue, exdays) { - var d = new Date(); - d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); - var expires = "expires=" + d.toUTCString(); - document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; -}; -var getCookie = function (name) { - var value = "; " + document.cookie; - var parts = value.split("; " + name + "="); - if (parts.length == 2) return parts.pop().split(";").shift() || null; - else return null; -}; - -var padNumber = function(number, size) { - var s = String(number); - while (s.length < (size || 2)) {s = "0" + s;} - return s; -}; - -var getISOWeeks = function (y) { - var d, isLeap; - - d = new Date(y, 0, 1); - isLeap = new Date(y, 1, 29).getMonth() === 1; - - //check for a Jan 1 that's a Thursday or a leap year that has a - //Wednesday jan 1. Otherwise it's 52 - return d.getDay() === 4 || isLeap && d.getDay() === 3 ? 53 : 52 -}; - -/* HTTP API Call helpers */ -var api = { - '_getJSON': function (endpoint, callback, err_callback) { - var xhr = new window.XMLHttpRequest(); - xhr.open("GET", endpoint, true); - xhr.onload = function (e) { - if (xhr.readyState === 4) { - if (xhr.status === 200) { - callback(JSON.parse(xhr.responseText), xhr); - } else { - err_callback(xhr, e); - } - } - }; - xhr.onerror = function (e) { - console.error(xhr.statusText); - err_callback(xhr, e); - }; - xhr.send(null); - }, - - '_postFormJSON': function (endpoint, form, callback, err_callback) { - var params = [].filter.call(form.elements, function (el) { - return (el.type !== 'checkbox' && el.type !== 'radio') || el.checked; - }) - .filter(function (el) { - return !!el.name && !!el.value; - }) - .filter(function (el) { - return !el.disabled; - }) - .map(function (el) { - return encodeURIComponent(el.name) + '=' + encodeURIComponent(el.value); - }).join('&'); - - var xhr = new window.XMLHttpRequest(); - xhr.open("POST", endpoint, true); - xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); - xhr.onload = function (e) { - if (xhr.readyState === 4) { - if (xhr.status === 200) { - callback(JSON.parse(xhr.responseText)); - } else { - err_callback(xhr, e); - } - } - }; - xhr.onerror = function (e) { - err_callback(xhr, e); - }; - xhr.send(params); - } -}; - -var makeid = function (length) { - var text = ""; - var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - - for (var i = 0; i < length; i++) { - text += possible.charAt(Math.floor(Math.random() * possible.length)); - } - - return text; -}; - -var site_is_secure = function () { - return /https.*/.test(document.location.protocol) -}; - -var widget_id = makeid(16); - -/* Vue Components */ -Vue.component('availbox', { - template: ('

    ' - + '' - + '
    ' - + '{{unavailability_reason_message}}' - + '
    ' - + '
    ' - + strings.reserved - + '
    ' - + '
    ' - + strings.sold_out - + '
    ' - + '' - + '
    ' - + '' - + '' - + '
    ' - + '' - + '' - + '' - + '
    ' - + '
    ' - + '
    '), - props: { - item: Object, - variation: Object - }, - mounted: function() { - if (this.item.has_variations) { - this.$set(this.variation, 'amount_selected', 0); - } else { - // Automatically set the only available item to be selected. - this.$set(this.item, 'amount_selected', this.$root.itemnum === 1 && !this.$root.has_seating_plan ? 1 : 0); - } - this.$root.$emit('amounts_changed') - }, - computed: { - aria_labelledby: function () { - return this.$root.html_id + '-item-label-' + this.item.id; - }, - dec_label: function () { - return '- ' + (this.item.has_variations ? this.variation.value : this.item.name) + ': ' + strings.quantity_dec; - }, - inc_label: function () { - return '+ ' + (this.item.has_variations ? this.variation.value : this.item.name) + ': ' + strings.quantity_inc; - }, - count_group_classes: function () { - return { - 'pretix-widget-item-count-group': !this.$root.use_native_spinners - } - }, - unavailability_reason_message: function () { - var reason = this.item.current_unavailability_reason || this.variation?.current_unavailability_reason; - if (reason) { - return strings["unavailable_" + reason] || reason; - } - return ""; - }, - amount_selected: { - cache: false, - get: function () { - var selected = this.item.has_variations ? this.variation.amount_selected : this.item.amount_selected - if (selected === 0) return undefined; - return selected - }, - set: function (value) { - // Unary operator to force boolean to integer conversion, as the HTML form submission - // needs the value to be integer for all products. - value = (+value); - if (this.item.has_variations) { - this.variation.amount_selected = value; - } else { - this.item.amount_selected = value; - } - if (this.$refs.quantity) { - // manually set value on quantity as on reload somehow v-model binding breaks - this.$refs.quantity.value = value; - } - this.$root.$emit("amounts_changed") - } - }, - label_select_item: function () { - return this.item.has_variations - ? strings.select_variant.replace("%s", this.variation.value) - : strings.select_item.replace("%s", this.item.name) - }, - input_name: function () { - if (this.item.has_variations) { - return 'variation_' + this.item.id + '_' + this.variation.id; - } else { - return 'item_' + this.item.id; - } - }, - order_max: function () { - return this.item.has_variations ? this.variation.order_max : this.item.order_max; - }, - avail: function () { - return this.item.has_variations ? this.variation.avail : this.item.avail; - }, - waiting_list_show: function () { - return this.avail[0] < 100 && this.$root.waiting_list_enabled && this.item.allow_waitinglist; - }, - waiting_list_url: function () { - var u - if (this.item.has_variations) { - u = this.$root.target_url + 'w/' + widget_id + '/waitinglist/?item=' + this.item.id + '&var=' + this.variation.id + '&widget_data=' + encodeURIComponent(this.$root.widget_data_json) + this.$root.consent_parameter; - } else { - u = this.$root.target_url + 'w/' + widget_id + '/waitinglist/?item=' + this.item.id + '&widget_data=' + encodeURIComponent(this.$root.widget_data_json) + this.$root.consent_parameter; - } - if (this.$root.subevent) { - u += '&subevent=' + this.$root.subevent - } - return u - } - }, - methods: { - focus_voucher_field: function () { - this.$root.$emit('focus_voucher_field') - }, - on_step: function (e) { - var t = e.target.tagName == 'BUTTON' ? e.target : e.target.closest('button'); - var step = parseFloat(t.getAttribute("data-step")); - var controls = document.getElementById(t.getAttribute("data-controls")); - this.amount_selected = Math.max(controls.min, Math.min(controls.max || Number.MAX_SAFE_INTEGER, (this.amount_selected || 0) + step)); - } - } -}); -Vue.component('pricebox', { - template: ('
    ' - + '' - + '' - + ' ' - + '' - + '
    ' - + '{{ $root.currency }} ' - + '' - + '
    ' - + '' - + '{{ taxline }}' - + '' - + '
    '), - props: { - price: Object, - free_price: Boolean, - field_name: String, - suggested_price: Object, - original_price: String, - mandatory_priced_addons: Boolean, - item_id: Number, - }, - methods: { - stripHTML: function (s) { - var div = document.createElement('div'); - div.innerHTML = s; - return div.textContent || div.innerText || ''; - }, - }, - computed: { - aria_labelledby: function () { - return [ - this.$root.html_id + '-item-label-' + this.item_id, - this.price_box_id - ].join(" "); - }, - price_box_id: function () { - return this.$root.html_id + '-item-pricebox-' + this.item_id; - }, - price_desc_id: function () { - return this.$root.html_id + '-item-pricedesc-' + this.item_id; - }, - display_price: function () { - if (this.$root.display_net_prices) { - return floatformat(parseFloat(this.price.net), 2); - } else { - return floatformat(parseFloat(this.price.gross), 2); - } - }, - display_price_nonlocalized: function () { - if (this.$root.display_net_prices) { - return parseFloat(this.price.net).toFixed(2); - } else { - return parseFloat(this.price.gross).toFixed(2); - } - }, - suggested_price_nonlocalized: function () { - var price = this.suggested_price; - if (price === null) { - price = this.price; - } - if (this.$root.display_net_prices) { - return parseFloat(price.net).toFixed(2); - } else { - return parseFloat(price.gross).toFixed(2); - } - }, - original_price_aria_label: function () { - return django.interpolate(strings.original_price, [this.stripHTML(this.original_line)]); - }, - new_price_aria_label: function () { - return django.interpolate(strings.new_price, [this.stripHTML(this.priceline)]); - }, - original_line: function () { - return '' + this.$root.currency + " " + floatformat(parseFloat(this.original_price), 2); - }, - priceline: function () { - if (this.price.gross === "0.00") { - if (this.mandatory_priced_addons && !this.original_price) { - return "\xA0"; // nbsp, because an empty string would cause the HTML element to collapse - } - return strings.free; - } else { - return '' + this.$root.currency + " " + this.display_price; - } - }, - taxline: function () { - if (this.$root.display_net_prices) { - if (this.price.includes_mixed_tax_rate) { - return strings.tax_plus_mixed; - } else { - return django.interpolate(strings.tax_plus, { - 'rate': autofloatformat(this.price.rate, 2), - 'taxname': this.price.name - }, true); - } - } else { - if (this.price.includes_mixed_tax_rate) { - return strings.tax_incl_mixed; - } else { - return django.interpolate(strings.tax_incl, { - 'rate': autofloatformat(this.price.rate, 2), - 'taxname': this.price.name - }, true); - } - } - } - } -}); -Vue.component('variation', { - template: ('
    ' - + '
    ' - - // Variation description - + '
    ' - + '
    ' - + '{{ variation.value }}' - + '
    ' - + '

    ' - + '{{ quota_left_str }}' - + '

    ' - + '
    ' - + '
    ' - - // Price - + '
    ' - + '' - + '' - + ' ' - + '
    ' - - // Availability - + '
    ' - + '' - + '
    ' - - + '
    ' - + '
    ' - + '
    '), - props: { - variation: Object, - item: Object, - category: Object, - }, - computed: { - orig_price: function () { - if (this.variation.original_price) { - return this.variation.original_price; - } - return this.item.original_price; - }, - quota_left_str: function () { - return django.interpolate(strings["quota_left"], [this.variation.avail[1]]); - }, - variation_label_id: function () { - return this.$root.html_id + '-variation-label-' + this.item.id + '-' + this.variation.id; - }, - variation_desc_id: function () { - return this.$root.html_id + '-variation-desc-' + this.item.id + '-' + this.variation.id; - }, - variation_price_id: function () { - return this.$root.html_id + '-variation-price-' + this.item.id + '-' + this.variation.id; - }, - aria_labelledby: function () { - return [this.variation_label_id, this.variation_price_id].join(" "); - }, - headingLevel: function () { - return this.category.name ? '5' : '4'; - }, - } -}); -Vue.component('item', { - template: ('
    ' - + '
    ' - - // Product description - + '
    ' - + '' - + '
    ' - + '' - + '{{ item.name }}' - + '' - + '{{ item.name }}' - + '
    ' - + '

    ' - + '{{ min_order_str }}' - + '

    ' - + '

    ' - + '{{ quota_left_str }}' - + '

    ' - + '
    ' - + '
    ' - - // Price - + '
    ' - + '' - + '' - + '
    ' - + ' ' - + '
    ' - - // Availability - + '
    ' - + '{{ variationsToggleLabel }}' - + '' - + '
    ' - - + '
    ' - + '
    ' - - // Variations - + '
    ' - + '' - + '' - + '
    ' - - + '
    '), - props: { - item: Object, - category: Object, - }, - data: function () { - return { - expanded: this.$root.show_variations_expanded - }; - }, - mounted: function () { - if (this.$refs.variations) { - if (!this.expanded) { - var $this = this; - this.$refs.variations.hidden = true; - this.$refs.variations.addEventListener('transitionend', function (event) { - if (event.target == this) { - this.hidden = !$this.expanded; - this.style.maxHeight = 'none'; - } - }); - this.$watch('expanded', function (newValue) { - var v = this.$refs.variations; - v.hidden = false; - v.style.maxHeight = (newValue ? 0 : v.scrollHeight) + 'px'; - // Vue.nextTick does not work here - window.setTimeout(function () { - v.style.maxHeight = (!newValue ? 0 : v.scrollHeight) + 'px'; - }, 50); - }) - } - } - }, - methods: { - expand: function () { - this.expanded = !this.expanded; - }, - lightbox: function () { - this.$root.overlay.lightbox = { - image: this.item.picture_fullsize, - description: this.item.name, - } - } - }, - computed: { - classObject: function () { - return { - 'pretix-widget-item': true, - 'pretix-widget-item-with-picture': !!this.item.picture, - 'pretix-widget-item-with-variations': this.item.has_variations - } - }, - varClasses: function () { - return { - 'pretix-widget-item-variations': true, - 'pretix-widget-item-variations-expanded': this.expanded, - } - }, - picture_alt_text: function () { - return django.interpolate(strings["image_of"], [this.item.name]); - }, - headingLevel: function () { - return this.category.name ? '4' : '3'; - }, - item_label_id: function () { - return this.$root.html_id + '-item-label-' + this.item.id; - }, - item_desc_id: function () { - return this.$root.html_id + '-item-desc-' + this.item.id; - }, - item_price_id: function () { - return this.$root.html_id + '-item-price-' + this.item.id; - }, - aria_labelledby: function () { - return [this.item_label_id, this.item_price_id].join(" "); - }, - min_order_str: function () { - return django.interpolate(strings["order_min"], [this.item.order_min]); - }, - quota_left_str: function () { - return django.interpolate(strings["quota_left"], [this.item.avail[1]]); - }, - show_toggle: function () { - return this.item.has_variations && !this.$root.show_variations_expanded; - }, - pricerange: function () { - if (this.item.free_price) { - return django.interpolate(strings.price_from, { - 'currency': this.$root.currency, - 'price': floatformat(this.item.min_price, 2) - }, true).replace(this.$root.currency, '' + this.$root.currency + ''); - } else if (this.item.min_price !== this.item.max_price) { - return '' + this.$root.currency + " " - + floatformat(this.item.min_price, 2) + " – " - + floatformat(this.item.max_price, 2); - } else if (this.item.min_price === "0.00" && this.item.max_price === "0.00") { - if (this.item.mandatory_priced_addons) { - return "\xA0"; // nbsp, because an empty string would cause the HTML element to collapse - } - return strings.free; - } else { - return '' + this.$root.currency + " " + floatformat(this.item.min_price, 2); - } - }, - variationsToggleLabel: function () { - return this.expanded ? strings.hide_variations : strings.variations; - }, - } -}); -Vue.component('category', { - template: ('
    ' - + '

    {{ category.name }}

    ' - + '
    ' - + '
    ' - + '
    ' - + '' - + '
    ' - + '
    '), - props: { - category: Object - } -}); - -var shared_methods = { - buy: function (event) { - if (this.$root.useIframe) { - if (event) { - event.preventDefault(); - } - } else { - return; - } - if (this.$root.is_button && this.$root.items.length === 0) { - if (this.$root.voucher_code) { - this.voucher_open(this.$root.voucher_code); - } else { - this.resume(); - } - } else { - var url = this.$root.formAction + "&locale=" + lang + "&ajax=1"; - this.$root.overlay.frame_loading = true; - - this.async_task_interval = 100; - var form = this.$refs.form; - if (form === undefined) { - form = this.$refs.formcomp.$refs.form; - } - api._postFormJSON(url, form, this.buy_callback, this.buy_error_callback); - } - }, - buy_error_callback: function (xhr, data) { - if (xhr.status === 429 && typeof xhr.responseURL !== "undefined") { - this.$root.overlay.error_message = strings['cart_error_429']; - this.$root.overlay.frame_loading = false; - this.$root.overlay.error_url_after = this.$root.newTabTarget; - this.$root.overlay.error_url_after_new_tab = true; - return; - } - if (xhr.status === 405 && typeof xhr.responseURL !== "undefined") { - // Likely a redirect! - this.$root.target_url = xhr.responseURL.substr(0, xhr.responseURL.indexOf("/cart/add") - 18); - this.$root.overlay.frame_loading = false; - this.buy(); - return; - } - this.$root.overlay.error_message = strings['cart_error']; - this.$root.overlay.frame_loading = false; - }, - buy_check_error_callback: function (xhr, data) { - if (xhr.status == 200 || (xhr.status >= 400 && xhr.status < 500)) { - this.$root.overlay.error_message = strings['cart_error']; - this.$root.overlay.frame_loading = false; - } else { - this.async_task_timeout = window.setTimeout(this.buy_check, 1000); - } - }, - buy_callback: function (data) { - if (data.redirect) { - if (data.cart_id) { - this.$root.cart_id = data.cart_id; - setCookie(this.$root.cookieName, data.cart_id, 30); - } - if (data.redirect.substr(0, 1) === '/') { - data.redirect = this.$root.target_url.replace(/^([^\/]+:\/\/[^\/]+)\/.*$/, "$1") + data.redirect; - } - var url = data.redirect; - if (url.indexOf('?')) { - url = url + '&iframe=1&locale=' + lang + '&take_cart_id=' + this.$root.cart_id; - } else { - url = url + '?iframe=1&locale=' + lang + '&take_cart_id=' + this.$root.cart_id; - } - url += this.$root.consent_parameter; - if (this.$root.additionalURLParams) { - url += '&' + this.$root.additionalURLParams; - } - if (data.success === false) { - url = url.replace(/checkout\/start/g, ""); - this.$root.overlay.error_message = data.message; - if (data.has_cart) { - this.$root.overlay.error_url_after = url; - } - this.$root.overlay.frame_loading = false; - } else { - this.$root.overlay.frame_src = url; - } - } else { - this.async_task_id = data.async_id; - if (data.check_url) { - this.async_task_check_url = this.$root.target_url.replace(/^([^\/]+:\/\/[^\/]+)\/.*$/, "$1") + data.check_url; - } - this.async_task_timeout = window.setTimeout(this.buy_check, this.async_task_interval); - this.async_task_interval = 250; - } - }, - buy_check: function () { - api._getJSON(this.async_task_check_url, this.buy_callback, this.buy_check_error_callback); - }, - redeem: function (event) { - if (this.$root.useIframe) { - event.preventDefault(); - this.voucher_open(this.voucher); - } - }, - voucher_open: function (voucher) { - var redirect_url = this.$root.voucherFormTarget + '&voucher=' + encodeURIComponent(voucher); - if (this.$root.useIframe) { - this.$root.overlay.frame_src = redirect_url; - } else { - window.open(redirect_url); - } - }, - resume: function () { - var redirect_url; - redirect_url = this.$root.target_url + 'w/' + widget_id + '/'; - if (this.$root.subevent && !this.$root.cart_id) { - // button with subevent but no items - redirect_url += this.$root.subevent + '/'; - } - redirect_url += '?iframe=1&locale=' + lang; - if (this.$root.cart_id) { - redirect_url += '&take_cart_id=' + this.$root.cart_id; - } - if (this.$root.widget_data) { - redirect_url += '&widget_data=' + encodeURIComponent(this.$root.widget_data_json); - } - redirect_url += this.$root.consent_parameter; - if (this.$root.additionalURLParams) { - redirect_url += '&' + this.$root.additionalURLParams; - } - if (this.$root.useIframe) { - this.$root.overlay.frame_src = redirect_url; - } else { - window.open(redirect_url); - } - }, -}; - -var shared_widget_data = function () { - return { - async_task_id: null, - async_task_check_url: null, - async_task_timeout: null, - async_task_interval: 100, - voucher: null, - mobile: false, - } -}; - -var shared_loading_fragment = ( - '
    ' - + '' - + '
    ' -); - -var shared_iframe_fragment = ( - '
    ' - + '
    ' - + '' - + '
    ' - + '
    ' - + '' - + '' - + '
    ' - + '
    ' -); - -var shared_alert_fragment = ( - '
    ' - + '' - + '
    ' - + '

    {{ $root.error_message }}

    ' - + '

    ' - + '

    ' - + '
    ' - + '
    ' - + '' - + '
    ' -); - -var shared_lightbox_fragment = ( - '
    ' - + '
    ' - + '' - + '
    ' - + '
    ' - + '
    ' - + '' - + '
    {{$root.lightbox.description}}
    ' - + '
    ' - + '' - + '
    ' - + '
    ' -); - -Vue.component('pretix-overlay', { - template: ('
    ' - + shared_iframe_fragment - + shared_alert_fragment - + shared_lightbox_fragment - + '
    ' - ), - watch: { - '$root.lightbox': function (newValue, oldValue) { - if (newValue) { - if (newValue.image != oldValue?.image) { - this.$set(newValue, "loading", true); - } - if (!oldValue) { - window.addEventListener('keyup', this.lightboxCloseOnKeyup); - } - } else { - window.removeEventListener('keyup', this.lightboxCloseOnKeyup); - } - } - }, - computed: { - frameClasses: function () { - return { - 'pretix-widget-frame-holder': true, - 'pretix-widget-frame-shown': this.$root.frame_shown || this.$root.frame_loading, - }; - }, - alertClasses: function () { - return { - 'pretix-widget-alert-holder': true, - 'pretix-widget-alert-shown': this.$root.error_message, - }; - }, - lightboxClasses: function () { - return { - 'pretix-widget-lightbox-holder': true, - 'pretix-widget-lightbox-shown': this.$root.lightbox, - 'pretix-widget-lightbox-isloading': this.$root.lightbox?.loading, - }; - }, - }, - methods: { - lightboxCloseOnKeyup: function (event) { - if (event.keyCode === 27) { - // abort on ESC-key - this.lightboxClose(); - } - }, - lightboxClose: function () { - this.$root.lightbox = null; - }, - lightboxLoaded: function () { - this.$root.lightbox.loading = false; - }, - errorClose: function () { - this.$root.error_message = null; - this.$root.error_url_after = null; - this.$root.error_url_after_new_tab = false; - }, - errorContinue: function () { - if (this.$root.error_url_after_new_tab) { - window.open(this.$root.error_url_after); - return; - } - this.$root.overlay.frame_src = this.$root.error_url_after; - this.$root.frame_loading = true; - this.$root.error_message = null; - this.$root.error_url_after = null; - }, - close: function () { - this.$root.frame_shown = false; - this.$root.parent.frame_dismissed = true; - this.$root.frame_src = ""; - this.$root.parent.reload(); - this.$root.parent.trigger_close_callback(); - }, - iframeLoaded: function () { - if (this.$root.frame_loading) { - this.$root.frame_loading = false; - if (this.$root.frame_src) { - this.$root.frame_shown = true; - } - } - }, - focusButton: function () { - this.$el.querySelector(".pretix-widget-alert-box button").focus(); - }, - - } -}); - -Vue.component('pretix-widget-event-form', { - template: ('
    ' - // Back navigation - + '' - - // Event name - + '
    ' - + '{{ $root.name }}' - + '
    ' - - // Date range - + '
    ' - + '{{ $root.date_range }}' - + '
    ' - - // Location - + '
    ' - - // Form start - + '
    ' - + '
    ' - + '' - + '' - + '' - + '' - - // Error message - + '
    {{ $root.error }}
    ' - - // Resume cart - + '
    ' - + '' - + '' + strings['cart_exists'] + '' - + '
    ' - + '
    ' - - // Seating plan - + '' - - // Waiting list for seating plan - + '
    ' - + '
    ' - + strings['seating_plan_waiting_list'] - + '
    ' - + '
    ' - + '' - + '
    ' - + '
    ' - + '
    ' - - // Actual product list - + '' - - // Buy button - + '
    ' - + '' - + '
    ' - - + '' - - // Voucher form - + '
    ' - + '
    ' - + '

    '+ strings['redeem_voucher'] +'

    ' - + '
    ' - + '
    ' - + '' - + '
    ' - + '' - + '
    ' - + '' - + '
    ' - + '
    ' - + '
    ' - + '' - - + '
    ' - ), - mounted: function() { - this.$root.$on('focus_voucher_field', this.focus_voucher_field) - }, - beforeDestroy: function() { - this.$root.$off('focus_voucher_field', this.focus_voucher_field) - }, - computed: { - aria_labelledby: function() { - return this.$root.html_id + '-voucher-headline'; - }, - display_event_info: function () { - return this.$root.display_event_info || (this.$root.display_event_info === null && (this.$root.events || this.$root.weeks || this.$root.days)); - }, - id_cart_exists_msg: function () { - return this.$root.html_id + '-cart-exists'; - }, - buy_label: function () { - var i, j, k, all_free = true; - for (i = 0; i < this.$root.categories.length; i++) { - var cat = this.$root.categories[i]; - for (j = 0; j < cat.items.length; j++) { - var item = cat.items[j]; - for (k = 0; k < item.variations.length; k++) { - var v = item.variations[k]; - if (v.price.gross !== "0.00") { - all_free = false; - break; - } - } - if ((item.variations.length === 0 && item.price.gross !== "0.00") || item.mandatory_priced_addons) { - all_free = false; - break; - } - } - if (!all_free) { - break; - } - } - if (all_free) { - return strings.register; - } else { - return strings.buy; - } - }, - hiddenParams: function () { - var params = new URL(this.$root.voucherFormTarget).searchParams; - params.delete("iframe"); - params.delete("take_cart_id"); - return [...params.entries()]; - }, - }, - methods: { - focus_voucher_field: function() { - this.$refs.voucherinput.scrollIntoView(false) - this.$refs.voucherinput.focus() - }, - back_to_list: function() { - this.$root.target_url = this.$root.parent_stack.pop(); - this.$root.error = null; - if (!this.$root.subevent) { - // reset if we are not in a series - this.$root.name = null; - this.$root.frontpage_text = null; - } - this.$root.subevent = null; - this.$root.offset = 0; - this.$root.append_events = false; - this.$root.trigger_load_callback(); - if (this.$root.events !== undefined && this.$root.events !== null) { - this.$root.view = "events"; - } else if (this.$root.days !== undefined && this.$root.days !== null) { - this.$root.view = "days"; - } else { - this.$root.view = "weeks"; - } - - var $el = this.$root.$el; - this.$root.$nextTick(function() { - // wait for redraw, then focus content element for better a11y - $el.focus(); - }); - }, - } -}); - -Vue.component('pretix-widget-event-list-filter-field', { - template: ('
    ' - + '' - + '' - + '
    '), - props: { - field: Object - }, - methods: { - onChange: function(event) { - var filterParams = new URLSearchParams(this.$root.filter); - if (event.target.value) { - filterParams.set(this.field.key, event.target.value); - } else { - filterParams.delete(this.field.key); - } - this.$root.filter = filterParams.toString(); - this.$root.loading++; - this.$root.reload(); - }, - }, - computed: { - id: function () { - return widget_id + "_" + this.field.key; - }, - currentValue: function () { - var filterParams = new URLSearchParams(this.$root.filter); - return filterParams.get(this.field.key) || ""; - }, - }, -}); - -Vue.component('pretix-widget-event-list-filter-form', { - template: ('
    ' - + '' - + '
    '), -}); - -Vue.component('pretix-widget-event-list-entry', { - template: ('' - + '
    {{ event.name }}
    ' - + '' - + '
    {{ location }}
    ' // hidden by css for now, but - // used by a few people - + '
    {{ event.availability.text }}
    ' - + '
    '), - props: { - event: Object - }, - computed: { - classObject: function () { - var o = { - 'pretix-widget-event-list-entry': true - }; - o['pretix-widget-event-availability-' + this.event.availability.color] = true; - if (this.event.availability.reason) { - o['pretix-widget-event-availability-' + this.event.availability.reason] = true; - } - return o - }, - location: function () { - return this.event.location.replace(/\s*\n\s*/g, ', '); - } - }, - methods: { - select: function () { - this.$root.parent_stack.push(this.$root.target_url); - this.$root.target_url = this.event.event_url; - this.$root.error = null; - this.$root.subevent = this.event.subevent; - this.$root.loading++; - this.$root.reload(); - } - } -}); - -Vue.component('pretix-widget-event-list', { - template: ('
    ' - + '' - + '
    ' - + '{{ $root.name }}' - + '
    ' - + '
    ' - + '' - + '' - + '

    ' - + '
    '), - computed: { - display_event_info: function () { - return this.$root.display_event_info || (this.$root.display_event_info === null && this.$root.parent_stack.length > 0); - }, - }, - methods: { - back_to_calendar: function () { - // make sure to always focus content element - this.$nextTick(function () { - this.$root.$el.focus(); - }); - this.$root.offset = 0; - this.$root.append_events = false; - if (this.$root.weeks) { - this.$root.events = undefined; - this.$root.view = "weeks"; - this.$root.name = null; - this.$root.frontpage_text = null; - } else { - this.$root.loading++; - this.$root.target_url = this.$root.parent_stack.pop(); - this.$root.error = null; - this.$root.reload(); - } - }, - load_more: function () { - this.$root.append_events = true; - this.$root.offset += 50; - this.$root.loading++; - this.$root.reload(); - } - } -}); - -Vue.component('pretix-widget-event-calendar-event', { - template: ('' - + '' - + '{{ event.name }}' - + '' - + '
    {{ event.time }}
    ' - + '
    {{ event.availability.text }}
    ' - + '
    '), - props: { - event: Object, - describedby: String, - }, - computed: { - classObject: function () { - var o = { - 'pretix-widget-event-calendar-event': true - }; - o['pretix-widget-event-availability-' + this.event.availability.color] = true; - if (this.event.availability.reason) { - o['pretix-widget-event-availability-' + this.event.availability.reason] = true; - } - return o - } - }, - methods: { - select: function () { - this.$root.parent_stack.push(this.$root.target_url); - this.$root.target_url = this.event.event_url; - this.$root.error = null; - this.$root.subevent = this.event.subevent; - this.$root.loading++; - this.$root.reload(); - } - } -}); - -Vue.component('pretix-widget-event-week-cell', { - template: ('
    ' - + '
    ' - + '{{ dayhead }}' - + '
    ' - + '
    ' - + '' - + '
    ' - + '
    '), - props: { - day: Object, - }, - methods: { - selectDay: function () { - if (!this.day || !this.day.events.length || !this.$parent.$parent.$parent.mobile) { - return; - } - if (this.day.events.length === 1) { - var ev = this.day.events[0]; - this.$root.parent_stack.push(this.$root.target_url); - this.$root.target_url = ev.event_url; - this.$root.error = null; - this.$root.subevent = ev.subevent; - this.$root.loading++; - this.$root.reload(); - } else { - this.$root.events = this.day.events; - this.$root.view = "events"; - } - } - }, - computed: { - id: function () { - return this.day ? this.$root.html_id + '-' + this.day.date : ''; - }, - dayhead: function () { - if (!this.day) { - return; - } - return this.day.day_formatted; - }, - classObject: function () { - var o = {}; - if (this.day && this.day.events.length > 0) { - o['pretix-widget-has-events'] = true; - var best = 'red'; - var all_low = true; - for (var i = 0; i < this.day.events.length; i++) { - var ev = this.day.events[i]; - if (ev.availability.color === 'green') { - best = 'green'; - if (ev.availability.reason !== 'low') { - all_low = false; - } - } else if (ev.availability.color === 'orange' && best !== 'green') { - best = 'orange' - } - } - o['pretix-widget-day-availability-' + best] = true; - if (best === 'green' && all_low) { - o['pretix-widget-day-availability-low'] = true; - } - } - return o - } - } -}); - -Vue.component('pretix-widget-event-calendar-cell', { - template: ('
    '), - props: { - day: Object, - }, - methods: { - selectDay: function (e) { - if (!this.day || !this.day.events.length || !this.$parent.$parent.$parent.mobile) { - return; - } - e.preventDefault(); - e.stopPropagation(); - if (this.day.events.length === 1) { - var ev = this.day.events[0]; - this.$root.parent_stack.push(this.$root.target_url); - this.$root.target_url = ev.event_url; - this.$root.error = null; - this.$root.subevent = ev.subevent; - this.$root.loading++; - this.$root.reload(); - } else { - this.$root.events = this.day.events; - this.$root.view = "events"; - } - }, - onKeyDown: function (e) { - var keyDown = e.key !== undefined ? e.key : e.keyCode; - if ( (keyDown === 'Enter' || keyDown === 13) || (['Spacebar', ' '].indexOf(keyDown) >= 0 || keyDown === 32)) { - // (prevent default so the page doesn't scroll when pressing space) - e.preventDefault(); - this.selectDay(e); - } - }, - }, - mounted: function () { - if (this.role == 'button') { - this.$el.addEventListener("click", this.selectDay); - this.$el.addEventListener("keydown", this.onKeyDown); - } - }, - watch: { - role: function (newValue) { - if (newValue == 'button') { - this.$el.addEventListener("click", this.selectDay); - this.$el.addEventListener("keydown", this.onKeyDown); - } else { - this.$el.removeEventListener("click", this.selectDay); - this.$el.removeEventListener("keydown", this.onKeyDown); - } - } - }, - computed: { - role: function () { - return (!this.day || !this.day.events.length || !this.$parent.$parent.$parent.mobile) ? 'cell' : 'button'; - }, - tabindex: function () { - return this.role == 'button' ? '0' : '-1'; - }, - daynum: function () { - if (!this.day) { - return; - } - return this.day.date.substr(8); - }, - date: function () { - return this.day ? (new Date(this.day.date)).toLocaleDateString() : ''; - }, - classObject: function () { - var o = {}; - if (this.day && this.day.events.length > 0) { - o['pretix-widget-has-events'] = true; - var best = 'red'; - var all_low = true; - for (var i = 0; i < this.day.events.length; i++) { - var ev = this.day.events[i]; - if (ev.availability.color === 'green') { - best = 'green'; - if (ev.availability.reason !== 'low') { - all_low = false; - } - } else if (ev.availability.color === 'orange' && best !== 'green') { - best = 'orange' - } - } - o['pretix-widget-day-availability-' + best] = true; - if (best === 'green' && all_low) { - o['pretix-widget-day-availability-low'] = true; - } - } - return o - } - } -}); - -Vue.component('pretix-widget-event-calendar-row', { - template: ('' - + '' - + ''), - props: { - week: Array - }, -}); - -Vue.component('pretix-widget-event-calendar', { - template: ('
    ' - - // Back navigation - + '' - - // Headline - + '
    ' - + '{{ $root.name }}' - + '
    ' - + '
    ' - - // Filter - + '' - - // Calendar navigation - + '' - - // Calendar - + '
    ' - + '
    ' - + '{{ daynum }}' - + '
    ' - + '
    ' - + '' - + '
    ' - + '
    ' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '
    ' + strings['days']['MO'] + '' + strings['days']['TU'] + '' + strings['days']['WE'] + '' + strings['days']['TH'] + '' + strings['days']['FR'] + '' + strings['days']['SA'] + '' + strings['days']['SU'] + '
    ' - + '
    '), - computed: { - display_event_info: function () { - return this.$root.display_event_info || (this.$root.display_event_info === null && this.$root.parent_stack.length > 0); - }, - monthname: function () { - return strings['months'][this.$root.date.substr(5, 2)] + ' ' + this.$root.date.substr(0, 4); - }, - id: function () { - return this.$root.html_id + "-event-calendar-table"; - }, - }, - methods: { - back_to_list: function () { - this.$root.weeks = undefined; - this.$root.view = "events"; - this.$root.name = null; - this.$root.frontpage_text = null; - }, - prevmonth: function () { - var curMonth = parseInt(this.$root.date.substr(5, 2)); - var curYear = parseInt(this.$root.date.substr(0, 4)); - curMonth--; - if (curMonth < 1) { - curMonth = 12; - curYear--; - } - this.$root.date = String(curYear) + "-" + padNumber(curMonth, 2) + "-01"; - this.$root.loading++; - this.$root.reload({focus: '#'+this.id}); - }, - nextmonth: function () { - var curMonth = parseInt(this.$root.date.substr(5, 2)); - var curYear = parseInt(this.$root.date.substr(0, 4)); - curMonth++; - if (curMonth > 12) { - curMonth = 1; - curYear++; - } - this.$root.date = String(curYear) + "-" + padNumber(curMonth, 2) + "-01"; - this.$root.loading++; - this.$root.reload({focus: '#'+this.id}); - } - }, -}); - -Vue.component('pretix-widget-event-week-calendar', { - template: ('
    ' - // Back navigation - + '' - - // Event header - + '
    ' - + '{{ $root.name }}' - + '
    ' - - // Filter - + '' - - // Calendar navigation - + '
    ' - + '' - - // Actual calendar - + '
    ' - + '
    ' - + '' - + '' - + '
    ' - + '
    ' - - + '
    ' - + '
    '), - computed: { - display_event_info: function () { - return this.$root.display_event_info || (this.$root.display_event_info === null && this.$root.parent_stack.length > 0); - }, - weekname: function () { - var curWeek = this.$root.week[1]; - var curYear = this.$root.week[0]; - return curWeek + ' / ' + curYear; - }, - id: function () { - return this.$root.html_id + "-event-week-table"; - }, - }, - methods: { - back_to_list: function () { - this.$root.weeks = undefined; - this.$root.name = null; - this.$root.frontpage_text = null; - this.$root.view = "events"; - }, - prevweek: function () { - var curWeek = this.$root.week[1]; - var curYear = this.$root.week[0]; - curWeek--; - if (curWeek < 1) { - curYear--; - curWeek = getISOWeeks(curYear); - } - this.$root.week = [curYear, curWeek]; - this.$root.loading++; - this.$root.reload({focus: '#'+this.id}); - }, - nextweek: function () { - var curWeek = this.$root.week[1]; - var curYear = this.$root.week[0]; - curWeek++; - if (curWeek > getISOWeeks(curYear)) { - curWeek = 1; - curYear++; - } - this.$root.week = [curYear, curWeek]; - this.$root.loading++; - this.$root.reload({focus: '#'+this.id}); - } - }, -}); - -Vue.component('pretix-widget', { - template: ('
    ' - + '
    ' - + shared_loading_fragment - + '
    {{ $root.error }}
    ' - + '' - + '' - + '' - + '' - + '' - + '
    ' - + '
    ' - + '
    ' - + '
    ' - + '
    ' - + '
    ' - ), - data: shared_widget_data, - methods: shared_methods, - mounted: function () { - var thisObj = this; - if ("ResizeObserver" in window) { - var resizeObserver = new ResizeObserver(function(entries) { - thisObj.mobile = entries[0].contentRect.width <= 800; - }); - resizeObserver.observe(this.$refs.wrapper); - } else { - this.mobile = this.$refs.wrapper.clientWidth <= 800; - var debounce; - window.addEventListener("resize", function() { - if (debounce) clearTimeout(debounce); - debounce = setTimeout(function () { - thisObj.mobile = thisObj.$refs.wrapper.clientWidth <= 800; - }, 100); - }); - } - }, - computed: { - classObject: function () { - return { - 'pretix-widget': true, - 'pretix-widget-mobile': this.mobile, - 'pretix-widget-use-custom-spinners': !this.$root.use_native_spinners - }; - } - } -}); - -Vue.component('pretix-button', { - template: ('
    ' - + '
    ' - + '
    ' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '
    ' - + '
    ' - + '
    ' - + '
    ' - + '
    ' - ), - data: shared_widget_data, - methods: shared_methods, -}); - -/* Function to create the actual Vue instances */ - -var shared_root_methods = { - open_link_in_frame: function (event) { - var url = event.target.attributes.href.value; - if (this.$root.additionalURLParams) { - if (url.indexOf('?')) { - url += '&' + this.$root.additionalURLParams; - } else { - url += '?' + this.$root.additionalURLParams; - } - } - if (this.$root.useIframe) { - event.preventDefault(); - if (url.indexOf('?')) { - url += '&iframe=1'; - } else { - url += '?iframe=1'; - } - this.$root.overlay.frame_src = url; - } else { - event.target.href = url; - return; - } - }, - trigger_load_callback: function () { - this.$nextTick(function () { - for (var i = 0; i < window.PretixWidget._loaded.length; i++) { - window.PretixWidget._loaded[i]() - } - }); - }, - trigger_close_callback: function () { - this.$nextTick(function () { - for (var i = 0; i < window.PretixWidget._closed.length; i++) { - window.PretixWidget._closed[i]() - } - }); - }, - reload: function (opt = {}) { - var url; - if (this.$root.is_button) { - return; - } - if (this.$root.subevent) { - url = this.$root.target_url + this.$root.subevent + '/widget/product_list?lang=' + lang; - } else { - url = this.$root.target_url + 'widget/product_list?lang=' + lang; - } - if (this.$root.offset) { - url += '&offset=' + this.$root.offset; - } - if (this.$root.filter) { - url += '&' + this.$root.filter; - } - if (this.$root.item_filter) { - url += '&items=' + encodeURIComponent(this.$root.item_filter); - } - if (this.$root.category_filter) { - url += '&categories=' + encodeURIComponent(this.$root.category_filter); - } - if (this.$root.variation_filter) { - url += '&variations=' + encodeURIComponent(this.$root.variation_filter); - } - var cart_id = getCookie(this.cookieName); - if (this.$root.voucher_code) { - url += '&voucher=' + encodeURIComponent(this.$root.voucher_code); - } - if (cart_id) { - url += "&cart_id=" + encodeURIComponent(cart_id); - } - if (this.$root.date !== null) { - url += "&date=" + this.$root.date.substr(0, 7); - } else if (this.$root.week !== null) { - url += "&date=" + this.$root.week[0] + "-W" + this.$root.week[1]; - } - if (this.$root.style !== null) { - url = url + '&style=' + encodeURIComponent(this.$root.style); - } - var root = this.$root; - api._getJSON(url, function (data, xhr) { - if (typeof xhr.responseURL !== "undefined") { - var new_url = xhr.responseURL.substr(0, xhr.responseURL.indexOf("/widget/product_list?") + 1); - var old_url = url.substr(0, url.indexOf("/widget/product_list?") + 1); - if (new_url !== old_url) { - if (root.subevent) { - new_url = new_url.substr(0, new_url.lastIndexOf("/", new_url.length - 1) + 1); - } - root.target_url = new_url; - root.reload(); - return; - } - } - root.connection_error = false; - if (data.weeks !== undefined) { - root.weeks = data.weeks; - root.date = data.date; - root.week = null; - root.events = undefined; - root.view = "weeks"; - root.name = data.name; - root.frontpage_text = data.frontpage_text; - root.meta_filter_fields = data.meta_filter_fields; - } else if (data.days !== undefined) { - root.days = data.days; - root.date = null; - root.week = data.week; - root.events = undefined; - root.view = "days"; - root.name = data.name; - root.frontpage_text = data.frontpage_text; - root.meta_filter_fields = data.meta_filter_fields; - } else if (data.events !== undefined) { - root.events = root.append_events && root.events ? root.events.concat(data.events) : data.events; - root.append_events = false; - root.weeks = undefined; - root.view = "events"; - root.name = data.name; - root.frontpage_text = data.frontpage_text; - root.has_more_events = data.has_more_events; - root.meta_filter_fields = data.meta_filter_fields; - } else { - root.view = "event"; - // Replace target_url and subevent with canonical values in case they were slightly wrong - root.target_url = data.target_url; - root.subevent = data.subevent; - // Event data - root.name = data.name; - root.frontpage_text = data.frontpage_text; - root.date_range = data.date_range; - root.location = data.location; - root.categories = data.items_by_category; - root.currency = data.currency; - root.display_net_prices = data.display_net_prices; - root.use_native_spinners = data.use_native_spinners; - root.voucher_explanation_text = data.voucher_explanation_text; - root.error = data.error; - root.display_add_to_cart = data.display_add_to_cart; - root.waiting_list_enabled = data.waiting_list_enabled; - root.show_variations_expanded = data.show_variations_expanded || !!root.variation_filter; - root.cart_id = cart_id; - root.cart_exists = data.cart_exists; - root.vouchers_exist = data.vouchers_exist; - root.has_seating_plan = data.has_seating_plan; - root.has_seating_plan_waitinglist = data.has_seating_plan_waitinglist; - root.itemnum = data.itemnum; - } - root.poweredby = data.poweredby; - if (root.loading > 0) { - root.loading--; - root.trigger_load_callback(); - } - if (root.parent_stack.length > 0 && root.has_seating_plan && root.categories.length === 0 && !root.frame_dismissed && root.useIframe && !root.error && !root.has_seating_plan_waitinglist) { - // If we're on desktop and someone selects a seating-only event in a calendar, let's open it right away, - // but only if the person didn't close it before. - root.startseating() - } else { - // make sure to only move focus to content element when it had focus before the reload/click - // this is needed because reload is also called on initial load and we do not want to move focus on initial load - if (root.$el.contains(document.activeElement)) { - root.$nextTick(function() { - // wait for redraw, then focus content element for better a11y - (opt.focus ? document.querySelector(opt.focus) : root.$el).focus(); - }); - } - } - }, function (error) { - root.categories = []; - root.currency = ''; - if (error.status === 429) { - root.error = strings['loading_error_429']; - root.connection_error = true; - } else { - root.error = strings['loading_error']; - root.connection_error = true; - } - if (root.loading > 0) { - root.loading--; - root.trigger_load_callback(); - } - }); - }, - startwaiting: function () { - var redirect_url = this.$root.target_url + 'w/' + widget_id + '/waitinglist/?iframe=1&locale=' + lang; - if (this.$root.subevent){ - redirect_url += '&subevent=' + this.$root.subevent; - } - if (this.$root.additionalURLParams) { - redirect_url += '&' + this.$root.additionalURLParams; - } - if (this.$root.useIframe) { - this.$root.overlay.frame_src = redirect_url; - } else { - window.open(redirect_url); - } - }, - startseating: function () { - var redirect_url = this.$root.target_url + 'w/' + widget_id; - if (this.$root.subevent){ - redirect_url += '/' + this.$root.subevent; - } - redirect_url += '/seatingframe/?iframe=1&locale=' + lang; - if (this.$root.voucher_code) { - redirect_url += '&voucher=' + encodeURIComponent(this.$root.voucher_code); - } - if (this.$root.cart_id) { - redirect_url += '&take_cart_id=' + this.$root.cart_id; - } - if (this.$root.widget_data) { - redirect_url += '&widget_data=' + encodeURIComponent(this.$root.widget_data_json); - } - if (this.$root.additionalURLParams) { - redirect_url += '&' + this.$root.additionalURLParams; - } - redirect_url += this.$root.consent_parameter; - if (this.$root.useIframe) { - this.$root.overlay.frame_src = redirect_url; - } else { - window.open(redirect_url); - } - }, - choose_event: function (event) { - this.$root.target_url = event.event_url; - this.$root.error = null; - this.$root.connection_error = false; - this.$root.subevent = event.subevent; - this.$root.loading++; - this.$root.reload(); - } -}; - -var shared_root_computed = { - cookieName: function () { - return "pretix_widget_" + this.target_url.replace(/[^a-zA-Z0-9]+/g, "_"); - }, - formTarget: function () { - var is_firefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1; - var is_android = navigator.userAgent.toLowerCase().indexOf("android") > -1; - if (is_android && is_firefox) { - // Opening a POST form in a new browser fails in Firefox. This is supposed to be fixed since FF 76 - // but for some reason, it is still the case in FF for Android. - // https://bugzilla.mozilla.org/show_bug.cgi?id=1629441 - // https://github.com/pretix/pretix/issues/1040 - return "_top"; - } else { - return "_blank"; - } - }, - voucherFormTarget: function () { - var form_target = this.target_url + 'w/' + widget_id + '/redeem?iframe=1&locale=' + lang; - var cookie = getCookie(this.cookieName); - if (cookie) { - form_target += "&take_cart_id=" + cookie; - } - if (this.subevent) { - form_target += "&subevent=" + this.subevent; - } - if (this.$root.widget_data) { - form_target += '&widget_data=' + encodeURIComponent(this.$root.widget_data_json); - } - form_target += this.$root.consent_parameter; - if (this.$root.additionalURLParams) { - form_target += '&' + this.$root.additionalURLParams; - } - return form_target; - }, - formMethod: function () { - if (!this.useIframe && this.is_button && this.items.length === 0) { - return 'get'; - } - return 'post'; - }, - formAction: function () { - if (!this.useIframe && this.is_button && this.items.length === 0) { - var target; - if (this.voucher_code) { - target = this.target_url + 'redeem'; - } else if (this.subevent) { - target = this.target_url + this.subevent + '/'; - } else { - target = this.target_url; - } - return target; - } - var checkout_url = "/" + this.target_url.replace(/^[^\/]+:\/\/([^\/]+)\//, "") + "w/" + widget_id + "/"; - if (!this.$root.cart_exists) { - checkout_url += "checkout/start"; - } - if (this.$root.additionalURLParams) { - checkout_url += '?' + this.$root.additionalURLParams; - } - var form_target = this.target_url + 'w/' + widget_id + '/cart/add?iframe=1&next=' + encodeURIComponent(checkout_url); - var cookie = getCookie(this.cookieName); - if (cookie) { - form_target += "&take_cart_id=" + cookie; - } - form_target += this.$root.consent_parameter - return form_target - }, - newTabTarget: function () { - var target = this.target_url; - if (this.subevent) { - target = this.target_url + this.subevent + '/'; - } - return target; - }, - useIframe: function () { - if (window.crossOriginIsolated === true) { - console.warn("pretix Widget cannot use iframe due to Cross-Origin-Embed-Policy") - return false; - } - return !this.disable_iframe && (this.skip_ssl || site_is_secure()); - }, - showPrices: function () { - var has_priced = false; - var cnt_items = 0; - for (var i = 0; i < this.categories.length; i++) { - for (var j = 0; j < this.categories[i].items.length; j++) { - var item = this.categories[i].items[j]; - if (item.has_variations) { - cnt_items += item.variations.length; - has_priced = true; - } else { - cnt_items++; - has_priced = has_priced || item.price.gross != "0.00" || item.free_price; - } - } - } - return has_priced || cnt_items > 1; - }, - consent_parameter_value: function () { - if (typeof this.widget_data["consent"] !== "undefined") { - return encodeURIComponent(this.widget_data["consent"]); - } - return ""; - }, - consent_parameter: function () { - if (typeof this.widget_data["consent"] !== "undefined") { - return "&consent=" + encodeURIComponent(this.widget_data["consent"]); - } - return ""; - }, - widget_data_json: function () { - var cloned_data = Object.assign({}, this.widget_data); - if (typeof cloned_data["consent"] !== "undefined") { - // Remove consent as we pass it differently. We still keep it as widget_data in the input to avoid breaking - // the JS API of the widget. - delete cloned_data["consent"]; - } - return JSON.stringify(cloned_data); - }, - additionalURLParams: function () { - if (!window.location.search.indexOf('utm_')) { - return ''; - } - var params = new URLSearchParams(window.location.search); - for (var [key, value] of params.entries()) { - if (!key.startsWith('utm_')) { - params.delete(key); - } - } - return params.toString(); - }, -}; - -var create_overlay = function (app) { - var elem = document.createElement('pretix-overlay'); - document.body.appendChild(elem); - - var framechild = new Vue({ - el: elem, - data: function () { - return { - parent: app, - frame_loading: false, - frame_shown: false, - error_url_after: null, - error_url_after_new_tab: true, - error_message: null, - lightbox: null, - prevActiveElement: null, - } - }, - props: { - frame_src: String, - }, - methods: { - }, - watch: { - frame_src: function (newValue, oldValue) { - // show loading spinner only when previously no frame_src was set - if (newValue && !oldValue) { - this.frame_loading = true; - } - // to close and unload the iframe, frame_src can be empty -> make it valid HTML with about:blank - this.$el.querySelector("iframe").src = newValue || "about:blank"; - }, - frame_shown: function (newValue) { - if (newValue) { - this.prevActiveElement = document.activeElement; - var btn = this.$el?.querySelector(".pretix-widget-frame-close a"); - this.$nextTick(function () { - btn?.focus(); - }); - } else { - this.prevActiveElement?.focus(); - } - }, - error_message: function (newValue) { - if (newValue) { - this.prevActiveElement = document.activeElement; - } else { - this.prevActiveElement?.focus(); - } - }, - } - }); - app.$root.overlay = framechild; -}; - -function get_ga_client_id(tracking_id) { - if (typeof ga === "undefined") { - return null; - } - try { - var trackers = ga.getAll(); - var i, len; - for (i = 0, len = trackers.length; i < len; i += 1) { - if (trackers[i].get('trackingId') === tracking_id) { - return trackers[i].get('clientId'); - } - } - } catch (e) { - } - return null; -} - -var create_widget = function (element, html_id=null) { - var target_url = element.attributes.event.value; - if (!target_url.match(/\/$/)) { - target_url += "/"; - } - var voucher = element.attributes.voucher ? element.attributes.voucher.value : null; - var subevent = element.attributes.subevent ? element.attributes.subevent.value : null; - var style = element.attributes["list-type"] ? element.attributes["list-type"].value : (element.attributes.style ? element.attributes.style.value : null); - var skip_ssl = element.attributes["skip-ssl-check"] ? true : false; - var disable_iframe = element.attributes["disable-iframe"] ? true : false; - var disable_vouchers = element.attributes["disable-vouchers"] ? true : false; - var disable_filters = element.attributes["disable-filters"] ? true : false; - var display_event_info = element.getAttribute("display-event-info"); // null means "auto" (as before), everything other than "false" is true - if (display_event_info !== null && display_event_info !== "auto") { - display_event_info = display_event_info !== "false"; - } else { - display_event_info = null; - } - var widget_data = JSON.parse(JSON.stringify(window.PretixWidget.widget_data)); - var filter = element.attributes.filter ? element.attributes.filter.value : null; - var items = element.attributes.items ? element.attributes.items.value : null; - var variations = element.attributes.variations ? element.attributes.variations.value : null; - var categories = element.attributes.categories ? element.attributes.categories.value : null; - var single_item_select = element.getAttribute("single-item-select") || "checkbox"; - for (var i = 0; i < element.attributes.length; i++) { - var attrib = element.attributes[i]; - if (attrib.name.match(/^data-.*$/)) { - widget_data[attrib.name.replace(/^data-/, '')] = attrib.value; - } - } - html_id = html_id || element.id || makeid(16); - - var observer = new MutationObserver((mutationList) => { - mutationList.forEach((mutation) => { - if (mutation.type == "attributes" && mutation.attributeName.startsWith("data-")) { - Vue.set(app.widget_data, mutation.attributeName.substring(5), mutation.target.getAttribute(mutation.attributeName)); - } - }); - }); - var observerOptions = { attributes: true }; - - if (element.tagName !== "pretix-widget") { - element.innerHTML = ""; - // we need to watch the container as well as the replaced root-node (see mounted()) - observer.observe(element, observerOptions); - } - - var app = new Vue({ - el: element, - data: function () { - return { - target_url: target_url, - parent_stack: [], - subevent: subevent, - is_button: false, - categories: null, - currency: null, - name: null, - date_range: null, - location: null, - offset: 0, - has_more_events: false, - append_events: false, - frontpage_text: null, - filter: filter, - item_filter: items, - category_filter: categories, - variation_filter: variations, - voucher_code: voucher, - display_net_prices: false, - use_native_spinners: false, - single_item_select: single_item_select, - voucher_explanation_text: null, - show_variations_expanded: !!variations, - skip_ssl: skip_ssl, - disable_iframe: disable_iframe, - style: style, - connection_error: false, - error: null, - weeks: null, - days: null, - date: null, - week: null, - frame_dismissed: false, - events: null, - view: null, - display_add_to_cart: false, - widget_data: widget_data, - loading: 1, - widget_id: 'pretix-widget-' + widget_id, - html_id: html_id, - vouchers_exist: false, - disable_vouchers: disable_vouchers, - disable_filters: disable_filters, - display_event_info: display_event_info, - cart_exists: false, - itemcount: 0, - overlay: null, - poweredby: "", - has_seating_plan: false, - has_seating_plan_waitinglist: false, - meta_filter_fields: [], - } - }, - created: function () { - this.reload(); - }, - mounted: function () { - observer.observe(this.$el, observerOptions); - }, - computed: shared_root_computed, - methods: shared_root_methods, - watch: { - 'view': function (newValue, oldValue) { - if (oldValue) { - // always make sure the widget is scrolled to the top - // as we only check top, we do not need to wait for a redraw - var rect = this.$el.getBoundingClientRect(); - if (rect.top < 0) { - this.$el.scrollIntoView(); - } - } - } - } - }); - create_overlay(app); - return app; -}; - -var create_button = function (element, html_id=null) { - var target_url = element.attributes.event.value; - if (!target_url.match(/\/$/)) { - target_url += "/"; - } - var voucher = element.attributes.voucher ? element.attributes.voucher.value : null; - var subevent = element.attributes.subevent ? element.attributes.subevent.value : null; - var raw_items = element.attributes.items ? element.attributes.items.value : ""; - var skip_ssl = element.attributes["skip-ssl-check"] ? true : false; - var disable_iframe = element.attributes["disable-iframe"] ? true : false; - var button_text = element.innerHTML; - var widget_data = JSON.parse(JSON.stringify(window.PretixWidget.widget_data)); - for (var i = 0; i < element.attributes.length; i++) { - var attrib = element.attributes[i]; - if (attrib.name.match(/^data-.*$/)) { - widget_data[attrib.name.replace(/^data-/, '')] = attrib.value; - } - } - html_id = html_id || element.id || makeid(16); - - var observer = new MutationObserver((mutationList) => { - mutationList.forEach((mutation) => { - if (mutation.type == "attributes" && mutation.attributeName.startsWith("data-")) { - Vue.set(app.widget_data, mutation.attributeName.substring(5), mutation.target.getAttribute(mutation.attributeName)); - } - }); - }); - var observerOptions = { attributes: true }; - - if (element.tagName !== "pretix-button") { - element.innerHTML = "" + element.innerHTML + ""; - // Vue does not replace the container, so watch container as well - observer.observe(element, observerOptions); - } - - var itemsplit = raw_items.split(","); - var items = []; - for (var i = 0; i < itemsplit.length; i++) { - if (itemsplit[i].indexOf("=") > 0 ) { - var splitthis = itemsplit[i].split("="); - items.push({'item': splitthis[0], 'count': splitthis[1]}) - } - } - - var app = new Vue({ - el: element, - data: function () { - return { - target_url: target_url, - subevent: subevent, - is_button: true, - skip_ssl: skip_ssl, - disable_iframe: disable_iframe, - voucher_code: voucher, - items: items, - error: null, - filter: null, - frame_dismissed: false, - widget_data: widget_data, - widget_id: 'pretix-widget-' + widget_id, - html_id: html_id, - button_text: button_text - } - }, - created: function () { - }, - mounted: function () { - observer.observe(this.$el, observerOptions); - }, - computed: shared_root_computed, - methods: shared_root_methods - }); - create_overlay(app); - return app; -}; - -/* Find all widgets on the page and render them */ -widgetlist = []; -buttonlist = []; -window.PretixWidget._loaded = []; -window.PretixWidget._closed = []; -window.PretixWidget.addLoadListener = function (f) { - window.PretixWidget._loaded.push(f); -} -window.PretixWidget.addCloseListener = function (f) { - window.PretixWidget._closed.push(f); -} -window.PretixWidget.buildWidgets = function () { - document.createElement("pretix-widget"); - document.createElement("pretix-button"); - docReady(function () { - var widgets = document.querySelectorAll("pretix-widget, div.pretix-widget-compat"); - var wlength = widgets.length; - for (var i = 0; i < wlength; i++) { - var widget = widgets[i]; - widgetlist.push(create_widget(widget, widget.id || "pretix-widget-"+i)); - } - - var buttons = document.querySelectorAll("pretix-button, div.pretix-button-compat"); - var blength = buttons.length; - for (var i = 0; i < blength; i++) { - var button = buttons[i]; - buttonlist.push(create_button(button, button.id || "pretix-button-"+i)); - } - }); -}; - -window.PretixWidget.open = function (target_url, voucher, subevent, items, widget_data, skip_ssl_check, disable_iframe) { - if (!target_url.match(/\/$/)) { - target_url += "/"; - } - - var all_widget_data = JSON.parse(JSON.stringify(window.PretixWidget.widget_data)); - if (widget_data) { - Object.keys(widget_data).forEach(function(key) { all_widget_data[key] = widget_data[key]; }); - } - var root = document.createElement("div"); - document.body.appendChild(root); - root.classList.add("pretix-widget-hidden"); - root.innerHTML = ""; - var app = new Vue({ - el: root, - data: function () { - return { - target_url: target_url, - subevent: subevent || null, - is_button: true, - skip_ssl: skip_ssl_check || false, - disable_iframe: disable_iframe || false, - voucher_code: voucher || null, - items: items || [], - error: null, - filter: null, - frame_dismissed: false, - widget_data: all_widget_data, - widget_id: 'pretix-widget-' + widget_id, - button_text: "" - } - }, - created: function () { - }, - computed: shared_root_computed, - methods: shared_root_methods - }); - create_overlay(app); - app.$nextTick(function () { - if (this.$root.useIframe) { - this.$refs.btn.buy(); - } else { - this.$refs.btn.$refs.form.submit(); - } - }) -}; - -if (typeof window.pretixWidgetCallback !== "undefined") { - window.pretixWidgetCallback(); -} -if (window.PretixWidget.build_widgets) { - window.PretixWidget.buildWidgets(); -} - -/* Set a global variable for debugging. In DEBUG mode, siteglobals will be window, otherwise it will be something - unnamed. */ -siteglobals.pretixwidget_debug = { - 'Vue': Vue, - 'widgets': widgetlist, - 'buttons': buttonlist -}; diff --git a/src/pretix/static/pretixpresale/scss/widget.v1.scss b/src/pretix/static/pretixpresale/scss/widget.v1.scss deleted file mode 100644 index 900b153691..0000000000 --- a/src/pretix/static/pretixpresale/scss/widget.v1.scss +++ /dev/null @@ -1,1088 +0,0 @@ -// not included, will be dynamically prepended @import "../../pretixbase/scss/_theme_variables.scss"; -@import "../../pretixbase/scss/_bootstrap_vars.scss"; -@import "../../bootstrap/scss/bootstrap/variables"; -@import "../../bootstrap/scss/bootstrap/mixins"; - -.pretix-widget-hidden { - display: none; -} -.pretix-widget, .pretix-widget-alert-box { - a { - color: $link-color; - text-decoration: none; - - &:hover, - &:focus { - color: $link-hover-color; - text-decoration: $link-hover-decoration; - } - &:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; - } - } - img { - border: 0; - } - b, strong { - font-weight: bold; - } - h3 { - font-size: $font-size-h3; - font-weight: bold; - padding: 0 15px; - } - button, input[type="button"], a.pretix-widget-button { - overflow: visible; - text-transform: none; - cursor: pointer; - display: inline-block; - margin-bottom: 0; - text-align: center; - vertical-align: middle; - touch-action: manipulation; - background-image: none; - border: 1px solid transparent; - white-space: nowrap; - text-decoration: none; - @include button-size($padding-base-vertical, $padding-base-horizontal, $font-size-base, $line-height-base, $btn-border-radius-base); - @include user-select(none); - @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border, $btn-primary-background-active, $btn-primary-border-active, $btn-primary-border-hover); - - &, - &:active, - &.active { - &:focus, - &.focus { - text-decoration: none; - @include tab-focus; - } - } - &.disabled, - &[disabled], - fieldset[disabled] & { - cursor: $cursor-disabled; - @include opacity(.65); - @include box-shadow(none); - } - &.pretix-widget-btn-default { - @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border, darken($btn-default-bg, 10%), darken($btn-default-border, 25%), darken($btn-default-border, 12%)); - } - } - label.pretix-widget-btn-checkbox { - @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border, darken($btn-default-bg, 10%), darken($btn-default-border, 25%), darken($btn-default-border, 12%)); - border-width: 1px; - border-style: solid; - position: relative; - cursor: pointer; - padding: 6px 24px; - min-height: 32px; - box-sizing: border-box; - color: #333; - input { - position: absolute; - left: 10px; - } - &:has(input:checked) { - background-color: #e6e6e6; - border-color: #adadad; - } - } - .pretix-widget-icon-cart { - display: inline-block; - width: 1em; - height: 1em; - vertical-align: text-bottom; - fill: #333; - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M2.267 6.756c0-.312-.202-.563-.453-.563-.252 0-.454.251-.454.563 0 .312.202.563.454.563.251 0 .453-.251.453-.563Zm3.174 0c0-.312-.202-.563-.454-.563-.251 0-.453.251-.453.563 0 .312.202.563.453.563.252 0 .454-.251.454-.563Zm.453-4.785c0-.154-.103-.282-.227-.282H1.413c-.035-.211-.039-.563-.28-.563H.227c-.124 0-.227.128-.227.282 0 .153.103.281.227.281h.722l.627 3.62c-.049.127-.216.466-.216.603 0 .153.103.281.227.281h3.627c.124 0 .227-.128.227-.281 0-.154-.103-.282-.227-.282H1.955c.036-.088.085-.18.085-.281 0-.102-.032-.212-.046-.308l3.698-.537c.117-.018.202-.141.202-.281V1.971Z' transform='matrix(2.52069 0 0 2.02994 -.035 -.523)'/%3E%3C/svg%3E%0A"); - } - input:checked + .pretix-widget-icon-cart { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4.534 3.097a.317.317 0 0 1-.067.197L3.56 4.42a.207.207 0 0 1-.16.084.207.207 0 0 1-.159-.084l-.907-1.126a.317.317 0 0 1-.067-.197c0-.154.103-.282.227-.282.06 0 .117.031.159.084l.521.642V2.252c0-.154.102-.281.226-.281.124 0 .227.127.227.281v1.289l.521-.642a.205.205 0 0 1 .159-.084c.124 0 .227.128.227.282ZM2.267 6.756c0-.312-.202-.563-.453-.563-.252 0-.454.251-.454.563 0 .312.202.563.454.563.251 0 .453-.251.453-.563Zm3.174 0c0-.312-.202-.563-.454-.563-.251 0-.453.251-.453.563 0 .312.202.563.453.563.252 0 .454-.251.454-.563Zm.453-4.785c0-.154-.103-.282-.227-.282H1.413c-.035-.211-.039-.563-.28-.563H.227c-.124 0-.227.128-.227.282 0 .153.103.281.227.281h.722l.627 3.62c-.049.127-.216.466-.216.603 0 .153.103.281.227.281h3.627c.124 0 .227-.128.227-.281 0-.154-.103-.282-.227-.282H1.955c.036-.088.085-.18.085-.281 0-.102-.032-.212-.046-.308l3.698-.537c.117-.018.202-.141.202-.281V1.971Z' transform='matrix(2.52069 0 0 2.02994 -.035 -.523)'/%3E%3C/svg%3E%0A"); - } - input[type="text"], input[type="number"], select { - line-height: normal; - border: 1px solid $input-border; - border-radius: $input-border-radius; - height: $input-height-base; - padding: $padding-base-vertical $padding-base-horizontal; - color: $input-color; - background-color: $input-bg; - @include box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075)); - @include transition(border-color ease-in-out .15s, box-shadow ease-in-out .15s); - @include placeholder; - $color-rgba: rgba(red($input-border-focus), green($input-border-focus), blue($input-border-focus), .6); - - &:focus { - border-color: $input-border-focus; - outline: 0; - @include box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px $color-rgba); - } - } - input[type=number] { - padding-right: 0; // Setting the padding-right to zero, as some versions Firefox render the arrow-buttons on number inputs useless. - } - input[type="checkbox"], - input[type="radio"] { - box-sizing: border-box; // 1 - padding: 0; // 2 - &:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; - } - } -} -.pretix-widget-use-custom-spinners input[type=number] { - padding-right: $padding-base-horizontal; - -moz-appearance: textfield; -} -.pretix-widget-use-custom-spinners input[type=number]::-webkit-outer-spin-button, -.pretix-widget-use-custom-spinners input[type=number]::-webkit-inner-spin-button { - -webkit-appearance: none; - margin: 0; -} -.pretix-widget { - margin: 10px 0; - padding: 0 10px; - border: 1px solid #ccc; - position: relative; - min-height: 208px; - border-radius: $input-border-radius; - - .pretix-widget-resume-button { - float: right; - margin-left: 10px; - } - - .pretix-widget-clickable { - cursor: pointer; - } - - .pretix-widget-info-message { - padding: 10px; - text-align: left; - margin: 10px 0; - background-color: white; - border: 2px solid $brand-info; - color: $state-info-text; - border-radius: $alert-border-radius; - } - - .pretix-widget-error-message { - padding: 10px; - text-align: center; - margin: 10px 0; - background-color: white; - border: 2px solid $brand-danger; - color: $state-danger-text; - border-radius: $alert-border-radius; - } - - .pretix-widget-error-action { - padding: 10px; - text-align: center; - } - - .pretix-widget-loading { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - background: rgba(255, 255, 255, .8); - text-align: center; - } - - @-moz-keyframes pretix-widget-spin { - 100% { - -moz-transform: rotate(360deg); - } - } - - @-webkit-keyframes pretix-widget-spin { - 100% { - -webkit-transform: rotate(360deg); - } - } - - @keyframes pretix-widget-spin { - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } - } - - .pretix-widget-loading svg { - margin: 40px; - /*Fallback*/ - position: absolute; - top: 50%; - margin-top: -64px; - /*Sticky*/ - position: -webkit-sticky; - position: sticky; - top: Min(50vh, 50%);/* use uppercase M to use CSS-min and not SASS-min*/ - - -webkit-animation: pretix-widget-spin 6s linear infinite; - -moz-animation: pretix-widget-spin 6s linear infinite; - animation: pretix-widget-spin 6s linear infinite; - } - - .pretix-widget-item-row, .pretix-widget-category { - clear: both; - } - - .pretix-widget-item-title { - font-weight: bold; - } - - .pretix-widget-item-row { - padding: 10px 0; - } - - .pretix-widget-category { - margin: 10px 0; - } - - .pretix-widget-category-description { - padding: 0 15px; - } - - .pretix-widget-category-name { - margin: 10px 0 0 0; - } - - .pretix-widget-item-info-col { - width: 50%; - float: left; - padding: 0 15px; - box-sizing: border-box; - } - - .pretix-widget-item-price-col, .pretix-widget-item-availability-col { - width: 25%; - float: left; - padding: 0 15px; - box-sizing: border-box; - } - - .pretix-widget-item-description p, .pretix-widget-item-meta { - margin: 0; - } - - .pretix-widget-item-price-col { - text-align: right; - } - - del.pretix-widget-pricebox-original-price { - color: $text-muted; - } - - ins.pretix-widget-pricebox-new-price { - font-size: 120%; - font-weight: bold; - text-decoration: none; - } - - .pretix-widget-clear { - clear: both; - } - - .pretix-widget-category-description p { - margin: 0 0 10px; - } - - .pretix-widget-pricebox-tax { - display: block; - } - - .pretix-widget-item-count-group { - display: flex; - } - - .pretix-widget-item-count-group input { - border-radius: 0; - border-left: none; - border-right: none; - } - - .pretix-widget-item-count-group button span { - vertical-align: 25%; - line-height: 0.5; - } - - .pretix-widget-item-count-dec { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - width: 2.5em; - z-index: 2; - } - - .pretix-widget-item-count-inc { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - width: 2.5em; - } - - .pretix-widget-item-count-multiple { - display: block; - width: 100%; - box-sizing: border-box; - padding: 5px; - text-align: center; - } - - .pretix-widget-pricebox-price-input { - display: inline; - width: 100px; - box-sizing: border-box; - text-align: right; - } - - .pretix-widget-item-count-single-label { - display: block; - text-align: center; - width: 100%; - } - - .pretix-widget-attribution { - padding: 10px 15px; - text-align: center; - font-size: 12px; - } - - .pretix-widget-item-picture { - width: 60px; - height: 60px; - margin-right: 10px; - float: left; - } - - .pretix-widget-action { - margin-left: 75%; - width: 25%; - padding: 0 15px; - box-sizing: border-box; - } - - .pretix-widget-action button { - width: 100%; - } - - .pretix-widget-voucher-text { - margin: 10px 0; - padding: 0 15px; - } - - .pretix-widget-voucher-headline { - margin: 10px 0 0 0; - } - - .pretix-widget-voucher-input-wrap { - padding: 0 15px; - width: 75%; - box-sizing: border-box; - float: left; - } - - .pretix-widget-voucher input { - width: 100%; - box-sizing: border-box; - } - - .pretix-widget-voucher-button-wrap { - padding: 0 15px; - width: 25%; - box-sizing: border-box; - float: left; - } - - .pretix-widget-voucher button { - width: 100%; - } - - .pretix-widget-seating-waitinglist { - margin: 15px 0; - } - - .pretix-widget-seating-waitinglist-text { - padding: 0 15px; - width: 75%; - box-sizing: border-box; - float: left; - } - - .pretix-widget-seating-waitinglist-button-wrap { - padding: 0 15px; - width: 25%; - box-sizing: border-box; - float: left; - } - - .pretix-widget-seating-waitinglist-button { - width: 100%; - } - - .pretix-widget-item-with-picture .pretix-widget-main-item-row .pretix-widget-item-title-and-description { - margin-left: 70px; - } - - .pretix-widget-item-availability-col { - text-align: center; - - .pretix-widget-collapse-indicator::before { - content: ""; - display: inline-block; - width: $font-size-base; - height: $font-size-base; - background: url("data:image/svg+xml,%3Csvg viewBox='0 0 14 14' xmlns='http://www.w3.org/2000/svg' xml:space='preserve'%3E%3Cpath fill='#{url-friendly-colour($link-color)}' d='M6.395 4.151a.268.268 0 0 0-.177.077l-.386.386a.259.259 0 0 0-.077.177c.002.067.029.13.077.179l3.033 3.031-3.033 3.032a.255.255 0 0 0-.077.177.253.253 0 0 0 .077.178l.386.385a.268.268 0 0 0 .177.077.27.27 0 0 0 .178-.077l3.595-3.595a.259.259 0 0 0 .077-.177.255.255 0 0 0-.077-.176L6.573 4.228a.257.257 0 0 0-.178-.077Z'/%3E%3C/svg%3E"); - transition: transform .5s; - } - - .pretix-widget-collapse-indicator[aria-expanded=true]::before { - transform: rotate(90deg); - } - } - - .pretix-widget-availability-gone { - font-weight: bold; - color: $brand-danger; - text-transform: uppercase; - } - - .pretix-widget-availability-unavailable { - color: $brand-danger; - } - - .pretix-widget-item-variations { - overflow: hidden; - padding-top: 0; - padding-bottom: 0; - margin-top: 0; - margin-bottom: 0; - -moz-transition-duration: 0.5s; - -webkit-transition-duration: 0.5s; - -o-transition-duration: 0.5s; - transition-duration: 0.5s; - -moz-transition-timing-function: ease-in-out; - -webkit-transition-timing-function: ease-in-out; - -o-transition-timing-function: ease-in-out; - transition-timing-function: ease-in-out; - } - .pretix-widget-event-header { - padding-top: 10px; - text-align: center; - } - .pretix-widget-event-details { - padding-top: 10px; - text-align: center; - } - .pretix-widget-event-location { - display: none; - padding-top: 10px; - text-align: center; - } - .pretix-widget-event-description { - padding: 0 15px; - } - .pretix-widget-event-list-back { - padding-top: 10px; - text-align: center; - display: block; - a { - display: block; - } - } - .pretix-widget-back { - padding-bottom: 10px; - text-align: center; - display: block; - a { - display: block; - } - } - - .pretix-widget-event-list { - padding: 10px 0; - cursor: pointer; - } - .pretix-widget-event-list-entry { - display: flex; - flex-direction: row; - padding: 5px 0; - flex-wrap: wrap; - color: $text-color; - - &:hover, &:active, &:focus { - background: $gray-lighter; - text-decoration: none; - } - - .pretix-widget-event-list-entry-name { - width: 50%; - padding: 5px; - box-sizing: border-box; - } - .pretix-widget-event-list-entry-location { - padding: 5px; - box-sizing: border-box; - display: none; - } - .pretix-widget-event-list-entry-date { - width: 25%; - padding: 5px; - box-sizing: border-box; - } - .pretix-widget-event-list-entry-availability { - width: 25%; - text-align: right; - padding: 7px 5px 3px; - box-sizing: border-box; - span { - display: inline; - padding: 2px 6px 3px; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: 4px; - } - } - } - - .pretix-widget-event-availability-orange .pretix-widget-event-list-entry-availability span, - .pretix-widget-event-availability-orange.pretix-widget-event-calendar-event { - background-color: $brand-warning; - } - .pretix-widget-event-availability-none .pretix-widget-event-list-entry-availability span, - .pretix-widget-event-availability-none.pretix-widget-event-calendar-event { - background-color: $brand-primary; - } - .pretix-widget-event-availability-green .pretix-widget-event-list-entry-availability span, - .pretix-widget-event-availability-green.pretix-widget-event-calendar-event { - background-color: $brand-success; - } - .pretix-widget-event-availability-red .pretix-widget-event-list-entry-availability span, - .pretix-widget-event-availability-red.pretix-widget-event-calendar-event { - background-color: $brand-danger; - } - .pretix-widget-event-availability-low .pretix-widget-event-list-entry-availability span { - border-left: 10px solid $brand-warning; - } - .pretix-widget-event-availability-low.pretix-widget-event-calendar-event { - border-right: 10px solid $brand-warning; - } - - .pretix-widget-event-calendar { - padding-top: 10px; - word-break: break-word; - - .pretix-widget-event-week-table { - display: flex; - flex-direction: row; - - .pretix-widget-event-week-col { - flex: 1; - margin: 0 5px; - - &:first-child { - margin-left: 0; - } - &:last-child { - margin-right: 0; - } - } - } - - .pretix-widget-event-calendar-head { - display: flex; - flex-direction: row; - - strong { - width: 50%; - text-align: center; - display: block; - } - .pretix-widget-event-calendar-next-month, .pretix-widget-event-calendar-previous-month { - display: block; - width: 25%; - } - .pretix-widget-event-calendar-next-month { - text-align: right; - } - } - .pretix-widget-event-calendar-event { - display: block; - border-radius: 4px; - padding: 5px; - color: white; - cursor: pointer; - margin-bottom: 5px; - &:last-child { - margin-bottom: 0; - } - &:hover { - text-decoration: none; - } - } - - .pretix-widget-event-calendar-table { - width: 100%; - - th, td { - width: 14.285714285714286%; - vertical-align: top; - padding: 10px 5px; - } - } - .pretix-widget-event-calendar-day { - font-weight: bold; - } - } - - .pretix-widget-seating-link-wrapper { - padding: 0 15px; - margin: 15px 0 10px; - } - .pretix-widget-seating-link { - display: block; - width: 100%; - } -} - - -.pretix-widget-event-list-filter-form { - display: flex; - flex-direction: row; - align-items: end; - margin-bottom: 15px; - - .pretix-widget-event-list-filter-field { - display: block; - width: 100%; - margin: 0 15px 0 0; - - label { - display: inline-block; - font-weight: bold; - margin-bottom: 5px; - } - - select { - display: block; - width: 100%; - } - } - .pretix-widget-event-list-filter-field:last-child { - margin: 0; - } -} -.pretix-widget.pretix-widget-mobile .pretix-widget-event-list-filter-form { - display: block; - - .pretix-widget-event-list-filter-field { - display: block; - margin: 0 0 5px; - } -} - -@keyframes pretix-widget-bounce-in { - 0% { - transform: scale(0); - } - 50% { - transform: scale(1.5); - } - 100% { - transform: scale(1); - } -} -.pretix-widget-alert-holder { - position: fixed; - left: 0; - top: 0; - width: 100%; - height: 100%; - background: rgba(255, 255, 255, 0.8); - z-index: 16777271; - visibility: hidden; - opacity: 0; - transition: opacity 0.5s; /* do not animate visibility or we'll have a flashing thing on load */ - - &.pretix-widget-alert-shown { - visibility: visible; - opacity: 1; - transition: opacity 0.5s, visibility 0.5s; - } - - .bounce-enter-active { - animation: pretix-widget-bounce-in .5s; - } - .bounce-leave-active { - animation: pretix-widget-bounce-in .5s reverse; - } - - .pretix-widget-alert-box { - position: fixed; - left: 50%; - width: 600px; - margin-left: -300px; - top: 100px; - background: white; - border-radius: 5px 5px 5px 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - box-shadow: 0 4px 18px 0 rgba(0, 0, 0, 0.1), 0 6px 20px 0 rgba(0, 0, 0, 0.09); - -webkit-box-shadow: 0 4px 18px 0 rgba(0, 0, 0, 0.1), 0 6px 20px 0 rgba(0, 0, 0, 0.09); - -moz-box-shadow: 0 4px 18px 0 rgba(0, 0, 0, 0.1), 0 6px 20px 0 rgba(0, 0, 0, 0.09); - box-sizing: border-box; - padding: 42px 20px 20px 20px; - text-align: center; - font-size: 20px; - - p:first-child { - margin-top: 0; - } - p:last-child { - margin-bottom: 0; - } - } - .pretix-widget-alert-icon { - position: fixed; - left: 50%; - width: 64px; - margin-left: -32px; - top: 68px; - } -} -.pretix-widget-frame-holder { - position: fixed; - left: 0; - top: 0; - width: 100%; - height: 100%; - background: rgba(255, 255, 255, 0.8); - z-index: 16777271; - visibility: hidden; - opacity: 0; - transition: opacity 0.5s, visibility 0.5s; - - .pretix-widget-frame-loading { - text-align: center; - display: flex; - align-items: center; - justify-content: center; - height: 100%; - width: 100%; - position: fixed; - left: 0; - top: 0; - } - - .pretix-widget-frame-loading svg { - margin: 40px; - -webkit-animation: pretix-widget-spin 6s linear infinite; - -moz-animation: pretix-widget-spin 6s linear infinite; - animation: pretix-widget-spin 6s linear infinite; - } - - &.pretix-widget-frame-shown { - visibility: visible; - opacity: 1; - transition: opacity 0.5s, visibility 0.5s; - } - - .pretix-widget-frame-inner { - position: fixed; - left: 10%; - width: 80%; - height: 80%; - top: 10%; - background: white; - border-radius: 5px 5px 5px 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - box-shadow: 0 4px 18px 0 rgba(0, 0, 0, 0.1), 0 6px 20px 0 rgba(0, 0, 0, 0.09); - -webkit-box-shadow: 0 4px 18px 0 rgba(0, 0, 0, 0.1), 0 6px 20px 0 rgba(0, 0, 0, 0.09); - -moz-box-shadow: 0 4px 18px 0 rgba(0, 0, 0, 0.1), 0 6px 20px 0 rgba(0, 0, 0, 0.09); - box-sizing: border-box; - padding: 10px; - } - - .pretix-widget-frame-close { - position: fixed; - right: 10%; - top: 10%; - width: 24px; - height: 24px; - background: $brand-primary; - margin: -12px -12px 0 0; - border-radius: 12px; - -moz-border-radius: 12px; - -webkit-border-radius: 12px; - text-align: center; - } - - .pretix-widget-frame-close a { - color: white; - font-weight: bold; - font-family: sans-serif; - text-decoration: none; - padding: 4px 0; - display: inline-block; - line-height: 16px; - } - - .pretix-widget-frame-close svg { - display: inline-block; - border: none; - } - - .pretix-widget-frame-inner iframe { - width: 100% !important; - height: 100% !important; - } -} - -.pretix-widget-lightbox-holder { - position: fixed; - left: 0; - top: 0; - width: 100%; - height: 100%; - background: rgba(255, 255, 255, 0.8); - z-index: 16777271; - visibility: hidden; - opacity: 0; - transition: opacity 0.5s, visibility 0.5s; - display: flex; - align-items: center; - justify-content: center; - - .pretix-widget-lightbox-loading svg { - margin: 40px; - -webkit-animation: pretix-widget-spin 6s linear infinite; - -moz-animation: pretix-widget-spin 6s linear infinite; - animation: pretix-widget-spin 6s linear infinite; - } - - &.pretix-widget-lightbox-shown { - visibility: visible; - opacity: 1; - transition: opacity 0.5s, visibility 0.5s; - } - - .pretix-widget-lightbox-inner { - position: relative; - background: white; - border-radius: 5px 5px 5px 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - box-shadow: 0 4px 18px 0 rgba(0, 0, 0, 0.1), 0 6px 20px 0 rgba(0, 0, 0, 0.09); - -webkit-box-shadow: 0 4px 18px 0 rgba(0, 0, 0, 0.1), 0 6px 20px 0 rgba(0, 0, 0, 0.09); - -moz-box-shadow: 0 4px 18px 0 rgba(0, 0, 0, 0.1), 0 6px 20px 0 rgba(0, 0, 0, 0.09); - box-sizing: border-box; - padding: 10px; - max-width: 90%; - max-height: 90%; - } - &.pretix-widget-lightbox-isloading .pretix-widget-lightbox-inner { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0,0,0,0); - border: 0; - } - - .pretix-widget-lightbox-image { - margin: 0; - padding: 0; - text-align: center; - } - .pretix-widget-lightbox-image img { - max-width: 80vw; - max-height: 80vh; - object-fit: scale-down; - } - .pretix-widget-lightbox-image figcaption { - margin: 0.5em 0 0; - } - - .pretix-widget-lightbox-close { - position: absolute; - right: -12px; - top: -12px; - width: 24px; - height: 24px; - background: $brand-primary; - margin: 0; - border: none; - border-radius: 12px; - -moz-border-radius: 12px; - -webkit-border-radius: 12px; - text-align: center; - color: white; - font-weight: bold; - font-family: sans-serif; - text-decoration: none; - padding: 4px 0; - display: inline-block; - line-height: 16px; - cursor: pointer; - } - - .pretix-widget-lightbox-close svg { - display: inline-block; - border: none; - } -} - -.pretix-widget-primary-color { - /* in SVG */ - fill: $brand-primary; -} - -.pretix-widget-event-list-load-more { - text-align: center; -} - -.pretix-widget.pretix-widget-mobile { - .pretix-widget-event-week-table { - display: block; - - .pretix-widget-event-week-col { - flex: 1; - margin: 10px 0; - } - } - - .pretix-widget-item-info-col { - width: 100%; - float: none; - margin-bottom: 5px; - } - .pretix-widget-item-info-col:after { - display: block; - content: ""; - clear: both; - } - .pretix-widget-item-price-col, .pretix-widget-item-availability-col { - width: 50%; - min-width: 140px; - } - .pretix-widget-action { - width: 100%; - margin-left: 0; - } - .pretix-widget-voucher-input-wrap { - width: 100%; - float: none; - } - .pretix-widget-voucher-button-wrap { - width: 100%; - float: none; - margin-top: 10px; - } - - .pretix-widget-event-list-entry { - .pretix-widget-event-list-entry-name { - width: 100%; - } - .pretix-widget-event-list-entry-location { - width: 100%; - } - .pretix-widget-event-list-entry-date { - width: 50%; - } - .pretix-widget-event-list-entry-availability { - width: 50%; - } - } - - .pretix-widget-event-calendar { - .pretix-widget-event-calendar-events { - display: none; - } - .pretix-widget-event-week-table { - .pretix-widget-event-calendar-events { - display: block; - } - } - td.pretix-widget-has-events { - background: $brand-primary; - color: white; - cursor: pointer; - &.pretix-widget-day-availability-red { - background: $brand-danger; - } - &.pretix-widget-day-availability-green { - background: $brand-success; - } - &.pretix-widget-day-availability-low { - border-right: 5px solid $brand-warning; - } - &.pretix-widget-day-availability-orange { - background: $brand-warning; - } - } - - .pretix-widget-event-calendar-head { - display: block; - strong { - width: 100%; - display: block; - } - .pretix-widget-event-calendar-next-month, .pretix-widget-event-calendar-previous-month { - display: block; - width: 100%; - text-align: center; - } - } - } -} - -@media (min-width: 1200px) { - .pretix-widget-frame-holder { - .pretix-widget-frame-inner { - left: 50%; - margin-left: -540px; - width: 1080px; - } - .pretix-widget-frame-close { - left: 50%; - margin-left: 528px; - } - } -} - -@media (max-width: 800px) { - .pretix-widget-frame-holder .pretix-widget-frame-inner { - left: 0; - width: 100%; - height: 100%; - top: 0; - background: $brand-primary; - border-radius: 0; - -moz-border-radius: 0; - -webkit-border-radius: 0; - box-shadow: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - padding: 40px 0 0 0; - } - .pretix-widget-frame-holder .pretix-widget-frame-close { - right: 20px; - top: 20px; - background: white; - svg path { - fill: $brand-primary; - } - } -} diff --git a/src/tests/presale/test_widget.py b/src/tests/presale/test_widget.py index ac606dacca..a11b3c9099 100644 --- a/src/tests/presale/test_widget.py +++ b/src/tests/presale/test_widget.py @@ -542,7 +542,7 @@ class WidgetCartTest(CartTestMixin, TestCase): @override_settings(COMPRESS_PRECOMPILERS=settings.COMPRESS_PRECOMPILERS_ORIGINAL) def test_css_customized(self): - response = self.client.get('/%s/%s/widget/v1.css' % (self.orga.slug, self.event.slug)) + response = self.client.get('/%s/%s/widget/v2.css' % (self.orga.slug, self.event.slug)) c = b"".join(response.streaming_content).decode() assert '#8E44B3' in c assert '#33c33c' not in c @@ -550,7 +550,7 @@ class WidgetCartTest(CartTestMixin, TestCase): self.orga.settings.primary_color = "#33c33c" self.orga.cache.clear() - response = self.client.get('/%s/%s/widget/v1.css' % (self.orga.slug, self.event.slug)) + response = self.client.get('/%s/%s/widget/v2.css' % (self.orga.slug, self.event.slug)) c = b"".join(response.streaming_content).decode() assert '#8E44B3' not in c assert '#33c33c' in c @@ -558,18 +558,18 @@ class WidgetCartTest(CartTestMixin, TestCase): self.event.settings.primary_color = "#34c34c" self.event.cache.clear() - response = self.client.get('/%s/%s/widget/v1.css' % (self.orga.slug, self.event.slug)) + response = self.client.get('/%s/%s/widget/v2.css' % (self.orga.slug, self.event.slug)) c = b"".join(response.streaming_content).decode() assert '#8E44B3' not in c assert '#33c33c' not in c assert '#34c34c' in c def test_js_localized(self): - response = self.client.get('/widget/v1.en.js') + response = self.client.get('/widget/v2.en.js') c = response.content.decode() assert '%m/%d/%Y' in c assert '%d.%m.%Y' not in c - response = self.client.get('/widget/v1.de.js') + response = self.client.get('/widget/v2.de.js') c = response.content.decode() assert '%m/%d/%Y' not in c assert '%d.%m.%Y' in c From 545625b732f715df7493ecaab6fba8bf4f9ac870 Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Wed, 25 Jun 2025 11:24:11 +0200 Subject: [PATCH 92/98] Fix failing flake8 --- src/pretix/presale/views/widget.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/pretix/presale/views/widget.py b/src/pretix/presale/views/widget.py index f99e83527b..6af9de72e5 100644 --- a/src/pretix/presale/views/widget.py +++ b/src/pretix/presale/views/widget.py @@ -38,10 +38,8 @@ from django.core.files.base import ContentFile, File from django.core.files.storage import default_storage from django.db.models import Q from django.http import FileResponse, Http404, HttpResponse, JsonResponse -from django.shortcuts import redirect from django.template import Context, Engine from django.template.loader import get_template -from django.urls import reverse from django.utils.formats import date_format from django.utils.timezone import now from django.utils.translation import get_language, gettext, pgettext From e796dc3a6552a651f7c9adf9cb10e87f3b6d0b17 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Wed, 25 Jun 2025 16:46:52 +0200 Subject: [PATCH 93/98] Webhooks: Fix typo in retry interval --- src/pretix/api/webhooks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pretix/api/webhooks.py b/src/pretix/api/webhooks.py index dc75668895..927f0f8857 100644 --- a/src/pretix/api/webhooks.py +++ b/src/pretix/api/webhooks.py @@ -476,7 +476,7 @@ def send_webhook(self, logentry_id: int, action_type: str, webhook_id: int, retr 300, # + 5 minutes 1200, # + 20 minutes 3600, # + 60 minutes - 1440, # + 4 hours + 14400, # + 4 hours 21600, # + 6 hours 43200, # + 12 hours 43200, # + 24 hours From 436960ff76dc0fb8370b03a155cdc52f44e51ea0 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 26 Jun 2025 11:11:13 +0200 Subject: [PATCH 94/98] Update po files [CI skip] Signed-off-by: Raphael Michel --- src/pretix/locale/ang/LC_MESSAGES/django.po | 1726 ++++++------- src/pretix/locale/ang/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/ar/LC_MESSAGES/django.po | 1768 +++++++------- src/pretix/locale/ar/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/az/LC_MESSAGES/django.po | 1726 ++++++------- src/pretix/locale/az/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/ca/LC_MESSAGES/django.po | 1773 +++++++------- src/pretix/locale/ca/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/cs/LC_MESSAGES/django.po | 1765 +++++++------- src/pretix/locale/cs/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/cy/LC_MESSAGES/django.po | 1731 ++++++------- src/pretix/locale/cy/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/da/LC_MESSAGES/django.po | 1765 +++++++------- src/pretix/locale/da/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/de/LC_MESSAGES/django.po | 1795 +++++++------- src/pretix/locale/de/LC_MESSAGES/djangojs.po | 120 +- .../locale/de_Informal/LC_MESSAGES/django.po | 1795 +++++++------- .../de_Informal/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/django.pot | 1726 ++++++------- src/pretix/locale/djangojs.pot | 120 +- src/pretix/locale/el/LC_MESSAGES/django.po | 1799 +++++++------- src/pretix/locale/el/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/enm/LC_MESSAGES/django.po | 1726 ++++++------- src/pretix/locale/enm/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/es/LC_MESSAGES/django.po | 1798 +++++++------- src/pretix/locale/es/LC_MESSAGES/djangojs.po | 124 +- src/pretix/locale/et/LC_MESSAGES/django.po | 1726 ++++++------- src/pretix/locale/et/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/eu/LC_MESSAGES/django.po | 1762 +++++++------- src/pretix/locale/eu/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/fi/LC_MESSAGES/django.po | 1764 +++++++------- src/pretix/locale/fi/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/fo/LC_MESSAGES/django.po | 1726 ++++++------- src/pretix/locale/fo/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/fr/LC_MESSAGES/django.po | 1796 +++++++------- src/pretix/locale/fr/LC_MESSAGES/djangojs.po | 123 +- src/pretix/locale/gl/LC_MESSAGES/django.po | 1780 +++++++------- src/pretix/locale/gl/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/he/LC_MESSAGES/django.po | 1784 +++++++------- src/pretix/locale/he/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/hr/LC_MESSAGES/django.po | 1761 +++++++------- src/pretix/locale/hr/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/hu/LC_MESSAGES/django.po | 1737 ++++++------- src/pretix/locale/hu/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/id/LC_MESSAGES/django.po | 1794 +++++++------- src/pretix/locale/id/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/it/LC_MESSAGES/django.po | 1763 +++++++------- src/pretix/locale/it/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/ja/LC_MESSAGES/django.po | 1789 +++++++------- src/pretix/locale/ja/LC_MESSAGES/djangojs.po | 127 +- src/pretix/locale/ko/LC_MESSAGES/django.po | 2158 +++++++++-------- src/pretix/locale/ko/LC_MESSAGES/djangojs.po | 133 +- src/pretix/locale/lt/LC_MESSAGES/django.po | 1726 ++++++------- src/pretix/locale/lt/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/lv/LC_MESSAGES/django.po | 1762 +++++++------- src/pretix/locale/lv/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/nan/LC_MESSAGES/django.po | 1726 ++++++------- src/pretix/locale/nan/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/nb_NO/LC_MESSAGES/django.po | 1789 +++++++------- .../locale/nb_NO/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/nl/LC_MESSAGES/django.po | 1797 +++++++------- src/pretix/locale/nl/LC_MESSAGES/djangojs.po | 120 +- .../locale/nl_Informal/LC_MESSAGES/django.po | 1773 +++++++------- .../nl_Informal/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/pl/LC_MESSAGES/django.po | 1792 +++++++------- src/pretix/locale/pl/LC_MESSAGES/djangojs.po | 120 +- .../locale/pl_Informal/LC_MESSAGES/django.po | 1735 ++++++------- .../pl_Informal/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/pt/LC_MESSAGES/django.po | 1730 ++++++------- src/pretix/locale/pt/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/pt_BR/LC_MESSAGES/django.po | 1768 +++++++------- .../locale/pt_BR/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/pt_PT/LC_MESSAGES/django.po | 1792 +++++++------- .../locale/pt_PT/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/ro/LC_MESSAGES/django.po | 1789 +++++++------- src/pretix/locale/ro/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/ru/LC_MESSAGES/django.po | 1776 +++++++------- src/pretix/locale/ru/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/si/LC_MESSAGES/django.po | 1727 ++++++------- src/pretix/locale/si/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/sk/LC_MESSAGES/django.po | 1769 +++++++------- src/pretix/locale/sk/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/sl/LC_MESSAGES/django.po | 1759 +++++++------- src/pretix/locale/sl/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/sq/LC_MESSAGES/django.po | 1726 ++++++------- src/pretix/locale/sq/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/sv/LC_MESSAGES/django.po | 1789 +++++++------- src/pretix/locale/sv/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/th/LC_MESSAGES/django.po | 1726 ++++++------- src/pretix/locale/th/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/tr/LC_MESSAGES/django.po | 1785 +++++++------- src/pretix/locale/tr/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/uk/LC_MESSAGES/django.po | 1781 +++++++------- src/pretix/locale/uk/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/vi/LC_MESSAGES/django.po | 1930 ++++++++------- src/pretix/locale/vi/LC_MESSAGES/djangojs.po | 120 +- src/pretix/locale/vls/LC_MESSAGES/django.po | 1726 ++++++------- src/pretix/locale/vls/LC_MESSAGES/djangojs.po | 120 +- .../locale/zh_Hans/LC_MESSAGES/django.po | 1766 +++++++------- .../locale/zh_Hans/LC_MESSAGES/djangojs.po | 120 +- .../locale/zh_Hant/LC_MESSAGES/django.po | 1781 +++++++------- .../locale/zh_Hant/LC_MESSAGES/djangojs.po | 120 +- 102 files changed, 48056 insertions(+), 48544 deletions(-) diff --git a/src/pretix/locale/ang/LC_MESSAGES/django.po b/src/pretix/locale/ang/LC_MESSAGES/django.po index 1984da5a32..ee4913bf9d 100644 --- a/src/pretix/locale/ang/LC_MESSAGES/django.po +++ b/src/pretix/locale/ang/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-30 10:35+0000\n" +"POT-Creation-Date: 2025-06-26 09:09+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -229,13 +229,13 @@ msgstr "" msgid "The product \"{}\" is not assigned to a quota." msgstr "" -#: pretix/api/serializers/checkin.py:65 pretix/base/models/event.py:1685 -#: pretix/base/models/items.py:1917 pretix/base/models/items.py:2184 +#: pretix/api/serializers/checkin.py:65 pretix/base/models/event.py:1691 +#: pretix/base/models/items.py:1917 pretix/base/models/items.py:2203 msgid "One or more items do not belong to this event." msgstr "" #: pretix/api/serializers/checkin.py:69 pretix/api/serializers/checkin.py:72 -#: pretix/base/models/items.py:2195 pretix/base/models/items.py:2198 +#: pretix/base/models/items.py:2214 pretix/base/models/items.py:2217 #: pretix/base/models/waitinglist.py:307 pretix/base/models/waitinglist.py:310 msgid "The subevent does not belong to this event." msgstr "" @@ -272,11 +272,11 @@ msgstr "" msgid "Item meta data property '{name}' does not exist." msgstr "" -#: pretix/api/serializers/item.py:207 pretix/control/forms/item.py:1267 +#: pretix/api/serializers/item.py:207 pretix/control/forms/item.py:1273 msgid "The bundled item must not be the same item as the bundling one." msgstr "" -#: pretix/api/serializers/item.py:210 pretix/control/forms/item.py:1269 +#: pretix/api/serializers/item.py:210 pretix/control/forms/item.py:1275 msgid "The bundled item must not have bundles on its own." msgstr "" @@ -296,29 +296,29 @@ msgid "" "sales tax will be applied when the gift card is redeemed." msgstr "" -#: pretix/api/serializers/item.py:322 pretix/control/forms/item.py:774 +#: pretix/api/serializers/item.py:322 pretix/control/forms/item.py:780 msgid "Gift card products should not be admission products at the same time." msgstr "" -#: pretix/api/serializers/item.py:519 +#: pretix/api/serializers/item.py:524 msgid "" "Updating options via PATCH/PUT is not supported. Please use the dedicated " "nested endpoint." msgstr "" -#: pretix/api/serializers/item.py:533 pretix/control/forms/item.py:178 +#: pretix/api/serializers/item.py:538 pretix/control/forms/item.py:178 msgid "Question cannot depend on a question asked during check-in." msgstr "" -#: pretix/api/serializers/item.py:538 pretix/control/forms/item.py:183 +#: pretix/api/serializers/item.py:543 pretix/control/forms/item.py:183 msgid "Circular dependency between questions detected." msgstr "" -#: pretix/api/serializers/item.py:543 pretix/control/forms/item.py:192 +#: pretix/api/serializers/item.py:548 pretix/control/forms/item.py:192 msgid "This type of question cannot be asked during check-in." msgstr "" -#: pretix/api/serializers/item.py:546 pretix/control/forms/item.py:200 +#: pretix/api/serializers/item.py:551 pretix/control/forms/item.py:200 msgid "This type of question cannot be shown during check-in." msgstr "" @@ -349,7 +349,7 @@ msgid "" msgstr "" #: pretix/api/serializers/organizer.py:105 -#: pretix/control/forms/organizer.py:892 pretix/presale/forms/customer.py:456 +#: pretix/control/forms/organizer.py:892 pretix/presale/forms/customer.py:458 msgid "An account with this email address is already registered." msgstr "" @@ -391,23 +391,23 @@ msgid "" "account." msgstr "" -#: pretix/api/views/order.py:607 pretix/control/views/orders.py:1609 -#: pretix/presale/views/order.py:731 pretix/presale/views/order.py:804 +#: pretix/api/views/order.py:607 pretix/control/views/orders.py:1610 +#: pretix/presale/views/order.py:733 pretix/presale/views/order.py:806 msgid "You cannot generate an invoice for this order." msgstr "" -#: pretix/api/views/order.py:612 pretix/control/views/orders.py:1611 -#: pretix/presale/views/order.py:733 pretix/presale/views/order.py:806 +#: pretix/api/views/order.py:612 pretix/control/views/orders.py:1612 +#: pretix/presale/views/order.py:735 pretix/presale/views/order.py:808 msgid "An invoice for this order already exists." msgstr "" -#: pretix/api/views/order.py:638 pretix/control/views/orders.py:1737 +#: pretix/api/views/order.py:638 pretix/control/views/orders.py:1738 #: pretix/control/views/users.py:145 msgid "There was an error sending the mail. Please try again later." msgstr "" #: pretix/api/views/order.py:718 pretix/base/services/cart.py:216 -#: pretix/base/services/orders.py:187 pretix/presale/views/order.py:788 +#: pretix/base/services/orders.py:187 pretix/presale/views/order.py:790 msgid "One of the selected products is not available in the selected country." msgstr "" @@ -426,7 +426,7 @@ msgstr "" #: pretix/api/webhooks.py:249 pretix/base/models/checkin.py:354 #: pretix/base/notifications.py:251 #: pretix/control/templates/pretixcontrol/event/mail.html:114 -#: pretix/control/views/orders.py:1570 +#: pretix/control/views/orders.py:1571 msgid "Order canceled" msgstr "" @@ -581,15 +581,15 @@ msgid "Customer account anonymized" msgstr "" #: pretix/base/addressvalidation.py:100 pretix/base/addressvalidation.py:103 -#: pretix/base/addressvalidation.py:108 pretix/base/forms/questions.py:1004 -#: pretix/base/forms/questions.py:1035 pretix/base/forms/questions.py:1224 -#: pretix/base/payment.py:97 pretix/control/forms/event.py:798 +#: pretix/base/addressvalidation.py:108 pretix/base/forms/questions.py:1046 +#: pretix/base/forms/questions.py:1077 pretix/base/forms/questions.py:1270 +#: pretix/base/payment.py:96 pretix/control/forms/event.py:798 #: pretix/control/forms/event.py:804 pretix/control/forms/event.py:848 #: pretix/control/forms/event.py:1445 pretix/control/forms/mailsetup.py:87 -#: pretix/control/forms/mailsetup.py:129 +#: pretix/control/forms/mailsetup.py:129 pretix/control/forms/subevents.py:185 #: pretix/plugins/banktransfer/payment.py:673 #: pretix/plugins/banktransfer/payment.py:679 -#: pretix/presale/forms/customer.py:151 +#: pretix/presale/forms/customer.py:152 msgid "This field is required." msgstr "" @@ -624,8 +624,8 @@ msgstr "" #: pretix/plugins/checkinlists/exporters.py:507 #: pretix/presale/checkoutflow.py:1532 pretix/presale/forms/checkout.py:57 #: pretix/presale/forms/customer.py:57 pretix/presale/forms/customer.py:142 -#: pretix/presale/forms/customer.py:297 pretix/presale/forms/customer.py:343 -#: pretix/presale/forms/customer.py:386 pretix/presale/forms/user.py:40 +#: pretix/presale/forms/customer.py:298 pretix/presale/forms/customer.py:344 +#: pretix/presale/forms/customer.py:388 pretix/presale/forms/user.py:40 #: pretix/presale/templates/pretixpresale/event/checkout_customer.html:30 #: pretix/presale/templates/pretixpresale/event/order.html:300 msgid "Email" @@ -634,7 +634,7 @@ msgstr "" #: pretix/base/auth.py:157 pretix/base/forms/auth.py:164 #: pretix/base/forms/auth.py:218 pretix/base/models/auth.py:675 #: pretix/base/models/customers.py:96 pretix/control/forms/mailsetup.py:57 -#: pretix/presale/forms/customer.py:61 pretix/presale/forms/customer.py:301 +#: pretix/presale/forms/customer.py:61 pretix/presale/forms/customer.py:302 msgid "Password" msgstr "" @@ -806,13 +806,13 @@ msgstr "" #: pretix/base/exporters/answers.py:76 pretix/base/exporters/orderlist.py:583 #: pretix/base/exporters/orderlist.py:898 #: pretix/base/exporters/orderlist.py:1138 pretix/base/models/checkin.py:58 -#: pretix/base/models/items.py:2048 pretix/base/models/orders.py:1485 +#: pretix/base/models/items.py:2067 pretix/base/models/orders.py:1485 #: pretix/base/models/orders.py:2999 pretix/base/models/vouchers.py:187 #: pretix/base/models/waitinglist.py:61 pretix/control/forms/event.py:1610 #: pretix/control/forms/filter.py:425 pretix/control/forms/filter.py:1901 #: pretix/control/forms/filter.py:2123 pretix/control/forms/filter.py:2238 #: pretix/control/forms/filter.py:2320 pretix/control/forms/filter.py:2537 -#: pretix/control/forms/item.py:327 pretix/control/forms/orders.py:348 +#: pretix/control/forms/item.py:333 pretix/control/forms/orders.py:348 #: pretix/control/forms/orders.py:400 pretix/control/forms/orders.py:839 #: pretix/control/forms/vouchers.py:118 #: pretix/control/templates/pretixcontrol/checkin/lists.html:99 @@ -831,7 +831,7 @@ msgstr "" #: pretix/plugins/sendmail/forms.py:363 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_inspect.html:32 #: pretix/presale/templates/pretixpresale/event/checkout_membership.html:48 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:121 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:125 #: pretix/presale/templates/pretixpresale/event/fragment_change_form.html:20 msgctxt "subevent" msgid "Date" @@ -902,7 +902,7 @@ msgstr "" #: pretix/control/views/waitinglist.py:314 #: pretix/plugins/checkinlists/exporters.py:508 #: pretix/presale/checkoutflow.py:1538 pretix/presale/forms/checkout.py:84 -#: pretix/presale/forms/waitinglist.py:78 +#: pretix/presale/forms/waitinglist.py:80 #: pretix/presale/templates/pretixpresale/event/order.html:304 msgid "Phone number" msgstr "" @@ -917,15 +917,15 @@ msgstr "" #: pretix/base/exporters/customers.py:74 pretix/base/exporters/invoices.py:206 #: pretix/base/exporters/invoices.py:214 pretix/base/exporters/invoices.py:332 #: pretix/base/exporters/invoices.py:340 pretix/base/exporters/orderlist.py:262 -#: pretix/base/exporters/waitinglist.py:108 pretix/base/forms/questions.py:1185 +#: pretix/base/exporters/waitinglist.py:108 pretix/base/forms/questions.py:1227 #: pretix/base/models/devices.py:65 pretix/base/models/devices.py:127 -#: pretix/base/models/event.py:1487 pretix/base/models/event.py:1729 -#: pretix/base/models/items.py:2052 pretix/base/models/items.py:2225 +#: pretix/base/models/event.py:1493 pretix/base/models/event.py:1735 +#: pretix/base/models/items.py:2071 pretix/base/models/items.py:2244 #: pretix/base/models/memberships.py:41 pretix/base/models/organizer.py:75 #: pretix/base/models/organizer.py:535 pretix/base/models/seating.py:85 #: pretix/base/models/waitinglist.py:69 pretix/base/settings.py:3265 #: pretix/base/settings.py:3275 pretix/base/settings.py:3629 -#: pretix/control/forms/filter.py:625 pretix/control/forms/item.py:439 +#: pretix/control/forms/filter.py:625 pretix/control/forms/item.py:445 #: pretix/control/forms/organizer.py:917 #: pretix/control/templates/pretixcontrol/checkin/index.html:109 #: pretix/control/templates/pretixcontrol/checkin/lists.html:92 @@ -949,8 +949,8 @@ msgstr "" #: pretix/plugins/reports/exporters.py:885 #: pretix/plugins/ticketoutputpdf/models.py:333 #: pretix/plugins/ticketoutputpdf/templates/pretixplugins/ticketoutputpdf/index.html:32 -#: pretix/presale/forms/customer.py:178 pretix/presale/forms/customer.py:479 -#: pretix/presale/forms/waitinglist.py:66 +#: pretix/presale/forms/customer.py:179 pretix/presale/forms/customer.py:483 +#: pretix/presale/forms/waitinglist.py:68 #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:87 #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:139 #: pretix/presale/templates/pretixpresale/event/checkout_customer.html:34 @@ -1018,8 +1018,8 @@ msgstr "" #: pretix/base/exporters/reusablemedia.py:63 pretix/base/modelimport.py:187 #: pretix/base/modelimport.py:194 pretix/base/models/orders.py:1401 #: pretix/control/forms/filter.py:172 pretix/control/forms/filter.py:520 -#: pretix/control/forms/filter.py:707 pretix/control/forms/item.py:608 -#: pretix/control/forms/subevents.py:119 pretix/control/views/item.py:727 +#: pretix/control/forms/filter.py:707 pretix/control/forms/item.py:614 +#: pretix/control/forms/subevents.py:119 pretix/control/views/item.py:733 #: pretix/control/views/vouchers.py:139 pretix/control/views/vouchers.py:140 #: pretix/plugins/checkinlists/exporters.py:600 #: pretix/plugins/checkinlists/exporters.py:603 @@ -1042,8 +1042,8 @@ msgstr "" #: pretix/base/exporters/reusablemedia.py:63 pretix/base/modelimport.py:186 #: pretix/base/modelimport.py:196 pretix/base/models/orders.py:1403 #: pretix/control/forms/filter.py:172 pretix/control/forms/filter.py:521 -#: pretix/control/forms/filter.py:708 pretix/control/forms/item.py:609 -#: pretix/control/forms/subevents.py:120 pretix/control/views/item.py:727 +#: pretix/control/forms/filter.py:708 pretix/control/forms/item.py:615 +#: pretix/control/forms/subevents.py:120 pretix/control/views/item.py:733 #: pretix/control/views/vouchers.py:139 pretix/control/views/vouchers.py:140 #: pretix/plugins/checkinlists/exporters.py:600 #: pretix/plugins/checkinlists/exporters.py:603 @@ -1137,52 +1137,52 @@ msgid "Timezone" msgstr "" #: pretix/base/exporters/events.py:62 pretix/base/models/event.py:595 -#: pretix/base/models/event.py:1489 pretix/base/settings.py:3263 -#: pretix/base/settings.py:3273 pretix/control/forms/subevents.py:480 +#: pretix/base/models/event.py:1495 pretix/base/settings.py:3263 +#: pretix/base/settings.py:3273 pretix/control/forms/subevents.py:487 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:268 msgid "Event start time" msgstr "" #: pretix/base/exporters/events.py:63 pretix/base/models/event.py:597 -#: pretix/base/models/event.py:1491 pretix/base/pdf.py:286 -#: pretix/control/forms/subevents.py:485 +#: pretix/base/models/event.py:1497 pretix/base/pdf.py:286 +#: pretix/control/forms/subevents.py:492 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:270 msgid "Event end time" msgstr "" #: pretix/base/exporters/events.py:64 pretix/base/models/event.py:599 -#: pretix/base/models/event.py:1493 pretix/control/forms/subevents.py:490 +#: pretix/base/models/event.py:1499 pretix/control/forms/subevents.py:497 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:274 msgid "Admission time" msgstr "" #: pretix/base/exporters/events.py:65 pretix/base/models/event.py:611 -#: pretix/base/models/event.py:1502 pretix/control/forms/subevents.py:93 +#: pretix/base/models/event.py:1508 pretix/control/forms/subevents.py:93 msgid "Start of presale" msgstr "" #: pretix/base/exporters/events.py:66 pretix/base/models/event.py:605 -#: pretix/base/models/event.py:1496 pretix/control/forms/subevents.py:99 +#: pretix/base/models/event.py:1502 pretix/control/forms/subevents.py:99 msgid "End of presale" msgstr "" #: pretix/base/exporters/events.py:67 pretix/base/exporters/invoices.py:351 -#: pretix/base/models/event.py:617 pretix/base/models/event.py:1508 +#: pretix/base/models/event.py:617 pretix/base/models/event.py:1514 msgid "Location" msgstr "" #: pretix/base/exporters/events.py:68 pretix/base/models/event.py:625 -#: pretix/base/models/event.py:1511 +#: pretix/base/models/event.py:1517 msgid "Latitude" msgstr "" #: pretix/base/exporters/events.py:69 pretix/base/models/event.py:633 -#: pretix/base/models/event.py:1519 +#: pretix/base/models/event.py:1525 msgid "Longitude" msgstr "" #: pretix/base/exporters/events.py:70 pretix/base/models/event.py:645 -#: pretix/base/models/event.py:1534 +#: pretix/base/models/event.py:1540 #: pretix/control/templates/pretixcontrol/event/index.html:128 #: pretix/control/templates/pretixcontrol/order/index.html:991 msgid "Internal comment" @@ -1264,7 +1264,7 @@ msgstr "" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/transaction_list.html:11 #: pretix/plugins/checkinlists/exporters.py:752 #: pretix/presale/templates/pretixpresale/event/fragment_giftcard_history.html:6 -#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:54 +#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:58 msgid "Date" msgstr "" @@ -1326,7 +1326,7 @@ msgstr "" #: pretix/base/exporters/invoices.py:207 pretix/base/exporters/invoices.py:333 #: pretix/base/exporters/orderlist.py:269 #: pretix/base/exporters/orderlist.py:462 -#: pretix/base/exporters/orderlist.py:604 pretix/base/forms/questions.py:696 +#: pretix/base/exporters/orderlist.py:604 pretix/base/forms/questions.py:704 #: pretix/base/modelimport_orders.py:206 pretix/base/modelimport_orders.py:352 #: pretix/base/models/customers.py:311 pretix/base/models/orders.py:1539 #: pretix/base/models/orders.py:3272 pretix/control/forms/filter.py:629 @@ -1343,12 +1343,12 @@ msgstr "" #: pretix/base/exporters/invoices.py:334 pretix/base/exporters/invoices.py:342 #: pretix/base/exporters/orderlist.py:269 #: pretix/base/exporters/orderlist.py:462 -#: pretix/base/exporters/orderlist.py:605 pretix/base/forms/questions.py:707 +#: pretix/base/exporters/orderlist.py:605 pretix/base/forms/questions.py:715 #: pretix/base/modelimport_orders.py:217 pretix/base/modelimport_orders.py:363 #: pretix/base/models/customers.py:312 pretix/base/models/orders.py:1540 #: pretix/base/models/orders.py:3273 pretix/base/settings.py:1124 #: pretix/control/forms/filter.py:633 pretix/control/forms/filter.py:664 -#: pretix/control/views/item.py:487 +#: pretix/control/views/item.py:488 #: pretix/plugins/checkinlists/exporters.py:535 #: pretix/plugins/reports/exporters.py:841 msgid "ZIP code" @@ -1358,12 +1358,12 @@ msgstr "" #: pretix/base/exporters/invoices.py:335 pretix/base/exporters/invoices.py:343 #: pretix/base/exporters/orderlist.py:269 #: pretix/base/exporters/orderlist.py:462 -#: pretix/base/exporters/orderlist.py:606 pretix/base/forms/questions.py:715 +#: pretix/base/exporters/orderlist.py:606 pretix/base/forms/questions.py:723 #: pretix/base/modelimport_orders.py:228 pretix/base/modelimport_orders.py:374 #: pretix/base/models/customers.py:313 pretix/base/models/orders.py:1541 #: pretix/base/models/orders.py:3274 pretix/base/settings.py:1136 #: pretix/control/forms/filter.py:638 pretix/control/forms/filter.py:669 -#: pretix/control/views/item.py:497 +#: pretix/control/views/item.py:498 #: pretix/plugins/checkinlists/exporters.py:536 #: pretix/plugins/reports/exporters.py:842 msgid "City" @@ -1373,14 +1373,14 @@ msgstr "" #: pretix/base/exporters/invoices.py:336 pretix/base/exporters/invoices.py:344 #: pretix/base/exporters/orderlist.py:269 #: pretix/base/exporters/orderlist.py:462 -#: pretix/base/exporters/orderlist.py:607 pretix/base/forms/questions.py:727 +#: pretix/base/exporters/orderlist.py:607 pretix/base/forms/questions.py:735 #: pretix/base/modelimport_orders.py:244 pretix/base/modelimport_orders.py:390 #: pretix/base/models/customers.py:314 pretix/base/models/orders.py:1542 #: pretix/base/models/orders.py:3275 pretix/base/models/orders.py:3276 #: pretix/base/settings.py:1145 pretix/control/forms/filter.py:643 #: pretix/control/forms/filter.py:674 #: pretix/control/templates/pretixcontrol/order/index.html:953 -#: pretix/control/views/item.py:507 +#: pretix/control/views/item.py:508 #: pretix/plugins/checkinlists/exporters.py:537 #: pretix/plugins/reports/exporters.py:792 #: pretix/plugins/reports/exporters.py:837 @@ -1425,11 +1425,11 @@ msgstr "" #: pretix/base/exporters/orderlist.py:262 #: pretix/base/exporters/orderlist.py:454 #: pretix/base/exporters/orderlist.py:603 -#: pretix/base/exporters/orderlist.py:643 pretix/base/forms/questions.py:688 +#: pretix/base/exporters/orderlist.py:643 pretix/base/forms/questions.py:696 #: pretix/base/modelimport_orders.py:176 pretix/base/modelimport_orders.py:341 #: pretix/control/forms/filter.py:621 pretix/control/forms/filter.py:656 #: pretix/control/templates/pretixcontrol/order/index.html:945 -#: pretix/control/views/item.py:465 +#: pretix/control/views/item.py:466 #: pretix/plugins/checkinlists/exporters.py:518 #: pretix/plugins/reports/exporters.py:839 #: pretix/plugins/reports/exporters.py:885 @@ -1445,8 +1445,8 @@ msgstr "" #: pretix/base/exporters/invoices.py:219 pretix/base/exporters/invoices.py:345 #: pretix/base/exporters/orderlist.py:269 #: pretix/base/exporters/orderlist.py:462 -#: pretix/base/exporters/orderlist.py:608 pretix/base/forms/questions.py:752 -#: pretix/base/forms/questions.py:1135 pretix/base/modelimport_orders.py:263 +#: pretix/base/exporters/orderlist.py:608 pretix/base/forms/questions.py:760 +#: pretix/base/forms/questions.py:1177 pretix/base/modelimport_orders.py:263 #: pretix/base/models/customers.py:315 pretix/base/models/orders.py:1543 #: pretix/base/models/orders.py:3278 pretix/base/views/js_helpers.py:44 #: pretix/control/templates/pretixcontrol/order/index.html:956 @@ -1618,7 +1618,7 @@ msgstr "" #: pretix/base/exporters/items.py:71 pretix/base/exporters/reusablemedia.py:48 #: pretix/base/models/customers.py:57 pretix/base/models/customers.py:403 -#: pretix/base/models/discount.py:60 pretix/base/models/event.py:1478 +#: pretix/base/models/discount.py:60 pretix/base/models/event.py:1484 #: pretix/base/models/items.py:489 pretix/base/models/items.py:1152 #: pretix/base/models/media.py:77 pretix/base/settings.py:204 #: pretix/base/settings.py:239 pretix/base/settings.py:270 @@ -1669,7 +1669,7 @@ msgstr "" #: pretix/base/exporters/items.py:79 pretix/base/exporters/orderlist.py:1135 #: pretix/base/exporters/waitinglist.py:41 pretix/base/shredder.py:367 #: pretix/control/forms/event.py:1686 pretix/control/navigation.py:237 -#: pretix/control/templates/pretixcontrol/event/settings.html:352 +#: pretix/control/templates/pretixcontrol/event/settings.html:363 #: pretix/control/templates/pretixcontrol/orders/cancel.html:62 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:6 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:9 @@ -1685,17 +1685,17 @@ msgstr "" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:102 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:26 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:66 -#: pretix/presale/views/widget.py:447 +#: pretix/presale/views/widget.py:440 msgid "Waiting list" msgstr "" #: pretix/base/exporters/items.py:80 pretix/base/models/discount.py:82 #: pretix/base/models/items.py:224 pretix/base/models/items.py:280 #: pretix/base/models/items.py:562 pretix/base/models/items.py:1205 -#: pretix/base/payment.py:335 pretix/control/forms/subevents.py:320 -#: pretix/control/forms/subevents.py:342 +#: pretix/base/payment.py:392 pretix/control/forms/subevents.py:327 +#: pretix/control/forms/subevents.py:349 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:506 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:171 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:172 #: pretix/control/templates/pretixcontrol/subevents/detail.html:149 msgid "Available from" msgstr "" @@ -1703,9 +1703,9 @@ msgstr "" #: pretix/base/exporters/items.py:81 pretix/base/models/discount.py:87 #: pretix/base/models/items.py:229 pretix/base/models/items.py:285 #: pretix/base/models/items.py:572 pretix/base/models/items.py:1215 -#: pretix/base/payment.py:341 pretix/control/forms/subevents.py:325 +#: pretix/base/payment.py:398 pretix/control/forms/subevents.py:332 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:511 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:176 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:177 #: pretix/control/templates/pretixcontrol/subevents/detail.html:154 msgid "Available until" msgstr "" @@ -2037,7 +2037,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/order/change.html:194 #: pretix/control/templates/pretixcontrol/order/change.html:418 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:496 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:161 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:162 #: pretix/control/templates/pretixcontrol/subevents/detail.html:139 #: pretix/plugins/checkinlists/exporters.py:376 #: pretix/plugins/checkinlists/exporters.py:499 @@ -2074,8 +2074,8 @@ msgstr "" #: pretix/base/exporters/orderlist.py:584 #: pretix/base/exporters/orderlist.py:1139 -#: pretix/base/exporters/waitinglist.py:118 pretix/base/forms/questions.py:642 -#: pretix/base/forms/questions.py:651 pretix/base/models/memberships.py:145 +#: pretix/base/exporters/waitinglist.py:118 pretix/base/forms/questions.py:650 +#: pretix/base/forms/questions.py:659 pretix/base/models/memberships.py:145 #: pretix/control/forms/rrule.py:49 #: pretix/control/templates/pretixcontrol/events/index.html:78 #: pretix/control/templates/pretixcontrol/order/index.html:740 @@ -2128,37 +2128,37 @@ msgstr "" #: pretix/plugins/reports/exporters.py:375 #: pretix/plugins/statistics/templates/pretixplugins/statistics/index.html:100 #: pretix/presale/forms/order.py:36 pretix/presale/forms/waitinglist.py:54 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:11 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:12 #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:91 msgid "Product" msgstr "" #: pretix/base/exporters/orderlist.py:595 -#: pretix/base/exporters/orderlist.py:600 pretix/base/forms/questions.py:671 +#: pretix/base/exporters/orderlist.py:600 pretix/base/forms/questions.py:679 #: pretix/base/modelimport_orders.py:313 pretix/base/models/customers.py:300 #: pretix/base/models/orders.py:1504 pretix/base/pdf.py:172 #: pretix/control/forms/filter.py:648 pretix/control/forms/organizer.py:986 #: pretix/control/templates/pretixcontrol/order/index.html:514 #: pretix/control/templates/pretixcontrol/organizers/customer.html:120 -#: pretix/control/views/item.py:441 pretix/plugins/badges/exporters.py:495 +#: pretix/control/views/item.py:442 pretix/plugins/badges/exporters.py:495 #: pretix/plugins/checkinlists/exporters.py:120 #: pretix/plugins/checkinlists/exporters.py:493 #: pretix/plugins/ticketoutputpdf/exporters.py:94 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:161 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:164 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:162 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:165 #: pretix/presale/templates/pretixpresale/event/fragment_change_form.html:38 #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:50 #: pretix/presale/templates/pretixpresale/organizers/customer_memberships.html:36 msgid "Attendee name" msgstr "" -#: pretix/base/exporters/orderlist.py:602 pretix/base/forms/questions.py:677 +#: pretix/base/exporters/orderlist.py:602 pretix/base/forms/questions.py:685 #: pretix/base/models/customers.py:307 pretix/base/models/orders.py:1512 #: pretix/base/pdf.py:214 #: pretix/control/templates/pretixcontrol/order/index.html:519 -#: pretix/control/views/item.py:453 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:171 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:174 +#: pretix/control/views/item.py:454 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:172 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:175 msgid "Attendee email" msgstr "" @@ -2269,7 +2269,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/checkin/lists.html:6 #: pretix/control/templates/pretixcontrol/checkin/lists.html:8 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:519 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:272 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:274 #: pretix/control/templates/pretixcontrol/subevents/detail.html:162 #: pretix/plugins/checkinlists/apps.py:44 msgid "Check-in lists" @@ -2291,7 +2291,7 @@ msgid "Only include transactions created within this date range." msgstr "" #: pretix/base/exporters/orderlist.py:875 pretix/base/models/event.py:672 -#: pretix/base/models/items.py:468 pretix/base/models/items.py:2041 +#: pretix/base/models/items.py:468 pretix/base/models/items.py:2060 #: pretix/base/models/orders.py:233 pretix/base/models/orders.py:3086 #: pretix/base/models/vouchers.py:181 pretix/base/models/waitinglist.py:55 #: pretix/base/notifications.py:187 pretix/control/forms/filter.py:994 @@ -2336,7 +2336,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/order/transactions.html:23 #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:207 #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:353 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:15 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:16 #: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:223 #: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:375 #: pretix/presale/templates/pretixpresale/event/voucher.html:234 @@ -2504,11 +2504,11 @@ msgstr "" #: pretix/base/exporters/orderlist.py:1134 #: pretix/control/templates/pretixcontrol/event/cancel.html:20 -#: pretix/control/views/item.py:964 +#: pretix/control/views/item.py:970 msgid "Paid orders" msgstr "" -#: pretix/base/exporters/orderlist.py:1134 pretix/control/views/item.py:969 +#: pretix/base/exporters/orderlist.py:1134 pretix/control/views/item.py:975 msgid "Pending orders" msgstr "" @@ -2516,7 +2516,7 @@ msgstr "" msgid "Blocking vouchers" msgstr "" -#: pretix/base/exporters/orderlist.py:1135 pretix/control/views/item.py:988 +#: pretix/base/exporters/orderlist.py:1135 pretix/control/views/item.py:994 msgid "Current user's carts" msgstr "" @@ -2531,7 +2531,7 @@ msgstr "" #: pretix/base/exporters/orderlist.py:1152 #: pretix/base/exporters/orderlist.py:1159 #: pretix/control/templates/pretixcontrol/items/quota.html:58 -#: pretix/control/views/item.py:995 +#: pretix/control/views/item.py:1001 msgid "Infinite" msgstr "" @@ -2552,12 +2552,12 @@ msgstr "" #: pretix/base/exporters/orderlist.py:1212 #: pretix/base/exporters/orderlist.py:1259 #: pretix/base/exporters/orderlist.py:1355 pretix/base/models/giftcards.py:89 -#: pretix/control/templates/pretixcontrol/giftcards/checkout.html:5 +#: pretix/base/payment.py:1454 #: pretix/control/templates/pretixcontrol/giftcards/payment.html:4 #: pretix/control/templates/pretixcontrol/order/index.html:506 #: pretix/control/templates/pretixcontrol/organizers/giftcard.html:28 #: pretix/control/templates/pretixcontrol/organizers/giftcards.html:56 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:151 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:152 msgid "Gift card code" msgstr "" @@ -2848,7 +2848,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:74 #: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:76 #: pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html:12 -#: pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html:19 +#: pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html:20 msgid "Voucher code" msgstr "" @@ -2874,7 +2874,7 @@ msgid "This combination of credentials is not known to our system." msgstr "" #: pretix/base/forms/auth.py:66 pretix/base/forms/user.py:57 -#: pretix/presale/forms/customer.py:383 pretix/presale/forms/customer.py:455 +#: pretix/presale/forms/customer.py:385 pretix/presale/forms/customer.py:457 msgid "For security reasons, please wait 5 minutes before you try again." msgstr "" @@ -2889,91 +2889,91 @@ msgstr "" #: pretix/base/forms/auth.py:157 pretix/base/forms/auth.py:215 #: pretix/base/forms/user.py:56 pretix/control/forms/users.py:45 -#: pretix/presale/forms/customer.py:294 pretix/presale/forms/customer.py:382 +#: pretix/presale/forms/customer.py:295 pretix/presale/forms/customer.py:384 msgid "Please enter the same password twice" msgstr "" #: pretix/base/forms/auth.py:172 pretix/base/forms/auth.py:224 -#: pretix/presale/forms/customer.py:307 pretix/presale/forms/customer.py:401 +#: pretix/presale/forms/customer.py:308 pretix/presale/forms/customer.py:403 msgid "Repeat password" msgstr "" -#: pretix/base/forms/questions.py:135 pretix/base/forms/questions.py:257 +#: pretix/base/forms/questions.py:135 pretix/base/forms/questions.py:262 msgctxt "name_salutation" msgid "not specified" msgstr "" -#: pretix/base/forms/questions.py:220 +#: pretix/base/forms/questions.py:225 msgid "Please do not use special characters in names." msgstr "" -#: pretix/base/forms/questions.py:282 +#: pretix/base/forms/questions.py:287 msgid "Please enter a shorter name." msgstr "" -#: pretix/base/forms/questions.py:306 +#: pretix/base/forms/questions.py:312 msgctxt "phonenumber" msgid "International area code" msgstr "" -#: pretix/base/forms/questions.py:330 +#: pretix/base/forms/questions.py:338 msgctxt "phonenumber" msgid "Phone number (without international area code)" msgstr "" -#: pretix/base/forms/questions.py:491 +#: pretix/base/forms/questions.py:499 msgid "" "You uploaded an image in landscape orientation. Please upload an image in " "portrait orientation." msgstr "" -#: pretix/base/forms/questions.py:494 +#: pretix/base/forms/questions.py:502 msgid "Please upload an image where the width is 3/4 of the height." msgstr "" -#: pretix/base/forms/questions.py:497 +#: pretix/base/forms/questions.py:505 msgid "" "The file you uploaded has a very large number of pixels, please upload an " "image no larger than 10000 x 10000 pixels." msgstr "" -#: pretix/base/forms/questions.py:500 pretix/helpers/images.py:75 +#: pretix/base/forms/questions.py:508 pretix/helpers/images.py:75 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -#: pretix/base/forms/questions.py:643 pretix/base/forms/questions.py:652 +#: pretix/base/forms/questions.py:651 pretix/base/forms/questions.py:660 msgid "" "If you keep this empty, the ticket will be valid starting at the time of " "purchase." msgstr "" -#: pretix/base/forms/questions.py:699 pretix/base/forms/questions.py:1058 +#: pretix/base/forms/questions.py:707 pretix/base/forms/questions.py:1100 msgid "Street and Number" msgstr "" -#: pretix/base/forms/questions.py:1112 +#: pretix/base/forms/questions.py:1154 msgid "" "Optional, but depending on the country you reside in we might need to charge " "you additional taxes if you do not enter it." msgstr "" -#: pretix/base/forms/questions.py:1114 pretix/base/forms/questions.py:1120 +#: pretix/base/forms/questions.py:1156 pretix/base/forms/questions.py:1162 msgid "If you are registered in Switzerland, you can enter your UID instead." msgstr "" -#: pretix/base/forms/questions.py:1118 +#: pretix/base/forms/questions.py:1160 msgid "" "Optional, but it might be required for you to claim tax benefits on your " "invoice depending on your and the seller’s country of residence." msgstr "" -#: pretix/base/forms/questions.py:1220 +#: pretix/base/forms/questions.py:1266 msgid "You need to provide a company name." msgstr "" -#: pretix/base/forms/questions.py:1222 +#: pretix/base/forms/questions.py:1268 msgid "You need to provide your name." msgstr "" @@ -2989,8 +2989,8 @@ msgid "" "or password." msgstr "" -#: pretix/base/forms/user.py:55 pretix/presale/forms/customer.py:381 -#: pretix/presale/forms/customer.py:454 +#: pretix/base/forms/user.py:55 pretix/presale/forms/customer.py:383 +#: pretix/presale/forms/customer.py:456 msgid "The current password you entered was not correct." msgstr "" @@ -2998,13 +2998,13 @@ msgstr "" msgid "Please choose a password different to your current one." msgstr "" -#: pretix/base/forms/user.py:63 pretix/presale/forms/customer.py:390 -#: pretix/presale/forms/customer.py:459 +#: pretix/base/forms/user.py:63 pretix/presale/forms/customer.py:392 +#: pretix/presale/forms/customer.py:461 msgid "Your current password" msgstr "" #: pretix/base/forms/user.py:67 pretix/control/forms/users.py:50 -#: pretix/presale/forms/customer.py:395 +#: pretix/presale/forms/customer.py:397 msgid "New password" msgstr "" @@ -3146,7 +3146,7 @@ msgid "" "until {to_date}" msgstr "" -#: pretix/base/invoice.py:578 pretix/base/services/mail.py:495 +#: pretix/base/invoice.py:578 pretix/base/services/mail.py:502 #, python-brace-format msgctxt "invoice" msgid "Invoice {num}" @@ -3368,6 +3368,11 @@ msgstr "" msgid "Tax rule {val}" msgstr "" +#: pretix/base/logentrytypes.py:151 +#, python-brace-format +msgid "{val}" +msgstr "" + #: pretix/base/media.py:71 msgid "Barcode / QR-Code" msgstr "" @@ -3401,9 +3406,9 @@ msgstr "" msgid "Could not parse {value} as a date and time." msgstr "" -#: pretix/base/modelimport.py:232 pretix/control/views/orders.py:1183 -#: pretix/control/views/orders.py:1212 pretix/control/views/orders.py:1256 -#: pretix/control/views/orders.py:1291 pretix/control/views/orders.py:1314 +#: pretix/base/modelimport.py:232 pretix/control/views/orders.py:1184 +#: pretix/control/views/orders.py:1213 pretix/control/views/orders.py:1257 +#: pretix/control/views/orders.py:1292 pretix/control/views/orders.py:1315 msgid "You entered an invalid number." msgstr "" @@ -3492,8 +3497,8 @@ msgstr "" #: pretix/control/forms/filter.py:664 pretix/control/forms/filter.py:669 #: pretix/control/forms/filter.py:674 #: pretix/control/templates/pretixcontrol/order/index.html:551 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:192 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:195 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:193 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:196 msgid "Attendee address" msgstr "" @@ -3623,7 +3628,7 @@ msgstr "" msgid "It is pointless to set a value without a price mode." msgstr "" -#: pretix/base/modelimport_vouchers.py:237 pretix/base/models/items.py:2102 +#: pretix/base/modelimport_vouchers.py:237 pretix/base/models/items.py:2121 #: pretix/base/models/vouchers.py:272 #: pretix/control/templates/pretixcontrol/items/quota_edit.html:8 #: pretix/control/templates/pretixcontrol/items/quota_edit.html:15 @@ -3878,7 +3883,7 @@ msgid "Single-sign-on method" msgstr "" #: pretix/base/models/customers.py:85 pretix/base/models/devices.py:71 -#: pretix/base/models/items.py:1676 pretix/base/models/items.py:1933 +#: pretix/base/models/items.py:1676 pretix/base/models/items.py:1952 msgid "" "You can enter any value here to make it easier to match the data with other " "sources. If you do not input one, we will generate one automatically." @@ -4155,7 +4160,7 @@ msgstr "" msgid "The slug may only contain letters, numbers, dots and dashes." msgstr "" -#: pretix/base/models/event.py:601 pretix/base/models/event.py:1482 +#: pretix/base/models/event.py:601 pretix/base/models/event.py:1488 msgid "Show in lists" msgstr "" @@ -4165,14 +4170,14 @@ msgid "" "organizer account." msgstr "" -#: pretix/base/models/event.py:606 pretix/base/models/event.py:1497 +#: pretix/base/models/event.py:606 pretix/base/models/event.py:1503 #: pretix/control/forms/subevents.py:100 msgid "" "Optional. No products will be sold after this date. If you do not set this " "value, the presale will end after the end date of your event." msgstr "" -#: pretix/base/models/event.py:612 pretix/base/models/event.py:1503 +#: pretix/base/models/event.py:612 pretix/base/models/event.py:1509 #: pretix/control/forms/subevents.py:94 msgid "Optional. No products will be sold before this date." msgstr "" @@ -4199,11 +4204,11 @@ msgstr "" #: pretix/control/views/dashboards.py:543 #: pretix/presale/templates/pretixpresale/event/index.html:33 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:7 -#: pretix/presale/views/widget.py:707 +#: pretix/presale/views/widget.py:700 msgid "Event series" msgstr "" -#: pretix/base/models/event.py:653 pretix/base/models/event.py:1531 +#: pretix/base/models/event.py:653 pretix/base/models/event.py:1537 msgid "Seating plan" msgstr "" @@ -4212,7 +4217,7 @@ msgid "Sell on all sales channels" msgstr "" #: pretix/base/models/event.py:665 pretix/base/models/items.py:680 -#: pretix/base/models/items.py:1230 pretix/base/payment.py:417 +#: pretix/base/models/items.py:1230 pretix/base/payment.py:474 msgid "Restrict to specific sales channels" msgstr "" @@ -4229,144 +4234,144 @@ msgstr "" msgid "Events" msgstr "" -#: pretix/base/models/event.py:1310 +#: pretix/base/models/event.py:1316 msgid "" "You have configured at least one paid product but have not enabled any " "payment methods." msgstr "" -#: pretix/base/models/event.py:1313 +#: pretix/base/models/event.py:1319 msgid "" "You have configured at least one paid product but have not configured a " "currency." msgstr "" -#: pretix/base/models/event.py:1316 +#: pretix/base/models/event.py:1322 msgid "You need to configure at least one quota to sell anything." msgstr "" -#: pretix/base/models/event.py:1321 +#: pretix/base/models/event.py:1327 #, python-brace-format msgid "You need to fill the meta parameter \"{property}\"." msgstr "" -#: pretix/base/models/event.py:1428 +#: pretix/base/models/event.py:1434 msgid "" "Once created an event cannot change between an series and a single event." msgstr "" -#: pretix/base/models/event.py:1434 +#: pretix/base/models/event.py:1440 msgid "The event slug cannot be changed." msgstr "" -#: pretix/base/models/event.py:1437 +#: pretix/base/models/event.py:1443 msgid "This slug has already been used for a different event." msgstr "" -#: pretix/base/models/event.py:1443 +#: pretix/base/models/event.py:1449 msgid "The event cannot end before it starts." msgstr "" -#: pretix/base/models/event.py:1449 +#: pretix/base/models/event.py:1455 msgid "The event's presale cannot end before it starts." msgstr "" -#: pretix/base/models/event.py:1479 +#: pretix/base/models/event.py:1485 msgid "" "Only with this checkbox enabled, this date is visible in the frontend to " "users." msgstr "" -#: pretix/base/models/event.py:1483 +#: pretix/base/models/event.py:1489 msgid "" "If selected, this event will show up publicly on the list of dates for your " "event." msgstr "" -#: pretix/base/models/event.py:1528 pretix/base/settings.py:3064 +#: pretix/base/models/event.py:1534 pretix/base/settings.py:3064 msgid "Frontpage text" msgstr "" -#: pretix/base/models/event.py:1545 +#: pretix/base/models/event.py:1551 msgid "Date in event series" msgstr "" -#: pretix/base/models/event.py:1546 +#: pretix/base/models/event.py:1552 msgid "Dates in event series" msgstr "" -#: pretix/base/models/event.py:1691 +#: pretix/base/models/event.py:1697 msgid "One or more variations do not belong to this event." msgstr "" -#: pretix/base/models/event.py:1721 pretix/base/models/items.py:2217 +#: pretix/base/models/event.py:1727 pretix/base/models/items.py:2236 msgid "Can not contain spaces or special characters except underscores" msgstr "" -#: pretix/base/models/event.py:1726 pretix/base/models/items.py:2222 +#: pretix/base/models/event.py:1732 pretix/base/models/items.py:2241 msgid "The property name may only contain letters, numbers and underscores." msgstr "" -#: pretix/base/models/event.py:1731 +#: pretix/base/models/event.py:1737 msgid "Default value" msgstr "" -#: pretix/base/models/event.py:1733 +#: pretix/base/models/event.py:1739 #: pretix/control/templates/pretixcontrol/organizers/properties.html:50 msgid "Can only be changed by organizer-level administrators" msgstr "" -#: pretix/base/models/event.py:1735 +#: pretix/base/models/event.py:1741 msgid "Required for events" msgstr "" -#: pretix/base/models/event.py:1736 +#: pretix/base/models/event.py:1742 msgid "" "If checked, an event can only be taken live if the property is set. In event " "series, its always optional to set a value for individual dates" msgstr "" -#: pretix/base/models/event.py:1742 pretix/base/models/items.py:2234 +#: pretix/base/models/event.py:1748 pretix/base/models/items.py:2253 msgid "Valid values" msgstr "" -#: pretix/base/models/event.py:1745 +#: pretix/base/models/event.py:1751 #: pretix/control/templates/pretixcontrol/organizers/properties.html:45 msgid "Show filter option to customers" msgstr "" -#: pretix/base/models/event.py:1746 +#: pretix/base/models/event.py:1752 msgid "" "This field will be shown to filter events in the public event list and " "calendar." msgstr "" -#: pretix/base/models/event.py:1749 pretix/control/forms/organizer.py:269 +#: pretix/base/models/event.py:1755 pretix/control/forms/organizer.py:269 #: pretix/control/forms/organizer.py:273 msgid "Public name" msgstr "" -#: pretix/base/models/event.py:1753 +#: pretix/base/models/event.py:1759 #: pretix/control/templates/pretixcontrol/organizers/properties.html:40 msgid "Can be used for filtering" msgstr "" -#: pretix/base/models/event.py:1754 +#: pretix/base/models/event.py:1760 msgid "" "This field will be shown to filter events or reports in the backend, and it " "can also be used for hidden filter parameters in the frontend (e.g. using " "the widget)." msgstr "" -#: pretix/base/models/event.py:1764 +#: pretix/base/models/event.py:1770 msgid "A property can either be required or have a default value, not both." msgstr "" -#: pretix/base/models/event.py:1844 pretix/base/models/organizer.py:516 +#: pretix/base/models/event.py:1850 pretix/base/models/organizer.py:516 msgid "Link text" msgstr "" -#: pretix/base/models/event.py:1847 pretix/base/models/organizer.py:519 +#: pretix/base/models/event.py:1853 pretix/base/models/organizer.py:519 msgid "Link URL" msgstr "" @@ -4554,12 +4559,12 @@ msgstr "" msgid "Dynamic validity" msgstr "" -#: pretix/base/models/items.py:444 pretix/control/forms/item.py:661 +#: pretix/base/models/items.py:444 pretix/control/forms/item.py:667 #: pretix/control/templates/pretixcontrol/subevents/fragment_unavail_mode_indicator.html:3 msgid "Hide product if unavailable" msgstr "" -#: pretix/base/models/items.py:445 pretix/control/forms/item.py:662 +#: pretix/base/models/items.py:445 pretix/control/forms/item.py:668 #: pretix/control/templates/pretixcontrol/subevents/fragment_unavail_mode_indicator.html:5 msgid "Show product with info on why it’s unavailable" msgstr "" @@ -4651,7 +4656,7 @@ msgstr "" msgid "Publicly show how many tickets are still available." msgstr "" -#: pretix/base/models/items.py:556 pretix/control/forms/item.py:626 +#: pretix/base/models/items.py:556 pretix/control/forms/item.py:632 msgid "Product picture" msgstr "" @@ -4807,7 +4812,7 @@ msgid "" "change but keep their current validity." msgstr "" -#: pretix/base/models/items.py:738 pretix/control/forms/item.py:729 +#: pretix/base/models/items.py:738 pretix/control/forms/item.py:735 msgid "Start of validity" msgstr "" @@ -4874,7 +4879,7 @@ msgstr "" #: pretix/base/models/items.py:795 pretix/base/models/items.py:1702 #: pretix/control/forms/filter.py:421 pretix/control/forms/filter.py:1895 -#: pretix/control/forms/item.py:272 pretix/control/navigation.py:138 +#: pretix/control/forms/item.py:278 pretix/control/navigation.py:138 #: pretix/control/navigation.py:147 #: pretix/control/templates/pretixcontrol/checkin/lists.html:104 #: pretix/control/templates/pretixcontrol/items/base.html:3 @@ -5105,7 +5110,7 @@ msgstr "" msgid "Country code (ISO 3166-1 alpha-2)" msgstr "" -#: pretix/base/models/items.py:1681 pretix/base/models/items.py:1938 +#: pretix/base/models/items.py:1681 pretix/base/models/items.py:1957 #: pretix/base/models/organizer.py:543 msgid "" "The identifier may only contain letters, numbers, dots, dashes, and " @@ -5241,49 +5246,56 @@ msgstr "" msgid "The maximum value must not be lower than the minimum value." msgstr "" -#: pretix/base/models/items.py:1942 +#: pretix/base/models/items.py:1943 +msgid "" +"The system already contains answers to this question that are not compatible " +"with changing the type of question without data loss. Consider hiding this " +"question and creating a new one instead." +msgstr "" + +#: pretix/base/models/items.py:1961 #: pretix/control/templates/pretixcontrol/items/question.html:90 msgid "Answer" msgstr "" -#: pretix/base/models/items.py:1966 +#: pretix/base/models/items.py:1985 msgid "The identifier \"{}\" is already used for a different option." msgstr "" -#: pretix/base/models/items.py:1969 +#: pretix/base/models/items.py:1988 msgid "Question option" msgstr "" -#: pretix/base/models/items.py:1970 +#: pretix/base/models/items.py:1989 msgid "Question options" msgstr "" -#: pretix/base/models/items.py:2055 pretix/control/forms/event.py:1715 +#: pretix/base/models/items.py:2074 pretix/control/forms/event.py:1715 #: pretix/control/templates/pretixcontrol/items/quotas.html:56 msgid "Total capacity" msgstr "" -#: pretix/base/models/items.py:2057 pretix/control/forms/item.py:449 +#: pretix/base/models/items.py:2076 pretix/control/forms/item.py:455 msgid "Leave empty for an unlimited number of tickets." msgstr "" -#: pretix/base/models/items.py:2061 pretix/base/models/orders.py:1489 +#: pretix/base/models/items.py:2080 pretix/base/models/orders.py:1489 #: pretix/base/models/orders.py:2986 #: pretix/control/templates/pretixcontrol/checkin/index.html:97 msgid "Item" msgstr "" -#: pretix/base/models/items.py:2069 pretix/control/forms/item.py:908 +#: pretix/base/models/items.py:2088 pretix/control/forms/item.py:914 #: pretix/plugins/autocheckin/models.py:74 msgid "Variations" msgstr "" -#: pretix/base/models/items.py:2073 +#: pretix/base/models/items.py:2092 #: pretix/control/templates/pretixcontrol/items/quotas.html:70 msgid "Ignore this quota when determining event availability" msgstr "" -#: pretix/base/models/items.py:2074 +#: pretix/base/models/items.py:2093 msgid "" "If you enable this, this quota will be ignored when determining event " "availability in your event calendar. This is useful e.g. for merchandise " @@ -5291,22 +5303,22 @@ msgid "" "as sold out." msgstr "" -#: pretix/base/models/items.py:2081 +#: pretix/base/models/items.py:2100 msgid "Close this quota permanently once it is sold out" msgstr "" -#: pretix/base/models/items.py:2082 +#: pretix/base/models/items.py:2101 msgid "" "If you enable this, when the quota is sold out once, no more tickets will be " "sold, even if tickets become available again through cancellations or " "expiring orders. Of course, you can always re-open it manually." msgstr "" -#: pretix/base/models/items.py:2090 +#: pretix/base/models/items.py:2109 msgid "Allow to sell more tickets once people have checked out" msgstr "" -#: pretix/base/models/items.py:2091 +#: pretix/base/models/items.py:2110 msgid "" "With this option, quota will be released as soon as people are scanned at an " "exit of your event. This will only happen if they have been scanned both at " @@ -5316,40 +5328,40 @@ msgid "" "prevent accidental overbooking." msgstr "" -#: pretix/base/models/items.py:2103 pretix/control/navigation.py:156 +#: pretix/base/models/items.py:2122 pretix/control/navigation.py:156 #: pretix/control/templates/pretixcontrol/items/quotas.html:4 #: pretix/control/templates/pretixcontrol/items/quotas.html:6 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:416 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:184 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:185 #: pretix/control/templates/pretixcontrol/subevents/detail.html:59 msgid "Quotas" msgstr "" -#: pretix/base/models/items.py:2176 +#: pretix/base/models/items.py:2195 msgid "All variations must belong to an item contained in the items list." msgstr "" -#: pretix/base/models/items.py:2187 +#: pretix/base/models/items.py:2206 msgid "" "One or more items has variations but none of these are in the variations " "list." msgstr "" -#: pretix/base/models/items.py:2193 pretix/base/models/waitinglist.py:305 +#: pretix/base/models/items.py:2212 pretix/base/models/waitinglist.py:305 msgid "Subevent cannot be null for event series." msgstr "" -#: pretix/base/models/items.py:2229 +#: pretix/base/models/items.py:2248 msgid "Required for products" msgstr "" -#: pretix/base/models/items.py:2230 +#: pretix/base/models/items.py:2249 msgid "" "If checked, this property must be set in each product. Does not apply if a " "default value is set." msgstr "" -#: pretix/base/models/items.py:2235 +#: pretix/base/models/items.py:2254 msgid "" "If you keep this empty, any value is allowed. Otherwise, enter one possible " "value per line." @@ -5405,7 +5417,7 @@ msgstr "" msgid "pending" msgstr "" -#: pretix/base/models/orders.py:203 pretix/base/payment.py:511 +#: pretix/base/models/orders.py:203 pretix/base/payment.py:568 #: pretix/base/services/invoices.py:475 msgid "paid" msgstr "" @@ -5636,12 +5648,12 @@ msgstr "" msgid "Other fees" msgstr "" -#: pretix/base/models/orders.py:2293 pretix/base/payment.py:1320 -#: pretix/base/payment.py:1324 pretix/base/settings.py:992 +#: pretix/base/models/orders.py:2293 pretix/base/payment.py:1372 +#: pretix/base/payment.py:1419 pretix/base/settings.py:992 #: pretix/control/forms/organizer.py:830 #: pretix/control/templates/pretixcontrol/items/index.html:107 #: pretix/control/templates/pretixcontrol/order/index.html:152 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:382 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:383 #: pretix/presale/templates/pretixpresale/event/order_giftcard.html:7 #: pretix/presale/templates/pretixpresale/event/position_giftcard.html:7 msgid "Gift card" @@ -6344,7 +6356,7 @@ msgstr "" #: pretix/base/notifications.py:200 #: pretix/control/templates/pretixcontrol/order/index.html:678 #: pretix/plugins/reports/accountingreport.py:317 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:441 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:442 msgid "Net total" msgstr "" @@ -6435,74 +6447,119 @@ msgstr "" msgid "You have been requested to issue a refund for {order.code}." msgstr "" -#: pretix/base/payment.py:86 +#: pretix/base/payment.py:85 msgctxt "payment" msgid "Apple Pay" msgstr "" -#: pretix/base/payment.py:87 +#: pretix/base/payment.py:86 msgctxt "payment" msgid "Google Pay" msgstr "" -#: pretix/base/payment.py:256 +#: pretix/base/payment.py:117 pretix/base/payment.py:1579 +msgid "You cannot pay with gift cards when buying a gift card." +msgstr "" + +#: pretix/base/payment.py:126 pretix/base/payment.py:1589 +#: pretix/base/payment.py:1591 +msgid "This gift card does not support this currency." +msgstr "" + +#: pretix/base/payment.py:128 pretix/base/payment.py:1597 +msgid "This gift card can only be used in test mode." +msgstr "" + +#: pretix/base/payment.py:130 pretix/base/payment.py:1599 +msgid "Only test gift cards can be used in test mode." +msgstr "" + +#: pretix/base/payment.py:132 pretix/base/payment.py:1601 +msgid "This gift card is no longer valid." +msgstr "" + +#: pretix/base/payment.py:134 +msgid "All credit on this gift card has been used." +msgstr "" + +#: pretix/base/payment.py:141 +msgid "This gift card is already used for your payment." +msgstr "" + +#: pretix/base/payment.py:145 +msgid "" +"You entered a voucher instead of a gift card. Vouchers can only be entered " +"on the first page of the shop below the product selection." +msgstr "" + +#: pretix/base/payment.py:149 +msgid "This gift card is not known." +msgstr "" + +#: pretix/base/payment.py:152 +msgid "" +"This gift card can not be redeemed since its code is not unique. Please " +"contact the organizer of this event." +msgstr "" + +#: pretix/base/payment.py:313 #: pretix/presale/templates/pretixpresale/event/order.html:116 msgid "Pay now" msgstr "" -#: pretix/base/payment.py:330 +#: pretix/base/payment.py:387 msgid "Enable payment method" msgstr "" -#: pretix/base/payment.py:336 +#: pretix/base/payment.py:393 msgid "" "Users will not be able to choose this payment provider before the given date." msgstr "" -#: pretix/base/payment.py:342 +#: pretix/base/payment.py:399 msgid "" "Users will not be able to choose this payment provider after the given date." msgstr "" -#: pretix/base/payment.py:347 +#: pretix/base/payment.py:404 msgid "Minimum order total" msgstr "" -#: pretix/base/payment.py:348 +#: pretix/base/payment.py:405 msgid "" "This payment will be available only if the order total is equal to or " "exceeds the given value. The order total for this purpose may be computed " "without taking the fees imposed by this payment method into account." msgstr "" -#: pretix/base/payment.py:358 +#: pretix/base/payment.py:415 msgid "Maximum order total" msgstr "" -#: pretix/base/payment.py:359 +#: pretix/base/payment.py:416 msgid "" "This payment will be available only if the order total is equal to or below " "the given value. The order total for this purpose may be computed without " "taking the fees imposed by this payment method into account." msgstr "" -#: pretix/base/payment.py:369 pretix/base/payment.py:378 +#: pretix/base/payment.py:426 pretix/base/payment.py:435 msgid "Additional fee" msgstr "" -#: pretix/base/payment.py:370 +#: pretix/base/payment.py:427 msgid "Absolute value" msgstr "" -#: pretix/base/payment.py:379 +#: pretix/base/payment.py:436 msgid "Percentage of the order total." msgstr "" -#: pretix/base/payment.py:385 +#: pretix/base/payment.py:442 msgid "Calculate the fee from the total value including the fee." msgstr "" -#: pretix/base/payment.py:386 +#: pretix/base/payment.py:443 #, python-brace-format msgid "" "We recommend to enable this if you want your users to pay the payment fees " @@ -6511,11 +6568,11 @@ msgid "" "Don't forget to set the correct fees above!" msgstr "" -#: pretix/base/payment.py:394 +#: pretix/base/payment.py:451 msgid "Text on invoices" msgstr "" -#: pretix/base/payment.py:395 +#: pretix/base/payment.py:452 msgid "" "Will be printed just below the payment figures and above the closing text on " "invoices. This will only be used if the invoice is generated before the " @@ -6523,111 +6580,111 @@ msgid "" "stating that it has already been paid." msgstr "" -#: pretix/base/payment.py:404 +#: pretix/base/payment.py:461 msgid "Restrict to countries" msgstr "" -#: pretix/base/payment.py:406 +#: pretix/base/payment.py:463 msgid "" "Only allow choosing this payment provider for invoice addresses in the " "selected countries. If you don't select any country, all countries are " "allowed. This is only enabled if the invoice address is required." msgstr "" -#: pretix/base/payment.py:425 +#: pretix/base/payment.py:482 msgid "" "Only allow the usage of this payment provider in the selected sales channels." msgstr "" -#: pretix/base/payment.py:429 +#: pretix/base/payment.py:486 msgid "Hide payment method" msgstr "" -#: pretix/base/payment.py:432 +#: pretix/base/payment.py:489 msgid "" "The payment method will not be shown by default but only to people who enter " "the shop through a special link." msgstr "" -#: pretix/base/payment.py:438 +#: pretix/base/payment.py:495 msgid "Link to enable payment method" msgstr "" -#: pretix/base/payment.py:447 +#: pretix/base/payment.py:504 msgid "Share this link with customers who should use this payment method." msgstr "" -#: pretix/base/payment.py:452 +#: pretix/base/payment.py:509 msgid "Do not send a payment reminder mail" msgstr "" -#: pretix/base/payment.py:453 +#: pretix/base/payment.py:510 msgid "" "Users will not receive a reminder mail to pay for their order before it " "expires if they have chosen this payment method." msgstr "" -#: pretix/base/payment.py:500 +#: pretix/base/payment.py:557 msgctxt "invoice" msgid "The payment for this invoice has already been received." msgstr "" -#: pretix/base/payment.py:970 +#: pretix/base/payment.py:1022 msgid "" "This payment is already being processed and can not be canceled any more." msgstr "" -#: pretix/base/payment.py:984 +#: pretix/base/payment.py:1036 msgid "Automatic refunds are not supported by this payment provider." msgstr "" -#: pretix/base/payment.py:1075 +#: pretix/base/payment.py:1127 msgid "" "No payment is required as this order only includes products which are free " "of charge." msgstr "" -#: pretix/base/payment.py:1082 +#: pretix/base/payment.py:1134 msgid "Free of charge" msgstr "" -#: pretix/base/payment.py:1114 +#: pretix/base/payment.py:1166 msgid "Box office" msgstr "" -#: pretix/base/payment.py:1162 pretix/base/payment.py:1181 +#: pretix/base/payment.py:1214 pretix/base/payment.py:1233 #: pretix/plugins/manualpayment/apps.py:30 #: pretix/plugins/manualpayment/apps.py:33 #: pretix/plugins/manualpayment/apps.py:39 msgid "Manual payment" msgstr "" -#: pretix/base/payment.py:1167 pretix/plugins/banktransfer/payment.py:202 +#: pretix/base/payment.py:1219 pretix/plugins/banktransfer/payment.py:202 msgid "" "In test mode, you can just manually mark this order as paid in the backend " "after it has been created." msgstr "" -#: pretix/base/payment.py:1188 pretix/base/payment.py:1332 +#: pretix/base/payment.py:1240 pretix/base/payment.py:1427 #: pretix/plugins/banktransfer/payment.py:156 msgid "Payment method name" msgstr "" -#: pretix/base/payment.py:1192 +#: pretix/base/payment.py:1244 msgid "Payment process description during checkout" msgstr "" -#: pretix/base/payment.py:1193 +#: pretix/base/payment.py:1245 msgid "" "This text will be shown during checkout when the user selects this payment " "method. It should give a short explanation on this payment method." msgstr "" -#: pretix/base/payment.py:1198 +#: pretix/base/payment.py:1250 msgid "Payment process description in order confirmation emails" msgstr "" -#: pretix/base/payment.py:1199 +#: pretix/base/payment.py:1251 #, python-brace-format msgid "" "This text will be included for the {payment_info} placeholder in order " @@ -6636,11 +6693,11 @@ msgid "" "{amount_with_currency}." msgstr "" -#: pretix/base/payment.py:1206 +#: pretix/base/payment.py:1258 msgid "Payment process description for pending orders" msgstr "" -#: pretix/base/payment.py:1207 +#: pretix/base/payment.py:1259 #, python-brace-format msgid "" "This text will be shown on the order confirmation page for pending orders. " @@ -6648,91 +6705,38 @@ msgid "" "the placeholders {order}, {amount}, {currency} and {amount_with_currency}." msgstr "" -#: pretix/base/payment.py:1215 pretix/plugins/banktransfer/payment.py:151 +#: pretix/base/payment.py:1267 pretix/plugins/banktransfer/payment.py:151 msgid "" "Create an invoice for orders using bank transfer immediately if the event is " "otherwise configured to create invoices after payment is completed." msgstr "" -#: pretix/base/payment.py:1266 +#: pretix/base/payment.py:1318 msgid "Offsetting" msgstr "" -#: pretix/base/payment.py:1280 pretix/control/views/orders.py:1265 +#: pretix/base/payment.py:1332 pretix/control/views/orders.py:1266 msgid "You entered an order that could not be found." msgstr "" -#: pretix/base/payment.py:1309 +#: pretix/base/payment.py:1361 #, python-format msgid "Balanced against orders: %s" msgstr "" -#: pretix/base/payment.py:1338 +#: pretix/base/payment.py:1433 msgid "Payment method description" msgstr "" -#: pretix/base/payment.py:1355 +#: pretix/base/payment.py:1463 msgid "In test mode, only test cards will work." msgstr "" -#: pretix/base/payment.py:1436 pretix/base/payment.py:1501 -#: pretix/base/payment.py:1546 pretix/base/payment.py:1548 -msgid "This gift card does not support this currency." -msgstr "" - -#: pretix/base/payment.py:1438 pretix/base/payment.py:1504 -#: pretix/base/payment.py:1554 -msgid "This gift card can only be used in test mode." -msgstr "" - -#: pretix/base/payment.py:1440 pretix/base/payment.py:1507 -#: pretix/base/payment.py:1556 -msgid "Only test gift cards can be used in test mode." -msgstr "" - -#: pretix/base/payment.py:1442 pretix/base/payment.py:1510 -#: pretix/base/payment.py:1558 -msgid "This gift card is no longer valid." -msgstr "" - -#: pretix/base/payment.py:1444 pretix/base/payment.py:1513 -msgid "All credit on this gift card has been used." -msgstr "" - -#: pretix/base/payment.py:1448 -msgid "This gift card is already used for your payment." -msgstr "" - -#: pretix/base/payment.py:1463 pretix/base/payment.py:1493 -#: pretix/base/payment.py:1536 -msgid "You cannot pay with gift cards when buying a gift card." -msgstr "" - -#: pretix/base/payment.py:1467 -msgid "Please enter the code of your gift card." -msgstr "" - -#: pretix/base/payment.py:1483 pretix/base/payment.py:1526 -msgid "" -"You entered a voucher instead of a gift card. Vouchers can only be entered " -"on the first page of the shop below the product selection." -msgstr "" - -#: pretix/base/payment.py:1486 pretix/base/payment.py:1529 -msgid "This gift card is not known." -msgstr "" - -#: pretix/base/payment.py:1488 pretix/base/payment.py:1531 -msgid "" -"This gift card can not be redeemed since its code is not unique. Please " -"contact the organizer of this event." -msgstr "" - -#: pretix/base/payment.py:1550 +#: pretix/base/payment.py:1593 msgid "This gift card is not accepted by this event organizer." msgstr "" -#: pretix/base/payment.py:1552 +#: pretix/base/payment.py:1595 msgid "This gift card was used in the meantime. Please try again." msgstr "" @@ -6816,8 +6820,8 @@ msgstr "" #: pretix/control/templates/pretixcontrol/order/index.html:543 #: pretix/plugins/badges/exporters.py:496 #: pretix/plugins/ticketoutputpdf/exporters.py:95 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:181 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:184 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:182 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:185 msgid "Attendee company" msgstr "" @@ -7030,7 +7034,7 @@ msgstr "" msgid "Printing time" msgstr "" -#: pretix/base/pdf.py:411 pretix/control/forms/item.py:731 +#: pretix/base/pdf.py:411 pretix/control/forms/item.py:737 msgid "Purchase date" msgstr "" @@ -7301,7 +7305,7 @@ msgstr[1] "" #: pretix/base/services/cart.py:145 pretix/base/services/orders.py:154 #: pretix/presale/templates/pretixpresale/event/index.html:171 -#: pretix/presale/views/waiting.py:145 pretix/presale/views/widget.py:788 +#: pretix/presale/views/waiting.py:145 pretix/presale/views/widget.py:781 msgid "The booking period for this event has not yet started." msgstr "" @@ -7771,30 +7775,30 @@ msgid "" "settings." msgstr "" -#: pretix/base/services/mail.py:121 +#: pretix/base/services/mail.py:128 msgid "This prefix has been set in your event or organizer settings." msgstr "" -#: pretix/base/services/mail.py:278 +#: pretix/base/services/mail.py:285 #, python-brace-format msgid "" "You are receiving this email because someone placed an order for {event} for " "you." msgstr "" -#: pretix/base/services/mail.py:282 pretix/base/services/mail.py:298 +#: pretix/base/services/mail.py:289 pretix/base/services/mail.py:305 #, python-brace-format msgid "" "You can view your order details at the following URL:\n" "{orderurl}." msgstr "" -#: pretix/base/services/mail.py:294 +#: pretix/base/services/mail.py:301 #, python-brace-format msgid "You are receiving this email because you placed an order for {event}." msgstr "" -#: pretix/base/services/mail.py:478 +#: pretix/base/services/mail.py:485 msgctxt "attachment_filename" msgid "Calendar invite" msgstr "" @@ -8038,8 +8042,8 @@ msgstr "" msgid "This order is not pending approval." msgstr "" -#: pretix/base/services/orders.py:511 pretix/presale/views/order.py:928 -#: pretix/presale/views/order.py:982 +#: pretix/base/services/orders.py:511 pretix/presale/views/order.py:930 +#: pretix/presale/views/order.py:984 msgid "You cannot cancel this order." msgstr "" @@ -8490,7 +8494,7 @@ msgid "Show exchange rates" msgstr "" #: pretix/base/settings.py:524 pretix/base/settings.py:532 -#: pretix/control/forms/item.py:619 +#: pretix/control/forms/item.py:625 msgid "Never" msgstr "" @@ -11387,6 +11391,12 @@ msgstr "" #: pretix/base/timeline.py:351 #, python-brace-format msgctxt "timeline" +msgid "Payment provider \"{name}\" becomes active" +msgstr "" + +#: pretix/base/timeline.py:369 +#, python-brace-format +msgctxt "timeline" msgid "Payment provider \"{name}\" can no longer be selected" msgstr "" @@ -11573,12 +11583,12 @@ msgid "Copy configuration from" msgstr "" #: pretix/control/forms/event.py:318 pretix/control/forms/event.py:321 -#: pretix/control/forms/item.py:408 +#: pretix/control/forms/item.py:414 msgid "Do not copy" msgstr "" -#: pretix/control/forms/event.py:337 pretix/control/forms/item.py:1294 -#: pretix/control/forms/subevents.py:407 +#: pretix/control/forms/event.py:337 pretix/control/forms/item.py:1300 +#: pretix/control/forms/subevents.py:414 #, python-brace-format msgid "Default ({value})" msgstr "" @@ -12793,138 +12803,138 @@ msgid "" "configuration below." msgstr "" -#: pretix/control/forms/item.py:142 pretix/control/forms/item.py:212 +#: pretix/control/forms/item.py:142 pretix/control/forms/item.py:218 msgid "This field is required" msgstr "" -#: pretix/control/forms/item.py:214 +#: pretix/control/forms/item.py:220 msgid "Dependencies between questions are not supported during check-in." msgstr "" -#: pretix/control/forms/item.py:309 +#: pretix/control/forms/item.py:315 msgid "No products" msgstr "" -#: pretix/control/forms/item.py:375 +#: pretix/control/forms/item.py:381 msgid "The product should exist in multiple variations" msgstr "" -#: pretix/control/forms/item.py:376 +#: pretix/control/forms/item.py:382 msgid "" "Select this option e.g. for t-shirts that come in multiple sizes. You can " "select the variations in the next step." msgstr "" -#: pretix/control/forms/item.py:396 pretix/control/forms/item.py:721 +#: pretix/control/forms/item.py:402 pretix/control/forms/item.py:727 msgid "No category" msgstr "" -#: pretix/control/forms/item.py:403 +#: pretix/control/forms/item.py:409 msgid "No taxation" msgstr "" -#: pretix/control/forms/item.py:405 +#: pretix/control/forms/item.py:411 msgid "Copy product information" msgstr "" -#: pretix/control/forms/item.py:416 +#: pretix/control/forms/item.py:422 msgid "Do not add to a quota now" msgstr "" -#: pretix/control/forms/item.py:417 +#: pretix/control/forms/item.py:423 msgid "Add product to an existing quota" msgstr "" -#: pretix/control/forms/item.py:418 +#: pretix/control/forms/item.py:424 msgid "Create a new quota for this product" msgstr "" -#: pretix/control/forms/item.py:424 +#: pretix/control/forms/item.py:430 msgid "Quota options" msgstr "" -#: pretix/control/forms/item.py:432 +#: pretix/control/forms/item.py:438 msgid "Add to existing quota" msgstr "" -#: pretix/control/forms/item.py:441 +#: pretix/control/forms/item.py:447 msgid "New quota name" msgstr "" -#: pretix/control/forms/item.py:447 +#: pretix/control/forms/item.py:453 msgid "Size" msgstr "" -#: pretix/control/forms/item.py:448 +#: pretix/control/forms/item.py:454 msgid "Number of tickets" msgstr "" -#: pretix/control/forms/item.py:580 +#: pretix/control/forms/item.py:586 msgid "Quota name is required." msgstr "" -#: pretix/control/forms/item.py:585 +#: pretix/control/forms/item.py:591 msgid "Please select a quota." msgstr "" -#: pretix/control/forms/item.py:607 pretix/plugins/badges/forms.py:85 +#: pretix/control/forms/item.py:613 pretix/plugins/badges/forms.py:85 #: pretix/plugins/ticketoutputpdf/forms.py:55 msgid "(Event default)" msgstr "" -#: pretix/control/forms/item.py:617 +#: pretix/control/forms/item.py:623 msgid "Choose automatically depending on event settings" msgstr "" -#: pretix/control/forms/item.py:618 +#: pretix/control/forms/item.py:624 msgid "Yes, if ticket generation is enabled in general" msgstr "" -#: pretix/control/forms/item.py:636 +#: pretix/control/forms/item.py:642 msgid "" "e.g. This reduced price is available for full-time students, jobless and " "people over 65. This ticket includes access to all parts of the event, " "except the VIP area." msgstr "" -#: pretix/control/forms/item.py:680 +#: pretix/control/forms/item.py:686 msgid "" "This option is deprecated. For new products, use the newer option below that " "refers to another product instead of a quota." msgstr "" -#: pretix/control/forms/item.py:691 pretix/control/forms/item.py:707 +#: pretix/control/forms/item.py:697 pretix/control/forms/item.py:713 msgid "Shown independently of other products" msgstr "" -#: pretix/control/forms/item.py:732 +#: pretix/control/forms/item.py:738 msgid "Date chosen by customer" msgstr "" -#: pretix/control/forms/item.py:741 +#: pretix/control/forms/item.py:747 msgid "No membership granted" msgstr "" -#: pretix/control/forms/item.py:760 +#: pretix/control/forms/item.py:766 msgid "" "Gift card products should use a tax rule with a rate of 0 percent since " "sales tax will be applied when the gift card is redeemed." msgstr "" -#: pretix/control/forms/item.py:766 +#: pretix/control/forms/item.py:772 msgid "" "Do not set a specific validity for gift card products as it will not " "restrict the validity of the gift card. A validity of gift cards can be set " "in your organizer settings." msgstr "" -#: pretix/control/forms/item.py:785 pretix/control/forms/item.py:1052 +#: pretix/control/forms/item.py:791 pretix/control/forms/item.py:1058 msgid "" "If a valid membership is required, at least one valid membership type needs " "to be selected." msgstr "" -#: pretix/control/forms/item.py:796 +#: pretix/control/forms/item.py:802 msgid "" "Your product grants a non-transferable membership and should therefore be a " "personalized admission ticket. Otherwise customers might not be able to use " @@ -12932,17 +12942,17 @@ msgid "" "the membership type to be transferable." msgstr "" -#: pretix/control/forms/item.py:805 +#: pretix/control/forms/item.py:811 msgid "The start of validity must be before the end of validity." msgstr "" -#: pretix/control/forms/item.py:812 +#: pretix/control/forms/item.py:818 msgid "" "You have selected dynamic validity but have not entered a time period. This " "would render the tickets unusable." msgstr "" -#: pretix/control/forms/item.py:917 +#: pretix/control/forms/item.py:923 #, python-format msgid "" "The variation \"%s\" cannot be deleted because it has already been ordered " @@ -12950,39 +12960,39 @@ msgid "" "\"inactive\" instead." msgstr "" -#: pretix/control/forms/item.py:994 +#: pretix/control/forms/item.py:1000 msgid "Use value from product" msgstr "" -#: pretix/control/forms/item.py:1079 +#: pretix/control/forms/item.py:1085 msgid "Add-ons" msgstr "" -#: pretix/control/forms/item.py:1103 +#: pretix/control/forms/item.py:1109 msgid "You added the same add-on category twice" msgstr "" -#: pretix/control/forms/item.py:1148 +#: pretix/control/forms/item.py:1154 msgid "" "Be aware that setting a minimal number makes it impossible to buy this " "product if all available add-ons are sold out." msgstr "" -#: pretix/control/forms/item.py:1155 +#: pretix/control/forms/item.py:1161 msgid "Bundled products" msgstr "" -#: pretix/control/forms/item.py:1205 +#: pretix/control/forms/item.py:1211 msgid "You added the same bundled product twice." msgstr "" -#: pretix/control/forms/item.py:1211 +#: pretix/control/forms/item.py:1217 #: pretix/control/templates/pretixcontrol/item/include_bundles.html:23 #: pretix/control/templates/pretixcontrol/item/include_bundles.html:50 msgid "Bundled product" msgstr "" -#: pretix/control/forms/item.py:1236 pretix/control/forms/orders.py:367 +#: pretix/control/forms/item.py:1242 pretix/control/forms/orders.py:367 #: pretix/control/forms/orders.py:557 msgid "inactive" msgstr "" @@ -13210,7 +13220,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/order/change.html:127 #: pretix/control/views/vouchers.py:120 #: pretix/presale/templates/pretixpresale/event/checkout_membership.html:23 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:95 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:99 msgid "Seat" msgstr "" @@ -13546,7 +13556,7 @@ msgstr "" #: pretix/control/forms/organizer.py:908 #: pretix/control/templates/pretixcontrol/organizers/customer.html:61 -#: pretix/presale/forms/customer.py:168 pretix/presale/forms/customer.py:489 +#: pretix/presale/forms/customer.py:169 pretix/presale/forms/customer.py:493 msgid "Phone" msgstr "" @@ -13659,9 +13669,9 @@ msgstr "" #: pretix/control/forms/renderers.py:148 #: pretix/control/templates/pretixcontrol/organizers/device_bulk_edit.html:26 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:48 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:197 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:284 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:49 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:192 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:286 msgctxt "form_bulk" msgid "change" msgstr "" @@ -13715,7 +13725,7 @@ msgid "last" msgstr "" #: pretix/control/forms/rrule.py:110 pretix/control/forms/rrule.py:149 -#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:21 +#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:20 msgid "Day" msgstr "" @@ -13731,15 +13741,15 @@ msgstr "" msgid "Selection contains various values" msgstr "" -#: pretix/control/forms/subevents.py:285 pretix/control/forms/subevents.py:314 +#: pretix/control/forms/subevents.py:292 pretix/control/forms/subevents.py:321 msgid "The end of availability should be after the start of availability." msgstr "" -#: pretix/control/forms/subevents.py:347 +#: pretix/control/forms/subevents.py:354 msgid "Available_until" msgstr "" -#: pretix/control/forms/subevents.py:466 +#: pretix/control/forms/subevents.py:473 msgid "Exclude these dates instead of adding them." msgstr "" @@ -13751,7 +13761,7 @@ msgstr "" msgid "Specific seat ID" msgstr "" -#: pretix/control/forms/vouchers.py:201 pretix/presale/forms/waitinglist.py:101 +#: pretix/control/forms/vouchers.py:201 pretix/presale/forms/waitinglist.py:103 msgid "Invalid product selected." msgstr "" @@ -14053,7 +14063,7 @@ msgid "The check-in of position #{posid} on list \"{list}\" has been reverted." msgstr "" #: pretix/control/logdisplay.py:343 pretix/control/logdisplay.py:345 -#: pretix/control/logdisplay.py:891 pretix/control/logdisplay.py:893 +#: pretix/control/logdisplay.py:887 pretix/control/logdisplay.py:889 msgid "(unknown)" msgstr "" @@ -14102,8 +14112,8 @@ msgstr "" msgid "The order has been canceled (comment: \"{comment}\")." msgstr "" -#: pretix/control/logdisplay.py:406 pretix/control/views/orders.py:1573 -#: pretix/presale/views/order.py:1047 +#: pretix/control/logdisplay.py:406 pretix/control/views/orders.py:1574 +#: pretix/presale/views/order.py:1049 msgid "The order has been canceled." msgstr "" @@ -14112,11 +14122,11 @@ msgstr "" msgid "Position #{posid} has been printed at {datetime} with type \"{type}\"." msgstr "" -#: pretix/control/logdisplay.py:428 pretix/control/logdisplay.py:741 +#: pretix/control/logdisplay.py:428 pretix/control/logdisplay.py:737 msgid "The settings of a payment provider have been changed." msgstr "" -#: pretix/control/logdisplay.py:431 pretix/control/logdisplay.py:740 +#: pretix/control/logdisplay.py:431 pretix/control/logdisplay.py:736 msgid "The settings of a ticket output provider have been changed." msgstr "" @@ -14157,11 +14167,11 @@ msgstr "" msgid "The order has been set to require payment before use." msgstr "" -#: pretix/control/logdisplay.py:450 pretix/control/views/orders.py:1578 +#: pretix/control/logdisplay.py:450 pretix/control/views/orders.py:1579 msgid "The order has been marked as expired." msgstr "" -#: pretix/control/logdisplay.py:451 pretix/control/views/orders.py:1476 +#: pretix/control/logdisplay.py:451 pretix/control/views/orders.py:1477 msgid "The order has been marked as paid." msgstr "" @@ -14173,7 +14183,7 @@ msgstr "" msgid "The order has been refunded." msgstr "" -#: pretix/control/logdisplay.py:454 pretix/control/views/orders.py:1861 +#: pretix/control/logdisplay.py:454 pretix/control/views/orders.py:1862 msgid "The order has been reactivated." msgstr "" @@ -14185,7 +14195,7 @@ msgstr "" msgid "The order requires approval before it can continue to be processed." msgstr "" -#: pretix/control/logdisplay.py:458 pretix/control/views/orders.py:800 +#: pretix/control/logdisplay.py:458 pretix/control/views/orders.py:801 msgid "The order has been approved." msgstr "" @@ -14220,17 +14230,17 @@ msgstr "" msgid "The order locale has been changed." msgstr "" -#: pretix/control/logdisplay.py:469 pretix/control/views/orders.py:1617 -#: pretix/presale/views/order.py:739 pretix/presale/views/order.py:812 +#: pretix/control/logdisplay.py:469 pretix/control/views/orders.py:1618 +#: pretix/presale/views/order.py:741 pretix/presale/views/order.py:814 msgid "The invoice has been generated." msgstr "" -#: pretix/control/logdisplay.py:470 pretix/control/views/orders.py:1688 +#: pretix/control/logdisplay.py:470 pretix/control/views/orders.py:1689 msgid "The invoice has been regenerated." msgstr "" -#: pretix/control/logdisplay.py:471 pretix/control/views/orders.py:1719 -#: pretix/presale/views/order.py:825 +#: pretix/control/logdisplay.py:471 pretix/control/views/orders.py:1720 +#: pretix/presale/views/order.py:827 msgid "The invoice has been reissued." msgstr "" @@ -14470,7 +14480,7 @@ msgstr "" msgid "The organizer settings have been changed." msgstr "" -#: pretix/control/logdisplay.py:625 pretix/control/logdisplay.py:748 +#: pretix/control/logdisplay.py:625 pretix/control/logdisplay.py:744 msgid "The footer links have been changed." msgstr "" @@ -14733,412 +14743,412 @@ msgstr "" msgid "The organizer \"{name}\" has been deleted." msgstr "" -#: pretix/control/logdisplay.py:699 pretix/control/logdisplay.py:700 +#: pretix/control/logdisplay.py:699 pretix/control/logdisplay.py:905 msgid "A voucher has been sent to a person on the waiting list." msgstr "" -#: pretix/control/logdisplay.py:701 -msgid "An entry has been removed from the waiting list." -msgstr "" - -#: pretix/control/logdisplay.py:702 +#: pretix/control/logdisplay.py:700 msgid "An entry has been transferred to another waiting list." msgstr "" -#: pretix/control/logdisplay.py:703 -msgid "An entry has been changed on the waiting list." -msgstr "" - -#: pretix/control/logdisplay.py:704 -msgid "An entry has been added to the waiting list." -msgstr "" - -#: pretix/control/logdisplay.py:705 +#: pretix/control/logdisplay.py:701 msgid "The team has been created." msgstr "" -#: pretix/control/logdisplay.py:706 +#: pretix/control/logdisplay.py:702 msgid "The team settings have been changed." msgstr "" -#: pretix/control/logdisplay.py:707 +#: pretix/control/logdisplay.py:703 msgid "The team has been deleted." msgstr "" -#: pretix/control/logdisplay.py:708 pretix/control/views/organizer.py:2012 +#: pretix/control/logdisplay.py:704 pretix/control/views/organizer.py:2012 msgid "The gate has been created." msgstr "" -#: pretix/control/logdisplay.py:709 +#: pretix/control/logdisplay.py:705 msgid "The gate has been changed." msgstr "" -#: pretix/control/logdisplay.py:710 +#: pretix/control/logdisplay.py:706 msgid "The gate has been deleted." msgstr "" -#: pretix/control/logdisplay.py:711 +#: pretix/control/logdisplay.py:707 msgctxt "subevent" msgid "The event date has been deleted." msgstr "" -#: pretix/control/logdisplay.py:712 +#: pretix/control/logdisplay.py:708 msgctxt "subevent" msgid "The event date has been canceled." msgstr "" -#: pretix/control/logdisplay.py:713 +#: pretix/control/logdisplay.py:709 msgctxt "subevent" msgid "The event date has been changed." msgstr "" -#: pretix/control/logdisplay.py:714 +#: pretix/control/logdisplay.py:710 msgctxt "subevent" msgid "The event date has been created." msgstr "" -#: pretix/control/logdisplay.py:715 +#: pretix/control/logdisplay.py:711 msgctxt "subevent" msgid "A quota has been added to the event date." msgstr "" -#: pretix/control/logdisplay.py:716 +#: pretix/control/logdisplay.py:712 msgctxt "subevent" msgid "A quota has been changed on the event date." msgstr "" -#: pretix/control/logdisplay.py:717 +#: pretix/control/logdisplay.py:713 msgctxt "subevent" msgid "A quota has been removed from the event date." msgstr "" -#: pretix/control/logdisplay.py:718 +#: pretix/control/logdisplay.py:714 msgid "The device has been created." msgstr "" -#: pretix/control/logdisplay.py:719 +#: pretix/control/logdisplay.py:715 msgid "The device has been changed." msgstr "" -#: pretix/control/logdisplay.py:720 +#: pretix/control/logdisplay.py:716 msgid "Access of the device has been revoked." msgstr "" -#: pretix/control/logdisplay.py:721 +#: pretix/control/logdisplay.py:717 msgid "The device has been initialized." msgstr "" -#: pretix/control/logdisplay.py:722 +#: pretix/control/logdisplay.py:718 msgid "The access token of the device has been regenerated." msgstr "" -#: pretix/control/logdisplay.py:723 +#: pretix/control/logdisplay.py:719 msgid "The device has notified the server of an hardware or software update." msgstr "" -#: pretix/control/logdisplay.py:724 +#: pretix/control/logdisplay.py:720 msgid "The gift card has been created." msgstr "" -#: pretix/control/logdisplay.py:725 pretix/control/views/organizer.py:1656 +#: pretix/control/logdisplay.py:721 pretix/control/views/organizer.py:1656 msgid "The gift card has been changed." msgstr "" -#: pretix/control/logdisplay.py:726 +#: pretix/control/logdisplay.py:722 msgid "A manual transaction has been performed." msgstr "" -#: pretix/control/logdisplay.py:727 +#: pretix/control/logdisplay.py:723 #, python-brace-format msgid "The token \"{name}\" has been created." msgstr "" -#: pretix/control/logdisplay.py:728 +#: pretix/control/logdisplay.py:724 #, python-brace-format msgid "The token \"{name}\" has been revoked." msgstr "" -#: pretix/control/logdisplay.py:735 +#: pretix/control/logdisplay.py:731 msgid "A meta property has been added to this event." msgstr "" -#: pretix/control/logdisplay.py:736 +#: pretix/control/logdisplay.py:732 msgid "A meta property has been removed from this event." msgstr "" -#: pretix/control/logdisplay.py:737 +#: pretix/control/logdisplay.py:733 msgid "A meta property has been changed on this event." msgstr "" -#: pretix/control/logdisplay.py:738 +#: pretix/control/logdisplay.py:734 msgid "The event settings have been changed." msgstr "" -#: pretix/control/logdisplay.py:739 +#: pretix/control/logdisplay.py:735 msgid "The ticket download settings have been changed." msgstr "" -#: pretix/control/logdisplay.py:742 +#: pretix/control/logdisplay.py:738 msgid "The shop has been taken live." msgstr "" -#: pretix/control/logdisplay.py:743 +#: pretix/control/logdisplay.py:739 msgid "The shop has been taken offline." msgstr "" -#: pretix/control/logdisplay.py:744 +#: pretix/control/logdisplay.py:740 msgid "The shop has been taken into test mode." msgstr "" -#: pretix/control/logdisplay.py:745 +#: pretix/control/logdisplay.py:741 msgid "The test mode has been disabled." msgstr "" -#: pretix/control/logdisplay.py:746 +#: pretix/control/logdisplay.py:742 msgid "The event has been created." msgstr "" -#: pretix/control/logdisplay.py:747 +#: pretix/control/logdisplay.py:743 msgid "The event details have been changed." msgstr "" -#: pretix/control/logdisplay.py:749 +#: pretix/control/logdisplay.py:745 msgid "An answer option has been added to the question." msgstr "" -#: pretix/control/logdisplay.py:750 +#: pretix/control/logdisplay.py:746 msgid "An answer option has been removed from the question." msgstr "" -#: pretix/control/logdisplay.py:751 +#: pretix/control/logdisplay.py:747 msgid "An answer option has been changed." msgstr "" -#: pretix/control/logdisplay.py:752 +#: pretix/control/logdisplay.py:748 msgid "A user has been added to the event team." msgstr "" -#: pretix/control/logdisplay.py:753 +#: pretix/control/logdisplay.py:749 msgid "A user has been invited to the event team." msgstr "" -#: pretix/control/logdisplay.py:754 +#: pretix/control/logdisplay.py:750 msgid "A user's permissions have been changed." msgstr "" -#: pretix/control/logdisplay.py:755 +#: pretix/control/logdisplay.py:751 msgid "A user has been removed from the event team." msgstr "" -#: pretix/control/logdisplay.py:762 +#: pretix/control/logdisplay.py:758 msgid "The check-in list has been added." msgstr "" -#: pretix/control/logdisplay.py:763 pretix/control/logdisplay.py:764 +#: pretix/control/logdisplay.py:759 pretix/control/logdisplay.py:760 msgid "The check-in list has been deleted." msgstr "" -#: pretix/control/logdisplay.py:765 +#: pretix/control/logdisplay.py:761 msgid "The check-in list has been changed." msgstr "" -#: pretix/control/logdisplay.py:768 +#: pretix/control/logdisplay.py:764 #, python-brace-format msgid "Check-in list {val}" msgstr "" -#: pretix/control/logdisplay.py:775 +#: pretix/control/logdisplay.py:771 msgid "The plugin has been enabled." msgstr "" -#: pretix/control/logdisplay.py:776 pretix/control/views/event.py:464 +#: pretix/control/logdisplay.py:772 pretix/control/views/event.py:464 msgid "The plugin has been disabled." msgstr "" -#: pretix/control/logdisplay.py:779 +#: pretix/control/logdisplay.py:775 #, python-brace-format msgid "Plugin {val}" msgstr "" -#: pretix/control/logdisplay.py:795 +#: pretix/control/logdisplay.py:791 msgid "The product has been created." msgstr "" -#: pretix/control/logdisplay.py:796 +#: pretix/control/logdisplay.py:792 msgid "The product has been changed." msgstr "" -#: pretix/control/logdisplay.py:797 +#: pretix/control/logdisplay.py:793 msgid "The product has been reordered." msgstr "" -#: pretix/control/logdisplay.py:798 +#: pretix/control/logdisplay.py:794 msgid "The product has been deleted." msgstr "" -#: pretix/control/logdisplay.py:799 +#: pretix/control/logdisplay.py:795 msgid "An add-on has been added to this product." msgstr "" -#: pretix/control/logdisplay.py:800 +#: pretix/control/logdisplay.py:796 msgid "An add-on has been removed from this product." msgstr "" -#: pretix/control/logdisplay.py:801 +#: pretix/control/logdisplay.py:797 msgid "An add-on has been changed on this product." msgstr "" -#: pretix/control/logdisplay.py:802 +#: pretix/control/logdisplay.py:798 msgid "A bundled item has been added to this product." msgstr "" -#: pretix/control/logdisplay.py:803 +#: pretix/control/logdisplay.py:799 msgid "A bundled item has been removed from this product." msgstr "" -#: pretix/control/logdisplay.py:804 +#: pretix/control/logdisplay.py:800 msgid "A bundled item has been changed on this product." msgstr "" -#: pretix/control/logdisplay.py:811 +#: pretix/control/logdisplay.py:807 #, python-brace-format msgid "The variation \"{value}\" has been created." msgstr "" -#: pretix/control/logdisplay.py:812 +#: pretix/control/logdisplay.py:808 #, python-brace-format msgid "The variation \"{value}\" has been deleted." msgstr "" -#: pretix/control/logdisplay.py:813 +#: pretix/control/logdisplay.py:809 #, python-brace-format msgid "The variation \"{value}\" has been changed." msgstr "" -#: pretix/control/logdisplay.py:830 +#: pretix/control/logdisplay.py:826 #, python-brace-format msgid "Payment {local_id} has been confirmed." msgstr "" -#: pretix/control/logdisplay.py:831 +#: pretix/control/logdisplay.py:827 #, python-brace-format msgid "Payment {local_id} has been canceled." msgstr "" -#: pretix/control/logdisplay.py:832 +#: pretix/control/logdisplay.py:828 #, python-brace-format msgid "Canceling payment {local_id} has failed." msgstr "" -#: pretix/control/logdisplay.py:833 +#: pretix/control/logdisplay.py:829 #, python-brace-format msgid "Payment {local_id} has been started." msgstr "" -#: pretix/control/logdisplay.py:834 +#: pretix/control/logdisplay.py:830 #, python-brace-format msgid "Payment {local_id} has failed." msgstr "" -#: pretix/control/logdisplay.py:835 +#: pretix/control/logdisplay.py:831 #, python-brace-format msgid "The order could not be marked as paid: {message}" msgstr "" -#: pretix/control/logdisplay.py:836 +#: pretix/control/logdisplay.py:832 msgid "The order has been overpaid." msgstr "" -#: pretix/control/logdisplay.py:837 +#: pretix/control/logdisplay.py:833 #, python-brace-format msgid "Refund {local_id} has been created." msgstr "" -#: pretix/control/logdisplay.py:838 +#: pretix/control/logdisplay.py:834 #, python-brace-format msgid "Refund {local_id} has been created by an external entity." msgstr "" -#: pretix/control/logdisplay.py:839 +#: pretix/control/logdisplay.py:835 msgid "The customer requested you to issue a refund." msgstr "" -#: pretix/control/logdisplay.py:840 +#: pretix/control/logdisplay.py:836 #, python-brace-format msgid "Refund {local_id} has been completed." msgstr "" -#: pretix/control/logdisplay.py:841 +#: pretix/control/logdisplay.py:837 #, python-brace-format msgid "Refund {local_id} has been canceled." msgstr "" -#: pretix/control/logdisplay.py:842 +#: pretix/control/logdisplay.py:838 #, python-brace-format msgid "Refund {local_id} has failed." msgstr "" -#: pretix/control/logdisplay.py:849 +#: pretix/control/logdisplay.py:845 msgid "The quota has been added." msgstr "" -#: pretix/control/logdisplay.py:850 +#: pretix/control/logdisplay.py:846 msgid "The quota has been deleted." msgstr "" -#: pretix/control/logdisplay.py:851 +#: pretix/control/logdisplay.py:847 msgid "The quota has been changed." msgstr "" -#: pretix/control/logdisplay.py:852 +#: pretix/control/logdisplay.py:848 msgid "The quota has closed." msgstr "" -#: pretix/control/logdisplay.py:853 pretix/control/views/item.py:1075 +#: pretix/control/logdisplay.py:849 pretix/control/views/item.py:1081 msgid "The quota has been re-opened." msgstr "" -#: pretix/control/logdisplay.py:860 +#: pretix/control/logdisplay.py:856 msgid "The question has been added." msgstr "" -#: pretix/control/logdisplay.py:861 +#: pretix/control/logdisplay.py:857 msgid "The question has been deleted." msgstr "" -#: pretix/control/logdisplay.py:862 +#: pretix/control/logdisplay.py:858 msgid "The question has been changed." msgstr "" -#: pretix/control/logdisplay.py:863 +#: pretix/control/logdisplay.py:859 msgid "The question has been reordered." msgstr "" -#: pretix/control/logdisplay.py:870 +#: pretix/control/logdisplay.py:866 msgid "The discount has been added." msgstr "" -#: pretix/control/logdisplay.py:871 +#: pretix/control/logdisplay.py:867 msgid "The discount has been deleted." msgstr "" -#: pretix/control/logdisplay.py:872 +#: pretix/control/logdisplay.py:868 msgid "The discount has been changed." msgstr "" -#: pretix/control/logdisplay.py:896 +#: pretix/control/logdisplay.py:892 #, python-brace-format msgid "" "Position #{posid} has been checked in manually at {datetime} on list \"{list}" "\"." msgstr "" -#: pretix/control/logdisplay.py:901 +#: pretix/control/logdisplay.py:897 #, python-brace-format msgid "" "Position #{posid} has been checked in again at {datetime} on list \"{list}\"." msgstr "" +#: pretix/control/logdisplay.py:906 +msgid "An entry has been removed from the waiting list." +msgstr "" + +#: pretix/control/logdisplay.py:907 +msgid "An entry has been changed on the waiting list." +msgstr "" + +#: pretix/control/logdisplay.py:908 +msgid "An entry has been added to the waiting list." +msgstr "" + #: pretix/control/middleware.py:153 pretix/control/middleware.py:167 msgid "" "The selected event was not found or you have no permission to administrate " @@ -15473,8 +15483,8 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/checkout_addons.html:90 #: pretix/presale/templates/pretixpresale/event/checkout_customer.html:125 #: pretix/presale/templates/pretixpresale/event/checkout_membership.html:80 -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:129 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:177 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:130 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:192 #: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:53 #: pretix/presale/templates/pretixpresale/event/order_change.html:27 #: pretix/presale/templates/pretixpresale/event/order_pay.html:28 @@ -15532,7 +15542,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/event/payment.html:88 #: pretix/control/templates/pretixcontrol/event/payment_provider.html:36 #: pretix/control/templates/pretixcontrol/event/quick_setup.html:201 -#: pretix/control/templates/pretixcontrol/event/settings.html:473 +#: pretix/control/templates/pretixcontrol/event/settings.html:494 #: pretix/control/templates/pretixcontrol/event/tax_edit.html:145 #: pretix/control/templates/pretixcontrol/event/tickets.html:73 #: pretix/control/templates/pretixcontrol/global_settings.html:12 @@ -15572,7 +15582,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/organizers/webhook_edit.html:21 #: pretix/control/templates/pretixcontrol/pdf/index.html:544 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:630 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:366 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:368 #: pretix/control/templates/pretixcontrol/subevents/detail.html:287 #: pretix/control/templates/pretixcontrol/user/notifications.html:85 #: pretix/control/templates/pretixcontrol/user/settings.html:81 @@ -15924,6 +15934,7 @@ msgstr[1] "" #: pretix/control/templates/pretixcontrol/organizers/team_delete.html:10 #: pretix/control/templates/pretixcontrol/organizers/team_delete.html:21 #: pretix/control/templates/pretixcontrol/pdf/index.html:77 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:378 #: pretix/control/templates/pretixcontrol/subevents/delete.html:12 #: pretix/control/templates/pretixcontrol/subevents/delete_bulk.html:41 #: pretix/control/templates/pretixcontrol/user/2fa_delete.html:18 @@ -16690,7 +16701,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/event/dangerzone.html:5 #: pretix/control/templates/pretixcontrol/event/live.html:131 -#: pretix/control/templates/pretixcontrol/event/settings.html:479 +#: pretix/control/templates/pretixcontrol/event/settings.html:500 msgid "Cancel or delete event" msgstr "" @@ -16789,13 +16800,13 @@ msgid "" msgstr "" #: pretix/control/templates/pretixcontrol/event/fragment_geodata.html:14 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:42 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:43 msgid "Geo coordinates" msgstr "" #: pretix/control/templates/pretixcontrol/event/fragment_geodata.html:15 #: pretix/control/templates/pretixcontrol/event/settings.html:139 -#: pretix/control/templates/pretixcontrol/event/settings.html:281 +#: pretix/control/templates/pretixcontrol/event/settings.html:292 #: pretix/control/templates/pretixcontrol/items/discount.html:35 #: pretix/control/templates/pretixcontrol/organizers/edit.html:56 #: pretix/control/templates/pretixcontrol/organizers/property_edit.html:32 @@ -16805,7 +16816,7 @@ msgid "Optional" msgstr "" #: pretix/control/templates/pretixcontrol/event/fragment_geodata.html:22 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:57 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:58 msgid "Geocoding data © OpenStreetMap" msgstr "" @@ -17258,9 +17269,9 @@ msgstr "" #: pretix/control/views/event.py:587 pretix/control/views/event.py:734 #: pretix/control/views/event.py:963 pretix/control/views/event.py:1334 #: pretix/control/views/global_settings.py:65 -#: pretix/control/views/global_settings.py:88 pretix/control/views/item.py:263 -#: pretix/control/views/item.py:789 pretix/control/views/item.py:1115 -#: pretix/control/views/item.py:1293 pretix/control/views/item.py:1443 +#: pretix/control/views/global_settings.py:88 pretix/control/views/item.py:264 +#: pretix/control/views/item.py:795 pretix/control/views/item.py:1121 +#: pretix/control/views/item.py:1299 pretix/control/views/item.py:1449 #: pretix/control/views/mailsetup.py:151 pretix/control/views/mailsetup.py:163 #: pretix/control/views/mailsetup.py:190 pretix/control/views/mailsetup.py:258 #: pretix/control/views/organizer.py:260 pretix/control/views/organizer.py:288 @@ -17441,7 +17452,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/item/include_variations.html:202 #: pretix/control/templates/pretixcontrol/item/index.html:127 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:392 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:76 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:77 #: pretix/control/templates/pretixcontrol/subevents/detail.html:35 msgid "Meta data" msgstr "" @@ -17515,7 +17526,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/event/settings.html:232 #: pretix/control/templates/pretixcontrol/events/create_basics.html:56 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:411 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:95 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:96 #: pretix/control/templates/pretixcontrol/subevents/detail.html:54 msgid "Timeline" msgstr "" @@ -17528,27 +17539,39 @@ msgstr "" msgid "Product list" msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:250 +#: pretix/control/templates/pretixcontrol/event/settings.html:253 +#: pretix/control/templates/pretixcontrol/event/settings.html:389 +msgid "Incompatible settings" +msgstr "" + +#: pretix/control/templates/pretixcontrol/event/settings.html:254 +#: pretix/control/templates/pretixcontrol/event/settings.html:390 +msgid "" +"Customers won't be able to add themselves to the waiting list, because " +"\"Hide all products that are sold out\" is enabled." +msgstr "" + +#: pretix/control/templates/pretixcontrol/event/settings.html:261 msgctxt "subevents" msgid "Calendar and list views" msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:269 +#: pretix/control/templates/pretixcontrol/event/settings.html:280 #: pretix/control/templates/pretixcontrol/order/index.html:176 #: pretix/presale/templates/pretixpresale/event/order.html:22 msgid "Order details" msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:273 +#: pretix/control/templates/pretixcontrol/event/settings.html:284 msgid "Other settings" msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:280 +#: pretix/control/templates/pretixcontrol/event/settings.html:291 #: pretix/control/templates/pretixcontrol/organizers/edit.html:55 msgid "Footer links" msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:285 +#: pretix/control/templates/pretixcontrol/event/settings.html:296 #: pretix/control/templates/pretixcontrol/organizers/edit.html:60 msgid "" "These links will be shown in the footer of your ticket shop. You could for " @@ -17557,22 +17580,22 @@ msgid "" "do not need to add them here." msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:339 +#: pretix/control/templates/pretixcontrol/event/settings.html:350 #: pretix/control/templates/pretixcontrol/organizers/edit.html:119 msgid "Add link" msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:346 +#: pretix/control/templates/pretixcontrol/event/settings.html:357 msgid "Cart" msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:354 +#: pretix/control/templates/pretixcontrol/event/settings.html:365 msgid "" "The waiting list currently is not compatible with some advanced features of " "pretix such as hidden products, add-on products or product bundles." msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:360 +#: pretix/control/templates/pretixcontrol/event/settings.html:371 msgid "" "The waiting list determines availability mainly based on quotas. If you use " "a seating plan and your number of available seats is less than the available " @@ -17580,42 +17603,42 @@ msgid "" "waiting list but still are unable to book a seat." msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:367 +#: pretix/control/templates/pretixcontrol/event/settings.html:378 msgid "" "Specifically, this means the waiting list is not safe to use together with " "the minimum distance feature of our seating plan module." msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:378 +#: pretix/control/templates/pretixcontrol/event/settings.html:399 msgid "Waiting customers" msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:384 +#: pretix/control/templates/pretixcontrol/event/settings.html:405 msgid "Manage waiting list" msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:397 +#: pretix/control/templates/pretixcontrol/event/settings.html:418 msgid "Item metadata" msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:399 +#: pretix/control/templates/pretixcontrol/event/settings.html:420 msgid "" "You can here define a set of metadata properties (i.e. variables) that you " "can later set for your items and re-use in places like ticket layouts. This " "is an useful timesaver if you create lots and lots of items." msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:419 -#: pretix/control/templates/pretixcontrol/event/settings.html:447 +#: pretix/control/templates/pretixcontrol/event/settings.html:440 +#: pretix/control/templates/pretixcontrol/event/settings.html:468 #: pretix/control/templates/pretixcontrol/organizers/properties.html:22 msgid "Property" msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:466 +#: pretix/control/templates/pretixcontrol/event/settings.html:487 msgid "Add property" msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:484 +#: pretix/control/templates/pretixcontrol/event/settings.html:505 #: pretix/control/templates/pretixcontrol/events/index.html:165 #: pretix/control/templates/pretixcontrol/organizers/detail.html:130 msgid "Clone event" @@ -17726,7 +17749,7 @@ msgid "excl. %(rate)s %%" msgstr "" #: pretix/control/templates/pretixcontrol/event/tickets.html:8 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:13 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:14 #: pretix/presale/templates/pretixpresale/event/fragment_downloads.html:7 #: pretix/presale/templates/pretixpresale/event/fragment_downloads.html:40 msgid "Ticket download" @@ -17830,7 +17853,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/organizers/create.html:11 #: pretix/control/templates/pretixcontrol/organizers/team_edit.html:19 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:384 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:30 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:31 #: pretix/control/templates/pretixcontrol/subevents/detail.html:23 msgid "General information" msgstr "" @@ -18720,13 +18743,13 @@ msgstr "" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:107 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:35 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:71 -#: pretix/presale/views/widget.py:456 +#: pretix/presale/views/widget.py:449 msgid "Sold out" msgstr "" #: pretix/control/templates/pretixcontrol/items/index.html:7 #: pretix/control/templates/pretixcontrol/order/index.html:19 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:7 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:8 msgid "taxes" msgstr "" @@ -18783,8 +18806,8 @@ msgstr "" #: pretix/control/templates/pretixcontrol/items/index.html:149 #: pretix/control/templates/pretixcontrol/order/index.html:616 #: pretix/control/templates/pretixcontrol/order/index.html:656 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:359 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:414 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:360 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:415 #, python-format msgid "plus %(rate)s%% %(taxname)s" msgstr "" @@ -18792,8 +18815,8 @@ msgstr "" #: pretix/control/templates/pretixcontrol/items/index.html:153 #: pretix/control/templates/pretixcontrol/order/index.html:626 #: pretix/control/templates/pretixcontrol/order/index.html:666 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:369 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:424 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:370 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:425 #, python-format msgid "incl. %(rate)s%% %(taxname)s" msgstr "" @@ -18834,10 +18857,16 @@ msgid "Count" msgstr "" #: pretix/control/templates/pretixcontrol/items/question.html:92 -msgid "Percentage" +#, python-format +msgid "%% of answers" msgstr "" -#: pretix/control/templates/pretixcontrol/items/question.html:110 +#: pretix/control/templates/pretixcontrol/items/question.html:93 +#, python-format +msgid "%% of tickets" +msgstr "" + +#: pretix/control/templates/pretixcontrol/items/question.html:112 #: pretix/control/templates/pretixcontrol/order/transactions.html:67 #: pretix/plugins/reports/accountingreport.py:408 #: pretix/plugins/reports/accountingreport.py:441 @@ -18845,7 +18874,7 @@ msgstr "" msgid "Sum" msgstr "" -#: pretix/control/templates/pretixcontrol/items/question.html:122 +#: pretix/control/templates/pretixcontrol/items/question.html:125 msgid "Question history" msgstr "" @@ -19337,14 +19366,14 @@ msgstr "" #: pretix/control/templates/pretixcontrol/order/change.html:247 #: pretix/control/templates/pretixcontrol/order/index.html:455 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:106 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:107 #, python-format msgid "Valid from %(datetime)s" msgstr "" #: pretix/control/templates/pretixcontrol/order/change.html:255 #: pretix/control/templates/pretixcontrol/order/index.html:459 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:110 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:111 #, python-format msgid "Valid until %(datetime)s" msgstr "" @@ -19422,13 +19451,13 @@ msgstr "" #: pretix/control/templates/pretixcontrol/order/change_questions.html:25 #: pretix/control/templates/pretixcontrol/order/index.html:940 #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:75 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:34 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:35 #: pretix/presale/templates/pretixpresale/event/order_modify.html:29 msgid "Invoice information" msgstr "" #: pretix/control/templates/pretixcontrol/order/change_questions.html:26 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:35 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:36 #: pretix/presale/templates/pretixpresale/event/order_modify.html:30 msgid "(optional)" msgstr "" @@ -19654,7 +19683,7 @@ msgid "Entry scan: %(date)s" msgstr "" #: pretix/control/templates/pretixcontrol/order/index.html:420 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:54 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:55 msgid "Voucher code used:" msgstr "" @@ -19671,7 +19700,7 @@ msgid "" msgstr "" #: pretix/control/templates/pretixcontrol/order/index.html:451 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:102 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:103 #, python-format msgid "Valid %(datetime_range)s" msgstr "" @@ -19686,8 +19715,8 @@ msgstr "" #: pretix/control/templates/pretixcontrol/order/index.html:560 #: pretix/control/templates/pretixcontrol/order/index.html:598 #: pretix/control/templates/pretixcontrol/order/index.html:605 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:227 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:233 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:228 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:234 msgid "not answered" msgstr "" @@ -19706,7 +19735,7 @@ msgid "UNSAFE" msgstr "" #: pretix/control/templates/pretixcontrol/order/index.html:687 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:452 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:453 msgid "Taxes" msgstr "" @@ -19718,7 +19747,7 @@ msgstr "" #: pretix/plugins/reports/exporters.py:435 #: pretix/plugins/reports/exporters.py:627 #: pretix/plugins/reports/exporters.py:957 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:464 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:465 msgid "Total" msgstr "" @@ -19814,7 +19843,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/order/mail_history.html:4 #: pretix/control/templates/pretixcontrol/order/mail_history.html:7 -#: pretix/plugins/sendmail/signals.py:109 +#: pretix/plugins/sendmail/signals.py:110 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/history.html:4 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/history.html:6 msgid "Email history" @@ -20035,7 +20064,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/order/sendmail.html:4 #: pretix/control/templates/pretixcontrol/order/sendmail.html:7 -#: pretix/plugins/sendmail/signals.py:93 +#: pretix/plugins/sendmail/signals.py:94 msgid "Send email" msgstr "" @@ -20133,7 +20162,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/orders/cancel.html:49 #: pretix/control/templates/pretixcontrol/vouchers/bulk.html:85 #: pretix/plugins/sendmail/apps.py:30 pretix/plugins/sendmail/apps.py:33 -#: pretix/plugins/sendmail/signals.py:85 +#: pretix/plugins/sendmail/signals.py:86 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/index.html:3 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/index.html:5 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/send_form.html:5 @@ -20694,7 +20723,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/organizers/giftcards.html:95 #: pretix/control/templates/pretixcontrol/organizers/reusable_media.html:102 #: pretix/control/templates/pretixcontrol/organizers/reusable_medium.html:21 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:389 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:390 #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:114 #: pretix/presale/templates/pretixpresale/organizers/customer_memberships.html:95 #: pretix/presale/templates/pretixpresale/organizers/customer_orders.html:66 @@ -20825,7 +20854,7 @@ msgid "Change multiple devices" msgstr "" #: pretix/control/templates/pretixcontrol/organizers/device_bulk_edit.html:8 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:13 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:14 #, python-format msgid "%(number)s selected" msgstr "" @@ -22168,7 +22197,7 @@ msgid "Add many time slots" msgstr "" #: pretix/control/templates/pretixcontrol/subevents/bulk.html:481 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:264 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:266 #: pretix/control/templates/pretixcontrol/subevents/detail.html:124 msgid "Add a new quota" msgstr "" @@ -22199,35 +22228,50 @@ msgid "" msgstr "" #: pretix/control/templates/pretixcontrol/subevents/bulk.html:600 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:357 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:359 #: pretix/control/templates/pretixcontrol/subevents/detail.html:243 msgid "Add a new check-in list" msgstr "" -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:8 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:11 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:9 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:12 msgctxt "subevent" msgid "Change multiple dates" msgstr "" -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:153 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:154 msgid "Item prices" msgstr "" -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:187 -msgid "" -"You selected a set of dates that currently have different quota setups. You " -"can therefore not change their quotas in bulk. If you want, you can set up a " -"new set of quotas to replace the quota setup of all " -"selected dates." +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:197 +msgid "You selected a set of dates that currently have different quota setups." msgstr "" -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:275 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:198 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:373 +msgid "" +"Using this option will delete all current quotas from " +"all selected dates." +msgstr "" + +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:277 msgid "" "You selected a set of dates that currently have different check-in list " "setups. You can therefore not change their check-in lists in bulk." msgstr "" +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:372 +msgid "Delete existing quotas" +msgstr "" + +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:374 +msgid "This cannot be reverted. Are you sure to proceed?" +msgstr "" + +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:381 +msgid "Proceed" +msgstr "" + #: pretix/control/templates/pretixcontrol/subevents/delete.html:4 #: pretix/control/templates/pretixcontrol/subevents/delete.html:6 msgctxt "subevent" @@ -23266,10 +23310,10 @@ msgstr "" #: pretix/control/views/event.py:590 pretix/control/views/event.py:737 #: pretix/control/views/event.py:929 pretix/control/views/event.py:1287 #: pretix/control/views/event.py:1353 pretix/control/views/event.py:1461 -#: pretix/control/views/item.py:279 pretix/control/views/item.py:326 -#: pretix/control/views/item.py:799 pretix/control/views/item.py:825 -#: pretix/control/views/item.py:945 pretix/control/views/item.py:1149 -#: pretix/control/views/item.py:1315 pretix/control/views/item.py:1500 +#: pretix/control/views/item.py:280 pretix/control/views/item.py:327 +#: pretix/control/views/item.py:805 pretix/control/views/item.py:831 +#: pretix/control/views/item.py:951 pretix/control/views/item.py:1155 +#: pretix/control/views/item.py:1321 pretix/control/views/item.py:1506 #: pretix/control/views/organizer.py:263 pretix/control/views/organizer.py:291 #: pretix/control/views/organizer.py:1188 pretix/control/views/subevents.py:504 #: pretix/control/views/subevents.py:630 pretix/control/views/subevents.py:1039 @@ -23374,7 +23418,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:116 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:47 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:79 -#: pretix/presale/views/widget.py:470 +#: pretix/presale/views/widget.py:463 msgid "Sale over" msgstr "" @@ -23382,7 +23426,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/fragment_calendar.html:119 #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:123 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:86 -#: pretix/presale/views/widget.py:480 +#: pretix/presale/views/widget.py:473 msgid "Soon" msgstr "" @@ -23414,8 +23458,8 @@ msgstr "" msgid "The order of discounts has been updated." msgstr "" -#: pretix/control/views/discounts.py:260 pretix/control/views/item.py:189 -#: pretix/control/views/item.py:401 pretix/control/views/item.py:535 +#: pretix/control/views/discounts.py:260 pretix/control/views/item.py:190 +#: pretix/control/views/item.py:402 pretix/control/views/item.py:536 #: pretix/control/views/organizer.py:2272 #: pretix/control/views/organizer.py:3330 msgid "Some of the provided object ids are invalid." @@ -23468,8 +23512,8 @@ msgstr "" msgid "Unknown email renderer." msgstr "" -#: pretix/control/views/event.py:876 pretix/control/views/orders.py:692 -#: pretix/presale/views/order.py:1086 pretix/presale/views/order.py:1093 +#: pretix/control/views/event.py:876 pretix/control/views/orders.py:693 +#: pretix/presale/views/order.py:1088 pretix/presale/views/order.py:1095 msgid "You requested an invalid ticket output type." msgstr "" @@ -23516,11 +23560,11 @@ msgid "" "event: {plugin_names}" msgstr "" -#: pretix/control/views/event.py:1207 pretix/control/views/orders.py:781 +#: pretix/control/views/event.py:1207 pretix/control/views/orders.py:782 msgid "The comment has been updated." msgstr "" -#: pretix/control/views/event.py:1209 pretix/control/views/orders.py:783 +#: pretix/control/views/event.py:1209 pretix/control/views/orders.py:784 msgid "Could not update the comment." msgstr "" @@ -23638,130 +23682,130 @@ msgid "" "plugin \"{plugin}\" with license \"{license}\"." msgstr "" -#: pretix/control/views/item.py:138 pretix/control/views/item.py:1594 +#: pretix/control/views/item.py:139 pretix/control/views/item.py:1600 msgid "The requested product does not exist." msgstr "" -#: pretix/control/views/item.py:156 +#: pretix/control/views/item.py:157 msgid "The order of items has been updated." msgstr "" -#: pretix/control/views/item.py:224 pretix/control/views/item.py:259 -#: pretix/control/views/item.py:350 +#: pretix/control/views/item.py:225 pretix/control/views/item.py:260 +#: pretix/control/views/item.py:351 msgid "The requested product category does not exist." msgstr "" -#: pretix/control/views/item.py:235 +#: pretix/control/views/item.py:236 msgid "The selected category has been deleted." msgstr "" -#: pretix/control/views/item.py:320 +#: pretix/control/views/item.py:321 msgid "The new category has been created." msgstr "" -#: pretix/control/views/item.py:368 +#: pretix/control/views/item.py:369 msgid "The order of categories has been updated." msgstr "" -#: pretix/control/views/item.py:404 pretix/control/views/item.py:538 +#: pretix/control/views/item.py:405 pretix/control/views/item.py:539 #: pretix/control/views/organizer.py:2275 #: pretix/control/views/organizer.py:3333 msgid "Not all objects have been selected." msgstr "" -#: pretix/control/views/item.py:477 +#: pretix/control/views/item.py:478 msgid "Street" msgstr "" -#: pretix/control/views/item.py:579 pretix/control/views/item.py:753 -#: pretix/control/views/item.py:775 +#: pretix/control/views/item.py:580 pretix/control/views/item.py:759 +#: pretix/control/views/item.py:781 msgid "The requested question does not exist." msgstr "" -#: pretix/control/views/item.py:597 +#: pretix/control/views/item.py:598 msgid "The selected question has been deleted." msgstr "" -#: pretix/control/views/item.py:702 +#: pretix/control/views/item.py:708 msgid "File uploaded" msgstr "" -#: pretix/control/views/item.py:834 +#: pretix/control/views/item.py:840 msgid "The new question has been created." msgstr "" -#: pretix/control/views/item.py:913 +#: pretix/control/views/item.py:919 msgid "The new quota has been created." msgstr "" -#: pretix/control/views/item.py:976 +#: pretix/control/views/item.py:982 msgid "Exit scans" msgstr "" -#: pretix/control/views/item.py:983 +#: pretix/control/views/item.py:989 msgid "Vouchers and waiting list reservations" msgstr "" -#: pretix/control/views/item.py:998 +#: pretix/control/views/item.py:1004 msgid "Available quota" msgstr "" -#: pretix/control/views/item.py:1004 +#: pretix/control/views/item.py:1010 msgid "Waiting list (pending)" msgstr "" -#: pretix/control/views/item.py:1011 +#: pretix/control/views/item.py:1017 msgid "Currently for sale" msgstr "" -#: pretix/control/views/item.py:1065 pretix/control/views/item.py:1111 -#: pretix/control/views/item.py:1165 +#: pretix/control/views/item.py:1071 pretix/control/views/item.py:1117 +#: pretix/control/views/item.py:1171 msgid "The requested quota does not exist." msgstr "" -#: pretix/control/views/item.py:1086 +#: pretix/control/views/item.py:1092 msgid "The quota has been re-opened and will not close again." msgstr "" -#: pretix/control/views/item.py:1179 +#: pretix/control/views/item.py:1185 msgid "The selected quota has been deleted." msgstr "" -#: pretix/control/views/item.py:1202 +#: pretix/control/views/item.py:1208 msgid "The requested item does not exist." msgstr "" -#: pretix/control/views/item.py:1374 +#: pretix/control/views/item.py:1380 msgid "" "You cannot add add-ons to a product that is only available as an add-on " "itself." msgstr "" -#: pretix/control/views/item.py:1384 +#: pretix/control/views/item.py:1390 msgid "" "You cannot add bundles to a product that is only available as an add-on " "itself." msgstr "" -#: pretix/control/views/item.py:1516 +#: pretix/control/views/item.py:1522 msgid "" "You disabled this item, but it is still part of a product bundle. Your " "participants won't be able to buy the bundle unless you remove this item " "from it." msgstr "" -#: pretix/control/views/item.py:1614 +#: pretix/control/views/item.py:1620 msgid "" "The product could not be deleted as some constraints (e.g. data created by " "plug-ins) did not allow it. Deleting it could break reporting or other " "functionality, so the product has been disabled instead." msgstr "" -#: pretix/control/views/item.py:1618 +#: pretix/control/views/item.py:1624 msgid "The selected product has been deleted." msgstr "" -#: pretix/control/views/item.py:1627 +#: pretix/control/views/item.py:1633 msgid "The selected product has been deactivated." msgstr "" @@ -23865,13 +23909,13 @@ msgid "" "Successfully executed the action \"{label}\" on {success} of {total} orders." msgstr "" -#: pretix/control/views/orders.py:556 +#: pretix/control/views/orders.py:557 msgid "Your invoice" msgid_plural "Your invoices" msgstr[0] "" msgstr[1] "" -#: pretix/control/views/orders.py:558 +#: pretix/control/views/orders.py:559 #, python-brace-format msgid "" "Hello,\n" @@ -23888,78 +23932,78 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: pretix/control/views/orders.py:694 pretix/plugins/banktransfer/views.py:901 +#: pretix/control/views/orders.py:695 pretix/plugins/banktransfer/views.py:901 #: pretix/presale/views/order.py:158 pretix/presale/views/order.py:240 #: pretix/presale/views/order.py:334 pretix/presale/views/order.py:361 #: pretix/presale/views/order.py:429 pretix/presale/views/order.py:496 -#: pretix/presale/views/order.py:542 pretix/presale/views/order.py:726 -#: pretix/presale/views/order.py:839 pretix/presale/views/order.py:911 -#: pretix/presale/views/order.py:926 pretix/presale/views/order.py:975 -#: pretix/presale/views/order.py:980 pretix/presale/views/order.py:1095 -#: pretix/presale/views/order.py:1268 pretix/presale/views/order.py:1660 -#: pretix/presale/views/order.py:1691 +#: pretix/presale/views/order.py:542 pretix/presale/views/order.py:728 +#: pretix/presale/views/order.py:841 pretix/presale/views/order.py:913 +#: pretix/presale/views/order.py:928 pretix/presale/views/order.py:977 +#: pretix/presale/views/order.py:982 pretix/presale/views/order.py:1097 +#: pretix/presale/views/order.py:1270 pretix/presale/views/order.py:1662 +#: pretix/presale/views/order.py:1693 msgid "Unknown order code or not authorized to access this order." msgstr "" -#: pretix/control/views/orders.py:696 pretix/presale/views/order.py:1100 +#: pretix/control/views/orders.py:697 pretix/presale/views/order.py:1102 msgid "Ticket download is not enabled for this product." msgstr "" -#: pretix/control/views/orders.py:817 +#: pretix/control/views/orders.py:818 msgid "The order has been deleted." msgstr "" -#: pretix/control/views/orders.py:824 +#: pretix/control/views/orders.py:825 msgid "" "The order could not be deleted as some constraints (e.g. data created by " "plug-ins) do not allow it." msgstr "" -#: pretix/control/views/orders.py:832 +#: pretix/control/views/orders.py:833 msgid "Only orders created in test mode can be deleted." msgstr "" -#: pretix/control/views/orders.py:853 +#: pretix/control/views/orders.py:854 msgid "The order has been denied and is therefore now canceled." msgstr "" -#: pretix/control/views/orders.py:893 +#: pretix/control/views/orders.py:894 msgid "This payment has been canceled." msgstr "" -#: pretix/control/views/orders.py:895 +#: pretix/control/views/orders.py:896 msgid "This payment can not be canceled at the moment." msgstr "" -#: pretix/control/views/orders.py:921 +#: pretix/control/views/orders.py:922 msgid "The refund has been canceled." msgstr "" -#: pretix/control/views/orders.py:923 +#: pretix/control/views/orders.py:924 msgid "This refund can not be canceled at the moment." msgstr "" -#: pretix/control/views/orders.py:957 +#: pretix/control/views/orders.py:958 msgid "The refund has been processed." msgstr "" -#: pretix/control/views/orders.py:959 pretix/control/views/orders.py:985 +#: pretix/control/views/orders.py:960 pretix/control/views/orders.py:986 msgid "This refund can not be processed at the moment." msgstr "" -#: pretix/control/views/orders.py:983 +#: pretix/control/views/orders.py:984 msgid "The refund has been marked as done." msgstr "" -#: pretix/control/views/orders.py:1009 +#: pretix/control/views/orders.py:1010 msgid "The request has been removed. If you want, you can now inform the user." msgstr "" -#: pretix/control/views/orders.py:1016 +#: pretix/control/views/orders.py:1017 msgid "Your cancellation request" msgstr "" -#: pretix/control/views/orders.py:1017 +#: pretix/control/views/orders.py:1018 #, python-brace-format msgid "" "Hello,\n" @@ -23970,69 +24014,69 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/control/views/orders.py:1073 +#: pretix/control/views/orders.py:1074 msgid "" "The payment has been marked as complete, but we were unable to send a " "confirmation mail." msgstr "" -#: pretix/control/views/orders.py:1076 +#: pretix/control/views/orders.py:1077 msgid "The payment has been marked as complete." msgstr "" -#: pretix/control/views/orders.py:1078 +#: pretix/control/views/orders.py:1079 msgid "This payment can not be confirmed at the moment." msgstr "" -#: pretix/control/views/orders.py:1169 +#: pretix/control/views/orders.py:1170 msgid "" "The refund was prevented due to a refund already being processed at the same " "time. Please have a look at the order details and check if your refund is " "still necessary." msgstr "" -#: pretix/control/views/orders.py:1269 +#: pretix/control/views/orders.py:1270 msgid "You entered an order in an event with a different currency." msgstr "" -#: pretix/control/views/orders.py:1320 +#: pretix/control/views/orders.py:1321 msgid "" "You can not refund more than the amount of a payment that is not yet " "refunded." msgstr "" -#: pretix/control/views/orders.py:1325 +#: pretix/control/views/orders.py:1326 msgid "" "You selected a partial refund for a payment method that only supports full " "refunds." msgstr "" -#: pretix/control/views/orders.py:1355 +#: pretix/control/views/orders.py:1356 msgid "" "One of the refunds failed to be processed. You should retry to refund in a " "different way. The error message was: {}" msgstr "" -#: pretix/control/views/orders.py:1361 +#: pretix/control/views/orders.py:1362 msgid "A refund of {} has been processed." msgstr "" -#: pretix/control/views/orders.py:1365 +#: pretix/control/views/orders.py:1366 msgid "" "A refund of {} has been saved, but not yet fully executed. You can mark it " "as complete below." msgstr "" -#: pretix/control/views/orders.py:1394 +#: pretix/control/views/orders.py:1395 msgid "" "A new gift card was created. You can now send the user their gift card code." msgstr "" -#: pretix/control/views/orders.py:1402 +#: pretix/control/views/orders.py:1403 msgid "Your gift card code" msgstr "" -#: pretix/control/views/orders.py:1404 +#: pretix/control/views/orders.py:1405 #, python-brace-format msgid "" "Hello,\n" @@ -24045,184 +24089,184 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/control/views/orders.py:1415 +#: pretix/control/views/orders.py:1416 msgid "The refunds you selected do not match the selected total refund amount." msgstr "" -#: pretix/control/views/orders.py:1543 +#: pretix/control/views/orders.py:1544 msgid "" "The order has been marked as paid, but we were unable to send a confirmation " "mail." msgstr "" -#: pretix/control/views/orders.py:1546 +#: pretix/control/views/orders.py:1547 msgid "The payment has been created successfully." msgstr "" -#: pretix/control/views/orders.py:1560 +#: pretix/control/views/orders.py:1561 msgid "" "The order has been canceled. You can now select how you want to transfer the " "money back to the user." msgstr "" -#: pretix/control/views/orders.py:1631 pretix/control/views/orders.py:1635 +#: pretix/control/views/orders.py:1632 pretix/control/views/orders.py:1636 msgid "No VAT ID specified." msgstr "" -#: pretix/control/views/orders.py:1639 +#: pretix/control/views/orders.py:1640 msgid "No country specified." msgstr "" -#: pretix/control/views/orders.py:1643 +#: pretix/control/views/orders.py:1644 msgid "VAT ID could not be checked since this country is not supported." msgstr "" -#: pretix/control/views/orders.py:1654 +#: pretix/control/views/orders.py:1655 msgid "" "The VAT ID could not be checked, as the VAT checking service of the country " "is currently not available." msgstr "" -#: pretix/control/views/orders.py:1657 +#: pretix/control/views/orders.py:1658 msgid "This VAT ID is valid." msgstr "" -#: pretix/control/views/orders.py:1671 pretix/control/views/orders.py:1704 +#: pretix/control/views/orders.py:1672 pretix/control/views/orders.py:1705 msgid "Unknown invoice." msgstr "" -#: pretix/control/views/orders.py:1674 +#: pretix/control/views/orders.py:1675 msgid "Invoices may not be changed after they are created." msgstr "" -#: pretix/control/views/orders.py:1676 pretix/control/views/orders.py:1707 +#: pretix/control/views/orders.py:1677 pretix/control/views/orders.py:1708 msgid "The invoice has already been canceled." msgstr "" -#: pretix/control/views/orders.py:1678 +#: pretix/control/views/orders.py:1679 msgid "The invoice file has already been exported." msgstr "" -#: pretix/control/views/orders.py:1680 +#: pretix/control/views/orders.py:1681 msgid "The invoice file is too old to be regenerated." msgstr "" -#: pretix/control/views/orders.py:1682 pretix/control/views/orders.py:1709 +#: pretix/control/views/orders.py:1683 pretix/control/views/orders.py:1710 msgid "The invoice has been cleaned of personal data." msgstr "" -#: pretix/control/views/orders.py:1740 +#: pretix/control/views/orders.py:1741 msgid "The email has been queued to be sent." msgstr "" -#: pretix/control/views/orders.py:1764 pretix/presale/views/order.py:1277 +#: pretix/control/views/orders.py:1765 pretix/presale/views/order.py:1279 msgid "This invoice has not been found" msgstr "" -#: pretix/control/views/orders.py:1771 pretix/presale/views/order.py:1284 +#: pretix/control/views/orders.py:1772 pretix/presale/views/order.py:1286 msgid "The invoice file is no longer stored on the server." msgstr "" -#: pretix/control/views/orders.py:1776 pretix/presale/views/order.py:1289 +#: pretix/control/views/orders.py:1777 pretix/presale/views/order.py:1291 msgid "" "The invoice file has not yet been generated, we will generate it for you " "now. Please try again in a few seconds." msgstr "" -#: pretix/control/views/orders.py:1804 +#: pretix/control/views/orders.py:1805 msgid "The payment term has been changed." msgstr "" -#: pretix/control/views/orders.py:1809 pretix/control/views/orders.py:1866 +#: pretix/control/views/orders.py:1810 pretix/control/views/orders.py:1867 msgid "" "We were not able to process the request completely as the server was too " "busy." msgstr "" -#: pretix/control/views/orders.py:1817 +#: pretix/control/views/orders.py:1818 msgid "This action is only allowed for pending orders." msgstr "" -#: pretix/control/views/orders.py:1872 +#: pretix/control/views/orders.py:1873 msgid "This action is only allowed for canceled orders." msgstr "" -#: pretix/control/views/orders.py:2129 pretix/presale/views/order.py:1563 +#: pretix/control/views/orders.py:2130 pretix/presale/views/order.py:1565 msgid "An error occurred. Please see the details below." msgstr "" -#: pretix/control/views/orders.py:2137 +#: pretix/control/views/orders.py:2138 msgid "The order has been changed and the user has been notified." msgstr "" -#: pretix/control/views/orders.py:2139 pretix/control/views/orders.py:2275 -#: pretix/control/views/orders.py:2312 pretix/presale/views/order.py:1598 +#: pretix/control/views/orders.py:2140 pretix/control/views/orders.py:2276 +#: pretix/control/views/orders.py:2313 pretix/presale/views/order.py:1600 msgid "The order has been changed." msgstr "" -#: pretix/control/views/orders.py:2166 pretix/presale/checkoutflow.py:945 -#: pretix/presale/views/order.py:781 pretix/presale/views/order.py:886 +#: pretix/control/views/orders.py:2167 pretix/presale/checkoutflow.py:945 +#: pretix/presale/views/order.py:783 pretix/presale/views/order.py:888 msgid "" "We had difficulties processing your input. Please review the errors below." msgstr "" -#: pretix/control/views/orders.py:2277 +#: pretix/control/views/orders.py:2278 msgid "Nothing about the order had to be changed." msgstr "" -#: pretix/control/views/orders.py:2358 pretix/plugins/sendmail/views.py:176 +#: pretix/control/views/orders.py:2359 pretix/plugins/sendmail/views.py:176 msgid "We could not send the email. See below for details." msgstr "" -#: pretix/control/views/orders.py:2374 pretix/control/views/orders.py:2444 +#: pretix/control/views/orders.py:2375 pretix/control/views/orders.py:2445 #: pretix/plugins/sendmail/views.py:204 pretix/plugins/sendmail/views.py:671 #, python-brace-format msgid "Subject: {subject}" msgstr "" -#: pretix/control/views/orders.py:2393 pretix/control/views/orders.py:2464 +#: pretix/control/views/orders.py:2394 pretix/control/views/orders.py:2465 msgid "Your message has been queued and will be sent to {}." msgstr "" -#: pretix/control/views/orders.py:2397 pretix/control/views/orders.py:2467 +#: pretix/control/views/orders.py:2398 pretix/control/views/orders.py:2468 msgid "Failed to send mail to the following user: {}" msgstr "" -#: pretix/control/views/orders.py:2520 pretix/presale/views/order.py:1060 +#: pretix/control/views/orders.py:2521 pretix/presale/views/order.py:1062 msgid "" "This link is no longer valid. Please go back, refresh the page, and try " "again." msgstr "" -#: pretix/control/views/orders.py:2596 +#: pretix/control/views/orders.py:2597 msgid "There is no order with the given order code." msgstr "" -#: pretix/control/views/orders.py:2702 pretix/control/views/organizer.py:1805 +#: pretix/control/views/orders.py:2703 pretix/control/views/organizer.py:1805 msgid "The selected exporter was not found." msgstr "" -#: pretix/control/views/orders.py:2712 pretix/control/views/organizer.py:1815 +#: pretix/control/views/orders.py:2713 pretix/control/views/organizer.py:1815 msgid "There was a problem processing your input. See below for error details." msgstr "" -#: pretix/control/views/orders.py:2747 pretix/control/views/organizer.py:1858 +#: pretix/control/views/orders.py:2748 pretix/control/views/organizer.py:1858 #, python-brace-format msgid "" "Your export schedule has been saved. The next export will start around " "{datetime}." msgstr "" -#: pretix/control/views/orders.py:2752 pretix/control/views/organizer.py:1863 +#: pretix/control/views/orders.py:2753 pretix/control/views/organizer.py:1863 msgid "Your export schedule has been saved, but no next export is planned." msgstr "" -#: pretix/control/views/orders.py:2791 pretix/control/views/organizer.py:1903 +#: pretix/control/views/orders.py:2792 pretix/control/views/organizer.py:1903 #, python-brace-format msgid "Export: {title}" msgstr "" -#: pretix/control/views/orders.py:2792 pretix/control/views/organizer.py:1905 +#: pretix/control/views/orders.py:2793 pretix/control/views/organizer.py:1905 #, python-brace-format msgid "" "Hello,\n" @@ -24230,25 +24274,25 @@ msgid "" "attached to this email, you can find a new scheduled report for {name}." msgstr "" -#: pretix/control/views/orders.py:2860 pretix/control/views/organizer.py:1973 +#: pretix/control/views/orders.py:2861 pretix/control/views/organizer.py:1973 msgid "" "Your export is queued to start soon. The results will be send via email. " "Depending on system load and type and size of export, this may take a few " "minutes." msgstr "" -#: pretix/control/views/orders.py:2939 +#: pretix/control/views/orders.py:2940 msgid "All orders have been canceled." msgstr "" -#: pretix/control/views/orders.py:2941 +#: pretix/control/views/orders.py:2942 #, python-brace-format msgid "" "The orders have been canceled. An error occurred with {count} orders, please " "check all uncanceled orders." msgstr "" -#: pretix/control/views/orders.py:2962 +#: pretix/control/views/orders.py:2963 msgid "Your input was not valid." msgstr "" @@ -24780,7 +24824,7 @@ msgstr "" msgid "The selected entry has been deleted." msgstr "" -#: pretix/control/views/waitinglist.py:402 pretix/presale/views/widget.py:418 +#: pretix/control/views/waitinglist.py:402 pretix/presale/views/widget.py:411 msgid "This is not an event series." msgstr "" @@ -26133,7 +26177,9 @@ msgid "Upload time" msgstr "" #: pretix/plugins/checkinlists/exporters.py:826 -#: pretix/presale/templates/pretixpresale/fragment_modals.html:144 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:519 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:52 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:148 msgid "OK" msgstr "" @@ -26625,7 +26671,7 @@ msgid "Please turn on JavaScript." msgstr "" #: pretix/plugins/paypal2/templates/pretixplugins/paypal2/pay.html:29 -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:55 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:56 msgid "Please select how you want to pay." msgstr "" @@ -27122,47 +27168,51 @@ msgid_plural "%(count)d days before event start at %(time)s" msgstr[0] "" msgstr[1] "" -#: pretix/plugins/sendmail/signals.py:101 +#: pretix/plugins/sendmail/signals.py:102 msgid "Scheduled emails" msgstr "" -#: pretix/plugins/sendmail/signals.py:121 +#: pretix/plugins/sendmail/signals.py:122 msgid "Mass email was sent to customers or attendees." msgstr "" -#: pretix/plugins/sendmail/signals.py:122 +#: pretix/plugins/sendmail/signals.py:123 msgid "Mass email was sent to waiting list entries." msgstr "" -#: pretix/plugins/sendmail/signals.py:127 +#: pretix/plugins/sendmail/signals.py:128 msgid "The order received a mass email." msgstr "" -#: pretix/plugins/sendmail/signals.py:128 +#: pretix/plugins/sendmail/signals.py:129 msgid "A ticket holder of this order received a mass email." msgstr "" -#: pretix/plugins/sendmail/signals.py:133 +#: pretix/plugins/sendmail/signals.py:134 +msgid "The person on the waiting list received a mass email." +msgstr "" + +#: pretix/plugins/sendmail/signals.py:139 msgid "An email rule was created" msgstr "" -#: pretix/plugins/sendmail/signals.py:134 +#: pretix/plugins/sendmail/signals.py:140 msgid "An email rule was updated" msgstr "" -#: pretix/plugins/sendmail/signals.py:135 +#: pretix/plugins/sendmail/signals.py:141 msgid "A scheduled email was sent to the order" msgstr "" -#: pretix/plugins/sendmail/signals.py:136 +#: pretix/plugins/sendmail/signals.py:142 msgid "A scheduled email was sent to a ticket holder" msgstr "" -#: pretix/plugins/sendmail/signals.py:137 +#: pretix/plugins/sendmail/signals.py:143 msgid "An email rule was deleted" msgstr "" -#: pretix/plugins/sendmail/signals.py:140 +#: pretix/plugins/sendmail/signals.py:146 #, python-brace-format msgid "Mail rule {val}" msgstr "" @@ -28467,7 +28517,7 @@ msgstr "" #: pretix/presale/checkoutflow.py:678 pretix/presale/checkoutflow.py:686 #: pretix/presale/views/cart.py:195 pretix/presale/views/cart.py:200 #: pretix/presale/views/cart.py:218 pretix/presale/views/cart.py:231 -#: pretix/presale/views/order.py:1485 pretix/presale/views/order.py:1493 +#: pretix/presale/views/order.py:1487 pretix/presale/views/order.py:1495 msgid "Please enter numbers only." msgstr "" @@ -28619,40 +28669,40 @@ msgstr "" msgid "Forgot your password?" msgstr "" -#: pretix/presale/forms/customer.py:146 +#: pretix/presale/forms/customer.py:147 msgid "" "We've received a lot of registration requests from you, please wait 10 " "minutes before you try again." msgstr "" -#: pretix/presale/forms/customer.py:148 +#: pretix/presale/forms/customer.py:149 msgid "" "An account with this email address is already registered. Please try to log " "in or reset your password instead." msgstr "" -#: pretix/presale/forms/customer.py:201 +#: pretix/presale/forms/customer.py:202 #, python-brace-format msgid "What is the result of {num1} + {num2}?" msgstr "" -#: pretix/presale/forms/customer.py:247 +#: pretix/presale/forms/customer.py:248 msgid "Please enter the correct result." msgstr "" -#: pretix/presale/forms/customer.py:339 +#: pretix/presale/forms/customer.py:340 msgid "For security reasons, please wait 10 minutes before you try again." msgstr "" -#: pretix/presale/forms/customer.py:340 +#: pretix/presale/forms/customer.py:341 msgid "A user with this email address is not known in our system." msgstr "" -#: pretix/presale/forms/customer.py:461 +#: pretix/presale/forms/customer.py:463 msgid "Only required if you change your email address" msgstr "" -#: pretix/presale/forms/customer.py:497 +#: pretix/presale/forms/customer.py:501 #, python-brace-format msgid "" "To change your email address, change it in your {provider} account and then " @@ -28819,8 +28869,8 @@ msgid "Contact event organizer" msgstr "" #: pretix/presale/templates/pretixpresale/event/base.html:225 -#: pretix/presale/templates/pretixpresale/fragment_modals.html:114 -#: pretix/presale/templates/pretixpresale/fragment_modals.html:133 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:118 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:137 #: pretix/presale/templates/pretixpresale/organizers/base.html:103 msgid "Privacy policy" msgstr "" @@ -28867,8 +28917,8 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:202 #: pretix/presale/templates/pretixpresale/event/checkout_customer.html:120 #: pretix/presale/templates/pretixpresale/event/checkout_membership.html:75 -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:124 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:172 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:125 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:187 #: pretix/presale/templates/pretixpresale/organizers/customer_address_delete.html:28 #: pretix/presale/templates/pretixpresale/organizers/customer_profile_delete.html:28 msgid "Go back" @@ -28888,7 +28938,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/checkout_base.html:15 #: pretix/presale/templates/pretixpresale/event/checkout_base.html:21 #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:18 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:8 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:9 #: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:11 msgid "Your cart" msgstr "" @@ -28941,7 +28991,7 @@ msgid "Modify invoice information" msgstr "" #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:124 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:18 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:19 #: pretix/presale/templates/pretixpresale/event/order_modify.html:33 msgid "Contact information" msgstr "" @@ -29026,7 +29076,7 @@ msgid "" msgstr "" #: pretix/presale/templates/pretixpresale/event/checkout_membership.html:34 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:106 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:110 msgid "Selected add-ons" msgstr "" @@ -29042,69 +29092,66 @@ msgstr "" msgid "You already selected the following payment methods:" msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:26 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:29 msgid "Remove payment" msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:38 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:39 msgid "Remaining balance" msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:39 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:40 msgid "Please select a payment method below." msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:52 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:53 msgid "Please select how you want to pay the remaining balance:" msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:90 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:91 msgid "This sales channel does not provide support for test mode." msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:92 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:93 msgid "If you continue, you might pay an actual order with non-existing money!" msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:100 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:101 msgid "This payment provider does not provide support for test mode." msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:102 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:103 msgid "If you continue, actual money might be transferred." msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:113 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:114 msgid "There are no payment providers enabled." msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:115 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:116 msgid "" "Please go to the payment settings and activate one or more payment providers." msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:8 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:9 msgid "Before we continue, we need you to answer some questions." msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:46 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:47 msgid "Auto-fill with address" msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:53 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:154 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:54 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:157 msgid "Fill form" msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:81 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:91 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:168 msgid "Copy answers from above" msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:136 -msgid "Copy answers" -msgstr "" - -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:145 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:148 msgid "Auto-fill with profile" msgstr "" @@ -29201,12 +29248,6 @@ msgstr "" msgid "Hide variants" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:100 -#: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:105 -#, python-format -msgid "Show %(count)s variants of %(item)s" -msgstr "" - #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:102 #: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:107 msgid "Show variants" @@ -29348,7 +29389,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:104 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:30 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:68 -#: pretix/presale/views/widget.py:451 +#: pretix/presale/views/widget.py:444 msgid "Reserved" msgstr "" @@ -29356,102 +29397,102 @@ msgstr "" msgid "All remaining products are reserved but might become available again." msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:17 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:18 msgid "Price per item" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:21 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:22 msgid "Price total" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:45 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:46 msgid "Seat:" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:60 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:61 msgctxt "subevent" msgid "Date:" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:78 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:79 msgid "Location:" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:80 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:81 msgid "Show full location" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:91 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:92 msgid "Membership:" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:122 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:123 msgid "This ticket is blocked." msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:129 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:130 msgctxt "ticket_checkins" msgid "Usage:" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:133 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:134 #, python-format msgid "This ticket has been used once." msgid_plural "This ticket has been used %(count)s times." msgstr[0] "" msgstr[1] "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:165 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:166 msgid "No attendee name provided" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:218 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:219 msgid "The image you previously uploaded" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:264 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:337 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:265 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:338 msgid "The price of this product was reduced because of an automatic discount." msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:268 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:341 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:269 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:342 #, python-format msgid "%(percent)s %% Discount" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:272 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:345 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:273 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:346 msgid "Discounted" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:282 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:283 msgid "Okay, we're removing that…" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:287 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:289 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:288 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:290 #, python-format msgid "Remove %(item)s from your cart" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:292 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:293 #, python-format msgid "Remove one %(item)s from your cart" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:294 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:295 #, python-format msgid "" "Remove one %(item)s from your cart. You currently have %(count)s in your " "cart." msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:302 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:303 msgid "We're trying to reserve another one for you!" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:303 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:304 #: pretix/presale/templates/pretixpresale/event/index.html:187 #: pretix/presale/templates/pretixpresale/event/seatingplan.html:24 #: pretix/presale/templates/pretixpresale/event/voucher.html:62 @@ -29461,53 +29502,57 @@ msgid "" "your purchase." msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:322 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:323 #, python-format msgid "Add one more %(item)s to your cart" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:324 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:325 #, python-format msgid "" "Add one more %(item)s to your cart. You currently have %(count)s in your " "cart." msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:384 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:385 #: pretix/presale/templates/pretixpresale/event/order_giftcard.html:20 #: pretix/presale/templates/pretixpresale/event/position_giftcard.html:20 msgid "Current value:" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:466 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:467 #, python-format msgid "One product" msgid_plural "%(num)s products" msgstr[0] "" msgstr[1] "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:480 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:481 #, python-format msgid "incl. %(tax_sum)s taxes" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:500 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:501 #, python-format msgid "The items in your cart are reserved for you for %(minutes)s minutes." msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:504 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:505 msgid "" "The items in your cart are no longer reserved for you. You can still " "complete your order as long as they’re available." msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:509 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:510 #: pretix/presale/templates/pretixpresale/fragment_modals.html:48 msgid "Renew reservation" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:514 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:522 +msgid "Reservation renewed" +msgstr "" + +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:528 msgid "Overview of your ordered products." msgstr "" @@ -29536,7 +29581,7 @@ msgid "We're applying this voucher to your cart..." msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:79 -#: pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html:26 +#: pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html:27 msgid "Redeem voucher" msgstr "" @@ -29815,9 +29860,9 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:5 #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:5 -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:33 -#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:33 -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:33 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:37 +#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:37 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:37 msgid "calendar navigation" msgstr "" @@ -29827,18 +29872,18 @@ msgid "Show previous month, %(month)s" msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:24 -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:52 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:56 msgid "Select a month to display" msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:26 -#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:17 -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:54 +#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:16 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:58 msgid "Month" msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:39 -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:67 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:71 msgid "Show month" msgstr "" @@ -29854,13 +29899,13 @@ msgid "Show previous week, %(week)s" msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:24 -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:52 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:56 msgid "Select a week to display" msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:26 #: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:12 -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:54 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:58 msgid "Week" msgstr "" @@ -29869,7 +29914,7 @@ msgid "Select week to show" msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:43 -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:71 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:75 msgid "Show week" msgstr "" @@ -29881,7 +29926,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_list.html:34 #: pretix/presale/templates/pretixpresale/organizers/index.html:93 -#: pretix/presale/views/widget.py:462 +#: pretix/presale/views/widget.py:455 msgid "More info" msgstr "" @@ -29920,12 +29965,12 @@ msgid "Choose date to book a ticket" msgstr "" #: pretix/presale/templates/pretixpresale/event/index.html:156 -#: pretix/presale/views/waiting.py:141 pretix/presale/views/widget.py:781 +#: pretix/presale/views/waiting.py:141 pretix/presale/views/widget.py:774 msgid "The booking period for this event is over." msgstr "" #: pretix/presale/templates/pretixpresale/event/index.html:164 -#: pretix/presale/views/widget.py:783 +#: pretix/presale/views/widget.py:776 #, python-format msgid "The booking period for this event will start on %(date)s at %(time)s." msgstr "" @@ -30571,7 +30616,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:93 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:13 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:57 -#: pretix/presale/views/widget.py:436 +#: pretix/presale/views/widget.py:429 msgid "Few tickets left" msgstr "" @@ -30579,7 +30624,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:96 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:18 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:60 -#: pretix/presale/views/widget.py:441 +#: pretix/presale/views/widget.py:434 msgctxt "available_event_in_list" msgid "Buy now" msgstr "" @@ -30592,7 +30637,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:43 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:62 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:77 -#: pretix/presale/views/widget.py:443 pretix/presale/views/widget.py:466 +#: pretix/presale/views/widget.py:436 pretix/presale/views/widget.py:459 msgid "Book now" msgstr "" @@ -30600,7 +30645,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:110 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:37 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:73 -#: pretix/presale/views/widget.py:458 +#: pretix/presale/views/widget.py:451 msgid "Fully booked" msgstr "" @@ -30612,7 +30657,11 @@ msgid "" " " msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:27 +#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:5 +msgid "Event overview by month, week, etc." +msgstr "" + +#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:26 msgid "iCal" msgstr "" @@ -30669,53 +30718,53 @@ msgid "" "Once the process in the new window has been completed, you can continue here." msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:58 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:62 msgid "Close" msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:79 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:83 msgid "Adjust settings in detail" msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:84 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:88 msgid "Required cookies" msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:88 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:92 msgid "" "Functional cookies (e.g. shopping cart, login, payment, language preference) " "and technical cookies (e.g. security purposes)" msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:102 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:106 msgctxt "cookie_usage" msgid "Functionality" msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:104 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:108 msgctxt "cookie_usage" msgid "Analytics" msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:106 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:110 msgctxt "cookie_usage" msgid "Marketing" msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:108 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:112 msgctxt "cookie_usage" msgid "Social features" msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:124 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:128 msgid "Save selection" msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:141 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:145 msgid "You didn't select any ticket." msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:142 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:146 msgid "" "Please tick a checkbox or enter a quantity for one of the ticket types to " "add to the cart." @@ -30757,37 +30806,34 @@ msgstr "" msgid "Enjoy!" msgstr "" -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:7 -#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:7 -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:7 -msgid "Event overview" -msgstr "" - -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:21 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:8 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:25 #, python-format msgid "Events in %(month)s" msgstr "" -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:91 -#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:104 -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:117 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:95 +#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:108 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:121 msgid "Note that the events in this view are in different timezones." msgstr "" -#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:21 +#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:8 +#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:25 #, python-format msgid "Events on %(day)s" msgstr "" -#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:52 +#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:56 msgid "Select a date to display" msgstr "" -#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:59 +#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:63 msgid "Show date" msgstr "" -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:21 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:8 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:25 #, python-format msgid "Events in %(week)s (%(week_day_from)s – %(week_day_to)s)" msgstr "" @@ -31004,39 +31050,39 @@ msgstr "" msgid "We applied the voucher to as many products in your cart as we could." msgstr "" -#: pretix/presale/views/cart.py:460 pretix/presale/views/cart.py:468 +#: pretix/presale/views/cart.py:476 pretix/presale/views/cart.py:484 msgid "" "The gift card has been saved to your cart. Please continue your checkout." msgstr "" -#: pretix/presale/views/cart.py:504 +#: pretix/presale/views/cart.py:520 msgid "Your cart has been updated." msgstr "" -#: pretix/presale/views/cart.py:507 pretix/presale/views/cart.py:533 +#: pretix/presale/views/cart.py:523 pretix/presale/views/cart.py:549 msgid "Your cart is now empty." msgstr "" -#: pretix/presale/views/cart.py:553 +#: pretix/presale/views/cart.py:569 msgid "Your cart timeout was extended." msgstr "" -#: pretix/presale/views/cart.py:568 +#: pretix/presale/views/cart.py:584 msgid "The products have been successfully added to your cart." msgstr "" -#: pretix/presale/views/cart.py:592 pretix/presale/views/event.py:542 -#: pretix/presale/views/widget.py:402 +#: pretix/presale/views/cart.py:608 pretix/presale/views/event.py:542 +#: pretix/presale/views/widget.py:395 msgid "Tickets for this event cannot be purchased on this sales channel." msgstr "" -#: pretix/presale/views/cart.py:731 +#: pretix/presale/views/cart.py:763 msgid "" "The gift card has been saved to your cart. Please now select the products " "you want to purchase." msgstr "" -#: pretix/presale/views/cart.py:759 +#: pretix/presale/views/cart.py:791 msgctxt "subevent" msgid "We were unable to find the specified date." msgstr "" @@ -31150,72 +31196,72 @@ msgstr "" msgid "An invoice has been generated." msgstr "" -#: pretix/presale/views/order.py:841 pretix/presale/views/order.py:913 +#: pretix/presale/views/order.py:843 pretix/presale/views/order.py:915 msgid "You cannot modify this order" msgstr "" -#: pretix/presale/views/order.py:1008 pretix/presale/views/order.py:1013 -#: pretix/presale/views/order.py:1018 +#: pretix/presale/views/order.py:1010 pretix/presale/views/order.py:1015 +#: pretix/presale/views/order.py:1020 msgid "You chose an invalid cancellation fee." msgstr "" -#: pretix/presale/views/order.py:1034 +#: pretix/presale/views/order.py:1036 msgid "Canceled by customer" msgstr "" -#: pretix/presale/views/order.py:1045 +#: pretix/presale/views/order.py:1047 msgid "The cancellation has been requested." msgstr "" -#: pretix/presale/views/order.py:1098 +#: pretix/presale/views/order.py:1100 msgid "Ticket download is not (yet) enabled for this order." msgstr "" -#: pretix/presale/views/order.py:1107 +#: pretix/presale/views/order.py:1109 msgid "Please click the link we sent you via email to download your tickets." msgstr "" -#: pretix/presale/views/order.py:1590 +#: pretix/presale/views/order.py:1592 #, python-brace-format msgid "" "The order has been changed. You can now proceed by paying the open amount of " "{amount}." msgstr "" -#: pretix/presale/views/order.py:1602 +#: pretix/presale/views/order.py:1604 msgid "You did not make any changes." msgstr "" -#: pretix/presale/views/order.py:1626 +#: pretix/presale/views/order.py:1628 msgid "You may not change your order in a way that reduces the total price." msgstr "" -#: pretix/presale/views/order.py:1628 +#: pretix/presale/views/order.py:1630 msgid "You may only change your order in a way that increases the total price." msgstr "" -#: pretix/presale/views/order.py:1630 +#: pretix/presale/views/order.py:1632 msgid "You may not change your order in a way that changes the total price." msgstr "" -#: pretix/presale/views/order.py:1632 +#: pretix/presale/views/order.py:1634 msgid "You may not change your order in a way that would require a refund." msgstr "" -#: pretix/presale/views/order.py:1640 +#: pretix/presale/views/order.py:1642 msgid "" "You may not change your order in a way that increases the total price since " "payments are no longer being accepted for this event." msgstr "" -#: pretix/presale/views/order.py:1646 +#: pretix/presale/views/order.py:1648 msgid "" "You may not change your order in a way that requires additional payment " "while we are processing your current payment. Please check back after your " "current payment has been accepted." msgstr "" -#: pretix/presale/views/order.py:1662 pretix/presale/views/order.py:1693 +#: pretix/presale/views/order.py:1664 pretix/presale/views/order.py:1695 msgid "You cannot change this order." msgstr "" @@ -31281,15 +31327,15 @@ msgid "" "else." msgstr "" -#: pretix/presale/views/widget.py:397 +#: pretix/presale/views/widget.py:390 msgid "This ticket shop is currently disabled." msgstr "" -#: pretix/presale/views/widget.py:411 +#: pretix/presale/views/widget.py:404 msgid "The selected date does not exist in this event series." msgstr "" -#: pretix/presale/views/widget.py:474 +#: pretix/presale/views/widget.py:467 #, python-format msgid "from %(start_date)s" msgstr "" diff --git a/src/pretix/locale/ang/LC_MESSAGES/djangojs.po b/src/pretix/locale/ang/LC_MESSAGES/djangojs.po index 99980312f3..0c06afbb3e 100644 --- a/src/pretix/locale/ang/LC_MESSAGES/djangojs.po +++ b/src/pretix/locale/ang/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-30 10:36+0000\n" +"POT-Creation-Date: 2025-06-26 09:11+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -131,7 +131,7 @@ msgstr "" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167 #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:50 -#: pretix/static/pretixpresale/js/ui/cart.js:92 +#: pretix/static/pretixpresale/js/ui/cart.js:89 msgid "Continue" msgstr "" @@ -329,13 +329,13 @@ msgid "Currently inside" msgstr "" #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:71 -#: pretix/static/pretixcontrol/js/ui/question.js:137 +#: pretix/static/pretixcontrol/js/ui/question.js:136 #: pretix/static/pretixpresale/js/ui/questions.js:270 msgid "Yes" msgstr "" #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:72 -#: pretix/static/pretixcontrol/js/ui/question.js:138 +#: pretix/static/pretixcontrol/js/ui/question.js:137 #: pretix/static/pretixpresale/js/ui/questions.js:270 msgid "No" msgstr "" @@ -647,23 +647,23 @@ msgstr "" msgid "Selected only" msgstr "" -#: pretix/static/pretixcontrol/js/ui/main.js:782 +#: pretix/static/pretixcontrol/js/ui/main.js:811 msgid "Enter page number between 1 and %(max)s." msgstr "" -#: pretix/static/pretixcontrol/js/ui/main.js:785 +#: pretix/static/pretixcontrol/js/ui/main.js:814 msgid "Invalid page number." msgstr "" -#: pretix/static/pretixcontrol/js/ui/main.js:943 +#: pretix/static/pretixcontrol/js/ui/main.js:972 msgid "Use a different name internally" msgstr "" -#: pretix/static/pretixcontrol/js/ui/main.js:983 +#: pretix/static/pretixcontrol/js/ui/main.js:1012 msgid "Click to close" msgstr "" -#: pretix/static/pretixcontrol/js/ui/main.js:1064 +#: pretix/static/pretixcontrol/js/ui/main.js:1093 msgid "You have unsaved changes!" msgstr "" @@ -675,11 +675,11 @@ msgstr "" msgid "No results" msgstr "" -#: pretix/static/pretixcontrol/js/ui/question.js:42 +#: pretix/static/pretixcontrol/js/ui/question.js:41 msgid "Others" msgstr "" -#: pretix/static/pretixcontrol/js/ui/question.js:82 +#: pretix/static/pretixcontrol/js/ui/question.js:81 msgid "Count" msgstr "" @@ -689,42 +689,42 @@ msgid_plural "({num} more dates)" msgstr[0] "" msgstr[1] "" -#: pretix/static/pretixpresale/js/ui/cart.js:48 +#: pretix/static/pretixpresale/js/ui/cart.js:47 msgid "" "The items in your cart are no longer reserved for you. You can still " "complete your order as long as they’re available." msgstr "" -#: pretix/static/pretixpresale/js/ui/cart.js:50 +#: pretix/static/pretixpresale/js/ui/cart.js:49 msgid "Cart expired" msgstr "" -#: pretix/static/pretixpresale/js/ui/cart.js:59 -#: pretix/static/pretixpresale/js/ui/cart.js:87 +#: pretix/static/pretixpresale/js/ui/cart.js:58 +#: pretix/static/pretixpresale/js/ui/cart.js:84 msgid "Your cart is about to expire." msgstr "" -#: pretix/static/pretixpresale/js/ui/cart.js:64 +#: pretix/static/pretixpresale/js/ui/cart.js:62 msgid "The items in your cart are reserved for you for one minute." msgid_plural "The items in your cart are reserved for you for {num} minutes." msgstr[0] "" msgstr[1] "" -#: pretix/static/pretixpresale/js/ui/cart.js:86 +#: pretix/static/pretixpresale/js/ui/cart.js:83 msgid "Your cart has expired." msgstr "" -#: pretix/static/pretixpresale/js/ui/cart.js:89 +#: pretix/static/pretixpresale/js/ui/cart.js:86 msgid "" "The items in your cart are no longer reserved for you. You can still " "complete your order as long as they're available." msgstr "" -#: pretix/static/pretixpresale/js/ui/cart.js:90 +#: pretix/static/pretixpresale/js/ui/cart.js:87 msgid "Do you want to renew the reservation period?" msgstr "" -#: pretix/static/pretixpresale/js/ui/cart.js:93 +#: pretix/static/pretixpresale/js/ui/cart.js:90 msgid "Renew reservation" msgstr "" @@ -749,19 +749,16 @@ msgid "Google Pay" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:16 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:16 msgctxt "widget" msgid "Quantity" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:17 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:17 msgctxt "widget" msgid "Decrease quantity" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:18 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:18 msgctxt "widget" msgid "Increase quantity" msgstr "" @@ -777,166 +774,139 @@ msgid "Filter" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:21 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:19 msgctxt "widget" msgid "Price" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:22 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:20 #, javascript-format msgctxt "widget" msgid "Original price: %s" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:23 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:21 #, javascript-format msgctxt "widget" msgid "New price: %s" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:24 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:22 msgctxt "widget" msgid "Select" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:25 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:23 #, javascript-format msgctxt "widget" msgid "Select %s" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:26 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:24 #, javascript-format msgctxt "widget" msgid "Select variant %s" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:27 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:25 msgctxt "widget" msgid "Sold out" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:28 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:26 msgctxt "widget" msgid "Buy" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:29 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:27 msgctxt "widget" msgid "Register" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:30 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:28 msgctxt "widget" msgid "Reserved" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:31 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:29 msgctxt "widget" msgid "FREE" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:32 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:30 msgctxt "widget" msgid "from %(currency)s %(price)s" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:33 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:31 #, javascript-format msgctxt "widget" msgid "Image of %s" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:34 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:32 msgctxt "widget" msgid "incl. %(rate)s% %(taxname)s" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:35 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:33 msgctxt "widget" msgid "plus %(rate)s% %(taxname)s" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:36 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:34 msgctxt "widget" msgid "incl. taxes" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:37 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:35 msgctxt "widget" msgid "plus taxes" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:38 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:36 #, javascript-format msgctxt "widget" msgid "currently available: %s" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:39 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:37 msgctxt "widget" msgid "Only available with a voucher" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:40 #: pretix/static/pretixpresale/js/widget/widget.js:43 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:38 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:41 msgctxt "widget" msgid "Not yet available" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:41 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:39 msgctxt "widget" msgid "Not available anymore" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:42 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:40 msgctxt "widget" msgid "Currently not available" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:44 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:42 #, javascript-format msgctxt "widget" msgid "minimum amount to order: %s" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:45 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:43 msgctxt "widget" msgid "Close ticket shop" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:46 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:44 msgctxt "widget" msgid "The ticket shop could not be loaded." msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:47 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:45 msgctxt "widget" msgid "" "There are currently a lot of users in this ticket shop. Please open the shop " @@ -944,25 +914,21 @@ msgid "" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:49 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:47 msgctxt "widget" msgid "Open ticket shop" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:50 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:48 msgctxt "widget" msgid "Checkout" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:51 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:49 msgctxt "widget" msgid "The cart could not be created. Please try again later" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:52 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:50 msgctxt "widget" msgid "" "We could not create your cart, since there are currently too many users in " @@ -970,13 +936,11 @@ msgid "" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:54 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:52 msgctxt "widget" msgid "Waiting list" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:55 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:53 msgctxt "widget" msgid "" "You currently have an active cart for this event. If you select more " @@ -984,31 +948,26 @@ msgid "" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:57 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:55 msgctxt "widget" msgid "Resume checkout" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:58 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:56 msgctxt "widget" msgid "Redeem a voucher" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:59 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:57 msgctxt "widget" msgid "Redeem" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:60 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:58 msgctxt "widget" msgid "Voucher code" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:61 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:59 msgctxt "widget" msgid "Close" msgstr "" @@ -1024,73 +983,61 @@ msgid "You cannot cancel this operation. Please wait for loading to finish." msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:64 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:60 msgctxt "widget" msgid "Continue" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:65 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:61 msgctxt "widget" msgid "Show variants" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:66 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:62 msgctxt "widget" msgid "Hide variants" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:67 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:63 msgctxt "widget" msgid "Choose a different event" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:68 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:64 msgctxt "widget" msgid "Choose a different date" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:69 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:65 msgctxt "widget" msgid "Back" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:70 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:66 msgctxt "widget" msgid "Next month" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:71 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:67 msgctxt "widget" msgid "Previous month" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:72 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:68 msgctxt "widget" msgid "Next week" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:73 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:69 msgctxt "widget" msgid "Previous week" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:74 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:70 msgctxt "widget" msgid "Open seat selection" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:75 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:71 msgctxt "widget" msgid "" "Some or all ticket categories are currently sold out. If you want, you can " @@ -1099,137 +1046,110 @@ msgid "" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:76 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:72 msgctxt "widget" msgid "Load more" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:78 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:74 msgid "Mo" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:79 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:75 msgid "Tu" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:80 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:76 msgid "We" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:81 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:77 msgid "Th" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:82 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:78 msgid "Fr" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:83 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:79 msgid "Sa" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:84 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:80 msgid "Su" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:85 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:81 msgid "Monday" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:86 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:82 msgid "Tuesday" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:87 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:83 msgid "Wednesday" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:88 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:84 msgid "Thursday" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:89 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:85 msgid "Friday" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:90 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:86 msgid "Saturday" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:91 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:87 msgid "Sunday" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:94 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:90 msgid "January" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:95 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:91 msgid "February" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:96 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:92 msgid "March" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:97 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:93 msgid "April" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:98 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:94 msgid "May" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:99 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:95 msgid "June" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:100 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:96 msgid "July" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:101 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:97 msgid "August" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:102 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:98 msgid "September" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:103 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:99 msgid "October" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:104 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:100 msgid "November" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:105 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:101 msgid "December" msgstr "" diff --git a/src/pretix/locale/ar/LC_MESSAGES/django.po b/src/pretix/locale/ar/LC_MESSAGES/django.po index 78925d25ee..4a6a28d977 100644 --- a/src/pretix/locale/ar/LC_MESSAGES/django.po +++ b/src/pretix/locale/ar/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-30 10:35+0000\n" +"POT-Creation-Date: 2025-06-26 09:09+0000\n" "PO-Revision-Date: 2025-04-08 18:00+0000\n" "Last-Translator: Menaouer Chaabi " "<98581961+DerJimno@users.noreply.github.com>\n" @@ -235,13 +235,13 @@ msgstr "تعليق" msgid "The product \"{}\" is not assigned to a quota." msgstr "لم يتم تعيين حصة للمنتج \"{}\"." -#: pretix/api/serializers/checkin.py:65 pretix/base/models/event.py:1685 -#: pretix/base/models/items.py:1917 pretix/base/models/items.py:2184 +#: pretix/api/serializers/checkin.py:65 pretix/base/models/event.py:1691 +#: pretix/base/models/items.py:1917 pretix/base/models/items.py:2203 msgid "One or more items do not belong to this event." msgstr "هناك عنصر أو أكثر لا ينتمي إلى هذه الفعالية." #: pretix/api/serializers/checkin.py:69 pretix/api/serializers/checkin.py:72 -#: pretix/base/models/items.py:2195 pretix/base/models/items.py:2198 +#: pretix/base/models/items.py:2214 pretix/base/models/items.py:2217 #: pretix/base/models/waitinglist.py:307 pretix/base/models/waitinglist.py:310 msgid "The subevent does not belong to this event." msgstr "الفعالية الفرعية لا تنتمي إلى هذه الفعالية." @@ -280,11 +280,11 @@ msgstr "إضافة مقيدة: '{name}'." msgid "Item meta data property '{name}' does not exist." msgstr "خاصية البيانات الوصفية للعنصر '{name}' غير موجودة." -#: pretix/api/serializers/item.py:207 pretix/control/forms/item.py:1267 +#: pretix/api/serializers/item.py:207 pretix/control/forms/item.py:1273 msgid "The bundled item must not be the same item as the bundling one." msgstr "يجب ألا يكون العنصر المجمّع هو نفس عنصر التجميع." -#: pretix/api/serializers/item.py:210 pretix/control/forms/item.py:1269 +#: pretix/api/serializers/item.py:210 pretix/control/forms/item.py:1275 msgid "The bundled item must not have bundles on its own." msgstr "يجب ألا يحتوي العنصر المجمع على حزم بمفرده." @@ -308,11 +308,11 @@ msgstr "" "يجب ألا ترتبط منتجات بطاقات الهدايا بمعدلات ضريبية غير صفرية حيث سيتم تطبيق " "ضريبة المبيعات عند استرداد بطاقة الهدايا." -#: pretix/api/serializers/item.py:322 pretix/control/forms/item.py:774 +#: pretix/api/serializers/item.py:322 pretix/control/forms/item.py:780 msgid "Gift card products should not be admission products at the same time." msgstr "لا يمكن أن تكون منتجات بطاقات الهدايا هي نفس منتجات القبول." -#: pretix/api/serializers/item.py:519 +#: pretix/api/serializers/item.py:524 msgid "" "Updating options via PATCH/PUT is not supported. Please use the dedicated " "nested endpoint." @@ -320,19 +320,19 @@ msgstr "" "خيارات التحديث عبر PATCH/PUT غير مدعومة. الرجاء استخدام نقطة نهاية المتداخلة " "المخصصة." -#: pretix/api/serializers/item.py:533 pretix/control/forms/item.py:178 +#: pretix/api/serializers/item.py:538 pretix/control/forms/item.py:178 msgid "Question cannot depend on a question asked during check-in." msgstr "لا يمكن أن يعتمد السؤال على سؤال تم طرحه أثناء التسجيل." -#: pretix/api/serializers/item.py:538 pretix/control/forms/item.py:183 +#: pretix/api/serializers/item.py:543 pretix/control/forms/item.py:183 msgid "Circular dependency between questions detected." msgstr "الأسئلة تدور في حلقة لا متناهية." -#: pretix/api/serializers/item.py:543 pretix/control/forms/item.py:192 +#: pretix/api/serializers/item.py:548 pretix/control/forms/item.py:192 msgid "This type of question cannot be asked during check-in." msgstr "لا يمكن طرح هذا النوع من الأسئلة أثناء تسجيل الدخول." -#: pretix/api/serializers/item.py:546 pretix/control/forms/item.py:200 +#: pretix/api/serializers/item.py:551 pretix/control/forms/item.py:200 msgid "This type of question cannot be shown during check-in." msgstr "لا يمكن عرض هذا النوع من الأسئلة أثناء تسجيل الدخول." @@ -363,7 +363,7 @@ msgid "" msgstr "لا توجد حصة كافية متاحة في الحصة \"{}\" لإجراء العملية." #: pretix/api/serializers/organizer.py:105 -#: pretix/control/forms/organizer.py:892 pretix/presale/forms/customer.py:456 +#: pretix/control/forms/organizer.py:892 pretix/presale/forms/customer.py:458 msgid "An account with this email address is already registered." msgstr "هناك حساب مرتبط بهذا البريد الإلكتروني مسبقا." @@ -405,23 +405,23 @@ msgid "" "account." msgstr "تم تفويض التطبيق \"{application_name}\" للوصول إلى حسابك." -#: pretix/api/views/order.py:607 pretix/control/views/orders.py:1609 -#: pretix/presale/views/order.py:731 pretix/presale/views/order.py:804 +#: pretix/api/views/order.py:607 pretix/control/views/orders.py:1610 +#: pretix/presale/views/order.py:733 pretix/presale/views/order.py:806 msgid "You cannot generate an invoice for this order." msgstr "لا يمكن انشاء فاتورة لهذا الطلب." -#: pretix/api/views/order.py:612 pretix/control/views/orders.py:1611 -#: pretix/presale/views/order.py:733 pretix/presale/views/order.py:806 +#: pretix/api/views/order.py:612 pretix/control/views/orders.py:1612 +#: pretix/presale/views/order.py:735 pretix/presale/views/order.py:808 msgid "An invoice for this order already exists." msgstr "توجد فاتورة مصدرة لهذا الطلب مسبقاً." -#: pretix/api/views/order.py:638 pretix/control/views/orders.py:1737 +#: pretix/api/views/order.py:638 pretix/control/views/orders.py:1738 #: pretix/control/views/users.py:145 msgid "There was an error sending the mail. Please try again later." msgstr "حدث خطأ اثناء ارسال البريد الاكتروني. الرجاء المحاولة مرة أخرى لاحقاً." #: pretix/api/views/order.py:718 pretix/base/services/cart.py:216 -#: pretix/base/services/orders.py:187 pretix/presale/views/order.py:788 +#: pretix/base/services/orders.py:187 pretix/presale/views/order.py:790 msgid "One of the selected products is not available in the selected country." msgstr "أحد المنتجات المختارة غير متوفر في البلد المحدد." @@ -440,7 +440,7 @@ msgstr "تم تمييز الطلب على أنه مدفوع" #: pretix/api/webhooks.py:249 pretix/base/models/checkin.py:354 #: pretix/base/notifications.py:251 #: pretix/control/templates/pretixcontrol/event/mail.html:114 -#: pretix/control/views/orders.py:1570 +#: pretix/control/views/orders.py:1571 msgid "Order canceled" msgstr "تم إلغاء الطلب" @@ -633,15 +633,15 @@ msgid "Customer account anonymized" msgstr "تم طمس هويتها لهذا المستخدم." #: pretix/base/addressvalidation.py:100 pretix/base/addressvalidation.py:103 -#: pretix/base/addressvalidation.py:108 pretix/base/forms/questions.py:1004 -#: pretix/base/forms/questions.py:1035 pretix/base/forms/questions.py:1224 -#: pretix/base/payment.py:97 pretix/control/forms/event.py:798 +#: pretix/base/addressvalidation.py:108 pretix/base/forms/questions.py:1046 +#: pretix/base/forms/questions.py:1077 pretix/base/forms/questions.py:1270 +#: pretix/base/payment.py:96 pretix/control/forms/event.py:798 #: pretix/control/forms/event.py:804 pretix/control/forms/event.py:848 #: pretix/control/forms/event.py:1445 pretix/control/forms/mailsetup.py:87 -#: pretix/control/forms/mailsetup.py:129 +#: pretix/control/forms/mailsetup.py:129 pretix/control/forms/subevents.py:185 #: pretix/plugins/banktransfer/payment.py:673 #: pretix/plugins/banktransfer/payment.py:679 -#: pretix/presale/forms/customer.py:151 +#: pretix/presale/forms/customer.py:152 msgid "This field is required." msgstr "هذه الخانة مطلوبة." @@ -676,8 +676,8 @@ msgstr "{system} اسم المستخدم" #: pretix/plugins/checkinlists/exporters.py:507 #: pretix/presale/checkoutflow.py:1532 pretix/presale/forms/checkout.py:57 #: pretix/presale/forms/customer.py:57 pretix/presale/forms/customer.py:142 -#: pretix/presale/forms/customer.py:297 pretix/presale/forms/customer.py:343 -#: pretix/presale/forms/customer.py:386 pretix/presale/forms/user.py:40 +#: pretix/presale/forms/customer.py:298 pretix/presale/forms/customer.py:344 +#: pretix/presale/forms/customer.py:388 pretix/presale/forms/user.py:40 #: pretix/presale/templates/pretixpresale/event/checkout_customer.html:30 #: pretix/presale/templates/pretixpresale/event/order.html:300 msgid "Email" @@ -686,7 +686,7 @@ msgstr "البريد الإلكتروني" #: pretix/base/auth.py:157 pretix/base/forms/auth.py:164 #: pretix/base/forms/auth.py:218 pretix/base/models/auth.py:675 #: pretix/base/models/customers.py:96 pretix/control/forms/mailsetup.py:57 -#: pretix/presale/forms/customer.py:61 pretix/presale/forms/customer.py:301 +#: pretix/presale/forms/customer.py:61 pretix/presale/forms/customer.py:302 msgid "Password" msgstr "كلمة المرور" @@ -869,13 +869,13 @@ msgstr "أسئلة" #: pretix/base/exporters/answers.py:76 pretix/base/exporters/orderlist.py:583 #: pretix/base/exporters/orderlist.py:898 #: pretix/base/exporters/orderlist.py:1138 pretix/base/models/checkin.py:58 -#: pretix/base/models/items.py:2048 pretix/base/models/orders.py:1485 +#: pretix/base/models/items.py:2067 pretix/base/models/orders.py:1485 #: pretix/base/models/orders.py:2999 pretix/base/models/vouchers.py:187 #: pretix/base/models/waitinglist.py:61 pretix/control/forms/event.py:1610 #: pretix/control/forms/filter.py:425 pretix/control/forms/filter.py:1901 #: pretix/control/forms/filter.py:2123 pretix/control/forms/filter.py:2238 #: pretix/control/forms/filter.py:2320 pretix/control/forms/filter.py:2537 -#: pretix/control/forms/item.py:327 pretix/control/forms/orders.py:348 +#: pretix/control/forms/item.py:333 pretix/control/forms/orders.py:348 #: pretix/control/forms/orders.py:400 pretix/control/forms/orders.py:839 #: pretix/control/forms/vouchers.py:118 #: pretix/control/templates/pretixcontrol/checkin/lists.html:99 @@ -894,7 +894,7 @@ msgstr "أسئلة" #: pretix/plugins/sendmail/forms.py:363 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_inspect.html:32 #: pretix/presale/templates/pretixpresale/event/checkout_membership.html:48 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:121 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:125 #: pretix/presale/templates/pretixpresale/event/fragment_change_form.html:20 msgctxt "subevent" msgid "Date" @@ -974,7 +974,7 @@ msgstr "معرف داخلي" #: pretix/control/views/waitinglist.py:314 #: pretix/plugins/checkinlists/exporters.py:508 #: pretix/presale/checkoutflow.py:1538 pretix/presale/forms/checkout.py:84 -#: pretix/presale/forms/waitinglist.py:78 +#: pretix/presale/forms/waitinglist.py:80 #: pretix/presale/templates/pretixpresale/event/order.html:304 msgid "Phone number" msgstr "رقم الجوال" @@ -989,15 +989,15 @@ msgstr "الاسم الكامل" #: pretix/base/exporters/customers.py:74 pretix/base/exporters/invoices.py:206 #: pretix/base/exporters/invoices.py:214 pretix/base/exporters/invoices.py:332 #: pretix/base/exporters/invoices.py:340 pretix/base/exporters/orderlist.py:262 -#: pretix/base/exporters/waitinglist.py:108 pretix/base/forms/questions.py:1185 +#: pretix/base/exporters/waitinglist.py:108 pretix/base/forms/questions.py:1227 #: pretix/base/models/devices.py:65 pretix/base/models/devices.py:127 -#: pretix/base/models/event.py:1487 pretix/base/models/event.py:1729 -#: pretix/base/models/items.py:2052 pretix/base/models/items.py:2225 +#: pretix/base/models/event.py:1493 pretix/base/models/event.py:1735 +#: pretix/base/models/items.py:2071 pretix/base/models/items.py:2244 #: pretix/base/models/memberships.py:41 pretix/base/models/organizer.py:75 #: pretix/base/models/organizer.py:535 pretix/base/models/seating.py:85 #: pretix/base/models/waitinglist.py:69 pretix/base/settings.py:3265 #: pretix/base/settings.py:3275 pretix/base/settings.py:3629 -#: pretix/control/forms/filter.py:625 pretix/control/forms/item.py:439 +#: pretix/control/forms/filter.py:625 pretix/control/forms/item.py:445 #: pretix/control/forms/organizer.py:917 #: pretix/control/templates/pretixcontrol/checkin/index.html:109 #: pretix/control/templates/pretixcontrol/checkin/lists.html:92 @@ -1021,8 +1021,8 @@ msgstr "الاسم الكامل" #: pretix/plugins/reports/exporters.py:885 #: pretix/plugins/ticketoutputpdf/models.py:333 #: pretix/plugins/ticketoutputpdf/templates/pretixplugins/ticketoutputpdf/index.html:32 -#: pretix/presale/forms/customer.py:178 pretix/presale/forms/customer.py:479 -#: pretix/presale/forms/waitinglist.py:66 +#: pretix/presale/forms/customer.py:179 pretix/presale/forms/customer.py:483 +#: pretix/presale/forms/waitinglist.py:68 #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:87 #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:139 #: pretix/presale/templates/pretixpresale/event/checkout_customer.html:34 @@ -1090,8 +1090,8 @@ msgstr "" #: pretix/base/exporters/reusablemedia.py:63 pretix/base/modelimport.py:187 #: pretix/base/modelimport.py:194 pretix/base/models/orders.py:1401 #: pretix/control/forms/filter.py:172 pretix/control/forms/filter.py:520 -#: pretix/control/forms/filter.py:707 pretix/control/forms/item.py:608 -#: pretix/control/forms/subevents.py:119 pretix/control/views/item.py:727 +#: pretix/control/forms/filter.py:707 pretix/control/forms/item.py:614 +#: pretix/control/forms/subevents.py:119 pretix/control/views/item.py:733 #: pretix/control/views/vouchers.py:139 pretix/control/views/vouchers.py:140 #: pretix/plugins/checkinlists/exporters.py:600 #: pretix/plugins/checkinlists/exporters.py:603 @@ -1114,8 +1114,8 @@ msgstr "نعم" #: pretix/base/exporters/reusablemedia.py:63 pretix/base/modelimport.py:186 #: pretix/base/modelimport.py:196 pretix/base/models/orders.py:1403 #: pretix/control/forms/filter.py:172 pretix/control/forms/filter.py:521 -#: pretix/control/forms/filter.py:708 pretix/control/forms/item.py:609 -#: pretix/control/forms/subevents.py:120 pretix/control/views/item.py:727 +#: pretix/control/forms/filter.py:708 pretix/control/forms/item.py:615 +#: pretix/control/forms/subevents.py:120 pretix/control/views/item.py:733 #: pretix/control/views/vouchers.py:139 pretix/control/views/vouchers.py:140 #: pretix/plugins/checkinlists/exporters.py:600 #: pretix/plugins/checkinlists/exporters.py:603 @@ -1223,52 +1223,52 @@ msgid "Timezone" msgstr "المنطقة الزمنية" #: pretix/base/exporters/events.py:62 pretix/base/models/event.py:595 -#: pretix/base/models/event.py:1489 pretix/base/settings.py:3263 -#: pretix/base/settings.py:3273 pretix/control/forms/subevents.py:480 +#: pretix/base/models/event.py:1495 pretix/base/settings.py:3263 +#: pretix/base/settings.py:3273 pretix/control/forms/subevents.py:487 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:268 msgid "Event start time" msgstr "وقت بداية الفعالية" #: pretix/base/exporters/events.py:63 pretix/base/models/event.py:597 -#: pretix/base/models/event.py:1491 pretix/base/pdf.py:286 -#: pretix/control/forms/subevents.py:485 +#: pretix/base/models/event.py:1497 pretix/base/pdf.py:286 +#: pretix/control/forms/subevents.py:492 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:270 msgid "Event end time" msgstr "وقت نهاية الفعالية" #: pretix/base/exporters/events.py:64 pretix/base/models/event.py:599 -#: pretix/base/models/event.py:1493 pretix/control/forms/subevents.py:490 +#: pretix/base/models/event.py:1499 pretix/control/forms/subevents.py:497 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:274 msgid "Admission time" msgstr "وقت قبول التسجيل" #: pretix/base/exporters/events.py:65 pretix/base/models/event.py:611 -#: pretix/base/models/event.py:1502 pretix/control/forms/subevents.py:93 +#: pretix/base/models/event.py:1508 pretix/control/forms/subevents.py:93 msgid "Start of presale" msgstr "بداية عرض ما قبل البيع" #: pretix/base/exporters/events.py:66 pretix/base/models/event.py:605 -#: pretix/base/models/event.py:1496 pretix/control/forms/subevents.py:99 +#: pretix/base/models/event.py:1502 pretix/control/forms/subevents.py:99 msgid "End of presale" msgstr "نهاية عرض ما قبل البيع" #: pretix/base/exporters/events.py:67 pretix/base/exporters/invoices.py:351 -#: pretix/base/models/event.py:617 pretix/base/models/event.py:1508 +#: pretix/base/models/event.py:617 pretix/base/models/event.py:1514 msgid "Location" msgstr "الموقع" #: pretix/base/exporters/events.py:68 pretix/base/models/event.py:625 -#: pretix/base/models/event.py:1511 +#: pretix/base/models/event.py:1517 msgid "Latitude" msgstr "خط العرض" #: pretix/base/exporters/events.py:69 pretix/base/models/event.py:633 -#: pretix/base/models/event.py:1519 +#: pretix/base/models/event.py:1525 msgid "Longitude" msgstr "خط الطول" #: pretix/base/exporters/events.py:70 pretix/base/models/event.py:645 -#: pretix/base/models/event.py:1534 +#: pretix/base/models/event.py:1540 #: pretix/control/templates/pretixcontrol/event/index.html:128 #: pretix/control/templates/pretixcontrol/order/index.html:991 msgid "Internal comment" @@ -1353,7 +1353,7 @@ msgstr "رقم الفاتورة" #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/transaction_list.html:11 #: pretix/plugins/checkinlists/exporters.py:752 #: pretix/presale/templates/pretixpresale/event/fragment_giftcard_history.html:6 -#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:54 +#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:58 msgid "Date" msgstr "التاريخ" @@ -1415,7 +1415,7 @@ msgstr "مرسل الفاتورة:" #: pretix/base/exporters/invoices.py:207 pretix/base/exporters/invoices.py:333 #: pretix/base/exporters/orderlist.py:269 #: pretix/base/exporters/orderlist.py:462 -#: pretix/base/exporters/orderlist.py:604 pretix/base/forms/questions.py:696 +#: pretix/base/exporters/orderlist.py:604 pretix/base/forms/questions.py:704 #: pretix/base/modelimport_orders.py:206 pretix/base/modelimport_orders.py:352 #: pretix/base/models/customers.py:311 pretix/base/models/orders.py:1539 #: pretix/base/models/orders.py:3272 pretix/control/forms/filter.py:629 @@ -1432,12 +1432,12 @@ msgstr "العنوان" #: pretix/base/exporters/invoices.py:334 pretix/base/exporters/invoices.py:342 #: pretix/base/exporters/orderlist.py:269 #: pretix/base/exporters/orderlist.py:462 -#: pretix/base/exporters/orderlist.py:605 pretix/base/forms/questions.py:707 +#: pretix/base/exporters/orderlist.py:605 pretix/base/forms/questions.py:715 #: pretix/base/modelimport_orders.py:217 pretix/base/modelimport_orders.py:363 #: pretix/base/models/customers.py:312 pretix/base/models/orders.py:1540 #: pretix/base/models/orders.py:3273 pretix/base/settings.py:1124 #: pretix/control/forms/filter.py:633 pretix/control/forms/filter.py:664 -#: pretix/control/views/item.py:487 +#: pretix/control/views/item.py:488 #: pretix/plugins/checkinlists/exporters.py:535 #: pretix/plugins/reports/exporters.py:841 msgid "ZIP code" @@ -1447,12 +1447,12 @@ msgstr "الرمز البريدي" #: pretix/base/exporters/invoices.py:335 pretix/base/exporters/invoices.py:343 #: pretix/base/exporters/orderlist.py:269 #: pretix/base/exporters/orderlist.py:462 -#: pretix/base/exporters/orderlist.py:606 pretix/base/forms/questions.py:715 +#: pretix/base/exporters/orderlist.py:606 pretix/base/forms/questions.py:723 #: pretix/base/modelimport_orders.py:228 pretix/base/modelimport_orders.py:374 #: pretix/base/models/customers.py:313 pretix/base/models/orders.py:1541 #: pretix/base/models/orders.py:3274 pretix/base/settings.py:1136 #: pretix/control/forms/filter.py:638 pretix/control/forms/filter.py:669 -#: pretix/control/views/item.py:497 +#: pretix/control/views/item.py:498 #: pretix/plugins/checkinlists/exporters.py:536 #: pretix/plugins/reports/exporters.py:842 msgid "City" @@ -1462,14 +1462,14 @@ msgstr "المدينة" #: pretix/base/exporters/invoices.py:336 pretix/base/exporters/invoices.py:344 #: pretix/base/exporters/orderlist.py:269 #: pretix/base/exporters/orderlist.py:462 -#: pretix/base/exporters/orderlist.py:607 pretix/base/forms/questions.py:727 +#: pretix/base/exporters/orderlist.py:607 pretix/base/forms/questions.py:735 #: pretix/base/modelimport_orders.py:244 pretix/base/modelimport_orders.py:390 #: pretix/base/models/customers.py:314 pretix/base/models/orders.py:1542 #: pretix/base/models/orders.py:3275 pretix/base/models/orders.py:3276 #: pretix/base/settings.py:1145 pretix/control/forms/filter.py:643 #: pretix/control/forms/filter.py:674 #: pretix/control/templates/pretixcontrol/order/index.html:953 -#: pretix/control/views/item.py:507 +#: pretix/control/views/item.py:508 #: pretix/plugins/checkinlists/exporters.py:537 #: pretix/plugins/reports/exporters.py:792 #: pretix/plugins/reports/exporters.py:837 @@ -1514,11 +1514,11 @@ msgstr "مستلم الفاتورة:" #: pretix/base/exporters/orderlist.py:262 #: pretix/base/exporters/orderlist.py:454 #: pretix/base/exporters/orderlist.py:603 -#: pretix/base/exporters/orderlist.py:643 pretix/base/forms/questions.py:688 +#: pretix/base/exporters/orderlist.py:643 pretix/base/forms/questions.py:696 #: pretix/base/modelimport_orders.py:176 pretix/base/modelimport_orders.py:341 #: pretix/control/forms/filter.py:621 pretix/control/forms/filter.py:656 #: pretix/control/templates/pretixcontrol/order/index.html:945 -#: pretix/control/views/item.py:465 +#: pretix/control/views/item.py:466 #: pretix/plugins/checkinlists/exporters.py:518 #: pretix/plugins/reports/exporters.py:839 #: pretix/plugins/reports/exporters.py:885 @@ -1534,8 +1534,8 @@ msgstr "عنوان الشارع" #: pretix/base/exporters/invoices.py:219 pretix/base/exporters/invoices.py:345 #: pretix/base/exporters/orderlist.py:269 #: pretix/base/exporters/orderlist.py:462 -#: pretix/base/exporters/orderlist.py:608 pretix/base/forms/questions.py:752 -#: pretix/base/forms/questions.py:1135 pretix/base/modelimport_orders.py:263 +#: pretix/base/exporters/orderlist.py:608 pretix/base/forms/questions.py:760 +#: pretix/base/forms/questions.py:1177 pretix/base/modelimport_orders.py:263 #: pretix/base/models/customers.py:315 pretix/base/models/orders.py:1543 #: pretix/base/models/orders.py:3278 pretix/base/views/js_helpers.py:44 #: pretix/control/templates/pretixcontrol/order/index.html:956 @@ -1715,7 +1715,7 @@ msgstr "النوع" #: pretix/base/exporters/items.py:71 pretix/base/exporters/reusablemedia.py:48 #: pretix/base/models/customers.py:57 pretix/base/models/customers.py:403 -#: pretix/base/models/discount.py:60 pretix/base/models/event.py:1478 +#: pretix/base/models/discount.py:60 pretix/base/models/event.py:1484 #: pretix/base/models/items.py:489 pretix/base/models/items.py:1152 #: pretix/base/models/media.py:77 pretix/base/settings.py:204 #: pretix/base/settings.py:239 pretix/base/settings.py:270 @@ -1768,7 +1768,7 @@ msgstr "إنشاء التذاكر" #: pretix/base/exporters/items.py:79 pretix/base/exporters/orderlist.py:1135 #: pretix/base/exporters/waitinglist.py:41 pretix/base/shredder.py:367 #: pretix/control/forms/event.py:1686 pretix/control/navigation.py:237 -#: pretix/control/templates/pretixcontrol/event/settings.html:352 +#: pretix/control/templates/pretixcontrol/event/settings.html:363 #: pretix/control/templates/pretixcontrol/orders/cancel.html:62 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:6 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:9 @@ -1784,17 +1784,17 @@ msgstr "إنشاء التذاكر" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:102 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:26 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:66 -#: pretix/presale/views/widget.py:447 +#: pretix/presale/views/widget.py:440 msgid "Waiting list" msgstr "قائمة الانتظار" #: pretix/base/exporters/items.py:80 pretix/base/models/discount.py:82 #: pretix/base/models/items.py:224 pretix/base/models/items.py:280 #: pretix/base/models/items.py:562 pretix/base/models/items.py:1205 -#: pretix/base/payment.py:335 pretix/control/forms/subevents.py:320 -#: pretix/control/forms/subevents.py:342 +#: pretix/base/payment.py:392 pretix/control/forms/subevents.py:327 +#: pretix/control/forms/subevents.py:349 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:506 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:171 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:172 #: pretix/control/templates/pretixcontrol/subevents/detail.html:149 msgid "Available from" msgstr "متاح من" @@ -1802,9 +1802,9 @@ msgstr "متاح من" #: pretix/base/exporters/items.py:81 pretix/base/models/discount.py:87 #: pretix/base/models/items.py:229 pretix/base/models/items.py:285 #: pretix/base/models/items.py:572 pretix/base/models/items.py:1215 -#: pretix/base/payment.py:341 pretix/control/forms/subevents.py:325 +#: pretix/base/payment.py:398 pretix/control/forms/subevents.py:332 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:511 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:176 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:177 #: pretix/control/templates/pretixcontrol/subevents/detail.html:154 msgid "Available until" msgstr "متاح حتى" @@ -2154,7 +2154,7 @@ msgstr "نوع الرسوم" #: pretix/control/templates/pretixcontrol/order/change.html:194 #: pretix/control/templates/pretixcontrol/order/change.html:418 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:496 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:161 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:162 #: pretix/control/templates/pretixcontrol/subevents/detail.html:139 #: pretix/plugins/checkinlists/exporters.py:376 #: pretix/plugins/checkinlists/exporters.py:499 @@ -2191,8 +2191,8 @@ msgstr "معرف الحالة" #: pretix/base/exporters/orderlist.py:584 #: pretix/base/exporters/orderlist.py:1139 -#: pretix/base/exporters/waitinglist.py:118 pretix/base/forms/questions.py:642 -#: pretix/base/forms/questions.py:651 pretix/base/models/memberships.py:145 +#: pretix/base/exporters/waitinglist.py:118 pretix/base/forms/questions.py:650 +#: pretix/base/forms/questions.py:659 pretix/base/models/memberships.py:145 #: pretix/control/forms/rrule.py:49 #: pretix/control/templates/pretixcontrol/events/index.html:78 #: pretix/control/templates/pretixcontrol/order/index.html:740 @@ -2245,37 +2245,37 @@ msgstr "تاريخ الإنتهاء" #: pretix/plugins/reports/exporters.py:375 #: pretix/plugins/statistics/templates/pretixplugins/statistics/index.html:100 #: pretix/presale/forms/order.py:36 pretix/presale/forms/waitinglist.py:54 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:11 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:12 #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:91 msgid "Product" msgstr "منتج" #: pretix/base/exporters/orderlist.py:595 -#: pretix/base/exporters/orderlist.py:600 pretix/base/forms/questions.py:671 +#: pretix/base/exporters/orderlist.py:600 pretix/base/forms/questions.py:679 #: pretix/base/modelimport_orders.py:313 pretix/base/models/customers.py:300 #: pretix/base/models/orders.py:1504 pretix/base/pdf.py:172 #: pretix/control/forms/filter.py:648 pretix/control/forms/organizer.py:986 #: pretix/control/templates/pretixcontrol/order/index.html:514 #: pretix/control/templates/pretixcontrol/organizers/customer.html:120 -#: pretix/control/views/item.py:441 pretix/plugins/badges/exporters.py:495 +#: pretix/control/views/item.py:442 pretix/plugins/badges/exporters.py:495 #: pretix/plugins/checkinlists/exporters.py:120 #: pretix/plugins/checkinlists/exporters.py:493 #: pretix/plugins/ticketoutputpdf/exporters.py:94 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:161 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:164 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:162 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:165 #: pretix/presale/templates/pretixpresale/event/fragment_change_form.html:38 #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:50 #: pretix/presale/templates/pretixpresale/organizers/customer_memberships.html:36 msgid "Attendee name" msgstr "اسم الحاضر" -#: pretix/base/exporters/orderlist.py:602 pretix/base/forms/questions.py:677 +#: pretix/base/exporters/orderlist.py:602 pretix/base/forms/questions.py:685 #: pretix/base/models/customers.py:307 pretix/base/models/orders.py:1512 #: pretix/base/pdf.py:214 #: pretix/control/templates/pretixcontrol/order/index.html:519 -#: pretix/control/views/item.py:453 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:171 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:174 +#: pretix/control/views/item.py:454 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:172 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:175 msgid "Attendee email" msgstr "البريد الإلكتروني للحاضر" @@ -2392,7 +2392,7 @@ msgstr "منطقة عنوان الفاتورة" #: pretix/control/templates/pretixcontrol/checkin/lists.html:6 #: pretix/control/templates/pretixcontrol/checkin/lists.html:8 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:519 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:272 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:274 #: pretix/control/templates/pretixcontrol/subevents/detail.html:162 #: pretix/plugins/checkinlists/apps.py:44 msgid "Check-in lists" @@ -2418,7 +2418,7 @@ msgid "Only include transactions created within this date range." msgstr "قم بتضمين الطلبات التي تم إنشاؤها في هذا التاريخ أو بعده فقط." #: pretix/base/exporters/orderlist.py:875 pretix/base/models/event.py:672 -#: pretix/base/models/items.py:468 pretix/base/models/items.py:2041 +#: pretix/base/models/items.py:468 pretix/base/models/items.py:2060 #: pretix/base/models/orders.py:233 pretix/base/models/orders.py:3086 #: pretix/base/models/vouchers.py:181 pretix/base/models/waitinglist.py:55 #: pretix/base/notifications.py:187 pretix/control/forms/filter.py:994 @@ -2469,7 +2469,7 @@ msgstr "بيانات الطلب" #: pretix/control/templates/pretixcontrol/order/transactions.html:23 #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:207 #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:353 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:15 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:16 #: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:223 #: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:375 #: pretix/presale/templates/pretixpresale/event/voucher.html:234 @@ -2658,11 +2658,11 @@ msgstr "الحصة الإجمالية" #: pretix/base/exporters/orderlist.py:1134 #: pretix/control/templates/pretixcontrol/event/cancel.html:20 -#: pretix/control/views/item.py:964 +#: pretix/control/views/item.py:970 msgid "Paid orders" msgstr "الطلبات المدفوعة" -#: pretix/base/exporters/orderlist.py:1134 pretix/control/views/item.py:969 +#: pretix/base/exporters/orderlist.py:1134 pretix/control/views/item.py:975 msgid "Pending orders" msgstr "الطلبات المعلقة" @@ -2670,7 +2670,7 @@ msgstr "الطلبات المعلقة" msgid "Blocking vouchers" msgstr "حظر كود الخصم" -#: pretix/base/exporters/orderlist.py:1135 pretix/control/views/item.py:988 +#: pretix/base/exporters/orderlist.py:1135 pretix/control/views/item.py:994 msgid "Current user's carts" msgstr "عربات المستخدم الحالية" @@ -2685,7 +2685,7 @@ msgstr "المتوفر حاليا" #: pretix/base/exporters/orderlist.py:1152 #: pretix/base/exporters/orderlist.py:1159 #: pretix/control/templates/pretixcontrol/items/quota.html:58 -#: pretix/control/views/item.py:995 +#: pretix/control/views/item.py:1001 msgid "Infinite" msgstr "غير محدود" @@ -2710,12 +2710,12 @@ msgstr "" #: pretix/base/exporters/orderlist.py:1212 #: pretix/base/exporters/orderlist.py:1259 #: pretix/base/exporters/orderlist.py:1355 pretix/base/models/giftcards.py:89 -#: pretix/control/templates/pretixcontrol/giftcards/checkout.html:5 +#: pretix/base/payment.py:1454 #: pretix/control/templates/pretixcontrol/giftcards/payment.html:4 #: pretix/control/templates/pretixcontrol/order/index.html:506 #: pretix/control/templates/pretixcontrol/organizers/giftcard.html:28 #: pretix/control/templates/pretixcontrol/organizers/giftcards.html:56 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:151 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:152 msgid "Gift card code" msgstr "رمز بطاقة الهدية" @@ -3020,7 +3020,7 @@ msgstr "الأولوية" #: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:74 #: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:76 #: pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html:12 -#: pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html:19 +#: pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html:20 msgid "Voucher code" msgstr "رمز كود الخصم" @@ -3046,7 +3046,7 @@ msgid "This combination of credentials is not known to our system." msgstr "مجموعة بيانات الاعتماد هذه غير معروفة لدى نظامنا." #: pretix/base/forms/auth.py:66 pretix/base/forms/user.py:57 -#: pretix/presale/forms/customer.py:383 pretix/presale/forms/customer.py:455 +#: pretix/presale/forms/customer.py:385 pretix/presale/forms/customer.py:457 msgid "For security reasons, please wait 5 minutes before you try again." msgstr "لأسباب أمنية ، يرجى الانتظار 5 دقائق قبل المحاولة مرة أخرى." @@ -3063,54 +3063,54 @@ msgstr "" #: pretix/base/forms/auth.py:157 pretix/base/forms/auth.py:215 #: pretix/base/forms/user.py:56 pretix/control/forms/users.py:45 -#: pretix/presale/forms/customer.py:294 pretix/presale/forms/customer.py:382 +#: pretix/presale/forms/customer.py:295 pretix/presale/forms/customer.py:384 msgid "Please enter the same password twice" msgstr "الرجاء إدخال نفس كلمة المرور مرتين" #: pretix/base/forms/auth.py:172 pretix/base/forms/auth.py:224 -#: pretix/presale/forms/customer.py:307 pretix/presale/forms/customer.py:401 +#: pretix/presale/forms/customer.py:308 pretix/presale/forms/customer.py:403 msgid "Repeat password" msgstr "أعد كلمة السر" -#: pretix/base/forms/questions.py:135 pretix/base/forms/questions.py:257 +#: pretix/base/forms/questions.py:135 pretix/base/forms/questions.py:262 #, fuzzy #| msgid "No country specified." msgctxt "name_salutation" msgid "not specified" msgstr "تحديد أي بلد." -#: pretix/base/forms/questions.py:220 +#: pretix/base/forms/questions.py:225 #, fuzzy #| msgid "Please enter a shorter name." msgid "Please do not use special characters in names." msgstr "الرجاء إدخال اسم أقصر." -#: pretix/base/forms/questions.py:282 +#: pretix/base/forms/questions.py:287 msgid "Please enter a shorter name." msgstr "الرجاء إدخال اسم أقصر." -#: pretix/base/forms/questions.py:306 +#: pretix/base/forms/questions.py:312 msgctxt "phonenumber" msgid "International area code" msgstr "مفتاح الاتصال الدولي" -#: pretix/base/forms/questions.py:330 +#: pretix/base/forms/questions.py:338 msgctxt "phonenumber" msgid "Phone number (without international area code)" msgstr "رقم الهاتف (بدون مفتاح الاتصال الدولي)" -#: pretix/base/forms/questions.py:491 +#: pretix/base/forms/questions.py:499 msgid "" "You uploaded an image in landscape orientation. Please upload an image in " "portrait orientation." msgstr "" "قمت بتحميل صورة في الاتجاه الأفقي. الرجاء تحميل صورة في الاتجاه العمودي." -#: pretix/base/forms/questions.py:494 +#: pretix/base/forms/questions.py:502 msgid "Please upload an image where the width is 3/4 of the height." msgstr "يرجى تحميل صورة بحيث يكون العرض 3/4 الارتفاع." -#: pretix/base/forms/questions.py:497 +#: pretix/base/forms/questions.py:505 msgid "" "The file you uploaded has a very large number of pixels, please upload an " "image no larger than 10000 x 10000 pixels." @@ -3118,44 +3118,44 @@ msgstr "" "يحتوي الملف الذي قمت بتحميله على عدد كبير جدا من وحدات البكسل ، يرجى تحميل " "صورة لا يزيد حجمها عن 10000 × 10000 بكسل." -#: pretix/base/forms/questions.py:500 pretix/helpers/images.py:75 +#: pretix/base/forms/questions.py:508 pretix/helpers/images.py:75 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" "قم بتحميل صورة صالحة. الملف الذي قمت بتحميله ليس صورة أو هو صورة تالفة." -#: pretix/base/forms/questions.py:643 pretix/base/forms/questions.py:652 +#: pretix/base/forms/questions.py:651 pretix/base/forms/questions.py:660 msgid "" "If you keep this empty, the ticket will be valid starting at the time of " "purchase." msgstr "" -#: pretix/base/forms/questions.py:699 pretix/base/forms/questions.py:1058 +#: pretix/base/forms/questions.py:707 pretix/base/forms/questions.py:1100 msgid "Street and Number" msgstr "الشارع والرقم" -#: pretix/base/forms/questions.py:1112 +#: pretix/base/forms/questions.py:1154 msgid "" "Optional, but depending on the country you reside in we might need to charge " "you additional taxes if you do not enter it." msgstr "" -#: pretix/base/forms/questions.py:1114 pretix/base/forms/questions.py:1120 +#: pretix/base/forms/questions.py:1156 pretix/base/forms/questions.py:1162 msgid "If you are registered in Switzerland, you can enter your UID instead." msgstr "" -#: pretix/base/forms/questions.py:1118 +#: pretix/base/forms/questions.py:1160 msgid "" "Optional, but it might be required for you to claim tax benefits on your " "invoice depending on your and the seller’s country of residence." msgstr "" -#: pretix/base/forms/questions.py:1220 +#: pretix/base/forms/questions.py:1266 msgid "You need to provide a company name." msgstr "تحتاج إلى تقديم اسم شركة." -#: pretix/base/forms/questions.py:1222 +#: pretix/base/forms/questions.py:1268 msgid "You need to provide your name." msgstr "تحتاج إلى تقديم اسمك." @@ -3179,8 +3179,8 @@ msgstr "" "الرجاء إدخال كلمة المرور الحالية الخاصة بك إذا كنت ترغب في تغيير عنوان " "البريد الإلكتروني الخاص بك أو كلمة المرور." -#: pretix/base/forms/user.py:55 pretix/presale/forms/customer.py:381 -#: pretix/presale/forms/customer.py:454 +#: pretix/base/forms/user.py:55 pretix/presale/forms/customer.py:383 +#: pretix/presale/forms/customer.py:456 msgid "The current password you entered was not correct." msgstr "كلمة المرور الحالية التي أدخلتها غير صحيحة." @@ -3188,13 +3188,13 @@ msgstr "كلمة المرور الحالية التي أدخلتها غير صح msgid "Please choose a password different to your current one." msgstr "" -#: pretix/base/forms/user.py:63 pretix/presale/forms/customer.py:390 -#: pretix/presale/forms/customer.py:459 +#: pretix/base/forms/user.py:63 pretix/presale/forms/customer.py:392 +#: pretix/presale/forms/customer.py:461 msgid "Your current password" msgstr "كلمة السر الحالية الخاصة بك" #: pretix/base/forms/user.py:67 pretix/control/forms/users.py:50 -#: pretix/presale/forms/customer.py:395 +#: pretix/presale/forms/customer.py:397 msgid "New password" msgstr "كلمة المرور الجديدة" @@ -3342,7 +3342,7 @@ msgstr "" "من {from_date}\n" "حتى {to_date}" -#: pretix/base/invoice.py:578 pretix/base/services/mail.py:495 +#: pretix/base/invoice.py:578 pretix/base/services/mail.py:502 #, python-brace-format msgctxt "invoice" msgid "Invoice {num}" @@ -3589,6 +3589,13 @@ msgstr "سؤال{val}" msgid "Tax rule {val}" msgstr "قاعدة الضريبة {val}" +#: pretix/base/logentrytypes.py:151 +#, fuzzy, python-brace-format +#| msgctxt "subevent" +#| msgid "Date {val}" +msgid "{val}" +msgstr "تاريخ {val}" + #: pretix/base/media.py:71 msgid "Barcode / QR-Code" msgstr "" @@ -3622,9 +3629,9 @@ msgstr "" msgid "Could not parse {value} as a date and time." msgstr "" -#: pretix/base/modelimport.py:232 pretix/control/views/orders.py:1183 -#: pretix/control/views/orders.py:1212 pretix/control/views/orders.py:1256 -#: pretix/control/views/orders.py:1291 pretix/control/views/orders.py:1314 +#: pretix/base/modelimport.py:232 pretix/control/views/orders.py:1184 +#: pretix/control/views/orders.py:1213 pretix/control/views/orders.py:1257 +#: pretix/control/views/orders.py:1292 pretix/control/views/orders.py:1315 msgid "You entered an invalid number." msgstr "لقد أدخلت رقما غير صالح." @@ -3715,8 +3722,8 @@ msgstr "عنوان البريد الإلكتروني للحاضر" #: pretix/control/forms/filter.py:664 pretix/control/forms/filter.py:669 #: pretix/control/forms/filter.py:674 #: pretix/control/templates/pretixcontrol/order/index.html:551 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:192 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:195 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:193 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:196 msgid "Attendee address" msgstr "عنوان الحاضر" @@ -3855,7 +3862,7 @@ msgstr "قيمة كود الخصم" msgid "It is pointless to set a value without a price mode." msgstr "" -#: pretix/base/modelimport_vouchers.py:237 pretix/base/models/items.py:2102 +#: pretix/base/modelimport_vouchers.py:237 pretix/base/models/items.py:2121 #: pretix/base/models/vouchers.py:272 #: pretix/control/templates/pretixcontrol/items/quota_edit.html:8 #: pretix/control/templates/pretixcontrol/items/quota_edit.html:15 @@ -4144,7 +4151,7 @@ msgid "Single-sign-on method" msgstr "طريقة الاسترداد" #: pretix/base/models/customers.py:85 pretix/base/models/devices.py:71 -#: pretix/base/models/items.py:1676 pretix/base/models/items.py:1933 +#: pretix/base/models/items.py:1676 pretix/base/models/items.py:1952 msgid "" "You can enter any value here to make it easier to match the data with other " "sources. If you do not input one, we will generate one automatically." @@ -4474,7 +4481,7 @@ msgstr "" msgid "The slug may only contain letters, numbers, dots and dashes." msgstr "يجب أن يحتوي الرابط فقط على أحرف وأرقام ونقاط وشرطات." -#: pretix/base/models/event.py:601 pretix/base/models/event.py:1482 +#: pretix/base/models/event.py:601 pretix/base/models/event.py:1488 msgid "Show in lists" msgstr "أظهرهذا في قوائم" @@ -4486,7 +4493,7 @@ msgstr "" "إذا تم تحديدها، فستظهر هذه الفعالية بشكل عام في قائمة الفعاليات لحساب المنظم " "الخاص بك." -#: pretix/base/models/event.py:606 pretix/base/models/event.py:1497 +#: pretix/base/models/event.py:606 pretix/base/models/event.py:1503 #: pretix/control/forms/subevents.py:100 msgid "" "Optional. No products will be sold after this date. If you do not set this " @@ -4495,7 +4502,7 @@ msgstr "" "اختياري. لن يتم بيع أي منتجات بعد هذا التاريخ. إذا لم تقم بتعيين هذه " "القيمة ، فسينتهي عرض ما قبل البيع بعد تاريخ انتهاء الفعالية الخاصة بك." -#: pretix/base/models/event.py:612 pretix/base/models/event.py:1503 +#: pretix/base/models/event.py:612 pretix/base/models/event.py:1509 #: pretix/control/forms/subevents.py:94 msgid "Optional. No products will be sold before this date." msgstr "اختياري. لن يتم بيع أي منتجات قبل هذا التاريخ." @@ -4522,11 +4529,11 @@ msgstr "الإضافات" #: pretix/control/views/dashboards.py:543 #: pretix/presale/templates/pretixpresale/event/index.html:33 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:7 -#: pretix/presale/views/widget.py:707 +#: pretix/presale/views/widget.py:700 msgid "Event series" msgstr "فعالية بأوقات مختلفة" -#: pretix/base/models/event.py:653 pretix/base/models/event.py:1531 +#: pretix/base/models/event.py:653 pretix/base/models/event.py:1537 #, fuzzy #| msgid "Settings" msgid "Seating plan" @@ -4539,7 +4546,7 @@ msgid "Sell on all sales channels" msgstr "قنوات البيع" #: pretix/base/models/event.py:665 pretix/base/models/items.py:680 -#: pretix/base/models/items.py:1230 pretix/base/payment.py:417 +#: pretix/base/models/items.py:1230 pretix/base/payment.py:474 msgid "Restrict to specific sales channels" msgstr "يقتصر على قنوات بيع محددة" @@ -4556,14 +4563,14 @@ msgstr "يقتصر على قنوات بيع محددة" msgid "Events" msgstr "فعاليات" -#: pretix/base/models/event.py:1310 +#: pretix/base/models/event.py:1316 msgid "" "You have configured at least one paid product but have not enabled any " "payment methods." msgstr "" "لقد قمت بإعداد منتج مدفوع واحد على الأقل، ولكن لم تقم بتفعيل أي وسيلة سداد." -#: pretix/base/models/event.py:1313 +#: pretix/base/models/event.py:1319 #, fuzzy #| msgid "" #| "You have configured at least one paid product but have not enabled any " @@ -4574,37 +4581,37 @@ msgid "" msgstr "" "لقد قمت بإعداد منتج مدفوع واحد على الأقل، ولكن لم تقم بتفعيل أي وسيلة سداد." -#: pretix/base/models/event.py:1316 +#: pretix/base/models/event.py:1322 msgid "You need to configure at least one quota to sell anything." msgstr "تحتاج إلى إعداد حصة واحدة على الأقل لبيع أي شيء." -#: pretix/base/models/event.py:1321 +#: pretix/base/models/event.py:1327 #, python-brace-format msgid "You need to fill the meta parameter \"{property}\"." msgstr "تحتاج إلى ملء المعلومة الوصفية \"{property}\"." -#: pretix/base/models/event.py:1428 +#: pretix/base/models/event.py:1434 msgid "" "Once created an event cannot change between an series and a single event." msgstr "بمجرد إنشاء فعالية لا يمكن التغيير بين سلسلة فعاليات وفعالية واحدة." -#: pretix/base/models/event.py:1434 +#: pretix/base/models/event.py:1440 msgid "The event slug cannot be changed." msgstr "لا يمكن تغيير رابط الفعالية." -#: pretix/base/models/event.py:1437 +#: pretix/base/models/event.py:1443 msgid "This slug has already been used for a different event." msgstr "لقد تم استخدام هذا الرابط مسبقا لفعالية مختلفة." -#: pretix/base/models/event.py:1443 +#: pretix/base/models/event.py:1449 msgid "The event cannot end before it starts." msgstr "لا يمكن أن تنتهي الفعالية قبل أن تبدأ." -#: pretix/base/models/event.py:1449 +#: pretix/base/models/event.py:1455 msgid "The event's presale cannot end before it starts." msgstr "لا يمكن أن ينتهي العرض المسبق للفعالية قبل أن يبدأ." -#: pretix/base/models/event.py:1479 +#: pretix/base/models/event.py:1485 msgid "" "Only with this checkbox enabled, this date is visible in the frontend to " "users." @@ -4612,7 +4619,7 @@ msgstr "" "يكون هذا التاريخ مرئيا في الواجهة الأمامية للمستخدمين فقط في حال تم تمكين " "مربع الاختيار هذا." -#: pretix/base/models/event.py:1483 +#: pretix/base/models/event.py:1489 msgid "" "If selected, this event will show up publicly on the list of dates for your " "event." @@ -4620,44 +4627,44 @@ msgstr "" "إذا تم الحديد، فستظهر هذه الفعالية بشكل عام في قائمة تواريخ الفعالية الخاصة " "بك." -#: pretix/base/models/event.py:1528 pretix/base/settings.py:3064 +#: pretix/base/models/event.py:1534 pretix/base/settings.py:3064 msgid "Frontpage text" msgstr "نص الصفحة الأولى" -#: pretix/base/models/event.py:1545 +#: pretix/base/models/event.py:1551 msgid "Date in event series" msgstr "التاريخ في سلسلة الفعالية" -#: pretix/base/models/event.py:1546 +#: pretix/base/models/event.py:1552 msgid "Dates in event series" msgstr "التواريخ في سلسلة الفعالية" -#: pretix/base/models/event.py:1691 +#: pretix/base/models/event.py:1697 msgid "One or more variations do not belong to this event." msgstr "عنصر أو أكثر لا ينتمي إلى هذه الفعالية." -#: pretix/base/models/event.py:1721 pretix/base/models/items.py:2217 +#: pretix/base/models/event.py:1727 pretix/base/models/items.py:2236 msgid "Can not contain spaces or special characters except underscores" msgstr "لا يمكن أن يحتوي على مسافات أو أحرف خاصة باستثناء الشرطات السفلية" -#: pretix/base/models/event.py:1726 pretix/base/models/items.py:2222 +#: pretix/base/models/event.py:1732 pretix/base/models/items.py:2241 msgid "The property name may only contain letters, numbers and underscores." msgstr "لا يسمح أن يحتوي اسم الملكية إلا على أحرف وأرقام وشرطات سفلية فقط." -#: pretix/base/models/event.py:1731 +#: pretix/base/models/event.py:1737 msgid "Default value" msgstr "القيمة الافتراضية" -#: pretix/base/models/event.py:1733 +#: pretix/base/models/event.py:1739 #: pretix/control/templates/pretixcontrol/organizers/properties.html:50 msgid "Can only be changed by organizer-level administrators" msgstr "لا يمكن تغييرها إلا من قبل المسؤولين برتبة منظم" -#: pretix/base/models/event.py:1735 +#: pretix/base/models/event.py:1741 msgid "Required for events" msgstr "مطلوب للفعاليات" -#: pretix/base/models/event.py:1736 +#: pretix/base/models/event.py:1742 msgid "" "If checked, an event can only be taken live if the property is set. In event " "series, its always optional to set a value for individual dates" @@ -4665,53 +4672,53 @@ msgstr "" "إذا تم تحديده ، فلا يمكن أن تكون الفعالية مباشرة إلا إذا تم تعيين الخاصية. " "في سلسلة الفعالية، يكون دائما تعيين قيمة للتواريخ الفردية أمرا اختياريا" -#: pretix/base/models/event.py:1742 pretix/base/models/items.py:2234 +#: pretix/base/models/event.py:1748 pretix/base/models/items.py:2253 msgid "Valid values" msgstr "قيم صالحة" -#: pretix/base/models/event.py:1745 +#: pretix/base/models/event.py:1751 #: pretix/control/templates/pretixcontrol/organizers/properties.html:45 #, fuzzy #| msgid "Show number of tickets left" msgid "Show filter option to customers" msgstr "إظهار عدد التذاكر المتبقية" -#: pretix/base/models/event.py:1746 +#: pretix/base/models/event.py:1752 msgid "" "This field will be shown to filter events in the public event list and " "calendar." msgstr "" -#: pretix/base/models/event.py:1749 pretix/control/forms/organizer.py:269 +#: pretix/base/models/event.py:1755 pretix/control/forms/organizer.py:269 #: pretix/control/forms/organizer.py:273 #, fuzzy #| msgid "Public profile" msgid "Public name" msgstr "حساب عام" -#: pretix/base/models/event.py:1753 +#: pretix/base/models/event.py:1759 #: pretix/control/templates/pretixcontrol/organizers/properties.html:40 msgid "Can be used for filtering" msgstr "" -#: pretix/base/models/event.py:1754 +#: pretix/base/models/event.py:1760 msgid "" "This field will be shown to filter events or reports in the backend, and it " "can also be used for hidden filter parameters in the frontend (e.g. using " "the widget)." msgstr "" -#: pretix/base/models/event.py:1764 +#: pretix/base/models/event.py:1770 msgid "A property can either be required or have a default value, not both." msgstr "يمكن أن تكون الخاصية إما مطلوبة أو لها قيمة افتراضية ، وليس كليهما." -#: pretix/base/models/event.py:1844 pretix/base/models/organizer.py:516 +#: pretix/base/models/event.py:1850 pretix/base/models/organizer.py:516 #, fuzzy #| msgid "Info text" msgid "Link text" msgstr "معلومات النص" -#: pretix/base/models/event.py:1847 pretix/base/models/organizer.py:519 +#: pretix/base/models/event.py:1853 pretix/base/models/organizer.py:519 #, fuzzy #| msgid "Imprint URL" msgid "Link URL" @@ -4930,14 +4937,14 @@ msgstr "عميل" msgid "Dynamic validity" msgstr "صلاحية بطاقة هدية" -#: pretix/base/models/items.py:444 pretix/control/forms/item.py:661 +#: pretix/base/models/items.py:444 pretix/control/forms/item.py:667 #: pretix/control/templates/pretixcontrol/subevents/fragment_unavail_mode_indicator.html:3 #, fuzzy #| msgid "Waiting, product unavailable" msgid "Hide product if unavailable" msgstr "الانتظار، المنتج غير متوفر" -#: pretix/base/models/items.py:445 pretix/control/forms/item.py:662 +#: pretix/base/models/items.py:445 pretix/control/forms/item.py:668 #: pretix/control/templates/pretixcontrol/subevents/fragment_unavail_mode_indicator.html:5 #, fuzzy #| msgid "The ordered product \"{item}\" is no longer available." @@ -5048,7 +5055,7 @@ msgstr "إظهار عدد التذاكر المتبقية" msgid "Publicly show how many tickets are still available." msgstr "أظهر للجمهور عدد التذاكر التي لا تزال متاحة." -#: pretix/base/models/items.py:556 pretix/control/forms/item.py:626 +#: pretix/base/models/items.py:556 pretix/control/forms/item.py:632 msgid "Product picture" msgstr "صورة المنتج" @@ -5253,7 +5260,7 @@ msgid "" "change but keep their current validity." msgstr "" -#: pretix/base/models/items.py:738 pretix/control/forms/item.py:729 +#: pretix/base/models/items.py:738 pretix/control/forms/item.py:735 #, fuzzy #| msgid "Gift card validity" msgid "Start of validity" @@ -5334,7 +5341,7 @@ msgstr "" #: pretix/base/models/items.py:795 pretix/base/models/items.py:1702 #: pretix/control/forms/filter.py:421 pretix/control/forms/filter.py:1895 -#: pretix/control/forms/item.py:272 pretix/control/navigation.py:138 +#: pretix/control/forms/item.py:278 pretix/control/navigation.py:138 #: pretix/control/navigation.py:147 #: pretix/control/templates/pretixcontrol/checkin/lists.html:104 #: pretix/control/templates/pretixcontrol/items/base.html:3 @@ -5604,7 +5611,7 @@ msgstr "التاريخ و الوقت" msgid "Country code (ISO 3166-1 alpha-2)" msgstr "رمز البلد (ISO 3166-1 alpha-2)" -#: pretix/base/models/items.py:1681 pretix/base/models/items.py:1938 +#: pretix/base/models/items.py:1681 pretix/base/models/items.py:1957 #: pretix/base/models/organizer.py:543 #, fuzzy #| msgid "The property name may only contain letters, numbers and underscores." @@ -5756,49 +5763,56 @@ msgstr "يجب أن يكون الحد الأقصى للعدد أكبر من ال msgid "The maximum value must not be lower than the minimum value." msgstr "لا يمكن أن يكون العدد الأقصى لكل طلب أقل من العدد الأدنى للطلب." -#: pretix/base/models/items.py:1942 +#: pretix/base/models/items.py:1943 +msgid "" +"The system already contains answers to this question that are not compatible " +"with changing the type of question without data loss. Consider hiding this " +"question and creating a new one instead." +msgstr "" + +#: pretix/base/models/items.py:1961 #: pretix/control/templates/pretixcontrol/items/question.html:90 msgid "Answer" msgstr "إجابة" -#: pretix/base/models/items.py:1966 +#: pretix/base/models/items.py:1985 msgid "The identifier \"{}\" is already used for a different option." msgstr "المعرف \"{}\" مستخدم سابقا لخيار مختلف." -#: pretix/base/models/items.py:1969 +#: pretix/base/models/items.py:1988 msgid "Question option" msgstr "خيار السؤال" -#: pretix/base/models/items.py:1970 +#: pretix/base/models/items.py:1989 msgid "Question options" msgstr "خيارات السؤال" -#: pretix/base/models/items.py:2055 pretix/control/forms/event.py:1715 +#: pretix/base/models/items.py:2074 pretix/control/forms/event.py:1715 #: pretix/control/templates/pretixcontrol/items/quotas.html:56 msgid "Total capacity" msgstr "السعة الإجمالية" -#: pretix/base/models/items.py:2057 pretix/control/forms/item.py:449 +#: pretix/base/models/items.py:2076 pretix/control/forms/item.py:455 msgid "Leave empty for an unlimited number of tickets." msgstr "اتركه فارغا لعدد غير محدود من التذاكر." -#: pretix/base/models/items.py:2061 pretix/base/models/orders.py:1489 +#: pretix/base/models/items.py:2080 pretix/base/models/orders.py:1489 #: pretix/base/models/orders.py:2986 #: pretix/control/templates/pretixcontrol/checkin/index.html:97 msgid "Item" msgstr "بند" -#: pretix/base/models/items.py:2069 pretix/control/forms/item.py:908 +#: pretix/base/models/items.py:2088 pretix/control/forms/item.py:914 #: pretix/plugins/autocheckin/models.py:74 msgid "Variations" msgstr "متغيرات" -#: pretix/base/models/items.py:2073 +#: pretix/base/models/items.py:2092 #: pretix/control/templates/pretixcontrol/items/quotas.html:70 msgid "Ignore this quota when determining event availability" msgstr "تجاهل هذه الحصة إذا أردت تحديد مدى توفر الفعالية" -#: pretix/base/models/items.py:2074 +#: pretix/base/models/items.py:2093 msgid "" "If you enable this, this quota will be ignored when determining event " "availability in your event calendar. This is useful e.g. for merchandise " @@ -5809,11 +5823,11 @@ msgstr "" "تقويم الفعالية الخاص بك. قد يفيد هذا في حالات مثل المشتريات المضافة إلى كل " "فعالية ولكنه يجب ألا يمنع ظهور حالة الفعالية إذا كانت غير متوفرة." -#: pretix/base/models/items.py:2081 +#: pretix/base/models/items.py:2100 msgid "Close this quota permanently once it is sold out" msgstr "أغلق هذه الحصة بشكل دائم بمجرد بيعها" -#: pretix/base/models/items.py:2082 +#: pretix/base/models/items.py:2101 msgid "" "If you enable this, when the quota is sold out once, no more tickets will be " "sold, even if tickets become available again through cancellations or " @@ -5823,11 +5837,11 @@ msgstr "" "التذاكر ، حتى إذا أصبحت التذاكر متاحة مرة أخرى من خلال الإلغاء أو الطلبات " "المنتهية الصلاحية. بالطبع ، يمكنك دائما إعادة الفتح يدويا." -#: pretix/base/models/items.py:2090 +#: pretix/base/models/items.py:2109 msgid "Allow to sell more tickets once people have checked out" msgstr "السماح ببيع المزيد من التذاكر بمجرد قيام الأشخاص بتسجيل الخروج" -#: pretix/base/models/items.py:2091 +#: pretix/base/models/items.py:2110 msgid "" "With this option, quota will be released as soon as people are scanned at an " "exit of your event. This will only happen if they have been scanned both at " @@ -5842,20 +5856,20 @@ msgstr "" "يتم تجاهل قوائم التسجيل إذا تم ضبطها على \"السماح بإعادة الدخول بعد فحص " "الخروج\" لمنع الحجز الزائد غير المقصود." -#: pretix/base/models/items.py:2103 pretix/control/navigation.py:156 +#: pretix/base/models/items.py:2122 pretix/control/navigation.py:156 #: pretix/control/templates/pretixcontrol/items/quotas.html:4 #: pretix/control/templates/pretixcontrol/items/quotas.html:6 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:416 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:184 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:185 #: pretix/control/templates/pretixcontrol/subevents/detail.html:59 msgid "Quotas" msgstr "الحصص" -#: pretix/base/models/items.py:2176 +#: pretix/base/models/items.py:2195 msgid "All variations must belong to an item contained in the items list." msgstr "يجب أن تنتمي جميع الأنواع إلى عنصر موجود في قائمة العناصر." -#: pretix/base/models/items.py:2187 +#: pretix/base/models/items.py:2206 msgid "" "One or more items has variations but none of these are in the variations " "list." @@ -5863,23 +5877,23 @@ msgstr "" "يحتوي عنصر واحد أو أكثر على أشكال مختلفة ولكن لا يوجد أي منها في قائمة " "المتغيرات." -#: pretix/base/models/items.py:2193 pretix/base/models/waitinglist.py:305 +#: pretix/base/models/items.py:2212 pretix/base/models/waitinglist.py:305 msgid "Subevent cannot be null for event series." msgstr "لا يمكن أن تكون الفعالية الفرعية في سلسلة الفعاليات غير معرفة." -#: pretix/base/models/items.py:2229 +#: pretix/base/models/items.py:2248 #, fuzzy #| msgid "Required for events" msgid "Required for products" msgstr "مطلوب للفعاليات" -#: pretix/base/models/items.py:2230 +#: pretix/base/models/items.py:2249 msgid "" "If checked, this property must be set in each product. Does not apply if a " "default value is set." msgstr "" -#: pretix/base/models/items.py:2235 +#: pretix/base/models/items.py:2254 msgid "" "If you keep this empty, any value is allowed. Otherwise, enter one possible " "value per line." @@ -5947,7 +5961,7 @@ msgstr "نوع العضوية" msgid "pending" msgstr "معلق" -#: pretix/base/models/orders.py:203 pretix/base/payment.py:511 +#: pretix/base/models/orders.py:203 pretix/base/payment.py:568 #: pretix/base/services/invoices.py:475 msgid "paid" msgstr "مدفوع" @@ -6200,12 +6214,12 @@ msgstr "رسوم أخرى" msgid "Other fees" msgstr "رسوم أخرى" -#: pretix/base/models/orders.py:2293 pretix/base/payment.py:1320 -#: pretix/base/payment.py:1324 pretix/base/settings.py:992 +#: pretix/base/models/orders.py:2293 pretix/base/payment.py:1372 +#: pretix/base/payment.py:1419 pretix/base/settings.py:992 #: pretix/control/forms/organizer.py:830 #: pretix/control/templates/pretixcontrol/items/index.html:107 #: pretix/control/templates/pretixcontrol/order/index.html:152 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:382 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:383 #: pretix/presale/templates/pretixpresale/event/order_giftcard.html:7 #: pretix/presale/templates/pretixpresale/event/position_giftcard.html:7 msgid "Gift card" @@ -6977,7 +6991,7 @@ msgstr "تواريخ" #: pretix/base/notifications.py:200 #: pretix/control/templates/pretixcontrol/order/index.html:678 #: pretix/plugins/reports/accountingreport.py:317 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:441 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:442 msgid "Net total" msgstr "الإجمالي الصافي" @@ -7068,30 +7082,79 @@ msgstr "تم طلب استرداد الأموال" msgid "You have been requested to issue a refund for {order.code}." msgstr "لقدطلب منك إصدار استرداد ل {order.code}." -#: pretix/base/payment.py:86 +#: pretix/base/payment.py:85 #, fuzzy #| msgid "Apply" msgctxt "payment" msgid "Apple Pay" msgstr "تطبيق" -#: pretix/base/payment.py:87 +#: pretix/base/payment.py:86 #, fuzzy #| msgid "Android (Google Play)" msgctxt "payment" msgid "Google Pay" msgstr "الروبوت (جوجل اللعب)" -#: pretix/base/payment.py:256 +#: pretix/base/payment.py:117 pretix/base/payment.py:1579 +msgid "You cannot pay with gift cards when buying a gift card." +msgstr "لا يمكنك الدفع ببطاقات الهدايا عند شراء بطاقة هدايا." + +#: pretix/base/payment.py:126 pretix/base/payment.py:1589 +#: pretix/base/payment.py:1591 +msgid "This gift card does not support this currency." +msgstr "بطاقة الهدايا هذه لا تدعم هذه العملة." + +#: pretix/base/payment.py:128 pretix/base/payment.py:1597 +msgid "This gift card can only be used in test mode." +msgstr "لا يمكن استخدام بطاقة الهدايا هذه إلا في وضع الاختبار." + +#: pretix/base/payment.py:130 pretix/base/payment.py:1599 +msgid "Only test gift cards can be used in test mode." +msgstr "يمكن استخدام بطاقات الهدايا التجريبية فقط في وضع الاختبار." + +#: pretix/base/payment.py:132 pretix/base/payment.py:1601 +msgid "This gift card is no longer valid." +msgstr "بطاقة الهدايا هذه لم تعد صالحة." + +#: pretix/base/payment.py:134 +msgid "All credit on this gift card has been used." +msgstr "تم استخدام كل الرصيد الموجود في بطاقة الهدايا هذه." + +#: pretix/base/payment.py:141 +msgid "This gift card is already used for your payment." +msgstr "بطاقة الهدايا هذه مستخدمة مسبقا لسدادك." + +#: pretix/base/payment.py:145 +msgid "" +"You entered a voucher instead of a gift card. Vouchers can only be entered " +"on the first page of the shop below the product selection." +msgstr "" +"لقد أدخلت كود خصم بدلا من بطاقة هدايا. يمكن إدخال أكواد الخصم فقط في الصفحة " +"الأولى من المتجر أسفل اختيار المنتج." + +#: pretix/base/payment.py:149 +msgid "This gift card is not known." +msgstr "بطاقة الهدايا هذه غير معروفة." + +#: pretix/base/payment.py:152 +msgid "" +"This gift card can not be redeemed since its code is not unique. Please " +"contact the organizer of this event." +msgstr "" +"لا يمكن استرداد بطاقة الهدايا هذه نظرا لأن رمزها ليس فريدا. يرجى الاتصال " +"بمنظم هذه الفعالية." + +#: pretix/base/payment.py:313 #: pretix/presale/templates/pretixpresale/event/order.html:116 msgid "Pay now" msgstr "ادفع الآن" -#: pretix/base/payment.py:330 +#: pretix/base/payment.py:387 msgid "Enable payment method" msgstr "تفعيل طريقة الدفع" -#: pretix/base/payment.py:336 +#: pretix/base/payment.py:393 #, fuzzy #| msgid "" #| "Users will not be able to choose this payment provider after the given " @@ -7100,16 +7163,16 @@ msgid "" "Users will not be able to choose this payment provider before the given date." msgstr "لن يتمكن المستخدمون من اختيار مزود خدمة الدفع هذا بعد التاريخ المحدد." -#: pretix/base/payment.py:342 +#: pretix/base/payment.py:399 msgid "" "Users will not be able to choose this payment provider after the given date." msgstr "لن يتمكن المستخدمون من اختيار مزود خدمة الدفع هذا بعد التاريخ المحدد." -#: pretix/base/payment.py:347 +#: pretix/base/payment.py:404 msgid "Minimum order total" msgstr "إجمالي الحد الأدنى للطلب" -#: pretix/base/payment.py:348 +#: pretix/base/payment.py:405 msgid "" "This payment will be available only if the order total is equal to or " "exceeds the given value. The order total for this purpose may be computed " @@ -7119,11 +7182,11 @@ msgstr "" "المحددة. يمكن حساب إجمالي الطلب لهذا الغرض دون الأخذ في الاعتبار الرسوم " "المفروضة بواسطة طريقة الدفع هذه." -#: pretix/base/payment.py:358 +#: pretix/base/payment.py:415 msgid "Maximum order total" msgstr "الحد الأقصى لإجمالي الطلب" -#: pretix/base/payment.py:359 +#: pretix/base/payment.py:416 msgid "" "This payment will be available only if the order total is equal to or below " "the given value. The order total for this purpose may be computed without " @@ -7133,23 +7196,23 @@ msgstr "" "منها. يمكن حساب إجمالي الطلب لهذا الغرض دون الأخذ في الاعتبار الرسوم " "المفروضة بواسطة طريقة الدفع هذه." -#: pretix/base/payment.py:369 pretix/base/payment.py:378 +#: pretix/base/payment.py:426 pretix/base/payment.py:435 msgid "Additional fee" msgstr "رسوم إضافية" -#: pretix/base/payment.py:370 +#: pretix/base/payment.py:427 msgid "Absolute value" msgstr "قيمه مطلقه" -#: pretix/base/payment.py:379 +#: pretix/base/payment.py:436 msgid "Percentage of the order total." msgstr "النسبة المئوية للطلب الإجمالي." -#: pretix/base/payment.py:385 +#: pretix/base/payment.py:442 msgid "Calculate the fee from the total value including the fee." msgstr "احسب الرسوم من القيمة الإجمالية بما في ذلك الرسوم." -#: pretix/base/payment.py:386 +#: pretix/base/payment.py:443 #, python-brace-format msgid "" "We recommend to enable this if you want your users to pay the payment fees " @@ -7162,11 +7225,11 @@ msgstr "" "انقر هنا للحصول على معلومات مفصلة حول ما يمكنه هذا الخيار. لا تنس تحديد " "الرسوم الصحيحة أعلاه!" -#: pretix/base/payment.py:394 +#: pretix/base/payment.py:451 msgid "Text on invoices" msgstr "نص على الفواتير" -#: pretix/base/payment.py:395 +#: pretix/base/payment.py:452 msgid "" "Will be printed just below the payment figures and above the closing text on " "invoices. This will only be used if the invoice is generated before the " @@ -7177,11 +7240,11 @@ msgstr "" "استخدام هذا إلا إذا تم إنشاء الفاتورة قبل سداد الطلب. في حال تم إنشاء " "الفاتورة لاحقا ، فسيظهر نص يفيد بأنه تم الدفع مسبقا." -#: pretix/base/payment.py:404 +#: pretix/base/payment.py:461 msgid "Restrict to countries" msgstr "مقصور على البلدان" -#: pretix/base/payment.py:406 +#: pretix/base/payment.py:463 msgid "" "Only allow choosing this payment provider for invoice addresses in the " "selected countries. If you don't select any country, all countries are " @@ -7191,16 +7254,16 @@ msgstr "" "لم تحدد أي بلد ، فسيسمح بجميع البلدان. يتم تمكين هذا الخيار فقط إذا كان " "عنوان الفاتورة مطلوبا." -#: pretix/base/payment.py:425 +#: pretix/base/payment.py:482 msgid "" "Only allow the usage of this payment provider in the selected sales channels." msgstr "السماح باستخدام مزود الدفع هذا فقط في قنوات المبيعات المحددة." -#: pretix/base/payment.py:429 +#: pretix/base/payment.py:486 msgid "Hide payment method" msgstr "إخفاء طريقة الدفع" -#: pretix/base/payment.py:432 +#: pretix/base/payment.py:489 msgid "" "The payment method will not be shown by default but only to people who enter " "the shop through a special link." @@ -7208,62 +7271,62 @@ msgstr "" "لن يتم عرض طريقة الدفع بشكل افتراضي إلا للأشخاص الذين يدخلون إلى المتجر من " "خلال رابط خاص." -#: pretix/base/payment.py:438 +#: pretix/base/payment.py:495 msgid "Link to enable payment method" msgstr "رابط لتمكين طريقة الدفع" -#: pretix/base/payment.py:447 +#: pretix/base/payment.py:504 msgid "Share this link with customers who should use this payment method." msgstr "شارك هذا الرابط مع العملاء الذين يجب عليهم استخدام طريقة الدفع هذه." -#: pretix/base/payment.py:452 +#: pretix/base/payment.py:509 msgid "Do not send a payment reminder mail" msgstr "" -#: pretix/base/payment.py:453 +#: pretix/base/payment.py:510 msgid "" "Users will not receive a reminder mail to pay for their order before it " "expires if they have chosen this payment method." msgstr "" -#: pretix/base/payment.py:500 +#: pretix/base/payment.py:557 msgctxt "invoice" msgid "The payment for this invoice has already been received." msgstr "تم استلام دفعة هذه الفاتورة سابقا." -#: pretix/base/payment.py:970 +#: pretix/base/payment.py:1022 #, fuzzy #| msgid "This payment can not be canceled at the moment." msgid "" "This payment is already being processed and can not be canceled any more." msgstr "لا يمكن إلغاء هذه الدفعة في الوقت الراهن." -#: pretix/base/payment.py:984 +#: pretix/base/payment.py:1036 msgid "Automatic refunds are not supported by this payment provider." msgstr "لا يدعم مزود الدفع هذا المبالغ المستردة التلقائية." -#: pretix/base/payment.py:1075 +#: pretix/base/payment.py:1127 msgid "" "No payment is required as this order only includes products which are free " "of charge." msgstr "لا يلزم الدفع لأن هذا الطلب يشمل فقط المنتجات المجانية." -#: pretix/base/payment.py:1082 +#: pretix/base/payment.py:1134 msgid "Free of charge" msgstr "معفي من الرسوم" -#: pretix/base/payment.py:1114 +#: pretix/base/payment.py:1166 msgid "Box office" msgstr "شباك التذاكر" -#: pretix/base/payment.py:1162 pretix/base/payment.py:1181 +#: pretix/base/payment.py:1214 pretix/base/payment.py:1233 #: pretix/plugins/manualpayment/apps.py:30 #: pretix/plugins/manualpayment/apps.py:33 #: pretix/plugins/manualpayment/apps.py:39 msgid "Manual payment" msgstr "الدفع اليدوي" -#: pretix/base/payment.py:1167 pretix/plugins/banktransfer/payment.py:202 +#: pretix/base/payment.py:1219 pretix/plugins/banktransfer/payment.py:202 msgid "" "In test mode, you can just manually mark this order as paid in the backend " "after it has been created." @@ -7271,16 +7334,16 @@ msgstr "" "في وضع الاختبار ، يمكنك فقط تحديد هذا الطلب يدويا على أنه مدفوع في لوحة " "التحكم بعد إنشائه." -#: pretix/base/payment.py:1188 pretix/base/payment.py:1332 +#: pretix/base/payment.py:1240 pretix/base/payment.py:1427 #: pretix/plugins/banktransfer/payment.py:156 msgid "Payment method name" msgstr "اسم طريقة الدفع" -#: pretix/base/payment.py:1192 +#: pretix/base/payment.py:1244 msgid "Payment process description during checkout" msgstr "وصف عملية الدفع أثناء تسجيل الخروج" -#: pretix/base/payment.py:1193 +#: pretix/base/payment.py:1245 msgid "" "This text will be shown during checkout when the user selects this payment " "method. It should give a short explanation on this payment method." @@ -7288,11 +7351,11 @@ msgstr "" "سيظهر هذا النص أثناء تسجيل الخروج عندما يختار المستخدم طريقة الدفع هذه. يجب " "أن يتم تقديم شرح موجز عن طريقة الدفع ." -#: pretix/base/payment.py:1198 +#: pretix/base/payment.py:1250 msgid "Payment process description in order confirmation emails" msgstr "وصف عملية الدفع في رسائل البريد الإلكتروني لتأكيد الطلب" -#: pretix/base/payment.py:1199 +#: pretix/base/payment.py:1251 #, python-brace-format msgid "" "This text will be included for the {payment_info} placeholder in order " @@ -7304,11 +7367,11 @@ msgstr "" "المستخدم إلى كيفية متابعة الدفع. {order}, {amount}, {currency} " "و{amount_with_currency}." -#: pretix/base/payment.py:1206 +#: pretix/base/payment.py:1258 msgid "Payment process description for pending orders" msgstr "وصف عملية الدفع للطلبات المعلقة" -#: pretix/base/payment.py:1207 +#: pretix/base/payment.py:1259 #, python-brace-format msgid "" "This text will be shown on the order confirmation page for pending orders. " @@ -7319,7 +7382,7 @@ msgstr "" "المستخدم إلى كيفية متابعة الدفع. يمكنك استخدام العناصر {order}, {amount}, " "{currency} و {amount_with_currency}." -#: pretix/base/payment.py:1215 pretix/plugins/banktransfer/payment.py:151 +#: pretix/base/payment.py:1267 pretix/plugins/banktransfer/payment.py:151 msgid "" "Create an invoice for orders using bank transfer immediately if the event is " "otherwise configured to create invoices after payment is completed." @@ -7327,93 +7390,34 @@ msgstr "" "قم بإنشاء فاتورة للطلبات باستخدام التحويل المصرفي على الفور إذا تم إعداد " "الفعالية بطريقة أخرى تسمح بإنشاء الفواتير بعد إتمام الدفع." -#: pretix/base/payment.py:1266 +#: pretix/base/payment.py:1318 msgid "Offsetting" msgstr "تعويض" -#: pretix/base/payment.py:1280 pretix/control/views/orders.py:1265 +#: pretix/base/payment.py:1332 pretix/control/views/orders.py:1266 msgid "You entered an order that could not be found." msgstr "لقد أدخلت طلبا لا يمكن العثور عليه." -#: pretix/base/payment.py:1309 +#: pretix/base/payment.py:1361 #, python-format msgid "Balanced against orders: %s" msgstr "تم تسويتها مقابل الطلبات: %s" -#: pretix/base/payment.py:1338 +#: pretix/base/payment.py:1433 #, fuzzy #| msgid "Payment method name" msgid "Payment method description" msgstr "اسم طريقة الدفع" -#: pretix/base/payment.py:1355 +#: pretix/base/payment.py:1463 msgid "In test mode, only test cards will work." msgstr "في وضع الاختبار ، ستعمل بطاقات الاختبار فقط." -#: pretix/base/payment.py:1436 pretix/base/payment.py:1501 -#: pretix/base/payment.py:1546 pretix/base/payment.py:1548 -msgid "This gift card does not support this currency." -msgstr "بطاقة الهدايا هذه لا تدعم هذه العملة." - -#: pretix/base/payment.py:1438 pretix/base/payment.py:1504 -#: pretix/base/payment.py:1554 -msgid "This gift card can only be used in test mode." -msgstr "لا يمكن استخدام بطاقة الهدايا هذه إلا في وضع الاختبار." - -#: pretix/base/payment.py:1440 pretix/base/payment.py:1507 -#: pretix/base/payment.py:1556 -msgid "Only test gift cards can be used in test mode." -msgstr "يمكن استخدام بطاقات الهدايا التجريبية فقط في وضع الاختبار." - -#: pretix/base/payment.py:1442 pretix/base/payment.py:1510 -#: pretix/base/payment.py:1558 -msgid "This gift card is no longer valid." -msgstr "بطاقة الهدايا هذه لم تعد صالحة." - -#: pretix/base/payment.py:1444 pretix/base/payment.py:1513 -msgid "All credit on this gift card has been used." -msgstr "تم استخدام كل الرصيد الموجود في بطاقة الهدايا هذه." - -#: pretix/base/payment.py:1448 -msgid "This gift card is already used for your payment." -msgstr "بطاقة الهدايا هذه مستخدمة مسبقا لسدادك." - -#: pretix/base/payment.py:1463 pretix/base/payment.py:1493 -#: pretix/base/payment.py:1536 -msgid "You cannot pay with gift cards when buying a gift card." -msgstr "لا يمكنك الدفع ببطاقات الهدايا عند شراء بطاقة هدايا." - -#: pretix/base/payment.py:1467 -#, fuzzy -#| msgid "Please enter a shorter name." -msgid "Please enter the code of your gift card." -msgstr "الرجاء إدخال اسم أقصر." - -#: pretix/base/payment.py:1483 pretix/base/payment.py:1526 -msgid "" -"You entered a voucher instead of a gift card. Vouchers can only be entered " -"on the first page of the shop below the product selection." -msgstr "" -"لقد أدخلت كود خصم بدلا من بطاقة هدايا. يمكن إدخال أكواد الخصم فقط في الصفحة " -"الأولى من المتجر أسفل اختيار المنتج." - -#: pretix/base/payment.py:1486 pretix/base/payment.py:1529 -msgid "This gift card is not known." -msgstr "بطاقة الهدايا هذه غير معروفة." - -#: pretix/base/payment.py:1488 pretix/base/payment.py:1531 -msgid "" -"This gift card can not be redeemed since its code is not unique. Please " -"contact the organizer of this event." -msgstr "" -"لا يمكن استرداد بطاقة الهدايا هذه نظرا لأن رمزها ليس فريدا. يرجى الاتصال " -"بمنظم هذه الفعالية." - -#: pretix/base/payment.py:1550 +#: pretix/base/payment.py:1593 msgid "This gift card is not accepted by this event organizer." msgstr "لم يتم قبول بطاقة الهدايا هذه من قبل منظم هذه الفعالية." -#: pretix/base/payment.py:1552 +#: pretix/base/payment.py:1595 msgid "This gift card was used in the meantime. Please try again." msgstr "تم استخدام بطاقة الهدايا هذه في هذه الأثناء. حاول مرة اخرى." @@ -7499,8 +7503,8 @@ msgstr "جون دو" #: pretix/control/templates/pretixcontrol/order/index.html:543 #: pretix/plugins/badges/exporters.py:496 #: pretix/plugins/ticketoutputpdf/exporters.py:95 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:181 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:184 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:182 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:185 msgid "Attendee company" msgstr "شركة حاضرة" @@ -7730,7 +7734,7 @@ msgstr "تاريخ ووقت الطباعة" msgid "Printing time" msgstr "وقت الطباعة" -#: pretix/base/pdf.py:411 pretix/control/forms/item.py:731 +#: pretix/base/pdf.py:411 pretix/control/forms/item.py:737 #, fuzzy #| msgid "Purchased" msgid "Purchase date" @@ -8089,7 +8093,7 @@ msgstr[5] "" #: pretix/base/services/cart.py:145 pretix/base/services/orders.py:154 #: pretix/presale/templates/pretixpresale/event/index.html:171 -#: pretix/presale/views/waiting.py:145 pretix/presale/views/widget.py:788 +#: pretix/presale/views/waiting.py:145 pretix/presale/views/widget.py:781 #, fuzzy #| msgid "The presale period for this event has not yet started." msgid "The booking period for this event has not yet started." @@ -8681,13 +8685,13 @@ msgstr "" "\n" "أرسلنا هذا البريد الإلكتروني لأنك سمحت لنا بذلك في إعدادات الفعالية الخاص بك." -#: pretix/base/services/mail.py:121 +#: pretix/base/services/mail.py:128 #, fuzzy #| msgid "The selected product is not active or has no price set." msgid "This prefix has been set in your event or organizer settings." msgstr "المنتج المحدد غير نشط أو ليس له سعر محدد." -#: pretix/base/services/mail.py:278 +#: pretix/base/services/mail.py:285 #, python-brace-format msgid "" "You are receiving this email because someone placed an order for {event} for " @@ -8695,7 +8699,7 @@ msgid "" msgstr "" "أنت تتلقى هذا البريد الإلكتروني لأن شخصا ما قدم طلبا ل {event} من أجلك." -#: pretix/base/services/mail.py:282 pretix/base/services/mail.py:298 +#: pretix/base/services/mail.py:289 pretix/base/services/mail.py:305 #, python-brace-format msgid "" "You can view your order details at the following URL:\n" @@ -8704,12 +8708,12 @@ msgstr "" "يمكنك مشاهدة تفاصيل طلبك عبر الرابط التالي:\n" "{orderurl}." -#: pretix/base/services/mail.py:294 +#: pretix/base/services/mail.py:301 #, python-brace-format msgid "You are receiving this email because you placed an order for {event}." msgstr "أنت تتلقى هذا البريد الإلكتروني لأنك قدمت طلبا ل {event}." -#: pretix/base/services/mail.py:478 +#: pretix/base/services/mail.py:485 #, fuzzy #| msgid "resend invite" msgctxt "attachment_filename" @@ -9043,8 +9047,8 @@ msgstr "يجب أن يكون تاريخ إنتهاء الصلاحية الجدي msgid "This order is not pending approval." msgstr "هذا الطلب ليس في انتظار الموافقة." -#: pretix/base/services/orders.py:511 pretix/presale/views/order.py:928 -#: pretix/presale/views/order.py:982 +#: pretix/base/services/orders.py:511 pretix/presale/views/order.py:930 +#: pretix/presale/views/order.py:984 msgid "You cannot cancel this order." msgstr "لا يمكنك إلغاء هذا الطلب." @@ -9590,7 +9594,7 @@ msgid "Show exchange rates" msgstr "إظهار تاريخ انتهاء الفعالية" #: pretix/base/settings.py:524 pretix/base/settings.py:532 -#: pretix/control/forms/item.py:619 +#: pretix/control/forms/item.py:625 msgid "Never" msgstr "أبدا" @@ -13265,6 +13269,14 @@ msgid "Product variation \"{product} – {variation}\" becomes unavailable" msgstr "المنتج \"{name}\" لم يعد متوفرا" #: pretix/base/timeline.py:351 +#, fuzzy, python-brace-format +#| msgctxt "timeline" +#| msgid "Payment provider \"{name}\" can no longer be selected" +msgctxt "timeline" +msgid "Payment provider \"{name}\" becomes active" +msgstr "مقدم الدفع \"{name}\" لم يعد من الممكن تحديده" + +#: pretix/base/timeline.py:369 #, python-brace-format msgctxt "timeline" msgid "Payment provider \"{name}\" can no longer be selected" @@ -13494,12 +13506,12 @@ msgid "Copy configuration from" msgstr "تكوين نسخة من" #: pretix/control/forms/event.py:318 pretix/control/forms/event.py:321 -#: pretix/control/forms/item.py:408 +#: pretix/control/forms/item.py:414 msgid "Do not copy" msgstr "لا تنسخ" -#: pretix/control/forms/event.py:337 pretix/control/forms/item.py:1294 -#: pretix/control/forms/subevents.py:407 +#: pretix/control/forms/event.py:337 pretix/control/forms/item.py:1300 +#: pretix/control/forms/subevents.py:414 #, python-brace-format msgid "Default ({value})" msgstr "تلقائي ({value})" @@ -14871,25 +14883,25 @@ msgid "" "configuration below." msgstr "" -#: pretix/control/forms/item.py:142 pretix/control/forms/item.py:212 +#: pretix/control/forms/item.py:142 pretix/control/forms/item.py:218 msgid "This field is required" msgstr "هذه الخانة مطلوبه" -#: pretix/control/forms/item.py:214 +#: pretix/control/forms/item.py:220 msgid "Dependencies between questions are not supported during check-in." msgstr "غير معتمدة تبعيات بين الأسئلة أثناء التسجيل في مكتب الاستقبال." -#: pretix/control/forms/item.py:309 +#: pretix/control/forms/item.py:315 #, fuzzy #| msgid "All products" msgid "No products" msgstr "جميع المنتجات" -#: pretix/control/forms/item.py:375 +#: pretix/control/forms/item.py:381 msgid "The product should exist in multiple variations" msgstr "يجب أن تكون موجودة المنتج في أشكال مختلفة" -#: pretix/control/forms/item.py:376 +#: pretix/control/forms/item.py:382 msgid "" "Select this option e.g. for t-shirts that come in multiple sizes. You can " "select the variations in the next step." @@ -14897,72 +14909,72 @@ msgstr "" "حدد هذا الخيار على سبيل المثال للالقمصان التي تأتي في أحجام متعددة. يمكنك " "تحديد الاختلافات في الخطوة التالية." -#: pretix/control/forms/item.py:396 pretix/control/forms/item.py:721 +#: pretix/control/forms/item.py:402 pretix/control/forms/item.py:727 msgid "No category" msgstr "ليس هناك فئة" -#: pretix/control/forms/item.py:403 +#: pretix/control/forms/item.py:409 msgid "No taxation" msgstr "لا ضرائب" -#: pretix/control/forms/item.py:405 +#: pretix/control/forms/item.py:411 msgid "Copy product information" msgstr "معلومات عن المنتج نسخة" -#: pretix/control/forms/item.py:416 +#: pretix/control/forms/item.py:422 msgid "Do not add to a quota now" msgstr "لا تضيف إلى الحصة الآن" -#: pretix/control/forms/item.py:417 +#: pretix/control/forms/item.py:423 msgid "Add product to an existing quota" msgstr "إضافة منتج إلى الحصة الحالية" -#: pretix/control/forms/item.py:418 +#: pretix/control/forms/item.py:424 msgid "Create a new quota for this product" msgstr "إنشاء حصص جديدة لهذا المنتج" -#: pretix/control/forms/item.py:424 +#: pretix/control/forms/item.py:430 msgid "Quota options" msgstr "خيارات الحصص" -#: pretix/control/forms/item.py:432 +#: pretix/control/forms/item.py:438 msgid "Add to existing quota" msgstr "إضافة إلى الحصص الحالية" -#: pretix/control/forms/item.py:441 +#: pretix/control/forms/item.py:447 msgid "New quota name" msgstr "اسم الحصص الجديد" -#: pretix/control/forms/item.py:447 +#: pretix/control/forms/item.py:453 msgid "Size" msgstr "بحجم" -#: pretix/control/forms/item.py:448 +#: pretix/control/forms/item.py:454 msgid "Number of tickets" msgstr "عدد التذاكر" -#: pretix/control/forms/item.py:580 +#: pretix/control/forms/item.py:586 msgid "Quota name is required." msgstr "مطلوب اسم الحصص." -#: pretix/control/forms/item.py:585 +#: pretix/control/forms/item.py:591 msgid "Please select a quota." msgstr "يرجى تحديد الحصص." -#: pretix/control/forms/item.py:607 pretix/plugins/badges/forms.py:85 +#: pretix/control/forms/item.py:613 pretix/plugins/badges/forms.py:85 #: pretix/plugins/ticketoutputpdf/forms.py:55 msgid "(Event default)" msgstr "(الافتراضي الأحداث)" -#: pretix/control/forms/item.py:617 +#: pretix/control/forms/item.py:623 msgid "Choose automatically depending on event settings" msgstr "اختيار تلقائيا اعتمادا على إعدادات الحدث" -#: pretix/control/forms/item.py:618 +#: pretix/control/forms/item.py:624 msgid "Yes, if ticket generation is enabled in general" msgstr "نعم، يتم تمكين إذا الجيل تذكرة في عام" -#: pretix/control/forms/item.py:636 +#: pretix/control/forms/item.py:642 msgid "" "e.g. This reduced price is available for full-time students, jobless and " "people over 65. This ticket includes access to all parts of the event, " @@ -14971,27 +14983,27 @@ msgstr "" "مثلا هذا السعر المخفض متاح للطلاب بدوام كامل، والعاطلين عن العمل والناس على " "65. هذه التذكرة تشمل الوصول إلى جميع أجزاء من هذا الحدث، باستثناء منطقة VIP." -#: pretix/control/forms/item.py:680 +#: pretix/control/forms/item.py:686 msgid "" "This option is deprecated. For new products, use the newer option below that " "refers to another product instead of a quota." msgstr "" -#: pretix/control/forms/item.py:691 pretix/control/forms/item.py:707 +#: pretix/control/forms/item.py:697 pretix/control/forms/item.py:713 msgid "Shown independently of other products" msgstr "" -#: pretix/control/forms/item.py:732 +#: pretix/control/forms/item.py:738 #, fuzzy #| msgid "Canceled by customer" msgid "Date chosen by customer" msgstr "تم الإلغاء من قبل العميل" -#: pretix/control/forms/item.py:741 +#: pretix/control/forms/item.py:747 msgid "No membership granted" msgstr "" -#: pretix/control/forms/item.py:760 +#: pretix/control/forms/item.py:766 #, fuzzy #| msgid "" #| "Gift card products should not be associated with non-zero tax rates since " @@ -15003,20 +15015,20 @@ msgstr "" "يجب ألا ترتبط منتجات بطاقات الهدايا بمعدلات ضريبية غير صفرية حيث سيتم تطبيق " "ضريبة المبيعات عند استرداد بطاقة الهدايا." -#: pretix/control/forms/item.py:766 +#: pretix/control/forms/item.py:772 msgid "" "Do not set a specific validity for gift card products as it will not " "restrict the validity of the gift card. A validity of gift cards can be set " "in your organizer settings." msgstr "" -#: pretix/control/forms/item.py:785 pretix/control/forms/item.py:1052 +#: pretix/control/forms/item.py:791 pretix/control/forms/item.py:1058 msgid "" "If a valid membership is required, at least one valid membership type needs " "to be selected." msgstr "" -#: pretix/control/forms/item.py:796 +#: pretix/control/forms/item.py:802 msgid "" "Your product grants a non-transferable membership and should therefore be a " "personalized admission ticket. Otherwise customers might not be able to use " @@ -15024,19 +15036,19 @@ msgid "" "the membership type to be transferable." msgstr "" -#: pretix/control/forms/item.py:805 +#: pretix/control/forms/item.py:811 #, fuzzy #| msgid "The last payment date cannot be before the end of presale." msgid "The start of validity must be before the end of validity." msgstr "لا يمكن أن يكون تاريخ الدفع الأخير قبل نهاية فترة عرض البيع المسبق." -#: pretix/control/forms/item.py:812 +#: pretix/control/forms/item.py:818 msgid "" "You have selected dynamic validity but have not entered a time period. This " "would render the tickets unusable." msgstr "" -#: pretix/control/forms/item.py:917 +#: pretix/control/forms/item.py:923 #, python-format msgid "" "The variation \"%s\" cannot be deleted because it has already been ordered " @@ -15046,21 +15058,21 @@ msgstr "" "الاختلاف \"%s\" لا يمكن حذفها لأنه قد تم بالفعل أمر بذلك من قبل مستخدم أو " "حاليا هي في عربة المستخدم. الرجاء ضبط التباين بأنه \"غير نشطة\" بدلا من ذلك." -#: pretix/control/forms/item.py:994 +#: pretix/control/forms/item.py:1000 #, fuzzy #| msgid "Calculate from product" msgid "Use value from product" msgstr "احسب من المنتج" -#: pretix/control/forms/item.py:1079 +#: pretix/control/forms/item.py:1085 msgid "Add-ons" msgstr "إضافات" -#: pretix/control/forms/item.py:1103 +#: pretix/control/forms/item.py:1109 msgid "You added the same add-on category twice" msgstr "لقد قمت بإضافة نفس إضافة على فئة مرتين" -#: pretix/control/forms/item.py:1148 +#: pretix/control/forms/item.py:1154 msgid "" "Be aware that setting a minimal number makes it impossible to buy this " "product if all available add-ons are sold out." @@ -15068,21 +15080,21 @@ msgstr "" "كن على علم أن تحديد أقل عدد ممكن يجعل من المستحيل لشراء هذا المنتج إذا بعت " "كل ما هو متاح من الإضافات بها." -#: pretix/control/forms/item.py:1155 +#: pretix/control/forms/item.py:1161 msgid "Bundled products" msgstr "المنتجات المجمعة" -#: pretix/control/forms/item.py:1205 +#: pretix/control/forms/item.py:1211 msgid "You added the same bundled product twice." msgstr "لقد قمت بإضافة نفس حزمة المنتج مرتين" -#: pretix/control/forms/item.py:1211 +#: pretix/control/forms/item.py:1217 #: pretix/control/templates/pretixcontrol/item/include_bundles.html:23 #: pretix/control/templates/pretixcontrol/item/include_bundles.html:50 msgid "Bundled product" msgstr "المنتجات المجمعة" -#: pretix/control/forms/item.py:1236 pretix/control/forms/orders.py:367 +#: pretix/control/forms/item.py:1242 pretix/control/forms/orders.py:367 #: pretix/control/forms/orders.py:557 msgid "inactive" msgstr "غير نشط" @@ -15334,7 +15346,7 @@ msgstr "إضافة إلى" #: pretix/control/templates/pretixcontrol/order/change.html:127 #: pretix/control/views/vouchers.py:120 #: pretix/presale/templates/pretixpresale/event/checkout_membership.html:23 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:95 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:99 msgid "Seat" msgstr "مقعد" @@ -15719,7 +15731,7 @@ msgstr "هناك حساب مرتبط بهذا البريد الإلكتروني #: pretix/control/forms/organizer.py:908 #: pretix/control/templates/pretixcontrol/organizers/customer.html:61 -#: pretix/presale/forms/customer.py:168 pretix/presale/forms/customer.py:489 +#: pretix/presale/forms/customer.py:169 pretix/presale/forms/customer.py:493 msgid "Phone" msgstr "" @@ -15856,9 +15868,9 @@ msgstr "اختياري" #: pretix/control/forms/renderers.py:148 #: pretix/control/templates/pretixcontrol/organizers/device_bulk_edit.html:26 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:48 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:197 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:284 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:49 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:192 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:286 #, fuzzy #| msgid "Change" msgctxt "form_bulk" @@ -15914,7 +15926,7 @@ msgid "last" msgstr "الاخير" #: pretix/control/forms/rrule.py:110 pretix/control/forms/rrule.py:149 -#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:21 +#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:20 msgid "Day" msgstr "يوم" @@ -15930,19 +15942,19 @@ msgstr "احتفظ بالقيمة الحالية" msgid "Selection contains various values" msgstr "" -#: pretix/control/forms/subevents.py:285 pretix/control/forms/subevents.py:314 +#: pretix/control/forms/subevents.py:292 pretix/control/forms/subevents.py:321 #, fuzzy #| msgid "The end of the event has to be later than its start." msgid "The end of availability should be after the start of availability." msgstr "نهاية الفعالية يجب أن تكون في وقت لاحق بعد بدايتها." -#: pretix/control/forms/subevents.py:347 +#: pretix/control/forms/subevents.py:354 #, fuzzy #| msgid "Available until" msgid "Available_until" msgstr "متاحة حتى" -#: pretix/control/forms/subevents.py:466 +#: pretix/control/forms/subevents.py:473 msgid "Exclude these dates instead of adding them." msgstr "استبعاد هذه التواريخ بدلا من إضافتها." @@ -15954,7 +15966,7 @@ msgstr "لا يمكن حفظ التغييرات. انظر أدناه للحصو msgid "Specific seat ID" msgstr "" -#: pretix/control/forms/vouchers.py:201 pretix/presale/forms/waitinglist.py:101 +#: pretix/control/forms/vouchers.py:201 pretix/presale/forms/waitinglist.py:103 msgid "Invalid product selected." msgstr "منتج غير صالح المحدد." @@ -16302,7 +16314,7 @@ msgid "The check-in of position #{posid} on list \"{list}\" has been reverted." msgstr "في الاختيار من موقف # {posid} على قائمة \"{list}\" وقد عادت." #: pretix/control/logdisplay.py:343 pretix/control/logdisplay.py:345 -#: pretix/control/logdisplay.py:891 pretix/control/logdisplay.py:893 +#: pretix/control/logdisplay.py:887 pretix/control/logdisplay.py:889 msgid "(unknown)" msgstr "(غير معروف)" @@ -16356,8 +16368,8 @@ msgstr "أكد المستخدم الرسالة التالية: \"{}\"" msgid "The order has been canceled (comment: \"{comment}\")." msgstr "تم رفض الطلب." -#: pretix/control/logdisplay.py:406 pretix/control/views/orders.py:1573 -#: pretix/presale/views/order.py:1047 +#: pretix/control/logdisplay.py:406 pretix/control/views/orders.py:1574 +#: pretix/presale/views/order.py:1049 msgid "The order has been canceled." msgstr "تم إلغاء هذا الأمر." @@ -16368,11 +16380,11 @@ msgstr "تم إلغاء هذا الأمر." msgid "Position #{posid} has been printed at {datetime} with type \"{type}\"." msgstr "موقف # {posid} تم إيداعه في {datetime} لقائمة \"{list}\"." -#: pretix/control/logdisplay.py:428 pretix/control/logdisplay.py:741 +#: pretix/control/logdisplay.py:428 pretix/control/logdisplay.py:737 msgid "The settings of a payment provider have been changed." msgstr "تم تغيير الإعدادات من مقدم الدفع." -#: pretix/control/logdisplay.py:431 pretix/control/logdisplay.py:740 +#: pretix/control/logdisplay.py:431 pretix/control/logdisplay.py:736 msgid "The settings of a ticket output provider have been changed." msgstr "تم تغيير إعدادات مزود الناتج التذاكر." @@ -16419,11 +16431,11 @@ msgstr "تم وضع علامة على الترتيب كما المدفوعة." msgid "The order has been set to require payment before use." msgstr "تم إرسال كود الخصم إلى {recipient}." -#: pretix/control/logdisplay.py:450 pretix/control/views/orders.py:1578 +#: pretix/control/logdisplay.py:450 pretix/control/views/orders.py:1579 msgid "The order has been marked as expired." msgstr "تم وضع علامة على النظام ومنتهية الصلاحية." -#: pretix/control/logdisplay.py:451 pretix/control/views/orders.py:1476 +#: pretix/control/logdisplay.py:451 pretix/control/views/orders.py:1477 msgid "The order has been marked as paid." msgstr "تم وضع علامة على الترتيب كما المدفوعة." @@ -16435,7 +16447,7 @@ msgstr "تم حذف طلب الإلغاء." msgid "The order has been refunded." msgstr "وقد تم ترتيب ردها." -#: pretix/control/logdisplay.py:454 pretix/control/views/orders.py:1861 +#: pretix/control/logdisplay.py:454 pretix/control/views/orders.py:1862 msgid "The order has been reactivated." msgstr "تم إعادة تنشيط الطلب." @@ -16447,7 +16459,7 @@ msgstr "تم إنشاء هذا الأمر." msgid "The order requires approval before it can continue to be processed." msgstr "الأمر يتطلب موافقة قبل أن تتمكن من الاستمرار في معالجتها." -#: pretix/control/logdisplay.py:458 pretix/control/views/orders.py:800 +#: pretix/control/logdisplay.py:458 pretix/control/views/orders.py:801 msgid "The order has been approved." msgstr "تمت الموافقة على النظام." @@ -16484,17 +16496,17 @@ msgstr "تم تغيير حساب العميل." msgid "The order locale has been changed." msgstr "تم تغيير لغة النظام." -#: pretix/control/logdisplay.py:469 pretix/control/views/orders.py:1617 -#: pretix/presale/views/order.py:739 pretix/presale/views/order.py:812 +#: pretix/control/logdisplay.py:469 pretix/control/views/orders.py:1618 +#: pretix/presale/views/order.py:741 pretix/presale/views/order.py:814 msgid "The invoice has been generated." msgstr "تم إنشاء الفاتورة." -#: pretix/control/logdisplay.py:470 pretix/control/views/orders.py:1688 +#: pretix/control/logdisplay.py:470 pretix/control/views/orders.py:1689 msgid "The invoice has been regenerated." msgstr "تم إعادة إنشاء الفاتورة." -#: pretix/control/logdisplay.py:471 pretix/control/views/orders.py:1719 -#: pretix/presale/views/order.py:825 +#: pretix/control/logdisplay.py:471 pretix/control/views/orders.py:1720 +#: pretix/presale/views/order.py:827 msgid "The invoice has been reissued." msgstr "تم إعادة إصدار الفاتورة." @@ -16760,7 +16772,7 @@ msgstr "تم تغيير المنظم." msgid "The organizer settings have been changed." msgstr "تم تغيير إعدادات المنظم." -#: pretix/control/logdisplay.py:625 pretix/control/logdisplay.py:748 +#: pretix/control/logdisplay.py:625 pretix/control/logdisplay.py:744 #, fuzzy #| msgid "The order details have been changed." msgid "The footer links have been changed." @@ -17076,425 +17088,413 @@ msgstr "" msgid "The organizer \"{name}\" has been deleted." msgstr "منظم \"{name}\" تم حذفها." -#: pretix/control/logdisplay.py:699 pretix/control/logdisplay.py:700 +#: pretix/control/logdisplay.py:699 pretix/control/logdisplay.py:905 msgid "A voucher has been sent to a person on the waiting list." msgstr "تم إرسال قسيمة لشخص على قائمة الانتظار." -#: pretix/control/logdisplay.py:701 -msgid "An entry has been removed from the waiting list." -msgstr "تمت إزالة إدخال من قائمة الانتظار." - -#: pretix/control/logdisplay.py:702 +#: pretix/control/logdisplay.py:700 #, fuzzy #| msgid "An entry has been added to the waiting list." msgid "An entry has been transferred to another waiting list." msgstr "تمت إضافة إدخال إلى قائمة الانتظار." -#: pretix/control/logdisplay.py:703 -msgid "An entry has been changed on the waiting list." -msgstr "تم تغيير دخول على قائمة الانتظار." - -#: pretix/control/logdisplay.py:704 -msgid "An entry has been added to the waiting list." -msgstr "تمت إضافة إدخال إلى قائمة الانتظار." - -#: pretix/control/logdisplay.py:705 +#: pretix/control/logdisplay.py:701 msgid "The team has been created." msgstr "تم إنشاء فريق." -#: pretix/control/logdisplay.py:706 +#: pretix/control/logdisplay.py:702 msgid "The team settings have been changed." msgstr "تم تغيير إعدادات الفريق." -#: pretix/control/logdisplay.py:707 +#: pretix/control/logdisplay.py:703 msgid "The team has been deleted." msgstr "تم حذف الفريق." -#: pretix/control/logdisplay.py:708 pretix/control/views/organizer.py:2012 +#: pretix/control/logdisplay.py:704 pretix/control/views/organizer.py:2012 msgid "The gate has been created." msgstr "تم إنشاء البوابة." -#: pretix/control/logdisplay.py:709 +#: pretix/control/logdisplay.py:705 msgid "The gate has been changed." msgstr "تم تغيير البوابة." -#: pretix/control/logdisplay.py:710 +#: pretix/control/logdisplay.py:706 msgid "The gate has been deleted." msgstr "تم حذف البوابة." -#: pretix/control/logdisplay.py:711 +#: pretix/control/logdisplay.py:707 msgctxt "subevent" msgid "The event date has been deleted." msgstr "تم حذف تاريخ الحدث." -#: pretix/control/logdisplay.py:712 +#: pretix/control/logdisplay.py:708 msgctxt "subevent" msgid "The event date has been canceled." msgstr "تم تغيير تاريخ الفعالية." -#: pretix/control/logdisplay.py:713 +#: pretix/control/logdisplay.py:709 msgctxt "subevent" msgid "The event date has been changed." msgstr "تم تغيير تاريخ الحدث." -#: pretix/control/logdisplay.py:714 +#: pretix/control/logdisplay.py:710 msgctxt "subevent" msgid "The event date has been created." msgstr "تم إنشاء تاريخ الحدث." -#: pretix/control/logdisplay.py:715 +#: pretix/control/logdisplay.py:711 msgctxt "subevent" msgid "A quota has been added to the event date." msgstr "تمت إضافة الحصص لتاريخ الحدث." -#: pretix/control/logdisplay.py:716 +#: pretix/control/logdisplay.py:712 msgctxt "subevent" msgid "A quota has been changed on the event date." msgstr "تم تغيير الحصص في تاريخ الحدث." -#: pretix/control/logdisplay.py:717 +#: pretix/control/logdisplay.py:713 msgctxt "subevent" msgid "A quota has been removed from the event date." msgstr "تمت إزالة حصة من تاريخ الحدث." -#: pretix/control/logdisplay.py:718 +#: pretix/control/logdisplay.py:714 msgid "The device has been created." msgstr "تم إنشاء الجهاز." -#: pretix/control/logdisplay.py:719 +#: pretix/control/logdisplay.py:715 msgid "The device has been changed." msgstr "تم تغيير الجهاز." -#: pretix/control/logdisplay.py:720 +#: pretix/control/logdisplay.py:716 msgid "Access of the device has been revoked." msgstr "تم إبطال الوصول للجهاز." -#: pretix/control/logdisplay.py:721 +#: pretix/control/logdisplay.py:717 msgid "The device has been initialized." msgstr "تم تهيئة الجهاز." -#: pretix/control/logdisplay.py:722 +#: pretix/control/logdisplay.py:718 msgid "The access token of the device has been regenerated." msgstr "تم إعادة إنشاء الوصول رمزية للجهاز." -#: pretix/control/logdisplay.py:723 +#: pretix/control/logdisplay.py:719 msgid "The device has notified the server of an hardware or software update." msgstr "وقد أخطرت جهاز الخادم من تحديث الأجهزة أو البرامج." -#: pretix/control/logdisplay.py:724 +#: pretix/control/logdisplay.py:720 msgid "The gift card has been created." msgstr "تم إنشاء بطاقة هدية." -#: pretix/control/logdisplay.py:725 pretix/control/views/organizer.py:1656 +#: pretix/control/logdisplay.py:721 pretix/control/views/organizer.py:1656 msgid "The gift card has been changed." msgstr "تم تغيير بطاقة الهدية." -#: pretix/control/logdisplay.py:726 +#: pretix/control/logdisplay.py:722 msgid "A manual transaction has been performed." msgstr "تم إجراء عملية يدوية." -#: pretix/control/logdisplay.py:727 +#: pretix/control/logdisplay.py:723 #, python-brace-format msgid "The token \"{name}\" has been created." msgstr "ورمزي \"{name}\" تم إنشاؤه." -#: pretix/control/logdisplay.py:728 +#: pretix/control/logdisplay.py:724 #, python-brace-format msgid "The token \"{name}\" has been revoked." msgstr "ورمزي \"{name}\" تم إبطال." -#: pretix/control/logdisplay.py:735 +#: pretix/control/logdisplay.py:731 #, fuzzy #| msgid "A user has been added to the event team." msgid "A meta property has been added to this event." msgstr "تمت إضافة المستخدم إلى فريق الحدث." -#: pretix/control/logdisplay.py:736 +#: pretix/control/logdisplay.py:732 #, fuzzy #| msgid "A user has been removed from the event team." msgid "A meta property has been removed from this event." msgstr "تمت إزالة مستخدم من فريق الحدث." -#: pretix/control/logdisplay.py:737 +#: pretix/control/logdisplay.py:733 #, fuzzy #| msgctxt "subevent" #| msgid "A quota has been changed on the event date." msgid "A meta property has been changed on this event." msgstr "تم تغيير الحصص في تاريخ الحدث." -#: pretix/control/logdisplay.py:738 +#: pretix/control/logdisplay.py:734 msgid "The event settings have been changed." msgstr "تم تغيير إعدادات الحدث." -#: pretix/control/logdisplay.py:739 +#: pretix/control/logdisplay.py:735 msgid "The ticket download settings have been changed." msgstr "تم تغيير إعدادات تذكرة تنزيل." -#: pretix/control/logdisplay.py:742 +#: pretix/control/logdisplay.py:738 msgid "The shop has been taken live." msgstr "وقد اتخذت المحل الحية." -#: pretix/control/logdisplay.py:743 +#: pretix/control/logdisplay.py:739 msgid "The shop has been taken offline." msgstr "وقد اتخذت المحل حاليا." -#: pretix/control/logdisplay.py:744 +#: pretix/control/logdisplay.py:740 msgid "The shop has been taken into test mode." msgstr "وقد اتخذت المحل في وضع الاختبار." -#: pretix/control/logdisplay.py:745 +#: pretix/control/logdisplay.py:741 msgid "The test mode has been disabled." msgstr "تم تعطيل وضع الاختبار." -#: pretix/control/logdisplay.py:746 +#: pretix/control/logdisplay.py:742 msgid "The event has been created." msgstr "تم إنشاء هذا الحدث." -#: pretix/control/logdisplay.py:747 +#: pretix/control/logdisplay.py:743 msgid "The event details have been changed." msgstr "تم تغيير تفاصيل الفعالية." -#: pretix/control/logdisplay.py:749 +#: pretix/control/logdisplay.py:745 msgid "An answer option has been added to the question." msgstr "تمت إضافة خيار الإجابة على السؤال." -#: pretix/control/logdisplay.py:750 +#: pretix/control/logdisplay.py:746 msgid "An answer option has been removed from the question." msgstr "تمت إزالة خيار الإجابة عن السؤال." -#: pretix/control/logdisplay.py:751 +#: pretix/control/logdisplay.py:747 msgid "An answer option has been changed." msgstr "تم تغيير خيار الإجابة." -#: pretix/control/logdisplay.py:752 +#: pretix/control/logdisplay.py:748 msgid "A user has been added to the event team." msgstr "تمت إضافة المستخدم إلى فريق الحدث." -#: pretix/control/logdisplay.py:753 +#: pretix/control/logdisplay.py:749 msgid "A user has been invited to the event team." msgstr "وقد وجهت الدعوة للمستخدم لفريق الحدث." -#: pretix/control/logdisplay.py:754 +#: pretix/control/logdisplay.py:750 msgid "A user's permissions have been changed." msgstr "تم تغيير الأذونات للمستخدم." -#: pretix/control/logdisplay.py:755 +#: pretix/control/logdisplay.py:751 msgid "A user has been removed from the event team." msgstr "تمت إزالة مستخدم من فريق الحدث." -#: pretix/control/logdisplay.py:762 +#: pretix/control/logdisplay.py:758 msgid "The check-in list has been added." msgstr "تمت إضافة الاختيار في القائمة." -#: pretix/control/logdisplay.py:763 pretix/control/logdisplay.py:764 +#: pretix/control/logdisplay.py:759 pretix/control/logdisplay.py:760 msgid "The check-in list has been deleted." msgstr "تم حذف الاختيار في القائمة." -#: pretix/control/logdisplay.py:765 +#: pretix/control/logdisplay.py:761 msgid "The check-in list has been changed." msgstr "تم تغيير الاختيار في القائمة." -#: pretix/control/logdisplay.py:768 +#: pretix/control/logdisplay.py:764 #, fuzzy, python-brace-format #| msgid "Check-in list" msgid "Check-in list {val}" msgstr "تحقق في قائمة" -#: pretix/control/logdisplay.py:775 +#: pretix/control/logdisplay.py:771 #, fuzzy #| msgid "A plugin has been enabled." msgid "The plugin has been enabled." msgstr "تم تمكين البرنامج المساعد." -#: pretix/control/logdisplay.py:776 pretix/control/views/event.py:464 +#: pretix/control/logdisplay.py:772 pretix/control/views/event.py:464 #, fuzzy #| msgid "A plugin has been disabled." msgid "The plugin has been disabled." msgstr "تم تعطيل البرنامج المساعد." -#: pretix/control/logdisplay.py:779 +#: pretix/control/logdisplay.py:775 #, fuzzy, python-brace-format #| msgid "Question {val}" msgid "Plugin {val}" msgstr "سؤال{val}" -#: pretix/control/logdisplay.py:795 +#: pretix/control/logdisplay.py:791 msgid "The product has been created." msgstr "تم إنشاء المنتج." -#: pretix/control/logdisplay.py:796 +#: pretix/control/logdisplay.py:792 msgid "The product has been changed." msgstr "تم تغيير المنتج." -#: pretix/control/logdisplay.py:797 +#: pretix/control/logdisplay.py:793 #, fuzzy #| msgid "The product has been created." msgid "The product has been reordered." msgstr "تم إنشاء المنتج." -#: pretix/control/logdisplay.py:798 +#: pretix/control/logdisplay.py:794 msgid "The product has been deleted." msgstr "تم حذف المنتج." -#: pretix/control/logdisplay.py:799 +#: pretix/control/logdisplay.py:795 msgid "An add-on has been added to this product." msgstr "تمت إضافة وظيفة إضافية على هذا المنتج." -#: pretix/control/logdisplay.py:800 +#: pretix/control/logdisplay.py:796 msgid "An add-on has been removed from this product." msgstr "تمت إزالة وظيفة إضافية على من هذا المنتج." -#: pretix/control/logdisplay.py:801 +#: pretix/control/logdisplay.py:797 msgid "An add-on has been changed on this product." msgstr "تم تغيير وظيفة إضافية على على هذا المنتج." -#: pretix/control/logdisplay.py:802 +#: pretix/control/logdisplay.py:798 msgid "A bundled item has been added to this product." msgstr "تمت إضافة بند المجمعة لهذا المنتج." -#: pretix/control/logdisplay.py:803 +#: pretix/control/logdisplay.py:799 msgid "A bundled item has been removed from this product." msgstr "تمت إزالة عنصر المجمعة من هذا المنتج." -#: pretix/control/logdisplay.py:804 +#: pretix/control/logdisplay.py:800 msgid "A bundled item has been changed on this product." msgstr "تم تغيير عنصر المجمعة لهذا المنتج." -#: pretix/control/logdisplay.py:811 +#: pretix/control/logdisplay.py:807 #, python-brace-format msgid "The variation \"{value}\" has been created." msgstr "الاختلاف \"{value}\" تم إنشاؤه." -#: pretix/control/logdisplay.py:812 +#: pretix/control/logdisplay.py:808 #, python-brace-format msgid "The variation \"{value}\" has been deleted." msgstr "الاختلاف \"{value}\" تم حذفها." -#: pretix/control/logdisplay.py:813 +#: pretix/control/logdisplay.py:809 #, python-brace-format msgid "The variation \"{value}\" has been changed." msgstr "الاختلاف \"{value}\" تم تغيير." -#: pretix/control/logdisplay.py:830 +#: pretix/control/logdisplay.py:826 #, python-brace-format msgid "Payment {local_id} has been confirmed." msgstr "وقد تم تأكيد الدفع {local_id}." -#: pretix/control/logdisplay.py:831 +#: pretix/control/logdisplay.py:827 #, python-brace-format msgid "Payment {local_id} has been canceled." msgstr "تم إلغاء الدفع {local_id}." -#: pretix/control/logdisplay.py:832 +#: pretix/control/logdisplay.py:828 #, python-brace-format msgid "Canceling payment {local_id} has failed." msgstr "فشل إلغاء الدفع {local_id}." -#: pretix/control/logdisplay.py:833 +#: pretix/control/logdisplay.py:829 #, python-brace-format msgid "Payment {local_id} has been started." msgstr "وقد بدأ الدفع {local_id}." -#: pretix/control/logdisplay.py:834 +#: pretix/control/logdisplay.py:830 #, python-brace-format msgid "Payment {local_id} has failed." msgstr "فشلت الدفع {local_id}." -#: pretix/control/logdisplay.py:835 +#: pretix/control/logdisplay.py:831 #, python-brace-format msgid "The order could not be marked as paid: {message}" msgstr "لا يمكن أن تكون وضعت النظام كما المدفوعة: {message}" -#: pretix/control/logdisplay.py:836 +#: pretix/control/logdisplay.py:832 msgid "The order has been overpaid." msgstr "وقد تم ترتيب زائدة." -#: pretix/control/logdisplay.py:837 +#: pretix/control/logdisplay.py:833 #, python-brace-format msgid "Refund {local_id} has been created." msgstr "تم إنشاء استرداد {local_id}." -#: pretix/control/logdisplay.py:838 +#: pretix/control/logdisplay.py:834 #, python-brace-format msgid "Refund {local_id} has been created by an external entity." msgstr "تم إنشاء استرداد {local_id} كيان خارجي." -#: pretix/control/logdisplay.py:839 +#: pretix/control/logdisplay.py:835 msgid "The customer requested you to issue a refund." msgstr "طلب لك العملاء لإصدار رد." -#: pretix/control/logdisplay.py:840 +#: pretix/control/logdisplay.py:836 #, python-brace-format msgid "Refund {local_id} has been completed." msgstr "وقد تم الانتهاء استرداد {local_id}." -#: pretix/control/logdisplay.py:841 +#: pretix/control/logdisplay.py:837 #, python-brace-format msgid "Refund {local_id} has been canceled." msgstr "تم إلغاء استرداد {local_id}." -#: pretix/control/logdisplay.py:842 +#: pretix/control/logdisplay.py:838 #, python-brace-format msgid "Refund {local_id} has failed." msgstr "فشل استرداد {local_id}." -#: pretix/control/logdisplay.py:849 +#: pretix/control/logdisplay.py:845 msgid "The quota has been added." msgstr "تمت إضافة الحصص." -#: pretix/control/logdisplay.py:850 +#: pretix/control/logdisplay.py:846 msgid "The quota has been deleted." msgstr "تم حذف الحصص." -#: pretix/control/logdisplay.py:851 +#: pretix/control/logdisplay.py:847 msgid "The quota has been changed." msgstr "تم تغيير الحصص." -#: pretix/control/logdisplay.py:852 +#: pretix/control/logdisplay.py:848 msgid "The quota has closed." msgstr "وقد أغلقت الحصص." -#: pretix/control/logdisplay.py:853 pretix/control/views/item.py:1075 +#: pretix/control/logdisplay.py:849 pretix/control/views/item.py:1081 msgid "The quota has been re-opened." msgstr "وكانت الحصة إعادة فتح." -#: pretix/control/logdisplay.py:860 +#: pretix/control/logdisplay.py:856 msgid "The question has been added." msgstr "تمت إضافة هذا السؤال." -#: pretix/control/logdisplay.py:861 +#: pretix/control/logdisplay.py:857 msgid "The question has been deleted." msgstr "تم حذف السؤال." -#: pretix/control/logdisplay.py:862 +#: pretix/control/logdisplay.py:858 msgid "The question has been changed." msgstr "تم تغيير السؤال." -#: pretix/control/logdisplay.py:863 +#: pretix/control/logdisplay.py:859 #, fuzzy #| msgid "The question has been deleted." msgid "The question has been reordered." msgstr "تم حذف السؤال." -#: pretix/control/logdisplay.py:870 +#: pretix/control/logdisplay.py:866 #, fuzzy #| msgid "The quota has been added." msgid "The discount has been added." msgstr "تمت إضافة الحصص." -#: pretix/control/logdisplay.py:871 +#: pretix/control/logdisplay.py:867 #, fuzzy #| msgid "The product has been deleted." msgid "The discount has been deleted." msgstr "تم حذف المنتج." -#: pretix/control/logdisplay.py:872 +#: pretix/control/logdisplay.py:868 #, fuzzy #| msgid "The account has been changed." msgid "The discount has been changed." msgstr "تم تغيير الحساب." -#: pretix/control/logdisplay.py:896 +#: pretix/control/logdisplay.py:892 #, python-brace-format msgid "" "Position #{posid} has been checked in manually at {datetime} on list \"{list}" @@ -17502,7 +17502,7 @@ msgid "" msgstr "" "وقد تم التحقق من موقف # {posid} في يدويا في{datetime} على قائمة \"{list}\"." -#: pretix/control/logdisplay.py:901 +#: pretix/control/logdisplay.py:897 #, python-brace-format msgid "" "Position #{posid} has been checked in again at {datetime} on list \"{list}\"." @@ -17510,6 +17510,18 @@ msgstr "" "وقد تم التحقق من موقف # {posid} الدخول مرة أخرى في{datetime} على قائمة " "\"{list}\"." +#: pretix/control/logdisplay.py:906 +msgid "An entry has been removed from the waiting list." +msgstr "تمت إزالة إدخال من قائمة الانتظار." + +#: pretix/control/logdisplay.py:907 +msgid "An entry has been changed on the waiting list." +msgstr "تم تغيير دخول على قائمة الانتظار." + +#: pretix/control/logdisplay.py:908 +msgid "An entry has been added to the waiting list." +msgstr "تمت إضافة إدخال إلى قائمة الانتظار." + #: pretix/control/middleware.py:153 pretix/control/middleware.py:167 msgid "" "The selected event was not found or you have no permission to administrate " @@ -17865,8 +17877,8 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/checkout_addons.html:90 #: pretix/presale/templates/pretixpresale/event/checkout_customer.html:125 #: pretix/presale/templates/pretixpresale/event/checkout_membership.html:80 -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:129 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:177 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:130 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:192 #: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:53 #: pretix/presale/templates/pretixpresale/event/order_change.html:27 #: pretix/presale/templates/pretixpresale/event/order_pay.html:28 @@ -17928,7 +17940,7 @@ msgstr "كلمة المرور الجديدة تعيين" #: pretix/control/templates/pretixcontrol/event/payment.html:88 #: pretix/control/templates/pretixcontrol/event/payment_provider.html:36 #: pretix/control/templates/pretixcontrol/event/quick_setup.html:201 -#: pretix/control/templates/pretixcontrol/event/settings.html:473 +#: pretix/control/templates/pretixcontrol/event/settings.html:494 #: pretix/control/templates/pretixcontrol/event/tax_edit.html:145 #: pretix/control/templates/pretixcontrol/event/tickets.html:73 #: pretix/control/templates/pretixcontrol/global_settings.html:12 @@ -17968,7 +17980,7 @@ msgstr "كلمة المرور الجديدة تعيين" #: pretix/control/templates/pretixcontrol/organizers/webhook_edit.html:21 #: pretix/control/templates/pretixcontrol/pdf/index.html:544 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:630 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:366 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:368 #: pretix/control/templates/pretixcontrol/subevents/detail.html:287 #: pretix/control/templates/pretixcontrol/user/notifications.html:85 #: pretix/control/templates/pretixcontrol/user/settings.html:81 @@ -18364,6 +18376,7 @@ msgstr[5] "" #: pretix/control/templates/pretixcontrol/organizers/team_delete.html:10 #: pretix/control/templates/pretixcontrol/organizers/team_delete.html:21 #: pretix/control/templates/pretixcontrol/pdf/index.html:77 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:378 #: pretix/control/templates/pretixcontrol/subevents/delete.html:12 #: pretix/control/templates/pretixcontrol/subevents/delete_bulk.html:41 #: pretix/control/templates/pretixcontrol/user/2fa_delete.html:18 @@ -19229,7 +19242,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/event/dangerzone.html:5 #: pretix/control/templates/pretixcontrol/event/live.html:131 -#: pretix/control/templates/pretixcontrol/event/settings.html:479 +#: pretix/control/templates/pretixcontrol/event/settings.html:500 msgid "Cancel or delete event" msgstr "إلغاء أو حذف فعالية" @@ -19338,13 +19351,13 @@ msgstr "" "لأذونات تكوينها." #: pretix/control/templates/pretixcontrol/event/fragment_geodata.html:14 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:42 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:43 msgid "Geo coordinates" msgstr "" #: pretix/control/templates/pretixcontrol/event/fragment_geodata.html:15 #: pretix/control/templates/pretixcontrol/event/settings.html:139 -#: pretix/control/templates/pretixcontrol/event/settings.html:281 +#: pretix/control/templates/pretixcontrol/event/settings.html:292 #: pretix/control/templates/pretixcontrol/items/discount.html:35 #: pretix/control/templates/pretixcontrol/organizers/edit.html:56 #: pretix/control/templates/pretixcontrol/organizers/property_edit.html:32 @@ -19354,7 +19367,7 @@ msgid "Optional" msgstr "" #: pretix/control/templates/pretixcontrol/event/fragment_geodata.html:22 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:57 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:58 msgid "Geocoding data © OpenStreetMap" msgstr "" @@ -19863,9 +19876,9 @@ msgstr "" #: pretix/control/views/event.py:587 pretix/control/views/event.py:734 #: pretix/control/views/event.py:963 pretix/control/views/event.py:1334 #: pretix/control/views/global_settings.py:65 -#: pretix/control/views/global_settings.py:88 pretix/control/views/item.py:263 -#: pretix/control/views/item.py:789 pretix/control/views/item.py:1115 -#: pretix/control/views/item.py:1293 pretix/control/views/item.py:1443 +#: pretix/control/views/global_settings.py:88 pretix/control/views/item.py:264 +#: pretix/control/views/item.py:795 pretix/control/views/item.py:1121 +#: pretix/control/views/item.py:1299 pretix/control/views/item.py:1449 #: pretix/control/views/mailsetup.py:151 pretix/control/views/mailsetup.py:163 #: pretix/control/views/mailsetup.py:190 pretix/control/views/mailsetup.py:258 #: pretix/control/views/organizer.py:260 pretix/control/views/organizer.py:288 @@ -20074,7 +20087,7 @@ msgstr "مبادئ" #: pretix/control/templates/pretixcontrol/item/include_variations.html:202 #: pretix/control/templates/pretixcontrol/item/index.html:127 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:392 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:76 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:77 #: pretix/control/templates/pretixcontrol/subevents/detail.html:35 msgid "Meta data" msgstr "البيانات الوصفية" @@ -20157,7 +20170,7 @@ msgstr "تصميم متجر" #: pretix/control/templates/pretixcontrol/event/settings.html:232 #: pretix/control/templates/pretixcontrol/events/create_basics.html:56 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:411 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:95 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:96 #: pretix/control/templates/pretixcontrol/subevents/detail.html:54 msgid "Timeline" msgstr "الجدول الزمني" @@ -20172,31 +20185,45 @@ msgstr "عرض" msgid "Product list" msgstr "تاريخ المنتج" -#: pretix/control/templates/pretixcontrol/event/settings.html:250 +#: pretix/control/templates/pretixcontrol/event/settings.html:253 +#: pretix/control/templates/pretixcontrol/event/settings.html:389 +#, fuzzy +#| msgid "Invoice settings" +msgid "Incompatible settings" +msgstr "ضبط فاتورة" + +#: pretix/control/templates/pretixcontrol/event/settings.html:254 +#: pretix/control/templates/pretixcontrol/event/settings.html:390 +msgid "" +"Customers won't be able to add themselves to the waiting list, because " +"\"Hide all products that are sold out\" is enabled." +msgstr "" + +#: pretix/control/templates/pretixcontrol/event/settings.html:261 #, fuzzy #| msgid "resend invite" msgctxt "subevents" msgid "Calendar and list views" msgstr "إعادة إرسال دعوة" -#: pretix/control/templates/pretixcontrol/event/settings.html:269 +#: pretix/control/templates/pretixcontrol/event/settings.html:280 #: pretix/control/templates/pretixcontrol/order/index.html:176 #: pretix/presale/templates/pretixpresale/event/order.html:22 msgid "Order details" msgstr "تفاصيل الطلب" -#: pretix/control/templates/pretixcontrol/event/settings.html:273 +#: pretix/control/templates/pretixcontrol/event/settings.html:284 msgid "Other settings" msgstr "إعدادات أخرى" -#: pretix/control/templates/pretixcontrol/event/settings.html:280 +#: pretix/control/templates/pretixcontrol/event/settings.html:291 #: pretix/control/templates/pretixcontrol/organizers/edit.html:55 #, fuzzy #| msgid "Voucher link" msgid "Footer links" msgstr "رابط قسيمة" -#: pretix/control/templates/pretixcontrol/event/settings.html:285 +#: pretix/control/templates/pretixcontrol/event/settings.html:296 #: pretix/control/templates/pretixcontrol/organizers/edit.html:60 msgid "" "These links will be shown in the footer of your ticket shop. You could for " @@ -20205,24 +20232,24 @@ msgid "" "do not need to add them here." msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:339 +#: pretix/control/templates/pretixcontrol/event/settings.html:350 #: pretix/control/templates/pretixcontrol/organizers/edit.html:119 #, fuzzy #| msgid "Address line" msgid "Add link" msgstr "العنوان" -#: pretix/control/templates/pretixcontrol/event/settings.html:346 +#: pretix/control/templates/pretixcontrol/event/settings.html:357 msgid "Cart" msgstr "عربة التسوق" -#: pretix/control/templates/pretixcontrol/event/settings.html:354 +#: pretix/control/templates/pretixcontrol/event/settings.html:365 msgid "" "The waiting list currently is not compatible with some advanced features of " "pretix such as hidden products, add-on products or product bundles." msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:360 +#: pretix/control/templates/pretixcontrol/event/settings.html:371 msgid "" "The waiting list determines availability mainly based on quotas. If you use " "a seating plan and your number of available seats is less than the available " @@ -20230,29 +20257,29 @@ msgid "" "waiting list but still are unable to book a seat." msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:367 +#: pretix/control/templates/pretixcontrol/event/settings.html:378 msgid "" "Specifically, this means the waiting list is not safe to use together with " "the minimum distance feature of our seating plan module." msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:378 +#: pretix/control/templates/pretixcontrol/event/settings.html:399 #, fuzzy #| msgid "Waiting" msgid "Waiting customers" msgstr "انتظار" -#: pretix/control/templates/pretixcontrol/event/settings.html:384 +#: pretix/control/templates/pretixcontrol/event/settings.html:405 #, fuzzy #| msgid "Enable waiting list" msgid "Manage waiting list" msgstr "تمكين قائمة الانتظار" -#: pretix/control/templates/pretixcontrol/event/settings.html:397 +#: pretix/control/templates/pretixcontrol/event/settings.html:418 msgid "Item metadata" msgstr "عنصر بيانات وصفية" -#: pretix/control/templates/pretixcontrol/event/settings.html:399 +#: pretix/control/templates/pretixcontrol/event/settings.html:420 msgid "" "You can here define a set of metadata properties (i.e. variables) that you " "can later set for your items and re-use in places like ticket layouts. This " @@ -20262,19 +20289,19 @@ msgstr "" "لاحقا للوحدات أو تعيد استخدامها في أماكن مثل تخطيطات التذاكر. وهذا الخيار " "سيكون منقذا ومفيدا إذا قمت بإنشاء الكثير والكثير من الوحدات." -#: pretix/control/templates/pretixcontrol/event/settings.html:419 -#: pretix/control/templates/pretixcontrol/event/settings.html:447 +#: pretix/control/templates/pretixcontrol/event/settings.html:440 +#: pretix/control/templates/pretixcontrol/event/settings.html:468 #: pretix/control/templates/pretixcontrol/organizers/properties.html:22 #, fuzzy #| msgid "Add property" msgid "Property" msgstr "إضافة خاصية" -#: pretix/control/templates/pretixcontrol/event/settings.html:466 +#: pretix/control/templates/pretixcontrol/event/settings.html:487 msgid "Add property" msgstr "إضافة خاصية" -#: pretix/control/templates/pretixcontrol/event/settings.html:484 +#: pretix/control/templates/pretixcontrol/event/settings.html:505 #: pretix/control/templates/pretixcontrol/events/index.html:165 #: pretix/control/templates/pretixcontrol/organizers/detail.html:130 msgid "Clone event" @@ -20406,7 +20433,7 @@ msgid "excl. %(rate)s %%" msgstr "بما في ذلك%(rate)s%%" #: pretix/control/templates/pretixcontrol/event/tickets.html:8 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:13 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:14 #: pretix/presale/templates/pretixpresale/event/fragment_downloads.html:7 #: pretix/presale/templates/pretixpresale/event/fragment_downloads.html:40 msgid "Ticket download" @@ -20525,7 +20552,7 @@ msgstr "إنشاء منظم جديد" #: pretix/control/templates/pretixcontrol/organizers/create.html:11 #: pretix/control/templates/pretixcontrol/organizers/team_edit.html:19 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:384 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:30 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:31 #: pretix/control/templates/pretixcontrol/subevents/detail.html:23 msgid "General information" msgstr "معلومات عامة" @@ -21558,13 +21585,13 @@ msgstr "محفوظة بالكامل" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:107 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:35 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:71 -#: pretix/presale/views/widget.py:456 +#: pretix/presale/views/widget.py:449 msgid "Sold out" msgstr "بيعت كلها" #: pretix/control/templates/pretixcontrol/items/index.html:7 #: pretix/control/templates/pretixcontrol/order/index.html:19 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:7 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:8 msgid "taxes" msgstr "الضرائب" @@ -21636,8 +21663,8 @@ msgstr "لا يمكن إلا أن يكون اشترى استخدام قسيمة" #: pretix/control/templates/pretixcontrol/items/index.html:149 #: pretix/control/templates/pretixcontrol/order/index.html:616 #: pretix/control/templates/pretixcontrol/order/index.html:656 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:359 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:414 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:360 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:415 #, python-format msgid "plus %(rate)s%% %(taxname)s" msgstr " زائد %(rate)s%% %(taxname)s" @@ -21645,8 +21672,8 @@ msgstr " زائد %(rate)s%% %(taxname)s" #: pretix/control/templates/pretixcontrol/items/index.html:153 #: pretix/control/templates/pretixcontrol/order/index.html:626 #: pretix/control/templates/pretixcontrol/order/index.html:666 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:369 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:424 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:370 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:425 #, python-format msgid "incl. %(rate)s%% %(taxname)s" msgstr "بما في ذلك %(rate)s%% %(taxname)s" @@ -21687,10 +21714,18 @@ msgid "Count" msgstr "احسب" #: pretix/control/templates/pretixcontrol/items/question.html:92 -msgid "Percentage" -msgstr "" +#, fuzzy, python-format +#| msgid "Copy answers" +msgid "%% of answers" +msgstr "انسخ الإجابات" -#: pretix/control/templates/pretixcontrol/items/question.html:110 +#: pretix/control/templates/pretixcontrol/items/question.html:93 +#, fuzzy, python-format +#| msgid "Number of tickets" +msgid "%% of tickets" +msgstr "عدد التذاكر" + +#: pretix/control/templates/pretixcontrol/items/question.html:112 #: pretix/control/templates/pretixcontrol/order/transactions.html:67 #: pretix/plugins/reports/accountingreport.py:408 #: pretix/plugins/reports/accountingreport.py:441 @@ -21698,7 +21733,7 @@ msgstr "" msgid "Sum" msgstr "" -#: pretix/control/templates/pretixcontrol/items/question.html:122 +#: pretix/control/templates/pretixcontrol/items/question.html:125 msgid "Question history" msgstr "سؤال التاريخ" @@ -22253,7 +22288,7 @@ msgstr "حتى تاريخ" #: pretix/control/templates/pretixcontrol/order/change.html:247 #: pretix/control/templates/pretixcontrol/order/index.html:455 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:106 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:107 #, fuzzy, python-format #| msgid "Admission: %(datetime)s" msgid "Valid from %(datetime)s" @@ -22261,7 +22296,7 @@ msgstr "القبول: %(datetime)s" #: pretix/control/templates/pretixcontrol/order/change.html:255 #: pretix/control/templates/pretixcontrol/order/index.html:459 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:110 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:111 #, fuzzy, python-format #| msgid "Admission: %(datetime)s" msgid "Valid until %(datetime)s" @@ -22346,13 +22381,13 @@ msgstr "المعلومات تغيير النظام" #: pretix/control/templates/pretixcontrol/order/change_questions.html:25 #: pretix/control/templates/pretixcontrol/order/index.html:940 #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:75 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:34 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:35 #: pretix/presale/templates/pretixpresale/event/order_modify.html:29 msgid "Invoice information" msgstr "معلومات الفاتورة" #: pretix/control/templates/pretixcontrol/order/change_questions.html:26 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:35 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:36 #: pretix/presale/templates/pretixpresale/event/order_modify.html:30 msgid "(optional)" msgstr "(اختياري)" @@ -22613,7 +22648,7 @@ msgid "Entry scan: %(date)s" msgstr "الممسوحة ضوئيا أولا: %(date)s" #: pretix/control/templates/pretixcontrol/order/index.html:420 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:54 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:55 msgid "Voucher code used:" msgstr "كود القسيمة المستخدمة:" @@ -22631,7 +22666,7 @@ msgid "" msgstr "" #: pretix/control/templates/pretixcontrol/order/index.html:451 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:102 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:103 #, fuzzy, python-format #| msgid "Admission: %(datetime)s" msgid "Valid %(datetime_range)s" @@ -22649,8 +22684,8 @@ msgstr "كلمة سر الزبون" #: pretix/control/templates/pretixcontrol/order/index.html:560 #: pretix/control/templates/pretixcontrol/order/index.html:598 #: pretix/control/templates/pretixcontrol/order/index.html:605 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:227 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:233 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:228 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:234 msgid "not answered" msgstr "بلا جواب" @@ -22671,7 +22706,7 @@ msgid "UNSAFE" msgstr "UNSAFE" #: pretix/control/templates/pretixcontrol/order/index.html:687 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:452 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:453 msgid "Taxes" msgstr "الضرائب" @@ -22683,7 +22718,7 @@ msgstr "الضرائب" #: pretix/plugins/reports/exporters.py:435 #: pretix/plugins/reports/exporters.py:627 #: pretix/plugins/reports/exporters.py:957 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:464 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:465 msgid "Total" msgstr "المجموع" @@ -22781,7 +22816,7 @@ msgstr "تاريخ الطلب" #: pretix/control/templates/pretixcontrol/order/mail_history.html:4 #: pretix/control/templates/pretixcontrol/order/mail_history.html:7 -#: pretix/plugins/sendmail/signals.py:109 +#: pretix/plugins/sendmail/signals.py:110 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/history.html:4 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/history.html:6 msgid "Email history" @@ -23030,7 +23065,7 @@ msgstr "ما يجب أن يحدث للنظام؟" #: pretix/control/templates/pretixcontrol/order/sendmail.html:4 #: pretix/control/templates/pretixcontrol/order/sendmail.html:7 -#: pretix/plugins/sendmail/signals.py:93 +#: pretix/plugins/sendmail/signals.py:94 msgid "Send email" msgstr "ارسل بريد الكتروني" @@ -23153,7 +23188,7 @@ msgstr "خيارات الإجابة" #: pretix/control/templates/pretixcontrol/orders/cancel.html:49 #: pretix/control/templates/pretixcontrol/vouchers/bulk.html:85 #: pretix/plugins/sendmail/apps.py:30 pretix/plugins/sendmail/apps.py:33 -#: pretix/plugins/sendmail/signals.py:85 +#: pretix/plugins/sendmail/signals.py:86 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/index.html:3 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/index.html:5 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/send_form.html:5 @@ -23800,7 +23835,7 @@ msgstr "عنوان البريد الإلكتروني التحقق منها" #: pretix/control/templates/pretixcontrol/organizers/giftcards.html:95 #: pretix/control/templates/pretixcontrol/organizers/reusable_media.html:102 #: pretix/control/templates/pretixcontrol/organizers/reusable_medium.html:21 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:389 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:390 #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:114 #: pretix/presale/templates/pretixpresale/organizers/customer_memberships.html:95 #: pretix/presale/templates/pretixpresale/organizers/customer_orders.html:66 @@ -23963,7 +23998,7 @@ msgid "Change multiple devices" msgstr "إنشاء عدة تواريخ" #: pretix/control/templates/pretixcontrol/organizers/device_bulk_edit.html:8 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:13 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:14 #, python-format msgid "%(number)s selected" msgstr "%(number)s تم اختيارها" @@ -25571,7 +25606,7 @@ msgid "Add many time slots" msgstr "إضافة نوع تذكرة جديدة" #: pretix/control/templates/pretixcontrol/subevents/bulk.html:481 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:264 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:266 #: pretix/control/templates/pretixcontrol/subevents/detail.html:124 msgid "Add a new quota" msgstr "إضافة حصة جديدة" @@ -25604,13 +25639,13 @@ msgid "" msgstr "" #: pretix/control/templates/pretixcontrol/subevents/bulk.html:600 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:357 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:359 #: pretix/control/templates/pretixcontrol/subevents/detail.html:243 msgid "Add a new check-in list" msgstr "إضافة الاختيار في قائمة جديدة" -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:8 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:11 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:9 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:12 #, fuzzy #| msgctxt "subevent" #| msgid "Create multiple dates" @@ -25618,24 +25653,45 @@ msgctxt "subevent" msgid "Change multiple dates" msgstr "إنشاء عدة تواريخ" -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:153 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:154 msgid "Item prices" msgstr "أسعار البند" -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:187 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:197 +#, fuzzy +#| msgid "You cannot select a quota that belongs to a different event." +msgid "You selected a set of dates that currently have different quota setups." +msgstr "لا يمكنك تحديد حصة تنتمي إلى فعالية مختلفة." + +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:198 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:373 msgid "" -"You selected a set of dates that currently have different quota setups. You " -"can therefore not change their quotas in bulk. If you want, you can set up a " -"new set of quotas to replace the quota setup of all " -"selected dates." +"Using this option will delete all current quotas from " +"all selected dates." msgstr "" -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:275 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:277 msgid "" "You selected a set of dates that currently have different check-in list " "setups. You can therefore not change their check-in lists in bulk." msgstr "" +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:372 +#, fuzzy +#| msgid "Add to existing quota" +msgid "Delete existing quotas" +msgstr "إضافة إلى الحصص الحالية" + +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:374 +msgid "This cannot be reverted. Are you sure to proceed?" +msgstr "" + +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:381 +#, fuzzy +#| msgid "Process refund" +msgid "Proceed" +msgstr "عملية استرداد الأموال" + #: pretix/control/templates/pretixcontrol/subevents/delete.html:4 #: pretix/control/templates/pretixcontrol/subevents/delete.html:6 msgctxt "subevent" @@ -26828,10 +26884,10 @@ msgstr "تم إنشاء الاختيار في قائمة جديدة." #: pretix/control/views/event.py:590 pretix/control/views/event.py:737 #: pretix/control/views/event.py:929 pretix/control/views/event.py:1287 #: pretix/control/views/event.py:1353 pretix/control/views/event.py:1461 -#: pretix/control/views/item.py:279 pretix/control/views/item.py:326 -#: pretix/control/views/item.py:799 pretix/control/views/item.py:825 -#: pretix/control/views/item.py:945 pretix/control/views/item.py:1149 -#: pretix/control/views/item.py:1315 pretix/control/views/item.py:1500 +#: pretix/control/views/item.py:280 pretix/control/views/item.py:327 +#: pretix/control/views/item.py:805 pretix/control/views/item.py:831 +#: pretix/control/views/item.py:951 pretix/control/views/item.py:1155 +#: pretix/control/views/item.py:1321 pretix/control/views/item.py:1506 #: pretix/control/views/organizer.py:263 pretix/control/views/organizer.py:291 #: pretix/control/views/organizer.py:1188 pretix/control/views/subevents.py:504 #: pretix/control/views/subevents.py:630 pretix/control/views/subevents.py:1039 @@ -26939,7 +26995,7 @@ msgstr "اقامة الحدث" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:116 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:47 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:79 -#: pretix/presale/views/widget.py:470 +#: pretix/presale/views/widget.py:463 msgid "Sale over" msgstr "انتهت فترة البيع" @@ -26947,7 +27003,7 @@ msgstr "انتهت فترة البيع" #: pretix/presale/templates/pretixpresale/fragment_calendar.html:119 #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:123 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:86 -#: pretix/presale/views/widget.py:480 +#: pretix/presale/views/widget.py:473 msgid "Soon" msgstr "هكذا" @@ -26994,8 +27050,8 @@ msgstr "تم إنشاء الموعد الجديد." msgid "The order of discounts has been updated." msgstr "تم تحديث ترتيب العناصر." -#: pretix/control/views/discounts.py:260 pretix/control/views/item.py:189 -#: pretix/control/views/item.py:401 pretix/control/views/item.py:535 +#: pretix/control/views/discounts.py:260 pretix/control/views/item.py:190 +#: pretix/control/views/item.py:402 pretix/control/views/item.py:536 #: pretix/control/views/organizer.py:2272 #: pretix/control/views/organizer.py:3330 #, fuzzy @@ -27063,8 +27119,8 @@ msgstr "طلبك هو: {code}" msgid "Unknown email renderer." msgstr "غير معروف العارض البريد الإلكتروني." -#: pretix/control/views/event.py:876 pretix/control/views/orders.py:692 -#: pretix/presale/views/order.py:1086 pretix/presale/views/order.py:1093 +#: pretix/control/views/event.py:876 pretix/control/views/orders.py:693 +#: pretix/presale/views/order.py:1088 pretix/presale/views/order.py:1095 msgid "You requested an invalid ticket output type." msgstr "لقد طلبت صالح نوع الانتاج التذاكر." @@ -27115,11 +27171,11 @@ msgid "" "event: {plugin_names}" msgstr "" -#: pretix/control/views/event.py:1207 pretix/control/views/orders.py:781 +#: pretix/control/views/event.py:1207 pretix/control/views/orders.py:782 msgid "The comment has been updated." msgstr "تم تحديث التعليق." -#: pretix/control/views/event.py:1209 pretix/control/views/orders.py:783 +#: pretix/control/views/event.py:1209 pretix/control/views/orders.py:784 msgid "Could not update the comment." msgstr "لا يمكن تحديث للتعليق." @@ -27239,32 +27295,32 @@ msgid "" "plugin \"{plugin}\" with license \"{license}\"." msgstr "" -#: pretix/control/views/item.py:138 pretix/control/views/item.py:1594 +#: pretix/control/views/item.py:139 pretix/control/views/item.py:1600 msgid "The requested product does not exist." msgstr "المنتج المطلوب غير موجود." -#: pretix/control/views/item.py:156 +#: pretix/control/views/item.py:157 msgid "The order of items has been updated." msgstr "تم تحديث ترتيب العناصر." -#: pretix/control/views/item.py:224 pretix/control/views/item.py:259 -#: pretix/control/views/item.py:350 +#: pretix/control/views/item.py:225 pretix/control/views/item.py:260 +#: pretix/control/views/item.py:351 msgid "The requested product category does not exist." msgstr "لا وجود فئة من فئات المنتجات المطلوبة." -#: pretix/control/views/item.py:235 +#: pretix/control/views/item.py:236 msgid "The selected category has been deleted." msgstr "تم حذف الفئة المختارة." -#: pretix/control/views/item.py:320 +#: pretix/control/views/item.py:321 msgid "The new category has been created." msgstr "تم إنشاء فئة جديدة." -#: pretix/control/views/item.py:368 +#: pretix/control/views/item.py:369 msgid "The order of categories has been updated." msgstr "تم تحديث ترتيب الفئات." -#: pretix/control/views/item.py:404 pretix/control/views/item.py:538 +#: pretix/control/views/item.py:405 pretix/control/views/item.py:539 #: pretix/control/views/organizer.py:2275 #: pretix/control/views/organizer.py:3333 #, fuzzy @@ -27272,86 +27328,86 @@ msgstr "تم تحديث ترتيب الفئات." msgid "Not all objects have been selected." msgstr "تم حذف السؤال." -#: pretix/control/views/item.py:477 +#: pretix/control/views/item.py:478 #, fuzzy #| msgid "Street address" msgid "Street" msgstr "عنوان الشارع" -#: pretix/control/views/item.py:579 pretix/control/views/item.py:753 -#: pretix/control/views/item.py:775 +#: pretix/control/views/item.py:580 pretix/control/views/item.py:759 +#: pretix/control/views/item.py:781 msgid "The requested question does not exist." msgstr "عدم وجود مسألة المطلوبة." -#: pretix/control/views/item.py:597 +#: pretix/control/views/item.py:598 msgid "The selected question has been deleted." msgstr "تم حذف السؤال المحدد." -#: pretix/control/views/item.py:702 +#: pretix/control/views/item.py:708 msgid "File uploaded" msgstr "ملف مرفوع" -#: pretix/control/views/item.py:834 +#: pretix/control/views/item.py:840 msgid "The new question has been created." msgstr "تم إنشاء سؤالا جديدا." -#: pretix/control/views/item.py:913 +#: pretix/control/views/item.py:919 msgid "The new quota has been created." msgstr "تم إنشاء نظام الحصص الجديدة." -#: pretix/control/views/item.py:976 +#: pretix/control/views/item.py:982 #, fuzzy #| msgid "First scanned: %(date)s" msgid "Exit scans" msgstr "الممسوحة ضوئيا أولا: %(date)s" -#: pretix/control/views/item.py:983 +#: pretix/control/views/item.py:989 msgid "Vouchers and waiting list reservations" msgstr "القسائم وانتظار التحفظات القائمة" -#: pretix/control/views/item.py:998 +#: pretix/control/views/item.py:1004 msgid "Available quota" msgstr "الحصة المتاحة" -#: pretix/control/views/item.py:1004 +#: pretix/control/views/item.py:1010 msgid "Waiting list (pending)" msgstr "قائمة الانتظار (انتظار)" -#: pretix/control/views/item.py:1011 +#: pretix/control/views/item.py:1017 msgid "Currently for sale" msgstr "للبيع حاليا" -#: pretix/control/views/item.py:1065 pretix/control/views/item.py:1111 -#: pretix/control/views/item.py:1165 +#: pretix/control/views/item.py:1071 pretix/control/views/item.py:1117 +#: pretix/control/views/item.py:1171 msgid "The requested quota does not exist." msgstr "عدم وجود الحصص المطلوبة." -#: pretix/control/views/item.py:1086 +#: pretix/control/views/item.py:1092 msgid "The quota has been re-opened and will not close again." msgstr "وكانت الحصة إعادة فتحها وسوف يتم إغلاق مرة أخرى." -#: pretix/control/views/item.py:1179 +#: pretix/control/views/item.py:1185 msgid "The selected quota has been deleted." msgstr "تم حذف حصص المحدد." -#: pretix/control/views/item.py:1202 +#: pretix/control/views/item.py:1208 msgid "The requested item does not exist." msgstr "عدم وجود العنصر المطلوب." -#: pretix/control/views/item.py:1374 +#: pretix/control/views/item.py:1380 msgid "" "You cannot add add-ons to a product that is only available as an add-on " "itself." msgstr "" "لا يمكنك إضافة من الإضافات إلى المنتجات التي لا تتوفر إلا كإضافة على نفسها." -#: pretix/control/views/item.py:1384 +#: pretix/control/views/item.py:1390 msgid "" "You cannot add bundles to a product that is only available as an add-on " "itself." msgstr "لا يمكنك إضافة حزم إلى المنتجات التي لا تتوفر إلا كإضافة على نفسها." -#: pretix/control/views/item.py:1516 +#: pretix/control/views/item.py:1522 msgid "" "You disabled this item, but it is still part of a product bundle. Your " "participants won't be able to buy the bundle unless you remove this item " @@ -27360,7 +27416,7 @@ msgstr "" "قمت بتعطيل هذا البند، لكنه لا يزال جزءا من حزمة المنتج. سيقوم المشاركون " "الخاصة بك لن تكون قادرة على شراء حزمة إلا إذا قمت بإزالة هذا البند من ذلك." -#: pretix/control/views/item.py:1614 +#: pretix/control/views/item.py:1620 #, fuzzy #| msgid "" #| "The order could not be deleted as some constraints (e.g. data created by " @@ -27373,11 +27429,11 @@ msgstr "" "لا يمكن حذف النظام كما بعض القيود (مثل البيانات التي تم إنشاؤها من قبل " "المكونات الإضافية) لا تسمح بذلك." -#: pretix/control/views/item.py:1618 +#: pretix/control/views/item.py:1624 msgid "The selected product has been deleted." msgstr "تم حذف المنتج المحدد." -#: pretix/control/views/item.py:1627 +#: pretix/control/views/item.py:1633 msgid "The selected product has been deactivated." msgstr "تم إلغاء تنشيط المنتج المحدد." @@ -27498,7 +27554,7 @@ msgid "" "Successfully executed the action \"{label}\" on {success} of {total} orders." msgstr "" -#: pretix/control/views/orders.py:556 +#: pretix/control/views/orders.py:557 #, fuzzy #| msgid "All invoices" msgid "Your invoice" @@ -27510,7 +27566,7 @@ msgstr[3] "جميع الفواتير" msgstr[4] "جميع الفواتير" msgstr[5] "جميع الفواتير" -#: pretix/control/views/orders.py:558 +#: pretix/control/views/orders.py:559 #, python-brace-format msgid "" "Hello,\n" @@ -27531,28 +27587,28 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: pretix/control/views/orders.py:694 pretix/plugins/banktransfer/views.py:901 +#: pretix/control/views/orders.py:695 pretix/plugins/banktransfer/views.py:901 #: pretix/presale/views/order.py:158 pretix/presale/views/order.py:240 #: pretix/presale/views/order.py:334 pretix/presale/views/order.py:361 #: pretix/presale/views/order.py:429 pretix/presale/views/order.py:496 -#: pretix/presale/views/order.py:542 pretix/presale/views/order.py:726 -#: pretix/presale/views/order.py:839 pretix/presale/views/order.py:911 -#: pretix/presale/views/order.py:926 pretix/presale/views/order.py:975 -#: pretix/presale/views/order.py:980 pretix/presale/views/order.py:1095 -#: pretix/presale/views/order.py:1268 pretix/presale/views/order.py:1660 -#: pretix/presale/views/order.py:1691 +#: pretix/presale/views/order.py:542 pretix/presale/views/order.py:728 +#: pretix/presale/views/order.py:841 pretix/presale/views/order.py:913 +#: pretix/presale/views/order.py:928 pretix/presale/views/order.py:977 +#: pretix/presale/views/order.py:982 pretix/presale/views/order.py:1097 +#: pretix/presale/views/order.py:1270 pretix/presale/views/order.py:1662 +#: pretix/presale/views/order.py:1693 msgid "Unknown order code or not authorized to access this order." msgstr "كود أجل غير معروف أو غير مخول للوصول إلى هذا النظام." -#: pretix/control/views/orders.py:696 pretix/presale/views/order.py:1100 +#: pretix/control/views/orders.py:697 pretix/presale/views/order.py:1102 msgid "Ticket download is not enabled for this product." msgstr "لم يتم تمكين حمل تذكرة لهذا المنتج." -#: pretix/control/views/orders.py:817 +#: pretix/control/views/orders.py:818 msgid "The order has been deleted." msgstr "تم حذف هذا الأمر." -#: pretix/control/views/orders.py:824 +#: pretix/control/views/orders.py:825 msgid "" "The order could not be deleted as some constraints (e.g. data created by " "plug-ins) do not allow it." @@ -27560,55 +27616,55 @@ msgstr "" "لا يمكن حذف النظام كما بعض القيود (مثل البيانات التي تم إنشاؤها من قبل " "المكونات الإضافية) لا تسمح بذلك." -#: pretix/control/views/orders.py:832 +#: pretix/control/views/orders.py:833 msgid "Only orders created in test mode can be deleted." msgstr "أوامر الوحيدة التي تم إنشاؤها في وضع الاختبار يمكن حذفها." -#: pretix/control/views/orders.py:853 +#: pretix/control/views/orders.py:854 msgid "The order has been denied and is therefore now canceled." msgstr "تم رفض الطلب، وبالتالي يتم إلغاء الآن." -#: pretix/control/views/orders.py:893 +#: pretix/control/views/orders.py:894 msgid "This payment has been canceled." msgstr "تم إلغاء هذا الدفع." -#: pretix/control/views/orders.py:895 +#: pretix/control/views/orders.py:896 msgid "This payment can not be canceled at the moment." msgstr "لا يمكن إلغاء هذه الدفعة في الوقت الراهن." -#: pretix/control/views/orders.py:921 +#: pretix/control/views/orders.py:922 msgid "The refund has been canceled." msgstr "تم إلغاء استرداد." -#: pretix/control/views/orders.py:923 +#: pretix/control/views/orders.py:924 msgid "This refund can not be canceled at the moment." msgstr "لا يمكن إلغاء هذا رد في الوقت الراهن." -#: pretix/control/views/orders.py:957 +#: pretix/control/views/orders.py:958 msgid "The refund has been processed." msgstr "تم معالجة استرداد." -#: pretix/control/views/orders.py:959 pretix/control/views/orders.py:985 +#: pretix/control/views/orders.py:960 pretix/control/views/orders.py:986 msgid "This refund can not be processed at the moment." msgstr "لا يمكن معالجة هذا رد في الوقت الراهن." -#: pretix/control/views/orders.py:983 +#: pretix/control/views/orders.py:984 msgid "The refund has been marked as done." msgstr "تم وضع علامة على المبلغ في القيام به." -#: pretix/control/views/orders.py:1009 +#: pretix/control/views/orders.py:1010 #, fuzzy #| msgid "The device has been verified and can now be used." msgid "The request has been removed. If you want, you can now inform the user." msgstr "تم التحقق من الجهاز ويمكن الآن أن تستخدم." -#: pretix/control/views/orders.py:1016 +#: pretix/control/views/orders.py:1017 #, fuzzy #| msgid "Cancellation fee" msgid "Your cancellation request" msgstr "رسوم الإلغاء" -#: pretix/control/views/orders.py:1017 +#: pretix/control/views/orders.py:1018 #, python-brace-format msgid "" "Hello,\n" @@ -27624,7 +27680,7 @@ msgstr "" "\n" "فريق فعاليتك{event}" -#: pretix/control/views/orders.py:1073 +#: pretix/control/views/orders.py:1074 msgid "" "The payment has been marked as complete, but we were unable to send a " "confirmation mail." @@ -27632,41 +27688,41 @@ msgstr "" "تم وضع علامة الدفع على النحو الكامل، ولكن لم نتمكن من إرسال البريد " "الإلكتروني تأكيد." -#: pretix/control/views/orders.py:1076 +#: pretix/control/views/orders.py:1077 msgid "The payment has been marked as complete." msgstr "تم وضع علامة الدفع على النحو الكامل." -#: pretix/control/views/orders.py:1078 +#: pretix/control/views/orders.py:1079 msgid "This payment can not be confirmed at the moment." msgstr "لا يمكن تأكيد هذه الدفعة في الوقت الراهن." -#: pretix/control/views/orders.py:1169 +#: pretix/control/views/orders.py:1170 msgid "" "The refund was prevented due to a refund already being processed at the same " "time. Please have a look at the order details and check if your refund is " "still necessary." msgstr "" -#: pretix/control/views/orders.py:1269 +#: pretix/control/views/orders.py:1270 #, fuzzy #| msgid "You entered an order that could not be found." msgid "You entered an order in an event with a different currency." msgstr "لقد أدخلت طلبا لا يمكن العثور عليه." -#: pretix/control/views/orders.py:1320 +#: pretix/control/views/orders.py:1321 msgid "" "You can not refund more than the amount of a payment that is not yet " "refunded." msgstr "لا يمكنك استرداد أكثر من مبلغ الدفعة التي لم يتم ردها حتى الان." -#: pretix/control/views/orders.py:1325 +#: pretix/control/views/orders.py:1326 msgid "" "You selected a partial refund for a payment method that only supports full " "refunds." msgstr "" "لقد حددت استرداد جزئي لطريقة الدفع التي تدعم فقط المبالغ المستردة كامل." -#: pretix/control/views/orders.py:1355 +#: pretix/control/views/orders.py:1356 msgid "" "One of the refunds failed to be processed. You should retry to refund in a " "different way. The error message was: {}" @@ -27674,11 +27730,11 @@ msgstr "" "فشل في معالجتها واحدة من المبالغ المستردة. يجب عليك إعادة المحاولة لاسترداد " "بطريقة مختلفة. وكانت رسالة الخطأ: {}" -#: pretix/control/views/orders.py:1361 +#: pretix/control/views/orders.py:1362 msgid "A refund of {} has been processed." msgstr "وقد تم تجهيز واسترداد {}." -#: pretix/control/views/orders.py:1365 +#: pretix/control/views/orders.py:1366 msgid "" "A refund of {} has been saved, but not yet fully executed. You can mark it " "as complete below." @@ -27686,16 +27742,16 @@ msgstr "" "تم حفظ استرداد {}، ولكن لم يتم تنفيذها بالكامل. يمكنك وضع علامة على أنها " "كاملة أدناه." -#: pretix/control/views/orders.py:1394 +#: pretix/control/views/orders.py:1395 msgid "" "A new gift card was created. You can now send the user their gift card code." msgstr "" -#: pretix/control/views/orders.py:1402 +#: pretix/control/views/orders.py:1403 msgid "Your gift card code" msgstr "" -#: pretix/control/views/orders.py:1404 +#: pretix/control/views/orders.py:1405 #, python-brace-format msgid "" "Hello,\n" @@ -27708,22 +27764,22 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/control/views/orders.py:1415 +#: pretix/control/views/orders.py:1416 msgid "The refunds you selected do not match the selected total refund amount." msgstr "المبالغ المستردة التي حددتها لا تتطابق إجمالي استرداد المبلغ المحدد." -#: pretix/control/views/orders.py:1543 +#: pretix/control/views/orders.py:1544 msgid "" "The order has been marked as paid, but we were unable to send a confirmation " "mail." msgstr "" "تم وضع علامة على النظام ودفع، ولكن لم نتمكن من إرسال البريد الإلكتروني تأكيد." -#: pretix/control/views/orders.py:1546 +#: pretix/control/views/orders.py:1547 msgid "The payment has been created successfully." msgstr "تم إنشاء دفع بنجاح." -#: pretix/control/views/orders.py:1560 +#: pretix/control/views/orders.py:1561 msgid "" "The order has been canceled. You can now select how you want to transfer the " "money back to the user." @@ -27731,22 +27787,22 @@ msgstr "" "تم إلغاء هذا الأمر. يمكنك الآن تحديد كيف تريد لنقل الجزء الخلفي المال " "للمستخدم." -#: pretix/control/views/orders.py:1631 pretix/control/views/orders.py:1635 +#: pretix/control/views/orders.py:1632 pretix/control/views/orders.py:1636 msgid "No VAT ID specified." msgstr "يتم تحديد معرف ضريبة القيمة المضافة." -#: pretix/control/views/orders.py:1639 +#: pretix/control/views/orders.py:1640 msgid "No country specified." msgstr "تحديد أي بلد." -#: pretix/control/views/orders.py:1643 +#: pretix/control/views/orders.py:1644 #, fuzzy #| msgid "" #| "VAT ID could not be checked since a non-EU country has been specified." msgid "VAT ID could not be checked since this country is not supported." msgstr "ولم يتسن التحقق VAT ID منذ تم تحديد بلد خارج الاتحاد الأوروبي." -#: pretix/control/views/orders.py:1654 +#: pretix/control/views/orders.py:1655 msgid "" "The VAT ID could not be checked, as the VAT checking service of the country " "is currently not available." @@ -27754,51 +27810,51 @@ msgstr "" "ولم يتسن التحقق من هوية ضريبة القيمة المضافة، مثل خدمة فحص ضريبة القيمة " "المضافة من البلاد غير متوفرة حاليا." -#: pretix/control/views/orders.py:1657 +#: pretix/control/views/orders.py:1658 msgid "This VAT ID is valid." msgstr "هذا ID VAT صالح." -#: pretix/control/views/orders.py:1671 pretix/control/views/orders.py:1704 +#: pretix/control/views/orders.py:1672 pretix/control/views/orders.py:1705 msgid "Unknown invoice." msgstr "فاتورة غير معروفة." -#: pretix/control/views/orders.py:1674 +#: pretix/control/views/orders.py:1675 msgid "Invoices may not be changed after they are created." msgstr "" -#: pretix/control/views/orders.py:1676 pretix/control/views/orders.py:1707 +#: pretix/control/views/orders.py:1677 pretix/control/views/orders.py:1708 msgid "The invoice has already been canceled." msgstr "وقد تم بالفعل إلغاء الفاتورة." -#: pretix/control/views/orders.py:1678 +#: pretix/control/views/orders.py:1679 #, fuzzy #| msgid "The invoice has already been canceled." msgid "The invoice file has already been exported." msgstr "وقد تم بالفعل إلغاء الفاتورة." -#: pretix/control/views/orders.py:1680 +#: pretix/control/views/orders.py:1681 #, fuzzy #| msgid "The invoice has been regenerated." msgid "The invoice file is too old to be regenerated." msgstr "تم إعادة إنشاء الفاتورة." -#: pretix/control/views/orders.py:1682 pretix/control/views/orders.py:1709 +#: pretix/control/views/orders.py:1683 pretix/control/views/orders.py:1710 msgid "The invoice has been cleaned of personal data." msgstr "وقد تم تنظيف الفاتورة البيانات الشخصية." -#: pretix/control/views/orders.py:1740 +#: pretix/control/views/orders.py:1741 msgid "The email has been queued to be sent." msgstr "وقد تم في قائمة الانتظار البريد الإلكتروني لإرسالها." -#: pretix/control/views/orders.py:1764 pretix/presale/views/order.py:1277 +#: pretix/control/views/orders.py:1765 pretix/presale/views/order.py:1279 msgid "This invoice has not been found" msgstr "لم يتم العثور على هذه الفاتورة" -#: pretix/control/views/orders.py:1771 pretix/presale/views/order.py:1284 +#: pretix/control/views/orders.py:1772 pretix/presale/views/order.py:1286 msgid "The invoice file is no longer stored on the server." msgstr "لم يعد تخزين الملف فاتورة على الخادم." -#: pretix/control/views/orders.py:1776 pretix/presale/views/order.py:1289 +#: pretix/control/views/orders.py:1777 pretix/presale/views/order.py:1291 msgid "" "The invoice file has not yet been generated, we will generate it for you " "now. Please try again in a few seconds." @@ -27806,105 +27862,105 @@ msgstr "" "لم يتم إنشاء ملف الفاتورة، وسوف تولد لانها لكم الآن. يرجى المحاولة مرة أخرى " "في بضع ثوان." -#: pretix/control/views/orders.py:1804 +#: pretix/control/views/orders.py:1805 msgid "The payment term has been changed." msgstr "تم تغيير مصطلح الدفع." -#: pretix/control/views/orders.py:1809 pretix/control/views/orders.py:1866 +#: pretix/control/views/orders.py:1810 pretix/control/views/orders.py:1867 msgid "" "We were not able to process the request completely as the server was too " "busy." msgstr "لم نكن قادرين على معالجة الطلب تماما كما كان الملقم مشغول جدا." -#: pretix/control/views/orders.py:1817 +#: pretix/control/views/orders.py:1818 msgid "This action is only allowed for pending orders." msgstr "يسمح هذا الإجراء فقط لانتظار أوامر." -#: pretix/control/views/orders.py:1872 +#: pretix/control/views/orders.py:1873 #, fuzzy #| msgid "This action is only allowed for pending orders." msgid "This action is only allowed for canceled orders." msgstr "يسمح هذا الإجراء فقط لانتظار أوامر." -#: pretix/control/views/orders.py:2129 pretix/presale/views/order.py:1563 +#: pretix/control/views/orders.py:2130 pretix/presale/views/order.py:1565 msgid "An error occurred. Please see the details below." msgstr "حدث خطأ. يرجى الاطلاع على التفاصيل أدناه." -#: pretix/control/views/orders.py:2137 +#: pretix/control/views/orders.py:2138 msgid "The order has been changed and the user has been notified." msgstr "تم تغيير النظام وتم إعلام المستخدم." -#: pretix/control/views/orders.py:2139 pretix/control/views/orders.py:2275 -#: pretix/control/views/orders.py:2312 pretix/presale/views/order.py:1598 +#: pretix/control/views/orders.py:2140 pretix/control/views/orders.py:2276 +#: pretix/control/views/orders.py:2313 pretix/presale/views/order.py:1600 msgid "The order has been changed." msgstr "تم تغيير النظام." -#: pretix/control/views/orders.py:2166 pretix/presale/checkoutflow.py:945 -#: pretix/presale/views/order.py:781 pretix/presale/views/order.py:886 +#: pretix/control/views/orders.py:2167 pretix/presale/checkoutflow.py:945 +#: pretix/presale/views/order.py:783 pretix/presale/views/order.py:888 msgid "" "We had difficulties processing your input. Please review the errors below." msgstr "كان لدينا صعوبات معالجة المدخلات الخاصة بك. يرجى مراجعة الأخطاء أدناه." -#: pretix/control/views/orders.py:2277 +#: pretix/control/views/orders.py:2278 msgid "Nothing about the order had to be changed." msgstr "كان شيئا عن هذا الأمر يجب أن يتغير." -#: pretix/control/views/orders.py:2358 pretix/plugins/sendmail/views.py:176 +#: pretix/control/views/orders.py:2359 pretix/plugins/sendmail/views.py:176 msgid "We could not send the email. See below for details." msgstr "لم نتمكن من إرسال البريد الإلكتروني. انظر أدناه للحصول على التفاصيل." -#: pretix/control/views/orders.py:2374 pretix/control/views/orders.py:2444 +#: pretix/control/views/orders.py:2375 pretix/control/views/orders.py:2445 #: pretix/plugins/sendmail/views.py:204 pretix/plugins/sendmail/views.py:671 #, python-brace-format msgid "Subject: {subject}" msgstr "الموضوع: {subject}" -#: pretix/control/views/orders.py:2393 pretix/control/views/orders.py:2464 +#: pretix/control/views/orders.py:2394 pretix/control/views/orders.py:2465 msgid "Your message has been queued and will be sent to {}." msgstr "وقد اصطف رسالتك وسوف يتم ارسالهم الى {}." -#: pretix/control/views/orders.py:2397 pretix/control/views/orders.py:2467 +#: pretix/control/views/orders.py:2398 pretix/control/views/orders.py:2468 msgid "Failed to send mail to the following user: {}" msgstr "فشل في إرسال البريد الإلكتروني للمستخدم التالية: {}" -#: pretix/control/views/orders.py:2520 pretix/presale/views/order.py:1060 +#: pretix/control/views/orders.py:2521 pretix/presale/views/order.py:1062 msgid "" "This link is no longer valid. Please go back, refresh the page, and try " "again." msgstr "هذا الرابط لم يعد صالحا. يرجى العودة، بتحديث الصفحة وحاول مرة أخرى." -#: pretix/control/views/orders.py:2596 +#: pretix/control/views/orders.py:2597 msgid "There is no order with the given order code." msgstr "لا يوجد أي ترتيب مع رمز ترتيب معين." -#: pretix/control/views/orders.py:2702 pretix/control/views/organizer.py:1805 +#: pretix/control/views/orders.py:2703 pretix/control/views/organizer.py:1805 msgid "The selected exporter was not found." msgstr "لم يتم العثور على مصدر المحدد." -#: pretix/control/views/orders.py:2712 pretix/control/views/organizer.py:1815 +#: pretix/control/views/orders.py:2713 pretix/control/views/organizer.py:1815 msgid "There was a problem processing your input. See below for error details." msgstr "" "كانت هناك مشكلة معالجة المدخلات الخاصة بك. انظر أدناه للحصول على تفاصيل " "الخطأ." -#: pretix/control/views/orders.py:2747 pretix/control/views/organizer.py:1858 +#: pretix/control/views/orders.py:2748 pretix/control/views/organizer.py:1858 #, python-brace-format msgid "" "Your export schedule has been saved. The next export will start around " "{datetime}." msgstr "" -#: pretix/control/views/orders.py:2752 pretix/control/views/organizer.py:1863 +#: pretix/control/views/orders.py:2753 pretix/control/views/organizer.py:1863 msgid "Your export schedule has been saved, but no next export is planned." msgstr "" -#: pretix/control/views/orders.py:2791 pretix/control/views/organizer.py:1903 +#: pretix/control/views/orders.py:2792 pretix/control/views/organizer.py:1903 #, fuzzy, python-brace-format #| msgid "Export date" msgid "Export: {title}" msgstr "تاريخ التصدير" -#: pretix/control/views/orders.py:2792 pretix/control/views/organizer.py:1905 +#: pretix/control/views/orders.py:2793 pretix/control/views/organizer.py:1905 #, python-brace-format msgid "" "Hello,\n" @@ -27912,27 +27968,27 @@ msgid "" "attached to this email, you can find a new scheduled report for {name}." msgstr "" -#: pretix/control/views/orders.py:2860 pretix/control/views/organizer.py:1973 +#: pretix/control/views/orders.py:2861 pretix/control/views/organizer.py:1973 msgid "" "Your export is queued to start soon. The results will be send via email. " "Depending on system load and type and size of export, this may take a few " "minutes." msgstr "" -#: pretix/control/views/orders.py:2939 +#: pretix/control/views/orders.py:2940 #, fuzzy #| msgid "The order has been canceled." msgid "All orders have been canceled." msgstr "تم إلغاء هذا الأمر." -#: pretix/control/views/orders.py:2941 +#: pretix/control/views/orders.py:2942 #, python-brace-format msgid "" "The orders have been canceled. An error occurred with {count} orders, please " "check all uncanceled orders." msgstr "" -#: pretix/control/views/orders.py:2962 +#: pretix/control/views/orders.py:2963 #, fuzzy #| msgid "Your input was invalid, please try again." msgid "Your input was not valid." @@ -28547,7 +28603,7 @@ msgstr "لا وجود إدخال المطلوبة." msgid "The selected entry has been deleted." msgstr "لقد تم حذف الإدخال المحدد." -#: pretix/control/views/waitinglist.py:402 pretix/presale/views/widget.py:418 +#: pretix/control/views/waitinglist.py:402 pretix/presale/views/widget.py:411 msgid "This is not an event series." msgstr "هذه ليست سلسلة فعالية." @@ -30120,7 +30176,9 @@ msgid "Upload time" msgstr "وقت التنزيل" #: pretix/plugins/checkinlists/exporters.py:826 -#: pretix/presale/templates/pretixpresale/fragment_modals.html:144 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:519 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:52 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:148 msgid "OK" msgstr "" @@ -30695,7 +30753,7 @@ msgid "Please turn on JavaScript." msgstr "حاول مرة اخرى." #: pretix/plugins/paypal2/templates/pretixplugins/paypal2/pay.html:29 -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:55 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:56 msgid "Please select how you want to pay." msgstr "يرجى اختيار طريقة الدفع." @@ -31331,63 +31389,69 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: pretix/plugins/sendmail/signals.py:101 +#: pretix/plugins/sendmail/signals.py:102 #, fuzzy #| msgid "Attendee email" msgid "Scheduled emails" msgstr "البريد الإلكتروني للحاضر" -#: pretix/plugins/sendmail/signals.py:121 +#: pretix/plugins/sendmail/signals.py:122 #, fuzzy #| msgid "A custom email has been sent to an attendee." msgid "Mass email was sent to customers or attendees." msgstr "تم إرسال البريد الإلكتروني المخصص لحاضر." -#: pretix/plugins/sendmail/signals.py:122 +#: pretix/plugins/sendmail/signals.py:123 #, fuzzy #| msgid "A custom email has been sent to an attendee." msgid "Mass email was sent to waiting list entries." msgstr "تم إرسال البريد الإلكتروني المخصص لحاضر." -#: pretix/plugins/sendmail/signals.py:127 +#: pretix/plugins/sendmail/signals.py:128 msgid "The order received a mass email." msgstr "تلقى الطلب قدرا كبيرا من رسائل البريد الإلكتروني." -#: pretix/plugins/sendmail/signals.py:128 +#: pretix/plugins/sendmail/signals.py:129 msgid "A ticket holder of this order received a mass email." msgstr "تلقى مالك تذكرة هذا الطلب قدرا كبيرا من رسائل البريد الإلكتروني." -#: pretix/plugins/sendmail/signals.py:133 +#: pretix/plugins/sendmail/signals.py:134 +#, fuzzy +#| msgid "The order received a mass email." +msgid "The person on the waiting list received a mass email." +msgstr "تلقى الطلب قدرا كبيرا من رسائل البريد الإلكتروني." + +#: pretix/plugins/sendmail/signals.py:139 #, fuzzy #| msgid "The tax rule has been deleted." msgid "An email rule was created" msgstr "تم حذف حكم الضرائب." -#: pretix/plugins/sendmail/signals.py:134 +#: pretix/plugins/sendmail/signals.py:140 #, fuzzy #| msgid "The tax rule has been deleted." msgid "An email rule was updated" msgstr "تم حذف حكم الضرائب." -#: pretix/plugins/sendmail/signals.py:135 +#: pretix/plugins/sendmail/signals.py:141 #, fuzzy #| msgid "What should happen to the order?" msgid "A scheduled email was sent to the order" msgstr "ما يجب أن يحدث للنظام؟" -#: pretix/plugins/sendmail/signals.py:136 +#: pretix/plugins/sendmail/signals.py:142 #, fuzzy #| msgid "A custom email has been sent to an attendee." msgid "A scheduled email was sent to a ticket holder" msgstr "تم إرسال البريد الإلكتروني المخصص لحاضر." -#: pretix/plugins/sendmail/signals.py:137 +#: pretix/plugins/sendmail/signals.py:143 #, fuzzy #| msgid "The tax rule has been deleted." msgid "An email rule was deleted" msgstr "تم حذف حكم الضرائب." -#: pretix/plugins/sendmail/signals.py:140 +#: pretix/plugins/sendmail/signals.py:146 #, fuzzy, python-brace-format #| msgid "Tax rule {val}" msgid "Mail rule {val}" @@ -32898,7 +32962,7 @@ msgstr "المنتجات الإضافية" #: pretix/presale/checkoutflow.py:678 pretix/presale/checkoutflow.py:686 #: pretix/presale/views/cart.py:195 pretix/presale/views/cart.py:200 #: pretix/presale/views/cart.py:218 pretix/presale/views/cart.py:231 -#: pretix/presale/views/order.py:1485 pretix/presale/views/order.py:1493 +#: pretix/presale/views/order.py:1487 pretix/presale/views/order.py:1495 msgid "Please enter numbers only." msgstr "الرجاء إدخال أرقام فقط." @@ -33091,7 +33155,7 @@ msgstr "" msgid "Forgot your password?" msgstr "كلمة السر خاصتك" -#: pretix/presale/forms/customer.py:146 +#: pretix/presale/forms/customer.py:147 msgid "" "We've received a lot of registration requests from you, please wait 10 " "minutes before you try again." @@ -33099,7 +33163,7 @@ msgstr "" "لقد تلقينا الكثير من طلبات التسجيل منك ، يرجى الانتظار لمدة 10 دقائق قبل " "المحاولة مرة أخرى." -#: pretix/presale/forms/customer.py:148 +#: pretix/presale/forms/customer.py:149 msgid "" "An account with this email address is already registered. Please try to log " "in or reset your password instead." @@ -33107,30 +33171,30 @@ msgstr "" "تم تسجيل حساب بعنوان البريد الإلكتروني هذا مسبقا. يرجى محاولة تسجيل الدخول " "أو إعادة تعيين كلمة المرور الخاصة بك بدلا من ذلك." -#: pretix/presale/forms/customer.py:201 +#: pretix/presale/forms/customer.py:202 #, python-brace-format msgid "What is the result of {num1} + {num2}?" msgstr "" -#: pretix/presale/forms/customer.py:247 +#: pretix/presale/forms/customer.py:248 #, fuzzy #| msgid "Please enter a shorter name." msgid "Please enter the correct result." msgstr "الرجاء إدخال اسم أقصر." -#: pretix/presale/forms/customer.py:339 +#: pretix/presale/forms/customer.py:340 msgid "For security reasons, please wait 10 minutes before you try again." msgstr "لأسباب أمنية ، يرجى الانتظار لمدة 10 دقائق قبل المحاولة مرة أخرى." -#: pretix/presale/forms/customer.py:340 +#: pretix/presale/forms/customer.py:341 msgid "A user with this email address is not known in our system." msgstr "المستخدم بعنوان البريد الإلكتروني هذا غير معروف في نظامنا." -#: pretix/presale/forms/customer.py:461 +#: pretix/presale/forms/customer.py:463 msgid "Only required if you change your email address" msgstr "مطلوب فقط إذا قمت بتغيير عنوان بريدك الإلكتروني" -#: pretix/presale/forms/customer.py:497 +#: pretix/presale/forms/customer.py:501 #, python-brace-format msgid "" "To change your email address, change it in your {provider} account and then " @@ -33325,8 +33389,8 @@ msgid "Contact event organizer" msgstr "اتصل بمنظم الفعالية" #: pretix/presale/templates/pretixpresale/event/base.html:225 -#: pretix/presale/templates/pretixpresale/fragment_modals.html:114 -#: pretix/presale/templates/pretixpresale/fragment_modals.html:133 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:118 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:137 #: pretix/presale/templates/pretixpresale/organizers/base.html:103 msgid "Privacy policy" msgstr "" @@ -33384,8 +33448,8 @@ msgstr "ملاحظات الطلب" #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:202 #: pretix/presale/templates/pretixpresale/event/checkout_customer.html:120 #: pretix/presale/templates/pretixpresale/event/checkout_membership.html:75 -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:124 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:172 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:125 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:187 #: pretix/presale/templates/pretixpresale/organizers/customer_address_delete.html:28 #: pretix/presale/templates/pretixpresale/organizers/customer_profile_delete.html:28 msgid "Go back" @@ -33405,7 +33469,7 @@ msgstr "الدفع" #: pretix/presale/templates/pretixpresale/event/checkout_base.html:15 #: pretix/presale/templates/pretixpresale/event/checkout_base.html:21 #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:18 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:8 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:9 #: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:11 msgid "Your cart" msgstr "عربتك" @@ -33460,7 +33524,7 @@ msgid "Modify invoice information" msgstr "تعديل معلومات الفاتورة" #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:124 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:18 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:19 #: pretix/presale/templates/pretixpresale/event/order_modify.html:33 msgid "Contact information" msgstr "معلومات التواصل" @@ -33574,7 +33638,7 @@ msgstr "" "عضوية نشطة في حسابك." #: pretix/presale/templates/pretixpresale/event/checkout_membership.html:34 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:106 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:110 msgid "Selected add-ons" msgstr "إضافات تم اختيارها" @@ -33592,80 +33656,77 @@ msgstr "" msgid "You already selected the following payment methods:" msgstr "يرجى تأكيد تفاصيل الدفع التالية." -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:26 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:29 #, fuzzy #| msgctxt "invoice" #| msgid "Received payments" msgid "Remove payment" msgstr "المدفوعات المستلمة" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:38 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:39 #, fuzzy #| msgid "Pending amount" msgid "Remaining balance" msgstr "مبالغ متأخرة" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:39 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:40 #, fuzzy #| msgid "Please select a payment method." msgid "Please select a payment method below." msgstr "الرجاء اختيار طريقة الدفع." -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:52 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:53 #, fuzzy #| msgid "Please select how you want to pay." msgid "Please select how you want to pay the remaining balance:" msgstr "يرجى اختيار طريقة الدفع." -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:90 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:91 msgid "This sales channel does not provide support for test mode." msgstr "لا توفر قناة المبيعات هذه دعما لوضع الاختبار." -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:92 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:93 msgid "If you continue, you might pay an actual order with non-existing money!" msgstr "إذا تابعت ، فقد تدفع طلبا فعليا بمبلغ غير موجود!" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:100 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:101 msgid "This payment provider does not provide support for test mode." msgstr "لا يوفر مزود الدفع هذا دعما لوضع الاختبار." -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:102 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:103 msgid "If you continue, actual money might be transferred." msgstr "إذا قمت بالمتابعة، قد يتم تحويل المبلغ الفعلي." -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:113 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:114 msgid "There are no payment providers enabled." msgstr "لم يتم تمكين مزودي الدفع." -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:115 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:116 msgid "" "Please go to the payment settings and activate one or more payment providers." msgstr "يرجى الذهاب إلى إعدادات الدفع وتفعيل واحد أو أكثر من مزودي الدفع." -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:8 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:9 msgid "Before we continue, we need you to answer some questions." msgstr "قبل أن نواصل ، نحتاج منك الإجابة على بعض الأسئلة." -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:46 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:47 #, fuzzy #| msgid "Email address" msgid "Auto-fill with address" msgstr "عنوان البريد الإلكتروني" -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:53 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:154 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:54 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:157 msgid "Fill form" msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:81 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:91 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:168 msgid "Copy answers from above" msgstr "انسخ الإجابات من الأعلى" -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:136 -msgid "Copy answers" -msgstr "انسخ الإجابات" - -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:145 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:148 #, fuzzy #| msgid "Public profile" msgid "Auto-fill with profile" @@ -33783,13 +33844,6 @@ msgstr "من %(minprice)s" msgid "Hide variants" msgstr "قم بعرض الأنواع" -#: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:100 -#: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:105 -#, fuzzy, python-format -#| msgid "Show full-size image of %(item)s" -msgid "Show %(count)s variants of %(item)s" -msgstr "أظهر صورة بالحجم الكبير ل %(item)s" - #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:102 #: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:107 msgid "Show variants" @@ -33949,7 +34003,7 @@ msgstr "محجوزة بالكامل" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:104 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:30 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:68 -#: pretix/presale/views/widget.py:451 +#: pretix/presale/views/widget.py:444 msgid "Reserved" msgstr "محجوز" @@ -33957,64 +34011,64 @@ msgstr "محجوز" msgid "All remaining products are reserved but might become available again." msgstr "كل المنتجات المتبقية محجوزة لكنها قد تصبح متوفرة مرة أخرى." -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:17 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:18 #, fuzzy #| msgid "price per item" msgid "Price per item" msgstr "السعر للسلعة الواحدة" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:21 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:22 #, fuzzy #| msgctxt "invoice" #| msgid "Invoice total" msgid "Price total" msgstr "إجمالي الفاتورة" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:45 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:46 #, fuzzy #| msgid "Seat" msgid "Seat:" msgstr "مقعد" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:60 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:61 #, fuzzy #| msgid "Date" msgctxt "subevent" msgid "Date:" msgstr "التاريخ" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:78 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:79 #, fuzzy #| msgid "Location" msgid "Location:" msgstr "الموقع" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:80 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:81 #, fuzzy #| msgid "Show information" msgid "Show full location" msgstr "مزيد من المعلومات" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:91 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:92 #, fuzzy #| msgid "Membership" msgid "Membership:" msgstr "عضويات" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:122 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:123 #, fuzzy #| msgid "This ticket has already been redeemed." msgid "This ticket is blocked." msgstr "تم استخدام هذه التذكرة مسبقا." -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:129 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:130 #, fuzzy #| msgid "Usages" msgctxt "ticket_checkins" msgid "Usage:" msgstr "مرات الإستخدام" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:133 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:134 #, fuzzy, python-format #| msgid "This ticket has already been redeemed." msgid "This ticket has been used once." @@ -34026,47 +34080,47 @@ msgstr[3] "تم استخدام هذه التذكرة مسبقا." msgstr[4] "تم استخدام هذه التذكرة مسبقا." msgstr[5] "تم استخدام هذه التذكرة مسبقا." -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:165 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:166 msgid "No attendee name provided" msgstr "لم يتم تقديم اسم الحضور" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:218 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:219 msgid "The image you previously uploaded" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:264 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:337 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:265 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:338 msgid "The price of this product was reduced because of an automatic discount." msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:268 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:341 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:269 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:342 #, python-format msgid "%(percent)s %% Discount" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:272 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:345 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:273 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:346 msgid "Discounted" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:282 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:283 msgid "Okay, we're removing that…" msgstr "حسنا ، سنزيل ذلك …" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:287 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:289 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:288 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:290 #, python-format msgid "Remove %(item)s from your cart" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:292 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:293 #, fuzzy, python-format #| msgid "Amount of %(item)s to order" msgid "Remove one %(item)s from your cart" msgstr "كمية %(item)s للطلب" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:294 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:295 #, fuzzy, python-format #| msgid "" #| "We removed %(product)s from your cart as you can not buy less than " @@ -34078,11 +34132,11 @@ msgstr "" "أزلنا %(product)s من عربة التسوق الخاصة بك كما لا يمكنك شراء أقل من %(min)s " "عناصر من المنتج." -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:302 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:303 msgid "We're trying to reserve another one for you!" msgstr "نحاول حجز واحدة أخرى لك!" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:303 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:304 #: pretix/presale/templates/pretixpresale/event/index.html:187 #: pretix/presale/templates/pretixpresale/event/seatingplan.html:24 #: pretix/presale/templates/pretixpresale/event/voucher.html:62 @@ -34094,20 +34148,20 @@ msgstr "" "بمجرد أن تصبح العناصر في سلة التسوق الخاصة بك ، سيكون لديك %(time)s دقيقة " "لإكمال عملية الشراء." -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:322 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:323 #, fuzzy, python-format #| msgid "Amount of %(item)s to order" msgid "Add one more %(item)s to your cart" msgstr "كمية %(item)s للطلب" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:324 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:325 #, python-format msgid "" "Add one more %(item)s to your cart. You currently have %(count)s in your " "cart." msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:384 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:385 #: pretix/presale/templates/pretixpresale/event/order_giftcard.html:20 #: pretix/presale/templates/pretixpresale/event/position_giftcard.html:20 #, fuzzy @@ -34115,7 +34169,7 @@ msgstr "" msgid "Current value:" msgstr "القيمة الحالية" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:466 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:467 #, python-format msgid "One product" msgid_plural "%(num)s products" @@ -34126,19 +34180,19 @@ msgstr[3] "بضعة منتجات %(num)s" msgstr[4] "العديد من المنتجات %(num)s" msgstr[5] "عدد %(num)s" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:480 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:481 #, python-format msgid "incl. %(tax_sum)s taxes" msgstr "يشمل ضرائب %(tax_sum)s" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:500 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:501 #, fuzzy, python-format #| msgid "The items in your cart are reserved for you for %(minutes)s minutes." msgid "The items in your cart are reserved for you for %(minutes)s minutes." msgstr "" "العناصر الموجودة في عربة التسوق الخاصة بك محجوزة لك لمدة %(minutes)s دقائق." -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:504 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:505 #, fuzzy #| msgid "The items in your cart are no longer reserved for you." msgid "" @@ -34146,14 +34200,20 @@ msgid "" "complete your order as long as they’re available." msgstr "لم تعد العناصر الموجودة في عربة التسوق الخاصة بك محجوزة لك." -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:509 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:510 #: pretix/presale/templates/pretixpresale/fragment_modals.html:48 #, fuzzy #| msgid "Product description" msgid "Renew reservation" msgstr "وصف المنتج" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:514 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:522 +#, fuzzy +#| msgid "Reservation period" +msgid "Reservation renewed" +msgstr "فترة الحجز" + +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:528 msgid "Overview of your ordered products." msgstr "" @@ -34184,7 +34244,7 @@ msgid "We're applying this voucher to your cart..." msgstr "نقوم بتطبيق كود الخصم على عربة التسوق الخاصة بك ..." #: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:79 -#: pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html:26 +#: pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html:27 msgid "Redeem voucher" msgstr "استخدم كود الخصم" @@ -34510,9 +34570,9 @@ msgstr "%(num)s متاح حاليا" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:5 #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:5 -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:33 -#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:33 -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:33 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:37 +#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:37 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:37 #, fuzzy #| msgid "Toggle navigation" msgid "calendar navigation" @@ -34524,20 +34584,20 @@ msgid "Show previous month, %(month)s" msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:24 -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:52 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:56 #, fuzzy #| msgid "Creation date" msgid "Select a month to display" msgstr "تاريخ الإنشاء" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:26 -#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:17 -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:54 +#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:16 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:58 msgid "Month" msgstr "شهر" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:39 -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:67 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:71 #, fuzzy #| msgid "month(s)" msgid "Show month" @@ -34555,13 +34615,13 @@ msgid "Show previous week, %(week)s" msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:24 -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:52 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:56 msgid "Select a week to display" msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:26 #: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:12 -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:54 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:58 msgid "Week" msgstr "أسبوع" @@ -34570,7 +34630,7 @@ msgid "Select week to show" msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:43 -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:71 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:75 #, fuzzy #| msgid "Show per page:" msgid "Show week" @@ -34584,7 +34644,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_list.html:34 #: pretix/presale/templates/pretixpresale/organizers/index.html:93 -#: pretix/presale/views/widget.py:462 +#: pretix/presale/views/widget.py:455 msgid "More info" msgstr "مزيد من المعلومات" @@ -34627,14 +34687,14 @@ msgid "Choose date to book a ticket" msgstr "اختر تاريخا لحجز تذكرة" #: pretix/presale/templates/pretixpresale/event/index.html:156 -#: pretix/presale/views/waiting.py:141 pretix/presale/views/widget.py:781 +#: pretix/presale/views/waiting.py:141 pretix/presale/views/widget.py:774 #, fuzzy #| msgid "The presale period for this event is over." msgid "The booking period for this event is over." msgstr "انتهت فترة العرض ما قبل البيع لهذه الفعالية." #: pretix/presale/templates/pretixpresale/event/index.html:164 -#: pretix/presale/views/widget.py:783 +#: pretix/presale/views/widget.py:776 #, fuzzy, python-format #| msgid "The presale for this event will start on %(date)s at %(time)s." msgid "The booking period for this event will start on %(date)s at %(time)s." @@ -35384,7 +35444,7 @@ msgstr "المتابعة" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:93 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:13 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:57 -#: pretix/presale/views/widget.py:436 +#: pretix/presale/views/widget.py:429 #, fuzzy #| msgid "PDF ticket layout" msgid "Few tickets left" @@ -35394,7 +35454,7 @@ msgstr "نسق تذكرة PDF" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:96 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:18 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:60 -#: pretix/presale/views/widget.py:441 +#: pretix/presale/views/widget.py:434 #, fuzzy #| msgid "Pay now" msgctxt "available_event_in_list" @@ -35409,7 +35469,7 @@ msgstr "ادفع الآن" #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:43 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:62 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:77 -#: pretix/presale/views/widget.py:443 pretix/presale/views/widget.py:466 +#: pretix/presale/views/widget.py:436 pretix/presale/views/widget.py:459 msgid "Book now" msgstr "احجز الآن" @@ -35417,7 +35477,7 @@ msgstr "احجز الآن" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:110 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:37 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:73 -#: pretix/presale/views/widget.py:458 +#: pretix/presale/views/widget.py:451 msgid "Fully booked" msgstr "محجوز بالكامل" @@ -35432,7 +35492,11 @@ msgstr "" " من %(start_date)s\n" " " -#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:27 +#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:5 +msgid "Event overview by month, week, etc." +msgstr "" + +#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:26 msgid "iCal" msgstr "اي كال iCal" @@ -35505,65 +35569,65 @@ msgid "" "Once the process in the new window has been completed, you can continue here." msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:58 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:62 #, fuzzy #| msgid "Closed" msgid "Close" msgstr "مغلق" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:79 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:83 msgid "Adjust settings in detail" msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:84 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:88 #, fuzzy #| msgid "Required for events" msgid "Required cookies" msgstr "مطلوب للفعاليات" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:88 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:92 msgid "" "Functional cookies (e.g. shopping cart, login, payment, language preference) " "and technical cookies (e.g. security purposes)" msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:102 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:106 msgctxt "cookie_usage" msgid "Functionality" msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:104 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:108 msgctxt "cookie_usage" msgid "Analytics" msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:106 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:110 #, fuzzy #| msgid "Start editing" msgctxt "cookie_usage" msgid "Marketing" msgstr "بدء التعديل" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:108 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:112 #, fuzzy #| msgid "Features" msgctxt "cookie_usage" msgid "Social features" msgstr "المميزات" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:124 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:128 #, fuzzy #| msgid "Data selection" msgid "Save selection" msgstr "اختيار البيانات" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:141 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:145 #, fuzzy #| msgid "You did not select any products." msgid "You didn't select any ticket." msgstr "لم تقم بتحديد أي من المنتجات." -#: pretix/presale/templates/pretixpresale/fragment_modals.html:142 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:146 msgid "" "Please tick a checkbox or enter a quantity for one of the ticket types to " "add to the cart." @@ -35612,44 +35676,41 @@ msgstr "إذا كنت تريد إعداد هذا التثبيت ، يرجى \n" "Language-Team: Arabic \n" "Language-Team: Azerbaijani %(rate)s%% %(taxname)s" msgstr "" @@ -18794,8 +18817,8 @@ msgstr "" #: pretix/control/templates/pretixcontrol/items/index.html:153 #: pretix/control/templates/pretixcontrol/order/index.html:626 #: pretix/control/templates/pretixcontrol/order/index.html:666 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:369 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:424 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:370 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:425 #, python-format msgid "incl. %(rate)s%% %(taxname)s" msgstr "" @@ -18836,10 +18859,16 @@ msgid "Count" msgstr "" #: pretix/control/templates/pretixcontrol/items/question.html:92 -msgid "Percentage" +#, python-format +msgid "%% of answers" msgstr "" -#: pretix/control/templates/pretixcontrol/items/question.html:110 +#: pretix/control/templates/pretixcontrol/items/question.html:93 +#, python-format +msgid "%% of tickets" +msgstr "" + +#: pretix/control/templates/pretixcontrol/items/question.html:112 #: pretix/control/templates/pretixcontrol/order/transactions.html:67 #: pretix/plugins/reports/accountingreport.py:408 #: pretix/plugins/reports/accountingreport.py:441 @@ -18847,7 +18876,7 @@ msgstr "" msgid "Sum" msgstr "" -#: pretix/control/templates/pretixcontrol/items/question.html:122 +#: pretix/control/templates/pretixcontrol/items/question.html:125 msgid "Question history" msgstr "" @@ -19339,14 +19368,14 @@ msgstr "" #: pretix/control/templates/pretixcontrol/order/change.html:247 #: pretix/control/templates/pretixcontrol/order/index.html:455 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:106 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:107 #, python-format msgid "Valid from %(datetime)s" msgstr "" #: pretix/control/templates/pretixcontrol/order/change.html:255 #: pretix/control/templates/pretixcontrol/order/index.html:459 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:110 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:111 #, python-format msgid "Valid until %(datetime)s" msgstr "" @@ -19424,13 +19453,13 @@ msgstr "" #: pretix/control/templates/pretixcontrol/order/change_questions.html:25 #: pretix/control/templates/pretixcontrol/order/index.html:940 #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:75 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:34 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:35 #: pretix/presale/templates/pretixpresale/event/order_modify.html:29 msgid "Invoice information" msgstr "" #: pretix/control/templates/pretixcontrol/order/change_questions.html:26 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:35 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:36 #: pretix/presale/templates/pretixpresale/event/order_modify.html:30 msgid "(optional)" msgstr "" @@ -19656,7 +19685,7 @@ msgid "Entry scan: %(date)s" msgstr "" #: pretix/control/templates/pretixcontrol/order/index.html:420 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:54 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:55 msgid "Voucher code used:" msgstr "" @@ -19673,7 +19702,7 @@ msgid "" msgstr "" #: pretix/control/templates/pretixcontrol/order/index.html:451 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:102 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:103 #, python-format msgid "Valid %(datetime_range)s" msgstr "" @@ -19688,8 +19717,8 @@ msgstr "" #: pretix/control/templates/pretixcontrol/order/index.html:560 #: pretix/control/templates/pretixcontrol/order/index.html:598 #: pretix/control/templates/pretixcontrol/order/index.html:605 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:227 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:233 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:228 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:234 msgid "not answered" msgstr "" @@ -19708,7 +19737,7 @@ msgid "UNSAFE" msgstr "" #: pretix/control/templates/pretixcontrol/order/index.html:687 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:452 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:453 msgid "Taxes" msgstr "" @@ -19720,7 +19749,7 @@ msgstr "" #: pretix/plugins/reports/exporters.py:435 #: pretix/plugins/reports/exporters.py:627 #: pretix/plugins/reports/exporters.py:957 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:464 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:465 msgid "Total" msgstr "" @@ -19816,7 +19845,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/order/mail_history.html:4 #: pretix/control/templates/pretixcontrol/order/mail_history.html:7 -#: pretix/plugins/sendmail/signals.py:109 +#: pretix/plugins/sendmail/signals.py:110 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/history.html:4 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/history.html:6 msgid "Email history" @@ -20037,7 +20066,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/order/sendmail.html:4 #: pretix/control/templates/pretixcontrol/order/sendmail.html:7 -#: pretix/plugins/sendmail/signals.py:93 +#: pretix/plugins/sendmail/signals.py:94 msgid "Send email" msgstr "" @@ -20135,7 +20164,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/orders/cancel.html:49 #: pretix/control/templates/pretixcontrol/vouchers/bulk.html:85 #: pretix/plugins/sendmail/apps.py:30 pretix/plugins/sendmail/apps.py:33 -#: pretix/plugins/sendmail/signals.py:85 +#: pretix/plugins/sendmail/signals.py:86 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/index.html:3 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/index.html:5 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/send_form.html:5 @@ -20696,7 +20725,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/organizers/giftcards.html:95 #: pretix/control/templates/pretixcontrol/organizers/reusable_media.html:102 #: pretix/control/templates/pretixcontrol/organizers/reusable_medium.html:21 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:389 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:390 #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:114 #: pretix/presale/templates/pretixpresale/organizers/customer_memberships.html:95 #: pretix/presale/templates/pretixpresale/organizers/customer_orders.html:66 @@ -20827,7 +20856,7 @@ msgid "Change multiple devices" msgstr "" #: pretix/control/templates/pretixcontrol/organizers/device_bulk_edit.html:8 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:13 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:14 #, python-format msgid "%(number)s selected" msgstr "" @@ -22170,7 +22199,7 @@ msgid "Add many time slots" msgstr "" #: pretix/control/templates/pretixcontrol/subevents/bulk.html:481 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:264 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:266 #: pretix/control/templates/pretixcontrol/subevents/detail.html:124 msgid "Add a new quota" msgstr "" @@ -22201,35 +22230,50 @@ msgid "" msgstr "" #: pretix/control/templates/pretixcontrol/subevents/bulk.html:600 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:357 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:359 #: pretix/control/templates/pretixcontrol/subevents/detail.html:243 msgid "Add a new check-in list" msgstr "" -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:8 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:11 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:9 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:12 msgctxt "subevent" msgid "Change multiple dates" msgstr "" -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:153 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:154 msgid "Item prices" msgstr "" -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:187 -msgid "" -"You selected a set of dates that currently have different quota setups. You " -"can therefore not change their quotas in bulk. If you want, you can set up a " -"new set of quotas to replace the quota setup of all " -"selected dates." +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:197 +msgid "You selected a set of dates that currently have different quota setups." msgstr "" -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:275 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:198 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:373 +msgid "" +"Using this option will delete all current quotas from " +"all selected dates." +msgstr "" + +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:277 msgid "" "You selected a set of dates that currently have different check-in list " "setups. You can therefore not change their check-in lists in bulk." msgstr "" +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:372 +msgid "Delete existing quotas" +msgstr "" + +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:374 +msgid "This cannot be reverted. Are you sure to proceed?" +msgstr "" + +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:381 +msgid "Proceed" +msgstr "" + #: pretix/control/templates/pretixcontrol/subevents/delete.html:4 #: pretix/control/templates/pretixcontrol/subevents/delete.html:6 msgctxt "subevent" @@ -23268,10 +23312,10 @@ msgstr "" #: pretix/control/views/event.py:590 pretix/control/views/event.py:737 #: pretix/control/views/event.py:929 pretix/control/views/event.py:1287 #: pretix/control/views/event.py:1353 pretix/control/views/event.py:1461 -#: pretix/control/views/item.py:279 pretix/control/views/item.py:326 -#: pretix/control/views/item.py:799 pretix/control/views/item.py:825 -#: pretix/control/views/item.py:945 pretix/control/views/item.py:1149 -#: pretix/control/views/item.py:1315 pretix/control/views/item.py:1500 +#: pretix/control/views/item.py:280 pretix/control/views/item.py:327 +#: pretix/control/views/item.py:805 pretix/control/views/item.py:831 +#: pretix/control/views/item.py:951 pretix/control/views/item.py:1155 +#: pretix/control/views/item.py:1321 pretix/control/views/item.py:1506 #: pretix/control/views/organizer.py:263 pretix/control/views/organizer.py:291 #: pretix/control/views/organizer.py:1188 pretix/control/views/subevents.py:504 #: pretix/control/views/subevents.py:630 pretix/control/views/subevents.py:1039 @@ -23376,7 +23420,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:116 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:47 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:79 -#: pretix/presale/views/widget.py:470 +#: pretix/presale/views/widget.py:463 msgid "Sale over" msgstr "" @@ -23384,7 +23428,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/fragment_calendar.html:119 #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:123 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:86 -#: pretix/presale/views/widget.py:480 +#: pretix/presale/views/widget.py:473 msgid "Soon" msgstr "" @@ -23416,8 +23460,8 @@ msgstr "" msgid "The order of discounts has been updated." msgstr "" -#: pretix/control/views/discounts.py:260 pretix/control/views/item.py:189 -#: pretix/control/views/item.py:401 pretix/control/views/item.py:535 +#: pretix/control/views/discounts.py:260 pretix/control/views/item.py:190 +#: pretix/control/views/item.py:402 pretix/control/views/item.py:536 #: pretix/control/views/organizer.py:2272 #: pretix/control/views/organizer.py:3330 msgid "Some of the provided object ids are invalid." @@ -23470,8 +23514,8 @@ msgstr "" msgid "Unknown email renderer." msgstr "" -#: pretix/control/views/event.py:876 pretix/control/views/orders.py:692 -#: pretix/presale/views/order.py:1086 pretix/presale/views/order.py:1093 +#: pretix/control/views/event.py:876 pretix/control/views/orders.py:693 +#: pretix/presale/views/order.py:1088 pretix/presale/views/order.py:1095 msgid "You requested an invalid ticket output type." msgstr "" @@ -23518,11 +23562,11 @@ msgid "" "event: {plugin_names}" msgstr "" -#: pretix/control/views/event.py:1207 pretix/control/views/orders.py:781 +#: pretix/control/views/event.py:1207 pretix/control/views/orders.py:782 msgid "The comment has been updated." msgstr "" -#: pretix/control/views/event.py:1209 pretix/control/views/orders.py:783 +#: pretix/control/views/event.py:1209 pretix/control/views/orders.py:784 msgid "Could not update the comment." msgstr "" @@ -23640,130 +23684,130 @@ msgid "" "plugin \"{plugin}\" with license \"{license}\"." msgstr "" -#: pretix/control/views/item.py:138 pretix/control/views/item.py:1594 +#: pretix/control/views/item.py:139 pretix/control/views/item.py:1600 msgid "The requested product does not exist." msgstr "" -#: pretix/control/views/item.py:156 +#: pretix/control/views/item.py:157 msgid "The order of items has been updated." msgstr "" -#: pretix/control/views/item.py:224 pretix/control/views/item.py:259 -#: pretix/control/views/item.py:350 +#: pretix/control/views/item.py:225 pretix/control/views/item.py:260 +#: pretix/control/views/item.py:351 msgid "The requested product category does not exist." msgstr "" -#: pretix/control/views/item.py:235 +#: pretix/control/views/item.py:236 msgid "The selected category has been deleted." msgstr "" -#: pretix/control/views/item.py:320 +#: pretix/control/views/item.py:321 msgid "The new category has been created." msgstr "" -#: pretix/control/views/item.py:368 +#: pretix/control/views/item.py:369 msgid "The order of categories has been updated." msgstr "" -#: pretix/control/views/item.py:404 pretix/control/views/item.py:538 +#: pretix/control/views/item.py:405 pretix/control/views/item.py:539 #: pretix/control/views/organizer.py:2275 #: pretix/control/views/organizer.py:3333 msgid "Not all objects have been selected." msgstr "" -#: pretix/control/views/item.py:477 +#: pretix/control/views/item.py:478 msgid "Street" msgstr "" -#: pretix/control/views/item.py:579 pretix/control/views/item.py:753 -#: pretix/control/views/item.py:775 +#: pretix/control/views/item.py:580 pretix/control/views/item.py:759 +#: pretix/control/views/item.py:781 msgid "The requested question does not exist." msgstr "" -#: pretix/control/views/item.py:597 +#: pretix/control/views/item.py:598 msgid "The selected question has been deleted." msgstr "" -#: pretix/control/views/item.py:702 +#: pretix/control/views/item.py:708 msgid "File uploaded" msgstr "" -#: pretix/control/views/item.py:834 +#: pretix/control/views/item.py:840 msgid "The new question has been created." msgstr "" -#: pretix/control/views/item.py:913 +#: pretix/control/views/item.py:919 msgid "The new quota has been created." msgstr "" -#: pretix/control/views/item.py:976 +#: pretix/control/views/item.py:982 msgid "Exit scans" msgstr "" -#: pretix/control/views/item.py:983 +#: pretix/control/views/item.py:989 msgid "Vouchers and waiting list reservations" msgstr "" -#: pretix/control/views/item.py:998 +#: pretix/control/views/item.py:1004 msgid "Available quota" msgstr "" -#: pretix/control/views/item.py:1004 +#: pretix/control/views/item.py:1010 msgid "Waiting list (pending)" msgstr "" -#: pretix/control/views/item.py:1011 +#: pretix/control/views/item.py:1017 msgid "Currently for sale" msgstr "" -#: pretix/control/views/item.py:1065 pretix/control/views/item.py:1111 -#: pretix/control/views/item.py:1165 +#: pretix/control/views/item.py:1071 pretix/control/views/item.py:1117 +#: pretix/control/views/item.py:1171 msgid "The requested quota does not exist." msgstr "" -#: pretix/control/views/item.py:1086 +#: pretix/control/views/item.py:1092 msgid "The quota has been re-opened and will not close again." msgstr "" -#: pretix/control/views/item.py:1179 +#: pretix/control/views/item.py:1185 msgid "The selected quota has been deleted." msgstr "" -#: pretix/control/views/item.py:1202 +#: pretix/control/views/item.py:1208 msgid "The requested item does not exist." msgstr "" -#: pretix/control/views/item.py:1374 +#: pretix/control/views/item.py:1380 msgid "" "You cannot add add-ons to a product that is only available as an add-on " "itself." msgstr "" -#: pretix/control/views/item.py:1384 +#: pretix/control/views/item.py:1390 msgid "" "You cannot add bundles to a product that is only available as an add-on " "itself." msgstr "" -#: pretix/control/views/item.py:1516 +#: pretix/control/views/item.py:1522 msgid "" "You disabled this item, but it is still part of a product bundle. Your " "participants won't be able to buy the bundle unless you remove this item " "from it." msgstr "" -#: pretix/control/views/item.py:1614 +#: pretix/control/views/item.py:1620 msgid "" "The product could not be deleted as some constraints (e.g. data created by " "plug-ins) did not allow it. Deleting it could break reporting or other " "functionality, so the product has been disabled instead." msgstr "" -#: pretix/control/views/item.py:1618 +#: pretix/control/views/item.py:1624 msgid "The selected product has been deleted." msgstr "" -#: pretix/control/views/item.py:1627 +#: pretix/control/views/item.py:1633 msgid "The selected product has been deactivated." msgstr "" @@ -23867,13 +23911,13 @@ msgid "" "Successfully executed the action \"{label}\" on {success} of {total} orders." msgstr "" -#: pretix/control/views/orders.py:556 +#: pretix/control/views/orders.py:557 msgid "Your invoice" msgid_plural "Your invoices" msgstr[0] "" msgstr[1] "" -#: pretix/control/views/orders.py:558 +#: pretix/control/views/orders.py:559 #, python-brace-format msgid "" "Hello,\n" @@ -23890,78 +23934,78 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: pretix/control/views/orders.py:694 pretix/plugins/banktransfer/views.py:901 +#: pretix/control/views/orders.py:695 pretix/plugins/banktransfer/views.py:901 #: pretix/presale/views/order.py:158 pretix/presale/views/order.py:240 #: pretix/presale/views/order.py:334 pretix/presale/views/order.py:361 #: pretix/presale/views/order.py:429 pretix/presale/views/order.py:496 -#: pretix/presale/views/order.py:542 pretix/presale/views/order.py:726 -#: pretix/presale/views/order.py:839 pretix/presale/views/order.py:911 -#: pretix/presale/views/order.py:926 pretix/presale/views/order.py:975 -#: pretix/presale/views/order.py:980 pretix/presale/views/order.py:1095 -#: pretix/presale/views/order.py:1268 pretix/presale/views/order.py:1660 -#: pretix/presale/views/order.py:1691 +#: pretix/presale/views/order.py:542 pretix/presale/views/order.py:728 +#: pretix/presale/views/order.py:841 pretix/presale/views/order.py:913 +#: pretix/presale/views/order.py:928 pretix/presale/views/order.py:977 +#: pretix/presale/views/order.py:982 pretix/presale/views/order.py:1097 +#: pretix/presale/views/order.py:1270 pretix/presale/views/order.py:1662 +#: pretix/presale/views/order.py:1693 msgid "Unknown order code or not authorized to access this order." msgstr "" -#: pretix/control/views/orders.py:696 pretix/presale/views/order.py:1100 +#: pretix/control/views/orders.py:697 pretix/presale/views/order.py:1102 msgid "Ticket download is not enabled for this product." msgstr "" -#: pretix/control/views/orders.py:817 +#: pretix/control/views/orders.py:818 msgid "The order has been deleted." msgstr "" -#: pretix/control/views/orders.py:824 +#: pretix/control/views/orders.py:825 msgid "" "The order could not be deleted as some constraints (e.g. data created by " "plug-ins) do not allow it." msgstr "" -#: pretix/control/views/orders.py:832 +#: pretix/control/views/orders.py:833 msgid "Only orders created in test mode can be deleted." msgstr "" -#: pretix/control/views/orders.py:853 +#: pretix/control/views/orders.py:854 msgid "The order has been denied and is therefore now canceled." msgstr "" -#: pretix/control/views/orders.py:893 +#: pretix/control/views/orders.py:894 msgid "This payment has been canceled." msgstr "" -#: pretix/control/views/orders.py:895 +#: pretix/control/views/orders.py:896 msgid "This payment can not be canceled at the moment." msgstr "" -#: pretix/control/views/orders.py:921 +#: pretix/control/views/orders.py:922 msgid "The refund has been canceled." msgstr "" -#: pretix/control/views/orders.py:923 +#: pretix/control/views/orders.py:924 msgid "This refund can not be canceled at the moment." msgstr "" -#: pretix/control/views/orders.py:957 +#: pretix/control/views/orders.py:958 msgid "The refund has been processed." msgstr "" -#: pretix/control/views/orders.py:959 pretix/control/views/orders.py:985 +#: pretix/control/views/orders.py:960 pretix/control/views/orders.py:986 msgid "This refund can not be processed at the moment." msgstr "" -#: pretix/control/views/orders.py:983 +#: pretix/control/views/orders.py:984 msgid "The refund has been marked as done." msgstr "" -#: pretix/control/views/orders.py:1009 +#: pretix/control/views/orders.py:1010 msgid "The request has been removed. If you want, you can now inform the user." msgstr "" -#: pretix/control/views/orders.py:1016 +#: pretix/control/views/orders.py:1017 msgid "Your cancellation request" msgstr "" -#: pretix/control/views/orders.py:1017 +#: pretix/control/views/orders.py:1018 #, python-brace-format msgid "" "Hello,\n" @@ -23972,69 +24016,69 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/control/views/orders.py:1073 +#: pretix/control/views/orders.py:1074 msgid "" "The payment has been marked as complete, but we were unable to send a " "confirmation mail." msgstr "" -#: pretix/control/views/orders.py:1076 +#: pretix/control/views/orders.py:1077 msgid "The payment has been marked as complete." msgstr "" -#: pretix/control/views/orders.py:1078 +#: pretix/control/views/orders.py:1079 msgid "This payment can not be confirmed at the moment." msgstr "" -#: pretix/control/views/orders.py:1169 +#: pretix/control/views/orders.py:1170 msgid "" "The refund was prevented due to a refund already being processed at the same " "time. Please have a look at the order details and check if your refund is " "still necessary." msgstr "" -#: pretix/control/views/orders.py:1269 +#: pretix/control/views/orders.py:1270 msgid "You entered an order in an event with a different currency." msgstr "" -#: pretix/control/views/orders.py:1320 +#: pretix/control/views/orders.py:1321 msgid "" "You can not refund more than the amount of a payment that is not yet " "refunded." msgstr "" -#: pretix/control/views/orders.py:1325 +#: pretix/control/views/orders.py:1326 msgid "" "You selected a partial refund for a payment method that only supports full " "refunds." msgstr "" -#: pretix/control/views/orders.py:1355 +#: pretix/control/views/orders.py:1356 msgid "" "One of the refunds failed to be processed. You should retry to refund in a " "different way. The error message was: {}" msgstr "" -#: pretix/control/views/orders.py:1361 +#: pretix/control/views/orders.py:1362 msgid "A refund of {} has been processed." msgstr "" -#: pretix/control/views/orders.py:1365 +#: pretix/control/views/orders.py:1366 msgid "" "A refund of {} has been saved, but not yet fully executed. You can mark it " "as complete below." msgstr "" -#: pretix/control/views/orders.py:1394 +#: pretix/control/views/orders.py:1395 msgid "" "A new gift card was created. You can now send the user their gift card code." msgstr "" -#: pretix/control/views/orders.py:1402 +#: pretix/control/views/orders.py:1403 msgid "Your gift card code" msgstr "" -#: pretix/control/views/orders.py:1404 +#: pretix/control/views/orders.py:1405 #, python-brace-format msgid "" "Hello,\n" @@ -24047,184 +24091,184 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/control/views/orders.py:1415 +#: pretix/control/views/orders.py:1416 msgid "The refunds you selected do not match the selected total refund amount." msgstr "" -#: pretix/control/views/orders.py:1543 +#: pretix/control/views/orders.py:1544 msgid "" "The order has been marked as paid, but we were unable to send a confirmation " "mail." msgstr "" -#: pretix/control/views/orders.py:1546 +#: pretix/control/views/orders.py:1547 msgid "The payment has been created successfully." msgstr "" -#: pretix/control/views/orders.py:1560 +#: pretix/control/views/orders.py:1561 msgid "" "The order has been canceled. You can now select how you want to transfer the " "money back to the user." msgstr "" -#: pretix/control/views/orders.py:1631 pretix/control/views/orders.py:1635 +#: pretix/control/views/orders.py:1632 pretix/control/views/orders.py:1636 msgid "No VAT ID specified." msgstr "" -#: pretix/control/views/orders.py:1639 +#: pretix/control/views/orders.py:1640 msgid "No country specified." msgstr "" -#: pretix/control/views/orders.py:1643 +#: pretix/control/views/orders.py:1644 msgid "VAT ID could not be checked since this country is not supported." msgstr "" -#: pretix/control/views/orders.py:1654 +#: pretix/control/views/orders.py:1655 msgid "" "The VAT ID could not be checked, as the VAT checking service of the country " "is currently not available." msgstr "" -#: pretix/control/views/orders.py:1657 +#: pretix/control/views/orders.py:1658 msgid "This VAT ID is valid." msgstr "" -#: pretix/control/views/orders.py:1671 pretix/control/views/orders.py:1704 +#: pretix/control/views/orders.py:1672 pretix/control/views/orders.py:1705 msgid "Unknown invoice." msgstr "" -#: pretix/control/views/orders.py:1674 +#: pretix/control/views/orders.py:1675 msgid "Invoices may not be changed after they are created." msgstr "" -#: pretix/control/views/orders.py:1676 pretix/control/views/orders.py:1707 +#: pretix/control/views/orders.py:1677 pretix/control/views/orders.py:1708 msgid "The invoice has already been canceled." msgstr "" -#: pretix/control/views/orders.py:1678 +#: pretix/control/views/orders.py:1679 msgid "The invoice file has already been exported." msgstr "" -#: pretix/control/views/orders.py:1680 +#: pretix/control/views/orders.py:1681 msgid "The invoice file is too old to be regenerated." msgstr "" -#: pretix/control/views/orders.py:1682 pretix/control/views/orders.py:1709 +#: pretix/control/views/orders.py:1683 pretix/control/views/orders.py:1710 msgid "The invoice has been cleaned of personal data." msgstr "" -#: pretix/control/views/orders.py:1740 +#: pretix/control/views/orders.py:1741 msgid "The email has been queued to be sent." msgstr "" -#: pretix/control/views/orders.py:1764 pretix/presale/views/order.py:1277 +#: pretix/control/views/orders.py:1765 pretix/presale/views/order.py:1279 msgid "This invoice has not been found" msgstr "" -#: pretix/control/views/orders.py:1771 pretix/presale/views/order.py:1284 +#: pretix/control/views/orders.py:1772 pretix/presale/views/order.py:1286 msgid "The invoice file is no longer stored on the server." msgstr "" -#: pretix/control/views/orders.py:1776 pretix/presale/views/order.py:1289 +#: pretix/control/views/orders.py:1777 pretix/presale/views/order.py:1291 msgid "" "The invoice file has not yet been generated, we will generate it for you " "now. Please try again in a few seconds." msgstr "" -#: pretix/control/views/orders.py:1804 +#: pretix/control/views/orders.py:1805 msgid "The payment term has been changed." msgstr "" -#: pretix/control/views/orders.py:1809 pretix/control/views/orders.py:1866 +#: pretix/control/views/orders.py:1810 pretix/control/views/orders.py:1867 msgid "" "We were not able to process the request completely as the server was too " "busy." msgstr "" -#: pretix/control/views/orders.py:1817 +#: pretix/control/views/orders.py:1818 msgid "This action is only allowed for pending orders." msgstr "" -#: pretix/control/views/orders.py:1872 +#: pretix/control/views/orders.py:1873 msgid "This action is only allowed for canceled orders." msgstr "" -#: pretix/control/views/orders.py:2129 pretix/presale/views/order.py:1563 +#: pretix/control/views/orders.py:2130 pretix/presale/views/order.py:1565 msgid "An error occurred. Please see the details below." msgstr "" -#: pretix/control/views/orders.py:2137 +#: pretix/control/views/orders.py:2138 msgid "The order has been changed and the user has been notified." msgstr "" -#: pretix/control/views/orders.py:2139 pretix/control/views/orders.py:2275 -#: pretix/control/views/orders.py:2312 pretix/presale/views/order.py:1598 +#: pretix/control/views/orders.py:2140 pretix/control/views/orders.py:2276 +#: pretix/control/views/orders.py:2313 pretix/presale/views/order.py:1600 msgid "The order has been changed." msgstr "" -#: pretix/control/views/orders.py:2166 pretix/presale/checkoutflow.py:945 -#: pretix/presale/views/order.py:781 pretix/presale/views/order.py:886 +#: pretix/control/views/orders.py:2167 pretix/presale/checkoutflow.py:945 +#: pretix/presale/views/order.py:783 pretix/presale/views/order.py:888 msgid "" "We had difficulties processing your input. Please review the errors below." msgstr "" -#: pretix/control/views/orders.py:2277 +#: pretix/control/views/orders.py:2278 msgid "Nothing about the order had to be changed." msgstr "" -#: pretix/control/views/orders.py:2358 pretix/plugins/sendmail/views.py:176 +#: pretix/control/views/orders.py:2359 pretix/plugins/sendmail/views.py:176 msgid "We could not send the email. See below for details." msgstr "" -#: pretix/control/views/orders.py:2374 pretix/control/views/orders.py:2444 +#: pretix/control/views/orders.py:2375 pretix/control/views/orders.py:2445 #: pretix/plugins/sendmail/views.py:204 pretix/plugins/sendmail/views.py:671 #, python-brace-format msgid "Subject: {subject}" msgstr "" -#: pretix/control/views/orders.py:2393 pretix/control/views/orders.py:2464 +#: pretix/control/views/orders.py:2394 pretix/control/views/orders.py:2465 msgid "Your message has been queued and will be sent to {}." msgstr "" -#: pretix/control/views/orders.py:2397 pretix/control/views/orders.py:2467 +#: pretix/control/views/orders.py:2398 pretix/control/views/orders.py:2468 msgid "Failed to send mail to the following user: {}" msgstr "" -#: pretix/control/views/orders.py:2520 pretix/presale/views/order.py:1060 +#: pretix/control/views/orders.py:2521 pretix/presale/views/order.py:1062 msgid "" "This link is no longer valid. Please go back, refresh the page, and try " "again." msgstr "" -#: pretix/control/views/orders.py:2596 +#: pretix/control/views/orders.py:2597 msgid "There is no order with the given order code." msgstr "" -#: pretix/control/views/orders.py:2702 pretix/control/views/organizer.py:1805 +#: pretix/control/views/orders.py:2703 pretix/control/views/organizer.py:1805 msgid "The selected exporter was not found." msgstr "" -#: pretix/control/views/orders.py:2712 pretix/control/views/organizer.py:1815 +#: pretix/control/views/orders.py:2713 pretix/control/views/organizer.py:1815 msgid "There was a problem processing your input. See below for error details." msgstr "" -#: pretix/control/views/orders.py:2747 pretix/control/views/organizer.py:1858 +#: pretix/control/views/orders.py:2748 pretix/control/views/organizer.py:1858 #, python-brace-format msgid "" "Your export schedule has been saved. The next export will start around " "{datetime}." msgstr "" -#: pretix/control/views/orders.py:2752 pretix/control/views/organizer.py:1863 +#: pretix/control/views/orders.py:2753 pretix/control/views/organizer.py:1863 msgid "Your export schedule has been saved, but no next export is planned." msgstr "" -#: pretix/control/views/orders.py:2791 pretix/control/views/organizer.py:1903 +#: pretix/control/views/orders.py:2792 pretix/control/views/organizer.py:1903 #, python-brace-format msgid "Export: {title}" msgstr "" -#: pretix/control/views/orders.py:2792 pretix/control/views/organizer.py:1905 +#: pretix/control/views/orders.py:2793 pretix/control/views/organizer.py:1905 #, python-brace-format msgid "" "Hello,\n" @@ -24232,25 +24276,25 @@ msgid "" "attached to this email, you can find a new scheduled report for {name}." msgstr "" -#: pretix/control/views/orders.py:2860 pretix/control/views/organizer.py:1973 +#: pretix/control/views/orders.py:2861 pretix/control/views/organizer.py:1973 msgid "" "Your export is queued to start soon. The results will be send via email. " "Depending on system load and type and size of export, this may take a few " "minutes." msgstr "" -#: pretix/control/views/orders.py:2939 +#: pretix/control/views/orders.py:2940 msgid "All orders have been canceled." msgstr "" -#: pretix/control/views/orders.py:2941 +#: pretix/control/views/orders.py:2942 #, python-brace-format msgid "" "The orders have been canceled. An error occurred with {count} orders, please " "check all uncanceled orders." msgstr "" -#: pretix/control/views/orders.py:2962 +#: pretix/control/views/orders.py:2963 msgid "Your input was not valid." msgstr "" @@ -24782,7 +24826,7 @@ msgstr "" msgid "The selected entry has been deleted." msgstr "" -#: pretix/control/views/waitinglist.py:402 pretix/presale/views/widget.py:418 +#: pretix/control/views/waitinglist.py:402 pretix/presale/views/widget.py:411 msgid "This is not an event series." msgstr "" @@ -26135,7 +26179,9 @@ msgid "Upload time" msgstr "" #: pretix/plugins/checkinlists/exporters.py:826 -#: pretix/presale/templates/pretixpresale/fragment_modals.html:144 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:519 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:52 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:148 msgid "OK" msgstr "" @@ -26627,7 +26673,7 @@ msgid "Please turn on JavaScript." msgstr "" #: pretix/plugins/paypal2/templates/pretixplugins/paypal2/pay.html:29 -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:55 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:56 msgid "Please select how you want to pay." msgstr "" @@ -27124,47 +27170,51 @@ msgid_plural "%(count)d days before event start at %(time)s" msgstr[0] "" msgstr[1] "" -#: pretix/plugins/sendmail/signals.py:101 +#: pretix/plugins/sendmail/signals.py:102 msgid "Scheduled emails" msgstr "" -#: pretix/plugins/sendmail/signals.py:121 +#: pretix/plugins/sendmail/signals.py:122 msgid "Mass email was sent to customers or attendees." msgstr "" -#: pretix/plugins/sendmail/signals.py:122 +#: pretix/plugins/sendmail/signals.py:123 msgid "Mass email was sent to waiting list entries." msgstr "" -#: pretix/plugins/sendmail/signals.py:127 +#: pretix/plugins/sendmail/signals.py:128 msgid "The order received a mass email." msgstr "" -#: pretix/plugins/sendmail/signals.py:128 +#: pretix/plugins/sendmail/signals.py:129 msgid "A ticket holder of this order received a mass email." msgstr "" -#: pretix/plugins/sendmail/signals.py:133 +#: pretix/plugins/sendmail/signals.py:134 +msgid "The person on the waiting list received a mass email." +msgstr "" + +#: pretix/plugins/sendmail/signals.py:139 msgid "An email rule was created" msgstr "" -#: pretix/plugins/sendmail/signals.py:134 +#: pretix/plugins/sendmail/signals.py:140 msgid "An email rule was updated" msgstr "" -#: pretix/plugins/sendmail/signals.py:135 +#: pretix/plugins/sendmail/signals.py:141 msgid "A scheduled email was sent to the order" msgstr "" -#: pretix/plugins/sendmail/signals.py:136 +#: pretix/plugins/sendmail/signals.py:142 msgid "A scheduled email was sent to a ticket holder" msgstr "" -#: pretix/plugins/sendmail/signals.py:137 +#: pretix/plugins/sendmail/signals.py:143 msgid "An email rule was deleted" msgstr "" -#: pretix/plugins/sendmail/signals.py:140 +#: pretix/plugins/sendmail/signals.py:146 #, python-brace-format msgid "Mail rule {val}" msgstr "" @@ -28469,7 +28519,7 @@ msgstr "" #: pretix/presale/checkoutflow.py:678 pretix/presale/checkoutflow.py:686 #: pretix/presale/views/cart.py:195 pretix/presale/views/cart.py:200 #: pretix/presale/views/cart.py:218 pretix/presale/views/cart.py:231 -#: pretix/presale/views/order.py:1485 pretix/presale/views/order.py:1493 +#: pretix/presale/views/order.py:1487 pretix/presale/views/order.py:1495 msgid "Please enter numbers only." msgstr "" @@ -28621,40 +28671,40 @@ msgstr "" msgid "Forgot your password?" msgstr "" -#: pretix/presale/forms/customer.py:146 +#: pretix/presale/forms/customer.py:147 msgid "" "We've received a lot of registration requests from you, please wait 10 " "minutes before you try again." msgstr "" -#: pretix/presale/forms/customer.py:148 +#: pretix/presale/forms/customer.py:149 msgid "" "An account with this email address is already registered. Please try to log " "in or reset your password instead." msgstr "" -#: pretix/presale/forms/customer.py:201 +#: pretix/presale/forms/customer.py:202 #, python-brace-format msgid "What is the result of {num1} + {num2}?" msgstr "" -#: pretix/presale/forms/customer.py:247 +#: pretix/presale/forms/customer.py:248 msgid "Please enter the correct result." msgstr "" -#: pretix/presale/forms/customer.py:339 +#: pretix/presale/forms/customer.py:340 msgid "For security reasons, please wait 10 minutes before you try again." msgstr "" -#: pretix/presale/forms/customer.py:340 +#: pretix/presale/forms/customer.py:341 msgid "A user with this email address is not known in our system." msgstr "" -#: pretix/presale/forms/customer.py:461 +#: pretix/presale/forms/customer.py:463 msgid "Only required if you change your email address" msgstr "" -#: pretix/presale/forms/customer.py:497 +#: pretix/presale/forms/customer.py:501 #, python-brace-format msgid "" "To change your email address, change it in your {provider} account and then " @@ -28821,8 +28871,8 @@ msgid "Contact event organizer" msgstr "" #: pretix/presale/templates/pretixpresale/event/base.html:225 -#: pretix/presale/templates/pretixpresale/fragment_modals.html:114 -#: pretix/presale/templates/pretixpresale/fragment_modals.html:133 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:118 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:137 #: pretix/presale/templates/pretixpresale/organizers/base.html:103 msgid "Privacy policy" msgstr "" @@ -28869,8 +28919,8 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:202 #: pretix/presale/templates/pretixpresale/event/checkout_customer.html:120 #: pretix/presale/templates/pretixpresale/event/checkout_membership.html:75 -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:124 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:172 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:125 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:187 #: pretix/presale/templates/pretixpresale/organizers/customer_address_delete.html:28 #: pretix/presale/templates/pretixpresale/organizers/customer_profile_delete.html:28 msgid "Go back" @@ -28890,7 +28940,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/checkout_base.html:15 #: pretix/presale/templates/pretixpresale/event/checkout_base.html:21 #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:18 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:8 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:9 #: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:11 msgid "Your cart" msgstr "" @@ -28943,7 +28993,7 @@ msgid "Modify invoice information" msgstr "" #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:124 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:18 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:19 #: pretix/presale/templates/pretixpresale/event/order_modify.html:33 msgid "Contact information" msgstr "" @@ -29028,7 +29078,7 @@ msgid "" msgstr "" #: pretix/presale/templates/pretixpresale/event/checkout_membership.html:34 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:106 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:110 msgid "Selected add-ons" msgstr "" @@ -29044,69 +29094,66 @@ msgstr "" msgid "You already selected the following payment methods:" msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:26 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:29 msgid "Remove payment" msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:38 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:39 msgid "Remaining balance" msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:39 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:40 msgid "Please select a payment method below." msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:52 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:53 msgid "Please select how you want to pay the remaining balance:" msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:90 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:91 msgid "This sales channel does not provide support for test mode." msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:92 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:93 msgid "If you continue, you might pay an actual order with non-existing money!" msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:100 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:101 msgid "This payment provider does not provide support for test mode." msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:102 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:103 msgid "If you continue, actual money might be transferred." msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:113 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:114 msgid "There are no payment providers enabled." msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:115 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:116 msgid "" "Please go to the payment settings and activate one or more payment providers." msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:8 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:9 msgid "Before we continue, we need you to answer some questions." msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:46 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:47 msgid "Auto-fill with address" msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:53 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:154 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:54 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:157 msgid "Fill form" msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:81 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:91 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:168 msgid "Copy answers from above" msgstr "" -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:136 -msgid "Copy answers" -msgstr "" - -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:145 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:148 msgid "Auto-fill with profile" msgstr "" @@ -29203,12 +29250,6 @@ msgstr "" msgid "Hide variants" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:100 -#: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:105 -#, python-format -msgid "Show %(count)s variants of %(item)s" -msgstr "" - #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:102 #: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:107 msgid "Show variants" @@ -29350,7 +29391,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:104 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:30 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:68 -#: pretix/presale/views/widget.py:451 +#: pretix/presale/views/widget.py:444 msgid "Reserved" msgstr "" @@ -29358,102 +29399,102 @@ msgstr "" msgid "All remaining products are reserved but might become available again." msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:17 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:18 msgid "Price per item" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:21 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:22 msgid "Price total" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:45 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:46 msgid "Seat:" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:60 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:61 msgctxt "subevent" msgid "Date:" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:78 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:79 msgid "Location:" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:80 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:81 msgid "Show full location" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:91 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:92 msgid "Membership:" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:122 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:123 msgid "This ticket is blocked." msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:129 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:130 msgctxt "ticket_checkins" msgid "Usage:" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:133 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:134 #, python-format msgid "This ticket has been used once." msgid_plural "This ticket has been used %(count)s times." msgstr[0] "" msgstr[1] "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:165 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:166 msgid "No attendee name provided" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:218 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:219 msgid "The image you previously uploaded" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:264 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:337 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:265 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:338 msgid "The price of this product was reduced because of an automatic discount." msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:268 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:341 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:269 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:342 #, python-format msgid "%(percent)s %% Discount" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:272 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:345 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:273 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:346 msgid "Discounted" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:282 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:283 msgid "Okay, we're removing that…" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:287 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:289 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:288 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:290 #, python-format msgid "Remove %(item)s from your cart" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:292 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:293 #, python-format msgid "Remove one %(item)s from your cart" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:294 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:295 #, python-format msgid "" "Remove one %(item)s from your cart. You currently have %(count)s in your " "cart." msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:302 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:303 msgid "We're trying to reserve another one for you!" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:303 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:304 #: pretix/presale/templates/pretixpresale/event/index.html:187 #: pretix/presale/templates/pretixpresale/event/seatingplan.html:24 #: pretix/presale/templates/pretixpresale/event/voucher.html:62 @@ -29463,53 +29504,57 @@ msgid "" "your purchase." msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:322 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:323 #, python-format msgid "Add one more %(item)s to your cart" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:324 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:325 #, python-format msgid "" "Add one more %(item)s to your cart. You currently have %(count)s in your " "cart." msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:384 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:385 #: pretix/presale/templates/pretixpresale/event/order_giftcard.html:20 #: pretix/presale/templates/pretixpresale/event/position_giftcard.html:20 msgid "Current value:" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:466 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:467 #, python-format msgid "One product" msgid_plural "%(num)s products" msgstr[0] "" msgstr[1] "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:480 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:481 #, python-format msgid "incl. %(tax_sum)s taxes" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:500 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:501 #, python-format msgid "The items in your cart are reserved for you for %(minutes)s minutes." msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:504 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:505 msgid "" "The items in your cart are no longer reserved for you. You can still " "complete your order as long as they’re available." msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:509 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:510 #: pretix/presale/templates/pretixpresale/fragment_modals.html:48 msgid "Renew reservation" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:514 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:522 +msgid "Reservation renewed" +msgstr "" + +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:528 msgid "Overview of your ordered products." msgstr "" @@ -29538,7 +29583,7 @@ msgid "We're applying this voucher to your cart..." msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:79 -#: pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html:26 +#: pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html:27 msgid "Redeem voucher" msgstr "" @@ -29817,9 +29862,9 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:5 #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:5 -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:33 -#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:33 -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:33 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:37 +#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:37 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:37 msgid "calendar navigation" msgstr "" @@ -29829,18 +29874,18 @@ msgid "Show previous month, %(month)s" msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:24 -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:52 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:56 msgid "Select a month to display" msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:26 -#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:17 -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:54 +#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:16 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:58 msgid "Month" msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:39 -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:67 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:71 msgid "Show month" msgstr "" @@ -29856,13 +29901,13 @@ msgid "Show previous week, %(week)s" msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:24 -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:52 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:56 msgid "Select a week to display" msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:26 #: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:12 -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:54 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:58 msgid "Week" msgstr "" @@ -29871,7 +29916,7 @@ msgid "Select week to show" msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:43 -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:71 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:75 msgid "Show week" msgstr "" @@ -29883,7 +29928,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_list.html:34 #: pretix/presale/templates/pretixpresale/organizers/index.html:93 -#: pretix/presale/views/widget.py:462 +#: pretix/presale/views/widget.py:455 msgid "More info" msgstr "" @@ -29922,12 +29967,12 @@ msgid "Choose date to book a ticket" msgstr "" #: pretix/presale/templates/pretixpresale/event/index.html:156 -#: pretix/presale/views/waiting.py:141 pretix/presale/views/widget.py:781 +#: pretix/presale/views/waiting.py:141 pretix/presale/views/widget.py:774 msgid "The booking period for this event is over." msgstr "" #: pretix/presale/templates/pretixpresale/event/index.html:164 -#: pretix/presale/views/widget.py:783 +#: pretix/presale/views/widget.py:776 #, python-format msgid "The booking period for this event will start on %(date)s at %(time)s." msgstr "" @@ -30573,7 +30618,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:93 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:13 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:57 -#: pretix/presale/views/widget.py:436 +#: pretix/presale/views/widget.py:429 msgid "Few tickets left" msgstr "" @@ -30581,7 +30626,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:96 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:18 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:60 -#: pretix/presale/views/widget.py:441 +#: pretix/presale/views/widget.py:434 msgctxt "available_event_in_list" msgid "Buy now" msgstr "" @@ -30594,7 +30639,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:43 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:62 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:77 -#: pretix/presale/views/widget.py:443 pretix/presale/views/widget.py:466 +#: pretix/presale/views/widget.py:436 pretix/presale/views/widget.py:459 msgid "Book now" msgstr "" @@ -30602,7 +30647,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:110 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:37 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:73 -#: pretix/presale/views/widget.py:458 +#: pretix/presale/views/widget.py:451 msgid "Fully booked" msgstr "" @@ -30614,7 +30659,11 @@ msgid "" " " msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:27 +#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:5 +msgid "Event overview by month, week, etc." +msgstr "" + +#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:26 msgid "iCal" msgstr "" @@ -30671,53 +30720,53 @@ msgid "" "Once the process in the new window has been completed, you can continue here." msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:58 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:62 msgid "Close" msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:79 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:83 msgid "Adjust settings in detail" msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:84 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:88 msgid "Required cookies" msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:88 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:92 msgid "" "Functional cookies (e.g. shopping cart, login, payment, language preference) " "and technical cookies (e.g. security purposes)" msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:102 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:106 msgctxt "cookie_usage" msgid "Functionality" msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:104 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:108 msgctxt "cookie_usage" msgid "Analytics" msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:106 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:110 msgctxt "cookie_usage" msgid "Marketing" msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:108 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:112 msgctxt "cookie_usage" msgid "Social features" msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:124 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:128 msgid "Save selection" msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:141 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:145 msgid "You didn't select any ticket." msgstr "" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:142 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:146 msgid "" "Please tick a checkbox or enter a quantity for one of the ticket types to " "add to the cart." @@ -30759,37 +30808,34 @@ msgstr "" msgid "Enjoy!" msgstr "" -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:7 -#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:7 -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:7 -msgid "Event overview" -msgstr "" - -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:21 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:8 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:25 #, python-format msgid "Events in %(month)s" msgstr "" -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:91 -#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:104 -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:117 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:95 +#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:108 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:121 msgid "Note that the events in this view are in different timezones." msgstr "" -#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:21 +#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:8 +#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:25 #, python-format msgid "Events on %(day)s" msgstr "" -#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:52 +#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:56 msgid "Select a date to display" msgstr "" -#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:59 +#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:63 msgid "Show date" msgstr "" -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:21 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:8 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:25 #, python-format msgid "Events in %(week)s (%(week_day_from)s – %(week_day_to)s)" msgstr "" @@ -31006,39 +31052,39 @@ msgstr "" msgid "We applied the voucher to as many products in your cart as we could." msgstr "" -#: pretix/presale/views/cart.py:460 pretix/presale/views/cart.py:468 +#: pretix/presale/views/cart.py:476 pretix/presale/views/cart.py:484 msgid "" "The gift card has been saved to your cart. Please continue your checkout." msgstr "" -#: pretix/presale/views/cart.py:504 +#: pretix/presale/views/cart.py:520 msgid "Your cart has been updated." msgstr "" -#: pretix/presale/views/cart.py:507 pretix/presale/views/cart.py:533 +#: pretix/presale/views/cart.py:523 pretix/presale/views/cart.py:549 msgid "Your cart is now empty." msgstr "" -#: pretix/presale/views/cart.py:553 +#: pretix/presale/views/cart.py:569 msgid "Your cart timeout was extended." msgstr "" -#: pretix/presale/views/cart.py:568 +#: pretix/presale/views/cart.py:584 msgid "The products have been successfully added to your cart." msgstr "" -#: pretix/presale/views/cart.py:592 pretix/presale/views/event.py:542 -#: pretix/presale/views/widget.py:402 +#: pretix/presale/views/cart.py:608 pretix/presale/views/event.py:542 +#: pretix/presale/views/widget.py:395 msgid "Tickets for this event cannot be purchased on this sales channel." msgstr "" -#: pretix/presale/views/cart.py:731 +#: pretix/presale/views/cart.py:763 msgid "" "The gift card has been saved to your cart. Please now select the products " "you want to purchase." msgstr "" -#: pretix/presale/views/cart.py:759 +#: pretix/presale/views/cart.py:791 msgctxt "subevent" msgid "We were unable to find the specified date." msgstr "" @@ -31152,72 +31198,72 @@ msgstr "" msgid "An invoice has been generated." msgstr "" -#: pretix/presale/views/order.py:841 pretix/presale/views/order.py:913 +#: pretix/presale/views/order.py:843 pretix/presale/views/order.py:915 msgid "You cannot modify this order" msgstr "" -#: pretix/presale/views/order.py:1008 pretix/presale/views/order.py:1013 -#: pretix/presale/views/order.py:1018 +#: pretix/presale/views/order.py:1010 pretix/presale/views/order.py:1015 +#: pretix/presale/views/order.py:1020 msgid "You chose an invalid cancellation fee." msgstr "" -#: pretix/presale/views/order.py:1034 +#: pretix/presale/views/order.py:1036 msgid "Canceled by customer" msgstr "" -#: pretix/presale/views/order.py:1045 +#: pretix/presale/views/order.py:1047 msgid "The cancellation has been requested." msgstr "" -#: pretix/presale/views/order.py:1098 +#: pretix/presale/views/order.py:1100 msgid "Ticket download is not (yet) enabled for this order." msgstr "" -#: pretix/presale/views/order.py:1107 +#: pretix/presale/views/order.py:1109 msgid "Please click the link we sent you via email to download your tickets." msgstr "" -#: pretix/presale/views/order.py:1590 +#: pretix/presale/views/order.py:1592 #, python-brace-format msgid "" "The order has been changed. You can now proceed by paying the open amount of " "{amount}." msgstr "" -#: pretix/presale/views/order.py:1602 +#: pretix/presale/views/order.py:1604 msgid "You did not make any changes." msgstr "" -#: pretix/presale/views/order.py:1626 +#: pretix/presale/views/order.py:1628 msgid "You may not change your order in a way that reduces the total price." msgstr "" -#: pretix/presale/views/order.py:1628 +#: pretix/presale/views/order.py:1630 msgid "You may only change your order in a way that increases the total price." msgstr "" -#: pretix/presale/views/order.py:1630 +#: pretix/presale/views/order.py:1632 msgid "You may not change your order in a way that changes the total price." msgstr "" -#: pretix/presale/views/order.py:1632 +#: pretix/presale/views/order.py:1634 msgid "You may not change your order in a way that would require a refund." msgstr "" -#: pretix/presale/views/order.py:1640 +#: pretix/presale/views/order.py:1642 msgid "" "You may not change your order in a way that increases the total price since " "payments are no longer being accepted for this event." msgstr "" -#: pretix/presale/views/order.py:1646 +#: pretix/presale/views/order.py:1648 msgid "" "You may not change your order in a way that requires additional payment " "while we are processing your current payment. Please check back after your " "current payment has been accepted." msgstr "" -#: pretix/presale/views/order.py:1662 pretix/presale/views/order.py:1693 +#: pretix/presale/views/order.py:1664 pretix/presale/views/order.py:1695 msgid "You cannot change this order." msgstr "" @@ -31283,15 +31329,15 @@ msgid "" "else." msgstr "" -#: pretix/presale/views/widget.py:397 +#: pretix/presale/views/widget.py:390 msgid "This ticket shop is currently disabled." msgstr "" -#: pretix/presale/views/widget.py:411 +#: pretix/presale/views/widget.py:404 msgid "The selected date does not exist in this event series." msgstr "" -#: pretix/presale/views/widget.py:474 +#: pretix/presale/views/widget.py:467 #, python-format msgid "from %(start_date)s" msgstr "" diff --git a/src/pretix/locale/az/LC_MESSAGES/djangojs.po b/src/pretix/locale/az/LC_MESSAGES/djangojs.po index 0d2c135b0e..804238c9cf 100644 --- a/src/pretix/locale/az/LC_MESSAGES/djangojs.po +++ b/src/pretix/locale/az/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-30 10:36+0000\n" +"POT-Creation-Date: 2025-06-26 09:11+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -131,7 +131,7 @@ msgstr "" #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167 #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:50 -#: pretix/static/pretixpresale/js/ui/cart.js:92 +#: pretix/static/pretixpresale/js/ui/cart.js:89 msgid "Continue" msgstr "" @@ -329,13 +329,13 @@ msgid "Currently inside" msgstr "" #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:71 -#: pretix/static/pretixcontrol/js/ui/question.js:137 +#: pretix/static/pretixcontrol/js/ui/question.js:136 #: pretix/static/pretixpresale/js/ui/questions.js:270 msgid "Yes" msgstr "" #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:72 -#: pretix/static/pretixcontrol/js/ui/question.js:138 +#: pretix/static/pretixcontrol/js/ui/question.js:137 #: pretix/static/pretixpresale/js/ui/questions.js:270 msgid "No" msgstr "" @@ -647,23 +647,23 @@ msgstr "" msgid "Selected only" msgstr "" -#: pretix/static/pretixcontrol/js/ui/main.js:782 +#: pretix/static/pretixcontrol/js/ui/main.js:811 msgid "Enter page number between 1 and %(max)s." msgstr "" -#: pretix/static/pretixcontrol/js/ui/main.js:785 +#: pretix/static/pretixcontrol/js/ui/main.js:814 msgid "Invalid page number." msgstr "" -#: pretix/static/pretixcontrol/js/ui/main.js:943 +#: pretix/static/pretixcontrol/js/ui/main.js:972 msgid "Use a different name internally" msgstr "" -#: pretix/static/pretixcontrol/js/ui/main.js:983 +#: pretix/static/pretixcontrol/js/ui/main.js:1012 msgid "Click to close" msgstr "" -#: pretix/static/pretixcontrol/js/ui/main.js:1064 +#: pretix/static/pretixcontrol/js/ui/main.js:1093 msgid "You have unsaved changes!" msgstr "" @@ -675,11 +675,11 @@ msgstr "" msgid "No results" msgstr "" -#: pretix/static/pretixcontrol/js/ui/question.js:42 +#: pretix/static/pretixcontrol/js/ui/question.js:41 msgid "Others" msgstr "" -#: pretix/static/pretixcontrol/js/ui/question.js:82 +#: pretix/static/pretixcontrol/js/ui/question.js:81 msgid "Count" msgstr "" @@ -689,42 +689,42 @@ msgid_plural "({num} more dates)" msgstr[0] "" msgstr[1] "" -#: pretix/static/pretixpresale/js/ui/cart.js:48 +#: pretix/static/pretixpresale/js/ui/cart.js:47 msgid "" "The items in your cart are no longer reserved for you. You can still " "complete your order as long as they’re available." msgstr "" -#: pretix/static/pretixpresale/js/ui/cart.js:50 +#: pretix/static/pretixpresale/js/ui/cart.js:49 msgid "Cart expired" msgstr "" -#: pretix/static/pretixpresale/js/ui/cart.js:59 -#: pretix/static/pretixpresale/js/ui/cart.js:87 +#: pretix/static/pretixpresale/js/ui/cart.js:58 +#: pretix/static/pretixpresale/js/ui/cart.js:84 msgid "Your cart is about to expire." msgstr "" -#: pretix/static/pretixpresale/js/ui/cart.js:64 +#: pretix/static/pretixpresale/js/ui/cart.js:62 msgid "The items in your cart are reserved for you for one minute." msgid_plural "The items in your cart are reserved for you for {num} minutes." msgstr[0] "" msgstr[1] "" -#: pretix/static/pretixpresale/js/ui/cart.js:86 +#: pretix/static/pretixpresale/js/ui/cart.js:83 msgid "Your cart has expired." msgstr "" -#: pretix/static/pretixpresale/js/ui/cart.js:89 +#: pretix/static/pretixpresale/js/ui/cart.js:86 msgid "" "The items in your cart are no longer reserved for you. You can still " "complete your order as long as they're available." msgstr "" -#: pretix/static/pretixpresale/js/ui/cart.js:90 +#: pretix/static/pretixpresale/js/ui/cart.js:87 msgid "Do you want to renew the reservation period?" msgstr "" -#: pretix/static/pretixpresale/js/ui/cart.js:93 +#: pretix/static/pretixpresale/js/ui/cart.js:90 msgid "Renew reservation" msgstr "" @@ -749,19 +749,16 @@ msgid "Google Pay" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:16 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:16 msgctxt "widget" msgid "Quantity" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:17 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:17 msgctxt "widget" msgid "Decrease quantity" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:18 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:18 msgctxt "widget" msgid "Increase quantity" msgstr "" @@ -777,166 +774,139 @@ msgid "Filter" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:21 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:19 msgctxt "widget" msgid "Price" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:22 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:20 #, javascript-format msgctxt "widget" msgid "Original price: %s" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:23 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:21 #, javascript-format msgctxt "widget" msgid "New price: %s" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:24 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:22 msgctxt "widget" msgid "Select" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:25 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:23 #, javascript-format msgctxt "widget" msgid "Select %s" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:26 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:24 #, javascript-format msgctxt "widget" msgid "Select variant %s" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:27 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:25 msgctxt "widget" msgid "Sold out" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:28 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:26 msgctxt "widget" msgid "Buy" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:29 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:27 msgctxt "widget" msgid "Register" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:30 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:28 msgctxt "widget" msgid "Reserved" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:31 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:29 msgctxt "widget" msgid "FREE" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:32 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:30 msgctxt "widget" msgid "from %(currency)s %(price)s" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:33 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:31 #, javascript-format msgctxt "widget" msgid "Image of %s" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:34 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:32 msgctxt "widget" msgid "incl. %(rate)s% %(taxname)s" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:35 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:33 msgctxt "widget" msgid "plus %(rate)s% %(taxname)s" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:36 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:34 msgctxt "widget" msgid "incl. taxes" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:37 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:35 msgctxt "widget" msgid "plus taxes" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:38 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:36 #, javascript-format msgctxt "widget" msgid "currently available: %s" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:39 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:37 msgctxt "widget" msgid "Only available with a voucher" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:40 #: pretix/static/pretixpresale/js/widget/widget.js:43 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:38 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:41 msgctxt "widget" msgid "Not yet available" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:41 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:39 msgctxt "widget" msgid "Not available anymore" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:42 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:40 msgctxt "widget" msgid "Currently not available" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:44 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:42 #, javascript-format msgctxt "widget" msgid "minimum amount to order: %s" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:45 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:43 msgctxt "widget" msgid "Close ticket shop" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:46 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:44 msgctxt "widget" msgid "The ticket shop could not be loaded." msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:47 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:45 msgctxt "widget" msgid "" "There are currently a lot of users in this ticket shop. Please open the shop " @@ -944,25 +914,21 @@ msgid "" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:49 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:47 msgctxt "widget" msgid "Open ticket shop" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:50 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:48 msgctxt "widget" msgid "Checkout" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:51 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:49 msgctxt "widget" msgid "The cart could not be created. Please try again later" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:52 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:50 msgctxt "widget" msgid "" "We could not create your cart, since there are currently too many users in " @@ -970,13 +936,11 @@ msgid "" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:54 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:52 msgctxt "widget" msgid "Waiting list" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:55 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:53 msgctxt "widget" msgid "" "You currently have an active cart for this event. If you select more " @@ -984,31 +948,26 @@ msgid "" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:57 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:55 msgctxt "widget" msgid "Resume checkout" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:58 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:56 msgctxt "widget" msgid "Redeem a voucher" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:59 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:57 msgctxt "widget" msgid "Redeem" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:60 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:58 msgctxt "widget" msgid "Voucher code" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:61 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:59 msgctxt "widget" msgid "Close" msgstr "" @@ -1024,73 +983,61 @@ msgid "You cannot cancel this operation. Please wait for loading to finish." msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:64 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:60 msgctxt "widget" msgid "Continue" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:65 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:61 msgctxt "widget" msgid "Show variants" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:66 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:62 msgctxt "widget" msgid "Hide variants" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:67 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:63 msgctxt "widget" msgid "Choose a different event" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:68 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:64 msgctxt "widget" msgid "Choose a different date" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:69 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:65 msgctxt "widget" msgid "Back" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:70 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:66 msgctxt "widget" msgid "Next month" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:71 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:67 msgctxt "widget" msgid "Previous month" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:72 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:68 msgctxt "widget" msgid "Next week" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:73 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:69 msgctxt "widget" msgid "Previous week" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:74 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:70 msgctxt "widget" msgid "Open seat selection" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:75 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:71 msgctxt "widget" msgid "" "Some or all ticket categories are currently sold out. If you want, you can " @@ -1099,137 +1046,110 @@ msgid "" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:76 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:72 msgctxt "widget" msgid "Load more" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:78 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:74 msgid "Mo" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:79 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:75 msgid "Tu" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:80 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:76 msgid "We" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:81 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:77 msgid "Th" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:82 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:78 msgid "Fr" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:83 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:79 msgid "Sa" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:84 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:80 msgid "Su" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:85 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:81 msgid "Monday" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:86 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:82 msgid "Tuesday" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:87 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:83 msgid "Wednesday" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:88 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:84 msgid "Thursday" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:89 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:85 msgid "Friday" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:90 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:86 msgid "Saturday" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:91 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:87 msgid "Sunday" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:94 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:90 msgid "January" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:95 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:91 msgid "February" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:96 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:92 msgid "March" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:97 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:93 msgid "April" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:98 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:94 msgid "May" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:99 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:95 msgid "June" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:100 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:96 msgid "July" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:101 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:97 msgid "August" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:102 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:98 msgid "September" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:103 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:99 msgid "October" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:104 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:100 msgid "November" msgstr "" #: pretix/static/pretixpresale/js/widget/widget.js:105 -#: pretix/static/pretixpresale/js/widget/widget.v1.js:101 msgid "December" msgstr "" diff --git a/src/pretix/locale/ca/LC_MESSAGES/django.po b/src/pretix/locale/ca/LC_MESSAGES/django.po index 89aff9f79b..597e697805 100644 --- a/src/pretix/locale/ca/LC_MESSAGES/django.po +++ b/src/pretix/locale/ca/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-30 10:35+0000\n" +"POT-Creation-Date: 2025-06-26 09:09+0000\n" "PO-Revision-Date: 2025-04-22 15:36+0000\n" "Last-Translator: Paul Berschick \n" "Language-Team: Catalan " "Nezapomeňte výše nastavit správné poplatky!" -#: pretix/base/payment.py:394 +#: pretix/base/payment.py:451 msgid "Text on invoices" msgstr "Text na fakturách" -#: pretix/base/payment.py:395 +#: pretix/base/payment.py:452 msgid "" "Will be printed just below the payment figures and above the closing text on " "invoices. This will only be used if the invoice is generated before the " @@ -6900,11 +6963,11 @@ msgstr "" "objednávky. Pokud je faktura vygenerována později, zobrazí se text, že již " "byla zaplacena." -#: pretix/base/payment.py:404 +#: pretix/base/payment.py:461 msgid "Restrict to countries" msgstr "Omezit na země" -#: pretix/base/payment.py:406 +#: pretix/base/payment.py:463 msgid "" "Only allow choosing this payment provider for invoice addresses in the " "selected countries. If you don't select any country, all countries are " @@ -6914,16 +6977,16 @@ msgstr "" "vybraných zemích. Pokud žádnou zemi nevyberete, jsou povoleny všechny země. " "Tato možnost je povolena pouze v případě, že je vyžadována fakturační adresa." -#: pretix/base/payment.py:425 +#: pretix/base/payment.py:482 msgid "" "Only allow the usage of this payment provider in the selected sales channels." msgstr "Omezí výběr této platební metody na vybrané prodejní kanály." -#: pretix/base/payment.py:429 +#: pretix/base/payment.py:486 msgid "Hide payment method" msgstr "Skrýt způsob platby" -#: pretix/base/payment.py:432 +#: pretix/base/payment.py:489 msgid "" "The payment method will not be shown by default but only to people who enter " "the shop through a special link." @@ -6931,44 +6994,44 @@ msgstr "" "Způsob platby se nezobrazuje ve výchozím nastavení, ale pouze osobám, které " "vstoupí do obchodu prostřednictvím speciálního odkazu." -#: pretix/base/payment.py:438 +#: pretix/base/payment.py:495 msgid "Link to enable payment method" msgstr "Odkaz na povolení způsobu platby" -#: pretix/base/payment.py:447 +#: pretix/base/payment.py:504 msgid "Share this link with customers who should use this payment method." msgstr "" "Sdílejte tento odkaz se zákazníky, kteří by měli tento způsob platby " "používat." -#: pretix/base/payment.py:452 +#: pretix/base/payment.py:509 msgid "Do not send a payment reminder mail" msgstr "" -#: pretix/base/payment.py:453 +#: pretix/base/payment.py:510 msgid "" "Users will not receive a reminder mail to pay for their order before it " "expires if they have chosen this payment method." msgstr "" -#: pretix/base/payment.py:500 +#: pretix/base/payment.py:557 msgctxt "invoice" msgid "The payment for this invoice has already been received." msgstr "Platba za tuto fakturu již byla přijata." -#: pretix/base/payment.py:970 +#: pretix/base/payment.py:1022 #, fuzzy #| msgid "This payment can not be canceled at the moment." msgid "" "This payment is already being processed and can not be canceled any more." msgstr "Tuto platbu nelze dočasně zrušit." -#: pretix/base/payment.py:984 +#: pretix/base/payment.py:1036 msgid "Automatic refunds are not supported by this payment provider." msgstr "" "Tento poskytovatel platebních služeb nepodporuje automatické vrácení peněz." -#: pretix/base/payment.py:1075 +#: pretix/base/payment.py:1127 msgid "" "No payment is required as this order only includes products which are free " "of charge." @@ -6976,22 +7039,22 @@ msgstr "" "Není třeba platit, protože tato objednávka obsahuje pouze produkty, které " "jsou zdarma." -#: pretix/base/payment.py:1082 +#: pretix/base/payment.py:1134 msgid "Free of charge" msgstr "Zdarma" -#: pretix/base/payment.py:1114 +#: pretix/base/payment.py:1166 msgid "Box office" msgstr "Pokladna" -#: pretix/base/payment.py:1162 pretix/base/payment.py:1181 +#: pretix/base/payment.py:1214 pretix/base/payment.py:1233 #: pretix/plugins/manualpayment/apps.py:30 #: pretix/plugins/manualpayment/apps.py:33 #: pretix/plugins/manualpayment/apps.py:39 msgid "Manual payment" msgstr "Manuální platba" -#: pretix/base/payment.py:1167 pretix/plugins/banktransfer/payment.py:202 +#: pretix/base/payment.py:1219 pretix/plugins/banktransfer/payment.py:202 msgid "" "In test mode, you can just manually mark this order as paid in the backend " "after it has been created." @@ -6999,16 +7062,16 @@ msgstr "" "V testovacím režimu můžete tuto objednávku po jejím vytvoření v backendu " "ručně označit jako zaplacenou." -#: pretix/base/payment.py:1188 pretix/base/payment.py:1332 +#: pretix/base/payment.py:1240 pretix/base/payment.py:1427 #: pretix/plugins/banktransfer/payment.py:156 msgid "Payment method name" msgstr "Název platební metody" -#: pretix/base/payment.py:1192 +#: pretix/base/payment.py:1244 msgid "Payment process description during checkout" msgstr "Popis platebního procesu v průběhu objednávky" -#: pretix/base/payment.py:1193 +#: pretix/base/payment.py:1245 msgid "" "This text will be shown during checkout when the user selects this payment " "method. It should give a short explanation on this payment method." @@ -7016,11 +7079,11 @@ msgstr "" "Tento text se zobrazí na pokladně, když uživatel zvolí tento způsob platby. " "Měl by obsahovat krátké vysvětlení k této platební metodě." -#: pretix/base/payment.py:1198 +#: pretix/base/payment.py:1250 msgid "Payment process description in order confirmation emails" msgstr "Popis platebního procesu v e-mailech s potvrzením objednávky" -#: pretix/base/payment.py:1199 +#: pretix/base/payment.py:1251 #, python-brace-format msgid "" "This text will be included for the {payment_info} placeholder in order " @@ -7033,11 +7096,11 @@ msgstr "" "platbě. Můžete použít zástupné znaky {order}, {amount}, {currency} a " "{amount_with_currency}." -#: pretix/base/payment.py:1206 +#: pretix/base/payment.py:1258 msgid "Payment process description for pending orders" msgstr "Popis platebního procesu pro nevyřízené objednávky" -#: pretix/base/payment.py:1207 +#: pretix/base/payment.py:1259 #, python-brace-format msgid "" "This text will be shown on the order confirmation page for pending orders. " @@ -7048,7 +7111,7 @@ msgstr "" "objednávek. Měl by uživatele instruovat, jak má pokračovat v platbě. Můžete " "použít zástupné znaky {order}, {amount}, {currency} a {amount_with_currency}." -#: pretix/base/payment.py:1215 pretix/plugins/banktransfer/payment.py:151 +#: pretix/base/payment.py:1267 pretix/plugins/banktransfer/payment.py:151 msgid "" "Create an invoice for orders using bank transfer immediately if the event is " "otherwise configured to create invoices after payment is completed." @@ -7057,91 +7120,32 @@ msgstr "" "je akce jinak nakonfigurována tak, aby se faktury vytvářely až po dokončení " "platby." -#: pretix/base/payment.py:1266 +#: pretix/base/payment.py:1318 msgid "Offsetting" msgstr "Zúčtování" -#: pretix/base/payment.py:1280 pretix/control/views/orders.py:1265 +#: pretix/base/payment.py:1332 pretix/control/views/orders.py:1266 msgid "You entered an order that could not be found." msgstr "Zadali jste objednávku, kterou se nepodařilo najít." -#: pretix/base/payment.py:1309 +#: pretix/base/payment.py:1361 #, python-format msgid "Balanced against orders: %s" msgstr "Vyrovnané proti objednávkám: %s" -#: pretix/base/payment.py:1338 +#: pretix/base/payment.py:1433 msgid "Payment method description" msgstr "Popis způsobu platby" -#: pretix/base/payment.py:1355 +#: pretix/base/payment.py:1463 msgid "In test mode, only test cards will work." msgstr "V testovacím režimu budou fungovat pouze testovací poukázky." -#: pretix/base/payment.py:1436 pretix/base/payment.py:1501 -#: pretix/base/payment.py:1546 pretix/base/payment.py:1548 -msgid "This gift card does not support this currency." -msgstr "Tato dárková poukázky tuto měnu nepodporuje." - -#: pretix/base/payment.py:1438 pretix/base/payment.py:1504 -#: pretix/base/payment.py:1554 -msgid "This gift card can only be used in test mode." -msgstr "Tuto dárkovou poukázku lze použít pouze v testovacím režimu." - -#: pretix/base/payment.py:1440 pretix/base/payment.py:1507 -#: pretix/base/payment.py:1556 -msgid "Only test gift cards can be used in test mode." -msgstr "V testovacím režimu lze používat pouze testovací dárkové poukázky." - -#: pretix/base/payment.py:1442 pretix/base/payment.py:1510 -#: pretix/base/payment.py:1558 -msgid "This gift card is no longer valid." -msgstr "Tato dárková poukázky již není platná." - -#: pretix/base/payment.py:1444 pretix/base/payment.py:1513 -msgid "All credit on this gift card has been used." -msgstr "Veškerý kredit na této dárkové poukázce byl vyčerpán." - -#: pretix/base/payment.py:1448 -msgid "This gift card is already used for your payment." -msgstr "Tato dárková poukázka je již použita pro vaši platbu." - -#: pretix/base/payment.py:1463 pretix/base/payment.py:1493 -#: pretix/base/payment.py:1536 -msgid "You cannot pay with gift cards when buying a gift card." -msgstr "Při nákupu dárkové poukázky nelze platit dárkovými poukazy." - -#: pretix/base/payment.py:1467 -#, fuzzy -#| msgid "Please enter the correct result." -msgid "Please enter the code of your gift card." -msgstr "Zadejte prosím správný výsledek." - -#: pretix/base/payment.py:1483 pretix/base/payment.py:1526 -msgid "" -"You entered a voucher instead of a gift card. Vouchers can only be entered " -"on the first page of the shop below the product selection." -msgstr "" -"Místo dárkové karty jste zadali poukaz. Poukazy lze zadávat pouze na první " -"stránce obchodu pod výběrem produktů." - -#: pretix/base/payment.py:1486 pretix/base/payment.py:1529 -msgid "This gift card is not known." -msgstr "Tento dárkový poukaz není znám." - -#: pretix/base/payment.py:1488 pretix/base/payment.py:1531 -msgid "" -"This gift card can not be redeemed since its code is not unique. Please " -"contact the organizer of this event." -msgstr "" -"Tuto dárkovou kartu nelze uplatnit, protože její kód není jedinečný. " -"Kontaktujte prosím organizátora této akce." - -#: pretix/base/payment.py:1550 +#: pretix/base/payment.py:1593 msgid "This gift card is not accepted by this event organizer." msgstr "Tato dárková karta není organizátorem akce akceptována." -#: pretix/base/payment.py:1552 +#: pretix/base/payment.py:1595 msgid "This gift card was used in the meantime. Please try again." msgstr "Tato dárková karta byla mezitím použita. Zkuste to prosím znovu." @@ -7225,8 +7229,8 @@ msgstr "Jan Novák" #: pretix/control/templates/pretixcontrol/order/index.html:543 #: pretix/plugins/badges/exporters.py:496 #: pretix/plugins/ticketoutputpdf/exporters.py:95 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:181 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:184 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:182 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:185 msgid "Attendee company" msgstr "Účastnická firma" @@ -7447,7 +7451,7 @@ msgstr "Datum a čas tisku" msgid "Printing time" msgstr "Datum tisku" -#: pretix/base/pdf.py:411 pretix/control/forms/item.py:731 +#: pretix/base/pdf.py:411 pretix/control/forms/item.py:737 #, fuzzy msgid "Purchase date" msgstr "Zakoupeno" @@ -7743,7 +7747,7 @@ msgstr[2] "" #: pretix/base/services/cart.py:145 pretix/base/services/orders.py:154 #: pretix/presale/templates/pretixpresale/event/index.html:171 -#: pretix/presale/views/waiting.py:145 pretix/presale/views/widget.py:788 +#: pretix/presale/views/waiting.py:145 pretix/presale/views/widget.py:781 msgid "The booking period for this event has not yet started." msgstr "Rezervační období pro tuto akci ještě nezačalo." @@ -8280,12 +8284,12 @@ msgstr "" "\n" "Tento e-mail obdržíte, protože jste to zadali v nastavení akce." -#: pretix/base/services/mail.py:121 +#: pretix/base/services/mail.py:128 #, fuzzy msgid "This prefix has been set in your event or organizer settings." msgstr "Vybraný typ média není v nastavení organizéru povolen." -#: pretix/base/services/mail.py:278 +#: pretix/base/services/mail.py:285 #, python-brace-format msgid "" "You are receiving this email because someone placed an order for {event} for " @@ -8294,7 +8298,7 @@ msgstr "" "Tento e-mail jste obdrželi, protože pro vás někdo zadal objednávku na " "{event}." -#: pretix/base/services/mail.py:282 pretix/base/services/mail.py:298 +#: pretix/base/services/mail.py:289 pretix/base/services/mail.py:305 #, python-brace-format msgid "" "You can view your order details at the following URL:\n" @@ -8304,12 +8308,12 @@ msgstr "" "URL:\n" "{orderurl}." -#: pretix/base/services/mail.py:294 +#: pretix/base/services/mail.py:301 #, python-brace-format msgid "You are receiving this email because you placed an order for {event}." msgstr "Tento e-mail jste obdrželi, protože jste zadali objednávku na {event}." -#: pretix/base/services/mail.py:478 +#: pretix/base/services/mail.py:485 msgctxt "attachment_filename" msgid "Calendar invite" msgstr "Zápis do kalendáře" @@ -8601,8 +8605,8 @@ msgstr "Nové datum skončení platnosti musí být v budoucnosti." msgid "This order is not pending approval." msgstr "Tato objednávka není předmětem schvalování." -#: pretix/base/services/orders.py:511 pretix/presale/views/order.py:928 -#: pretix/presale/views/order.py:982 +#: pretix/base/services/orders.py:511 pretix/presale/views/order.py:930 +#: pretix/presale/views/order.py:984 msgid "You cannot cancel this order." msgstr "Tuto objednávku nelze zrušit." @@ -9123,7 +9127,7 @@ msgid "Show exchange rates" msgstr "Zobrazit směnné kurzy" #: pretix/base/settings.py:524 pretix/base/settings.py:532 -#: pretix/control/forms/item.py:619 +#: pretix/control/forms/item.py:625 msgid "Never" msgstr "Nikdy" @@ -12679,6 +12683,14 @@ msgid "Product variation \"{product} – {variation}\" becomes unavailable" msgstr "Varianta produktu \"{product} - {variation}\" již není k dispozici" #: pretix/base/timeline.py:351 +#, fuzzy, python-brace-format +#| msgctxt "timeline" +#| msgid "Payment provider \"{name}\" can no longer be selected" +msgctxt "timeline" +msgid "Payment provider \"{name}\" becomes active" +msgstr "Poskytovatel platby \"{name}\" již nelze vybrat" + +#: pretix/base/timeline.py:369 #, python-brace-format msgctxt "timeline" msgid "Payment provider \"{name}\" can no longer be selected" @@ -12900,12 +12912,12 @@ msgid "Copy configuration from" msgstr "Kopírování konfigurace z" #: pretix/control/forms/event.py:318 pretix/control/forms/event.py:321 -#: pretix/control/forms/item.py:408 +#: pretix/control/forms/item.py:414 msgid "Do not copy" msgstr "Nepřevzít" -#: pretix/control/forms/event.py:337 pretix/control/forms/item.py:1294 -#: pretix/control/forms/subevents.py:407 +#: pretix/control/forms/event.py:337 pretix/control/forms/item.py:1300 +#: pretix/control/forms/subevents.py:414 #, python-brace-format msgid "Default ({value})" msgstr "Výchozí hodnota ({value})" @@ -14221,24 +14233,24 @@ msgid "" "configuration below." msgstr "" -#: pretix/control/forms/item.py:142 pretix/control/forms/item.py:212 +#: pretix/control/forms/item.py:142 pretix/control/forms/item.py:218 msgid "This field is required" msgstr "Toto pole je povinné" -#: pretix/control/forms/item.py:214 +#: pretix/control/forms/item.py:220 msgid "Dependencies between questions are not supported during check-in." msgstr "Závislosti mezi otázkami nejsou při check-inu podporovány." -#: pretix/control/forms/item.py:309 +#: pretix/control/forms/item.py:315 #, fuzzy msgid "No products" msgstr "Všechny produkty" -#: pretix/control/forms/item.py:375 +#: pretix/control/forms/item.py:381 msgid "The product should exist in multiple variations" msgstr "Produkt by měl existovat ve více variantách" -#: pretix/control/forms/item.py:376 +#: pretix/control/forms/item.py:382 msgid "" "Select this option e.g. for t-shirts that come in multiple sizes. You can " "select the variations in the next step." @@ -14246,72 +14258,72 @@ msgstr "" "Tuto možnost vyberte např. u triček, která se dodávají v několika " "velikostech. Varianty můžete vybrat v dalším kroku." -#: pretix/control/forms/item.py:396 pretix/control/forms/item.py:721 +#: pretix/control/forms/item.py:402 pretix/control/forms/item.py:727 msgid "No category" msgstr "Žádná kategorie" -#: pretix/control/forms/item.py:403 +#: pretix/control/forms/item.py:409 msgid "No taxation" msgstr "Žádné daně" -#: pretix/control/forms/item.py:405 +#: pretix/control/forms/item.py:411 msgid "Copy product information" msgstr "Kopírovat informace o produktu" -#: pretix/control/forms/item.py:416 +#: pretix/control/forms/item.py:422 msgid "Do not add to a quota now" msgstr "Teď do kvóty nepřidávat" -#: pretix/control/forms/item.py:417 +#: pretix/control/forms/item.py:423 msgid "Add product to an existing quota" msgstr "Přidat produkt do existující kvóty" -#: pretix/control/forms/item.py:418 +#: pretix/control/forms/item.py:424 msgid "Create a new quota for this product" msgstr "Vytvořit novou kvótu pro tento produkt" -#: pretix/control/forms/item.py:424 +#: pretix/control/forms/item.py:430 msgid "Quota options" msgstr "Možnosti kvót" -#: pretix/control/forms/item.py:432 +#: pretix/control/forms/item.py:438 msgid "Add to existing quota" msgstr "Přidat do existující kvóty" -#: pretix/control/forms/item.py:441 +#: pretix/control/forms/item.py:447 msgid "New quota name" msgstr "Název nové kvóty" -#: pretix/control/forms/item.py:447 +#: pretix/control/forms/item.py:453 msgid "Size" msgstr "Velikost" -#: pretix/control/forms/item.py:448 +#: pretix/control/forms/item.py:454 msgid "Number of tickets" msgstr "Počet vstupenek" -#: pretix/control/forms/item.py:580 +#: pretix/control/forms/item.py:586 msgid "Quota name is required." msgstr "Název kvóty je povinný." -#: pretix/control/forms/item.py:585 +#: pretix/control/forms/item.py:591 msgid "Please select a quota." msgstr "Vyberte prosím kvótu." -#: pretix/control/forms/item.py:607 pretix/plugins/badges/forms.py:85 +#: pretix/control/forms/item.py:613 pretix/plugins/badges/forms.py:85 #: pretix/plugins/ticketoutputpdf/forms.py:55 msgid "(Event default)" msgstr "(Standardní nastavení akce)" -#: pretix/control/forms/item.py:617 +#: pretix/control/forms/item.py:623 msgid "Choose automatically depending on event settings" msgstr "Automatická volba v závislosti na nastavení akce" -#: pretix/control/forms/item.py:618 +#: pretix/control/forms/item.py:624 msgid "Yes, if ticket generation is enabled in general" msgstr "Ano, pokud je generování vstupenek obecně zapnuto" -#: pretix/control/forms/item.py:636 +#: pretix/control/forms/item.py:642 msgid "" "e.g. This reduced price is available for full-time students, jobless and " "people over 65. This ticket includes access to all parts of the event, " @@ -14321,26 +14333,26 @@ msgstr "" "65 let. Tato vstupenka obsahuje vstup do všech částí akce s výjimkou VIP " "zóny." -#: pretix/control/forms/item.py:680 +#: pretix/control/forms/item.py:686 msgid "" "This option is deprecated. For new products, use the newer option below that " "refers to another product instead of a quota." msgstr "" -#: pretix/control/forms/item.py:691 pretix/control/forms/item.py:707 +#: pretix/control/forms/item.py:697 pretix/control/forms/item.py:713 msgid "Shown independently of other products" msgstr "Zobrazeno bez ohledu na ostatní produkty" -#: pretix/control/forms/item.py:732 +#: pretix/control/forms/item.py:738 #, fuzzy msgid "Date chosen by customer" msgstr "Zrušeno zákazníkem" -#: pretix/control/forms/item.py:741 +#: pretix/control/forms/item.py:747 msgid "No membership granted" msgstr "Členství nebylo uděleno" -#: pretix/control/forms/item.py:760 +#: pretix/control/forms/item.py:766 msgid "" "Gift card products should use a tax rule with a rate of 0 percent since " "sales tax will be applied when the gift card is redeemed." @@ -14348,14 +14360,14 @@ msgstr "" "Produkty s dárkovými kartami by měly používat daňové pravidlo se sazbou 0 %, " "protože při uplatnění dárkové karty bude uplatněna daň z prodeje." -#: pretix/control/forms/item.py:766 +#: pretix/control/forms/item.py:772 msgid "" "Do not set a specific validity for gift card products as it will not " "restrict the validity of the gift card. A validity of gift cards can be set " "in your organizer settings." msgstr "" -#: pretix/control/forms/item.py:785 pretix/control/forms/item.py:1052 +#: pretix/control/forms/item.py:791 pretix/control/forms/item.py:1058 msgid "" "If a valid membership is required, at least one valid membership type needs " "to be selected." @@ -14363,7 +14375,7 @@ msgstr "" "Pokud je vyžadováno platné členství, je třeba vybrat alespoň jeden platný " "typ členství." -#: pretix/control/forms/item.py:796 +#: pretix/control/forms/item.py:802 msgid "" "Your product grants a non-transferable membership and should therefore be a " "personalized admission ticket. Otherwise customers might not be able to use " @@ -14375,17 +14387,17 @@ msgstr "" "později využít. Pokud chcete, aby členství bylo nepersonalizované, nastavte " "typ členství jako přenosné." -#: pretix/control/forms/item.py:805 +#: pretix/control/forms/item.py:811 msgid "The start of validity must be before the end of validity." msgstr "Začátek platnosti musí být před koncem platnosti." -#: pretix/control/forms/item.py:812 +#: pretix/control/forms/item.py:818 msgid "" "You have selected dynamic validity but have not entered a time period. This " "would render the tickets unusable." msgstr "" -#: pretix/control/forms/item.py:917 +#: pretix/control/forms/item.py:923 #, python-format msgid "" "The variation \"%s\" cannot be deleted because it has already been ordered " @@ -14396,19 +14408,19 @@ msgstr "" "právě nachází v jeho košíku. Nastavte prosím místo toho variantu jako " "\"neaktivní\"." -#: pretix/control/forms/item.py:994 +#: pretix/control/forms/item.py:1000 msgid "Use value from product" msgstr "Využití hodnoty z produktu" -#: pretix/control/forms/item.py:1079 +#: pretix/control/forms/item.py:1085 msgid "Add-ons" msgstr "Doplňky" -#: pretix/control/forms/item.py:1103 +#: pretix/control/forms/item.py:1109 msgid "You added the same add-on category twice" msgstr "Dvakrát jste přidali stejnou kategorii doplňků" -#: pretix/control/forms/item.py:1148 +#: pretix/control/forms/item.py:1154 msgid "" "Be aware that setting a minimal number makes it impossible to buy this " "product if all available add-ons are sold out." @@ -14416,21 +14428,21 @@ msgstr "" "Uvědomte si, že nastavení minimálního počtu znemožňuje nákup tohoto " "produktu, pokud jsou všechny dostupné doplňky vyprodány." -#: pretix/control/forms/item.py:1155 +#: pretix/control/forms/item.py:1161 msgid "Bundled products" msgstr "Balíčky produktů" -#: pretix/control/forms/item.py:1205 +#: pretix/control/forms/item.py:1211 msgid "You added the same bundled product twice." msgstr "Dvakrát jste přidali stejný balíček produktů." -#: pretix/control/forms/item.py:1211 +#: pretix/control/forms/item.py:1217 #: pretix/control/templates/pretixcontrol/item/include_bundles.html:23 #: pretix/control/templates/pretixcontrol/item/include_bundles.html:50 msgid "Bundled product" msgstr "Balený produkt" -#: pretix/control/forms/item.py:1236 pretix/control/forms/orders.py:367 +#: pretix/control/forms/item.py:1242 pretix/control/forms/orders.py:367 #: pretix/control/forms/orders.py:557 msgid "inactive" msgstr "neaktivní" @@ -14687,7 +14699,7 @@ msgstr "Doplňkový produkt k" #: pretix/control/templates/pretixcontrol/order/change.html:127 #: pretix/control/views/vouchers.py:120 #: pretix/presale/templates/pretixpresale/event/checkout_membership.html:23 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:95 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:99 msgid "Seat" msgstr "Sedadlo" @@ -15076,7 +15088,7 @@ msgstr "Účet s tímto ID zákazníka je již zaregistrován." #: pretix/control/forms/organizer.py:908 #: pretix/control/templates/pretixcontrol/organizers/customer.html:61 -#: pretix/presale/forms/customer.py:168 pretix/presale/forms/customer.py:489 +#: pretix/presale/forms/customer.py:169 pretix/presale/forms/customer.py:493 msgid "Phone" msgstr "Telefon" @@ -15195,9 +15207,9 @@ msgstr "Volitelné" #: pretix/control/forms/renderers.py:148 #: pretix/control/templates/pretixcontrol/organizers/device_bulk_edit.html:26 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:48 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:197 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:284 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:49 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:192 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:286 msgctxt "form_bulk" msgid "change" msgstr "změnit" @@ -15251,7 +15263,7 @@ msgid "last" msgstr "poslední" #: pretix/control/forms/rrule.py:110 pretix/control/forms/rrule.py:149 -#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:21 +#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:20 msgid "Day" msgstr "Den" @@ -15267,15 +15279,15 @@ msgstr "Zachovat současné hodnoty" msgid "Selection contains various values" msgstr "Výběr obsahuje různé hodnoty" -#: pretix/control/forms/subevents.py:285 pretix/control/forms/subevents.py:314 +#: pretix/control/forms/subevents.py:292 pretix/control/forms/subevents.py:321 msgid "The end of availability should be after the start of availability." msgstr "Konec dostupnosti by měl být po začátku dostupnosti." -#: pretix/control/forms/subevents.py:347 +#: pretix/control/forms/subevents.py:354 msgid "Available_until" msgstr "K dispozici do" -#: pretix/control/forms/subevents.py:466 +#: pretix/control/forms/subevents.py:473 msgid "Exclude these dates instead of adding them." msgstr "Místo přidání těchto dat je vylučte." @@ -15287,7 +15299,7 @@ msgstr "Vaše změny se nepodařilo uložit. Podrobnosti naleznete níže." msgid "Specific seat ID" msgstr "ID konkrétního místa" -#: pretix/control/forms/vouchers.py:201 pretix/presale/forms/waitinglist.py:101 +#: pretix/control/forms/vouchers.py:201 pretix/presale/forms/waitinglist.py:103 msgid "Invalid product selected." msgstr "Byl zvolen neplatný produkt." @@ -15636,7 +15648,7 @@ msgid "The check-in of position #{posid} on list \"{list}\" has been reverted." msgstr "Check-in pozice #{posid} na seznamu \"{list}\" byl navrácen." #: pretix/control/logdisplay.py:343 pretix/control/logdisplay.py:345 -#: pretix/control/logdisplay.py:891 pretix/control/logdisplay.py:893 +#: pretix/control/logdisplay.py:887 pretix/control/logdisplay.py:889 msgid "(unknown)" msgstr "(neznámý)" @@ -15689,8 +15701,8 @@ msgstr "Uživatel potvrdil následující zprávu: \"{}\"" msgid "The order has been canceled (comment: \"{comment}\")." msgstr "Objednávka byla zrušena (komentář: \"{comment}\")." -#: pretix/control/logdisplay.py:406 pretix/control/views/orders.py:1573 -#: pretix/presale/views/order.py:1047 +#: pretix/control/logdisplay.py:406 pretix/control/views/orders.py:1574 +#: pretix/presale/views/order.py:1049 msgid "The order has been canceled." msgstr "Objednávka byla zrušena." @@ -15699,11 +15711,11 @@ msgstr "Objednávka byla zrušena." msgid "Position #{posid} has been printed at {datetime} with type \"{type}\"." msgstr "Pozice #{posid} byla zapsána v {datetime} s typem \"{type}\"." -#: pretix/control/logdisplay.py:428 pretix/control/logdisplay.py:741 +#: pretix/control/logdisplay.py:428 pretix/control/logdisplay.py:737 msgid "The settings of a payment provider have been changed." msgstr "Nastavení jedné z platebních metod bylo změněno." -#: pretix/control/logdisplay.py:431 pretix/control/logdisplay.py:740 +#: pretix/control/logdisplay.py:431 pretix/control/logdisplay.py:736 msgid "The settings of a ticket output provider have been changed." msgstr "Bylo změněno nastavení metody stahování lístků." @@ -15746,11 +15758,11 @@ msgstr "" msgid "The order has been set to require payment before use." msgstr "Objednávka byla nastavena tak, aby před použitím vyžadovala platbu." -#: pretix/control/logdisplay.py:450 pretix/control/views/orders.py:1578 +#: pretix/control/logdisplay.py:450 pretix/control/views/orders.py:1579 msgid "The order has been marked as expired." msgstr "Objednávka byla označena jako prošlá." -#: pretix/control/logdisplay.py:451 pretix/control/views/orders.py:1476 +#: pretix/control/logdisplay.py:451 pretix/control/views/orders.py:1477 msgid "The order has been marked as paid." msgstr "Objednávka byla označena jako zaplacená." @@ -15762,7 +15774,7 @@ msgstr "Žádost o zrušení byla smazána." msgid "The order has been refunded." msgstr "Objednávka byla vrácena." -#: pretix/control/logdisplay.py:454 pretix/control/views/orders.py:1861 +#: pretix/control/logdisplay.py:454 pretix/control/views/orders.py:1862 msgid "The order has been reactivated." msgstr "Objednávka byla reaktivována." @@ -15774,7 +15786,7 @@ msgstr "Objednávka byla vytvořena." msgid "The order requires approval before it can continue to be processed." msgstr "Před dalším zpracováním objednávky je třeba ji schválit." -#: pretix/control/logdisplay.py:458 pretix/control/views/orders.py:800 +#: pretix/control/logdisplay.py:458 pretix/control/views/orders.py:801 msgid "The order has been approved." msgstr "Objednávka byla schválena." @@ -15811,17 +15823,17 @@ msgstr "Účet zákazníka byl změněn." msgid "The order locale has been changed." msgstr "Jazyk objednávky byl změněn." -#: pretix/control/logdisplay.py:469 pretix/control/views/orders.py:1617 -#: pretix/presale/views/order.py:739 pretix/presale/views/order.py:812 +#: pretix/control/logdisplay.py:469 pretix/control/views/orders.py:1618 +#: pretix/presale/views/order.py:741 pretix/presale/views/order.py:814 msgid "The invoice has been generated." msgstr "Faktura byla vytvořena." -#: pretix/control/logdisplay.py:470 pretix/control/views/orders.py:1688 +#: pretix/control/logdisplay.py:470 pretix/control/views/orders.py:1689 msgid "The invoice has been regenerated." msgstr "Faktura byla přegenerována." -#: pretix/control/logdisplay.py:471 pretix/control/views/orders.py:1719 -#: pretix/presale/views/order.py:825 +#: pretix/control/logdisplay.py:471 pretix/control/views/orders.py:1720 +#: pretix/presale/views/order.py:827 msgid "The invoice has been reissued." msgstr "Faktura byla vystavena znovu." @@ -16079,7 +16091,7 @@ msgstr "Pořadatel byl změněn." msgid "The organizer settings have been changed." msgstr "Nastavení organizátoru byla změněna." -#: pretix/control/logdisplay.py:625 pretix/control/logdisplay.py:748 +#: pretix/control/logdisplay.py:625 pretix/control/logdisplay.py:744 msgid "The footer links have been changed." msgstr "Byly změněny odkazy v zápatí." @@ -16350,405 +16362,393 @@ msgstr "" msgid "The organizer \"{name}\" has been deleted." msgstr "Organizátor \"{name}\" byl smazán." -#: pretix/control/logdisplay.py:699 pretix/control/logdisplay.py:700 +#: pretix/control/logdisplay.py:699 pretix/control/logdisplay.py:905 msgid "A voucher has been sent to a person on the waiting list." msgstr "Osobě na čekací listině byla zaslána poukázka." -#: pretix/control/logdisplay.py:701 -msgid "An entry has been removed from the waiting list." -msgstr "Záznam byl odstraněn z čekacího seznamu." - -#: pretix/control/logdisplay.py:702 +#: pretix/control/logdisplay.py:700 msgid "An entry has been transferred to another waiting list." msgstr "Záznam byl přesunut na jiný čekací seznam." -#: pretix/control/logdisplay.py:703 -msgid "An entry has been changed on the waiting list." -msgstr "Záznam na čekací listině byl změněn." - -#: pretix/control/logdisplay.py:704 -msgid "An entry has been added to the waiting list." -msgstr "Na čekací listinu byl přidán záznam." - -#: pretix/control/logdisplay.py:705 +#: pretix/control/logdisplay.py:701 msgid "The team has been created." msgstr "Tým byl vytvořen." -#: pretix/control/logdisplay.py:706 +#: pretix/control/logdisplay.py:702 msgid "The team settings have been changed." msgstr "Nastavení týmu byla změněna." -#: pretix/control/logdisplay.py:707 +#: pretix/control/logdisplay.py:703 msgid "The team has been deleted." msgstr "Tým byl smazán." -#: pretix/control/logdisplay.py:708 pretix/control/views/organizer.py:2012 +#: pretix/control/logdisplay.py:704 pretix/control/views/organizer.py:2012 msgid "The gate has been created." msgstr "Stanice byla vytvořena." -#: pretix/control/logdisplay.py:709 +#: pretix/control/logdisplay.py:705 msgid "The gate has been changed." msgstr "Stanice byla změněna." -#: pretix/control/logdisplay.py:710 +#: pretix/control/logdisplay.py:706 msgid "The gate has been deleted." msgstr "Stanice byla zrušena." -#: pretix/control/logdisplay.py:711 +#: pretix/control/logdisplay.py:707 msgctxt "subevent" msgid "The event date has been deleted." msgstr "Termín akce byl odstraněn." -#: pretix/control/logdisplay.py:712 +#: pretix/control/logdisplay.py:708 msgctxt "subevent" msgid "The event date has been canceled." msgstr "Termín akce byl zrušen." -#: pretix/control/logdisplay.py:713 +#: pretix/control/logdisplay.py:709 msgctxt "subevent" msgid "The event date has been changed." msgstr "Termín akce byl změněn." -#: pretix/control/logdisplay.py:714 +#: pretix/control/logdisplay.py:710 msgctxt "subevent" msgid "The event date has been created." msgstr "Termín akce byl vytvořen." -#: pretix/control/logdisplay.py:715 +#: pretix/control/logdisplay.py:711 msgctxt "subevent" msgid "A quota has been added to the event date." msgstr "K termínu akce byla přidána kvóta." -#: pretix/control/logdisplay.py:716 +#: pretix/control/logdisplay.py:712 msgctxt "subevent" msgid "A quota has been changed on the event date." msgstr "Pro datum akce byla změněna kvóta." -#: pretix/control/logdisplay.py:717 +#: pretix/control/logdisplay.py:713 msgctxt "subevent" msgid "A quota has been removed from the event date." msgstr "Z termínu akce byla odstraněna kvóta." -#: pretix/control/logdisplay.py:718 +#: pretix/control/logdisplay.py:714 msgid "The device has been created." msgstr "Zařízení bylo vytvořeno." -#: pretix/control/logdisplay.py:719 +#: pretix/control/logdisplay.py:715 msgid "The device has been changed." msgstr "Zařízení bylo změněno." -#: pretix/control/logdisplay.py:720 +#: pretix/control/logdisplay.py:716 msgid "Access of the device has been revoked." msgstr "Přístup zařízení byl zrušen." -#: pretix/control/logdisplay.py:721 +#: pretix/control/logdisplay.py:717 msgid "The device has been initialized." msgstr "Zařízení bylo inicializováno." -#: pretix/control/logdisplay.py:722 +#: pretix/control/logdisplay.py:718 msgid "The access token of the device has been regenerated." msgstr "Přístupový token zařízení byl obnoven." -#: pretix/control/logdisplay.py:723 +#: pretix/control/logdisplay.py:719 msgid "The device has notified the server of an hardware or software update." msgstr "Zařízení oznámilo serveru aktualizaci hardwaru nebo softwaru." -#: pretix/control/logdisplay.py:724 +#: pretix/control/logdisplay.py:720 msgid "The gift card has been created." msgstr "Dárková karta byla vytvořena." -#: pretix/control/logdisplay.py:725 pretix/control/views/organizer.py:1656 +#: pretix/control/logdisplay.py:721 pretix/control/views/organizer.py:1656 msgid "The gift card has been changed." msgstr "Dárková karta byla změněna." -#: pretix/control/logdisplay.py:726 +#: pretix/control/logdisplay.py:722 msgid "A manual transaction has been performed." msgstr "Byla provedena manuální transakce." -#: pretix/control/logdisplay.py:727 +#: pretix/control/logdisplay.py:723 #, python-brace-format msgid "The token \"{name}\" has been created." msgstr "Byl vytvořen token \"{name}\"." -#: pretix/control/logdisplay.py:728 +#: pretix/control/logdisplay.py:724 #, python-brace-format msgid "The token \"{name}\" has been revoked." msgstr "Token \"{name}\" byl odvolán." -#: pretix/control/logdisplay.py:735 +#: pretix/control/logdisplay.py:731 msgid "A meta property has been added to this event." msgstr "K této akci byla přidána meta-vlastnost." -#: pretix/control/logdisplay.py:736 +#: pretix/control/logdisplay.py:732 msgid "A meta property has been removed from this event." msgstr "Z této akce byla odstraněna meta-vlastnost." -#: pretix/control/logdisplay.py:737 +#: pretix/control/logdisplay.py:733 msgid "A meta property has been changed on this event." msgstr "U této akce byla změněna meta-vlastnost." -#: pretix/control/logdisplay.py:738 +#: pretix/control/logdisplay.py:734 msgid "The event settings have been changed." msgstr "Nastavení akce byla změněna." -#: pretix/control/logdisplay.py:739 +#: pretix/control/logdisplay.py:735 msgid "The ticket download settings have been changed." msgstr "Nastavení stahování vstupenek byla změněna." -#: pretix/control/logdisplay.py:742 +#: pretix/control/logdisplay.py:738 msgid "The shop has been taken live." msgstr "Prodejna vstupenek byla spuštěna." -#: pretix/control/logdisplay.py:743 +#: pretix/control/logdisplay.py:739 msgid "The shop has been taken offline." msgstr "Prodejna vstupenek byla vypnuta." -#: pretix/control/logdisplay.py:744 +#: pretix/control/logdisplay.py:740 msgid "The shop has been taken into test mode." msgstr "Prodejna vstupenek byla převedena do testovacího režimu." -#: pretix/control/logdisplay.py:745 +#: pretix/control/logdisplay.py:741 msgid "The test mode has been disabled." msgstr "Testovací režim byl vypnutý." -#: pretix/control/logdisplay.py:746 +#: pretix/control/logdisplay.py:742 msgid "The event has been created." msgstr "Akce byla vytvořena." -#: pretix/control/logdisplay.py:747 +#: pretix/control/logdisplay.py:743 msgid "The event details have been changed." msgstr "Podrobnosti o akci byly změněny." -#: pretix/control/logdisplay.py:749 +#: pretix/control/logdisplay.py:745 msgid "An answer option has been added to the question." msgstr "K otázce byla přidána možnost odpovědi." -#: pretix/control/logdisplay.py:750 +#: pretix/control/logdisplay.py:746 msgid "An answer option has been removed from the question." msgstr "Z otázky byla odstraněna možnost odpovědi." -#: pretix/control/logdisplay.py:751 +#: pretix/control/logdisplay.py:747 msgid "An answer option has been changed." msgstr "Možnost odpovědi byla změněna." -#: pretix/control/logdisplay.py:752 +#: pretix/control/logdisplay.py:748 msgid "A user has been added to the event team." msgstr "Uživatel byl přidán do týmu akce." -#: pretix/control/logdisplay.py:753 +#: pretix/control/logdisplay.py:749 msgid "A user has been invited to the event team." msgstr "Uživatel byl pozván do týmu akce." -#: pretix/control/logdisplay.py:754 +#: pretix/control/logdisplay.py:750 msgid "A user's permissions have been changed." msgstr "Oprávnění uživatele byla změněna." -#: pretix/control/logdisplay.py:755 +#: pretix/control/logdisplay.py:751 msgid "A user has been removed from the event team." msgstr "Uživatel byl odstraněn z týmu akce." -#: pretix/control/logdisplay.py:762 +#: pretix/control/logdisplay.py:758 msgid "The check-in list has been added." msgstr "Byl přidán seznam pro check-in." -#: pretix/control/logdisplay.py:763 pretix/control/logdisplay.py:764 +#: pretix/control/logdisplay.py:759 pretix/control/logdisplay.py:760 msgid "The check-in list has been deleted." msgstr "Seznam pro check-in byl smazán." -#: pretix/control/logdisplay.py:765 +#: pretix/control/logdisplay.py:761 msgid "The check-in list has been changed." msgstr "Seznam pro check-in byl změněn." -#: pretix/control/logdisplay.py:768 +#: pretix/control/logdisplay.py:764 #, python-brace-format msgid "Check-in list {val}" msgstr "Seznam odbavení {val}" -#: pretix/control/logdisplay.py:775 +#: pretix/control/logdisplay.py:771 #, fuzzy #| msgid "A plugin has been enabled." msgid "The plugin has been enabled." msgstr "Plugin byl povolen." -#: pretix/control/logdisplay.py:776 pretix/control/views/event.py:464 +#: pretix/control/logdisplay.py:772 pretix/control/views/event.py:464 #, fuzzy #| msgid "A plugin has been disabled." msgid "The plugin has been disabled." msgstr "Plugin byl deaktivován." -#: pretix/control/logdisplay.py:779 +#: pretix/control/logdisplay.py:775 #, fuzzy, python-brace-format #| msgid "Question {val}" msgid "Plugin {val}" msgstr "Otázka {val}" -#: pretix/control/logdisplay.py:795 +#: pretix/control/logdisplay.py:791 msgid "The product has been created." msgstr "Produkt byl vytvořen." -#: pretix/control/logdisplay.py:796 +#: pretix/control/logdisplay.py:792 msgid "The product has been changed." msgstr "Produkt byl změněn." -#: pretix/control/logdisplay.py:797 +#: pretix/control/logdisplay.py:793 msgid "The product has been reordered." msgstr "Produkt byl přeřazen." -#: pretix/control/logdisplay.py:798 +#: pretix/control/logdisplay.py:794 msgid "The product has been deleted." msgstr "Produkt byl odstraněn." -#: pretix/control/logdisplay.py:799 +#: pretix/control/logdisplay.py:795 msgid "An add-on has been added to this product." msgstr "K tomuto produktu byl přidán doplněk." -#: pretix/control/logdisplay.py:800 +#: pretix/control/logdisplay.py:796 msgid "An add-on has been removed from this product." msgstr "Doplněk byl z tohoto produktu odstraněn." -#: pretix/control/logdisplay.py:801 +#: pretix/control/logdisplay.py:797 msgid "An add-on has been changed on this product." msgstr "U tohoto produktu byl změněn doplněk." -#: pretix/control/logdisplay.py:802 +#: pretix/control/logdisplay.py:798 msgid "A bundled item has been added to this product." msgstr "K tomuto produktu byla přidána balíčková položka." -#: pretix/control/logdisplay.py:803 +#: pretix/control/logdisplay.py:799 msgid "A bundled item has been removed from this product." msgstr "Balíčková položka byla z tohoto produktu odstraněna." -#: pretix/control/logdisplay.py:804 +#: pretix/control/logdisplay.py:800 msgid "A bundled item has been changed on this product." msgstr "U tohoto produktu byla změněna balíčková položka." -#: pretix/control/logdisplay.py:811 +#: pretix/control/logdisplay.py:807 #, python-brace-format msgid "The variation \"{value}\" has been created." msgstr "Byla vytvořena varianta \"{value}\"." -#: pretix/control/logdisplay.py:812 +#: pretix/control/logdisplay.py:808 #, python-brace-format msgid "The variation \"{value}\" has been deleted." msgstr "Varianta \"{value}\" byla odstraněna." -#: pretix/control/logdisplay.py:813 +#: pretix/control/logdisplay.py:809 #, python-brace-format msgid "The variation \"{value}\" has been changed." msgstr "Varianta \"{value}\" byla změněna." -#: pretix/control/logdisplay.py:830 +#: pretix/control/logdisplay.py:826 #, python-brace-format msgid "Payment {local_id} has been confirmed." msgstr "Platba {local_id} byla potvrzena." -#: pretix/control/logdisplay.py:831 +#: pretix/control/logdisplay.py:827 #, python-brace-format msgid "Payment {local_id} has been canceled." msgstr "Platba {local_id} byla zrušena." -#: pretix/control/logdisplay.py:832 +#: pretix/control/logdisplay.py:828 #, python-brace-format msgid "Canceling payment {local_id} has failed." msgstr "Zrušení platby {local_id} se nepodařilo." -#: pretix/control/logdisplay.py:833 +#: pretix/control/logdisplay.py:829 #, python-brace-format msgid "Payment {local_id} has been started." msgstr "Platba {local_id} byla spuštěna." -#: pretix/control/logdisplay.py:834 +#: pretix/control/logdisplay.py:830 #, python-brace-format msgid "Payment {local_id} has failed." msgstr "Platba {local_id} se nezdařila." -#: pretix/control/logdisplay.py:835 +#: pretix/control/logdisplay.py:831 #, python-brace-format msgid "The order could not be marked as paid: {message}" msgstr "Objednávku nebylo možné označit jako zaplacenou: {message}" -#: pretix/control/logdisplay.py:836 +#: pretix/control/logdisplay.py:832 msgid "The order has been overpaid." msgstr "Objednávka byla přeplacena." -#: pretix/control/logdisplay.py:837 +#: pretix/control/logdisplay.py:833 #, python-brace-format msgid "Refund {local_id} has been created." msgstr "Byla vytvořena náhrada {local_id}." -#: pretix/control/logdisplay.py:838 +#: pretix/control/logdisplay.py:834 #, python-brace-format msgid "Refund {local_id} has been created by an external entity." msgstr "Náhrada {local_id} byla vytvořena externí jednotkou." -#: pretix/control/logdisplay.py:839 +#: pretix/control/logdisplay.py:835 msgid "The customer requested you to issue a refund." msgstr "Zákazník vás požádal o vrácení peněz." -#: pretix/control/logdisplay.py:840 +#: pretix/control/logdisplay.py:836 #, python-brace-format msgid "Refund {local_id} has been completed." msgstr "Vrácení peněz {local_id} bylo dokončeno." -#: pretix/control/logdisplay.py:841 +#: pretix/control/logdisplay.py:837 #, python-brace-format msgid "Refund {local_id} has been canceled." msgstr "Náhrada {local_id} byla zrušena." -#: pretix/control/logdisplay.py:842 +#: pretix/control/logdisplay.py:838 #, python-brace-format msgid "Refund {local_id} has failed." msgstr "Náhrada {local_id} se nezdařila." -#: pretix/control/logdisplay.py:849 +#: pretix/control/logdisplay.py:845 msgid "The quota has been added." msgstr "Kvóta byla přidána." -#: pretix/control/logdisplay.py:850 +#: pretix/control/logdisplay.py:846 msgid "The quota has been deleted." msgstr "Kvóta byla odstraněna." -#: pretix/control/logdisplay.py:851 +#: pretix/control/logdisplay.py:847 msgid "The quota has been changed." msgstr "Kvóta byla změněna." -#: pretix/control/logdisplay.py:852 +#: pretix/control/logdisplay.py:848 msgid "The quota has closed." msgstr "Kvóta je uzavřena." -#: pretix/control/logdisplay.py:853 pretix/control/views/item.py:1075 +#: pretix/control/logdisplay.py:849 pretix/control/views/item.py:1081 msgid "The quota has been re-opened." msgstr "Kvóta byla znovu otevřena." -#: pretix/control/logdisplay.py:860 +#: pretix/control/logdisplay.py:856 msgid "The question has been added." msgstr "Otázka byla přidána." -#: pretix/control/logdisplay.py:861 +#: pretix/control/logdisplay.py:857 msgid "The question has been deleted." msgstr "Otázka byla smazána." -#: pretix/control/logdisplay.py:862 +#: pretix/control/logdisplay.py:858 msgid "The question has been changed." msgstr "Otázka byla změněna." -#: pretix/control/logdisplay.py:863 +#: pretix/control/logdisplay.py:859 msgid "The question has been reordered." msgstr "Otázka byla přeřazena." -#: pretix/control/logdisplay.py:870 +#: pretix/control/logdisplay.py:866 msgid "The discount has been added." msgstr "Sleva byla přidána." -#: pretix/control/logdisplay.py:871 +#: pretix/control/logdisplay.py:867 msgid "The discount has been deleted." msgstr "Sleva byla odstraněna." -#: pretix/control/logdisplay.py:872 +#: pretix/control/logdisplay.py:868 msgid "The discount has been changed." msgstr "Sleva byla změněna." -#: pretix/control/logdisplay.py:896 +#: pretix/control/logdisplay.py:892 #, python-brace-format msgid "" "Position #{posid} has been checked in manually at {datetime} on list \"{list}" @@ -16756,13 +16756,25 @@ msgid "" msgstr "" "Pozice #{posid} byla ručně zkontrolována v {datetime} na seznamu \"{list}\"." -#: pretix/control/logdisplay.py:901 +#: pretix/control/logdisplay.py:897 #, python-brace-format msgid "" "Position #{posid} has been checked in again at {datetime} on list \"{list}\"." msgstr "" "Pozice #{posid} byla znovu odbavena v {datetime} na seznamu \"{list}\"." +#: pretix/control/logdisplay.py:906 +msgid "An entry has been removed from the waiting list." +msgstr "Záznam byl odstraněn z čekacího seznamu." + +#: pretix/control/logdisplay.py:907 +msgid "An entry has been changed on the waiting list." +msgstr "Záznam na čekací listině byl změněn." + +#: pretix/control/logdisplay.py:908 +msgid "An entry has been added to the waiting list." +msgstr "Na čekací listinu byl přidán záznam." + #: pretix/control/middleware.py:153 pretix/control/middleware.py:167 msgid "" "The selected event was not found or you have no permission to administrate " @@ -17103,8 +17115,8 @@ msgstr "" #: pretix/presale/templates/pretixpresale/event/checkout_addons.html:90 #: pretix/presale/templates/pretixpresale/event/checkout_customer.html:125 #: pretix/presale/templates/pretixpresale/event/checkout_membership.html:80 -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:129 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:177 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:130 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:192 #: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:53 #: pretix/presale/templates/pretixpresale/event/order_change.html:27 #: pretix/presale/templates/pretixpresale/event/order_pay.html:28 @@ -17166,7 +17178,7 @@ msgstr "Nastavit nové heslo" #: pretix/control/templates/pretixcontrol/event/payment.html:88 #: pretix/control/templates/pretixcontrol/event/payment_provider.html:36 #: pretix/control/templates/pretixcontrol/event/quick_setup.html:201 -#: pretix/control/templates/pretixcontrol/event/settings.html:473 +#: pretix/control/templates/pretixcontrol/event/settings.html:494 #: pretix/control/templates/pretixcontrol/event/tax_edit.html:145 #: pretix/control/templates/pretixcontrol/event/tickets.html:73 #: pretix/control/templates/pretixcontrol/global_settings.html:12 @@ -17206,7 +17218,7 @@ msgstr "Nastavit nové heslo" #: pretix/control/templates/pretixcontrol/organizers/webhook_edit.html:21 #: pretix/control/templates/pretixcontrol/pdf/index.html:544 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:630 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:366 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:368 #: pretix/control/templates/pretixcontrol/subevents/detail.html:287 #: pretix/control/templates/pretixcontrol/user/notifications.html:85 #: pretix/control/templates/pretixcontrol/user/settings.html:81 @@ -17596,6 +17608,7 @@ msgstr[2] "" #: pretix/control/templates/pretixcontrol/organizers/team_delete.html:10 #: pretix/control/templates/pretixcontrol/organizers/team_delete.html:21 #: pretix/control/templates/pretixcontrol/pdf/index.html:77 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:378 #: pretix/control/templates/pretixcontrol/subevents/delete.html:12 #: pretix/control/templates/pretixcontrol/subevents/delete_bulk.html:41 #: pretix/control/templates/pretixcontrol/user/2fa_delete.html:18 @@ -18485,7 +18498,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/event/dangerzone.html:5 #: pretix/control/templates/pretixcontrol/event/live.html:131 -#: pretix/control/templates/pretixcontrol/event/settings.html:479 +#: pretix/control/templates/pretixcontrol/event/settings.html:500 msgid "Cancel or delete event" msgstr "Zrušit nebo smazat akci" @@ -18604,13 +18617,13 @@ msgstr "" "podle oprávnění, která jste nakonfigurovali." #: pretix/control/templates/pretixcontrol/event/fragment_geodata.html:14 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:42 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:43 msgid "Geo coordinates" msgstr "Zeměpisné souřadnice" #: pretix/control/templates/pretixcontrol/event/fragment_geodata.html:15 #: pretix/control/templates/pretixcontrol/event/settings.html:139 -#: pretix/control/templates/pretixcontrol/event/settings.html:281 +#: pretix/control/templates/pretixcontrol/event/settings.html:292 #: pretix/control/templates/pretixcontrol/items/discount.html:35 #: pretix/control/templates/pretixcontrol/organizers/edit.html:56 #: pretix/control/templates/pretixcontrol/organizers/property_edit.html:32 @@ -18620,7 +18633,7 @@ msgid "Optional" msgstr "Volitelné" #: pretix/control/templates/pretixcontrol/event/fragment_geodata.html:22 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:57 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:58 msgid "Geocoding data © OpenStreetMap" msgstr "Geokódovací data © OpenStreetMap" @@ -19092,9 +19105,9 @@ msgstr "" #: pretix/control/views/event.py:587 pretix/control/views/event.py:734 #: pretix/control/views/event.py:963 pretix/control/views/event.py:1334 #: pretix/control/views/global_settings.py:65 -#: pretix/control/views/global_settings.py:88 pretix/control/views/item.py:263 -#: pretix/control/views/item.py:789 pretix/control/views/item.py:1115 -#: pretix/control/views/item.py:1293 pretix/control/views/item.py:1443 +#: pretix/control/views/global_settings.py:88 pretix/control/views/item.py:264 +#: pretix/control/views/item.py:795 pretix/control/views/item.py:1121 +#: pretix/control/views/item.py:1299 pretix/control/views/item.py:1449 #: pretix/control/views/mailsetup.py:151 pretix/control/views/mailsetup.py:163 #: pretix/control/views/mailsetup.py:190 pretix/control/views/mailsetup.py:258 #: pretix/control/views/organizer.py:260 pretix/control/views/organizer.py:288 @@ -19285,7 +19298,7 @@ msgstr "Hlavní údaje" #: pretix/control/templates/pretixcontrol/item/include_variations.html:202 #: pretix/control/templates/pretixcontrol/item/index.html:127 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:392 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:76 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:77 #: pretix/control/templates/pretixcontrol/subevents/detail.html:35 msgid "Meta data" msgstr "Metadata" @@ -19361,7 +19374,7 @@ msgstr "Návrh obchodu" #: pretix/control/templates/pretixcontrol/event/settings.html:232 #: pretix/control/templates/pretixcontrol/events/create_basics.html:56 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:411 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:95 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:96 #: pretix/control/templates/pretixcontrol/subevents/detail.html:54 msgid "Timeline" msgstr "Časování" @@ -19375,28 +19388,42 @@ msgstr "Zobrazení" msgid "Product list" msgstr "Historie produktů" -#: pretix/control/templates/pretixcontrol/event/settings.html:250 +#: pretix/control/templates/pretixcontrol/event/settings.html:253 +#: pretix/control/templates/pretixcontrol/event/settings.html:389 +#, fuzzy +#| msgid "Email settings" +msgid "Incompatible settings" +msgstr "Nastavení e-mailu" + +#: pretix/control/templates/pretixcontrol/event/settings.html:254 +#: pretix/control/templates/pretixcontrol/event/settings.html:390 +msgid "" +"Customers won't be able to add themselves to the waiting list, because " +"\"Hide all products that are sold out\" is enabled." +msgstr "" + +#: pretix/control/templates/pretixcontrol/event/settings.html:261 #, fuzzy msgctxt "subevents" msgid "Calendar and list views" msgstr "Pozvánky do kalendáře" -#: pretix/control/templates/pretixcontrol/event/settings.html:269 +#: pretix/control/templates/pretixcontrol/event/settings.html:280 #: pretix/control/templates/pretixcontrol/order/index.html:176 #: pretix/presale/templates/pretixpresale/event/order.html:22 msgid "Order details" msgstr "Podrobnosti o objednávce" -#: pretix/control/templates/pretixcontrol/event/settings.html:273 +#: pretix/control/templates/pretixcontrol/event/settings.html:284 msgid "Other settings" msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:280 +#: pretix/control/templates/pretixcontrol/event/settings.html:291 #: pretix/control/templates/pretixcontrol/organizers/edit.html:55 msgid "Footer links" msgstr "Odkazy v zápatí" -#: pretix/control/templates/pretixcontrol/event/settings.html:285 +#: pretix/control/templates/pretixcontrol/event/settings.html:296 #: pretix/control/templates/pretixcontrol/organizers/edit.html:60 msgid "" "These links will be shown in the footer of your ticket shop. You could for " @@ -19405,22 +19432,22 @@ msgid "" "do not need to add them here." msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:339 +#: pretix/control/templates/pretixcontrol/event/settings.html:350 #: pretix/control/templates/pretixcontrol/organizers/edit.html:119 msgid "Add link" msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:346 +#: pretix/control/templates/pretixcontrol/event/settings.html:357 msgid "Cart" msgstr "Nákupní košík" -#: pretix/control/templates/pretixcontrol/event/settings.html:354 +#: pretix/control/templates/pretixcontrol/event/settings.html:365 msgid "" "The waiting list currently is not compatible with some advanced features of " "pretix such as hidden products, add-on products or product bundles." msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:360 +#: pretix/control/templates/pretixcontrol/event/settings.html:371 msgid "" "The waiting list determines availability mainly based on quotas. If you use " "a seating plan and your number of available seats is less than the available " @@ -19428,44 +19455,44 @@ msgid "" "waiting list but still are unable to book a seat." msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:367 +#: pretix/control/templates/pretixcontrol/event/settings.html:378 msgid "" "Specifically, this means the waiting list is not safe to use together with " "the minimum distance feature of our seating plan module." msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:378 +#: pretix/control/templates/pretixcontrol/event/settings.html:399 #, fuzzy msgid "Waiting customers" msgstr "Čeká se na" -#: pretix/control/templates/pretixcontrol/event/settings.html:384 +#: pretix/control/templates/pretixcontrol/event/settings.html:405 #, fuzzy msgid "Manage waiting list" msgstr "Aktivovat čekací listinu" -#: pretix/control/templates/pretixcontrol/event/settings.html:397 +#: pretix/control/templates/pretixcontrol/event/settings.html:418 msgid "Item metadata" msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:399 +#: pretix/control/templates/pretixcontrol/event/settings.html:420 msgid "" "You can here define a set of metadata properties (i.e. variables) that you " "can later set for your items and re-use in places like ticket layouts. This " "is an useful timesaver if you create lots and lots of items." msgstr "" -#: pretix/control/templates/pretixcontrol/event/settings.html:419 -#: pretix/control/templates/pretixcontrol/event/settings.html:447 +#: pretix/control/templates/pretixcontrol/event/settings.html:440 +#: pretix/control/templates/pretixcontrol/event/settings.html:468 #: pretix/control/templates/pretixcontrol/organizers/properties.html:22 msgid "Property" msgstr "Vlastnost" -#: pretix/control/templates/pretixcontrol/event/settings.html:466 +#: pretix/control/templates/pretixcontrol/event/settings.html:487 msgid "Add property" msgstr "Přidat vlastnost" -#: pretix/control/templates/pretixcontrol/event/settings.html:484 +#: pretix/control/templates/pretixcontrol/event/settings.html:505 #: pretix/control/templates/pretixcontrol/events/index.html:165 #: pretix/control/templates/pretixcontrol/organizers/detail.html:130 msgid "Clone event" @@ -19590,7 +19617,7 @@ msgid "excl. %(rate)s %%" msgstr "" #: pretix/control/templates/pretixcontrol/event/tickets.html:8 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:13 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:14 #: pretix/presale/templates/pretixpresale/event/fragment_downloads.html:7 #: pretix/presale/templates/pretixpresale/event/fragment_downloads.html:40 msgid "Ticket download" @@ -19694,7 +19721,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/organizers/create.html:11 #: pretix/control/templates/pretixcontrol/organizers/team_edit.html:19 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:384 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:30 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:31 #: pretix/control/templates/pretixcontrol/subevents/detail.html:23 msgid "General information" msgstr "Základní informace" @@ -20622,13 +20649,13 @@ msgstr "Plně rezervováno" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:107 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:35 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:71 -#: pretix/presale/views/widget.py:456 +#: pretix/presale/views/widget.py:449 msgid "Sold out" msgstr "Vyprodáno" #: pretix/control/templates/pretixcontrol/items/index.html:7 #: pretix/control/templates/pretixcontrol/order/index.html:19 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:7 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:8 msgid "taxes" msgstr "Daně" @@ -20687,8 +20714,8 @@ msgstr "" #: pretix/control/templates/pretixcontrol/items/index.html:149 #: pretix/control/templates/pretixcontrol/order/index.html:616 #: pretix/control/templates/pretixcontrol/order/index.html:656 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:359 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:414 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:360 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:415 #, python-format msgid "plus %(rate)s%% %(taxname)s" msgstr "" @@ -20696,8 +20723,8 @@ msgstr "" #: pretix/control/templates/pretixcontrol/items/index.html:153 #: pretix/control/templates/pretixcontrol/order/index.html:626 #: pretix/control/templates/pretixcontrol/order/index.html:666 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:369 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:424 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:370 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:425 #, python-format msgid "incl. %(rate)s%% %(taxname)s" msgstr "" @@ -20738,10 +20765,18 @@ msgid "Count" msgstr "Počet" #: pretix/control/templates/pretixcontrol/items/question.html:92 -msgid "Percentage" -msgstr "Procento" +#, fuzzy, python-format +#| msgid "Copy answers" +msgid "%% of answers" +msgstr "Kopírovat odpovědi" -#: pretix/control/templates/pretixcontrol/items/question.html:110 +#: pretix/control/templates/pretixcontrol/items/question.html:93 +#, fuzzy, python-format +#| msgid "Number of tickets" +msgid "%% of tickets" +msgstr "Počet vstupenek" + +#: pretix/control/templates/pretixcontrol/items/question.html:112 #: pretix/control/templates/pretixcontrol/order/transactions.html:67 #: pretix/plugins/reports/accountingreport.py:408 #: pretix/plugins/reports/accountingreport.py:441 @@ -20749,7 +20784,7 @@ msgstr "Procento" msgid "Sum" msgstr "Celkem" -#: pretix/control/templates/pretixcontrol/items/question.html:122 +#: pretix/control/templates/pretixcontrol/items/question.html:125 msgid "Question history" msgstr "Historie otázky" @@ -21253,14 +21288,14 @@ msgstr "Doba platnosti" #: pretix/control/templates/pretixcontrol/order/change.html:247 #: pretix/control/templates/pretixcontrol/order/index.html:455 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:106 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:107 #, python-format msgid "Valid from %(datetime)s" msgstr "" #: pretix/control/templates/pretixcontrol/order/change.html:255 #: pretix/control/templates/pretixcontrol/order/index.html:459 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:110 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:111 #, python-format msgid "Valid until %(datetime)s" msgstr "Platí do %(datetime)s" @@ -21339,13 +21374,13 @@ msgstr "" #: pretix/control/templates/pretixcontrol/order/change_questions.html:25 #: pretix/control/templates/pretixcontrol/order/index.html:940 #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:75 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:34 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:35 #: pretix/presale/templates/pretixpresale/event/order_modify.html:29 msgid "Invoice information" msgstr "Informace o faktuře" #: pretix/control/templates/pretixcontrol/order/change_questions.html:26 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:35 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:36 #: pretix/presale/templates/pretixpresale/event/order_modify.html:30 msgid "(optional)" msgstr "(volitelné)" @@ -21573,7 +21608,7 @@ msgid "Entry scan: %(date)s" msgstr "" #: pretix/control/templates/pretixcontrol/order/index.html:420 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:54 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:55 msgid "Voucher code used:" msgstr "" @@ -21590,7 +21625,7 @@ msgid "" msgstr "" #: pretix/control/templates/pretixcontrol/order/index.html:451 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:102 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:103 #, python-format msgid "Valid %(datetime_range)s" msgstr "Platný %(datetime_range)s" @@ -21605,8 +21640,8 @@ msgstr "" #: pretix/control/templates/pretixcontrol/order/index.html:560 #: pretix/control/templates/pretixcontrol/order/index.html:598 #: pretix/control/templates/pretixcontrol/order/index.html:605 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:227 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:233 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:228 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:234 msgid "not answered" msgstr "není odpovězeno" @@ -21625,7 +21660,7 @@ msgid "UNSAFE" msgstr "NEZABEZPEČENÉ" #: pretix/control/templates/pretixcontrol/order/index.html:687 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:452 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:453 msgid "Taxes" msgstr "Daně" @@ -21637,7 +21672,7 @@ msgstr "Daně" #: pretix/plugins/reports/exporters.py:435 #: pretix/plugins/reports/exporters.py:627 #: pretix/plugins/reports/exporters.py:957 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:464 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:465 msgid "Total" msgstr "Celkem" @@ -21735,7 +21770,7 @@ msgstr "Historie objednávek" #: pretix/control/templates/pretixcontrol/order/mail_history.html:4 #: pretix/control/templates/pretixcontrol/order/mail_history.html:7 -#: pretix/plugins/sendmail/signals.py:109 +#: pretix/plugins/sendmail/signals.py:110 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/history.html:4 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/history.html:6 msgid "Email history" @@ -21961,7 +21996,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/order/sendmail.html:4 #: pretix/control/templates/pretixcontrol/order/sendmail.html:7 -#: pretix/plugins/sendmail/signals.py:93 +#: pretix/plugins/sendmail/signals.py:94 msgid "Send email" msgstr "Odeslat e-mail" @@ -22064,7 +22099,7 @@ msgstr "" #: pretix/control/templates/pretixcontrol/orders/cancel.html:49 #: pretix/control/templates/pretixcontrol/vouchers/bulk.html:85 #: pretix/plugins/sendmail/apps.py:30 pretix/plugins/sendmail/apps.py:33 -#: pretix/plugins/sendmail/signals.py:85 +#: pretix/plugins/sendmail/signals.py:86 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/index.html:3 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/index.html:5 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/send_form.html:5 @@ -22658,7 +22693,7 @@ msgstr "Zákazník #%(id)s" #: pretix/control/templates/pretixcontrol/organizers/giftcards.html:95 #: pretix/control/templates/pretixcontrol/organizers/reusable_media.html:102 #: pretix/control/templates/pretixcontrol/organizers/reusable_medium.html:21 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:389 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:390 #: pretix/presale/templates/pretixpresale/organizers/customer_membership.html:114 #: pretix/presale/templates/pretixpresale/organizers/customer_memberships.html:95 #: pretix/presale/templates/pretixpresale/organizers/customer_orders.html:66 @@ -22803,7 +22838,7 @@ msgid "Change multiple devices" msgstr "Změnit více zařízení" #: pretix/control/templates/pretixcontrol/organizers/device_bulk_edit.html:8 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:13 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:14 #, python-format msgid "%(number)s selected" msgstr "%(number)s vybráno" @@ -24245,7 +24280,7 @@ msgid "Add many time slots" msgstr "" #: pretix/control/templates/pretixcontrol/subevents/bulk.html:481 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:264 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:266 #: pretix/control/templates/pretixcontrol/subevents/detail.html:124 msgid "Add a new quota" msgstr "" @@ -24276,35 +24311,54 @@ msgid "" msgstr "" #: pretix/control/templates/pretixcontrol/subevents/bulk.html:600 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:357 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:359 #: pretix/control/templates/pretixcontrol/subevents/detail.html:243 msgid "Add a new check-in list" msgstr "" -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:8 -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:11 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:9 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:12 msgctxt "subevent" msgid "Change multiple dates" msgstr "" -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:153 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:154 msgid "Item prices" msgstr "Ceny produktů" -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:187 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:197 +#, fuzzy +#| msgid "You cannot select a product that belongs to a different event." +msgid "You selected a set of dates that currently have different quota setups." +msgstr "Nelze vybrat produkt, který patří k jiné akci." + +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:198 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:373 msgid "" -"You selected a set of dates that currently have different quota setups. You " -"can therefore not change their quotas in bulk. If you want, you can set up a " -"new set of quotas to replace the quota setup of all " -"selected dates." +"Using this option will delete all current quotas from " +"all selected dates." msgstr "" -#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:275 +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:277 msgid "" "You selected a set of dates that currently have different check-in list " "setups. You can therefore not change their check-in lists in bulk." msgstr "" +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:372 +#, fuzzy +#| msgid "Add to existing quota" +msgid "Delete existing quotas" +msgstr "Přidat do existující kvóty" + +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:374 +msgid "This cannot be reverted. Are you sure to proceed?" +msgstr "" + +#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:381 +msgid "Proceed" +msgstr "" + #: pretix/control/templates/pretixcontrol/subevents/delete.html:4 #: pretix/control/templates/pretixcontrol/subevents/delete.html:6 msgctxt "subevent" @@ -25370,10 +25424,10 @@ msgstr "" #: pretix/control/views/event.py:590 pretix/control/views/event.py:737 #: pretix/control/views/event.py:929 pretix/control/views/event.py:1287 #: pretix/control/views/event.py:1353 pretix/control/views/event.py:1461 -#: pretix/control/views/item.py:279 pretix/control/views/item.py:326 -#: pretix/control/views/item.py:799 pretix/control/views/item.py:825 -#: pretix/control/views/item.py:945 pretix/control/views/item.py:1149 -#: pretix/control/views/item.py:1315 pretix/control/views/item.py:1500 +#: pretix/control/views/item.py:280 pretix/control/views/item.py:327 +#: pretix/control/views/item.py:805 pretix/control/views/item.py:831 +#: pretix/control/views/item.py:951 pretix/control/views/item.py:1155 +#: pretix/control/views/item.py:1321 pretix/control/views/item.py:1506 #: pretix/control/views/organizer.py:263 pretix/control/views/organizer.py:291 #: pretix/control/views/organizer.py:1188 pretix/control/views/subevents.py:504 #: pretix/control/views/subevents.py:630 pretix/control/views/subevents.py:1039 @@ -25478,7 +25532,7 @@ msgstr "" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:116 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:47 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:79 -#: pretix/presale/views/widget.py:470 +#: pretix/presale/views/widget.py:463 msgid "Sale over" msgstr "Prodej skončil" @@ -25486,7 +25540,7 @@ msgstr "Prodej skončil" #: pretix/presale/templates/pretixpresale/fragment_calendar.html:119 #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:123 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:86 -#: pretix/presale/views/widget.py:480 +#: pretix/presale/views/widget.py:473 msgid "Soon" msgstr "Brzy" @@ -25519,8 +25573,8 @@ msgstr "Nová sleva byla vytvořena." msgid "The order of discounts has been updated." msgstr "" -#: pretix/control/views/discounts.py:260 pretix/control/views/item.py:189 -#: pretix/control/views/item.py:401 pretix/control/views/item.py:535 +#: pretix/control/views/discounts.py:260 pretix/control/views/item.py:190 +#: pretix/control/views/item.py:402 pretix/control/views/item.py:536 #: pretix/control/views/organizer.py:2272 #: pretix/control/views/organizer.py:3330 msgid "Some of the provided object ids are invalid." @@ -25575,8 +25629,8 @@ msgstr "Vaše objednávka: %(code)s" msgid "Unknown email renderer." msgstr "" -#: pretix/control/views/event.py:876 pretix/control/views/orders.py:692 -#: pretix/presale/views/order.py:1086 pretix/presale/views/order.py:1093 +#: pretix/control/views/event.py:876 pretix/control/views/orders.py:693 +#: pretix/presale/views/order.py:1088 pretix/presale/views/order.py:1095 msgid "You requested an invalid ticket output type." msgstr "" @@ -25623,11 +25677,11 @@ msgid "" "event: {plugin_names}" msgstr "" -#: pretix/control/views/event.py:1207 pretix/control/views/orders.py:781 +#: pretix/control/views/event.py:1207 pretix/control/views/orders.py:782 msgid "The comment has been updated." msgstr "" -#: pretix/control/views/event.py:1209 pretix/control/views/orders.py:783 +#: pretix/control/views/event.py:1209 pretix/control/views/orders.py:784 msgid "Could not update the comment." msgstr "" @@ -25745,130 +25799,130 @@ msgid "" "plugin \"{plugin}\" with license \"{license}\"." msgstr "" -#: pretix/control/views/item.py:138 pretix/control/views/item.py:1594 +#: pretix/control/views/item.py:139 pretix/control/views/item.py:1600 msgid "The requested product does not exist." msgstr "" -#: pretix/control/views/item.py:156 +#: pretix/control/views/item.py:157 msgid "The order of items has been updated." msgstr "" -#: pretix/control/views/item.py:224 pretix/control/views/item.py:259 -#: pretix/control/views/item.py:350 +#: pretix/control/views/item.py:225 pretix/control/views/item.py:260 +#: pretix/control/views/item.py:351 msgid "The requested product category does not exist." msgstr "" -#: pretix/control/views/item.py:235 +#: pretix/control/views/item.py:236 msgid "The selected category has been deleted." msgstr "" -#: pretix/control/views/item.py:320 +#: pretix/control/views/item.py:321 msgid "The new category has been created." msgstr "" -#: pretix/control/views/item.py:368 +#: pretix/control/views/item.py:369 msgid "The order of categories has been updated." msgstr "" -#: pretix/control/views/item.py:404 pretix/control/views/item.py:538 +#: pretix/control/views/item.py:405 pretix/control/views/item.py:539 #: pretix/control/views/organizer.py:2275 #: pretix/control/views/organizer.py:3333 msgid "Not all objects have been selected." msgstr "" -#: pretix/control/views/item.py:477 +#: pretix/control/views/item.py:478 msgid "Street" msgstr "Ulice" -#: pretix/control/views/item.py:579 pretix/control/views/item.py:753 -#: pretix/control/views/item.py:775 +#: pretix/control/views/item.py:580 pretix/control/views/item.py:759 +#: pretix/control/views/item.py:781 msgid "The requested question does not exist." msgstr "" -#: pretix/control/views/item.py:597 +#: pretix/control/views/item.py:598 msgid "The selected question has been deleted." msgstr "" -#: pretix/control/views/item.py:702 +#: pretix/control/views/item.py:708 msgid "File uploaded" msgstr "Soubor byl nahrán" -#: pretix/control/views/item.py:834 +#: pretix/control/views/item.py:840 msgid "The new question has been created." msgstr "" -#: pretix/control/views/item.py:913 +#: pretix/control/views/item.py:919 msgid "The new quota has been created." msgstr "" -#: pretix/control/views/item.py:976 +#: pretix/control/views/item.py:982 msgid "Exit scans" msgstr "" -#: pretix/control/views/item.py:983 +#: pretix/control/views/item.py:989 msgid "Vouchers and waiting list reservations" msgstr "" -#: pretix/control/views/item.py:998 +#: pretix/control/views/item.py:1004 msgid "Available quota" msgstr "" -#: pretix/control/views/item.py:1004 +#: pretix/control/views/item.py:1010 msgid "Waiting list (pending)" msgstr "" -#: pretix/control/views/item.py:1011 +#: pretix/control/views/item.py:1017 msgid "Currently for sale" msgstr "" -#: pretix/control/views/item.py:1065 pretix/control/views/item.py:1111 -#: pretix/control/views/item.py:1165 +#: pretix/control/views/item.py:1071 pretix/control/views/item.py:1117 +#: pretix/control/views/item.py:1171 msgid "The requested quota does not exist." msgstr "" -#: pretix/control/views/item.py:1086 +#: pretix/control/views/item.py:1092 msgid "The quota has been re-opened and will not close again." msgstr "" -#: pretix/control/views/item.py:1179 +#: pretix/control/views/item.py:1185 msgid "The selected quota has been deleted." msgstr "" -#: pretix/control/views/item.py:1202 +#: pretix/control/views/item.py:1208 msgid "The requested item does not exist." msgstr "" -#: pretix/control/views/item.py:1374 +#: pretix/control/views/item.py:1380 msgid "" "You cannot add add-ons to a product that is only available as an add-on " "itself." msgstr "" -#: pretix/control/views/item.py:1384 +#: pretix/control/views/item.py:1390 msgid "" "You cannot add bundles to a product that is only available as an add-on " "itself." msgstr "" -#: pretix/control/views/item.py:1516 +#: pretix/control/views/item.py:1522 msgid "" "You disabled this item, but it is still part of a product bundle. Your " "participants won't be able to buy the bundle unless you remove this item " "from it." msgstr "" -#: pretix/control/views/item.py:1614 +#: pretix/control/views/item.py:1620 msgid "" "The product could not be deleted as some constraints (e.g. data created by " "plug-ins) did not allow it. Deleting it could break reporting or other " "functionality, so the product has been disabled instead." msgstr "" -#: pretix/control/views/item.py:1618 +#: pretix/control/views/item.py:1624 msgid "The selected product has been deleted." msgstr "" -#: pretix/control/views/item.py:1627 +#: pretix/control/views/item.py:1633 msgid "The selected product has been deactivated." msgstr "" @@ -25988,14 +26042,14 @@ msgid "" "Successfully executed the action \"{label}\" on {success} of {total} orders." msgstr "" -#: pretix/control/views/orders.py:556 +#: pretix/control/views/orders.py:557 msgid "Your invoice" msgid_plural "Your invoices" msgstr[0] "Vaše faktura" msgstr[1] "Všechny faktury" msgstr[2] "Všechny faktury" -#: pretix/control/views/orders.py:558 +#: pretix/control/views/orders.py:559 #, python-brace-format msgid "" "Hello,\n" @@ -26013,78 +26067,78 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: pretix/control/views/orders.py:694 pretix/plugins/banktransfer/views.py:901 +#: pretix/control/views/orders.py:695 pretix/plugins/banktransfer/views.py:901 #: pretix/presale/views/order.py:158 pretix/presale/views/order.py:240 #: pretix/presale/views/order.py:334 pretix/presale/views/order.py:361 #: pretix/presale/views/order.py:429 pretix/presale/views/order.py:496 -#: pretix/presale/views/order.py:542 pretix/presale/views/order.py:726 -#: pretix/presale/views/order.py:839 pretix/presale/views/order.py:911 -#: pretix/presale/views/order.py:926 pretix/presale/views/order.py:975 -#: pretix/presale/views/order.py:980 pretix/presale/views/order.py:1095 -#: pretix/presale/views/order.py:1268 pretix/presale/views/order.py:1660 -#: pretix/presale/views/order.py:1691 +#: pretix/presale/views/order.py:542 pretix/presale/views/order.py:728 +#: pretix/presale/views/order.py:841 pretix/presale/views/order.py:913 +#: pretix/presale/views/order.py:928 pretix/presale/views/order.py:977 +#: pretix/presale/views/order.py:982 pretix/presale/views/order.py:1097 +#: pretix/presale/views/order.py:1270 pretix/presale/views/order.py:1662 +#: pretix/presale/views/order.py:1693 msgid "Unknown order code or not authorized to access this order." msgstr "" -#: pretix/control/views/orders.py:696 pretix/presale/views/order.py:1100 +#: pretix/control/views/orders.py:697 pretix/presale/views/order.py:1102 msgid "Ticket download is not enabled for this product." msgstr "" -#: pretix/control/views/orders.py:817 +#: pretix/control/views/orders.py:818 msgid "The order has been deleted." msgstr "" -#: pretix/control/views/orders.py:824 +#: pretix/control/views/orders.py:825 msgid "" "The order could not be deleted as some constraints (e.g. data created by " "plug-ins) do not allow it." msgstr "" -#: pretix/control/views/orders.py:832 +#: pretix/control/views/orders.py:833 msgid "Only orders created in test mode can be deleted." msgstr "" -#: pretix/control/views/orders.py:853 +#: pretix/control/views/orders.py:854 msgid "The order has been denied and is therefore now canceled." msgstr "" -#: pretix/control/views/orders.py:893 +#: pretix/control/views/orders.py:894 msgid "This payment has been canceled." msgstr "Tato platba byla zrušena." -#: pretix/control/views/orders.py:895 +#: pretix/control/views/orders.py:896 msgid "This payment can not be canceled at the moment." msgstr "Tuto platbu nelze dočasně zrušit." -#: pretix/control/views/orders.py:921 +#: pretix/control/views/orders.py:922 msgid "The refund has been canceled." msgstr "" -#: pretix/control/views/orders.py:923 +#: pretix/control/views/orders.py:924 msgid "This refund can not be canceled at the moment." msgstr "" -#: pretix/control/views/orders.py:957 +#: pretix/control/views/orders.py:958 msgid "The refund has been processed." msgstr "" -#: pretix/control/views/orders.py:959 pretix/control/views/orders.py:985 +#: pretix/control/views/orders.py:960 pretix/control/views/orders.py:986 msgid "This refund can not be processed at the moment." msgstr "" -#: pretix/control/views/orders.py:983 +#: pretix/control/views/orders.py:984 msgid "The refund has been marked as done." msgstr "" -#: pretix/control/views/orders.py:1009 +#: pretix/control/views/orders.py:1010 msgid "The request has been removed. If you want, you can now inform the user." msgstr "" -#: pretix/control/views/orders.py:1016 +#: pretix/control/views/orders.py:1017 msgid "Your cancellation request" msgstr "" -#: pretix/control/views/orders.py:1017 +#: pretix/control/views/orders.py:1018 #, python-brace-format msgid "" "Hello,\n" @@ -26095,7 +26149,7 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/control/views/orders.py:1073 +#: pretix/control/views/orders.py:1074 msgid "" "The payment has been marked as complete, but we were unable to send a " "confirmation mail." @@ -26103,64 +26157,64 @@ msgstr "" "Platba byla označena jako dokončená, ale nepodařilo se nám odeslat " "potvrzovací mail." -#: pretix/control/views/orders.py:1076 +#: pretix/control/views/orders.py:1077 msgid "The payment has been marked as complete." msgstr "Platba byla označena jako dokončená." -#: pretix/control/views/orders.py:1078 +#: pretix/control/views/orders.py:1079 msgid "This payment can not be confirmed at the moment." msgstr "Tuto platbu nelze v současné době potvrdit." -#: pretix/control/views/orders.py:1169 +#: pretix/control/views/orders.py:1170 msgid "" "The refund was prevented due to a refund already being processed at the same " "time. Please have a look at the order details and check if your refund is " "still necessary." msgstr "" -#: pretix/control/views/orders.py:1269 +#: pretix/control/views/orders.py:1270 #, fuzzy msgid "You entered an order in an event with a different currency." msgstr "Zadali jste objednávku, kterou se nepodařilo najít." -#: pretix/control/views/orders.py:1320 +#: pretix/control/views/orders.py:1321 msgid "" "You can not refund more than the amount of a payment that is not yet " "refunded." msgstr "" -#: pretix/control/views/orders.py:1325 +#: pretix/control/views/orders.py:1326 msgid "" "You selected a partial refund for a payment method that only supports full " "refunds." msgstr "" -#: pretix/control/views/orders.py:1355 +#: pretix/control/views/orders.py:1356 msgid "" "One of the refunds failed to be processed. You should retry to refund in a " "different way. The error message was: {}" msgstr "" -#: pretix/control/views/orders.py:1361 +#: pretix/control/views/orders.py:1362 msgid "A refund of {} has been processed." msgstr "" -#: pretix/control/views/orders.py:1365 +#: pretix/control/views/orders.py:1366 msgid "" "A refund of {} has been saved, but not yet fully executed. You can mark it " "as complete below." msgstr "" -#: pretix/control/views/orders.py:1394 +#: pretix/control/views/orders.py:1395 msgid "" "A new gift card was created. You can now send the user their gift card code." msgstr "" -#: pretix/control/views/orders.py:1402 +#: pretix/control/views/orders.py:1403 msgid "Your gift card code" msgstr "" -#: pretix/control/views/orders.py:1404 +#: pretix/control/views/orders.py:1405 #, python-brace-format msgid "" "Hello,\n" @@ -26173,150 +26227,150 @@ msgid "" "Your {event} team" msgstr "" -#: pretix/control/views/orders.py:1415 +#: pretix/control/views/orders.py:1416 msgid "The refunds you selected do not match the selected total refund amount." msgstr "" -#: pretix/control/views/orders.py:1543 +#: pretix/control/views/orders.py:1544 msgid "" "The order has been marked as paid, but we were unable to send a confirmation " "mail." msgstr "" -#: pretix/control/views/orders.py:1546 +#: pretix/control/views/orders.py:1547 msgid "The payment has been created successfully." msgstr "Platba byla úspěšně vytvořena." -#: pretix/control/views/orders.py:1560 +#: pretix/control/views/orders.py:1561 msgid "" "The order has been canceled. You can now select how you want to transfer the " "money back to the user." msgstr "" -#: pretix/control/views/orders.py:1631 pretix/control/views/orders.py:1635 +#: pretix/control/views/orders.py:1632 pretix/control/views/orders.py:1636 msgid "No VAT ID specified." msgstr "" -#: pretix/control/views/orders.py:1639 +#: pretix/control/views/orders.py:1640 msgid "No country specified." msgstr "" -#: pretix/control/views/orders.py:1643 +#: pretix/control/views/orders.py:1644 msgid "VAT ID could not be checked since this country is not supported." msgstr "" -#: pretix/control/views/orders.py:1654 +#: pretix/control/views/orders.py:1655 msgid "" "The VAT ID could not be checked, as the VAT checking service of the country " "is currently not available." msgstr "" -#: pretix/control/views/orders.py:1657 +#: pretix/control/views/orders.py:1658 msgid "This VAT ID is valid." msgstr "" -#: pretix/control/views/orders.py:1671 pretix/control/views/orders.py:1704 +#: pretix/control/views/orders.py:1672 pretix/control/views/orders.py:1705 msgid "Unknown invoice." msgstr "Neznámá faktura." -#: pretix/control/views/orders.py:1674 +#: pretix/control/views/orders.py:1675 msgid "Invoices may not be changed after they are created." msgstr "" -#: pretix/control/views/orders.py:1676 pretix/control/views/orders.py:1707 +#: pretix/control/views/orders.py:1677 pretix/control/views/orders.py:1708 msgid "The invoice has already been canceled." msgstr "" -#: pretix/control/views/orders.py:1678 +#: pretix/control/views/orders.py:1679 msgid "The invoice file has already been exported." msgstr "Soubor faktury již byl exportován." -#: pretix/control/views/orders.py:1680 +#: pretix/control/views/orders.py:1681 msgid "The invoice file is too old to be regenerated." msgstr "" -#: pretix/control/views/orders.py:1682 pretix/control/views/orders.py:1709 +#: pretix/control/views/orders.py:1683 pretix/control/views/orders.py:1710 msgid "The invoice has been cleaned of personal data." msgstr "" -#: pretix/control/views/orders.py:1740 +#: pretix/control/views/orders.py:1741 msgid "The email has been queued to be sent." msgstr "" -#: pretix/control/views/orders.py:1764 pretix/presale/views/order.py:1277 +#: pretix/control/views/orders.py:1765 pretix/presale/views/order.py:1279 msgid "This invoice has not been found" msgstr "" -#: pretix/control/views/orders.py:1771 pretix/presale/views/order.py:1284 +#: pretix/control/views/orders.py:1772 pretix/presale/views/order.py:1286 msgid "The invoice file is no longer stored on the server." msgstr "" -#: pretix/control/views/orders.py:1776 pretix/presale/views/order.py:1289 +#: pretix/control/views/orders.py:1777 pretix/presale/views/order.py:1291 msgid "" "The invoice file has not yet been generated, we will generate it for you " "now. Please try again in a few seconds." msgstr "" -#: pretix/control/views/orders.py:1804 +#: pretix/control/views/orders.py:1805 msgid "The payment term has been changed." msgstr "Termín platby byl změněn." -#: pretix/control/views/orders.py:1809 pretix/control/views/orders.py:1866 +#: pretix/control/views/orders.py:1810 pretix/control/views/orders.py:1867 msgid "" "We were not able to process the request completely as the server was too " "busy." msgstr "" -#: pretix/control/views/orders.py:1817 +#: pretix/control/views/orders.py:1818 msgid "This action is only allowed for pending orders." msgstr "" -#: pretix/control/views/orders.py:1872 +#: pretix/control/views/orders.py:1873 msgid "This action is only allowed for canceled orders." msgstr "" -#: pretix/control/views/orders.py:2129 pretix/presale/views/order.py:1563 +#: pretix/control/views/orders.py:2130 pretix/presale/views/order.py:1565 msgid "An error occurred. Please see the details below." msgstr "" -#: pretix/control/views/orders.py:2137 +#: pretix/control/views/orders.py:2138 msgid "The order has been changed and the user has been notified." msgstr "" -#: pretix/control/views/orders.py:2139 pretix/control/views/orders.py:2275 -#: pretix/control/views/orders.py:2312 pretix/presale/views/order.py:1598 +#: pretix/control/views/orders.py:2140 pretix/control/views/orders.py:2276 +#: pretix/control/views/orders.py:2313 pretix/presale/views/order.py:1600 msgid "The order has been changed." msgstr "" -#: pretix/control/views/orders.py:2166 pretix/presale/checkoutflow.py:945 -#: pretix/presale/views/order.py:781 pretix/presale/views/order.py:886 +#: pretix/control/views/orders.py:2167 pretix/presale/checkoutflow.py:945 +#: pretix/presale/views/order.py:783 pretix/presale/views/order.py:888 msgid "" "We had difficulties processing your input. Please review the errors below." msgstr "" -#: pretix/control/views/orders.py:2277 +#: pretix/control/views/orders.py:2278 msgid "Nothing about the order had to be changed." msgstr "" -#: pretix/control/views/orders.py:2358 pretix/plugins/sendmail/views.py:176 +#: pretix/control/views/orders.py:2359 pretix/plugins/sendmail/views.py:176 msgid "We could not send the email. See below for details." msgstr "" -#: pretix/control/views/orders.py:2374 pretix/control/views/orders.py:2444 +#: pretix/control/views/orders.py:2375 pretix/control/views/orders.py:2445 #: pretix/plugins/sendmail/views.py:204 pretix/plugins/sendmail/views.py:671 #, python-brace-format msgid "Subject: {subject}" msgstr "Předmět: {subject}" -#: pretix/control/views/orders.py:2393 pretix/control/views/orders.py:2464 +#: pretix/control/views/orders.py:2394 pretix/control/views/orders.py:2465 msgid "Your message has been queued and will be sent to {}." msgstr "" -#: pretix/control/views/orders.py:2397 pretix/control/views/orders.py:2467 +#: pretix/control/views/orders.py:2398 pretix/control/views/orders.py:2468 msgid "Failed to send mail to the following user: {}" msgstr "" -#: pretix/control/views/orders.py:2520 pretix/presale/views/order.py:1060 +#: pretix/control/views/orders.py:2521 pretix/presale/views/order.py:1062 msgid "" "This link is no longer valid. Please go back, refresh the page, and try " "again." @@ -26324,35 +26378,35 @@ msgstr "" "Tento odkaz již není platný. Vraťte se prosím o krok zpět, znovu načtěte " "stránku a zkuste to znovu." -#: pretix/control/views/orders.py:2596 +#: pretix/control/views/orders.py:2597 msgid "There is no order with the given order code." msgstr "" -#: pretix/control/views/orders.py:2702 pretix/control/views/organizer.py:1805 +#: pretix/control/views/orders.py:2703 pretix/control/views/organizer.py:1805 msgid "The selected exporter was not found." msgstr "" -#: pretix/control/views/orders.py:2712 pretix/control/views/organizer.py:1815 +#: pretix/control/views/orders.py:2713 pretix/control/views/organizer.py:1815 msgid "There was a problem processing your input. See below for error details." msgstr "" -#: pretix/control/views/orders.py:2747 pretix/control/views/organizer.py:1858 +#: pretix/control/views/orders.py:2748 pretix/control/views/organizer.py:1858 #, python-brace-format msgid "" "Your export schedule has been saved. The next export will start around " "{datetime}." msgstr "" -#: pretix/control/views/orders.py:2752 pretix/control/views/organizer.py:1863 +#: pretix/control/views/orders.py:2753 pretix/control/views/organizer.py:1863 msgid "Your export schedule has been saved, but no next export is planned." msgstr "" -#: pretix/control/views/orders.py:2791 pretix/control/views/organizer.py:1903 +#: pretix/control/views/orders.py:2792 pretix/control/views/organizer.py:1903 #, python-brace-format msgid "Export: {title}" msgstr "" -#: pretix/control/views/orders.py:2792 pretix/control/views/organizer.py:1905 +#: pretix/control/views/orders.py:2793 pretix/control/views/organizer.py:1905 #, python-brace-format msgid "" "Hello,\n" @@ -26360,25 +26414,25 @@ msgid "" "attached to this email, you can find a new scheduled report for {name}." msgstr "" -#: pretix/control/views/orders.py:2860 pretix/control/views/organizer.py:1973 +#: pretix/control/views/orders.py:2861 pretix/control/views/organizer.py:1973 msgid "" "Your export is queued to start soon. The results will be send via email. " "Depending on system load and type and size of export, this may take a few " "minutes." msgstr "" -#: pretix/control/views/orders.py:2939 +#: pretix/control/views/orders.py:2940 msgid "All orders have been canceled." msgstr "" -#: pretix/control/views/orders.py:2941 +#: pretix/control/views/orders.py:2942 #, python-brace-format msgid "" "The orders have been canceled. An error occurred with {count} orders, please " "check all uncanceled orders." msgstr "" -#: pretix/control/views/orders.py:2962 +#: pretix/control/views/orders.py:2963 msgid "Your input was not valid." msgstr "" @@ -26914,7 +26968,7 @@ msgstr "" msgid "The selected entry has been deleted." msgstr "" -#: pretix/control/views/waitinglist.py:402 pretix/presale/views/widget.py:418 +#: pretix/control/views/waitinglist.py:402 pretix/presale/views/widget.py:411 msgid "This is not an event series." msgstr "" @@ -28347,7 +28401,9 @@ msgid "Upload time" msgstr "" #: pretix/plugins/checkinlists/exporters.py:826 -#: pretix/presale/templates/pretixpresale/fragment_modals.html:144 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:519 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:52 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:148 msgid "OK" msgstr "OK" @@ -28880,7 +28936,7 @@ msgid "Please turn on JavaScript." msgstr "Zapněte prosím JavaScript." #: pretix/plugins/paypal2/templates/pretixplugins/paypal2/pay.html:29 -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:55 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:56 msgid "Please select how you want to pay." msgstr "Vyberte, jak chcete platit." @@ -29392,47 +29448,51 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: pretix/plugins/sendmail/signals.py:101 +#: pretix/plugins/sendmail/signals.py:102 msgid "Scheduled emails" msgstr "" -#: pretix/plugins/sendmail/signals.py:121 +#: pretix/plugins/sendmail/signals.py:122 msgid "Mass email was sent to customers or attendees." msgstr "" -#: pretix/plugins/sendmail/signals.py:122 +#: pretix/plugins/sendmail/signals.py:123 msgid "Mass email was sent to waiting list entries." msgstr "" -#: pretix/plugins/sendmail/signals.py:127 +#: pretix/plugins/sendmail/signals.py:128 msgid "The order received a mass email." msgstr "" -#: pretix/plugins/sendmail/signals.py:128 +#: pretix/plugins/sendmail/signals.py:129 msgid "A ticket holder of this order received a mass email." msgstr "" -#: pretix/plugins/sendmail/signals.py:133 +#: pretix/plugins/sendmail/signals.py:134 +msgid "The person on the waiting list received a mass email." +msgstr "" + +#: pretix/plugins/sendmail/signals.py:139 msgid "An email rule was created" msgstr "" -#: pretix/plugins/sendmail/signals.py:134 +#: pretix/plugins/sendmail/signals.py:140 msgid "An email rule was updated" msgstr "" -#: pretix/plugins/sendmail/signals.py:135 +#: pretix/plugins/sendmail/signals.py:141 msgid "A scheduled email was sent to the order" msgstr "" -#: pretix/plugins/sendmail/signals.py:136 +#: pretix/plugins/sendmail/signals.py:142 msgid "A scheduled email was sent to a ticket holder" msgstr "" -#: pretix/plugins/sendmail/signals.py:137 +#: pretix/plugins/sendmail/signals.py:143 msgid "An email rule was deleted" msgstr "" -#: pretix/plugins/sendmail/signals.py:140 +#: pretix/plugins/sendmail/signals.py:146 #, fuzzy, python-brace-format #| msgid "Tax rule {val}" msgid "Mail rule {val}" @@ -30799,7 +30859,7 @@ msgstr "Doplňkové produkty" #: pretix/presale/checkoutflow.py:678 pretix/presale/checkoutflow.py:686 #: pretix/presale/views/cart.py:195 pretix/presale/views/cart.py:200 #: pretix/presale/views/cart.py:218 pretix/presale/views/cart.py:231 -#: pretix/presale/views/order.py:1485 pretix/presale/views/order.py:1493 +#: pretix/presale/views/order.py:1487 pretix/presale/views/order.py:1495 msgid "Please enter numbers only." msgstr "Zadávejte prosím pouze čísla." @@ -30980,7 +31040,7 @@ msgstr "" msgid "Forgot your password?" msgstr "Zapomněli jste heslo?" -#: pretix/presale/forms/customer.py:146 +#: pretix/presale/forms/customer.py:147 msgid "" "We've received a lot of registration requests from you, please wait 10 " "minutes before you try again." @@ -30988,7 +31048,7 @@ msgstr "" "Obdrželi jsme od vás spoustu žádostí o registraci, počkejte prosím 10 minut, " "než to zkusíte znovu." -#: pretix/presale/forms/customer.py:148 +#: pretix/presale/forms/customer.py:149 msgid "" "An account with this email address is already registered. Please try to log " "in or reset your password instead." @@ -30996,28 +31056,28 @@ msgstr "" "Účet s touto e-mailovou adresou je již zaregistrován. Zkuste se místo toho " "přihlásit nebo obnovit heslo." -#: pretix/presale/forms/customer.py:201 +#: pretix/presale/forms/customer.py:202 #, python-brace-format msgid "What is the result of {num1} + {num2}?" msgstr "Jaký je výsledek součtu {num1} + {num2}?" -#: pretix/presale/forms/customer.py:247 +#: pretix/presale/forms/customer.py:248 msgid "Please enter the correct result." msgstr "Zadejte prosím správný výsledek." -#: pretix/presale/forms/customer.py:339 +#: pretix/presale/forms/customer.py:340 msgid "For security reasons, please wait 10 minutes before you try again." msgstr "Z bezpečnostních důvodů počkejte 10 minut, než to zkusíte znovu." -#: pretix/presale/forms/customer.py:340 +#: pretix/presale/forms/customer.py:341 msgid "A user with this email address is not known in our system." msgstr "Uživatel s touto e-mailovou adresou není v našem systému uveden." -#: pretix/presale/forms/customer.py:461 +#: pretix/presale/forms/customer.py:463 msgid "Only required if you change your email address" msgstr "Vyžaduje se pouze v případě změny e-mailové adresy" -#: pretix/presale/forms/customer.py:497 +#: pretix/presale/forms/customer.py:501 #, python-brace-format msgid "" "To change your email address, change it in your {provider} account and then " @@ -31198,8 +31258,8 @@ msgid "Contact event organizer" msgstr "Kontaktovat pořadatele akce" #: pretix/presale/templates/pretixpresale/event/base.html:225 -#: pretix/presale/templates/pretixpresale/fragment_modals.html:114 -#: pretix/presale/templates/pretixpresale/fragment_modals.html:133 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:118 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:137 #: pretix/presale/templates/pretixpresale/organizers/base.html:103 msgid "Privacy policy" msgstr "Ochrana osobních údajů" @@ -31250,8 +31310,8 @@ msgstr "Doporučené rozšíření" #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:202 #: pretix/presale/templates/pretixpresale/event/checkout_customer.html:120 #: pretix/presale/templates/pretixpresale/event/checkout_membership.html:75 -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:124 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:172 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:125 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:187 #: pretix/presale/templates/pretixpresale/organizers/customer_address_delete.html:28 #: pretix/presale/templates/pretixpresale/organizers/customer_profile_delete.html:28 msgid "Go back" @@ -31271,7 +31331,7 @@ msgstr "Pokladna" #: pretix/presale/templates/pretixpresale/event/checkout_base.html:15 #: pretix/presale/templates/pretixpresale/event/checkout_base.html:21 #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:18 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:8 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:9 #: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:11 msgid "Your cart" msgstr "Váš košík" @@ -31324,7 +31384,7 @@ msgid "Modify invoice information" msgstr "Upravit informace na faktuře" #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:124 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:18 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:19 #: pretix/presale/templates/pretixpresale/event/order_modify.html:33 msgid "Contact information" msgstr "Kontaktní údaje" @@ -31426,7 +31486,7 @@ msgstr "" "aktivní členství." #: pretix/presale/templates/pretixpresale/event/checkout_membership.html:34 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:106 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:110 msgid "Selected add-ons" msgstr "Zvolené doplňky" @@ -31442,73 +31502,70 @@ msgstr "" msgid "You already selected the following payment methods:" msgstr "Zvolili jste již následující způsoby platby:" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:26 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:29 msgid "Remove payment" msgstr "Odstranit platbu" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:38 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:39 msgid "Remaining balance" msgstr "Zbývající zůstatek" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:39 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:40 msgid "Please select a payment method below." msgstr "Níže si prosím vyberte způsob platby." -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:52 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:53 msgid "Please select how you want to pay the remaining balance:" msgstr "Vyberte, jakým způsobem chcete zaplatit zbývající částku:" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:90 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:91 msgid "This sales channel does not provide support for test mode." msgstr "Tento prodejní kanál neposkytuje podporu pro testovací režim." -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:92 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:93 msgid "If you continue, you might pay an actual order with non-existing money!" msgstr "" "Pokud budete pokračovat, můžete zaplatit skutečnou objednávku neexistujícími " "penězi!" -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:100 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:101 msgid "This payment provider does not provide support for test mode." msgstr "Tento poskytovatel plateb neumožňuje testovací režim." -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:102 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:103 msgid "If you continue, actual money might be transferred." msgstr "Pokud budete pokračovat, může dojít k převodu skutečných peněz." -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:113 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:114 msgid "There are no payment providers enabled." msgstr "Nejsou aktivní žádní poskytovatelé plateb." -#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:115 +#: pretix/presale/templates/pretixpresale/event/checkout_payment.html:116 msgid "" "Please go to the payment settings and activate one or more payment providers." msgstr "" "Přejděte do nastavení plateb a aktivujte jednoho nebo více poskytovatelů " "plateb." -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:8 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:9 msgid "Before we continue, we need you to answer some questions." msgstr "Před provedením objednávky prosím odpovězte na níže uvedené otázky." -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:46 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:47 msgid "Auto-fill with address" msgstr "Automatické vyplnění adresy" -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:53 -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:154 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:54 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:157 msgid "Fill form" msgstr "Vyplnit formulář" -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:81 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:91 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:168 msgid "Copy answers from above" msgstr "Zkopírujte odpovědi z výše uvedených položek" -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:136 -msgid "Copy answers" -msgstr "Kopírovat odpovědi" - -#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:145 +#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:148 msgid "Auto-fill with profile" msgstr "Automatické vyplňování profilu" @@ -31616,12 +31673,6 @@ msgstr "od %(from_price)s do %(to_price)s" msgid "Hide variants" msgstr "Skrýt varianty" -#: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:100 -#: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:105 -#, python-format -msgid "Show %(count)s variants of %(item)s" -msgstr "Zobrazit %(count)s varianty %(item)s" - #: pretix/presale/templates/pretixpresale/event/fragment_addon_choice.html:102 #: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:107 msgid "Show variants" @@ -31764,7 +31815,7 @@ msgstr "PLNĚ OBSAZENO" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:104 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:30 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:68 -#: pretix/presale/views/widget.py:451 +#: pretix/presale/views/widget.py:444 msgid "Reserved" msgstr "Rezervováno" @@ -31773,45 +31824,45 @@ msgid "All remaining products are reserved but might become available again." msgstr "" "Všechny zbývající produkty jsou rezervovány, ale mohou být znovu k dispozici." -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:17 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:18 msgid "Price per item" msgstr "Cena za jednotku" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:21 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:22 msgid "Price total" msgstr "Celková cena" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:45 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:46 msgid "Seat:" msgstr "Sedadlo:" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:60 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:61 msgctxt "subevent" msgid "Date:" msgstr "Datum:" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:78 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:79 msgid "Location:" msgstr "Poloha:" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:80 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:81 msgid "Show full location" msgstr "Zobrazit celou lokaci" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:91 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:92 msgid "Membership:" msgstr "Členství:" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:122 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:123 msgid "This ticket is blocked." msgstr "Tato vstupenka je zablokovaná." -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:129 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:130 msgctxt "ticket_checkins" msgid "Usage:" msgstr "Použití:" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:133 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:134 #, python-format msgid "This ticket has been used once." msgid_plural "This ticket has been used %(count)s times." @@ -31819,57 +31870,57 @@ msgstr[0] "Vstupenka byla použita jednou." msgstr[1] "Vstupenka byla použita %(count)s krát." msgstr[2] "Vstupenka byla použita %(count)s krát." -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:165 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:166 msgid "No attendee name provided" msgstr "Nebylo uvedeno žádné jméno účastníka" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:218 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:219 msgid "The image you previously uploaded" msgstr "Obrázek, který jste předtím nahráli" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:264 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:337 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:265 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:338 msgid "The price of this product was reduced because of an automatic discount." msgstr "Cena tohoto produktu byla snížena díky automatické slevě." -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:268 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:341 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:269 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:342 #, python-format msgid "%(percent)s %% Discount" msgstr "" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:272 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:345 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:273 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:346 msgid "Discounted" msgstr "Sleva" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:282 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:283 msgid "Okay, we're removing that…" msgstr "Dobře, odstraňujeme to…" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:287 -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:289 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:288 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:290 #, python-format msgid "Remove %(item)s from your cart" msgstr "Odstranit %(item)s z košíku" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:292 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:293 #, python-format msgid "Remove one %(item)s from your cart" msgstr "Odstranit jeden %(item)s z košíku" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:294 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:295 #, python-format msgid "" "Remove one %(item)s from your cart. You currently have %(count)s in your " "cart." msgstr "Odstraňte z košíku jeden %(item)s. Aktuálně máte v košíku %(count)s." -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:302 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:303 msgid "We're trying to reserve another one for you!" msgstr "Snažíme se pro vás rezervovat další!" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:303 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:304 #: pretix/presale/templates/pretixpresale/event/index.html:187 #: pretix/presale/templates/pretixpresale/event/seatingplan.html:24 #: pretix/presale/templates/pretixpresale/event/voucher.html:62 @@ -31880,12 +31931,12 @@ msgid "" msgstr "" "Jakmile jsou položky v košíku, budete mít %(time)s minut na dokončení nákupu." -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:322 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:323 #, python-format msgid "Add one more %(item)s to your cart" msgstr "Přidat do košíku další %(item)s" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:324 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:325 #, python-format msgid "" "Add one more %(item)s to your cart. You currently have %(count)s in your " @@ -31894,13 +31945,13 @@ msgstr "" "Přidejte do košíku ještě jednu %(item)s . V současné době máte v košíku " "%(count)s." -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:384 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:385 #: pretix/presale/templates/pretixpresale/event/order_giftcard.html:20 #: pretix/presale/templates/pretixpresale/event/position_giftcard.html:20 msgid "Current value:" msgstr "Současná cena:" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:466 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:467 #, python-format msgid "One product" msgid_plural "%(num)s products" @@ -31908,17 +31959,17 @@ msgstr[0] "Jeden produkt" msgstr[1] "%(num)s produkty" msgstr[2] "%(num)s produkty" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:480 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:481 #, python-format msgid "incl. %(tax_sum)s taxes" msgstr "vč. %(tax_sum)s daněmi" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:500 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:501 #, python-format msgid "The items in your cart are reserved for you for %(minutes)s minutes." msgstr "Položky v košíku jsou pro vás rezervovány na %(minutes)s minut." -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:504 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:505 msgid "" "The items in your cart are no longer reserved for you. You can still " "complete your order as long as they’re available." @@ -31926,14 +31977,20 @@ msgstr "" "Produkty v nákupním košíku již nejsou pro vás rezervovány. Pokud je lístek " "stále dostupný, můžete objednávku dokončit." -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:509 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:510 #: pretix/presale/templates/pretixpresale/fragment_modals.html:48 #, fuzzy #| msgid "Event description" msgid "Renew reservation" msgstr "Popis akce" -#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:514 +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:522 +#, fuzzy +#| msgid "Reservation period" +msgid "Reservation renewed" +msgstr "Doba rezervace" + +#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:528 msgid "Overview of your ordered products." msgstr "Přehled objednaných produktů." @@ -31962,7 +32019,7 @@ msgid "We're applying this voucher to your cart..." msgstr "Uplatňujeme tento poukaz ve vašem košíku..." #: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:79 -#: pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html:26 +#: pretix/presale/templates/pretixpresale/event/fragment_voucher_form.html:27 msgid "Redeem voucher" msgstr "Uplatnění poukázky" @@ -32263,9 +32320,9 @@ msgstr "%(num)s aktuálně k dispozici" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:5 #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:5 -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:33 -#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:33 -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:33 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:37 +#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:37 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:37 msgid "calendar navigation" msgstr "navigace v kalendáři" @@ -32275,20 +32332,20 @@ msgid "Show previous month, %(month)s" msgstr "Zobrazit předchozí měsíc, %(month)s" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:24 -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:52 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:56 #, fuzzy #| msgid "Select month to show" msgid "Select a month to display" msgstr "Vyberte měsíc, který chcete zobrazit" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:26 -#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:17 -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:54 +#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:16 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:58 msgid "Month" msgstr "Měsíc" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:39 -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:67 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:71 #, fuzzy #| msgctxt "reporting_timeframe" #| msgid "by month" @@ -32307,7 +32364,7 @@ msgid "Show previous week, %(week)s" msgstr "Zobrazit předchozí týden, %(week)s" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:24 -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:52 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:56 #, fuzzy #| msgid "Select week to show" msgid "Select a week to display" @@ -32315,7 +32372,7 @@ msgstr "Vybrat týden, který se má zobrazit" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:26 #: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:12 -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:54 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:58 msgid "Week" msgstr "Týden" @@ -32324,7 +32381,7 @@ msgid "Select week to show" msgstr "Vybrat týden, který se má zobrazit" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:43 -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:71 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:75 #, fuzzy #| msgctxt "reporting_timeframe" #| msgid "by week" @@ -32339,7 +32396,7 @@ msgstr "Zobrazit následující týden, %(week)s" #: pretix/presale/templates/pretixpresale/event/fragment_subevent_list.html:34 #: pretix/presale/templates/pretixpresale/organizers/index.html:93 -#: pretix/presale/views/widget.py:462 +#: pretix/presale/views/widget.py:455 msgid "More info" msgstr "Další informace" @@ -32381,12 +32438,12 @@ msgid "Choose date to book a ticket" msgstr "Zvolte datum pro rezervaci vstupenky" #: pretix/presale/templates/pretixpresale/event/index.html:156 -#: pretix/presale/views/waiting.py:141 pretix/presale/views/widget.py:781 +#: pretix/presale/views/waiting.py:141 pretix/presale/views/widget.py:774 msgid "The booking period for this event is over." msgstr "Rezervační období pro tuto akci skončilo." #: pretix/presale/templates/pretixpresale/event/index.html:164 -#: pretix/presale/views/widget.py:783 +#: pretix/presale/views/widget.py:776 #, python-format msgid "The booking period for this event will start on %(date)s at %(time)s." msgstr "Rezervační období pro tuto akci začíná v %(date)s) v %(time)s." @@ -33129,7 +33186,7 @@ msgstr "(pokračuje)" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:93 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:13 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:57 -#: pretix/presale/views/widget.py:436 +#: pretix/presale/views/widget.py:429 msgid "Few tickets left" msgstr "Zbývá posledních pár vstupenek" @@ -33137,7 +33194,7 @@ msgstr "Zbývá posledních pár vstupenek" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:96 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:18 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:60 -#: pretix/presale/views/widget.py:441 +#: pretix/presale/views/widget.py:434 msgctxt "available_event_in_list" msgid "Buy now" msgstr "Koupit nyní" @@ -33150,7 +33207,7 @@ msgstr "Koupit nyní" #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:43 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:62 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:77 -#: pretix/presale/views/widget.py:443 pretix/presale/views/widget.py:466 +#: pretix/presale/views/widget.py:436 pretix/presale/views/widget.py:459 msgid "Book now" msgstr "Rezervovat nyní" @@ -33158,7 +33215,7 @@ msgstr "Rezervovat nyní" #: pretix/presale/templates/pretixpresale/fragment_day_calendar.html:110 #: pretix/presale/templates/pretixpresale/fragment_event_list_status.html:37 #: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:73 -#: pretix/presale/views/widget.py:458 +#: pretix/presale/views/widget.py:451 msgid "Fully booked" msgstr "vyprodáno" @@ -33173,7 +33230,11 @@ msgstr "" " od %(start_date)s\n" " " -#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:27 +#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:5 +msgid "Event overview by month, week, etc." +msgstr "" + +#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:26 msgid "iCal" msgstr "iCal" @@ -33233,21 +33294,21 @@ msgid "" "Once the process in the new window has been completed, you can continue here." msgstr "Po dokončení procesu v novém okně můžete pokračovat zde." -#: pretix/presale/templates/pretixpresale/fragment_modals.html:58 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:62 #, fuzzy #| msgid "Closed" msgid "Close" msgstr "Uzavřený" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:79 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:83 msgid "Adjust settings in detail" msgstr "Podrobné nastavení" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:84 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:88 msgid "Required cookies" msgstr "Povinné soubory cookie" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:88 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:92 msgid "" "Functional cookies (e.g. shopping cart, login, payment, language preference) " "and technical cookies (e.g. security purposes)" @@ -33255,37 +33316,37 @@ msgstr "" "Funkční soubory cookie (např. nákupní košík, přihlášení, platby, volba " "jazyka) a technické soubory cookie (např. pro bezpečnostní účely)" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:102 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:106 msgctxt "cookie_usage" msgid "Functionality" msgstr "Funkčnost" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:104 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:108 msgctxt "cookie_usage" msgid "Analytics" msgstr "Analytika" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:106 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:110 msgctxt "cookie_usage" msgid "Marketing" msgstr "Marketing" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:108 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:112 msgctxt "cookie_usage" msgid "Social features" msgstr "Sociální funkce" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:124 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:128 msgid "Save selection" msgstr "Uložit volbu" -#: pretix/presale/templates/pretixpresale/fragment_modals.html:141 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:145 #, fuzzy #| msgid "You did not select any products." msgid "You didn't select any ticket." msgstr "Nevybrali jste žádné produkty." -#: pretix/presale/templates/pretixpresale/fragment_modals.html:142 +#: pretix/presale/templates/pretixpresale/fragment_modals.html:146 msgid "" "Please tick a checkbox or enter a quantity for one of the ticket types to " "add to the cart." @@ -33335,43 +33396,40 @@ msgstr "" msgid "Enjoy!" msgstr "Příjemnou zábavu!" -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:7 -#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:7 -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:7 -msgid "Event overview" -msgstr "Přehled akce" - -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:21 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:8 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:25 #, fuzzy, python-format #| msgid "Show next month, %(month)s" msgid "Events in %(month)s" msgstr "Zobrazit následující měsíc, %(month)s" -#: pretix/presale/templates/pretixpresale/organizers/calendar.html:91 -#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:104 -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:117 +#: pretix/presale/templates/pretixpresale/organizers/calendar.html:95 +#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:108 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:121 msgid "Note that the events in this view are in different timezones." msgstr "Všimněte si, že akce v tomto zobrazení jsou v různých časových zónách." -#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:21 +#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:8 +#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:25 #, fuzzy, python-format #| msgid "Event end weekday" msgid "Events on %(day)s" msgstr "Konec akce v pracovní den" -#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:52 +#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:56 #, fuzzy #| msgid "Select week to show" msgid "Select a date to display" msgstr "Vybrat týden, který se má zobrazit" -#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:59 +#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:63 #, fuzzy #| msgid "Show start date" msgid "Show date" msgstr "Zobrazit začátek předprodejního období" -#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:21 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:8 +#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:25 #, python-format msgid "Events in %(week)s (%(week_day_from)s – %(week_day_to)s)" msgstr "" @@ -33609,41 +33667,41 @@ msgstr "Zadávejte pouze kladná čísla." msgid "We applied the voucher to as many products in your cart as we could." msgstr "Poukaz jsme uplatnili na co nejvíce produktů ve vašem košíku." -#: pretix/presale/views/cart.py:460 pretix/presale/views/cart.py:468 +#: pretix/presale/views/cart.py:476 pretix/presale/views/cart.py:484 msgid "" "The gift card has been saved to your cart. Please continue your checkout." msgstr "" -#: pretix/presale/views/cart.py:504 +#: pretix/presale/views/cart.py:520 msgid "Your cart has been updated." msgstr "Váš košík byl aktualizován." -#: pretix/presale/views/cart.py:507 pretix/presale/views/cart.py:533 +#: pretix/presale/views/cart.py:523 pretix/presale/views/cart.py:549 msgid "Your cart is now empty." msgstr "Váš košík je nyní prázdný." -#: pretix/presale/views/cart.py:553 +#: pretix/presale/views/cart.py:569 #, fuzzy #| msgid "Your cart has been updated." msgid "Your cart timeout was extended." msgstr "Váš košík byl aktualizován." -#: pretix/presale/views/cart.py:568 +#: pretix/presale/views/cart.py:584 msgid "The products have been successfully added to your cart." msgstr "Produkty byly úspěšně přidány do košíku." -#: pretix/presale/views/cart.py:592 pretix/presale/views/event.py:542 -#: pretix/presale/views/widget.py:402 +#: pretix/presale/views/cart.py:608 pretix/presale/views/event.py:542 +#: pretix/presale/views/widget.py:395 msgid "Tickets for this event cannot be purchased on this sales channel." msgstr "Vstupenky na tuto akci nelze zakoupit v tomto prodejním kanálu." -#: pretix/presale/views/cart.py:731 +#: pretix/presale/views/cart.py:763 msgid "" "The gift card has been saved to your cart. Please now select the products " "you want to purchase." msgstr "" -#: pretix/presale/views/cart.py:759 +#: pretix/presale/views/cart.py:791 msgctxt "subevent" msgid "We were unable to find the specified date." msgstr "Uvedené datum se nám nepodařilo najít." @@ -33767,33 +33825,33 @@ msgstr "Platba za tuto objednávku stále není uhrazena." msgid "An invoice has been generated." msgstr "Byla vytvořena faktura." -#: pretix/presale/views/order.py:841 pretix/presale/views/order.py:913 +#: pretix/presale/views/order.py:843 pretix/presale/views/order.py:915 msgid "You cannot modify this order" msgstr "Tuto objednávku nelze změnit" -#: pretix/presale/views/order.py:1008 pretix/presale/views/order.py:1013 -#: pretix/presale/views/order.py:1018 +#: pretix/presale/views/order.py:1010 pretix/presale/views/order.py:1015 +#: pretix/presale/views/order.py:1020 msgid "You chose an invalid cancellation fee." msgstr "Zvolili jste neplatný storno poplatek." -#: pretix/presale/views/order.py:1034 +#: pretix/presale/views/order.py:1036 msgid "Canceled by customer" msgstr "Zrušeno zákazníkem" -#: pretix/presale/views/order.py:1045 +#: pretix/presale/views/order.py:1047 msgid "The cancellation has been requested." msgstr "Bylo požádáno o zrušení." -#: pretix/presale/views/order.py:1098 +#: pretix/presale/views/order.py:1100 msgid "Ticket download is not (yet) enabled for this order." msgstr "U této objednávky (zatím) není povoleno stahování vstupenek." -#: pretix/presale/views/order.py:1107 +#: pretix/presale/views/order.py:1109 msgid "Please click the link we sent you via email to download your tickets." msgstr "" "Klikněte na odkaz, který jsme vám poslali e-mailem, a stáhněte si vstupenky." -#: pretix/presale/views/order.py:1590 +#: pretix/presale/views/order.py:1592 #, python-brace-format msgid "" "The order has been changed. You can now proceed by paying the open amount of " @@ -33802,28 +33860,28 @@ msgstr "" "Změna objednávky byla provedena. Nyní můžete pokračovat zaplacením otevřené " "částky ve výši {amount}." -#: pretix/presale/views/order.py:1602 +#: pretix/presale/views/order.py:1604 msgid "You did not make any changes." msgstr "Neprovedli jste žádné změny." -#: pretix/presale/views/order.py:1626 +#: pretix/presale/views/order.py:1628 msgid "You may not change your order in a way that reduces the total price." msgstr "Objednávku nesmíte změnit tak, aby se snížila celková cena." -#: pretix/presale/views/order.py:1628 +#: pretix/presale/views/order.py:1630 msgid "You may only change your order in a way that increases the total price." msgstr "Objednávku můžete změnit pouze tak, že se zvýší celková cena." -#: pretix/presale/views/order.py:1630 +#: pretix/presale/views/order.py:1632 msgid "You may not change your order in a way that changes the total price." msgstr "Objednávku nemůžete změnit tak, aby se změnila celková cena." -#: pretix/presale/views/order.py:1632 +#: pretix/presale/views/order.py:1634 #, fuzzy msgid "You may not change your order in a way that would require a refund." msgstr "Objednávku nesmíte změnit tak, aby se snížila celková cena." -#: pretix/presale/views/order.py:1640 +#: pretix/presale/views/order.py:1642 msgid "" "You may not change your order in a way that increases the total price since " "payments are no longer being accepted for this event." @@ -33831,7 +33889,7 @@ msgstr "" "Vzhledem k tomu, že platby za tuto akci již nepřijímáme, nemůžete svou " "objednávku měnit tak, aby se zvýšila celková cena." -#: pretix/presale/views/order.py:1646 +#: pretix/presale/views/order.py:1648 #, fuzzy #| msgid "" #| "You may not change your order in a way that increases the total price " @@ -33844,7 +33902,7 @@ msgstr "" "Vzhledem k tomu, že platby za tuto akci již nepřijímáme, nemůžete svou " "objednávku měnit tak, aby se zvýšila celková cena." -#: pretix/presale/views/order.py:1662 pretix/presale/views/order.py:1693 +#: pretix/presale/views/order.py:1664 pretix/presale/views/order.py:1695 msgid "You cannot change this order." msgstr "Tuto objednávku nelze změnit." @@ -33924,15 +33982,15 @@ msgid "" msgstr "" "Děkujeme mnohokrát! Vaše místo na čekací listině přidělíme někomu jinému." -#: pretix/presale/views/widget.py:397 +#: pretix/presale/views/widget.py:390 msgid "This ticket shop is currently disabled." msgstr "Tento prodej vstupenek je v současné době vypnutý." -#: pretix/presale/views/widget.py:411 +#: pretix/presale/views/widget.py:404 msgid "The selected date does not exist in this event series." msgstr "Vybrané datum v této řadě akcí neexistuje." -#: pretix/presale/views/widget.py:474 +#: pretix/presale/views/widget.py:467 #, python-format msgid "from %(start_date)s" msgstr "od %(start_date)s" @@ -33953,6 +34011,21 @@ msgstr "Přístup k zápisu" msgid "Kosovo" msgstr "Kosovo" +#, fuzzy +#~| msgid "Please enter the correct result." +#~ msgid "Please enter the code of your gift card." +#~ msgstr "Zadejte prosím správný výsledek." + +#~ msgid "Percentage" +#~ msgstr "Procento" + +#, python-format +#~ msgid "Show %(count)s variants of %(item)s" +#~ msgstr "Zobrazit %(count)s varianty %(item)s" + +#~ msgid "Event overview" +#~ msgstr "Přehled akce" + #, fuzzy #~| msgid "Please select how you want to pay." #~ msgid "Please let us know you're still there." diff --git a/src/pretix/locale/cs/LC_MESSAGES/djangojs.po b/src/pretix/locale/cs/LC_MESSAGES/djangojs.po index c2ca2153f9..0822ccaaf9 100644 --- a/src/pretix/locale/cs/LC_MESSAGES/djangojs.po +++ b/src/pretix/locale/cs/LC_MESSAGES/djangojs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-30 10:36+0000\n" +"POT-Creation-Date: 2025-06-26 09:11+0000\n" "PO-Revision-Date: 2025-05-16 17:00+0000\n" "Last-Translator: David \n" "Language-Team: Czech \n" "Language-Team: Welsh