mirror of
https://github.com/pretix/pretix.git
synced 2025-12-13 12:42:26 +00:00
Compare commits
1 Commits
invoice-em
...
clean-docs
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b9c9f38bf0 |
@@ -1059,10 +1059,9 @@ Creating orders
|
|||||||
prices. Note that this will not include other fees and is calculated once during order generation and will not
|
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.)
|
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
|
* ``_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 *unless* the total amount of the positions is zero.
|
and the fee will be taxed like the products in the order. If the products have multiple tax rates, multiple fees
|
||||||
If the products have multiple tax rates, multiple fees will be generated with weights adjusted to the net price
|
will be generated with weights adjusted to the net price of the products. Note that this will be calculated once
|
||||||
of the products. Note that this will be calculated once during order generation and is not respected automatically
|
during order generation and is not respected automatically when the order changes later.)
|
||||||
when the order changes later.)
|
|
||||||
|
|
||||||
* ``force`` (optional). If set to ``true``, quotas will be ignored.
|
* ``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
|
* ``send_email`` (optional). If set to ``true``, the same emails will be sent as for a regular order, regardless of
|
||||||
|
|||||||
@@ -81,8 +81,7 @@ Endpoints
|
|||||||
:query string ordering: Manually set the ordering of results. Valid fields to be used are ``id`` and ``position``.
|
:query string ordering: Manually set the ordering of results. Valid fields to be used are ``id`` and ``position``.
|
||||||
Default: ``position``
|
Default: ``position``
|
||||||
:query integer subevent: Only return quotas of the sub-event with the given ID.
|
: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 of the given IDs (comma-separated).
|
:query integer subevent__in: Only return quotas of sub-events with one 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.
|
: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 organizer: The ``slug`` field of the organizer to fetch
|
||||||
:param event: The ``slug`` field of the event to fetch
|
:param event: The ``slug`` field of the event to fetch
|
||||||
|
|||||||
177
doc/license/faq.rst
Normal file
177
doc/license/faq.rst
Normal file
@@ -0,0 +1,177 @@
|
|||||||
|
.. spelling:word-list::
|
||||||
|
|
||||||
|
AGPL
|
||||||
|
AGPLv3
|
||||||
|
GPL
|
||||||
|
LGPL
|
||||||
|
Apache
|
||||||
|
BSD
|
||||||
|
MIT
|
||||||
|
CLA
|
||||||
|
django
|
||||||
|
i18nfields
|
||||||
|
hierarkey
|
||||||
|
rami.io
|
||||||
|
rami
|
||||||
|
io
|
||||||
|
GmbH
|
||||||
|
|
||||||
|
License FAQ
|
||||||
|
===========
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
|
||||||
|
This FAQ tries to explain in simpler terms what the license of the pretix open source project does and does not
|
||||||
|
allow. It is based on our interpretation of the license and is not legal advice. The contents of this page are not
|
||||||
|
legally binding, only the original text of the license in the `license file`_ is legally binding.
|
||||||
|
|
||||||
|
How is pretix licensed?
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
pretix follows the popular dual licensing model. It is available under the `GNU Affero General Public License 3`_ (AGPL)
|
||||||
|
plus some additional terms, as well as under a proprietary license ("pretix Enterprise license") on request.
|
||||||
|
|
||||||
|
How can it be AGPL if there are additional terms?
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
|
Even though it is fairly unknown, the AGPL's section 7 is titled "Additional Terms" and outlines specific conditions
|
||||||
|
under which additional terms can be imposed on an AGPL-licensed work. In our case, we add three additional terms.
|
||||||
|
|
||||||
|
The first additional term for pretix is an additional **permission**. It allows you to do something that the AGPL would
|
||||||
|
generally not allow. As it doesn't restrict your freedoms granted by AGPL, if you don't like it, you can ignore it, and
|
||||||
|
if you distribute pretix further, you can remove it.
|
||||||
|
|
||||||
|
The second and third additional term for pretix are additional terms that restrict or specify other provisions of the
|
||||||
|
license. AGPL specifically requires that these terms can only restrict or specify very specific things and we believe
|
||||||
|
our additional terms are in compliance with that and are thus valid and may not be removed.
|
||||||
|
|
||||||
|
Why did you choose this license model?
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
pretix was born in the open source community and we're deeply committed to building the best open source ticketing
|
||||||
|
solution in the world. It is important to us that pretix is available with a comprehensive feature set under term that
|
||||||
|
are compatible with the `Open Source Definition`_. This enables event organizers from all industries and regions
|
||||||
|
to have access to a self-hosted, privacy-friendly and secure option to host their events.
|
||||||
|
|
||||||
|
However, developing and maintaining pretix is a lot of work. Between 2014 and 2021, we've received external
|
||||||
|
contributions from more than 150 individuals. Not counting translations over 90 % of the development was
|
||||||
|
done by staff engineers of rami.io GmbH, the company that started pretix. While we're very happy to receive many more
|
||||||
|
contributions in the future, we also want to ensure that we continue to be able to pay people working on pretix
|
||||||
|
full-time.
|
||||||
|
|
||||||
|
We believe our model creates a good balance between ensuring pretix is available freely as well as protecting our
|
||||||
|
business interests. Unlike licenses chosen by other projects recently, such as the Server-Side Public License, our
|
||||||
|
choice does not restrict using pretix for any possible use case, it just sets a few rules that you have to play by
|
||||||
|
if you do.
|
||||||
|
|
||||||
|
What do I need to do if I use pretix unmodified?
|
||||||
|
------------------------------------------------
|
||||||
|
|
||||||
|
If you use pretix without any modifications or plugins, you can use it for whatever you want, as long as you keep
|
||||||
|
all copyright notices (including the link to pretix at the bottom of the site) intact.
|
||||||
|
|
||||||
|
You are also allowed to make copies of the unmodified source code and distribute them to others as long as you keep
|
||||||
|
all copyright and license information intact.
|
||||||
|
|
||||||
|
If you install **plugins**, you must follow the same terms as when using a **modified** version (see below).
|
||||||
|
|
||||||
|
What do I need to do if I modify pretix?
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
If you want to modify pretix, you have the right to do so. However, you need to follow the following rules:
|
||||||
|
|
||||||
|
* If you **run it for your own events** (events run by you or your company as well as companies from the same
|
||||||
|
corporate groups) our additional permission allows you to do so **without needing to share your source code
|
||||||
|
modifications** as long as you keep the link to pretix at the bottom of the site intact.
|
||||||
|
|
||||||
|
* If you **run it for others**, for example as part of a Software-as-a-Service offering or a managed hosting service
|
||||||
|
you **must** make the source code **including all your modifications and all installed plugins** available under the
|
||||||
|
same license as pretix to every visitor of your site. You need to do so in a prominent place such as a link at the bottom of the
|
||||||
|
site. You also **must** keep the existing link intact.
|
||||||
|
You **may not** add additional restrictions on the result as a whole. You **may** add additional permissions, but
|
||||||
|
only on the parts you added. You **must** make clear which changes you made and you must not give the impression that
|
||||||
|
your modified version is an official version of pretix.
|
||||||
|
|
||||||
|
* If you **distribute** the modified version, for example as a source code or software package, you **must** license it
|
||||||
|
under the AGPL license with the same additional terms. You **may not** add additional restrictions on the result as a
|
||||||
|
whole. You **may** add additional permissions, but only on the parts you added. You **must** make clear which changes
|
||||||
|
you made and you must not give the impression that your modified version is an official version of pretix.
|
||||||
|
|
||||||
|
Does the AGPL copyleft mechanism extend to plugins?
|
||||||
|
---------------------------------------------------
|
||||||
|
|
||||||
|
Yes. pretix plugins are tightly integrated with pretix, so when running pretix together with a plugin in the same
|
||||||
|
environment they form a `combined work`_ and the copyleft mechanism of AGPL applies.
|
||||||
|
|
||||||
|
Can I create proprietary or secret plugins?
|
||||||
|
-------------------------------------------
|
||||||
|
|
||||||
|
Yes, you can create a proprietary or secret plugin, but it may only ever be **used** in an environment that is covered
|
||||||
|
by the additional permission from our license. As soon as the plugin is installed in an installation that is not covered
|
||||||
|
by our additional permission (e.g. when it is used in a SaaS environment) or covered by an active pretix Enterprise
|
||||||
|
license it **must** be released to the visitors of the site under the same license as pretix (like a modified version
|
||||||
|
of pretix).
|
||||||
|
|
||||||
|
What licenses can plugins use?
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
Technically, you can distribute a plugin under any free or proprietary license as long as it is distributed separately.
|
||||||
|
However, once it is either **distributed together with pretix or used in an environment not covered by our
|
||||||
|
additional permission** or an active pretix Enterprise license, you **must** release it to all recipients of the
|
||||||
|
distribution or all visitors of your site under the same license as pretix (like a modified version of pretix).
|
||||||
|
|
||||||
|
If you release a plugin publicly, it is therefore most practical to use a license that is `compatible to AGPL`_.
|
||||||
|
This includes most open source licenses such as AGPL, GPL, Apache, 3-clause BSD or MIT.
|
||||||
|
|
||||||
|
Note however that when you license a plugin with pure AGPL, it will be incompatible with our additional permission.
|
||||||
|
Therefore, if you want to use an AGPL-licensed plugin, you'll need to publish the source code of **all** your plugins
|
||||||
|
under AGPL terms **even if you only use it for your own events**. A plugin would add its `own additional permission`_
|
||||||
|
to its license to allow combining it with pretix for this use case.
|
||||||
|
|
||||||
|
To make things less complicated, if you want to distribute a plugin freely, we therefore recommend distributing the
|
||||||
|
plugin under **Apache License 2.0**, like we do for most plugins we distribute as open source.
|
||||||
|
|
||||||
|
What do I need to do if I want to contribute my changes back?
|
||||||
|
-------------------------------------------------------------
|
||||||
|
|
||||||
|
In order to retain the possibility for us to offer pretix in a dual licensing model, we unfortunately need you to sign
|
||||||
|
a Contributor License Agreement (CLA) that gives us permission to use your contribution in all present and future
|
||||||
|
distributions of pretix. We know the bureaucracy sucks. Sorry.
|
||||||
|
|
||||||
|
What if I want to re-use a minor part of pretix in my project?
|
||||||
|
--------------------------------------------------------------
|
||||||
|
|
||||||
|
This is the main part we dislike about AGPL: If you see a specific thing in pretix that you'd like to use in another
|
||||||
|
project, you'll need to distribute your other project under AGPL terms as well which is often not practical.
|
||||||
|
|
||||||
|
In this case, feel free to get in touch with us! We're happy to grant you special permission or pull the component
|
||||||
|
out into a separately, permissively licensed repository. We already did that with `django-hierarkey`_ and
|
||||||
|
`django-i18nfield`_ which have previously been parts of pretix.
|
||||||
|
|
||||||
|
What can I use the name "pretix" for?
|
||||||
|
-------------------------------------
|
||||||
|
|
||||||
|
The name pretix is a registered trademark by rami.io GmbH.
|
||||||
|
|
||||||
|
* You **may** use it to **indicate copyright**, such as in the "powered by pretix" or "based on pretix" line, or when
|
||||||
|
indicating that a distribution is based on pretix.
|
||||||
|
|
||||||
|
* You **may** use it to **indicate compatibility**, for example you are allowed to name your plugin "<name> for pretix"
|
||||||
|
or you may state that an external service is compatible with pretix.
|
||||||
|
|
||||||
|
* You **may not** give the impression that your modified version, plugin or compatible service is official or authorized
|
||||||
|
by rami.io GmbH or pretix unless we specifically allowed you to do so.
|
||||||
|
|
||||||
|
* You **may not** use it to name your modified version of pretix. End-users must be able to easily identify whether
|
||||||
|
a version of pretix is distributed by us.
|
||||||
|
|
||||||
|
* You **may not** use any variations of the name, such as "MyPretix".
|
||||||
|
|
||||||
|
.. _license file: https://github.com/pretix/pretix/blob/master/LICENSE
|
||||||
|
.. _GNU Affero General Public License 3: https://www.gnu.org/licenses/agpl-3.0.en.html
|
||||||
|
.. _compatible to AGPL: https://www.gnu.org/licenses/license-list.en.html#GPLCompatibleLicenses
|
||||||
|
.. _Open Source Definition: https://opensource.org/osd
|
||||||
|
.. _combined work: https://www.gnu.org/licenses/gpl-faq.html#GPLPlugins
|
||||||
|
.. _own additional permission: https://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs
|
||||||
|
.. _django-hierarkey: https://github.com/raphaelm/django-hierarkey
|
||||||
|
.. _django-i18nfield: https://github.com/raphaelm/django-i18nfield
|
||||||
@@ -46,7 +46,7 @@ dependencies = [
|
|||||||
"django-hijack==3.7.*",
|
"django-hijack==3.7.*",
|
||||||
"django-i18nfield==1.10.*",
|
"django-i18nfield==1.10.*",
|
||||||
"django-libsass==0.9",
|
"django-libsass==0.9",
|
||||||
"django-localflavor==5.0",
|
"django-localflavor==4.0",
|
||||||
"django-markup",
|
"django-markup",
|
||||||
"django-oauth-toolkit==2.3.*",
|
"django-oauth-toolkit==2.3.*",
|
||||||
"django-otp==1.6.*",
|
"django-otp==1.6.*",
|
||||||
@@ -67,7 +67,7 @@ dependencies = [
|
|||||||
"markdown==3.8", # 3.3.5 requires importlib-metadata>=4.4, but django-bootstrap3 requires importlib-metadata<3.
|
"markdown==3.8", # 3.3.5 requires importlib-metadata>=4.4, but django-bootstrap3 requires importlib-metadata<3.
|
||||||
# We can upgrade markdown again once django-bootstrap3 upgrades or once we drop Python 3.6 and 3.7
|
# We can upgrade markdown again once django-bootstrap3 upgrades or once we drop Python 3.6 and 3.7
|
||||||
"mt-940==4.30.*",
|
"mt-940==4.30.*",
|
||||||
"oauthlib==3.3.*",
|
"oauthlib==3.2.*",
|
||||||
"openpyxl==3.1.*",
|
"openpyxl==3.1.*",
|
||||||
"packaging",
|
"packaging",
|
||||||
"paypalrestsdk==1.13.*",
|
"paypalrestsdk==1.13.*",
|
||||||
@@ -76,12 +76,12 @@ dependencies = [
|
|||||||
"phonenumberslite==9.0.*",
|
"phonenumberslite==9.0.*",
|
||||||
"Pillow==11.2.*",
|
"Pillow==11.2.*",
|
||||||
"pretix-plugin-build",
|
"pretix-plugin-build",
|
||||||
"protobuf==6.31.*",
|
"protobuf==6.30.*",
|
||||||
"psycopg2-binary",
|
"psycopg2-binary",
|
||||||
"pycountry",
|
"pycountry",
|
||||||
"pycparser==2.22",
|
"pycparser==2.22",
|
||||||
"pycryptodome==3.23.*",
|
"pycryptodome==3.23.*",
|
||||||
"pypdf==5.6.*",
|
"pypdf==5.4.*",
|
||||||
"python-bidi==0.6.*", # Support for Arabic in reportlab
|
"python-bidi==0.6.*", # Support for Arabic in reportlab
|
||||||
"python-dateutil==2.9.*",
|
"python-dateutil==2.9.*",
|
||||||
"pytz",
|
"pytz",
|
||||||
@@ -123,7 +123,7 @@ dev = [
|
|||||||
"pytest-mock==3.14.*",
|
"pytest-mock==3.14.*",
|
||||||
"pytest-sugar",
|
"pytest-sugar",
|
||||||
"pytest-xdist==3.7.*",
|
"pytest-xdist==3.7.*",
|
||||||
"pytest==8.4.*",
|
"pytest==8.3.*",
|
||||||
"responses",
|
"responses",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -1600,7 +1600,7 @@ class OrderCreateSerializer(I18nAwareModelSerializer):
|
|||||||
self.context['event'].currency)
|
self.context['event'].currency)
|
||||||
is_split_taxes = fee_data.pop('_split_taxes_like_products', False)
|
is_split_taxes = fee_data.pop('_split_taxes_like_products', False)
|
||||||
|
|
||||||
if is_split_taxes and order.total:
|
if is_split_taxes:
|
||||||
d = defaultdict(lambda: Decimal('0.00'))
|
d = defaultdict(lambda: Decimal('0.00'))
|
||||||
trz = TaxRule.zero()
|
trz = TaxRule.zero()
|
||||||
for p in pos_map.values():
|
for p in pos_map.values():
|
||||||
|
|||||||
@@ -485,17 +485,8 @@ class QuestionOptionViewSet(viewsets.ModelViewSet):
|
|||||||
super().perform_destroy(instance)
|
super().perform_destroy(instance)
|
||||||
|
|
||||||
|
|
||||||
class NumberInFilter(django_filters.BaseInFilter, django_filters.NumberFilter):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
with scopes_disabled():
|
with scopes_disabled():
|
||||||
class QuotaFilter(FilterSet):
|
class QuotaFilter(FilterSet):
|
||||||
items__in = NumberInFilter(
|
|
||||||
field_name='items__id',
|
|
||||||
lookup_expr='in',
|
|
||||||
)
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Quota
|
model = Quota
|
||||||
fields = {
|
fields = {
|
||||||
@@ -517,7 +508,7 @@ class QuotaViewSet(ConditionalListView, viewsets.ModelViewSet):
|
|||||||
return self.request.event.quotas.all()
|
return self.request.event.quotas.all()
|
||||||
|
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
queryset = self.filter_queryset(self.get_queryset()).distinct()
|
queryset = self.filter_queryset(self.get_queryset())
|
||||||
|
|
||||||
page = self.paginate_queryset(queryset)
|
page = self.paginate_queryset(queryset)
|
||||||
|
|
||||||
|
|||||||
@@ -182,13 +182,7 @@ class NamePartsWidget(forms.MultiWidget):
|
|||||||
if self.field.required:
|
if self.field.required:
|
||||||
these_attrs['required'] = 'required'
|
these_attrs['required'] = 'required'
|
||||||
these_attrs.pop('data-no-required-attr', None)
|
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['data-size'] = self.scheme['fields'][i][2]
|
||||||
these_attrs['aria-label'] = self.scheme['fields'][i][1]
|
these_attrs['aria-label'] = self.scheme['fields'][i][1]
|
||||||
else:
|
else:
|
||||||
@@ -308,10 +302,7 @@ class WrappedPhonePrefixSelect(Select):
|
|||||||
self.initial = "+%d" % prefix
|
self.initial = "+%d" % prefix
|
||||||
break
|
break
|
||||||
choices += get_phone_prefixes_sorted_and_localized()
|
choices += get_phone_prefixes_sorted_and_localized()
|
||||||
super().__init__(choices=choices, attrs={
|
super().__init__(choices=choices, attrs={'aria-label': pgettext_lazy('phonenumber', 'International area code')})
|
||||||
'aria-label': pgettext_lazy('phonenumber', 'International area code'),
|
|
||||||
'autocomplete': 'tel-country-code',
|
|
||||||
})
|
|
||||||
|
|
||||||
def render(self, name, value, *args, **kwargs):
|
def render(self, name, value, *args, **kwargs):
|
||||||
return super().render(name, value or self.initial, *args, **kwargs)
|
return super().render(name, value or self.initial, *args, **kwargs)
|
||||||
@@ -334,11 +325,11 @@ class WrappedPhonePrefixSelect(Select):
|
|||||||
class WrappedPhoneNumberPrefixWidget(PhoneNumberPrefixWidget):
|
class WrappedPhoneNumberPrefixWidget(PhoneNumberPrefixWidget):
|
||||||
|
|
||||||
def __init__(self, attrs=None, initial=None):
|
def __init__(self, attrs=None, initial=None):
|
||||||
widgets = (WrappedPhonePrefixSelect(initial), forms.TextInput(attrs={
|
attrs = {
|
||||||
'aria-label': pgettext_lazy('phonenumber', 'Phone number (without international area code)'),
|
'aria-label': pgettext_lazy('phonenumber', 'Phone number (without international area code)')
|
||||||
'autocomplete': 'tel-national',
|
}
|
||||||
}))
|
widgets = (WrappedPhonePrefixSelect(initial), forms.TextInput(attrs=attrs))
|
||||||
super(PhoneNumberPrefixWidget, self).__init__(widgets)
|
super(PhoneNumberPrefixWidget, self).__init__(widgets, attrs)
|
||||||
|
|
||||||
def render(self, name, value, attrs=None, renderer=None):
|
def render(self, name, value, attrs=None, renderer=None):
|
||||||
output = super().render(name, value, attrs, renderer)
|
output = super().render(name, value, attrs, renderer)
|
||||||
@@ -995,19 +986,8 @@ class BaseQuestionsForm(forms.Form):
|
|||||||
value.initial = data.get('question_form_data', {}).get(key)
|
value.initial = data.get('question_form_data', {}).get(key)
|
||||||
|
|
||||||
for k, v in self.fields.items():
|
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':
|
if v.widget.attrs.get('autocomplete') or k == 'attendee_name_parts':
|
||||||
autocomplete = v.widget.attrs.get('autocomplete', '')
|
v.widget.attrs['autocomplete'] = 'section-{} '.format(self.prefix) + 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):
|
def clean(self):
|
||||||
from pretix.base.addressvalidation import \
|
from pretix.base.addressvalidation import \
|
||||||
@@ -1221,11 +1201,7 @@ class BaseInvoiceAddressForm(forms.ModelForm):
|
|||||||
|
|
||||||
for k, v in self.fields.items():
|
for k, v in self.fields.items():
|
||||||
if v.widget.attrs.get('autocomplete') or k == 'name_parts':
|
if v.widget.attrs.get('autocomplete') or k == 'name_parts':
|
||||||
autocomplete = v.widget.attrs.get('autocomplete', '')
|
v.widget.attrs['autocomplete'] = 'section-invoice billing ' + 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):
|
def clean(self):
|
||||||
from pretix.base.addressvalidation import \
|
from pretix.base.addressvalidation import \
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ from django.utils.translation import gettext_lazy as _, pgettext_lazy
|
|||||||
|
|
||||||
from pretix.base.models import (
|
from pretix.base.models import (
|
||||||
Discount, Item, ItemCategory, Order, Question, Quota, SubEvent, TaxRule,
|
Discount, Item, ItemCategory, Order, Question, Quota, SubEvent, TaxRule,
|
||||||
Voucher, WaitingListEntry,
|
Voucher,
|
||||||
)
|
)
|
||||||
|
|
||||||
from .logentrytype_registry import ( # noqa
|
from .logentrytype_registry import ( # noqa
|
||||||
@@ -145,15 +145,3 @@ class TaxRuleLogEntryType(EventLogEntryType):
|
|||||||
object_link_viewname = 'control:event.settings.tax.edit'
|
object_link_viewname = 'control:event.settings.tax.edit'
|
||||||
object_link_argname = 'rule'
|
object_link_argname = 'rule'
|
||||||
content_type = TaxRule
|
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
|
|
||||||
|
|||||||
@@ -1084,7 +1084,6 @@ class Event(EventMixin, LoggedModel):
|
|||||||
s.product = item_map[s.product_id]
|
s.product = item_map[s.product_id]
|
||||||
s.save(force_insert=True)
|
s.save(force_insert=True)
|
||||||
|
|
||||||
valid_sales_channel_identifers = set(self.organizer.sales_channels.values_list("identifier", flat=True))
|
|
||||||
skip_settings = (
|
skip_settings = (
|
||||||
'ticket_secrets_pretix_sig1_pubkey',
|
'ticket_secrets_pretix_sig1_pubkey',
|
||||||
'ticket_secrets_pretix_sig1_privkey',
|
'ticket_secrets_pretix_sig1_privkey',
|
||||||
@@ -1120,11 +1119,6 @@ class Event(EventMixin, LoggedModel):
|
|||||||
settings_to_save.append(s)
|
settings_to_save.append(s)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
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:
|
else:
|
||||||
settings_to_save.append(s)
|
settings_to_save.append(s)
|
||||||
other.settings._objects.bulk_create(settings_to_save)
|
other.settings._objects.bulk_create(settings_to_save)
|
||||||
|
|||||||
@@ -793,7 +793,7 @@ class Item(LoggedModel):
|
|||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _("Product")
|
verbose_name = _("Product")
|
||||||
verbose_name_plural = _("Products")
|
verbose_name_plural = _("Products")
|
||||||
ordering = ("category__position", "category", "position", "pk")
|
ordering = ("category__position", "category", "position")
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return str(self.internal_name or self.name)
|
return str(self.internal_name or self.name)
|
||||||
|
|||||||
@@ -218,6 +218,7 @@ class WaitingListEntry(LoggedModel):
|
|||||||
'waitinglistentry': self.pk,
|
'waitinglistentry': self.pk,
|
||||||
'subevent': self.subevent.pk if self.subevent else None,
|
'subevent': self.subevent.pk if self.subevent else None,
|
||||||
}, user=user, auth=auth)
|
}, user=user, auth=auth)
|
||||||
|
self.log_action('pretix.event.orders.waitinglist.voucher_assigned', user=user, auth=auth)
|
||||||
self.voucher = v
|
self.voucher = v
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
@@ -233,7 +234,6 @@ class WaitingListEntry(LoggedModel):
|
|||||||
),
|
),
|
||||||
user=user,
|
user=user,
|
||||||
auth=auth,
|
auth=auth,
|
||||||
log_entry_type='pretix.event.orders.waitinglist.voucher_assigned',
|
|
||||||
)
|
)
|
||||||
|
|
||||||
def send_mail(self, subject: Union[str, LazyI18nString], template: Union[str, LazyI18nString],
|
def send_mail(self, subject: Union[str, LazyI18nString], template: Union[str, LazyI18nString],
|
||||||
|
|||||||
@@ -96,19 +96,12 @@ class SendMailException(Exception):
|
|||||||
|
|
||||||
|
|
||||||
def clean_sender_name(sender_name: str) -> str:
|
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
|
# Emails with @ in their sender name are rejected by some mailservers (e.g. Microsoft) because it looks like
|
||||||
# a phishing attempt.
|
# a phishing attempt.
|
||||||
sender_name = sender_name.replace("@", " ")
|
sender_name = sender_name.replace("@", " ")
|
||||||
# Emails with : in their sender name are treated by Microsoft like emails with no From header at all, leading
|
# Emails with : in their sender name are treated by Microsoft like emails with no From header at all, leading
|
||||||
# to a higher spam likelihood.
|
# to a higher spam likelihood.
|
||||||
sender_name = sender_name.replace(":", " ")
|
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
|
# Emails with excessively long sender names are rejected by some mailservers
|
||||||
if len(sender_name) > 75:
|
if len(sender_name) > 75:
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ def timeline_for_event(event, subevent=None):
|
|||||||
event=event, subevent=subevent,
|
event=event, subevent=subevent,
|
||||||
datetime=ev.date_from,
|
datetime=ev.date_from,
|
||||||
description=pgettext_lazy('timeline', 'Your event starts'),
|
description=pgettext_lazy('timeline', 'Your event starts'),
|
||||||
edit_url=ev_edit_url + '#id_date_from_0'
|
edit_url=ev_edit_url
|
||||||
))
|
))
|
||||||
|
|
||||||
if ev.date_to:
|
if ev.date_to:
|
||||||
@@ -66,7 +66,7 @@ def timeline_for_event(event, subevent=None):
|
|||||||
event=event, subevent=subevent,
|
event=event, subevent=subevent,
|
||||||
datetime=ev.date_to,
|
datetime=ev.date_to,
|
||||||
description=pgettext_lazy('timeline', 'Your event ends'),
|
description=pgettext_lazy('timeline', 'Your event ends'),
|
||||||
edit_url=ev_edit_url + '#id_date_to_0'
|
edit_url=ev_edit_url
|
||||||
))
|
))
|
||||||
|
|
||||||
if ev.date_admission:
|
if ev.date_admission:
|
||||||
@@ -74,7 +74,7 @@ def timeline_for_event(event, subevent=None):
|
|||||||
event=event, subevent=subevent,
|
event=event, subevent=subevent,
|
||||||
datetime=ev.date_admission,
|
datetime=ev.date_admission,
|
||||||
description=pgettext_lazy('timeline', 'Admissions for your event start'),
|
description=pgettext_lazy('timeline', 'Admissions for your event start'),
|
||||||
edit_url=ev_edit_url + '#id_date_admission_0'
|
edit_url=ev_edit_url
|
||||||
))
|
))
|
||||||
|
|
||||||
if ev.presale_start:
|
if ev.presale_start:
|
||||||
@@ -82,7 +82,7 @@ def timeline_for_event(event, subevent=None):
|
|||||||
event=event, subevent=subevent,
|
event=event, subevent=subevent,
|
||||||
datetime=ev.presale_start,
|
datetime=ev.presale_start,
|
||||||
description=pgettext_lazy('timeline', 'Start of ticket sales'),
|
description=pgettext_lazy('timeline', 'Start of ticket sales'),
|
||||||
edit_url=ev_edit_url + '#id_presale_start_0'
|
edit_url=ev_edit_url
|
||||||
))
|
))
|
||||||
|
|
||||||
tl.append(TimelineEvent(
|
tl.append(TimelineEvent(
|
||||||
@@ -95,7 +95,7 @@ def timeline_for_event(event, subevent=None):
|
|||||||
pgettext_lazy('timeline', 'End of ticket sales'),
|
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 ""
|
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 + '#id_presale_end_0'
|
edit_url=ev_edit_url
|
||||||
))
|
))
|
||||||
|
|
||||||
rd = event.settings.get('last_order_modification_date', as_type=RelativeDateWrapper)
|
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,
|
event=event, subevent=subevent,
|
||||||
datetime=rd.datetime(ev),
|
datetime=rd.datetime(ev),
|
||||||
description=pgettext_lazy('timeline', 'Customers can no longer modify their order information'),
|
description=pgettext_lazy('timeline', 'Customers can no longer modify their order information'),
|
||||||
edit_url=ev_edit_url + '#id_settings-last_order_modification_date_0_0'
|
edit_url=ev_edit_url
|
||||||
))
|
))
|
||||||
|
|
||||||
rd = event.settings.get('payment_term_last', as_type=RelativeDateWrapper)
|
rd = event.settings.get('payment_term_last', as_type=RelativeDateWrapper)
|
||||||
@@ -281,7 +281,7 @@ def timeline_for_event(event, subevent=None):
|
|||||||
'event': event.slug,
|
'event': event.slug,
|
||||||
'organizer': event.organizer.slug,
|
'organizer': event.organizer.slug,
|
||||||
'item': p.pk,
|
'item': p.pk,
|
||||||
}) + '#id_available_from_0'
|
})
|
||||||
))
|
))
|
||||||
if p.available_until:
|
if p.available_until:
|
||||||
tl.append(TimelineEvent(
|
tl.append(TimelineEvent(
|
||||||
@@ -292,7 +292,7 @@ def timeline_for_event(event, subevent=None):
|
|||||||
'event': event.slug,
|
'event': event.slug,
|
||||||
'organizer': event.organizer.slug,
|
'organizer': event.organizer.slug,
|
||||||
'item': p.pk,
|
'item': p.pk,
|
||||||
}) + '#id_available_until_0'
|
})
|
||||||
))
|
))
|
||||||
|
|
||||||
for v in ItemVariation.objects.filter(
|
for v in ItemVariation.objects.filter(
|
||||||
@@ -311,7 +311,7 @@ def timeline_for_event(event, subevent=None):
|
|||||||
'event': event.slug,
|
'event': event.slug,
|
||||||
'organizer': event.organizer.slug,
|
'organizer': event.organizer.slug,
|
||||||
'item': v.item.pk,
|
'item': v.item.pk,
|
||||||
}) + '#tab-0-3-open'
|
})
|
||||||
))
|
))
|
||||||
if v.available_until:
|
if v.available_until:
|
||||||
tl.append(TimelineEvent(
|
tl.append(TimelineEvent(
|
||||||
@@ -325,7 +325,7 @@ def timeline_for_event(event, subevent=None):
|
|||||||
'event': event.slug,
|
'event': event.slug,
|
||||||
'organizer': event.organizer.slug,
|
'organizer': event.organizer.slug,
|
||||||
'item': v.item.pk,
|
'item': v.item.pk,
|
||||||
}) + '#tab-0-3-open'
|
})
|
||||||
))
|
))
|
||||||
|
|
||||||
pprovs = event.get_payment_providers()
|
pprovs = event.get_payment_providers()
|
||||||
@@ -339,24 +339,6 @@ def timeline_for_event(event, subevent=None):
|
|||||||
continue
|
continue
|
||||||
except:
|
except:
|
||||||
pass
|
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)
|
availability_date = pprov.settings.get('_availability_date', as_type=RelativeDateWrapper)
|
||||||
if availability_date:
|
if availability_date:
|
||||||
d = make_aware(datetime.combine(
|
d = make_aware(datetime.combine(
|
||||||
|
|||||||
@@ -665,9 +665,9 @@ class EventSettingsForm(EventSettingsValidationMixin, FormPlaceholderMixin, Sett
|
|||||||
del self.fields['event_list_available_only']
|
del self.fields['event_list_available_only']
|
||||||
del self.fields['event_list_filters']
|
del self.fields['event_list_filters']
|
||||||
del self.fields['event_calendar_future_only']
|
del self.fields['event_calendar_future_only']
|
||||||
self.fields['primary_font'].choices = [('Open Sans', 'Open Sans')] + sorted([
|
self.fields['primary_font'].choices += [
|
||||||
(a, {"title": a, "data": v}) for a, v in get_fonts(self.event, pdf_support_required=False).items()
|
(a, {"title": a, "data": v}) for a, v in get_fonts(self.event, pdf_support_required=False).items()
|
||||||
], key=lambda a: a[0])
|
]
|
||||||
|
|
||||||
# create "virtual" fields for better UX when editing <name>_asked and <name>_required fields
|
# create "virtual" fields for better UX when editing <name>_asked and <name>_required fields
|
||||||
self.virtual_keys = []
|
self.virtual_keys = []
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ from pretix.base.logentrytypes import (
|
|||||||
DiscountLogEntryType, EventLogEntryType, ItemCategoryLogEntryType,
|
DiscountLogEntryType, EventLogEntryType, ItemCategoryLogEntryType,
|
||||||
ItemLogEntryType, LogEntryType, OrderLogEntryType, QuestionLogEntryType,
|
ItemLogEntryType, LogEntryType, OrderLogEntryType, QuestionLogEntryType,
|
||||||
QuotaLogEntryType, TaxRuleLogEntryType, VoucherLogEntryType,
|
QuotaLogEntryType, TaxRuleLogEntryType, VoucherLogEntryType,
|
||||||
WaitingListEntryLogEntryType, log_entry_types,
|
log_entry_types,
|
||||||
)
|
)
|
||||||
from pretix.base.models import (
|
from pretix.base.models import (
|
||||||
Checkin, CheckinList, Event, ItemVariation, LogEntry, OrderPosition,
|
Checkin, CheckinList, Event, ItemVariation, LogEntry, OrderPosition,
|
||||||
@@ -697,7 +697,11 @@ class CoreUserImpersonatedLogEntryType(UserImpersonatedLogEntryType):
|
|||||||
'the last request was less than 24 hours ago.'),
|
'the last request was less than 24 hours ago.'),
|
||||||
'pretix.organizer.deleted': _('The organizer "{name}" has been deleted.'),
|
'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.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.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.created': _('The team has been created.'),
|
||||||
'pretix.team.changed': _('The team settings have been changed.'),
|
'pretix.team.changed': _('The team settings have been changed.'),
|
||||||
'pretix.team.deleted': _('The team has been deleted.'),
|
'pretix.team.deleted': _('The team has been deleted.'),
|
||||||
@@ -899,13 +903,3 @@ class LegacyCheckinLogEntryType(OrderLogEntryType):
|
|||||||
datetime=dt_formatted,
|
datetime=dt_formatted,
|
||||||
list=checkin_list
|
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
|
|
||||||
|
|||||||
@@ -247,17 +247,6 @@
|
|||||||
{% bootstrap_field sform.show_variations_expanded layout="control" %}
|
{% bootstrap_field sform.show_variations_expanded layout="control" %}
|
||||||
{% bootstrap_field sform.hide_sold_out layout="control" %}
|
{% bootstrap_field sform.hide_sold_out layout="control" %}
|
||||||
|
|
||||||
<div data-display-dependency="#id_settings-waiting_list_enabled">
|
|
||||||
<div data-display-dependency="#id_settings-hide_sold_out">
|
|
||||||
<div class="alert alert-danger dynamic">
|
|
||||||
<h4>{% trans "Incompatible settings" %}</h4>
|
|
||||||
{% blocktrans trimmed %}
|
|
||||||
Customers won't be able to add themselves to the waiting list, because "Hide all products that are sold out" is enabled.
|
|
||||||
{% endblocktrans %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h4>{% trans "Calendar and list views" context "subevents" %}</h4>
|
<h4>{% trans "Calendar and list views" context "subevents" %}</h4>
|
||||||
{% if sform.frontpage_subevent_ordering %}
|
{% if sform.frontpage_subevent_ordering %}
|
||||||
{% bootstrap_field sform.frontpage_subevent_ordering layout="control" %}
|
{% bootstrap_field sform.frontpage_subevent_ordering layout="control" %}
|
||||||
@@ -383,16 +372,6 @@
|
|||||||
</strong>
|
</strong>
|
||||||
</div>
|
</div>
|
||||||
{% bootstrap_field sform.waiting_list_enabled layout="control" %}
|
{% bootstrap_field sform.waiting_list_enabled layout="control" %}
|
||||||
<div data-display-dependency="#id_settings-hide_sold_out">
|
|
||||||
<div data-display-dependency="#id_settings-waiting_list_enabled">
|
|
||||||
<div class="alert alert-danger dynamic">
|
|
||||||
<h4>{% trans "Incompatible settings" %}</h4>
|
|
||||||
{% blocktrans trimmed %}
|
|
||||||
Customers won't be able to add themselves to the waiting list, because "Hide all products that are sold out" is enabled.
|
|
||||||
{% endblocktrans %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% bootstrap_field sform.waiting_list_auto layout="control" %}
|
{% bootstrap_field sform.waiting_list_auto layout="control" %}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="control-label col-md-3">
|
<label class="control-label col-md-3">
|
||||||
|
|||||||
@@ -59,7 +59,7 @@
|
|||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row" id="question-stats">
|
||||||
{% if not stats %}
|
{% if not stats %}
|
||||||
<div class="empty-collection col-md-10 col-xs-12">
|
<div class="empty-collection col-md-10 col-xs-12">
|
||||||
<p>
|
<p>
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
<div class="chart" id="question_chart" data-type="{{ question.type }}">
|
<div class="chart" id="question_chart" data-type="{{ question.type }}">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
{{ stats|json_script:"question-chart-data" }}
|
<script type="application/json" id="question-chart-data">{{ stats_json|escapejson }}</script>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-5 col-xs-12">
|
<div class="col-md-5 col-xs-12">
|
||||||
<table class="table table-bordered table-hover">
|
<table class="table table-bordered table-hover">
|
||||||
@@ -89,8 +89,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<th>{% trans "Answer" %}</th>
|
<th>{% trans "Answer" %}</th>
|
||||||
<th class="text-right">{% trans "Count" %}</th>
|
<th class="text-right">{% trans "Count" %}</th>
|
||||||
<th class="text-right">{% trans "% of answers" %}</th>
|
<th class="text-right">{% trans "Percentage" %}</th>
|
||||||
<th class="text-right">{% trans "% of tickets" %}</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@@ -103,7 +102,6 @@
|
|||||||
</td>
|
</td>
|
||||||
<td class="text-right">{{ stat.count }}</td>
|
<td class="text-right">{{ stat.count }}</td>
|
||||||
<td class="text-right">{{ stat.percentage|floatformat:1 }} %</td>
|
<td class="text-right">{{ stat.percentage|floatformat:1 }} %</td>
|
||||||
<td class="text-right">{{ stat.percentage_attendees|floatformat:1 }} %</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
@@ -112,7 +110,6 @@
|
|||||||
<td><strong>{% trans "Sum" %}</strong></td>
|
<td><strong>{% trans "Sum" %}</strong></td>
|
||||||
<td class="text-right"><strong>{{ total }}</strong></td>
|
<td class="text-right"><strong>{{ total }}</strong></td>
|
||||||
<td></td>
|
<td></td>
|
||||||
<td></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
</tfoot>
|
</tfoot>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
{% load captureas %}
|
{% load captureas %}
|
||||||
{% load static %}
|
{% load static %}
|
||||||
{% load eventsignal %}
|
{% load eventsignal %}
|
||||||
{% load dialog %}
|
|
||||||
{% block title %}{% trans "Change multiple dates" context "subevent" %}{% endblock %}
|
{% block title %}{% trans "Change multiple dates" context "subevent" %}{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h1>
|
<h1>
|
||||||
@@ -183,22 +182,21 @@
|
|||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{% trans "Quotas" %}</legend>
|
<legend>{% trans "Quotas" %}</legend>
|
||||||
<div class="bulk-edit-field-group"
|
{% if sampled_quotas|default_if_none:"NONE" == "NONE" %}
|
||||||
{% if sampled_quotas|default_if_none:"NONE" == "NONE" %}
|
<div class="alert alert-warning">
|
||||||
data-confirm-dialog="#confirm-override-quotas"
|
{% blocktrans trimmed %}
|
||||||
{% endif %}>
|
You selected a set of dates that currently have different quota setups. You can therefore
|
||||||
|
not change their quotas in bulk. If you want, you can set up a new set of quotas to
|
||||||
|
<strong>replace</strong> the quota setup of all selected dates.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
<div class="bulk-edit-field-group">
|
||||||
<label class="field-toggle">
|
<label class="field-toggle">
|
||||||
<input type="checkbox" name="_bulk" value="__quotas" {% if "__quotas" in bulk_selected %}checked{% endif %}>
|
<input type="checkbox" name="_bulk" value="__quotas" {% if "__quotas" in bulk_selected %}checked{% endif %}>
|
||||||
{% trans "change" context "form_bulk" %}
|
{% trans "change" context "form_bulk" %}
|
||||||
</label>
|
</label>
|
||||||
<div class="field-content">
|
<div class="field-content">
|
||||||
{% if sampled_quotas|default_if_none:"NONE" == "NONE" %}
|
|
||||||
<div class="alert alert-warning">
|
|
||||||
{% trans "You selected a set of dates that currently have different quota setups." %}
|
|
||||||
{% trans "Using this option will <strong>delete all current quotas</strong> from <strong>all selected dates</strong>." %}
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<div class="formset" data-formset data-formset-prefix="{{ formset.prefix }}">
|
<div class="formset" data-formset data-formset-prefix="{{ formset.prefix }}">
|
||||||
{{ formset.management_form }}
|
{{ formset.management_form }}
|
||||||
{% bootstrap_formset_errors formset %}
|
{% bootstrap_formset_errors formset %}
|
||||||
@@ -273,7 +271,7 @@
|
|||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{% trans "Check-in lists" %}</legend>
|
<legend>{% trans "Check-in lists" %}</legend>
|
||||||
{% if sampled_lists|default_if_none:"NONE" == "NONE" %}
|
{% if sampled_lists|default_if_none:"NONE" == "NONE" %}
|
||||||
<div class="alert alert-info">
|
<div class="alert alert-warning">
|
||||||
{% blocktrans trimmed %}
|
{% blocktrans trimmed %}
|
||||||
You selected a set of dates that currently have different check-in list setups. You can
|
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.
|
therefore not change their check-in lists in bulk.
|
||||||
@@ -369,17 +367,4 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
{% trans "Delete existing quotas" as dialog_title %}
|
|
||||||
{% trans "Using this option will <strong>delete all current quotas</strong> from <strong>all selected dates</strong>." as dialog_text %}
|
|
||||||
{% trans "This cannot be reverted. Are you sure to proceed?" as dialog_text2 %}
|
|
||||||
{% dialog "confirm-override-quotas" dialog_title dialog_text|add:" "|add:dialog_text2 icon="trash" %}
|
|
||||||
<p class="modal-card-confirm modal-card-confirm-spread">
|
|
||||||
<button class="btn btn-lg btn-default" value="no">
|
|
||||||
{% trans "Cancel" %}
|
|
||||||
</button>
|
|
||||||
<button class="btn btn-lg btn-danger" value="yes">
|
|
||||||
{% trans "Proceed" %}
|
|
||||||
</button>
|
|
||||||
</p>
|
|
||||||
{% enddialog %}
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -64,9 +64,8 @@ from pretix.api.serializers.item import (
|
|||||||
)
|
)
|
||||||
from pretix.base.forms import I18nFormSet
|
from pretix.base.forms import I18nFormSet
|
||||||
from pretix.base.models import (
|
from pretix.base.models import (
|
||||||
CartPosition, Item, ItemCategory, ItemVariation, Order, OrderPosition,
|
CartPosition, Item, ItemCategory, ItemVariation, Order, Question,
|
||||||
Question, QuestionAnswer, QuestionOption, Quota, SeatCategoryMapping,
|
QuestionAnswer, QuestionOption, Quota, SeatCategoryMapping, Voucher,
|
||||||
Voucher,
|
|
||||||
)
|
)
|
||||||
from pretix.base.models.event import SubEvent
|
from pretix.base.models.event import SubEvent
|
||||||
from pretix.base.models.items import ItemAddOn, ItemBundle, ItemMetaValue
|
from pretix.base.models.items import ItemAddOn, ItemBundle, ItemMetaValue
|
||||||
@@ -666,41 +665,36 @@ class QuestionView(EventPermissionRequiredMixin, QuestionMixin, ChartContainingV
|
|||||||
template_name_field = 'question'
|
template_name_field = 'question'
|
||||||
|
|
||||||
def get_answer_statistics(self):
|
def get_answer_statistics(self):
|
||||||
opqs = OrderPosition.objects.filter(
|
|
||||||
order__event=self.request.event,
|
|
||||||
)
|
|
||||||
qs = QuestionAnswer.objects.filter(
|
qs = QuestionAnswer.objects.filter(
|
||||||
question=self.object, orderposition__isnull=False,
|
question=self.object, orderposition__isnull=False,
|
||||||
|
orderposition__order__event=self.request.event
|
||||||
)
|
)
|
||||||
|
|
||||||
if self.request.GET.get("subevent", "") != "":
|
if self.request.GET.get("subevent", "") != "":
|
||||||
opqs = opqs.filter(subevent=self.request.GET["subevent"])
|
qs = qs.filter(orderposition__subevent=self.request.GET["subevent"])
|
||||||
|
|
||||||
s = self.request.GET.get("status", "np")
|
s = self.request.GET.get("status", "np")
|
||||||
if s != "":
|
if s != "":
|
||||||
if s == 'o':
|
if s == 'o':
|
||||||
opqs = opqs.filter(order__status=Order.STATUS_PENDING,
|
qs = qs.filter(orderposition__order__status=Order.STATUS_PENDING,
|
||||||
order__expires__lt=now().replace(hour=0, minute=0, second=0))
|
orderposition__order__expires__lt=now().replace(hour=0, minute=0, second=0))
|
||||||
elif s == 'np':
|
elif s == 'np':
|
||||||
opqs = opqs.filter(order__status__in=[Order.STATUS_PENDING, Order.STATUS_PAID])
|
qs = qs.filter(orderposition__order__status__in=[Order.STATUS_PENDING, Order.STATUS_PAID])
|
||||||
elif s == 'pv':
|
elif s == 'pv':
|
||||||
opqs = opqs.filter(
|
qs = qs.filter(
|
||||||
Q(order__status=Order.STATUS_PAID) |
|
Q(orderposition__order__status=Order.STATUS_PAID) |
|
||||||
Q(order__status=Order.STATUS_PENDING, order__valid_if_pending=True)
|
Q(orderposition__order__status=Order.STATUS_PENDING, orderposition__order__valid_if_pending=True)
|
||||||
)
|
)
|
||||||
elif s == 'ne':
|
elif s == 'ne':
|
||||||
opqs = opqs.filter(order__status__in=[Order.STATUS_PENDING, Order.STATUS_EXPIRED])
|
qs = qs.filter(orderposition__order__status__in=[Order.STATUS_PENDING, Order.STATUS_EXPIRED])
|
||||||
else:
|
else:
|
||||||
opqs = opqs.filter(order__status=s)
|
qs = qs.filter(orderposition__order__status=s)
|
||||||
|
|
||||||
if s not in (Order.STATUS_CANCELED, ""):
|
if s not in (Order.STATUS_CANCELED, ""):
|
||||||
opqs = opqs.filter(canceled=False)
|
qs = qs.filter(orderposition__canceled=False)
|
||||||
if self.request.GET.get("item", "") != "":
|
if self.request.GET.get("item", "") != "":
|
||||||
i = self.request.GET.get("item", "")
|
i = self.request.GET.get("item", "")
|
||||||
opqs = opqs.filter(item_id__in=(i,))
|
qs = qs.filter(orderposition__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:
|
if self.object.type == Question.TYPE_FILE:
|
||||||
qs = [
|
qs = [
|
||||||
@@ -740,7 +734,6 @@ class QuestionView(EventPermissionRequiredMixin, QuestionMixin, ChartContainingV
|
|||||||
total = sum(a['count'] for a in r)
|
total = sum(a['count'] for a in r)
|
||||||
for a in r:
|
for a in r:
|
||||||
a['percentage'] = (a['count'] / total * 100.) if total else 0
|
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
|
return r, total
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
@@ -748,6 +741,7 @@ class QuestionView(EventPermissionRequiredMixin, QuestionMixin, ChartContainingV
|
|||||||
ctx['items'] = self.object.items.all()
|
ctx['items'] = self.object.items.all()
|
||||||
stats = self.get_answer_statistics()
|
stats = self.get_answer_statistics()
|
||||||
ctx['stats'], ctx['total'] = stats
|
ctx['stats'], ctx['total'] = stats
|
||||||
|
ctx['stats_json'] = json.dumps(stats)
|
||||||
return ctx
|
return ctx
|
||||||
|
|
||||||
def get_object(self, queryset=None) -> Question:
|
def get_object(self, queryset=None) -> Question:
|
||||||
|
|||||||
@@ -548,24 +548,23 @@ class OrderDetail(OrderView):
|
|||||||
|
|
||||||
unsent_invoices = [ii.pk for ii in ctx['invoices'] if not ii.sent_to_customer]
|
unsent_invoices = [ii.pk for ii in ctx['invoices'] if not ii.sent_to_customer]
|
||||||
if unsent_invoices:
|
if unsent_invoices:
|
||||||
with language(self.order.locale):
|
ctx['invoices_send_link'] = reverse('control:event.order.sendmail', kwargs={
|
||||||
ctx['invoices_send_link'] = reverse('control:event.order.sendmail', kwargs={
|
'event': self.request.event.slug,
|
||||||
'event': self.request.event.slug,
|
'organizer': self.request.event.organizer.slug,
|
||||||
'organizer': self.request.event.organizer.slug,
|
'code': self.order.code
|
||||||
'code': self.order.code
|
}) + '?' + urlencode({
|
||||||
}) + '?' + urlencode({
|
'subject': ngettext('Your invoice', 'Your invoices', len(unsent_invoices)),
|
||||||
'subject': ngettext('Your invoice', 'Your invoices', len(unsent_invoices)),
|
'message': ngettext(
|
||||||
'message': ngettext(
|
'Hello,\n\nplease find your invoice attached to this email.\n\n'
|
||||||
'Hello,\n\nplease find your invoice attached to this email.\n\n'
|
'Your {event} team',
|
||||||
'Your {event} team',
|
'Hello,\n\nplease find your invoices attached to this email.\n\n'
|
||||||
'Hello,\n\nplease find your invoices attached to this email.\n\n'
|
'Your {event} team',
|
||||||
'Your {event} team',
|
len(unsent_invoices)
|
||||||
len(unsent_invoices)
|
).format(
|
||||||
).format(
|
event="{event}",
|
||||||
event="{event}",
|
),
|
||||||
),
|
'attach_invoices': unsent_invoices
|
||||||
'attach_invoices': unsent_invoices
|
}, doseq=True)
|
||||||
}, doseq=True)
|
|
||||||
|
|
||||||
return ctx
|
return ctx
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: 1\n"
|
"Project-Id-Version: 1\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-05-30 10:35+0000\n"
|
"POT-Creation-Date: 2025-05-30 10:35+0000\n"
|
||||||
"PO-Revision-Date: 2025-06-12 17:00+0000\n"
|
"PO-Revision-Date: 2025-05-30 11:15+0000\n"
|
||||||
"Last-Translator: Richard Schreiber <schreiber@rami.io>\n"
|
"Last-Translator: Raphael Michel <michel@rami.io>\n"
|
||||||
"Language-Team: German <https://translate.pretix.eu/projects/pretix/pretix/de/"
|
"Language-Team: German <https://translate.pretix.eu/projects/pretix/pretix/de/"
|
||||||
">\n"
|
">\n"
|
||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
@@ -33401,7 +33401,7 @@ msgstr "Übersicht über die bestellten Produkte"
|
|||||||
|
|
||||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:50
|
#: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:50
|
||||||
msgid "Continue with order process"
|
msgid "Continue with order process"
|
||||||
msgstr "Fortfahren mit dem Bestellprozess"
|
msgstr "Mit dem Bestellprozess fortfahren"
|
||||||
|
|
||||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:55
|
#: pretix/presale/templates/pretixpresale/event/fragment_cart_box.html:55
|
||||||
#: pretix/presale/templates/pretixpresale/event/index.html:232
|
#: pretix/presale/templates/pretixpresale/event/index.html:232
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -8,7 +8,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-05-30 10:36+0000\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-05-28 08:00+0000\n"
|
||||||
"Last-Translator: 조정화 <junghwa.jo@om.org>\n"
|
"Last-Translator: 조정화 <junghwa.jo@om.org>\n"
|
||||||
"Language-Team: Korean <https://translate.pretix.eu/projects/pretix/pretix-js/"
|
"Language-Team: Korean <https://translate.pretix.eu/projects/pretix/pretix-js/"
|
||||||
"ko/>\n"
|
"ko/>\n"
|
||||||
@@ -733,7 +733,7 @@ msgstr "카트가 만료되었습니다"
|
|||||||
#: pretix/static/pretixpresale/js/ui/cart.js:59
|
#: pretix/static/pretixpresale/js/ui/cart.js:59
|
||||||
#: pretix/static/pretixpresale/js/ui/cart.js:87
|
#: pretix/static/pretixpresale/js/ui/cart.js:87
|
||||||
msgid "Your cart is about to expire."
|
msgid "Your cart is about to expire."
|
||||||
msgstr "카트가 곧 만료됩니다."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/cart.js:64
|
#: pretix/static/pretixpresale/js/ui/cart.js:64
|
||||||
msgid "The items in your cart are reserved for you for one minute."
|
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
|
#: pretix/static/pretixpresale/js/ui/cart.js:90
|
||||||
msgid "Do you want to renew the reservation period?"
|
msgid "Do you want to renew the reservation period?"
|
||||||
msgstr "예약 기간을 갱신하시겠습니까?"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/cart.js:93
|
#: pretix/static/pretixpresale/js/ui/cart.js:93
|
||||||
msgid "Renew reservation"
|
msgid "Renew reservation"
|
||||||
msgstr "예약 갱신"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:194
|
#: pretix/static/pretixpresale/js/ui/main.js:194
|
||||||
msgid "The organizer keeps %(currency)s %(amount)s"
|
msgid "The organizer keeps %(currency)s %(amount)s"
|
||||||
@@ -811,13 +811,12 @@ msgstr "수량 증가"
|
|||||||
#: pretix/static/pretixpresale/js/widget/widget.js:19
|
#: pretix/static/pretixpresale/js/widget/widget.js:19
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Filter events by"
|
msgid "Filter events by"
|
||||||
msgstr "이벤트를 걸러내다(이벤트 중에서 특정 조건에 맞는 것만 골라서 보여주거나, "
|
msgstr ""
|
||||||
"나머지를 숨기는 것을 의미)"
|
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:20
|
#: pretix/static/pretixpresale/js/widget/widget.js:20
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Filter"
|
msgid "Filter"
|
||||||
msgstr "걸러내다(데이터나 목록, 정보에서 조건에 맞는 것만 보여주기라는 의미)"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:21
|
#: pretix/static/pretixpresale/js/widget/widget.js:21
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:19
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:19
|
||||||
@@ -1076,7 +1075,7 @@ msgstr "체크아웃 재개"
|
|||||||
#: pretix/static/pretixpresale/js/widget/widget.js:63
|
#: pretix/static/pretixpresale/js/widget/widget.js:63
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "You cannot cancel this operation. Please wait for loading to finish."
|
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.js:64
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:60
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:60
|
||||||
|
|||||||
@@ -7,16 +7,16 @@ msgstr ""
|
|||||||
"Project-Id-Version: 1\n"
|
"Project-Id-Version: 1\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-05-30 10:35+0000\n"
|
"POT-Creation-Date: 2025-05-30 10:35+0000\n"
|
||||||
"PO-Revision-Date: 2025-06-10 04:00+0000\n"
|
"PO-Revision-Date: 2025-05-01 02:00+0000\n"
|
||||||
"Last-Translator: Tim Maurizio Dullaart <Tim.maurizio@gmail.com>\n"
|
"Last-Translator: Foxy Hunter <matthias.vancoillie@outlook.com>\n"
|
||||||
"Language-Team: Dutch <https://translate.pretix.eu/projects/pretix/pretix/nl/>"
|
"Language-Team: Dutch <https://translate.pretix.eu/projects/pretix/pretix/nl/"
|
||||||
"\n"
|
">\n"
|
||||||
"Language: nl\n"
|
"Language: nl\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Weblate 5.11.4\n"
|
"X-Generator: Weblate 5.11.1\n"
|
||||||
|
|
||||||
#: pretix/_base_settings.py:87
|
#: pretix/_base_settings.py:87
|
||||||
msgid "English"
|
msgid "English"
|
||||||
@@ -88,7 +88,7 @@ msgstr "Grieks"
|
|||||||
|
|
||||||
#: pretix/_base_settings.py:104
|
#: pretix/_base_settings.py:104
|
||||||
msgid "Hebrew"
|
msgid "Hebrew"
|
||||||
msgstr "Hebreeuws"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/_base_settings.py:105
|
#: pretix/_base_settings.py:105
|
||||||
msgid "Indonesian"
|
msgid "Indonesian"
|
||||||
@@ -694,16 +694,16 @@ msgstr ""
|
|||||||
"gebruikt worden door integraties."
|
"gebruikt worden door integraties."
|
||||||
|
|
||||||
#: pretix/base/context.py:38
|
#: pretix/base/context.py:38
|
||||||
#, python-brace-format
|
#, fuzzy, python-brace-format
|
||||||
|
#| msgid "powered by {name} based on <a {a_attr}>pretix</a>"
|
||||||
msgid "<a {a_name_attr}>powered by {name}</a> <a {a_attr}>based on pretix</a>"
|
msgid "<a {a_name_attr}>powered by {name}</a> <a {a_attr}>based on pretix</a>"
|
||||||
msgstr ""
|
msgstr "mogelijk gemaakt door {name}, gebaseerd op <a {a_attr}>pretix</a>"
|
||||||
"<a {a_name_attr}>mogelijk gemaakt door {name}</a> <a {a_attr}> gebaseerd op "
|
|
||||||
"pretix</a>"
|
|
||||||
|
|
||||||
#: pretix/base/context.py:48
|
#: pretix/base/context.py:48
|
||||||
#, python-brace-format
|
#, fuzzy, python-brace-format
|
||||||
|
#| msgid "powered by {name} based on <a {a_attr}>pretix</a>"
|
||||||
msgid "<a {a_attr}>powered by {name} based on pretix</a>"
|
msgid "<a {a_attr}>powered by {name} based on pretix</a>"
|
||||||
msgstr "<a {a_attr}>medemogelijk gemaakt door {name} gebasseerd op pretix</a>"
|
msgstr "mogelijk gemaakt door {name}, gebaseerd op <a {a_attr}>pretix</a>"
|
||||||
|
|
||||||
#: pretix/base/context.py:55
|
#: pretix/base/context.py:55
|
||||||
#, python-format
|
#, python-format
|
||||||
@@ -4362,15 +4362,13 @@ msgstr "Optioneel. Er worden geen producten verkocht vóór deze datum."
|
|||||||
|
|
||||||
#: pretix/base/models/event.py:621
|
#: pretix/base/models/event.py:621
|
||||||
msgid "This event is remote or partially remote."
|
msgid "This event is remote or partially remote."
|
||||||
msgstr "Dit evenement is afgelegen of gedeeltelijk afgelegen."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/models/event.py:622
|
#: pretix/base/models/event.py:622
|
||||||
msgid ""
|
msgid ""
|
||||||
"This will be used to let users know if the event is in a different timezone "
|
"This will be used to let users know if the event is in a different timezone "
|
||||||
"and let’s us calculate users’ local times."
|
"and let’s us calculate users’ local times."
|
||||||
msgstr ""
|
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
|
#: pretix/base/models/event.py:642 pretix/control/navigation.py:65
|
||||||
msgid "Plugins"
|
msgid "Plugins"
|
||||||
@@ -6066,8 +6064,10 @@ msgid "Cart ID (e.g. session key)"
|
|||||||
msgstr "Winkelwagen-ID (bijv. sessiesleutel)"
|
msgstr "Winkelwagen-ID (bijv. sessiesleutel)"
|
||||||
|
|
||||||
#: pretix/base/models/orders.py:3102
|
#: pretix/base/models/orders.py:3102
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Gift card: Expiration date"
|
||||||
msgid "Limit for extending expiration date"
|
msgid "Limit for extending expiration date"
|
||||||
msgstr "Limiet voor het uitstellen van de vervaldatum"
|
msgstr "Cadeaubon: Verloopdatum"
|
||||||
|
|
||||||
#: pretix/base/models/orders.py:3131
|
#: pretix/base/models/orders.py:3131
|
||||||
msgid "Cart position"
|
msgid "Cart position"
|
||||||
@@ -7262,8 +7262,10 @@ msgid "You cannot pay with gift cards when buying a gift card."
|
|||||||
msgstr "U kunt niet met cadeaubonnen betalen wanneer u een cadeaubon koopt."
|
msgstr "U kunt niet met cadeaubonnen betalen wanneer u een cadeaubon koopt."
|
||||||
|
|
||||||
#: pretix/base/payment.py:1467
|
#: pretix/base/payment.py:1467
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Please enter the correct result."
|
||||||
msgid "Please enter the code of your gift card."
|
msgid "Please enter the code of your gift card."
|
||||||
msgstr "Vul alstublieft de code van jouw cadeaukaart in."
|
msgstr "Vul alstublieft het correcte resultaat in."
|
||||||
|
|
||||||
#: pretix/base/payment.py:1483 pretix/base/payment.py:1526
|
#: pretix/base/payment.py:1483 pretix/base/payment.py:1526
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -10656,16 +10658,22 @@ msgstr ""
|
|||||||
"hoe uw de in uw ticketwinkel verzamelde gegevens gebruikt."
|
"hoe uw de in uw ticketwinkel verzamelde gegevens gebruikt."
|
||||||
|
|
||||||
#: pretix/base/settings.py:2071
|
#: pretix/base/settings.py:2071
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Account information"
|
||||||
msgid "Accessibility information URL"
|
msgid "Accessibility information URL"
|
||||||
msgstr "Toegankelijkheids informatie URL"
|
msgstr "Accountinformatie"
|
||||||
|
|
||||||
#: pretix/base/settings.py:2072
|
#: 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 ""
|
msgid ""
|
||||||
"This should point e.g. to a part of your website that explains how your "
|
"This should point e.g. to a part of your website that explains how your "
|
||||||
"ticket shop complies with accessibility regulation."
|
"ticket shop complies with accessibility regulation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Dit zou bijvoorbeeld naar een deel van uw website moeten wijzen dat uitlegt "
|
"Dit zou bijvoorbeeld naar een deel van uw website moeten wijzen dat uitlegt "
|
||||||
"hoe uw ticketwinkel omgaat met de toegankelijkheids wetgevingen."
|
"hoe uw de in uw ticketwinkel verzamelde gegevens gebruikt."
|
||||||
|
|
||||||
#: pretix/base/settings.py:2079
|
#: pretix/base/settings.py:2079
|
||||||
#: pretix/presale/templates/pretixpresale/event/base.html:228
|
#: pretix/presale/templates/pretixpresale/event/base.html:228
|
||||||
@@ -10673,16 +10681,22 @@ msgstr ""
|
|||||||
#: pretix/presale/templates/pretixpresale/organizers/accessibility.html:6
|
#: pretix/presale/templates/pretixpresale/organizers/accessibility.html:6
|
||||||
#: pretix/presale/templates/pretixpresale/organizers/base.html:106
|
#: pretix/presale/templates/pretixpresale/organizers/base.html:106
|
||||||
#: pretix/presale/templates/pretixpresale/organizers/base.html:111
|
#: pretix/presale/templates/pretixpresale/organizers/base.html:111
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Account information"
|
||||||
msgid "Accessibility information"
|
msgid "Accessibility information"
|
||||||
msgstr "Toegankelijkheids informatie"
|
msgstr "Accountinformatie"
|
||||||
|
|
||||||
#: pretix/base/settings.py:2083
|
#: pretix/base/settings.py:2083
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Account information"
|
||||||
msgid "Accessibility information title"
|
msgid "Accessibility information title"
|
||||||
msgstr "Toegankelijkheids informatie titel"
|
msgstr "Accountinformatie"
|
||||||
|
|
||||||
#: pretix/base/settings.py:2093
|
#: pretix/base/settings.py:2093
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Account information"
|
||||||
msgid "Accessibility information text"
|
msgid "Accessibility information text"
|
||||||
msgstr "Toegankelijkheids informatie tekst"
|
msgstr "Accountinformatie"
|
||||||
|
|
||||||
#: pretix/base/settings.py:2114
|
#: pretix/base/settings.py:2114
|
||||||
msgid "Attach ticket files"
|
msgid "Attach ticket files"
|
||||||
@@ -17753,9 +17767,7 @@ msgstr "draaiend in ontwikkelmodus"
|
|||||||
#: pretix/presale/templates/pretixpresale/postmessage.html:27
|
#: pretix/presale/templates/pretixpresale/postmessage.html:27
|
||||||
#: pretix/presale/templates/pretixpresale/waiting.html:42
|
#: pretix/presale/templates/pretixpresale/waiting.html:42
|
||||||
msgid "If this takes longer than a few minutes, please contact us."
|
msgid "If this takes longer than a few minutes, please contact us."
|
||||||
msgstr ""
|
msgstr "Neem contact met ons op als dit langer dan een aantal minuten duurt."
|
||||||
"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/boxoffice/payment.html:4
|
||||||
#: pretix/control/templates/pretixcontrol/organizers/devices.html:71
|
#: pretix/control/templates/pretixcontrol/organizers/devices.html:71
|
||||||
@@ -21241,11 +21253,13 @@ msgstr "Product met varianten"
|
|||||||
#: pretix/control/templates/pretixcontrol/items/index.html:118
|
#: pretix/control/templates/pretixcontrol/items/index.html:118
|
||||||
msgctxt "subevent"
|
msgctxt "subevent"
|
||||||
msgid "Product assigned to seating plan for one or more dates"
|
msgid "Product assigned to seating plan for one or more dates"
|
||||||
msgstr "Product toegewezen tot een zittingsschema voor een of meerdere data"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/control/templates/pretixcontrol/items/index.html:118
|
#: pretix/control/templates/pretixcontrol/items/index.html:118
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Product settings"
|
||||||
msgid "Product assigned to seating plan"
|
msgid "Product assigned to seating plan"
|
||||||
msgstr "Product toegewezen tot een zittingsplan"
|
msgstr "Productinstellingen"
|
||||||
|
|
||||||
#: pretix/control/templates/pretixcontrol/items/index.html:126
|
#: pretix/control/templates/pretixcontrol/items/index.html:126
|
||||||
msgid "Only available as an add-on product"
|
msgid "Only available as an add-on product"
|
||||||
@@ -23772,8 +23786,10 @@ msgstr ""
|
|||||||
"trackingaanbieders niet kennen."
|
"trackingaanbieders niet kennen."
|
||||||
|
|
||||||
#: pretix/control/templates/pretixcontrol/organizers/edit.html:204
|
#: pretix/control/templates/pretixcontrol/organizers/edit.html:204
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Availability"
|
||||||
msgid "Accessibility"
|
msgid "Accessibility"
|
||||||
msgstr "Toegankelijkheid"
|
msgstr "Beschikbaarheid"
|
||||||
|
|
||||||
#: pretix/control/templates/pretixcontrol/organizers/edit.html:206
|
#: pretix/control/templates/pretixcontrol/organizers/edit.html:206
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -23782,19 +23798,12 @@ msgid ""
|
|||||||
"template in <a href=\"https://docs.pretix.eu/trust/accessibility/\" "
|
"template in <a href=\"https://docs.pretix.eu/trust/accessibility/\" "
|
||||||
"target=\"_blank\">our documentation</a>."
|
"target=\"_blank\">our documentation</a>."
|
||||||
msgstr ""
|
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 <a href="
|
|
||||||
"\"https://docs.pretix.eu/trust/accessibility/\" target=\"_blank\">onze "
|
|
||||||
"documentatie</a>."
|
|
||||||
|
|
||||||
#: pretix/control/templates/pretixcontrol/organizers/edit.html:216
|
#: pretix/control/templates/pretixcontrol/organizers/edit.html:216
|
||||||
msgid ""
|
msgid ""
|
||||||
"Instead of an URL, you can also configure a text that will be shown within "
|
"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."
|
"pretix. This will be ignored if a URL is configured."
|
||||||
msgstr ""
|
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
|
#: pretix/control/templates/pretixcontrol/organizers/edit.html:228
|
||||||
msgid "Barcode media"
|
msgid "Barcode media"
|
||||||
@@ -29082,8 +29091,10 @@ msgid "Open BezahlCode in your banking app to start the payment process."
|
|||||||
msgstr "Open BezahlCode in uw bank-app om het betalingsproces te starten."
|
msgstr "Open BezahlCode in uw bank-app om het betalingsproces te starten."
|
||||||
|
|
||||||
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/pending.html:129
|
#: 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"
|
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
|
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/pending.html:141
|
||||||
#, python-format
|
#, python-format
|
||||||
@@ -32261,12 +32272,17 @@ msgid "You need to fill out all fields."
|
|||||||
msgstr "Vul alle velden in."
|
msgstr "Vul alle velden in."
|
||||||
|
|
||||||
#: pretix/presale/forms/customer.py:69
|
#: pretix/presale/forms/customer.py:69
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Please enter a valid email address."
|
||||||
msgid "You need to enter an email address."
|
msgid "You need to enter an email address."
|
||||||
msgstr "U moet een e-mailadres invullen."
|
msgstr "Vul alstublieft een geldig e-mailadres in."
|
||||||
|
|
||||||
#: pretix/presale/forms/customer.py:70
|
#: pretix/presale/forms/customer.py:70
|
||||||
|
#, fuzzy
|
||||||
|
#| msgctxt "subevent"
|
||||||
|
#| msgid "You need to select a date."
|
||||||
msgid "You need to enter a password."
|
msgid "You need to enter a password."
|
||||||
msgstr "U moet een wachtwoord invullen."
|
msgstr "U moet een datum selecteren."
|
||||||
|
|
||||||
#: pretix/presale/forms/customer.py:72
|
#: pretix/presale/forms/customer.py:72
|
||||||
msgid "We have not found an account with this email address and password."
|
msgid "We have not found an account with this email address and password."
|
||||||
@@ -32275,18 +32291,27 @@ msgstr ""
|
|||||||
"wachtwoord vinden."
|
"wachtwoord vinden."
|
||||||
|
|
||||||
#: pretix/presale/forms/customer.py:74
|
#: 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."
|
msgid "Please verify that you entered the correct email address."
|
||||||
msgstr "Alstublieft controleer of u het juiste emailadress heeft ingevuld."
|
msgstr "Voer twee keer hetzelfde e-mailadres in."
|
||||||
|
|
||||||
#: pretix/presale/forms/customer.py:75
|
#: pretix/presale/forms/customer.py:75
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Please enter the correct result."
|
||||||
msgid "Please enter the correct password."
|
msgid "Please enter the correct password."
|
||||||
msgstr "Vul alstublieft het correcte wachtwoord in."
|
msgstr "Vul alstublieft het correcte resultaat in."
|
||||||
|
|
||||||
#: pretix/presale/forms/customer.py:76
|
#: pretix/presale/forms/customer.py:76
|
||||||
msgid "This account is disabled."
|
msgid "This account is disabled."
|
||||||
msgstr "Dit account is uitgeschakeld."
|
msgstr "Dit account is uitgeschakeld."
|
||||||
|
|
||||||
#: pretix/presale/forms/customer.py:77
|
#: 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 ""
|
msgid ""
|
||||||
"You have not yet activated your account and set a password. Please click the "
|
"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 "
|
"link in the email we sent you. In case you cannot find it, click \"Forgot "
|
||||||
@@ -32298,8 +32323,10 @@ msgstr ""
|
|||||||
"te klikken."
|
"te klikken."
|
||||||
|
|
||||||
#: pretix/presale/forms/customer.py:90
|
#: pretix/presale/forms/customer.py:90
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Your password"
|
||||||
msgid "Forgot your password?"
|
msgid "Forgot your password?"
|
||||||
msgstr "Wachtwoord vergeten?"
|
msgstr "Uw wachtwoord"
|
||||||
|
|
||||||
#: pretix/presale/forms/customer.py:146
|
#: pretix/presale/forms/customer.py:146
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -32404,13 +32431,17 @@ msgid "Organizer: {organizer}"
|
|||||||
msgstr "Organisator: {organizer}"
|
msgstr "Organisator: {organizer}"
|
||||||
|
|
||||||
#: pretix/presale/templates/pretixpresale/base.html:47
|
#: pretix/presale/templates/pretixpresale/base.html:47
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Send links"
|
||||||
msgctxt "skip-to-main-nav"
|
msgctxt "skip-to-main-nav"
|
||||||
msgid "Skip link"
|
msgid "Skip link"
|
||||||
msgstr "Sla over link"
|
msgstr "Verstuur links"
|
||||||
|
|
||||||
#: pretix/presale/templates/pretixpresale/base.html:48
|
#: pretix/presale/templates/pretixpresale/base.html:48
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Email content"
|
||||||
msgid "Skip to main content"
|
msgid "Skip to main content"
|
||||||
msgstr "Overslaan naar de hoofd-inhoud"
|
msgstr "E-mailinhoud"
|
||||||
|
|
||||||
#: pretix/presale/templates/pretixpresale/base.html:76
|
#: pretix/presale/templates/pretixpresale/base.html:76
|
||||||
msgid "Footer Navigation"
|
msgid "Footer Navigation"
|
||||||
@@ -33255,8 +33286,10 @@ msgstr ""
|
|||||||
|
|
||||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:509
|
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:509
|
||||||
#: pretix/presale/templates/pretixpresale/fragment_modals.html:48
|
#: pretix/presale/templates/pretixpresale/fragment_modals.html:48
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Event description"
|
||||||
msgid "Renew reservation"
|
msgid "Renew reservation"
|
||||||
msgstr "Vernieuw reservering"
|
msgstr "Evenementomschrijving"
|
||||||
|
|
||||||
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:514
|
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:514
|
||||||
msgid "Overview of your ordered products."
|
msgid "Overview of your ordered products."
|
||||||
@@ -33610,6 +33643,8 @@ msgstr "Toon vorige maand, %(month)s"
|
|||||||
|
|
||||||
#: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:24
|
#: 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:52
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Select month to show"
|
||||||
msgid "Select a month to display"
|
msgid "Select a month to display"
|
||||||
msgstr "Kies maand om te tonen"
|
msgstr "Kies maand om te tonen"
|
||||||
|
|
||||||
@@ -33621,8 +33656,11 @@ msgstr "Maand"
|
|||||||
|
|
||||||
#: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:39
|
#: 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:67
|
||||||
|
#, fuzzy
|
||||||
|
#| msgctxt "reporting_timeframe"
|
||||||
|
#| msgid "by month"
|
||||||
msgid "Show month"
|
msgid "Show month"
|
||||||
msgstr "Weergeven per maand"
|
msgstr "per maand"
|
||||||
|
|
||||||
#: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:50
|
#: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar.html:50
|
||||||
#, python-format
|
#, python-format
|
||||||
@@ -33637,8 +33675,10 @@ msgstr "Toon vorige week, %(week)s"
|
|||||||
|
|
||||||
#: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:24
|
#: 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:52
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Select week to show"
|
||||||
msgid "Select a week to display"
|
msgid "Select a week to display"
|
||||||
msgstr "Kies een week om te weer te geven"
|
msgstr "Kies week om te tonen"
|
||||||
|
|
||||||
#: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:26
|
#: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:26
|
||||||
#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:12
|
#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:12
|
||||||
@@ -33652,8 +33692,11 @@ msgstr "Kies week om te tonen"
|
|||||||
|
|
||||||
#: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:43
|
#: 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:71
|
||||||
|
#, fuzzy
|
||||||
|
#| msgctxt "reporting_timeframe"
|
||||||
|
#| msgid "by week"
|
||||||
msgid "Show week"
|
msgid "Show week"
|
||||||
msgstr "Weergeef per week"
|
msgstr "per week"
|
||||||
|
|
||||||
#: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:54
|
#: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:54
|
||||||
#: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:73
|
#: pretix/presale/templates/pretixpresale/event/fragment_subevent_calendar_week.html:73
|
||||||
@@ -34579,6 +34622,8 @@ msgstr ""
|
|||||||
"gaan."
|
"gaan."
|
||||||
|
|
||||||
#: pretix/presale/templates/pretixpresale/fragment_modals.html:58
|
#: pretix/presale/templates/pretixpresale/fragment_modals.html:58
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Closed"
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Gesloten"
|
msgstr "Gesloten"
|
||||||
|
|
||||||
@@ -34623,6 +34668,8 @@ msgid "Save selection"
|
|||||||
msgstr "Selectie opslaan"
|
msgstr "Selectie opslaan"
|
||||||
|
|
||||||
#: pretix/presale/templates/pretixpresale/fragment_modals.html:141
|
#: pretix/presale/templates/pretixpresale/fragment_modals.html:141
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "You did not select any products."
|
||||||
msgid "You didn't select any ticket."
|
msgid "You didn't select any ticket."
|
||||||
msgstr "U heeft geen producten geselecteerd."
|
msgstr "U heeft geen producten geselecteerd."
|
||||||
|
|
||||||
@@ -34631,8 +34678,6 @@ msgid ""
|
|||||||
"Please tick a checkbox or enter a quantity for one of the ticket types to "
|
"Please tick a checkbox or enter a quantity for one of the ticket types to "
|
||||||
"add to the cart."
|
"add to the cart."
|
||||||
msgstr ""
|
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
|
#: pretix/presale/templates/pretixpresale/fragment_week_calendar.html:82
|
||||||
#, python-format
|
#, python-format
|
||||||
@@ -34684,9 +34729,10 @@ msgid "Event overview"
|
|||||||
msgstr "Evenementenoverzicht"
|
msgstr "Evenementenoverzicht"
|
||||||
|
|
||||||
#: pretix/presale/templates/pretixpresale/organizers/calendar.html:21
|
#: pretix/presale/templates/pretixpresale/organizers/calendar.html:21
|
||||||
#, python-format
|
#, fuzzy, python-format
|
||||||
|
#| msgid "Show next month, %(month)s"
|
||||||
msgid "Events in %(month)s"
|
msgid "Events in %(month)s"
|
||||||
msgstr "Evenementen in %(month)s"
|
msgstr "Toon volgende maand, %(month)s"
|
||||||
|
|
||||||
#: pretix/presale/templates/pretixpresale/organizers/calendar.html:91
|
#: pretix/presale/templates/pretixpresale/organizers/calendar.html:91
|
||||||
#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:104
|
#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:104
|
||||||
@@ -34696,22 +34742,28 @@ msgstr ""
|
|||||||
"Merk op dat de evenementen in dit overzicht in verschillende tijdzones zijn."
|
"Merk op dat de evenementen in dit overzicht in verschillende tijdzones zijn."
|
||||||
|
|
||||||
#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:21
|
#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:21
|
||||||
#, python-format
|
#, fuzzy, python-format
|
||||||
|
#| msgid "Entry scan: %(date)s"
|
||||||
msgid "Events on %(day)s"
|
msgid "Events on %(day)s"
|
||||||
msgstr "Evenementen op %(day)s"
|
msgstr "Ingangsscan: %(date)s"
|
||||||
|
|
||||||
#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:52
|
#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:52
|
||||||
|
#, fuzzy
|
||||||
|
#| msgctxt "subevents"
|
||||||
|
#| msgid "Select date"
|
||||||
msgid "Select a date to display"
|
msgid "Select a date to display"
|
||||||
msgstr "Kies een datum om weer te geven"
|
msgstr "Kies een datum"
|
||||||
|
|
||||||
#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:59
|
#: pretix/presale/templates/pretixpresale/organizers/calendar_day.html:59
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Show start date"
|
||||||
msgid "Show date"
|
msgid "Show date"
|
||||||
msgstr "Weergeef startdatum"
|
msgstr "Toon startdatum"
|
||||||
|
|
||||||
#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:21
|
#: pretix/presale/templates/pretixpresale/organizers/calendar_week.html:21
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Events in %(week)s (%(week_day_from)s – %(week_day_to)s)"
|
msgid "Events in %(week)s (%(week_day_from)s – %(week_day_to)s)"
|
||||||
msgstr "Evenementen in %(week)s (%(week_day_from)s – %(week_day_to)s)"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/presale/templates/pretixpresale/organizers/customer_address_delete.html:5
|
#: pretix/presale/templates/pretixpresale/organizers/customer_address_delete.html:5
|
||||||
#: pretix/presale/templates/pretixpresale/organizers/customer_address_delete.html:10
|
#: pretix/presale/templates/pretixpresale/organizers/customer_address_delete.html:10
|
||||||
@@ -34945,8 +34997,10 @@ msgid "Your cart is now empty."
|
|||||||
msgstr "Uw winkelwagen is nu leeg."
|
msgstr "Uw winkelwagen is nu leeg."
|
||||||
|
|
||||||
#: pretix/presale/views/cart.py:553
|
#: pretix/presale/views/cart.py:553
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Your cart has been updated."
|
||||||
msgid "Your cart timeout was extended."
|
msgid "Your cart timeout was extended."
|
||||||
msgstr "Uw winkelwagens tijdslimiet is verlengt."
|
msgstr "Uw winkelwagen is bijgewerkt."
|
||||||
|
|
||||||
#: pretix/presale/views/cart.py:568
|
#: pretix/presale/views/cart.py:568
|
||||||
msgid "The products have been successfully added to your cart."
|
msgid "The products have been successfully added to your cart."
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: 1\n"
|
"Project-Id-Version: 1\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-05-30 10:36+0000\n"
|
"POT-Creation-Date: 2025-05-30 10:36+0000\n"
|
||||||
"PO-Revision-Date: 2025-06-10 04:00+0000\n"
|
"PO-Revision-Date: 2025-05-01 02:00+0000\n"
|
||||||
"Last-Translator: Tim Maurizio Dullaart <Tim.maurizio@gmail.com>\n"
|
"Last-Translator: Foxy Hunter <matthias.vancoillie@outlook.com>\n"
|
||||||
"Language-Team: Dutch <https://translate.pretix.eu/projects/pretix/pretix-js/"
|
"Language-Team: Dutch <https://translate.pretix.eu/projects/pretix/pretix-js/"
|
||||||
"nl/>\n"
|
"nl/>\n"
|
||||||
"Language: nl\n"
|
"Language: nl\n"
|
||||||
@@ -16,7 +16,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Weblate 5.11.4\n"
|
"X-Generator: Weblate 5.11.1\n"
|
||||||
|
|
||||||
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
|
#: 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:62
|
||||||
@@ -415,8 +415,6 @@ msgstr ""
|
|||||||
#: pretix/static/pretixbase/js/asynctask.js:270
|
#: pretix/static/pretixbase/js/asynctask.js:270
|
||||||
msgid "If this takes longer than a few minutes, please contact us."
|
msgid "If this takes longer than a few minutes, please contact us."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Als dit langer dan een paar minuten duurt, neem dan alstublieft contact met "
|
|
||||||
"ons op."
|
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:325
|
#: pretix/static/pretixbase/js/asynctask.js:325
|
||||||
msgid "Close message"
|
msgid "Close message"
|
||||||
@@ -628,26 +626,25 @@ msgid "Unknown error."
|
|||||||
msgstr "Onbekende fout."
|
msgstr "Onbekende fout."
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:292
|
#: 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."
|
msgid "Your color has great contrast and will provide excellent accessibility."
|
||||||
msgstr ""
|
msgstr "Uw kleur heeft een goed contrast, en is gemakkelijk te lezen!"
|
||||||
"Uw kleur heeft een goed contrast, en zal zorgen voor een uitstekende "
|
|
||||||
"toegankelijkheid."
|
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:296
|
#: pretix/static/pretixcontrol/js/ui/main.js:296
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Your color has decent contrast and is probably good-enough to read!"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your color has decent contrast and is sufficient for minimum accessibility "
|
"Your color has decent contrast and is sufficient for minimum accessibility "
|
||||||
"requirements."
|
"requirements."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Uw kleur heeft een redelijk contrast, en is voldoende voor de minimale "
|
"Uw kleur heeft een redelijk contrast, en is waarschijnlijk goed te lezen!"
|
||||||
"toegankelijkheids eisen."
|
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:300
|
#: pretix/static/pretixcontrol/js/ui/main.js:300
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your color has insufficient contrast to white. Accessibility of your site "
|
"Your color has insufficient contrast to white. Accessibility of your site "
|
||||||
"will be impacted."
|
"will be impacted."
|
||||||
msgstr ""
|
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:416
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:436
|
#: pretix/static/pretixcontrol/js/ui/main.js:436
|
||||||
@@ -723,7 +720,7 @@ msgstr "Winkelwagen is verlopen"
|
|||||||
#: pretix/static/pretixpresale/js/ui/cart.js:59
|
#: pretix/static/pretixpresale/js/ui/cart.js:59
|
||||||
#: pretix/static/pretixpresale/js/ui/cart.js:87
|
#: pretix/static/pretixpresale/js/ui/cart.js:87
|
||||||
msgid "Your cart is about to expire."
|
msgid "Your cart is about to expire."
|
||||||
msgstr "Uw winkelwagen staat op het punt om te verlopen."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/cart.js:64
|
#: pretix/static/pretixpresale/js/ui/cart.js:64
|
||||||
msgid "The items in your cart are reserved for you for one minute."
|
msgid "The items in your cart are reserved for you for one minute."
|
||||||
@@ -733,10 +730,16 @@ msgstr[1] ""
|
|||||||
"De items in uw winkelwagen zijn nog {num} minuten voor u gereserveerd."
|
"De items in uw winkelwagen zijn nog {num} minuten voor u gereserveerd."
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/cart.js:86
|
#: pretix/static/pretixpresale/js/ui/cart.js:86
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Cart expired"
|
||||||
msgid "Your cart has expired."
|
msgid "Your cart has expired."
|
||||||
msgstr "Uw winkelwagen is verlopen."
|
msgstr "Winkelwagen is verlopen"
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/cart.js:89
|
#: 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 ""
|
msgid ""
|
||||||
"The items in your cart are no longer reserved for you. You can still "
|
"The items in your cart are no longer reserved for you. You can still "
|
||||||
"complete your order as long as they're available."
|
"complete your order as long as they're available."
|
||||||
@@ -746,11 +749,11 @@ msgstr ""
|
|||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/cart.js:90
|
#: pretix/static/pretixpresale/js/ui/cart.js:90
|
||||||
msgid "Do you want to renew the reservation period?"
|
msgid "Do you want to renew the reservation period?"
|
||||||
msgstr "Wilt u de reservererings periode vernieuwen?"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/cart.js:93
|
#: pretix/static/pretixpresale/js/ui/cart.js:93
|
||||||
msgid "Renew reservation"
|
msgid "Renew reservation"
|
||||||
msgstr "Vernieuw reservering"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:194
|
#: pretix/static/pretixpresale/js/ui/main.js:194
|
||||||
msgid "The organizer keeps %(currency)s %(amount)s"
|
msgid "The organizer keeps %(currency)s %(amount)s"
|
||||||
@@ -793,12 +796,12 @@ msgstr "Verhoog aantal"
|
|||||||
#: pretix/static/pretixpresale/js/widget/widget.js:19
|
#: pretix/static/pretixpresale/js/widget/widget.js:19
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Filter events by"
|
msgid "Filter events by"
|
||||||
msgstr "Filter evenementen op"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:20
|
#: pretix/static/pretixpresale/js/widget/widget.js:20
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Filter"
|
msgid "Filter"
|
||||||
msgstr "Filter"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:21
|
#: pretix/static/pretixpresale/js/widget/widget.js:21
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:19
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:19
|
||||||
@@ -1047,15 +1050,17 @@ msgid "Close"
|
|||||||
msgstr "Sluiten"
|
msgstr "Sluiten"
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:62
|
#: pretix/static/pretixpresale/js/widget/widget.js:62
|
||||||
|
#, fuzzy
|
||||||
|
#| msgctxt "widget"
|
||||||
|
#| msgid "Resume checkout"
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Close checkout"
|
msgid "Close checkout"
|
||||||
msgstr "Stoppen met afrekenen"
|
msgstr "Doorgaan met afrekenen"
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:63
|
#: pretix/static/pretixpresale/js/widget/widget.js:63
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "You cannot cancel this operation. Please wait for loading to finish."
|
msgid "You cannot cancel this operation. Please wait for loading to finish."
|
||||||
msgstr ""
|
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.js:64
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:60
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:60
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-05-30 10:35+0000\n"
|
"POT-Creation-Date: 2025-05-30 10:35+0000\n"
|
||||||
"PO-Revision-Date: 2025-06-02 23:00+0000\n"
|
"PO-Revision-Date: 2025-04-28 01:00+0000\n"
|
||||||
"Last-Translator: Anarion Dunedain <anarion80@gmail.com>\n"
|
"Last-Translator: Anarion Dunedain <anarion80@gmail.com>\n"
|
||||||
"Language-Team: Polish <https://translate.pretix.eu/projects/pretix/pretix/pl/"
|
"Language-Team: Polish <https://translate.pretix.eu/projects/pretix/pretix/pl/"
|
||||||
">\n"
|
">\n"
|
||||||
@@ -18,7 +18,7 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
|
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
|
||||||
"|| n%100>=20) ? 1 : 2;\n"
|
"|| n%100>=20) ? 1 : 2;\n"
|
||||||
"X-Generator: Weblate 5.11.4\n"
|
"X-Generator: Weblate 5.11\n"
|
||||||
|
|
||||||
#: pretix/_base_settings.py:87
|
#: pretix/_base_settings.py:87
|
||||||
msgid "English"
|
msgid "English"
|
||||||
@@ -11070,7 +11070,7 @@ msgstr ""
|
|||||||
#: pretix/base/settings.py:2434
|
#: pretix/base/settings.py:2434
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Your order is about to expire: {code}"
|
msgid "Your order is about to expire: {code}"
|
||||||
msgstr "Twoje zamówienie wkrótce wygaśnie: {code}"
|
msgstr "Twoje zamówienie ma wygasa: {code}"
|
||||||
|
|
||||||
#: pretix/base/settings.py:2438
|
#: pretix/base/settings.py:2438
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
@@ -11090,7 +11090,7 @@ msgstr ""
|
|||||||
"Witaj,\n"
|
"Witaj,\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Nie otrzymaliśmy jeszcze pełnej płatności za zamówienie na {event}.\n"
|
"Nie otrzymaliśmy jeszcze pełnej płatności za zamówienie na {event}.\n"
|
||||||
"Pamiętaj, że Twoje zamówienie będzie pewne tylko wtedy, jeżeli otrzymamy\n"
|
"Pamiętaj, że Twoje zamówienie będzi pewne tylko wtedy, jeżeli otrzymamy\n"
|
||||||
"Twoją płatność przed {expire_date}.\n"
|
"Twoją płatność przed {expire_date}.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Możesz wyświetlić informacje o płatności i status Twojego zamówienia pod "
|
"Możesz wyświetlić informacje o płatności i status Twojego zamówienia pod "
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-05-30 10:35+0000\n"
|
"POT-Creation-Date: 2025-05-30 10:35+0000\n"
|
||||||
"PO-Revision-Date: 2025-06-05 04:00+0000\n"
|
"PO-Revision-Date: 2025-02-03 16:07+0000\n"
|
||||||
"Last-Translator: Francisco Rosa <francisco@comm7.net>\n"
|
"Last-Translator: Cornelius Kibelka <ckibelka-ctr@wikimedia.org>\n"
|
||||||
"Language-Team: Portuguese <https://translate.pretix.eu/projects/pretix/"
|
"Language-Team: Portuguese <https://translate.pretix.eu/projects/pretix/"
|
||||||
"pretix/pt/>\n"
|
"pretix/pt/>\n"
|
||||||
"Language: pt\n"
|
"Language: pt\n"
|
||||||
@@ -17,59 +17,59 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Weblate 5.11.4\n"
|
"X-Generator: Weblate 5.9.2\n"
|
||||||
|
|
||||||
#: pretix/_base_settings.py:87
|
#: pretix/_base_settings.py:87
|
||||||
msgid "English"
|
msgid "English"
|
||||||
msgstr "Inglês"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/_base_settings.py:88
|
#: pretix/_base_settings.py:88
|
||||||
msgid "German"
|
msgid "German"
|
||||||
msgstr "Alemão"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/_base_settings.py:89
|
#: pretix/_base_settings.py:89
|
||||||
msgid "German (informal)"
|
msgid "German (informal)"
|
||||||
msgstr "Alemão (informal)"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/_base_settings.py:90
|
#: pretix/_base_settings.py:90
|
||||||
msgid "Arabic"
|
msgid "Arabic"
|
||||||
msgstr "Arabe"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/_base_settings.py:91
|
#: pretix/_base_settings.py:91
|
||||||
msgid "Basque"
|
msgid "Basque"
|
||||||
msgstr "Basco"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/_base_settings.py:92
|
#: pretix/_base_settings.py:92
|
||||||
msgid "Catalan"
|
msgid "Catalan"
|
||||||
msgstr "Catalão"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/_base_settings.py:93
|
#: pretix/_base_settings.py:93
|
||||||
msgid "Chinese (simplified)"
|
msgid "Chinese (simplified)"
|
||||||
msgstr "Chinês (simplificado)"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/_base_settings.py:94
|
#: pretix/_base_settings.py:94
|
||||||
msgid "Chinese (traditional)"
|
msgid "Chinese (traditional)"
|
||||||
msgstr "chinês (tradicional)"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/_base_settings.py:95
|
#: pretix/_base_settings.py:95
|
||||||
msgid "Czech"
|
msgid "Czech"
|
||||||
msgstr "Tcheco"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/_base_settings.py:96
|
#: pretix/_base_settings.py:96
|
||||||
msgid "Croatian"
|
msgid "Croatian"
|
||||||
msgstr "Croata"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/_base_settings.py:97
|
#: pretix/_base_settings.py:97
|
||||||
msgid "Danish"
|
msgid "Danish"
|
||||||
msgstr "Dinamarquês"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/_base_settings.py:98
|
#: pretix/_base_settings.py:98
|
||||||
msgid "Dutch"
|
msgid "Dutch"
|
||||||
msgstr "Holandês"
|
msgstr "Alemão"
|
||||||
|
|
||||||
#: pretix/_base_settings.py:99
|
#: pretix/_base_settings.py:99
|
||||||
msgid "Dutch (informal)"
|
msgid "Dutch (informal)"
|
||||||
msgstr "Holandês (informal)"
|
msgstr "Alemão (informal)"
|
||||||
|
|
||||||
#: pretix/_base_settings.py:100
|
#: pretix/_base_settings.py:100
|
||||||
msgid "French"
|
msgid "French"
|
||||||
@@ -81,7 +81,7 @@ msgstr "Finlandês"
|
|||||||
|
|
||||||
#: pretix/_base_settings.py:102
|
#: pretix/_base_settings.py:102
|
||||||
msgid "Galician"
|
msgid "Galician"
|
||||||
msgstr "Galego"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/_base_settings.py:103
|
#: pretix/_base_settings.py:103
|
||||||
msgid "Greek"
|
msgid "Greek"
|
||||||
@@ -89,11 +89,11 @@ msgstr "Grego"
|
|||||||
|
|
||||||
#: pretix/_base_settings.py:104
|
#: pretix/_base_settings.py:104
|
||||||
msgid "Hebrew"
|
msgid "Hebrew"
|
||||||
msgstr "Hebraico"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/_base_settings.py:105
|
#: pretix/_base_settings.py:105
|
||||||
msgid "Indonesian"
|
msgid "Indonesian"
|
||||||
msgstr "Indonésio"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/_base_settings.py:106
|
#: pretix/_base_settings.py:106
|
||||||
msgid "Italian"
|
msgid "Italian"
|
||||||
@@ -101,15 +101,15 @@ msgstr "Italiano"
|
|||||||
|
|
||||||
#: pretix/_base_settings.py:107
|
#: pretix/_base_settings.py:107
|
||||||
msgid "Japanese"
|
msgid "Japanese"
|
||||||
msgstr "Japonês"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/_base_settings.py:108
|
#: pretix/_base_settings.py:108
|
||||||
msgid "Latvian"
|
msgid "Latvian"
|
||||||
msgstr "Letão"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/_base_settings.py:109
|
#: pretix/_base_settings.py:109
|
||||||
msgid "Norwegian Bokmål"
|
msgid "Norwegian Bokmål"
|
||||||
msgstr "Bokmål norueguês"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/_base_settings.py:110
|
#: pretix/_base_settings.py:110
|
||||||
msgid "Polish"
|
msgid "Polish"
|
||||||
@@ -125,7 +125,7 @@ msgstr "Português (Brasil)"
|
|||||||
|
|
||||||
#: pretix/_base_settings.py:113
|
#: pretix/_base_settings.py:113
|
||||||
msgid "Romanian"
|
msgid "Romanian"
|
||||||
msgstr "Romano"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/_base_settings.py:114
|
#: pretix/_base_settings.py:114
|
||||||
msgid "Russian"
|
msgid "Russian"
|
||||||
@@ -133,11 +133,11 @@ msgstr "Russo"
|
|||||||
|
|
||||||
#: pretix/_base_settings.py:115
|
#: pretix/_base_settings.py:115
|
||||||
msgid "Slovak"
|
msgid "Slovak"
|
||||||
msgstr "Eslovaco"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/_base_settings.py:116
|
#: pretix/_base_settings.py:116
|
||||||
msgid "Swedish"
|
msgid "Swedish"
|
||||||
msgstr "Suéco"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/_base_settings.py:117
|
#: pretix/_base_settings.py:117
|
||||||
msgid "Spanish"
|
msgid "Spanish"
|
||||||
@@ -149,7 +149,7 @@ msgstr "Turco"
|
|||||||
|
|
||||||
#: pretix/_base_settings.py:119
|
#: pretix/_base_settings.py:119
|
||||||
msgid "Ukrainian"
|
msgid "Ukrainian"
|
||||||
msgstr "Ucraniano"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/api/auth/devicesecurity.py:58
|
#: pretix/api/auth/devicesecurity.py:58
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -184,8 +184,10 @@ msgid "Allowed URIs list, space separated"
|
|||||||
msgstr "Lista de URIs permitidos, separados por espaço"
|
msgstr "Lista de URIs permitidos, separados por espaço"
|
||||||
|
|
||||||
#: pretix/api/models.py:47
|
#: pretix/api/models.py:47
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Allowed URIs list, space separated"
|
||||||
msgid "Allowed Post Logout URIs list, space separated"
|
msgid "Allowed Post Logout URIs list, space separated"
|
||||||
msgstr "Lista de URIs de saída de postagem permitidas, separadas por espaços"
|
msgstr "Lista de URIs permitidos, separados por espaço"
|
||||||
|
|
||||||
#: pretix/api/models.py:51 pretix/base/models/customers.py:406
|
#: pretix/api/models.py:51 pretix/base/models/customers.py:406
|
||||||
#: pretix/plugins/paypal/payment.py:113 pretix/plugins/paypal2/payment.py:110
|
#: pretix/plugins/paypal/payment.py:113 pretix/plugins/paypal2/payment.py:110
|
||||||
@@ -231,7 +233,7 @@ msgstr "Comentário"
|
|||||||
|
|
||||||
#: pretix/api/serializers/cart.py:168 pretix/api/serializers/order.py:1414
|
#: pretix/api/serializers/cart.py:168 pretix/api/serializers/order.py:1414
|
||||||
msgid "The product \"{}\" is not assigned to a quota."
|
msgid "The product \"{}\" is not assigned to a quota."
|
||||||
msgstr "O produto \"{}\" não está atribuído a uma cota."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/api/serializers/checkin.py:65 pretix/base/models/event.py:1685
|
#: 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/base/models/items.py:1917 pretix/base/models/items.py:2184
|
||||||
@@ -249,8 +251,6 @@ msgid ""
|
|||||||
"Events cannot be created as 'live'. Quotas and payment must be added to the "
|
"Events cannot be created as 'live'. Quotas and payment must be added to the "
|
||||||
"event before sales can go live."
|
"event before sales can go live."
|
||||||
msgstr ""
|
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
|
#: pretix/api/serializers/event.py:246 pretix/api/serializers/event.py:555
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
@@ -281,23 +281,21 @@ msgstr "A propriedade de metadados do item '{name}' não existe."
|
|||||||
|
|
||||||
#: pretix/api/serializers/item.py:207 pretix/control/forms/item.py:1267
|
#: 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."
|
msgid "The bundled item must not be the same item as the bundling one."
|
||||||
msgstr "O item agrupado não deve ser o mesmo item que o do pacote."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/api/serializers/item.py:210 pretix/control/forms/item.py:1269
|
#: pretix/api/serializers/item.py:210 pretix/control/forms/item.py:1269
|
||||||
msgid "The bundled item must not have bundles on its own."
|
msgid "The bundled item must not have bundles on its own."
|
||||||
msgstr "O item agrupado não deve ter pacotes próprios."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/api/serializers/item.py:298
|
#: pretix/api/serializers/item.py:298
|
||||||
msgid ""
|
msgid ""
|
||||||
"Updating add-ons, bundles, or variations via PATCH/PUT is not supported. "
|
"Updating add-ons, bundles, or variations via PATCH/PUT is not supported. "
|
||||||
"Please use the dedicated nested endpoint."
|
"Please use the dedicated nested endpoint."
|
||||||
msgstr ""
|
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
|
#: pretix/api/serializers/item.py:306
|
||||||
msgid "Only admission products can currently be personalized."
|
msgid "Only admission products can currently be personalized."
|
||||||
msgstr "Atualmente, somente produtos de admissão podem ser personalizados."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/api/serializers/item.py:317
|
#: pretix/api/serializers/item.py:317
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -319,8 +317,6 @@ msgid ""
|
|||||||
"Updating options via PATCH/PUT is not supported. Please use the dedicated "
|
"Updating options via PATCH/PUT is not supported. Please use the dedicated "
|
||||||
"nested endpoint."
|
"nested endpoint."
|
||||||
msgstr ""
|
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
|
#: pretix/api/serializers/item.py:533 pretix/control/forms/item.py:178
|
||||||
msgid "Question cannot depend on a question asked during check-in."
|
msgid "Question cannot depend on a question asked during check-in."
|
||||||
@@ -355,7 +351,7 @@ msgstr ""
|
|||||||
#: pretix/api/serializers/order.py:79
|
#: pretix/api/serializers/order.py:79
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "\"{input}\" is not a valid choice."
|
msgid "\"{input}\" is not a valid choice."
|
||||||
msgstr "\"{input}\" não é uma escolha válida."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/api/serializers/order.py:1375 pretix/api/views/cart.py:224
|
#: pretix/api/serializers/order.py:1375 pretix/api/views/cart.py:224
|
||||||
#: pretix/base/services/orders.py:1533
|
#: pretix/base/services/orders.py:1533
|
||||||
@@ -371,12 +367,11 @@ msgstr "O produto \"{}\" não está disponível nesta data."
|
|||||||
msgid ""
|
msgid ""
|
||||||
"There is not enough quota available on quota \"{}\" to perform the operation."
|
"There is not enough quota available on quota \"{}\" to perform the operation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Não há cota suficiente disponível na cota \"{}\" para executar a operação."
|
|
||||||
|
|
||||||
#: pretix/api/serializers/organizer.py:105
|
#: 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:456
|
||||||
msgid "An account with this email address is already registered."
|
msgid "An account with this email address is already registered."
|
||||||
msgstr "Uma conta com este endereço de e-mail já está registrada."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/api/serializers/organizer.py:238
|
#: pretix/api/serializers/organizer.py:238
|
||||||
#: pretix/control/forms/organizer.py:741
|
#: pretix/control/forms/organizer.py:741
|
||||||
@@ -405,11 +400,11 @@ msgstr "Este usuário já tem permissões para esta equipe."
|
|||||||
#: pretix/api/views/cart.py:209
|
#: pretix/api/views/cart.py:209
|
||||||
msgid ""
|
msgid ""
|
||||||
"The specified voucher has already been used the maximum number of times."
|
"The specified voucher has already been used the maximum number of times."
|
||||||
msgstr "O voucher especificado já foi utilizado o número máximo de vezes."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/api/views/checkin.py:611 pretix/api/views/checkin.py:618
|
#: pretix/api/views/checkin.py:611 pretix/api/views/checkin.py:618
|
||||||
msgid "Medium connected to other event"
|
msgid "Medium connected to other event"
|
||||||
msgstr "Meio conectado a outro evento"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/api/views/oauth.py:107 pretix/control/logdisplay.py:692
|
#: pretix/api/views/oauth.py:107 pretix/control/logdisplay.py:692
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
@@ -467,8 +462,9 @@ msgid "Order expired"
|
|||||||
msgstr "Pedido expirado"
|
msgstr "Pedido expirado"
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:261
|
#: pretix/api/webhooks.py:261
|
||||||
|
#, fuzzy
|
||||||
msgid "Order expiry date changed"
|
msgid "Order expiry date changed"
|
||||||
msgstr "Data de validade do pedido alterada"
|
msgstr "Informações de pedido alteradas"
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:265 pretix/base/notifications.py:269
|
#: pretix/api/webhooks.py:265 pretix/base/notifications.py:269
|
||||||
msgid "Order information changed"
|
msgid "Order information changed"
|
||||||
@@ -484,8 +480,9 @@ msgid "Order changed"
|
|||||||
msgstr "Pedido alterado"
|
msgstr "Pedido alterado"
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:277
|
#: pretix/api/webhooks.py:277
|
||||||
|
#, fuzzy
|
||||||
msgid "Refund of payment created"
|
msgid "Refund of payment created"
|
||||||
msgstr "Reembolso de pagamento criado"
|
msgstr "Reembolso externo de pagamento"
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:281 pretix/base/notifications.py:293
|
#: pretix/api/webhooks.py:281 pretix/base/notifications.py:293
|
||||||
msgid "External refund of payment"
|
msgid "External refund of payment"
|
||||||
@@ -493,23 +490,28 @@ msgstr "Reembolso externo de pagamento"
|
|||||||
|
|
||||||
#: pretix/api/webhooks.py:285
|
#: pretix/api/webhooks.py:285
|
||||||
msgid "Refund of payment requested by customer"
|
msgid "Refund of payment requested by customer"
|
||||||
msgstr "Reembolso do pagamento solicitado pelo cliente"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:289
|
#: pretix/api/webhooks.py:289
|
||||||
|
#, fuzzy
|
||||||
msgid "Refund of payment completed"
|
msgid "Refund of payment completed"
|
||||||
msgstr "Reembolso de pagamento concluído"
|
msgstr "Reembolso externo de pagamento"
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:293
|
#: pretix/api/webhooks.py:293
|
||||||
|
#, fuzzy
|
||||||
msgid "Refund of payment canceled"
|
msgid "Refund of payment canceled"
|
||||||
msgstr "Reembolso de pagamento cancelado"
|
msgstr "Reembolso externo de pagamento"
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:297
|
#: pretix/api/webhooks.py:297
|
||||||
|
#, fuzzy
|
||||||
msgid "Refund of payment failed"
|
msgid "Refund of payment failed"
|
||||||
msgstr "Falha no reembolso do pagamento"
|
msgstr "Reembolso externo de pagamento"
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:301
|
#: pretix/api/webhooks.py:301
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Payment provider"
|
||||||
msgid "Payment confirmed"
|
msgid "Payment confirmed"
|
||||||
msgstr "Pagamento confirmado"
|
msgstr "Provedor de pagamento"
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:305
|
#: pretix/api/webhooks.py:305
|
||||||
msgid "Order approved"
|
msgid "Order approved"
|
||||||
@@ -520,16 +522,18 @@ msgid "Order denied"
|
|||||||
msgstr "Pedido negado"
|
msgstr "Pedido negado"
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:313
|
#: pretix/api/webhooks.py:313
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Order denied"
|
||||||
msgid "Order deleted"
|
msgid "Order deleted"
|
||||||
msgstr "Pedido excluído"
|
msgstr "Pedido negado"
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:317
|
#: pretix/api/webhooks.py:317
|
||||||
msgid "Ticket checked in"
|
msgid "Ticket checked in"
|
||||||
msgstr "Check-in do bilhete"
|
msgstr "Ingresso registrado"
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:321
|
#: pretix/api/webhooks.py:321
|
||||||
msgid "Ticket check-in reverted"
|
msgid "Ticket check-in reverted"
|
||||||
msgstr "O check-in do bilhete foi revertido"
|
msgstr "Ingresso revertido"
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:325
|
#: pretix/api/webhooks.py:325
|
||||||
msgid "Event created"
|
msgid "Event created"
|
||||||
@@ -540,13 +544,14 @@ msgid "Event details changed"
|
|||||||
msgstr "Detalhes do evento alterados"
|
msgstr "Detalhes do evento alterados"
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:333
|
#: pretix/api/webhooks.py:333
|
||||||
|
#, fuzzy
|
||||||
msgid "Event deleted"
|
msgid "Event deleted"
|
||||||
msgstr "Evento excluído"
|
msgstr "Evento criado"
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:337
|
#: pretix/api/webhooks.py:337
|
||||||
msgctxt "subevent"
|
msgctxt "subevent"
|
||||||
msgid "Event series date added"
|
msgid "Event series date added"
|
||||||
msgstr "Data de adição da série de eventos"
|
msgstr "Data da série de eventos adicionada"
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:341
|
#: pretix/api/webhooks.py:341
|
||||||
msgctxt "subevent"
|
msgctxt "subevent"
|
||||||
@@ -556,59 +561,64 @@ msgstr "Data da série de eventos alterada"
|
|||||||
#: pretix/api/webhooks.py:345
|
#: pretix/api/webhooks.py:345
|
||||||
msgctxt "subevent"
|
msgctxt "subevent"
|
||||||
msgid "Event series date deleted"
|
msgid "Event series date deleted"
|
||||||
msgstr "Data da série de eventos excluída"
|
msgstr "Data da série de eventos apagada"
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:349
|
#: pretix/api/webhooks.py:349
|
||||||
msgid ""
|
msgid ""
|
||||||
"Product changed (including product added or deleted and including changes to "
|
"Product changed (including product added or deleted and including changes to "
|
||||||
"nested objects like variations or bundles)"
|
"nested objects like variations or bundles)"
|
||||||
msgstr ""
|
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
|
#: pretix/api/webhooks.py:354
|
||||||
msgid "Shop taken live"
|
msgid "Shop taken live"
|
||||||
msgstr "Loja ao vivo"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:358
|
#: pretix/api/webhooks.py:358
|
||||||
msgid "Shop taken offline"
|
msgid "Shop taken offline"
|
||||||
msgstr "Loja offline"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:362
|
#: pretix/api/webhooks.py:362
|
||||||
|
#, fuzzy
|
||||||
msgid "Test-Mode of shop has been activated"
|
msgid "Test-Mode of shop has been activated"
|
||||||
msgstr "O modo de teste da loja foi ativado"
|
msgstr "A equipe selecionada não pode ser deletada."
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:366
|
#: pretix/api/webhooks.py:366
|
||||||
|
#, fuzzy
|
||||||
msgid "Test-Mode of shop has been deactivated"
|
msgid "Test-Mode of shop has been deactivated"
|
||||||
msgstr "O modo de teste da loja foi desativado"
|
msgstr "A equipe selecionada não pode ser deletada."
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:370
|
#: pretix/api/webhooks.py:370
|
||||||
msgid "Waiting list entry added"
|
msgid "Waiting list entry added"
|
||||||
msgstr "Adicionado em aguardando na lista de espera"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:374
|
#: pretix/api/webhooks.py:374
|
||||||
|
#, fuzzy
|
||||||
msgid "Waiting list entry changed"
|
msgid "Waiting list entry changed"
|
||||||
msgstr "Entrada na lista de espera alterada"
|
msgstr "O valor foi creditado no seu cartão."
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:378
|
#: pretix/api/webhooks.py:378
|
||||||
|
#, fuzzy
|
||||||
msgid "Waiting list entry deleted"
|
msgid "Waiting list entry deleted"
|
||||||
msgstr "Entrada na lista de espera excluída"
|
msgstr "O valor foi creditado no seu cartão."
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:382
|
#: pretix/api/webhooks.py:382
|
||||||
msgid "Waiting list entry received voucher"
|
msgid "Waiting list entry received voucher"
|
||||||
msgstr "Inscrição na lista de espera recebeu voucher"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:386
|
#: pretix/api/webhooks.py:386
|
||||||
|
#, fuzzy
|
||||||
msgid "Customer account created"
|
msgid "Customer account created"
|
||||||
msgstr "Conta de cliente criada"
|
msgstr "País"
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:390
|
#: pretix/api/webhooks.py:390
|
||||||
|
#, fuzzy
|
||||||
msgid "Customer account changed"
|
msgid "Customer account changed"
|
||||||
msgstr "Conta do cliente alterada"
|
msgstr "País"
|
||||||
|
|
||||||
#: pretix/api/webhooks.py:394
|
#: pretix/api/webhooks.py:394
|
||||||
|
#, fuzzy
|
||||||
msgid "Customer account anonymized"
|
msgid "Customer account anonymized"
|
||||||
msgstr "Conta de cliente anonimizada"
|
msgstr "País"
|
||||||
|
|
||||||
#: pretix/base/addressvalidation.py:100 pretix/base/addressvalidation.py:103
|
#: pretix/base/addressvalidation.py:100 pretix/base/addressvalidation.py:103
|
||||||
#: pretix/base/addressvalidation.py:108 pretix/base/forms/questions.py:1004
|
#: pretix/base/addressvalidation.py:108 pretix/base/forms/questions.py:1004
|
||||||
@@ -621,15 +631,15 @@ msgstr "Conta de cliente anonimizada"
|
|||||||
#: pretix/plugins/banktransfer/payment.py:679
|
#: pretix/plugins/banktransfer/payment.py:679
|
||||||
#: pretix/presale/forms/customer.py:151
|
#: pretix/presale/forms/customer.py:151
|
||||||
msgid "This field is required."
|
msgid "This field is required."
|
||||||
msgstr "Este campo é obrigatório."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/addressvalidation.py:213
|
#: pretix/base/addressvalidation.py:213
|
||||||
msgid "Enter a postal code in the format XXX."
|
msgid "Enter a postal code in the format XXX."
|
||||||
msgstr "Digite um código postal no formato XXX."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/addressvalidation.py:222 pretix/base/addressvalidation.py:224
|
#: pretix/base/addressvalidation.py:222 pretix/base/addressvalidation.py:224
|
||||||
msgid "Enter a postal code in the format XXXX."
|
msgid "Enter a postal code in the format XXXX."
|
||||||
msgstr "Digite um código postal no formato XXXX."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/auth.py:146
|
#: pretix/base/auth.py:146
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
@@ -670,7 +680,7 @@ msgstr "Senha"
|
|||||||
|
|
||||||
#: pretix/base/auth.py:176 pretix/base/auth.py:183
|
#: pretix/base/auth.py:176 pretix/base/auth.py:183
|
||||||
msgid "Your password must contain both numeric and alphabetic characters."
|
msgid "Your password must contain both numeric and alphabetic characters."
|
||||||
msgstr "Sua senha deve conter caracteres numéricos e alfabéticos."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/auth.py:202 pretix/base/auth.py:212
|
#: pretix/base/auth.py:202 pretix/base/auth.py:212
|
||||||
#, python-format
|
#, python-format
|
||||||
@@ -678,10 +688,8 @@ msgid "Your password may not be the same as your previous password."
|
|||||||
msgid_plural ""
|
msgid_plural ""
|
||||||
"Your password may not be the same as one of your %(history_length)s previous "
|
"Your password may not be the same as one of your %(history_length)s previous "
|
||||||
"passwords."
|
"passwords."
|
||||||
msgstr[0] "Sua senha pode não ser a mesma que sua senha anterior."
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
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
|
#: pretix/base/channels.py:168
|
||||||
msgid "Online shop"
|
msgid "Online shop"
|
||||||
@@ -689,15 +697,13 @@ msgstr "Loja online"
|
|||||||
|
|
||||||
#: pretix/base/channels.py:174
|
#: pretix/base/channels.py:174
|
||||||
msgid "API"
|
msgid "API"
|
||||||
msgstr "API"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/channels.py:175
|
#: pretix/base/channels.py:175
|
||||||
msgid ""
|
msgid ""
|
||||||
"API sales channels come with no built-in functionality, but may be used for "
|
"API sales channels come with no built-in functionality, but may be used for "
|
||||||
"custom integrations."
|
"custom integrations."
|
||||||
msgstr ""
|
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
|
#: pretix/base/context.py:38
|
||||||
#, fuzzy, python-brace-format
|
#, fuzzy, python-brace-format
|
||||||
@@ -723,27 +729,25 @@ msgstr "código-fonte"
|
|||||||
#: pretix/base/customersso/oidc.py:61
|
#: pretix/base/customersso/oidc.py:61
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Configuration option \"{name}\" is missing."
|
msgid "Configuration option \"{name}\" is missing."
|
||||||
msgstr "A opção de configuração \"{name}\" está ausente."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/customersso/oidc.py:69 pretix/base/customersso/oidc.py:74
|
#: pretix/base/customersso/oidc.py:69 pretix/base/customersso/oidc.py:74
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Unable to retrieve configuration from \"{url}\". Error message: \"{error}\"."
|
"Unable to retrieve configuration from \"{url}\". Error message: \"{error}\"."
|
||||||
msgstr ""
|
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:80 pretix/base/customersso/oidc.py:85
|
||||||
#: pretix/base/customersso/oidc.py:90 pretix/base/customersso/oidc.py:95
|
#: pretix/base/customersso/oidc.py:90 pretix/base/customersso/oidc.py:95
|
||||||
#: pretix/base/customersso/oidc.py:100 pretix/base/customersso/oidc.py:105
|
#: pretix/base/customersso/oidc.py:100 pretix/base/customersso/oidc.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Incompatible SSO provider: \"{error}\"."
|
msgid "Incompatible SSO provider: \"{error}\"."
|
||||||
msgstr "Provedor SSO incompatível: \"{error}\"."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/customersso/oidc.py:111
|
#: pretix/base/customersso/oidc.py:111
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "You are not requesting \"{scope}\"."
|
msgid "You are not requesting \"{scope}\"."
|
||||||
msgstr "Você não está solicitando \"{scope}\"."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/customersso/oidc.py:117
|
#: pretix/base/customersso/oidc.py:117
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
@@ -751,8 +755,6 @@ msgid ""
|
|||||||
"You are requesting scope \"{scope}\" but provider only supports these: "
|
"You are requesting scope \"{scope}\" but provider only supports these: "
|
||||||
"{scopes}."
|
"{scopes}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Você está solicitando o escopo \"{scope}\", mas o provedor só oferece "
|
|
||||||
"suporte a estes: {scopes}."
|
|
||||||
|
|
||||||
#: pretix/base/customersso/oidc.py:127
|
#: pretix/base/customersso/oidc.py:127
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
@@ -760,8 +762,6 @@ msgid ""
|
|||||||
"You are requesting field \"{field}\" but provider only supports these: "
|
"You are requesting field \"{field}\" but provider only supports these: "
|
||||||
"{fields}."
|
"{fields}."
|
||||||
msgstr ""
|
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:219 pretix/base/customersso/oidc.py:226
|
||||||
#: pretix/base/customersso/oidc.py:245 pretix/base/customersso/oidc.py:262
|
#: pretix/base/customersso/oidc.py:245 pretix/base/customersso/oidc.py:262
|
||||||
@@ -770,15 +770,13 @@ msgstr ""
|
|||||||
#: pretix/presale/views/customer.py:866
|
#: pretix/presale/views/customer.py:866
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Login was not successful. Error message: \"{error}\"."
|
msgid "Login was not successful. Error message: \"{error}\"."
|
||||||
msgstr "O login não foi bem-sucedido. Mensagem de erro: \"{error}\"."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/customersso/oidc.py:252
|
#: pretix/base/customersso/oidc.py:252
|
||||||
msgid ""
|
msgid ""
|
||||||
"The email address on this account is not yet verified. Please first confirm "
|
"The email address on this account is not yet verified. Please first confirm "
|
||||||
"the email address in your customer account."
|
"the email address in your customer account."
|
||||||
msgstr ""
|
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/email.py:203 pretix/base/exporters/items.py:157
|
||||||
#: pretix/base/exporters/items.py:205 pretix/control/views/main.py:322
|
#: pretix/base/exporters/items.py:205 pretix/control/views/main.py:322
|
||||||
@@ -832,17 +830,17 @@ msgstr "Respostas para perguntas sobre o upload de arquivos"
|
|||||||
#: pretix/base/exporters/orderlist.py:1241
|
#: pretix/base/exporters/orderlist.py:1241
|
||||||
#: pretix/plugins/reports/exporters.py:478
|
#: pretix/plugins/reports/exporters.py:478
|
||||||
#: pretix/plugins/reports/exporters.py:651
|
#: pretix/plugins/reports/exporters.py:651
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Order data"
|
||||||
msgctxt "export_category"
|
msgctxt "export_category"
|
||||||
msgid "Order data"
|
msgid "Order data"
|
||||||
msgstr "Data do pedido"
|
msgstr "Dia do pedido"
|
||||||
|
|
||||||
#: pretix/base/exporters/answers.py:56
|
#: pretix/base/exporters/answers.py:56
|
||||||
msgid ""
|
msgid ""
|
||||||
"Download a ZIP file including all files that have been uploaded by your "
|
"Download a ZIP file including all files that have been uploaded by your "
|
||||||
"customers while creating an order."
|
"customers while creating an order."
|
||||||
msgstr ""
|
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/base/exporters/answers.py:66 pretix/base/models/items.py:1767
|
||||||
#: pretix/control/navigation.py:172
|
#: pretix/control/navigation.py:172
|
||||||
@@ -883,7 +881,7 @@ msgstr "Perguntas"
|
|||||||
#: pretix/presale/templates/pretixpresale/event/fragment_change_form.html:20
|
#: pretix/presale/templates/pretixpresale/event/fragment_change_form.html:20
|
||||||
msgctxt "subevent"
|
msgctxt "subevent"
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "Data"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/answers.py:79 pretix/base/exporters/answers.py:88
|
#: pretix/base/exporters/answers.py:79 pretix/base/exporters/answers.py:88
|
||||||
#: pretix/control/forms/checkin.py:83 pretix/control/forms/event.py:1611
|
#: pretix/control/forms/checkin.py:83 pretix/control/forms/event.py:1611
|
||||||
@@ -901,22 +899,22 @@ msgstr "Data"
|
|||||||
#: pretix/plugins/sendmail/forms.py:351
|
#: pretix/plugins/sendmail/forms.py:351
|
||||||
msgctxt "subevent"
|
msgctxt "subevent"
|
||||||
msgid "All dates"
|
msgid "All dates"
|
||||||
msgstr "Todas as datas"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/customers.py:49 pretix/control/navigation.py:606
|
#: pretix/base/exporters/customers.py:49 pretix/control/navigation.py:606
|
||||||
#: pretix/control/templates/pretixcontrol/organizers/edit.html:132
|
#: pretix/control/templates/pretixcontrol/organizers/edit.html:132
|
||||||
msgid "Customer accounts"
|
msgid "Customer accounts"
|
||||||
msgstr "Contas de clientes"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/customers.py:51
|
#: pretix/base/exporters/customers.py:51
|
||||||
|
#, fuzzy
|
||||||
msgctxt "export_category"
|
msgctxt "export_category"
|
||||||
msgid "Customer accounts"
|
msgid "Customer accounts"
|
||||||
msgstr "Contas de clientes"
|
msgstr "País"
|
||||||
|
|
||||||
#: pretix/base/exporters/customers.py:52
|
#: pretix/base/exporters/customers.py:52
|
||||||
msgid "Download a spreadsheet of all currently registered customer accounts."
|
msgid "Download a spreadsheet of all currently registered customer accounts."
|
||||||
msgstr ""
|
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/base/exporters/customers.py:64 pretix/base/models/customers.py:82
|
||||||
#: pretix/control/templates/pretixcontrol/organizers/customer.html:29
|
#: pretix/control/templates/pretixcontrol/organizers/customer.html:29
|
||||||
@@ -924,19 +922,20 @@ msgstr ""
|
|||||||
#: pretix/presale/templates/pretixpresale/event/checkout_customer.html:36
|
#: pretix/presale/templates/pretixpresale/event/checkout_customer.html:36
|
||||||
#: pretix/presale/templates/pretixpresale/organizers/customer_base.html:37
|
#: pretix/presale/templates/pretixpresale/organizers/customer_base.html:37
|
||||||
msgid "Customer ID"
|
msgid "Customer ID"
|
||||||
msgstr "ID do cliente"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/customers.py:65
|
#: pretix/base/exporters/customers.py:65
|
||||||
#: pretix/control/templates/pretixcontrol/organizers/customer.html:32
|
#: pretix/control/templates/pretixcontrol/organizers/customer.html:32
|
||||||
|
#, fuzzy
|
||||||
msgid "SSO provider"
|
msgid "SSO provider"
|
||||||
msgstr "Provedor de SSO"
|
msgstr "Provedor de pagamento"
|
||||||
|
|
||||||
#: pretix/base/exporters/customers.py:66 pretix/base/models/customers.py:108
|
#: 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/customer.html:36
|
||||||
#: pretix/control/templates/pretixcontrol/organizers/customers.html:65
|
#: pretix/control/templates/pretixcontrol/organizers/customers.html:65
|
||||||
#: pretix/control/templates/pretixcontrol/users/form.html:49
|
#: pretix/control/templates/pretixcontrol/users/form.html:49
|
||||||
msgid "External identifier"
|
msgid "External identifier"
|
||||||
msgstr "Identificador externo"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/customers.py:68 pretix/base/exporters/orderlist.py:262
|
#: pretix/base/exporters/customers.py:68 pretix/base/exporters/orderlist.py:262
|
||||||
#: pretix/base/exporters/orderlist.py:445
|
#: pretix/base/exporters/orderlist.py:445
|
||||||
@@ -961,7 +960,7 @@ msgstr "Número de telefone"
|
|||||||
#: pretix/base/settings.py:3640 pretix/base/settings.py:3652
|
#: pretix/base/settings.py:3640 pretix/base/settings.py:3652
|
||||||
#: pretix/control/templates/pretixcontrol/users/index.html:47
|
#: pretix/control/templates/pretixcontrol/users/index.html:47
|
||||||
msgid "Full name"
|
msgid "Full name"
|
||||||
msgstr "Nome Completo"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/customers.py:74 pretix/base/exporters/invoices.py:206
|
#: 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:214 pretix/base/exporters/invoices.py:332
|
||||||
@@ -1009,21 +1008,21 @@ msgstr "Nome"
|
|||||||
|
|
||||||
#: pretix/base/exporters/customers.py:77 pretix/base/models/customers.py:99
|
#: pretix/base/exporters/customers.py:77 pretix/base/models/customers.py:99
|
||||||
msgid "Account active"
|
msgid "Account active"
|
||||||
msgstr "Conta ativa"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/customers.py:78 pretix/base/models/customers.py:100
|
#: pretix/base/exporters/customers.py:78 pretix/base/models/customers.py:100
|
||||||
msgid "Verified email address"
|
msgid "Verified email address"
|
||||||
msgstr "Endereço de e-mail verificado"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/customers.py:79 pretix/base/models/customers.py:101
|
#: pretix/base/exporters/customers.py:79 pretix/base/models/customers.py:101
|
||||||
#: pretix/control/templates/pretixcontrol/organizers/customer.html:68
|
#: pretix/control/templates/pretixcontrol/organizers/customer.html:68
|
||||||
msgid "Last login"
|
msgid "Last login"
|
||||||
msgstr "Último login"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/customers.py:80 pretix/base/models/customers.py:102
|
#: pretix/base/exporters/customers.py:80 pretix/base/models/customers.py:102
|
||||||
#: pretix/control/templates/pretixcontrol/organizers/customer.html:66
|
#: pretix/control/templates/pretixcontrol/organizers/customer.html:66
|
||||||
msgid "Registration date"
|
msgid "Registration date"
|
||||||
msgstr "Data de inscrição"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/customers.py:81 pretix/base/exporters/invoices.py:205
|
#: pretix/base/exporters/customers.py:81 pretix/base/exporters/invoices.py:205
|
||||||
#: pretix/base/exporters/waitinglist.py:120 pretix/base/models/auth.py:258
|
#: pretix/base/exporters/waitinglist.py:120 pretix/base/models/auth.py:258
|
||||||
@@ -1039,7 +1038,7 @@ msgstr "Idioma"
|
|||||||
#: pretix/control/templates/pretixcontrol/organizers/customer.html:72
|
#: pretix/control/templates/pretixcontrol/organizers/customer.html:72
|
||||||
#: pretix/control/templates/pretixcontrol/organizers/reusable_medium.html:68
|
#: pretix/control/templates/pretixcontrol/organizers/reusable_medium.html:68
|
||||||
msgid "Notes"
|
msgid "Notes"
|
||||||
msgstr "Notas"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/customers.py:100
|
#: pretix/base/exporters/customers.py:100
|
||||||
#: pretix/base/exporters/customers.py:101 pretix/base/exporters/events.py:83
|
#: pretix/base/exporters/customers.py:101 pretix/base/exporters/events.py:83
|
||||||
@@ -1116,8 +1115,6 @@ msgid ""
|
|||||||
"Download invoices in a format that can be used by the dekodi NREI conversion "
|
"Download invoices in a format that can be used by the dekodi NREI conversion "
|
||||||
"software."
|
"software."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Baixe faturas em um formato que possa ser usado pelo software de conversão "
|
|
||||||
"de NREI dekodi."
|
|
||||||
|
|
||||||
#: pretix/base/exporters/dekodi.py:105
|
#: pretix/base/exporters/dekodi.py:105
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
@@ -1135,7 +1132,7 @@ msgstr "Ingresso do evento {event}-{code}"
|
|||||||
#: pretix/plugins/reports/exporters.py:698
|
#: pretix/plugins/reports/exporters.py:698
|
||||||
#: pretix/plugins/ticketoutputpdf/exporters.py:85
|
#: pretix/plugins/ticketoutputpdf/exporters.py:85
|
||||||
msgid "Date range"
|
msgid "Date range"
|
||||||
msgstr "Intervalo de datas"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/dekodi.py:237 pretix/base/exporters/invoices.py:77
|
#: pretix/base/exporters/dekodi.py:237 pretix/base/exporters/invoices.py:77
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
@@ -1150,21 +1147,21 @@ msgstr ""
|
|||||||
"fatura nem sempre corresponde à data do pedido ou do pagamento."
|
"fatura nem sempre corresponde à data do pedido ou do pagamento."
|
||||||
|
|
||||||
#: pretix/base/exporters/events.py:47
|
#: pretix/base/exporters/events.py:47
|
||||||
|
#, fuzzy
|
||||||
msgid "Event data"
|
msgid "Event data"
|
||||||
msgstr "Dados do evento"
|
msgstr "Data final do evento"
|
||||||
|
|
||||||
#: pretix/base/exporters/events.py:48
|
#: pretix/base/exporters/events.py:48
|
||||||
|
#, fuzzy
|
||||||
msgctxt "export_category"
|
msgctxt "export_category"
|
||||||
msgid "Event data"
|
msgid "Event data"
|
||||||
msgstr "Dados do evento"
|
msgstr "Data final do evento"
|
||||||
|
|
||||||
#: pretix/base/exporters/events.py:49
|
#: pretix/base/exporters/events.py:49
|
||||||
msgid ""
|
msgid ""
|
||||||
"Download a spreadsheet with information on all events in this organizer "
|
"Download a spreadsheet with information on all events in this organizer "
|
||||||
"account."
|
"account."
|
||||||
msgstr ""
|
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/events.py:57 pretix/base/exporters/orderlist.py:261
|
||||||
#: pretix/base/exporters/orderlist.py:441
|
#: pretix/base/exporters/orderlist.py:441
|
||||||
@@ -1176,17 +1173,17 @@ msgstr ""
|
|||||||
#: pretix/control/templates/pretixcontrol/events/index.html:68
|
#: pretix/control/templates/pretixcontrol/events/index.html:68
|
||||||
#: pretix/control/templates/pretixcontrol/organizers/detail.html:64
|
#: pretix/control/templates/pretixcontrol/organizers/detail.html:64
|
||||||
msgid "Event name"
|
msgid "Event name"
|
||||||
msgstr "Nome do evento"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/events.py:58 pretix/base/models/event.py:588
|
#: pretix/base/exporters/events.py:58 pretix/base/models/event.py:588
|
||||||
#: pretix/base/models/organizer.py:91
|
#: pretix/base/models/organizer.py:91
|
||||||
#: pretix/control/templates/pretixcontrol/organizers/index.html:47
|
#: pretix/control/templates/pretixcontrol/organizers/index.html:47
|
||||||
msgid "Short form"
|
msgid "Short form"
|
||||||
msgstr "Forma abreviada"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/events.py:59 pretix/base/models/event.py:590
|
#: pretix/base/exporters/events.py:59 pretix/base/models/event.py:590
|
||||||
msgid "Shop is live"
|
msgid "Shop is live"
|
||||||
msgstr "A loja está no ar"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/events.py:60 pretix/base/models/event.py:592
|
#: pretix/base/exporters/events.py:60 pretix/base/models/event.py:592
|
||||||
msgid "Event currency"
|
msgid "Event currency"
|
||||||
@@ -1195,59 +1192,59 @@ msgstr "Moeda do evento"
|
|||||||
#: pretix/base/exporters/events.py:61 pretix/base/models/auth.py:261
|
#: pretix/base/exporters/events.py:61 pretix/base/models/auth.py:261
|
||||||
#: pretix/base/models/exports.py:133 pretix/control/forms/exports.py:93
|
#: pretix/base/models/exports.py:133 pretix/control/forms/exports.py:93
|
||||||
msgid "Timezone"
|
msgid "Timezone"
|
||||||
msgstr "Fuso horário"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/events.py:62 pretix/base/models/event.py:595
|
#: 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/models/event.py:1489 pretix/base/settings.py:3263
|
||||||
#: pretix/base/settings.py:3273 pretix/control/forms/subevents.py:480
|
#: pretix/base/settings.py:3273 pretix/control/forms/subevents.py:480
|
||||||
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:268
|
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:268
|
||||||
msgid "Event start time"
|
msgid "Event start time"
|
||||||
msgstr "Hora de início do evento"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/events.py:63 pretix/base/models/event.py:597
|
#: pretix/base/exporters/events.py:63 pretix/base/models/event.py:597
|
||||||
#: pretix/base/models/event.py:1491 pretix/base/pdf.py:286
|
#: pretix/base/models/event.py:1491 pretix/base/pdf.py:286
|
||||||
#: pretix/control/forms/subevents.py:485
|
#: pretix/control/forms/subevents.py:485
|
||||||
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:270
|
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:270
|
||||||
msgid "Event end time"
|
msgid "Event end time"
|
||||||
msgstr "Horário de término do evento"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/events.py:64 pretix/base/models/event.py:599
|
#: 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:1493 pretix/control/forms/subevents.py:490
|
||||||
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:274
|
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:274
|
||||||
msgid "Admission time"
|
msgid "Admission time"
|
||||||
msgstr "Horário de entrada"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/events.py:65 pretix/base/models/event.py:611
|
#: 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:1502 pretix/control/forms/subevents.py:93
|
||||||
msgid "Start of presale"
|
msgid "Start of presale"
|
||||||
msgstr "Início da pré-venda"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/events.py:66 pretix/base/models/event.py:605
|
#: 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:1496 pretix/control/forms/subevents.py:99
|
||||||
msgid "End of presale"
|
msgid "End of presale"
|
||||||
msgstr "Fim da pré-venda"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/events.py:67 pretix/base/exporters/invoices.py:351
|
#: 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:1508
|
||||||
msgid "Location"
|
msgid "Location"
|
||||||
msgstr "Localização"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/events.py:68 pretix/base/models/event.py:625
|
#: pretix/base/exporters/events.py:68 pretix/base/models/event.py:625
|
||||||
#: pretix/base/models/event.py:1511
|
#: pretix/base/models/event.py:1511
|
||||||
msgid "Latitude"
|
msgid "Latitude"
|
||||||
msgstr "Latitude"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/events.py:69 pretix/base/models/event.py:633
|
#: pretix/base/exporters/events.py:69 pretix/base/models/event.py:633
|
||||||
#: pretix/base/models/event.py:1519
|
#: pretix/base/models/event.py:1519
|
||||||
msgid "Longitude"
|
msgid "Longitude"
|
||||||
msgstr "Longitude"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/events.py:70 pretix/base/models/event.py:645
|
#: pretix/base/exporters/events.py:70 pretix/base/models/event.py:645
|
||||||
#: pretix/base/models/event.py:1534
|
#: pretix/base/models/event.py:1534
|
||||||
#: pretix/control/templates/pretixcontrol/event/index.html:128
|
#: pretix/control/templates/pretixcontrol/event/index.html:128
|
||||||
#: pretix/control/templates/pretixcontrol/order/index.html:991
|
#: pretix/control/templates/pretixcontrol/order/index.html:991
|
||||||
msgid "Internal comment"
|
msgid "Internal comment"
|
||||||
msgstr "Comentário interno"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/invoices.py:82 pretix/base/models/orders.py:1753
|
#: pretix/base/exporters/invoices.py:82 pretix/base/models/orders.py:1753
|
||||||
#: pretix/base/models/orders.py:2162 pretix/control/forms/filter.py:204
|
#: pretix/base/models/orders.py:2162 pretix/control/forms/filter.py:204
|
||||||
@@ -1287,7 +1284,7 @@ msgstr "Todas faturas"
|
|||||||
|
|
||||||
#: pretix/base/exporters/invoices.py:127
|
#: pretix/base/exporters/invoices.py:127
|
||||||
msgid "Download all invoices created by the system as a ZIP file of PDF files."
|
msgid "Download all invoices created by the system as a ZIP file of PDF files."
|
||||||
msgstr "Baixe todas as faturas criadas pelo sistema como um arquivo ZIP ou PDF."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/base/exporters/invoices.py:178
|
#: pretix/base/exporters/invoices.py:178
|
||||||
msgid "Invoice data"
|
msgid "Invoice data"
|
||||||
@@ -1299,9 +1296,6 @@ msgid ""
|
|||||||
"The spreadsheet includes two sheets, one with a line for every invoice, and "
|
"The spreadsheet includes two sheets, one with a line for every invoice, and "
|
||||||
"one with a line for every position of every invoice."
|
"one with a line for every position of every invoice."
|
||||||
msgstr ""
|
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/base/exporters/invoices.py:191 pretix/base/shredder.py:576
|
||||||
#: pretix/control/templates/pretixcontrol/order/index.html:268
|
#: pretix/control/templates/pretixcontrol/order/index.html:268
|
||||||
@@ -1361,7 +1355,7 @@ msgstr "Data"
|
|||||||
#: pretix/plugins/reports/exporters.py:884
|
#: pretix/plugins/reports/exporters.py:884
|
||||||
#: pretix/plugins/ticketoutputpdf/exporters.py:96
|
#: pretix/plugins/ticketoutputpdf/exporters.py:96
|
||||||
msgid "Order code"
|
msgid "Order code"
|
||||||
msgstr "Código do pedido"
|
msgstr "Código de pedido"
|
||||||
|
|
||||||
#: pretix/base/exporters/invoices.py:202 pretix/base/exporters/invoices.py:329
|
#: pretix/base/exporters/invoices.py:202 pretix/base/exporters/invoices.py:329
|
||||||
#: pretix/base/forms/auth.py:160 pretix/base/modelimport_orders.py:59
|
#: pretix/base/forms/auth.py:160 pretix/base/modelimport_orders.py:59
|
||||||
@@ -26324,7 +26318,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/transaction_list.html:80
|
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/transaction_list.html:80
|
||||||
msgid "Comment:"
|
msgid "Comment:"
|
||||||
msgstr "Comentário:"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/transaction_list.html:98
|
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/transaction_list.html:98
|
||||||
msgid "No order code detected"
|
msgid "No order code detected"
|
||||||
@@ -26597,7 +26591,7 @@ msgstr ""
|
|||||||
#: pretix/plugins/paypal2/payment.py:1096
|
#: pretix/plugins/paypal2/payment.py:1096
|
||||||
#: pretix/plugins/paypal2/payment.py:1097 pretix/plugins/stripe/payment.py:1816
|
#: pretix/plugins/paypal2/payment.py:1097 pretix/plugins/stripe/payment.py:1816
|
||||||
msgid "PayPal"
|
msgid "PayPal"
|
||||||
msgstr "PayPal"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal/apps.py:53
|
#: pretix/plugins/paypal/apps.py:53
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -28081,7 +28075,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: pretix/plugins/stripe/payment.py:342 pretix/plugins/stripe/payment.py:1527
|
#: pretix/plugins/stripe/payment.py:342 pretix/plugins/stripe/payment.py:1527
|
||||||
msgid "iDEAL"
|
msgid "iDEAL"
|
||||||
msgstr "iDEAL"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/stripe/payment.py:344 pretix/plugins/stripe/payment.py:352
|
#: pretix/plugins/stripe/payment.py:344 pretix/plugins/stripe/payment.py:352
|
||||||
#: pretix/plugins/stripe/payment.py:360 pretix/plugins/stripe/payment.py:395
|
#: pretix/plugins/stripe/payment.py:360 pretix/plugins/stripe/payment.py:395
|
||||||
@@ -28101,11 +28095,11 @@ msgstr ""
|
|||||||
|
|
||||||
#: pretix/plugins/stripe/payment.py:358 pretix/plugins/stripe/payment.py:1564
|
#: pretix/plugins/stripe/payment.py:358 pretix/plugins/stripe/payment.py:1564
|
||||||
msgid "Bancontact"
|
msgid "Bancontact"
|
||||||
msgstr "Contato bancário"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/stripe/payment.py:366
|
#: pretix/plugins/stripe/payment.py:366
|
||||||
msgid "SEPA Direct Debit"
|
msgid "SEPA Direct Debit"
|
||||||
msgstr "Débito Direto SEPA"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/stripe/payment.py:369
|
#: pretix/plugins/stripe/payment.py:369
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -28141,7 +28135,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: pretix/plugins/stripe/payment.py:409 pretix/plugins/stripe/payment.py:1730
|
#: pretix/plugins/stripe/payment.py:409 pretix/plugins/stripe/payment.py:1730
|
||||||
msgid "Przelewy24"
|
msgid "Przelewy24"
|
||||||
msgstr "Przelewy24"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/stripe/payment.py:417 pretix/plugins/stripe/payment.py:1769
|
#: pretix/plugins/stripe/payment.py:417 pretix/plugins/stripe/payment.py:1769
|
||||||
msgid "WeChat Pay"
|
msgid "WeChat Pay"
|
||||||
@@ -28290,7 +28284,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: pretix/plugins/stripe/payment.py:1480
|
#: pretix/plugins/stripe/payment.py:1480
|
||||||
msgid "giropay"
|
msgid "giropay"
|
||||||
msgstr "giropay"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/stripe/payment.py:1483
|
#: pretix/plugins/stripe/payment.py:1483
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -31723,17 +31717,14 @@ msgid ""
|
|||||||
"while we are processing your current payment. Please check back after your "
|
"while we are processing your current payment. Please check back after your "
|
||||||
"current payment has been accepted."
|
"current payment has been accepted."
|
||||||
msgstr ""
|
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
|
#: pretix/presale/views/order.py:1662 pretix/presale/views/order.py:1693
|
||||||
msgid "You cannot change this order."
|
msgid "You cannot change this order."
|
||||||
msgstr "Você não pode alterar este pedido."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/presale/views/user.py:61
|
#: pretix/presale/views/user.py:61
|
||||||
msgid "We had difficulties processing your input."
|
msgid "We had difficulties processing your input."
|
||||||
msgstr "Tivemos dificuldades em processar sua entrada."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/presale/views/user.py:70
|
#: pretix/presale/views/user.py:70
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
@@ -31743,43 +31734,32 @@ msgid ""
|
|||||||
"{number} hours. If the email did not arrive, please check your spam folder "
|
"{number} hours. If the email did not arrive, please check your spam folder "
|
||||||
"and also double check that you used the correct email address."
|
"and also double check that you used the correct email address."
|
||||||
msgstr ""
|
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
|
#: pretix/presale/views/user.py:91
|
||||||
msgid "We have trouble sending emails right now, please check back later."
|
msgid "We have trouble sending emails right now, please check back later."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Estamos com problemas para enviar e-mails neste momento. Volte mais tarde."
|
|
||||||
|
|
||||||
#: pretix/presale/views/user.py:94
|
#: pretix/presale/views/user.py:94
|
||||||
msgid ""
|
msgid ""
|
||||||
"If there were any orders by this user, they will receive an email with their "
|
"If there were any orders by this user, they will receive an email with their "
|
||||||
"order codes."
|
"order codes."
|
||||||
msgstr ""
|
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
|
#: pretix/presale/views/waiting.py:127
|
||||||
msgid ""
|
msgid ""
|
||||||
"No ticket types are available for the waiting list, have a look at the "
|
"No ticket types are available for the waiting list, have a look at the "
|
||||||
"ticket shop instead."
|
"ticket shop instead."
|
||||||
msgstr ""
|
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
|
#: pretix/presale/views/waiting.py:137 pretix/presale/views/waiting.py:161
|
||||||
msgid "Waiting lists are disabled for this event."
|
msgid "Waiting lists are disabled for this event."
|
||||||
msgstr "As listas de espera estão desativadas para este evento."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/presale/views/waiting.py:173
|
#: pretix/presale/views/waiting.py:173
|
||||||
msgid ""
|
msgid ""
|
||||||
"You cannot add yourself to the waiting list as this product is currently "
|
"You cannot add yourself to the waiting list as this product is currently "
|
||||||
"available."
|
"available."
|
||||||
msgstr ""
|
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
|
#: pretix/presale/views/waiting.py:180
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
@@ -31787,40 +31767,35 @@ msgid ""
|
|||||||
"We've added you to the waiting list. We will send an email to {email} as "
|
"We've added you to the waiting list. We will send an email to {email} as "
|
||||||
"soon as this product gets available again."
|
"soon as this product gets available again."
|
||||||
msgstr ""
|
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
|
#: pretix/presale/views/waiting.py:208
|
||||||
msgid "We could not find you on our waiting list."
|
msgid "We could not find you on our waiting list."
|
||||||
msgstr "Não conseguimos encontrá-lo em nossa lista de espera."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/presale/views/waiting.py:212
|
#: pretix/presale/views/waiting.py:212
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your waiting list spot is no longer valid or already used. There's nothing "
|
"Your waiting list spot is no longer valid or already used. There's nothing "
|
||||||
"more to do here."
|
"more to do here."
|
||||||
msgstr ""
|
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
|
#: pretix/presale/views/waiting.py:222
|
||||||
msgid ""
|
msgid ""
|
||||||
"Thank you very much! We will assign your spot on the waiting list to someone "
|
"Thank you very much! We will assign your spot on the waiting list to someone "
|
||||||
"else."
|
"else."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Muito obrigado! Vamos atribuir a sua vaga na lista de espera a outra pessoa."
|
|
||||||
|
|
||||||
#: pretix/presale/views/widget.py:397
|
#: pretix/presale/views/widget.py:397
|
||||||
msgid "This ticket shop is currently disabled."
|
msgid "This ticket shop is currently disabled."
|
||||||
msgstr "Esta bilheteria está desativada no momento."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/presale/views/widget.py:411
|
#: pretix/presale/views/widget.py:411
|
||||||
msgid "The selected date does not exist in this event series."
|
msgid "The selected date does not exist in this event series."
|
||||||
msgstr "A data selecionada não existe nesta série de eventos."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/presale/views/widget.py:474
|
#: pretix/presale/views/widget.py:474
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "from %(start_date)s"
|
msgid "from %(start_date)s"
|
||||||
msgstr "a partir de %(start_date)s"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/settings.py:789
|
#: pretix/settings.py:789
|
||||||
msgid "User profile only"
|
msgid "User profile only"
|
||||||
@@ -31828,15 +31803,15 @@ msgstr "Somente perfil de usuário"
|
|||||||
|
|
||||||
#: pretix/settings.py:790
|
#: pretix/settings.py:790
|
||||||
msgid "Read access"
|
msgid "Read access"
|
||||||
msgstr "Acesso de leitura"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/settings.py:791
|
#: pretix/settings.py:791
|
||||||
msgid "Write access"
|
msgid "Write access"
|
||||||
msgstr "Acesso de escrita"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/settings.py:802
|
#: pretix/settings.py:802
|
||||||
msgid "Kosovo"
|
msgid "Kosovo"
|
||||||
msgstr "Kosovo"
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#~| msgid "Email"
|
#~| msgid "Email"
|
||||||
|
|||||||
@@ -3,80 +3,79 @@
|
|||||||
# This file is distributed under the same license as the PACKAGE package.
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
#
|
#
|
||||||
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-05-30 10:36+0000\n"
|
"POT-Creation-Date: 2025-05-30 10:36+0000\n"
|
||||||
"PO-Revision-Date: 2025-06-05 04:00+0000\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: Francisco Rosa <francisco@comm7.net>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: Portuguese <https://translate.pretix.eu/projects/pretix/"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
"pretix-js/pt/>\n"
|
"Language: \n"
|
||||||
"Language: pt\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\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:56
|
||||||
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
|
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
|
||||||
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:68
|
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:68
|
||||||
msgid "Marked as paid"
|
msgid "Marked as paid"
|
||||||
msgstr "Marcado como pago"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:76
|
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:76
|
||||||
msgid "Comment:"
|
msgid "Comment:"
|
||||||
msgstr "Comentário:"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:34
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:34
|
||||||
msgid "PayPal"
|
msgid "PayPal"
|
||||||
msgstr "PayPal"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:35
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:35
|
||||||
msgid "Venmo"
|
msgid "Venmo"
|
||||||
msgstr "Venmo"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:36
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:36
|
||||||
#: pretix/static/pretixpresale/js/walletdetection.js:38
|
#: pretix/static/pretixpresale/js/walletdetection.js:38
|
||||||
msgid "Apple Pay"
|
msgid "Apple Pay"
|
||||||
msgstr "Apple Pay"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:37
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:37
|
||||||
msgid "Itaú"
|
msgid "Itaú"
|
||||||
msgstr "Itaú"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:38
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:38
|
||||||
msgid "PayPal Credit"
|
msgid "PayPal Credit"
|
||||||
msgstr "Crédito PayPal"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:39
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:39
|
||||||
msgid "Credit Card"
|
msgid "Credit Card"
|
||||||
msgstr "Cartão de crédito"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:40
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:40
|
||||||
msgid "PayPal Pay Later"
|
msgid "PayPal Pay Later"
|
||||||
msgstr "PayPal Pagar Depois"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:41
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:41
|
||||||
msgid "iDEAL"
|
msgid "iDEAL"
|
||||||
msgstr "iDEAL"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:42
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:42
|
||||||
msgid "SEPA Direct Debit"
|
msgid "SEPA Direct Debit"
|
||||||
msgstr "Débito Direto SEPA"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:43
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:43
|
||||||
msgid "Bancontact"
|
msgid "Bancontact"
|
||||||
msgstr "Contato bancário"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:44
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:44
|
||||||
msgid "giropay"
|
msgid "giropay"
|
||||||
msgstr "giropay"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:45
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:45
|
||||||
msgid "SOFORT"
|
msgid "SOFORT"
|
||||||
msgstr "SOFORT"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:46
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:46
|
||||||
msgid "eps"
|
msgid "eps"
|
||||||
@@ -84,15 +83,15 @@ msgstr ""
|
|||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:47
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:47
|
||||||
msgid "MyBank"
|
msgid "MyBank"
|
||||||
msgstr "MyBank"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:48
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:48
|
||||||
msgid "Przelewy24"
|
msgid "Przelewy24"
|
||||||
msgstr "Przelewy24"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:49
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:49
|
||||||
msgid "Verkkopankki"
|
msgid "Verkkopankki"
|
||||||
msgstr "Verkkopankki"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:50
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:50
|
||||||
msgid "PayU"
|
msgid "PayU"
|
||||||
@@ -128,7 +127,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:58
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:58
|
||||||
msgid "Mercado Pago"
|
msgid "Mercado Pago"
|
||||||
msgstr "Mercado Pago"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
|
||||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:50
|
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:50
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-05-30 10:35+0000\n"
|
"POT-Creation-Date: 2025-05-30 10:35+0000\n"
|
||||||
"PO-Revision-Date: 2025-06-04 06:32+0000\n"
|
"PO-Revision-Date: 2025-05-28 08:00+0000\n"
|
||||||
"Last-Translator: Renne Rocha <renne@rocha.dev.br>\n"
|
"Last-Translator: Renne Rocha <renne@rocha.dev.br>\n"
|
||||||
"Language-Team: Portuguese (Brazil) <https://translate.pretix.eu/projects/"
|
"Language-Team: Portuguese (Brazil) <https://translate.pretix.eu/projects/"
|
||||||
"pretix/pretix/pt_BR/>\n"
|
"pretix/pretix/pt_BR/>\n"
|
||||||
@@ -10604,8 +10604,10 @@ msgstr ""
|
|||||||
"você usa os dados coletados em sua loja de ingressos."
|
"você usa os dados coletados em sua loja de ingressos."
|
||||||
|
|
||||||
#: pretix/base/settings.py:2071
|
#: pretix/base/settings.py:2071
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Account information"
|
||||||
msgid "Accessibility information URL"
|
msgid "Accessibility information URL"
|
||||||
msgstr "URL de informação de acessibilidade"
|
msgstr "Informações da conta"
|
||||||
|
|
||||||
#: pretix/base/settings.py:2072
|
#: pretix/base/settings.py:2072
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -8,8 +8,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-05-30 10:36+0000\n"
|
"POT-Creation-Date: 2025-05-30 10:36+0000\n"
|
||||||
"PO-Revision-Date: 2025-06-06 06:09+0000\n"
|
"PO-Revision-Date: 2024-05-30 17:00+0000\n"
|
||||||
"Last-Translator: Michael Dao <garudong89@gmail.com>\n"
|
"Last-Translator: Luan Thien <vanthienluan@gmail.com>\n"
|
||||||
"Language-Team: Vietnamese <https://translate.pretix.eu/projects/pretix/"
|
"Language-Team: Vietnamese <https://translate.pretix.eu/projects/pretix/"
|
||||||
"pretix-js/vi/>\n"
|
"pretix-js/vi/>\n"
|
||||||
"Language: vi\n"
|
"Language: vi\n"
|
||||||
@@ -17,7 +17,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
"X-Generator: Weblate 5.11.4\n"
|
"X-Generator: Weblate 5.5.5\n"
|
||||||
|
|
||||||
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
|
#: 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:62
|
||||||
@@ -35,16 +35,16 @@ msgstr "PayPal"
|
|||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:35
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:35
|
||||||
msgid "Venmo"
|
msgid "Venmo"
|
||||||
msgstr "Nền tảng Venmo"
|
msgstr "Venmo"
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:36
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:36
|
||||||
#: pretix/static/pretixpresale/js/walletdetection.js:38
|
#: pretix/static/pretixpresale/js/walletdetection.js:38
|
||||||
msgid "Apple Pay"
|
msgid "Apple Pay"
|
||||||
msgstr "Nền tảng Apple Pay"
|
msgstr "Apple Pay"
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:37
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:37
|
||||||
msgid "Itaú"
|
msgid "Itaú"
|
||||||
msgstr "Nền tảng Itaú"
|
msgstr "Itaú"
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:38
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:38
|
||||||
msgid "PayPal Credit"
|
msgid "PayPal Credit"
|
||||||
@@ -56,11 +56,11 @@ msgstr "Thẻ tín dụng"
|
|||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:40
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:40
|
||||||
msgid "PayPal Pay Later"
|
msgid "PayPal Pay Later"
|
||||||
msgstr "Nền tảng PayPal Pay Later"
|
msgstr "PayPal Pay Later"
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:41
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:41
|
||||||
msgid "iDEAL"
|
msgid "iDEAL"
|
||||||
msgstr "Nền tảng iDEAL"
|
msgstr "iDEAL"
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:42
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:42
|
||||||
msgid "SEPA Direct Debit"
|
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
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:43
|
||||||
msgid "Bancontact"
|
msgid "Bancontact"
|
||||||
msgstr "Nền tảng Bancontact"
|
msgstr "Bancontact"
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:44
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:44
|
||||||
msgid "giropay"
|
msgid "giropay"
|
||||||
msgstr "Nền tảng giropay"
|
msgstr "giropay"
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:45
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:45
|
||||||
msgid "SOFORT"
|
msgid "SOFORT"
|
||||||
@@ -80,55 +80,55 @@ msgstr "SOFORT"
|
|||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:46
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:46
|
||||||
msgid "eps"
|
msgid "eps"
|
||||||
msgstr "Nền tảng eps"
|
msgstr "eps"
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:47
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:47
|
||||||
msgid "MyBank"
|
msgid "MyBank"
|
||||||
msgstr "Nền tảng MyBank"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:48
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:48
|
||||||
msgid "Przelewy24"
|
msgid "Przelewy24"
|
||||||
msgstr "Nền tảng Przelewy24"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:49
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:49
|
||||||
msgid "Verkkopankki"
|
msgid "Verkkopankki"
|
||||||
msgstr "Nền tảng Verkkopankki"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:50
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:50
|
||||||
msgid "PayU"
|
msgid "PayU"
|
||||||
msgstr "Nền tảng PayU"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:51
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:51
|
||||||
msgid "BLIK"
|
msgid "BLIK"
|
||||||
msgstr "Nền tảng BLIK"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:52
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:52
|
||||||
msgid "Trustly"
|
msgid "Trustly"
|
||||||
msgstr "Nền tảng Trustly"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:53
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:53
|
||||||
msgid "Zimpler"
|
msgid "Zimpler"
|
||||||
msgstr "Nền tảng Zimpler"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:54
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:54
|
||||||
msgid "Maxima"
|
msgid "Maxima"
|
||||||
msgstr "Nền tảng Maxima"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:55
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:55
|
||||||
msgid "OXXO"
|
msgid "OXXO"
|
||||||
msgstr "?? OXXO"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:56
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:56
|
||||||
msgid "Boleto"
|
msgid "Boleto"
|
||||||
msgstr "Nền tảng Boleto"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:57
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:57
|
||||||
msgid "WeChat Pay"
|
msgid "WeChat Pay"
|
||||||
msgstr "Nền tảng WeChat Pay"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:58
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:58
|
||||||
msgid "Mercado Pago"
|
msgid "Mercado Pago"
|
||||||
msgstr "Nền tảng Mercado Pago"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
|
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:167
|
||||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:50
|
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:50
|
||||||
@@ -238,11 +238,11 @@ msgstr "Đã huỷ"
|
|||||||
|
|
||||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:46
|
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:46
|
||||||
msgid "Confirmed"
|
msgid "Confirmed"
|
||||||
msgstr "Đã Xác Nhận"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:47
|
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:47
|
||||||
msgid "Approval pending"
|
msgid "Approval pending"
|
||||||
msgstr "Đang chờ phê duyệt"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:48
|
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:48
|
||||||
msgid "Redeemed"
|
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
|
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:65
|
||||||
msgid "Order canceled"
|
msgid "Order canceled"
|
||||||
msgstr "Đơn hàng đã bị hủy"
|
msgstr "Đã huỷ đơn hàng"
|
||||||
|
|
||||||
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:66
|
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:66
|
||||||
msgid "Ticket code is ambiguous on list"
|
msgid "Ticket code is ambiguous on list"
|
||||||
@@ -348,7 +348,7 @@ msgstr "đóng"
|
|||||||
#: pretix/static/pretixbase/js/addressform.js:59
|
#: pretix/static/pretixbase/js/addressform.js:59
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:513
|
#: pretix/static/pretixpresale/js/ui/main.js:513
|
||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "bắt buộc"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixbase/js/asynctask.js:12
|
#: pretix/static/pretixbase/js/asynctask.js:12
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -411,8 +411,6 @@ msgstr ""
|
|||||||
#: pretix/static/pretixbase/js/asynctask.js:270
|
#: pretix/static/pretixbase/js/asynctask.js:270
|
||||||
msgid "If this takes longer than a few minutes, please contact us."
|
msgid "If this takes longer than a few minutes, please contact us."
|
||||||
msgstr ""
|
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
|
#: pretix/static/pretixbase/js/asynctask.js:325
|
||||||
msgid "Close message"
|
msgid "Close message"
|
||||||
@@ -482,27 +480,27 @@ msgstr "Số mục trước từ khi"
|
|||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:135
|
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:135
|
||||||
msgid "Number of previous entries before"
|
msgid "Number of previous entries before"
|
||||||
msgstr "Số lượt nhập trước đó"
|
msgstr "Số mục trước trước lúc"
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:139
|
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:139
|
||||||
msgid "Number of days with a previous entry"
|
msgid "Number of days with a previous entry"
|
||||||
msgstr "Số ngày có lượt nhập trước đó"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:143
|
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:143
|
||||||
msgid "Number of days with a previous entry since"
|
msgid "Number of days with a previous entry since"
|
||||||
msgstr "Số ngày có lượt nhập trước đó kể từ khi"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:147
|
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:147
|
||||||
msgid "Number of days with a previous entry before"
|
msgid "Number of days with a previous entry before"
|
||||||
msgstr "Số ngày có lượt nhập trước đó trước"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:151
|
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:151
|
||||||
msgid "Minutes since last entry (-1 on first entry)"
|
msgid "Minutes since last entry (-1 on first entry)"
|
||||||
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)"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:155
|
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:155
|
||||||
msgid "Minutes since first entry (-1 on first entry)"
|
msgid "Minutes since first entry (-1 on first entry)"
|
||||||
msgstr "Số phút kể từ lượt nhập đầu tiên (-1 đối với lượt nhập đầu tiên)"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:182
|
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:182
|
||||||
msgid "All of the conditions below (AND)"
|
msgid "All of the conditions below (AND)"
|
||||||
@@ -571,12 +569,16 @@ msgid "Group of objects"
|
|||||||
msgstr "Nhóm các đối tượng"
|
msgstr "Nhóm các đối tượng"
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:908
|
#: pretix/static/pretixcontrol/js/ui/editor.js:908
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Text object"
|
||||||
msgid "Text object (deprecated)"
|
msgid "Text object (deprecated)"
|
||||||
msgstr "Đối tượng văn bản (đã lỗi thời)"
|
msgstr "Văn bản"
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:910
|
#: pretix/static/pretixcontrol/js/ui/editor.js:910
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Text object"
|
||||||
msgid "Text box"
|
msgid "Text box"
|
||||||
msgstr "Văn bản chữ"
|
msgstr "Văn bản"
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/editor.js:912
|
#: pretix/static/pretixcontrol/js/ui/editor.js:912
|
||||||
msgid "Barcode area"
|
msgid "Barcode area"
|
||||||
@@ -624,26 +626,24 @@ msgid "Unknown error."
|
|||||||
msgstr "Lỗi không xác định."
|
msgstr "Lỗi không xác định."
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:292
|
#: 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."
|
msgid "Your color has great contrast and will provide excellent accessibility."
|
||||||
msgstr ""
|
msgstr "Bạn đã chọn màu có độ tương phản tốt và dễ đọc!"
|
||||||
"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
|
#: pretix/static/pretixcontrol/js/ui/main.js:296
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Your color has decent contrast and is probably good-enough to read!"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your color has decent contrast and is sufficient for minimum accessibility "
|
"Your color has decent contrast and is sufficient for minimum accessibility "
|
||||||
"requirements."
|
"requirements."
|
||||||
msgstr ""
|
msgstr "Bạn đã giảm độ tương phản và có lẽ khá tốt để đọc!"
|
||||||
"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
|
#: pretix/static/pretixcontrol/js/ui/main.js:300
|
||||||
msgid ""
|
msgid ""
|
||||||
"Your color has insufficient contrast to white. Accessibility of your site "
|
"Your color has insufficient contrast to white. Accessibility of your site "
|
||||||
"will be impacted."
|
"will be impacted."
|
||||||
msgstr ""
|
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:416
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:436
|
#: pretix/static/pretixcontrol/js/ui/main.js:436
|
||||||
@@ -672,246 +672,246 @@ msgstr "Số trang không hợp lệ."
|
|||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:943
|
#: pretix/static/pretixcontrol/js/ui/main.js:943
|
||||||
msgid "Use a different name internally"
|
msgid "Use a different name internally"
|
||||||
msgstr "Sử dụng tên khác ở bên trong"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:983
|
#: pretix/static/pretixcontrol/js/ui/main.js:983
|
||||||
msgid "Click to close"
|
msgid "Click to close"
|
||||||
msgstr "Nhấn để đóng"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/main.js:1064
|
#: pretix/static/pretixcontrol/js/ui/main.js:1064
|
||||||
msgid "You have unsaved changes!"
|
msgid "You have unsaved changes!"
|
||||||
msgstr "Bạn có những thay đổi chưa được lưu!"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/orderchange.js:25
|
#: pretix/static/pretixcontrol/js/ui/orderchange.js:25
|
||||||
msgid "Calculating default price…"
|
msgid "Calculating default price…"
|
||||||
msgstr "Đang tính giá mặc định…"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/plugins.js:69
|
#: pretix/static/pretixcontrol/js/ui/plugins.js:69
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Search results"
|
||||||
msgid "No results"
|
msgid "No results"
|
||||||
msgstr "Không có kết quả"
|
msgstr "Kết quả tìm kiếm"
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/question.js:42
|
#: pretix/static/pretixcontrol/js/ui/question.js:42
|
||||||
msgid "Others"
|
msgid "Others"
|
||||||
msgstr "Khác"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/question.js:82
|
#: pretix/static/pretixcontrol/js/ui/question.js:82
|
||||||
msgid "Count"
|
msgid "Count"
|
||||||
msgstr "Số lượng"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixcontrol/js/ui/subevent.js:111
|
#: pretix/static/pretixcontrol/js/ui/subevent.js:111
|
||||||
msgid "(one more date)"
|
msgid "(one more date)"
|
||||||
msgid_plural "({num} more dates)"
|
msgid_plural "({num} more dates)"
|
||||||
msgstr[0] "{num} ngày còn lại"
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/cart.js:48
|
#: pretix/static/pretixpresale/js/ui/cart.js:48
|
||||||
msgid ""
|
msgid ""
|
||||||
"The items in your cart are no longer reserved for you. You can still "
|
"The items in your cart are no longer reserved for you. You can still "
|
||||||
"complete your order as long as they’re available."
|
"complete your order as long as they’re available."
|
||||||
msgstr ""
|
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
|
#: pretix/static/pretixpresale/js/ui/cart.js:50
|
||||||
msgid "Cart expired"
|
msgid "Cart expired"
|
||||||
msgstr "Giỏ hàng đã hết hạn"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/cart.js:59
|
#: pretix/static/pretixpresale/js/ui/cart.js:59
|
||||||
#: pretix/static/pretixpresale/js/ui/cart.js:87
|
#: pretix/static/pretixpresale/js/ui/cart.js:87
|
||||||
msgid "Your cart is about to expire."
|
msgid "Your cart is about to expire."
|
||||||
msgstr "Giỏ hàng của bạn sắp hết hạn."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/cart.js:64
|
#: pretix/static/pretixpresale/js/ui/cart.js:64
|
||||||
msgid "The items in your cart are reserved for you for one minute."
|
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."
|
msgid_plural "The items in your cart are reserved for you for {num} minutes."
|
||||||
msgstr[0] "Các mặt hàng trong giỏ của bạn được giữ trong vòng {num} phút."
|
msgstr[0] ""
|
||||||
|
msgstr[1] ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/cart.js:86
|
#: pretix/static/pretixpresale/js/ui/cart.js:86
|
||||||
msgid "Your cart has expired."
|
msgid "Your cart has expired."
|
||||||
msgstr "Giỏ hàng của bạn đã hết hạn."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/cart.js:89
|
#: pretix/static/pretixpresale/js/ui/cart.js:89
|
||||||
msgid ""
|
msgid ""
|
||||||
"The items in your cart are no longer reserved for you. You can still "
|
"The items in your cart are no longer reserved for you. You can still "
|
||||||
"complete your order as long as they're available."
|
"complete your order as long as they're available."
|
||||||
msgstr ""
|
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
|
#: pretix/static/pretixpresale/js/ui/cart.js:90
|
||||||
msgid "Do you want to renew the reservation period?"
|
msgid "Do you want to renew the reservation period?"
|
||||||
msgstr "Bạn có muốn gia hạn thời gian giữ chỗ không?"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/cart.js:93
|
#: pretix/static/pretixpresale/js/ui/cart.js:93
|
||||||
msgid "Renew reservation"
|
msgid "Renew reservation"
|
||||||
msgstr "Gia hạn giữ chỗ"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:194
|
#: pretix/static/pretixpresale/js/ui/main.js:194
|
||||||
msgid "The organizer keeps %(currency)s %(amount)s"
|
msgid "The organizer keeps %(currency)s %(amount)s"
|
||||||
msgstr "Người tổ chức giữ lại %(currency)s %(amount)s"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:202
|
#: pretix/static/pretixpresale/js/ui/main.js:202
|
||||||
msgid "You get %(currency)s %(amount)s back"
|
msgid "You get %(currency)s %(amount)s back"
|
||||||
msgstr "Bạn nhận lại %(currency)s %(amount)s"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:218
|
#: pretix/static/pretixpresale/js/ui/main.js:218
|
||||||
msgid "Please enter the amount the organizer can keep."
|
msgid "Please enter the amount the organizer can keep."
|
||||||
msgstr "Vui lòng nhập số tiền người tổ chức được giữ lại."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/ui/main.js:558
|
#: pretix/static/pretixpresale/js/ui/main.js:558
|
||||||
msgid "Your local time:"
|
msgid "Your local time:"
|
||||||
msgstr "Thời gian địa phương của bạn:"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/walletdetection.js:39
|
#: pretix/static/pretixpresale/js/walletdetection.js:39
|
||||||
msgid "Google Pay"
|
msgid "Google Pay"
|
||||||
msgstr "Nền tảng Google Pay"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:16
|
#: pretix/static/pretixpresale/js/widget/widget.js:16
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:16
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:16
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Quantity"
|
msgid "Quantity"
|
||||||
msgstr "Số lượng"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:17
|
#: pretix/static/pretixpresale/js/widget/widget.js:17
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:17
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:17
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Decrease quantity"
|
msgid "Decrease quantity"
|
||||||
msgstr "Giảm số lượng"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:18
|
#: pretix/static/pretixpresale/js/widget/widget.js:18
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:18
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:18
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Increase quantity"
|
msgid "Increase quantity"
|
||||||
msgstr "Tăng số lượng"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:19
|
#: pretix/static/pretixpresale/js/widget/widget.js:19
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Filter events by"
|
msgid "Filter events by"
|
||||||
msgstr "Lọc sự kiện bởi"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:20
|
#: pretix/static/pretixpresale/js/widget/widget.js:20
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Filter"
|
msgid "Filter"
|
||||||
msgstr "Lọc"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:21
|
#: pretix/static/pretixpresale/js/widget/widget.js:21
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:19
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:19
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Price"
|
msgid "Price"
|
||||||
msgstr "Giá"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:22
|
#: pretix/static/pretixpresale/js/widget/widget.js:22
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:20
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:20
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Original price: %s"
|
msgid "Original price: %s"
|
||||||
msgstr "Giá gốc: %s"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:23
|
#: pretix/static/pretixpresale/js/widget/widget.js:23
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:21
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:21
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "New price: %s"
|
msgid "New price: %s"
|
||||||
msgstr "Giá mới: %s"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:24
|
#: pretix/static/pretixpresale/js/widget/widget.js:24
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:22
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:22
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Select"
|
msgid "Select"
|
||||||
msgstr "Chọn"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:25
|
#: pretix/static/pretixpresale/js/widget/widget.js:25
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:23
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:23
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Select %s"
|
msgid "Select %s"
|
||||||
msgstr "Chọn %s"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:26
|
#: pretix/static/pretixpresale/js/widget/widget.js:26
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:24
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:24
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Select variant %s"
|
msgid "Select variant %s"
|
||||||
msgstr "Chọn biến thể %s"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:27
|
#: pretix/static/pretixpresale/js/widget/widget.js:27
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:25
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:25
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Sold out"
|
msgid "Sold out"
|
||||||
msgstr "Bán hết"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:28
|
#: pretix/static/pretixpresale/js/widget/widget.js:28
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:26
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:26
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Buy"
|
msgid "Buy"
|
||||||
msgstr "Mua"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:29
|
#: pretix/static/pretixpresale/js/widget/widget.js:29
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:27
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:27
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Register"
|
msgid "Register"
|
||||||
msgstr "Đăng ký"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:30
|
#: pretix/static/pretixpresale/js/widget/widget.js:30
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:28
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:28
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Reserved"
|
msgid "Reserved"
|
||||||
msgstr "Đã đặt"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:31
|
#: pretix/static/pretixpresale/js/widget/widget.js:31
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:29
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:29
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "FREE"
|
msgid "FREE"
|
||||||
msgstr "MIỄN PHÍ"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:32
|
#: pretix/static/pretixpresale/js/widget/widget.js:32
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:30
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:30
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "from %(currency)s %(price)s"
|
msgid "from %(currency)s %(price)s"
|
||||||
msgstr "từ %(currency)s %(price)s"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:33
|
#: pretix/static/pretixpresale/js/widget/widget.js:33
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:31
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:31
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Image of %s"
|
msgid "Image of %s"
|
||||||
msgstr "Hình của %s"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:34
|
#: pretix/static/pretixpresale/js/widget/widget.js:34
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:32
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:32
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "incl. %(rate)s% %(taxname)s"
|
msgid "incl. %(rate)s% %(taxname)s"
|
||||||
msgstr "đã bao gồm %(rate)s% %(taxname)s"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:35
|
#: pretix/static/pretixpresale/js/widget/widget.js:35
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:33
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:33
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "plus %(rate)s% %(taxname)s"
|
msgid "plus %(rate)s% %(taxname)s"
|
||||||
msgstr "cộng thêm %(rate)s% %(taxname)s"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:36
|
#: pretix/static/pretixpresale/js/widget/widget.js:36
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:34
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:34
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "incl. taxes"
|
msgid "incl. taxes"
|
||||||
msgstr "đã bao gồm thuế"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:37
|
#: pretix/static/pretixpresale/js/widget/widget.js:37
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:35
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:35
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "plus taxes"
|
msgid "plus taxes"
|
||||||
msgstr "cộng thêm thuế"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:38
|
#: pretix/static/pretixpresale/js/widget/widget.js:38
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:36
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:36
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "currently available: %s"
|
msgid "currently available: %s"
|
||||||
msgstr "hiện có sẵn: %s"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:39
|
#: pretix/static/pretixpresale/js/widget/widget.js:39
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:37
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:37
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Only available with a voucher"
|
msgid "Only available with a voucher"
|
||||||
msgstr "Chỉ áp dụng với phiếu giảm giá"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:40
|
#: pretix/static/pretixpresale/js/widget/widget.js:40
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:43
|
#: pretix/static/pretixpresale/js/widget/widget.js:43
|
||||||
@@ -919,38 +919,38 @@ msgstr "Chỉ áp dụng với phiếu giảm giá"
|
|||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:41
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:41
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Not yet available"
|
msgid "Not yet available"
|
||||||
msgstr "Chưa có sẵn"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:41
|
#: pretix/static/pretixpresale/js/widget/widget.js:41
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:39
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:39
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Not available anymore"
|
msgid "Not available anymore"
|
||||||
msgstr "Không có nữa"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:42
|
#: pretix/static/pretixpresale/js/widget/widget.js:42
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:40
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:40
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Currently not available"
|
msgid "Currently not available"
|
||||||
msgstr "Hiện tại không có sẵn"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:44
|
#: pretix/static/pretixpresale/js/widget/widget.js:44
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:42
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:42
|
||||||
#, javascript-format
|
#, javascript-format
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "minimum amount to order: %s"
|
msgid "minimum amount to order: %s"
|
||||||
msgstr "Số lượng đặt hàng tối thiểu: %s"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:45
|
#: pretix/static/pretixpresale/js/widget/widget.js:45
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:43
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:43
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Close ticket shop"
|
msgid "Close ticket shop"
|
||||||
msgstr "Đóng cửa hàng vé"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:46
|
#: pretix/static/pretixpresale/js/widget/widget.js:46
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:44
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:44
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "The ticket shop could not be loaded."
|
msgid "The ticket shop could not be loaded."
|
||||||
msgstr "Không thể tải cửa hàng vé."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:47
|
#: pretix/static/pretixpresale/js/widget/widget.js:47
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:45
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:45
|
||||||
@@ -959,26 +959,24 @@ msgid ""
|
|||||||
"There are currently a lot of users in this ticket shop. Please open the shop "
|
"There are currently a lot of users in this ticket shop. Please open the shop "
|
||||||
"in a new tab to continue."
|
"in a new tab to continue."
|
||||||
msgstr ""
|
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.js:49
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:47
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:47
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Open ticket shop"
|
msgid "Open ticket shop"
|
||||||
msgstr "Mở cửa hàng vé"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:50
|
#: pretix/static/pretixpresale/js/widget/widget.js:50
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:48
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:48
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Checkout"
|
msgid "Checkout"
|
||||||
msgstr "Thanh toán"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:51
|
#: pretix/static/pretixpresale/js/widget/widget.js:51
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:49
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:49
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "The cart could not be created. Please try again later"
|
msgid "The cart could not be created. Please try again later"
|
||||||
msgstr "Không thể tạo giỏ hàng. Vui lòng thử lại sau"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:52
|
#: pretix/static/pretixpresale/js/widget/widget.js:52
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:50
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:50
|
||||||
@@ -987,14 +985,12 @@ msgid ""
|
|||||||
"We could not create your cart, since there are currently too many users in "
|
"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."
|
"this ticket shop. Please click \"Continue\" to retry in a new tab."
|
||||||
msgstr ""
|
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.js:54
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:52
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:52
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Waiting list"
|
msgid "Waiting list"
|
||||||
msgstr "Danh sách chờ"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:55
|
#: pretix/static/pretixpresale/js/widget/widget.js:55
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:53
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:53
|
||||||
@@ -1003,114 +999,112 @@ msgid ""
|
|||||||
"You currently have an active cart for this event. If you select more "
|
"You currently have an active cart for this event. If you select more "
|
||||||
"products, they will be added to your existing cart."
|
"products, they will be added to your existing cart."
|
||||||
msgstr ""
|
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.js:57
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:55
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:55
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Resume checkout"
|
msgid "Resume checkout"
|
||||||
msgstr "Tiếp tục thanh toán"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:58
|
#: pretix/static/pretixpresale/js/widget/widget.js:58
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:56
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:56
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Redeem a voucher"
|
msgid "Redeem a voucher"
|
||||||
msgstr "Sử dụng phiếu giảm giá"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:59
|
#: pretix/static/pretixpresale/js/widget/widget.js:59
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:57
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:57
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Redeem"
|
msgid "Redeem"
|
||||||
msgstr "Đổi mã"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:60
|
#: pretix/static/pretixpresale/js/widget/widget.js:60
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:58
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:58
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Voucher code"
|
msgid "Voucher code"
|
||||||
msgstr "Mã giảm giá"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:61
|
#: pretix/static/pretixpresale/js/widget/widget.js:61
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:59
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:59
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Đóng"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:62
|
#: pretix/static/pretixpresale/js/widget/widget.js:62
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Close checkout"
|
msgid "Close checkout"
|
||||||
msgstr "Đóng trang thanh toán"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:63
|
#: pretix/static/pretixpresale/js/widget/widget.js:63
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "You cannot cancel this operation. Please wait for loading to finish."
|
msgid "You cannot cancel this operation. Please wait for loading to finish."
|
||||||
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."
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:64
|
#: pretix/static/pretixpresale/js/widget/widget.js:64
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:60
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:60
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Continue"
|
msgid "Continue"
|
||||||
msgstr "Tiếp tục"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:65
|
#: pretix/static/pretixpresale/js/widget/widget.js:65
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:61
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:61
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Show variants"
|
msgid "Show variants"
|
||||||
msgstr "Hiển thị các biến thể"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:66
|
#: pretix/static/pretixpresale/js/widget/widget.js:66
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:62
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:62
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Hide variants"
|
msgid "Hide variants"
|
||||||
msgstr "Ẩn các biến thể"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:67
|
#: pretix/static/pretixpresale/js/widget/widget.js:67
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:63
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:63
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Choose a different event"
|
msgid "Choose a different event"
|
||||||
msgstr "Chọn sự kiện khác"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:68
|
#: pretix/static/pretixpresale/js/widget/widget.js:68
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:64
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:64
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Choose a different date"
|
msgid "Choose a different date"
|
||||||
msgstr "Chọn ngày khác"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:69
|
#: pretix/static/pretixpresale/js/widget/widget.js:69
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:65
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:65
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr "Quay về"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:70
|
#: pretix/static/pretixpresale/js/widget/widget.js:70
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:66
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:66
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Next month"
|
msgid "Next month"
|
||||||
msgstr "Tháng sau"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:71
|
#: pretix/static/pretixpresale/js/widget/widget.js:71
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:67
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:67
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Previous month"
|
msgid "Previous month"
|
||||||
msgstr "Tháng trước"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:72
|
#: pretix/static/pretixpresale/js/widget/widget.js:72
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:68
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:68
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Next week"
|
msgid "Next week"
|
||||||
msgstr "Tuần sau"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:73
|
#: pretix/static/pretixpresale/js/widget/widget.js:73
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:69
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:69
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Previous week"
|
msgid "Previous week"
|
||||||
msgstr "Tuần trước"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:74
|
#: pretix/static/pretixpresale/js/widget/widget.js:74
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:70
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:70
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Open seat selection"
|
msgid "Open seat selection"
|
||||||
msgstr "Mở chọn chỗ ngồi"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:75
|
#: pretix/static/pretixpresale/js/widget/widget.js:75
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:71
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:71
|
||||||
@@ -1120,144 +1114,142 @@ msgid ""
|
|||||||
"add yourself to the waiting list. We will then notify if seats are available "
|
"add yourself to the waiting list. We will then notify if seats are available "
|
||||||
"again."
|
"again."
|
||||||
msgstr ""
|
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.js:76
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:72
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:72
|
||||||
msgctxt "widget"
|
msgctxt "widget"
|
||||||
msgid "Load more"
|
msgid "Load more"
|
||||||
msgstr "Tải thêm"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:78
|
#: pretix/static/pretixpresale/js/widget/widget.js:78
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:74
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:74
|
||||||
msgid "Mo"
|
msgid "Mo"
|
||||||
msgstr "T2"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:79
|
#: pretix/static/pretixpresale/js/widget/widget.js:79
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:75
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:75
|
||||||
msgid "Tu"
|
msgid "Tu"
|
||||||
msgstr "T3"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:80
|
#: pretix/static/pretixpresale/js/widget/widget.js:80
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:76
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:76
|
||||||
msgid "We"
|
msgid "We"
|
||||||
msgstr "T4"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:81
|
#: pretix/static/pretixpresale/js/widget/widget.js:81
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:77
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:77
|
||||||
msgid "Th"
|
msgid "Th"
|
||||||
msgstr "T5"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:82
|
#: pretix/static/pretixpresale/js/widget/widget.js:82
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:78
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:78
|
||||||
msgid "Fr"
|
msgid "Fr"
|
||||||
msgstr "T6"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:83
|
#: pretix/static/pretixpresale/js/widget/widget.js:83
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:79
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:79
|
||||||
msgid "Sa"
|
msgid "Sa"
|
||||||
msgstr "T7"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:84
|
#: pretix/static/pretixpresale/js/widget/widget.js:84
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:80
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:80
|
||||||
msgid "Su"
|
msgid "Su"
|
||||||
msgstr "CN"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:85
|
#: pretix/static/pretixpresale/js/widget/widget.js:85
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:81
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:81
|
||||||
msgid "Monday"
|
msgid "Monday"
|
||||||
msgstr "Thứ Hai"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:86
|
#: pretix/static/pretixpresale/js/widget/widget.js:86
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:82
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:82
|
||||||
msgid "Tuesday"
|
msgid "Tuesday"
|
||||||
msgstr "Thứ Ba"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:87
|
#: pretix/static/pretixpresale/js/widget/widget.js:87
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:83
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:83
|
||||||
msgid "Wednesday"
|
msgid "Wednesday"
|
||||||
msgstr "Thứ Tư"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:88
|
#: pretix/static/pretixpresale/js/widget/widget.js:88
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:84
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:84
|
||||||
msgid "Thursday"
|
msgid "Thursday"
|
||||||
msgstr "Thứ Năm"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:89
|
#: pretix/static/pretixpresale/js/widget/widget.js:89
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:85
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:85
|
||||||
msgid "Friday"
|
msgid "Friday"
|
||||||
msgstr "Thứ Sáu"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:90
|
#: pretix/static/pretixpresale/js/widget/widget.js:90
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:86
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:86
|
||||||
msgid "Saturday"
|
msgid "Saturday"
|
||||||
msgstr "Thứ Bảy"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:91
|
#: pretix/static/pretixpresale/js/widget/widget.js:91
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:87
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:87
|
||||||
msgid "Sunday"
|
msgid "Sunday"
|
||||||
msgstr "Chủ Nhật"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:94
|
#: pretix/static/pretixpresale/js/widget/widget.js:94
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:90
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:90
|
||||||
msgid "January"
|
msgid "January"
|
||||||
msgstr "Tháng 1"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:95
|
#: pretix/static/pretixpresale/js/widget/widget.js:95
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:91
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:91
|
||||||
msgid "February"
|
msgid "February"
|
||||||
msgstr "Tháng 2"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:96
|
#: pretix/static/pretixpresale/js/widget/widget.js:96
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:92
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:92
|
||||||
msgid "March"
|
msgid "March"
|
||||||
msgstr "Tháng 3"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:97
|
#: pretix/static/pretixpresale/js/widget/widget.js:97
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:93
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:93
|
||||||
msgid "April"
|
msgid "April"
|
||||||
msgstr "Tháng 4"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:98
|
#: pretix/static/pretixpresale/js/widget/widget.js:98
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:94
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:94
|
||||||
msgid "May"
|
msgid "May"
|
||||||
msgstr "Tháng 5"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:99
|
#: pretix/static/pretixpresale/js/widget/widget.js:99
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:95
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:95
|
||||||
msgid "June"
|
msgid "June"
|
||||||
msgstr "Tháng 6"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:100
|
#: pretix/static/pretixpresale/js/widget/widget.js:100
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:96
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:96
|
||||||
msgid "July"
|
msgid "July"
|
||||||
msgstr "Tháng 7"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:101
|
#: pretix/static/pretixpresale/js/widget/widget.js:101
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:97
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:97
|
||||||
msgid "August"
|
msgid "August"
|
||||||
msgstr "Tháng 8"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:102
|
#: pretix/static/pretixpresale/js/widget/widget.js:102
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:98
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:98
|
||||||
msgid "September"
|
msgid "September"
|
||||||
msgstr "Tháng 9"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:103
|
#: pretix/static/pretixpresale/js/widget/widget.js:103
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:99
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:99
|
||||||
msgid "October"
|
msgid "October"
|
||||||
msgstr "Tháng 10"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:104
|
#: pretix/static/pretixpresale/js/widget/widget.js:104
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:100
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:100
|
||||||
msgid "November"
|
msgid "November"
|
||||||
msgstr "Tháng 11"
|
msgstr ""
|
||||||
|
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.js:105
|
#: pretix/static/pretixpresale/js/widget/widget.js:105
|
||||||
#: pretix/static/pretixpresale/js/widget/widget.v1.js:101
|
#: pretix/static/pretixpresale/js/widget/widget.v1.js:101
|
||||||
msgid "December"
|
msgid "December"
|
||||||
msgstr "Tháng 12"
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "Your color has bad contrast for text on white background, please choose a "
|
#~ "Your color has bad contrast for text on white background, please choose a "
|
||||||
|
|||||||
@@ -47,8 +47,7 @@ from django.utils.translation import gettext_lazy as _
|
|||||||
from django_scopes import scope, scopes_disabled
|
from django_scopes import scope, scopes_disabled
|
||||||
|
|
||||||
from pretix.base.logentrytypes import (
|
from pretix.base.logentrytypes import (
|
||||||
EventLogEntryType, OrderLogEntryType, WaitingListEntryLogEntryType,
|
EventLogEntryType, OrderLogEntryType, log_entry_types,
|
||||||
log_entry_types,
|
|
||||||
)
|
)
|
||||||
from pretix.base.models import SubEvent
|
from pretix.base.models import SubEvent
|
||||||
from pretix.base.signals import (
|
from pretix.base.signals import (
|
||||||
@@ -131,11 +130,6 @@ class SendmailPluginOrderLogEntryType(OrderLogEntryType):
|
|||||||
pass
|
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.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.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'))
|
@log_entry_types.new('pretix.plugins.sendmail.rule.order.email.sent', _('A scheduled email was sent to the order'))
|
||||||
|
|||||||
@@ -201,5 +201,4 @@ def send_mails_to_waitinglist(event: Event, user: int, subject: dict, message: d
|
|||||||
),
|
),
|
||||||
user=user,
|
user=user,
|
||||||
attach_cached_files=attachments,
|
attach_cached_files=attachments,
|
||||||
log_entry_type='pretix.plugins.sendmail.waitinglist.email.sent',
|
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ class AuthenticationForm(forms.Form):
|
|||||||
required_css_class = 'required'
|
required_css_class = 'required'
|
||||||
email = forms.EmailField(
|
email = forms.EmailField(
|
||||||
label=_("Email"),
|
label=_("Email"),
|
||||||
widget=forms.EmailInput(attrs={'autocomplete': 'email'})
|
widget=forms.EmailInput()
|
||||||
)
|
)
|
||||||
password = forms.CharField(
|
password = forms.CharField(
|
||||||
label=_("Password"),
|
label=_("Password"),
|
||||||
@@ -140,7 +140,6 @@ class RegistrationForm(forms.Form):
|
|||||||
name_parts = forms.CharField()
|
name_parts = forms.CharField()
|
||||||
email = forms.EmailField(
|
email = forms.EmailField(
|
||||||
label=_("Email"),
|
label=_("Email"),
|
||||||
widget=forms.EmailInput(attrs={'autocomplete': 'email'})
|
|
||||||
)
|
)
|
||||||
|
|
||||||
error_messages = {
|
error_messages = {
|
||||||
@@ -342,7 +341,6 @@ class ResetPasswordForm(forms.Form):
|
|||||||
}
|
}
|
||||||
email = forms.EmailField(
|
email = forms.EmailField(
|
||||||
label=_('Email'),
|
label=_('Email'),
|
||||||
widget=forms.EmailInput(attrs={'autocomplete': 'email'}),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
def __init__(self, request=None, *args, **kwargs):
|
def __init__(self, request=None, *args, **kwargs):
|
||||||
@@ -390,12 +388,12 @@ class ChangePasswordForm(forms.Form):
|
|||||||
)
|
)
|
||||||
password_current = forms.CharField(
|
password_current = forms.CharField(
|
||||||
label=_('Your current password'),
|
label=_('Your current password'),
|
||||||
widget=forms.PasswordInput(attrs={'autocomplete': 'current-password'}),
|
widget=forms.PasswordInput,
|
||||||
required=True
|
required=True
|
||||||
)
|
)
|
||||||
password = forms.CharField(
|
password = forms.CharField(
|
||||||
label=_('New password'),
|
label=_('New password'),
|
||||||
widget=forms.PasswordInput(attrs={'minlength': '8', 'autocomplete': 'new-password'}),
|
widget=forms.PasswordInput,
|
||||||
max_length=4096,
|
max_length=4096,
|
||||||
required=True
|
required=True
|
||||||
)
|
)
|
||||||
@@ -459,7 +457,7 @@ class ChangeInfoForm(forms.ModelForm):
|
|||||||
}
|
}
|
||||||
password_current = forms.CharField(
|
password_current = forms.CharField(
|
||||||
label=_('Your current password'),
|
label=_('Your current password'),
|
||||||
widget=forms.PasswordInput(attrs={'autocomplete': 'current-password'}),
|
widget=forms.PasswordInput,
|
||||||
help_text=_('Only required if you change your email address'),
|
help_text=_('Only required if you change your email address'),
|
||||||
max_length=4096,
|
max_length=4096,
|
||||||
required=False
|
required=False
|
||||||
@@ -473,8 +471,6 @@ class ChangeInfoForm(forms.ModelForm):
|
|||||||
self.request = request
|
self.request = request
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
self.fields['email'].widget.attrs['autocomplete'] = 'email'
|
|
||||||
|
|
||||||
self.fields['name_parts'] = NamePartsFormField(
|
self.fields['name_parts'] = NamePartsFormField(
|
||||||
max_length=255,
|
max_length=255,
|
||||||
required=True,
|
required=True,
|
||||||
|
|||||||
@@ -57,8 +57,6 @@ class WaitingListForm(forms.ModelForm):
|
|||||||
|
|
||||||
event = self.event
|
event = self.event
|
||||||
|
|
||||||
self.fields['email'].widget.attrs['autocomplete'] = 'email'
|
|
||||||
|
|
||||||
if event.settings.waiting_list_names_asked:
|
if event.settings.waiting_list_names_asked:
|
||||||
self.fields['name_parts'] = NamePartsFormField(
|
self.fields['name_parts'] = NamePartsFormField(
|
||||||
max_length=255,
|
max_length=255,
|
||||||
|
|||||||
@@ -19,9 +19,9 @@
|
|||||||
<div class="panel-body questions-form">
|
<div class="panel-body questions-form">
|
||||||
{% if form.position.seat %}
|
{% if form.position.seat %}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-3 control-label">
|
<label class="col-md-3 control-label">
|
||||||
<strong role="heading" aria-level="5">{% trans "Seat" %}</strong>
|
{% trans "Seat" %}
|
||||||
</div>
|
</label>
|
||||||
<div class="col-md-9 form-control-text">
|
<div class="col-md-9 form-control-text">
|
||||||
{% include "icons/seat.svg" with cls="svg-icon" %}
|
{% include "icons/seat.svg" with cls="svg-icon" %}
|
||||||
{{ form.position.seat }}
|
{{ form.position.seat }}
|
||||||
@@ -30,9 +30,9 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% if form.position.addons.all %}
|
{% if form.position.addons.all %}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-3 control-label">
|
<label class="col-md-3 control-label">
|
||||||
<strong role="heading" aria-level="5">{% trans "Selected add-ons" %}</strong>
|
{% trans "Selected add-ons" %}
|
||||||
</div>
|
</label>
|
||||||
<div class="col-md-9 form-control-text">
|
<div class="col-md-9 form-control-text">
|
||||||
<ul class="addon-list">
|
<ul class="addon-list">
|
||||||
{% for a in form.position.addons.all %}
|
{% for a in form.position.addons.all %}
|
||||||
@@ -44,13 +44,13 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% if form.position.subevent %}
|
{% if form.position.subevent %}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-3 control-label">
|
<label class="col-md-3 control-label">
|
||||||
<strong role="heading" aria-level="5">{% trans "Date" context "subevent" %}</strong>
|
{% trans "Date" context "subevent" %}
|
||||||
</div>
|
</label>
|
||||||
<div class="col-md-9 form-control-text">
|
<div class="col-md-9 form-control-text">
|
||||||
<p class="addon-list">
|
<ul class="addon-list">
|
||||||
{{ form.position.subevent.name }} · {{ form.position.subevent.get_date_range_display_with_times_as_html }}
|
{{ form.position.subevent.name }} · {{ form.position.subevent.get_date_range_display_with_times_as_html }}
|
||||||
</p>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
{% extends "pretixpresale/event/checkout_base.html" %}
|
{% extends "pretixpresale/event/checkout_base.html" %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% load icon %}
|
|
||||||
{% load bootstrap3 %}
|
{% load bootstrap3 %}
|
||||||
{% load rich_text %}
|
{% load rich_text %}
|
||||||
{% load lists %}
|
{% load lists %}
|
||||||
@@ -75,6 +74,14 @@
|
|||||||
{% if pos.variation %}
|
{% if pos.variation %}
|
||||||
– {{ pos.variation }}
|
– {{ pos.variation }}
|
||||||
{% endif %}</strong>
|
{% endif %}</strong>
|
||||||
|
{% if forloop.counter > 1 %}
|
||||||
|
<span class="text-right flip">
|
||||||
|
{% if event.settings.checkout_show_copy_answers_button %}
|
||||||
|
<button type="button" data-id="{{ forloop.counter0 }}" name="copy"
|
||||||
|
class="js-copy-answers btn btn-default btn-xs">{% trans "Copy answers from above" %}</button>
|
||||||
|
{% endif %}
|
||||||
|
</span>
|
||||||
|
{% endif %}
|
||||||
</h3>
|
</h3>
|
||||||
</summary>
|
</summary>
|
||||||
<div>
|
<div>
|
||||||
@@ -82,22 +89,11 @@
|
|||||||
{% if event.settings.attendee_data_explanation_text and pos.item.ask_attendee_data %}
|
{% if event.settings.attendee_data_explanation_text and pos.item.ask_attendee_data %}
|
||||||
{{ event.settings.attendee_data_explanation_text|rich_text }}
|
{{ event.settings.attendee_data_explanation_text|rich_text }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if forloop.counter > 1 and event.settings.checkout_show_copy_answers_button %}
|
|
||||||
<div class="form-group">
|
|
||||||
<div class="col-md-9 col-md-offset-3">
|
|
||||||
<button type="button" data-id="{{ forloop.counter0 }}" name="copy"
|
|
||||||
class="js-copy-answers btn btn-default btn-sm">
|
|
||||||
{% icon "files-o" %}
|
|
||||||
{% trans "Copy answers from above" %}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
{% if pos.seat %}
|
{% if pos.seat %}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-3 control-label">
|
<label class="col-md-3 control-label">
|
||||||
<strong role="heading" aria-level="4">{% trans "Seat" %}</strong>
|
{% trans "Seat" %}
|
||||||
</div>
|
</label>
|
||||||
<div class="col-md-9 form-control-text">
|
<div class="col-md-9 form-control-text">
|
||||||
{% include "icons/seat.svg" with cls="svg-icon" %}
|
{% include "icons/seat.svg" with cls="svg-icon" %}
|
||||||
{{ pos.seat }}
|
{{ pos.seat }}
|
||||||
@@ -106,9 +102,9 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% if pos.addons_without_bundled %}
|
{% if pos.addons_without_bundled %}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-3 control-label">
|
<label class="col-md-3 control-label">
|
||||||
<strong role="heading" aria-level="4">{% trans "Selected add-ons" %}</strong>
|
{% trans "Selected add-ons" %}
|
||||||
</div>
|
</label>
|
||||||
<div class="col-md-9 form-control-text">
|
<div class="col-md-9 form-control-text">
|
||||||
<ul class="addon-list">
|
<ul class="addon-list">
|
||||||
{% regroup pos.addons_without_bundled by item_and_variation as addons_by_itemvar %}
|
{% regroup pos.addons_without_bundled by item_and_variation as addons_by_itemvar %}
|
||||||
@@ -121,24 +117,25 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% if pos.subevent %}
|
{% if pos.subevent %}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-3 control-label">
|
<label class="col-md-3 control-label">
|
||||||
<strong role="heading" aria-level="4">{% trans "Date" context "subevent" %}</strong>
|
{% trans "Date" context "subevent" %}
|
||||||
</div>
|
</label>
|
||||||
<div class="col-md-9 form-control-text">
|
<div class="col-md-9 form-control-text">
|
||||||
<p class="addon-list">
|
<ul class="addon-list">
|
||||||
{{ pos.subevent.name }} · {{ pos.subevent.get_date_range_display_with_times_as_html }}
|
{{ pos.subevent.name }} · {{ pos.subevent.get_date_range_display_with_times_as_html }}
|
||||||
</p>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<fieldset>
|
|
||||||
<legend class="sr-only">{{ pos.item.name }}{% if pos.variation %} – {{ pos.variation }}{% endif %}</legend>
|
|
||||||
{% for form in forms %}
|
{% for form in forms %}
|
||||||
{% if form.pos.item != pos.item %}
|
{% if form.pos.item != pos.item %}
|
||||||
</fieldset>
|
|
||||||
<fieldset>
|
|
||||||
{# Add-Ons #}
|
{# Add-Ons #}
|
||||||
<legend{% if profiles_data %} class="profile-add-on-legend"{% endif %}>
|
<legend{% if profiles_data %} class="profile-add-on-legend"{% endif %}>
|
||||||
|
{% if form.show_copy_answers_to_addon_button and event.settings.checkout_show_copy_answers_button %}
|
||||||
|
<span class="pull-right flip">
|
||||||
|
<button type="button" data-id="{{ forloop.parentloop.counter0 }}" data-addonid="{{ forloop.counter0 }}" name="copy" class="js-copy-answers-addon btn btn-default btn-xs">{% trans "Copy answers" %}</button>
|
||||||
|
</span>
|
||||||
|
{% endif %}
|
||||||
+ {{ form.pos.item.name }}{% if form.pos.variation %} – {{ form.pos.variation.value }}{% endif %}
|
+ {{ form.pos.item.name }}{% if form.pos.variation %} – {{ form.pos.variation.value }}{% endif %}
|
||||||
</legend>
|
</legend>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -160,20 +157,8 @@
|
|||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if form.show_copy_answers_to_addon_button and event.settings.checkout_show_copy_answers_button %}
|
|
||||||
<div class="form-group">
|
|
||||||
<div class="col-md-9 col-md-offset-3">
|
|
||||||
<button type="button" data-id="{{ forloop.parentloop.counter0 }}" data-addonid="{{ forloop.counter0 }}" name="copy" class="js-copy-answers-addon btn btn-default btn-sm">
|
|
||||||
{% icon "files-o" %}
|
|
||||||
{% trans "Copy answers from above" %}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% bootstrap_form form layout="checkout" %}
|
{% bootstrap_form form layout="checkout" %}
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -96,8 +96,8 @@
|
|||||||
{% if not event.settings.show_variations_expanded %}
|
{% if not event.settings.show_variations_expanded %}
|
||||||
<button type="button" data-toggle="variations" class="btn btn-default btn-block js-only"
|
<button type="button" data-toggle="variations" class="btn btn-default btn-block js-only"
|
||||||
data-label-alt="{% trans "Hide variants" %}"
|
data-label-alt="{% trans "Hide variants" %}"
|
||||||
aria-expanded="false" aria-controls="cp-{{ form.pos.pk }}-item-{{ item.pk }}-variations"
|
aria-expanded="false"
|
||||||
aria-describedby="cp-{{ form.pos.pk }}-item-{{ item.pk }}-legend">
|
aria-label="{% blocktrans trimmed with item=item.name count=item.available_variations|length %}Show {{count}} variants of {{item}}{% endblocktrans %}">
|
||||||
<i class="fa fa-angle-down collapse-indicator" aria-hidden="true"></i>
|
<i class="fa fa-angle-down collapse-indicator" aria-hidden="true"></i>
|
||||||
<span>{% trans "Show variants" %}</span>
|
<span>{% trans "Show variants" %}</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -105,7 +105,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="clearfix"></div>
|
<div class="clearfix"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="variations {% if not event.settings.show_variations_expanded %}variations-collapsed{% endif %}" id="cp-{{ form.pos.pk }}-item-{{ item.pk }}-variations">
|
<div class="variations {% if not event.settings.show_variations_expanded %}variations-collapsed{% endif %}">
|
||||||
{% for var in item.available_variations %}
|
{% for var in item.available_variations %}
|
||||||
<article aria-labelledby="cp-{{ form.pos.pk }}-item-{{ item.pk }}-{{ var.pk }}-legend"{% if var.description %} aria-describedby="cp-{{ form.pos.pk }}-item-{{ item.pk }}-{{ var.pk }}-description"{% endif %} class="row-fluid product-row variation"
|
<article aria-labelledby="cp-{{ form.pos.pk }}-item-{{ item.pk }}-{{ var.pk }}-legend"{% if var.description %} aria-describedby="cp-{{ form.pos.pk }}-item-{{ item.pk }}-{{ var.pk }}-description"{% endif %} class="row-fluid product-row variation"
|
||||||
{% if not item.free_price %}
|
{% if not item.free_price %}
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% load icon %}
|
|
||||||
{% load eventurl %}
|
{% load eventurl %}
|
||||||
{% load daterange %}
|
{% load daterange %}
|
||||||
{% load safelink %}
|
{% load safelink %}
|
||||||
@@ -25,7 +24,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div role="rowgroup" class="firstchild-in-panel">
|
<div role="rowgroup" class="firstchild-in-panel">
|
||||||
{% for line in cart.positions %}
|
{% for line in cart.positions %}
|
||||||
<div role="row" class="row cart-row {% if hide_prices %}hide-prices{% endif %} {% if download %}has-downloads{% endif %}{% if editable %}editable{% endif %}" data-article-id="item-{{ line.item.id }}{% if line.variation %}-{{ line.variation.id }}{% endif %}">
|
<div role="row" class="row cart-row {% if hide_prices %}hide-prices{% endif %} {% if download %}has-downloads{% endif %}{% if editable %}editable{% endif %}">
|
||||||
<div role="cell" class="product">
|
<div role="cell" class="product">
|
||||||
<p>
|
<p>
|
||||||
{% if line.addon_to %}
|
{% if line.addon_to %}
|
||||||
@@ -507,23 +506,10 @@
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<button class="btn btn-default" type="submit" id="cart-extend-button" aria-describedby="cart-deadline">
|
<button class="btn btn-default" type="submit" id="cart-extend-button" aria-describedby="cart-deadline">
|
||||||
{% icon "refresh" %} {% trans "Renew reservation" %}
|
<i class="fa fa-refresh" aria-hidden="true"></i> {% trans "Renew reservation" %}
|
||||||
</button>
|
</button>
|
||||||
</p>
|
</p>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<dialog role="alertdialog" id="cart-extend-confirmation-dialog" class="inline-dialog" aria-labelledby="cart-deadline">
|
|
||||||
<form method="dialog">
|
|
||||||
<p>
|
|
||||||
<button class="btn btn-success" autofocus value="OK">
|
|
||||||
<span role="img" aria-label="{% trans "OK" %}.">
|
|
||||||
{% icon "check" %}
|
|
||||||
</span>
|
|
||||||
{% trans "Reservation renewed" %}
|
|
||||||
</button>
|
|
||||||
</p>
|
|
||||||
</form>
|
|
||||||
</dialog>
|
|
||||||
{% else %}
|
{% else %}
|
||||||
<p class="sr-only" id="cart-description">{% trans "Overview of your ordered products." %}</p>
|
<p class="sr-only" id="cart-description">{% trans "Overview of your ordered products." %}</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -16,13 +16,13 @@
|
|||||||
<div class="form-order-change-main">
|
<div class="form-order-change-main">
|
||||||
{% if position.subevent %}
|
{% if position.subevent %}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-3 control-label">
|
<label class="col-md-3 control-label">
|
||||||
<strong role="heading" aria-level="4">{% trans "Date" context "subevent" %}</strong>
|
{% trans "Date" context "subevent" %}
|
||||||
</div>
|
</label>
|
||||||
<div class="col-md-9 form-control-text">
|
<div class="col-md-9 form-control-text">
|
||||||
<p class="addon-list">
|
<ul class="addon-list">
|
||||||
{{ position.subevent.name }} · {{ position.subevent.get_date_range_display_with_times_as_html }}
|
{{ position.subevent.name }} · {{ position.subevent.get_date_range_display_with_times_as_html }}
|
||||||
</p>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -101,8 +101,8 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
<button type="button" data-toggle="variations" class="btn btn-default btn-block js-only"
|
<button type="button" data-toggle="variations" class="btn btn-default btn-block js-only"
|
||||||
data-label-alt="{% trans "Hide variants" %}"
|
data-label-alt="{% trans "Hide variants" %}"
|
||||||
aria-expanded="false" aria-controls="{{ form_prefix }}item-{{ item.pk }}-variations"
|
aria-expanded="false"
|
||||||
aria-describedby="{{ form_prefix }}item-{{ item.pk }}-legend">
|
aria-label="{% blocktrans trimmed with item=item.name count=item.available_variations|length %}Show {{count}} variants of {{ item }}{% endblocktrans %}">
|
||||||
<i class="fa fa-angle-down collapse-indicator" aria-hidden="true"></i>
|
<i class="fa fa-angle-down collapse-indicator" aria-hidden="true"></i>
|
||||||
<span>{% trans "Show variants" %}</span>
|
<span>{% trans "Show variants" %}</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -110,7 +110,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="clearfix"></div>
|
<div class="clearfix"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="variations {% if not event.settings.show_variations_expanded %}variations-collapsed{% endif %}" id="{{ form_prefix }}item-{{ item.pk }}-variations">
|
<div class="variations {% if not event.settings.show_variations_expanded %}variations-collapsed{% endif %}">
|
||||||
{% for var in item.available_variations %}
|
{% for var in item.available_variations %}
|
||||||
<article aria-labelledby="{{ form_prefix }}item-{{ item.pk }}-{{ var.pk }}-legend"{% if var.description %} aria-describedby="{{ form_prefix }}item-{{ item.pk }}-{{ var.pk }}-description"{% endif %} class="row product-row variation" id="{{ form_prefix }}item-{{ item.pk }}-{{ var.pk }}"
|
<article aria-labelledby="{{ form_prefix }}item-{{ item.pk }}-{{ var.pk }}-legend"{% if var.description %} aria-describedby="{{ form_prefix }}item-{{ item.pk }}-{{ var.pk }}-description"{% endif %} class="row product-row variation" id="{{ form_prefix }}item-{{ item.pk }}-{{ var.pk }}"
|
||||||
{% if not item.free_price %}
|
{% if not item.free_price %}
|
||||||
|
|||||||
@@ -15,9 +15,8 @@
|
|||||||
<div class="input-group{% if "voucher_invalid" in request.GET %} has-error{% endif %}">
|
<div class="input-group{% if "voucher_invalid" in request.GET %} has-error{% endif %}">
|
||||||
<span class="input-group-addon"><i class="fa fa-ticket fa-fw" aria-hidden="true"></i></span>
|
<span class="input-group-addon"><i class="fa fa-ticket fa-fw" aria-hidden="true"></i></span>
|
||||||
<input type="text" class="form-control{% if "voucher_invalid" in request.GET %} has-error{% endif %}" name="voucher" id="voucher"
|
<input type="text" class="form-control{% if "voucher_invalid" in request.GET %} has-error{% endif %}" name="voucher" id="voucher"
|
||||||
{% if "voucher_invalid" in request.GET %} aria-describedby="error-message"{% endif %}
|
{% if "voucher_invalid" in request.GET %} aria-describedby="error-message"{% endif %}
|
||||||
autocomplete="off"
|
placeholder="{% trans "Voucher code" %}" required="required">
|
||||||
placeholder="{% trans "Voucher code" %}" required="required">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<input type="hidden" name="subevent" value="{{ subevent.id|default_if_none:"" }}" />
|
<input type="hidden" name="subevent" value="{{ subevent.id|default_if_none:"" }}" />
|
||||||
|
|||||||
@@ -34,13 +34,13 @@
|
|||||||
{% endblocktrans %}
|
{% endblocktrans %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
<p class="help-block" id="add-to-list-description">
|
<p class="help-block">
|
||||||
{% blocktrans trimmed %}
|
{% blocktrans trimmed %}
|
||||||
You will <strong>not</strong> receive a confirmation email after you have been added to the waiting list. We will only contact you once a spot opens up.
|
You will <strong>not</strong> receive a confirmation email after you have been added to the waiting list. We will only contact you once a spot opens up.
|
||||||
{% endblocktrans %}
|
{% endblocktrans %}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<button type="submit" class="btn btn-primary" aria-describedby="add-to-list-description">
|
<button type="submit" class="btn btn-primary">
|
||||||
{% trans "Add me to the list" %}
|
{% trans "Add me to the list" %}
|
||||||
</button>
|
</button>
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -48,10 +48,6 @@
|
|||||||
<p class="modal-card-confirm"><button class="btn btn-lg btn-primary">{% trans "Renew reservation" %}</button></p>
|
<p class="modal-card-confirm"><button class="btn btn-lg btn-primary">{% trans "Renew reservation" %}</button></p>
|
||||||
{% enddialog %}
|
{% enddialog %}
|
||||||
|
|
||||||
{% dialog "dialog-cart-extended" "" "" icon="clock-o" alert=true %}
|
|
||||||
<p class="modal-card-confirm"><button class="btn btn-lg btn-primary">{% trans "OK" %}</button></p>
|
|
||||||
{% enddialog %}
|
|
||||||
|
|
||||||
<dialog id="lightbox-dialog" class="modal-card" role="alertdialog" aria-labelledby="lightbox-label">
|
<dialog id="lightbox-dialog" class="modal-card" role="alertdialog" aria-labelledby="lightbox-label">
|
||||||
<form method="dialog" class="modal-card-inner form-horizontal">
|
<form method="dialog" class="modal-card-inner form-horizontal">
|
||||||
<div class="modal-card-content">
|
<div class="modal-card-content">
|
||||||
|
|||||||
@@ -64,7 +64,6 @@ from pretix.base.models import (
|
|||||||
Event, EventMetaValue, Organizer, Quota, SubEvent, SubEventMetaValue,
|
Event, EventMetaValue, Organizer, Quota, SubEvent, SubEventMetaValue,
|
||||||
)
|
)
|
||||||
from pretix.base.services.quotas import QuotaAvailability
|
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.compat import date_fromisocalendar
|
||||||
from pretix.helpers.daterange import daterange
|
from pretix.helpers.daterange import daterange
|
||||||
from pretix.helpers.formats.en.formats import (
|
from pretix.helpers.formats.en.formats import (
|
||||||
@@ -229,7 +228,7 @@ class EventListMixin:
|
|||||||
|
|
||||||
def _set_month_to_next_subevent(self):
|
def _set_month_to_next_subevent(self):
|
||||||
tz = self.request.event.timezone
|
tz = self.request.event.timezone
|
||||||
now_dt = time_machine_now()
|
now_dt = now()
|
||||||
next_sev = self.request.event.subevents.using(settings.DATABASE_REPLICA).annotate(
|
next_sev = self.request.event.subevents.using(settings.DATABASE_REPLICA).annotate(
|
||||||
effective_date=Case(
|
effective_date=Case(
|
||||||
When(date_from__lt=now_dt, date_to__isnull=False, date_to__gte=now_dt, then=Value(now_dt)),
|
When(date_from__lt=now_dt, date_to__isnull=False, date_to__gte=now_dt, then=Value(now_dt)),
|
||||||
@@ -246,8 +245,8 @@ class EventListMixin:
|
|||||||
self.year = datetime_from.astimezone(tz).year
|
self.year = datetime_from.astimezone(tz).year
|
||||||
self.month = datetime_from.astimezone(tz).month
|
self.month = datetime_from.astimezone(tz).month
|
||||||
else:
|
else:
|
||||||
self.year = now_dt.year
|
self.year = now().year
|
||||||
self.month = now_dt.month
|
self.month = now().month
|
||||||
|
|
||||||
def _set_month_to_next_event(self):
|
def _set_month_to_next_event(self):
|
||||||
now_dt = now()
|
now_dt = now()
|
||||||
@@ -297,7 +296,7 @@ class EventListMixin:
|
|||||||
try:
|
try:
|
||||||
date = dateutil.parser.isoparse(self.request.GET.get('date')).date()
|
date = dateutil.parser.isoparse(self.request.GET.get('date')).date()
|
||||||
except ValueError:
|
except ValueError:
|
||||||
date = time_machine_now().date()
|
date = now().date()
|
||||||
self.year = date.year
|
self.year = date.year
|
||||||
self.month = date.month
|
self.month = date.month
|
||||||
else:
|
else:
|
||||||
@@ -307,7 +306,7 @@ class EventListMixin:
|
|||||||
self._set_month_to_next_event()
|
self._set_month_to_next_event()
|
||||||
|
|
||||||
def _set_week_to_next_subevent(self):
|
def _set_week_to_next_subevent(self):
|
||||||
now_dt = time_machine_now()
|
now_dt = now()
|
||||||
tz = self.request.event.timezone
|
tz = self.request.event.timezone
|
||||||
next_sev = self.request.event.subevents.using(settings.DATABASE_REPLICA).annotate(
|
next_sev = self.request.event.subevents.using(settings.DATABASE_REPLICA).annotate(
|
||||||
effective_date=Case(
|
effective_date=Case(
|
||||||
@@ -325,8 +324,8 @@ class EventListMixin:
|
|||||||
self.year = datetime_from.astimezone(tz).isocalendar()[0]
|
self.year = datetime_from.astimezone(tz).isocalendar()[0]
|
||||||
self.week = datetime_from.astimezone(tz).isocalendar()[1]
|
self.week = datetime_from.astimezone(tz).isocalendar()[1]
|
||||||
else:
|
else:
|
||||||
self.year = now_dt.isocalendar()[0]
|
self.year = now().isocalendar()[0]
|
||||||
self.week = now_dt.isocalendar()[1]
|
self.week = now().isocalendar()[1]
|
||||||
|
|
||||||
def _set_week_to_next_event(self):
|
def _set_week_to_next_event(self):
|
||||||
now_dt = now()
|
now_dt = now()
|
||||||
@@ -376,7 +375,7 @@ class EventListMixin:
|
|||||||
try:
|
try:
|
||||||
iso = dateutil.parser.isoparse(self.request.GET.get('date')).isocalendar()
|
iso = dateutil.parser.isoparse(self.request.GET.get('date')).isocalendar()
|
||||||
except ValueError:
|
except ValueError:
|
||||||
iso = time_machine_now().isocalendar()
|
iso = now().isocalendar()
|
||||||
self.year = iso[0]
|
self.year = iso[0]
|
||||||
self.week = iso[1]
|
self.week = iso[1]
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -12,12 +12,10 @@ setup_collapsible_details = function (el) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
content.setAttribute('aria-hidden', 'true');
|
content.setAttribute('aria-hidden', 'true');
|
||||||
content.setAttribute('inert', true);
|
|
||||||
button.setAttribute('aria-expanded', 'false');
|
button.setAttribute('aria-expanded', 'false');
|
||||||
button.addEventListener('click', function (e) {
|
button.addEventListener('click', function (e) {
|
||||||
button.setAttribute('aria-expanded', 'true');
|
button.setAttribute('aria-expanded', 'true');
|
||||||
content.setAttribute('aria-hidden', 'false');
|
content.setAttribute('aria-hidden', 'false');
|
||||||
content.removeAttribute('inert');
|
|
||||||
|
|
||||||
content.addEventListener('transitionend', function() {
|
content.addEventListener('transitionend', function() {
|
||||||
content.classList.remove('sneak-peek-content');
|
content.classList.remove('sneak-peek-content');
|
||||||
@@ -49,7 +47,6 @@ setup_collapsible_details = function (el) {
|
|||||||
container.removeEventListener("toggle", removeSneekPeakWhenClosed);
|
container.removeEventListener("toggle", removeSneekPeakWhenClosed);
|
||||||
trigger.remove();
|
trigger.remove();
|
||||||
content.removeAttribute('aria-hidden');
|
content.removeAttribute('aria-hidden');
|
||||||
content.removeAttribute('inert');
|
|
||||||
content.classList.remove('sneak-peek-content');
|
content.classList.remove('sneak-peek-content');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -117,7 +114,7 @@ setup_collapsible_details = function (el) {
|
|||||||
el.find("article button[data-toggle=variations]").click(function (e) {
|
el.find("article button[data-toggle=variations]").click(function (e) {
|
||||||
var $button = $(this);
|
var $button = $(this);
|
||||||
var $details = $button.closest("article");
|
var $details = $button.closest("article");
|
||||||
var $detailsNotSummary = $button.attr("aria-controls") ? $('#' + $button.attr("aria-controls")) : $(".variations", $details);
|
var $detailsNotSummary = $(".variations", $details);
|
||||||
var isOpen = !$detailsNotSummary.prop("hidden");
|
var isOpen = !$detailsNotSummary.prop("hidden");
|
||||||
if ($detailsNotSummary.is(':animated')) {
|
if ($detailsNotSummary.is(':animated')) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
@@ -125,7 +122,7 @@ setup_collapsible_details = function (el) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var altLabel = $button.attr("data-label-alt");
|
var altLabel = $button.attr("data-label-alt");
|
||||||
$button.attr("data-label-alt", $button.text().trim());
|
$button.attr("data-label-alt", $button.text());
|
||||||
$button.find("span").text(altLabel);
|
$button.find("span").text(altLabel);
|
||||||
$button.attr("aria-expanded", !isOpen);
|
$button.attr("aria-expanded", !isOpen);
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,3 @@
|
|||||||
dialog.inline-dialog {
|
|
||||||
position: static;
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Modal dialogs using HTML5 dialog tags for accessibility */
|
/* Modal dialogs using HTML5 dialog tags for accessibility */
|
||||||
dialog.modal-card {
|
dialog.modal-card {
|
||||||
border: none;
|
border: none;
|
||||||
@@ -15,6 +8,9 @@ dialog.modal-card {
|
|||||||
box-shadow: 0 7px 14px 0 rgba(78, 50, 92, 0.1),0 3px 6px 0 rgba(0,0,0,.07);
|
box-shadow: 0 7px 14px 0 rgba(78, 50, 92, 0.1),0 3px 6px 0 rgba(0,0,0,.07);
|
||||||
background: white;
|
background: white;
|
||||||
border-radius: $border-radius-large;
|
border-radius: $border-radius-large;
|
||||||
|
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity .5s allow-discrete;
|
||||||
}
|
}
|
||||||
.modal-card-inner {
|
.modal-card-inner {
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -56,8 +52,18 @@ dialog.modal-card .modal-card-content {
|
|||||||
|
|
||||||
dialog::backdrop {
|
dialog::backdrop {
|
||||||
background-color: rgba(255, 255, 255, .5);
|
background-color: rgba(255, 255, 255, .5);
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity .5s allow-discrete;
|
||||||
backdrop-filter: blur(2px);
|
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) {
|
@media screen and (min-width: $screen-sm-min) {
|
||||||
dialog.modal-card:has(.modal-card-icon) .modal-card-inner {
|
dialog.modal-card:has(.modal-card-icon) .modal-card-inner {
|
||||||
|
|||||||
@@ -648,47 +648,18 @@ var form_handlers = function (el) {
|
|||||||
var $checkbox = $(this).find("input[type=checkbox][name=_bulk]");
|
var $checkbox = $(this).find("input[type=checkbox][name=_bulk]");
|
||||||
var $content = $(this).find(".field-content");
|
var $content = $(this).find(".field-content");
|
||||||
var $fields = $content.find("input, select, textarea, button");
|
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 update = function () {
|
||||||
var isChecked = $checkbox.prop("checked");
|
var isChecked = $checkbox.prop("checked");
|
||||||
|
|
||||||
$content.toggleClass("enabled", isChecked);
|
$content.toggleClass("enabled", isChecked);
|
||||||
$fields.attr("tabIndex", isChecked ? 0 : -1);
|
$fields.attr("tabIndex", isChecked ? 0 : -1);
|
||||||
}
|
}
|
||||||
$content.on("focusin change click", function () {
|
$content.on("focusin change click", function () {
|
||||||
if ($checkbox.prop("checked")) return;
|
if ($checkbox.prop("checked")) return;
|
||||||
if ($dialog && !warningShown) {
|
$checkbox.prop("checked", true);
|
||||||
warningShown = true;
|
|
||||||
$dialog.get(0).showModal();
|
|
||||||
} else {
|
|
||||||
$checkbox.prop("checked", true);
|
|
||||||
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();
|
||||||
})
|
});
|
||||||
|
$checkbox.on('change', update)
|
||||||
update();
|
update();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,22 +1,23 @@
|
|||||||
/*global $, Morris, gettext*/
|
/*global $, Morris, gettext*/
|
||||||
$(function () {
|
$(function () {
|
||||||
// Question view
|
// Question view
|
||||||
if (!$("#question_chart").length) {
|
if (!$("#question-stats").length) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$(".chart").css("height", "250px");
|
$(".chart").css("height", "250px");
|
||||||
var data_type = $("#question_chart").attr("data-type"),
|
var data_type = $("#question_chart").attr("data-type"),
|
||||||
data = JSON.parse($("#question-chart-data").text() || "[]"),
|
data = JSON.parse($("#question-chart-data").html()),
|
||||||
others_sum = 0,
|
others_sum = 0,
|
||||||
max_num = 8;
|
max_num = 8;
|
||||||
|
|
||||||
data = data.map(function (d) {
|
for (var i in data) {
|
||||||
return {
|
data[i].value = data[i].count;
|
||||||
'value': d.count,
|
data[i].label = data[i].answer;
|
||||||
'label': d.answer.length > 20 ? d.answer.substring(0, 20) + '…' : d.answer,
|
if (data[i].label.length > 20) {
|
||||||
|
data[i].label = data[i].label.substring(0, 20) + '…';
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
|
||||||
if (data_type == 'N') {
|
if (data_type == 'N') {
|
||||||
// Sort
|
// Sort
|
||||||
@@ -35,7 +36,7 @@ $(function () {
|
|||||||
// Limit shown options
|
// Limit shown options
|
||||||
if (data.length > max_num) {
|
if (data.length > max_num) {
|
||||||
for (var i = max_num; i < data.length; i++) {
|
for (var i = max_num; i < data.length; i++) {
|
||||||
others_sum += data[i].value;
|
others_sum += data[i].count;
|
||||||
}
|
}
|
||||||
data = data.slice(0, max_num);
|
data = data.slice(0, max_num);
|
||||||
data.push({'value': others_sum, 'label': gettext('Others')});
|
data.push({'value': others_sum, 'label': gettext('Others')});
|
||||||
@@ -77,7 +78,7 @@ $(function () {
|
|||||||
data: data,
|
data: data,
|
||||||
resize: true,
|
resize: true,
|
||||||
xkey: 'label',
|
xkey: 'label',
|
||||||
ykeys: ['value'],
|
ykeys: ['count'],
|
||||||
labels: [gettext('Count')]
|
labels: [gettext('Count')]
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ $(function () {
|
|||||||
.attr("href", "#" + tid)
|
.attr("href", "#" + tid)
|
||||||
.text($fieldset.find("legend").text())
|
.text($fieldset.find("legend").text())
|
||||||
.appendTo($tabli);
|
.appendTo($tabli);
|
||||||
if ($fieldset.find(".has-error, .alert-danger:not(.dynamic)").length > 0) {
|
if ($fieldset.find(".has-error, .alert-danger").length > 0) {
|
||||||
$tablink.append(" ");
|
$tablink.append(" ");
|
||||||
$tablink.append($("<span>").addClass("fa fa-warning text-danger"));
|
$tablink.append($("<span>").addClass("fa fa-warning text-danger"));
|
||||||
if (preselect === null) {
|
if (preselect === null) {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ var cart = {
|
|||||||
_deadline_call: 0,
|
_deadline_call: 0,
|
||||||
_time_offset: 0,
|
_time_offset: 0,
|
||||||
_prev_diff_minutes: 0,
|
_prev_diff_minutes: 0,
|
||||||
|
_renewed_message: "",
|
||||||
|
|
||||||
_get_now: function () {
|
_get_now: function () {
|
||||||
return moment().add(cart._time_offset, 'ms');
|
return moment().add(cart._time_offset, 'ms');
|
||||||
@@ -58,6 +59,7 @@ var cart = {
|
|||||||
$("#cart-deadline").text(gettext("Your cart is about to expire."))
|
$("#cart-deadline").text(gettext("Your cart is about to expire."))
|
||||||
} else {
|
} else {
|
||||||
$("#cart-deadline").text(
|
$("#cart-deadline").text(
|
||||||
|
cart._renewed_message + " " +
|
||||||
ngettext(
|
ngettext(
|
||||||
"The items in your cart are reserved for you for one minute.",
|
"The items in your cart are reserved for you for one minute.",
|
||||||
"The items in your cart are reserved for you for {num} minutes.",
|
"The items in your cart are reserved for you for {num} minutes.",
|
||||||
@@ -72,6 +74,7 @@ var cart = {
|
|||||||
pad(diff_minutes.toString(), 2) + ':' + pad(diff_seconds.toString(), 2)
|
pad(diff_minutes.toString(), 2) + ':' + pad(diff_seconds.toString(), 2)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
cart._renewed_message = "";
|
||||||
cart._deadline_timeout = window.setTimeout(cart.draw_deadline, 500);
|
cart._deadline_timeout = window.setTimeout(cart.draw_deadline, 500);
|
||||||
}
|
}
|
||||||
var already_expired = diff_total_seconds <= 0;
|
var already_expired = diff_total_seconds <= 0;
|
||||||
@@ -109,6 +112,7 @@ var cart = {
|
|||||||
}
|
}
|
||||||
cart._deadline_timeout = null;
|
cart._deadline_timeout = null;
|
||||||
cart._max_extend = moment(max_extend);
|
cart._max_extend = moment(max_extend);
|
||||||
|
cart._renewed_message = renewed_message || "";
|
||||||
cart.draw_deadline();
|
cart.draw_deadline();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -118,41 +122,22 @@ $(function () {
|
|||||||
|
|
||||||
if ($("#cart-deadline").length) {
|
if ($("#cart-deadline").length) {
|
||||||
cart.init();
|
cart.init();
|
||||||
$("#cart-extend-confirmation-button").hide().on("blur", function() {
|
|
||||||
$(this).hide();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$("#cart-extend-form").on("pretix:async-task-success", function(e, data) {
|
$("#cart-extend-form").on("pretix:async-task-success", function(e, data) {
|
||||||
if (data.success) {
|
if (data.success) {
|
||||||
cart.set_deadline(data.expiry, data.max_expiry_extend);
|
cart.set_deadline(data.expiry, data.max_expiry_extend, data.message);
|
||||||
|
var cart_panel_heading = $(this).closest(".panel").find(".panel-heading").get(0);
|
||||||
|
if (cart_panel_heading) {
|
||||||
|
cart_panel_heading.focus();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
alert(data.message);
|
alert(data.message);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// renew-button in cart-panel is clicked, show inline dialog
|
|
||||||
$("#cart-extend-button").on("click", function() {
|
|
||||||
$("#cart-extend-form").one("pretix:async-task-success", function(e, data) {
|
|
||||||
if (data.success) {
|
|
||||||
document.getElementById("cart-extend-confirmation-dialog").show();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
$("#cart-extend-confirmation-dialog").on("keydown", function (e) {
|
|
||||||
if(e.key === "Escape") {
|
|
||||||
this.close();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// renew-button in modal dialog is clicked, show modal dialog
|
|
||||||
$("#dialog-cart-extend form").submit(function() {
|
$("#dialog-cart-extend form").submit(function() {
|
||||||
$("#cart-extend-form").one("pretix:async-task-success", function(e, data) {
|
$("#cart-extend-form").submit();
|
||||||
if (data.success) {
|
|
||||||
$("#dialog-cart-extended-title").text(data.message);
|
|
||||||
$("#dialog-cart-extended-description").text($("#cart-deadline").text());
|
|
||||||
document.getElementById("dialog-cart-extended").showModal();
|
|
||||||
}
|
|
||||||
}).submit();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$(".toggle-container").each(function() {
|
$(".toggle-container").each(function() {
|
||||||
|
|||||||
@@ -7,12 +7,4 @@ var inIframe = function () {
|
|||||||
};
|
};
|
||||||
if (inIframe()) {
|
if (inIframe()) {
|
||||||
document.documentElement.classList.add('in-iframe');
|
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -252,7 +252,7 @@ Vue.component('availbox', {
|
|||||||
variation: Object
|
variation: Object
|
||||||
},
|
},
|
||||||
mounted: function() {
|
mounted: function() {
|
||||||
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) {
|
if (this.$root.itemnum === 1 && !this.$root.has_seating_plan ? 1 : 0) {
|
||||||
this.$refs.quantity.value = 1;
|
this.$refs.quantity.value = 1;
|
||||||
if (this.order_max === 1) {
|
if (this.order_max === 1) {
|
||||||
this.$refs.quantity.checked = true;
|
this.$refs.quantity.checked = true;
|
||||||
@@ -823,7 +823,7 @@ var shared_loading_fragment = (
|
|||||||
);
|
);
|
||||||
|
|
||||||
var shared_iframe_fragment = (
|
var shared_iframe_fragment = (
|
||||||
'<dialog :class="frameClasses" aria-label="'+strings.checkout+'" @close="close" @cancel="cancel">'
|
'<dialog :class="frameClasses" role="alertdialog" aria-label="'+strings.checkout+'" @close="close" @cancel="cancel">'
|
||||||
+ '<div class="pretix-widget-frame-loading" v-show="$root.frame_loading">'
|
+ '<div class="pretix-widget-frame-loading" v-show="$root.frame_loading">'
|
||||||
+ '<svg width="256" height="256" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path class="pretix-widget-primary-color" d="M1152 896q0-106-75-181t-181-75-181 75-75 181 75 181 181 75 181-75 75-181zm512-109v222q0 12-8 23t-20 13l-185 28q-19 54-39 91 35 50 107 138 10 12 10 25t-9 23q-27 37-99 108t-94 71q-12 0-26-9l-138-108q-44 23-91 38-16 136-29 186-7 28-36 28h-222q-14 0-24.5-8.5t-11.5-21.5l-28-184q-49-16-90-37l-141 107q-10 9-25 9-14 0-25-11-126-114-165-168-7-10-7-23 0-12 8-23 15-21 51-66.5t54-70.5q-27-50-41-99l-183-27q-13-2-21-12.5t-8-23.5v-222q0-12 8-23t19-13l186-28q14-46 39-92-40-57-107-138-10-12-10-24 0-10 9-23 26-36 98.5-107.5t94.5-71.5q13 0 26 10l138 107q44-23 91-38 16-136 29-186 7-28 36-28h222q14 0 24.5 8.5t11.5 21.5l28 184q49 16 90 37l142-107q9-9 24-9 13 0 25 10 129 119 165 170 7 8 7 22 0 12-8 23-15 21-51 66.5t-54 70.5q26 50 41 98l183 28q13 2 21 12.5t8 23.5z"/></svg>'
|
+ '<svg width="256" height="256" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path class="pretix-widget-primary-color" d="M1152 896q0-106-75-181t-181-75-181 75-75 181 75 181 181 75 181-75 75-181zm512-109v222q0 12-8 23t-20 13l-185 28q-19 54-39 91 35 50 107 138 10 12 10 25t-9 23q-27 37-99 108t-94 71q-12 0-26-9l-138-108q-44 23-91 38-16 136-29 186-7 28-36 28h-222q-14 0-24.5-8.5t-11.5-21.5l-28-184q-49-16-90-37l-141 107q-10 9-25 9-14 0-25-11-126-114-165-168-7-10-7-23 0-12 8-23 15-21 51-66.5t54-70.5q-27-50-41-99l-183-27q-13-2-21-12.5t-8-23.5v-222q0-12 8-23t19-13l186-28q14-46 39-92-40-57-107-138-10-12-10-24 0-10 9-23 26-36 98.5-107.5t94.5-71.5q13 0 26 10l138 107q44-23 91-38 16-136 29-186 7-28 36-28h222q14 0 24.5 8.5t11.5 21.5l28 184q49 16 90 37l142-107q9-9 24-9 13 0 25 10 129 119 165 170 7 8 7 22 0 12-8 23-15 21-51 66.5t-54 70.5q26 50 41 98l183 28q13 2 21 12.5t8 23.5z"/></svg>'
|
||||||
+ '<p :class="cancelBlockedClasses"><strong>'+strings.cancel_blocked+'</strong></p>'
|
+ '<p :class="cancelBlockedClasses"><strong>'+strings.cancel_blocked+'</strong></p>'
|
||||||
@@ -903,14 +903,6 @@ 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: {
|
computed: {
|
||||||
frameClasses: function () {
|
frameClasses: function () {
|
||||||
@@ -939,18 +931,7 @@ Vue.component('pretix-overlay', {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
mounted () {
|
|
||||||
window.addEventListener('message', this.onMessage, false);
|
|
||||||
},
|
|
||||||
unmounted () {
|
|
||||||
window.removeEventListener('message', this.onMessage, false);
|
|
||||||
},
|
|
||||||
methods: {
|
methods: {
|
||||||
onMessage: function(e) {
|
|
||||||
if (e.data.type && e.data.type == "pretix:widget:title") {
|
|
||||||
this.$el.querySelector("iframe").title = e.data.title;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
lightboxClose: function () {
|
lightboxClose: function () {
|
||||||
this.$root.lightbox = null;
|
this.$root.lightbox = null;
|
||||||
},
|
},
|
||||||
@@ -1582,14 +1563,14 @@ Vue.component('pretix-widget-event-calendar', {
|
|||||||
+ '<a class="pretix-widget-event-calendar-previous-month" href="#" @click.prevent.stop="prevmonth">« '
|
+ '<a class="pretix-widget-event-calendar-previous-month" href="#" @click.prevent.stop="prevmonth">« '
|
||||||
+ strings['previous_month']
|
+ strings['previous_month']
|
||||||
+ '</a> '
|
+ '</a> '
|
||||||
+ '<strong :id="aria_labelledby">{{ monthname }}</strong> '
|
+ '<strong>{{ monthname }}</strong> '
|
||||||
+ '<a class="pretix-widget-event-calendar-next-month" href="#" @click.prevent.stop="nextmonth">'
|
+ '<a class="pretix-widget-event-calendar-next-month" href="#" @click.prevent.stop="nextmonth">'
|
||||||
+ strings['next_month']
|
+ strings['next_month']
|
||||||
+ ' »</a>'
|
+ ' »</a>'
|
||||||
+ '</div>'
|
+ '</div>'
|
||||||
|
|
||||||
// Calendar
|
// Calendar
|
||||||
+ '<table class="pretix-widget-event-calendar-table" :id="id" tabindex="0" v-bind:aria-labelledby="aria_labelledby">'
|
+ '<table class="pretix-widget-event-calendar-table" :id="id" tabindex="0" v-bind:aria-label="monthname">'
|
||||||
+ '<thead>'
|
+ '<thead>'
|
||||||
+ '<tr>'
|
+ '<tr>'
|
||||||
+ '<th aria-label="' + strings['days']['MONDAY'] + '">' + strings['days']['MO'] + '</th>'
|
+ '<th aria-label="' + strings['days']['MONDAY'] + '">' + strings['days']['MO'] + '</th>'
|
||||||
@@ -1616,9 +1597,6 @@ Vue.component('pretix-widget-event-calendar', {
|
|||||||
id: function () {
|
id: function () {
|
||||||
return this.$root.html_id + "-event-calendar-table";
|
return this.$root.html_id + "-event-calendar-table";
|
||||||
},
|
},
|
||||||
aria_labelledby: function () {
|
|
||||||
return this.$root.html_id + "-event-calendar-table-label";
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
back_to_list: function () {
|
back_to_list: function () {
|
||||||
@@ -2204,22 +2182,11 @@ var create_overlay = function (app) {
|
|||||||
// show loading spinner only when previously no frame_src was set
|
// show loading spinner only when previously no frame_src was set
|
||||||
if (newValue && !oldValue) {
|
if (newValue && !oldValue) {
|
||||||
this.frame_loading = true;
|
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
|
// 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";
|
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;
|
app.$root.overlay = framechild;
|
||||||
|
|||||||
@@ -113,7 +113,7 @@
|
|||||||
line-height: normal;
|
line-height: normal;
|
||||||
border: 1px solid $input-border;
|
border: 1px solid $input-border;
|
||||||
border-radius: $input-border-radius;
|
border-radius: $input-border-radius;
|
||||||
min-height: $input-height-base;
|
height: $input-height-base;
|
||||||
padding: $padding-base-vertical $padding-base-horizontal;
|
padding: $padding-base-vertical $padding-base-horizontal;
|
||||||
color: $input-color;
|
color: $input-color;
|
||||||
background-color: $input-bg;
|
background-color: $input-bg;
|
||||||
|
|||||||
@@ -1901,11 +1901,10 @@ TEST_QUOTA_RES = {
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_quota_list(token_client, organizer, event, quota, item, item3, subevent):
|
def test_quota_list(token_client, organizer, event, quota, item, subevent):
|
||||||
quota.items.add(item3)
|
|
||||||
res = dict(TEST_QUOTA_RES)
|
res = dict(TEST_QUOTA_RES)
|
||||||
res["id"] = quota.pk
|
res["id"] = quota.pk
|
||||||
res["items"] = [item.pk, item3.pk]
|
res["items"] = [item.pk]
|
||||||
|
|
||||||
resp = token_client.get('/api/v1/organizers/{}/events/{}/quotas/'.format(organizer.slug, event.slug))
|
resp = token_client.get('/api/v1/organizers/{}/events/{}/quotas/'.format(organizer.slug, event.slug))
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
@@ -1923,13 +1922,6 @@ def test_quota_list(token_client, organizer, event, quota, item, item3, subevent
|
|||||||
'/api/v1/organizers/{}/events/{}/quotas/?subevent={}'.format(organizer.slug, event.slug, se2.pk))
|
'/api/v1/organizers/{}/events/{}/quotas/?subevent={}'.format(organizer.slug, event.slug, se2.pk))
|
||||||
assert [] == resp.data['results']
|
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
|
@pytest.mark.django_db
|
||||||
def test_quota_detail(token_client, organizer, event, quota, item):
|
def test_quota_detail(token_client, organizer, event, quota, item):
|
||||||
|
|||||||
@@ -961,42 +961,6 @@ def test_order_create_fee_as_percentage(token_client, organizer, event, item, qu
|
|||||||
assert o.total == Decimal('25.30')
|
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
|
@pytest.mark.django_db
|
||||||
def test_order_create_fee_with_auto_tax(token_client, organizer, event, item, quota, question, taxrule):
|
def test_order_create_fee_with_auto_tax(token_client, organizer, event, item, quota, question, taxrule):
|
||||||
res = copy.deepcopy(ORDER_CREATE_PAYLOAD)
|
res = copy.deepcopy(ORDER_CREATE_PAYLOAD)
|
||||||
|
|||||||
@@ -225,11 +225,8 @@ def test_full_clone_cross_organizer_differences():
|
|||||||
organizer2 = Organizer.objects.create(name='Dummy2', slug='dummy2')
|
organizer2 = Organizer.objects.create(name='Dummy2', slug='dummy2')
|
||||||
membership_type = organizer.membership_types.create(name="Membership")
|
membership_type = organizer.membership_types.create(name="Membership")
|
||||||
plan = SeatingPlan.objects.create(name="Plan", organizer=organizer, layout="{}")
|
plan = SeatingPlan.objects.create(name="Plan", organizer=organizer, layout="{}")
|
||||||
sc1_a = organizer.sales_channels.get(identifier="web")
|
sc = organizer.sales_channels.get(identifier="web")
|
||||||
sc1_b = organizer.sales_channels.create(identifier="b")
|
sc2 = organizer2.sales_channels.get(identifier="web")
|
||||||
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(
|
event = Event.objects.create(
|
||||||
organizer=organizer, name='Dummy', slug='dummy',
|
organizer=organizer, name='Dummy', slug='dummy',
|
||||||
@@ -240,20 +237,15 @@ def test_full_clone_cross_organizer_differences():
|
|||||||
seating_plan=plan,
|
seating_plan=plan,
|
||||||
all_sales_channels=False,
|
all_sales_channels=False,
|
||||||
)
|
)
|
||||||
event.limit_sales_channels.add(sc1_a)
|
event.limit_sales_channels.add(sc)
|
||||||
event.limit_sales_channels.add(sc1_b)
|
|
||||||
event.limit_sales_channels.add(sc1_c)
|
|
||||||
|
|
||||||
item1 = event.items.create(name="Ticket", default_price=23,
|
item1 = event.items.create(name="Ticket", default_price=23,
|
||||||
grant_membership_type=membership_type,
|
grant_membership_type=membership_type,
|
||||||
all_sales_channels=False)
|
all_sales_channels=False)
|
||||||
item1.limit_sales_channels.add(sc1_a)
|
item1.limit_sales_channels.add(sc)
|
||||||
item2 = event.items.create(name="T-shirt", default_price=15)
|
item2 = event.items.create(name="T-shirt", default_price=15)
|
||||||
item2.require_membership_types.add(membership_type)
|
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(
|
copied_event = Event.objects.create(
|
||||||
organizer=organizer2, name='Dummy2', slug='dummy2',
|
organizer=organizer2, name='Dummy2', slug='dummy2',
|
||||||
date_from=datetime.datetime(2022, 4, 15, 9, 0, 0, tzinfo=datetime.timezone.utc),
|
date_from=datetime.datetime(2022, 4, 15, 9, 0, 0, tzinfo=datetime.timezone.utc),
|
||||||
@@ -265,14 +257,11 @@ def test_full_clone_cross_organizer_differences():
|
|||||||
assert organizer2.seating_plans.count() == 1
|
assert organizer2.seating_plans.count() == 1
|
||||||
assert organizer2.seating_plans.get().layout == plan.layout
|
assert organizer2.seating_plans.get().layout == plan.layout
|
||||||
assert copied_event.seating_plan.organizer == organizer2
|
assert copied_event.seating_plan.organizer == organizer2
|
||||||
assert set(copied_event.limit_sales_channels.all()) == {sc2_a, sc2_c}
|
assert copied_event.limit_sales_channels.get() == sc2
|
||||||
assert event.seating_plan.organizer == organizer
|
assert event.seating_plan.organizer == organizer
|
||||||
|
|
||||||
copied_item1 = copied_event.items.get(name=item1.name)
|
copied_item1 = copied_event.items.get(name=item1.name)
|
||||||
copied_item2 = copied_event.items.get(name=item2.name)
|
copied_item2 = copied_event.items.get(name=item2.name)
|
||||||
assert copied_item1.grant_membership_type is None
|
assert copied_item1.grant_membership_type is None
|
||||||
assert copied_item2.require_membership_types.count() == 0
|
assert copied_item2.require_membership_types.count() == 0
|
||||||
assert copied_item1.limit_sales_channels.get() == sc2_a
|
assert copied_item1.limit_sales_channels.get() == sc2
|
||||||
|
|
||||||
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']
|
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import inspect
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from django.core.cache import cache
|
|
||||||
from django.test import override_settings
|
from django.test import override_settings
|
||||||
from django.utils import translation
|
from django.utils import translation
|
||||||
from django_scopes import scopes_disabled
|
from django_scopes import scopes_disabled
|
||||||
@@ -116,7 +115,6 @@ def fakeredis_client(monkeypatch):
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
):
|
):
|
||||||
cache.clear()
|
|
||||||
redis = get_redis_connection("default", True)
|
redis = get_redis_connection("default", True)
|
||||||
redis.flushall()
|
redis.flushall()
|
||||||
monkeypatch.setattr('django_redis.get_redis_connection', get_redis_connection, raising=False)
|
monkeypatch.setattr('django_redis.get_redis_connection', get_redis_connection, raising=False)
|
||||||
|
|||||||
Reference in New Issue
Block a user