Compare commits

..

48 Commits

Author SHA1 Message Date
Mira Weller
f2cab689af make data-toggle="tooltip" more accessible 2025-05-15 18:01:46 +02:00
Richard Schreiber
c17a090244 [A11y] Fix color-contrast for info/error-texts in widget (#5105) 2025-05-14 15:06:38 +02:00
Richard Schreiber
d103d8782b [A11y] fix calendar nav dropdown (#5078)
* [A11y] fix calendar nav dropdown

* update organizer calender

* keep cal-nav on one line

* simplify html

* unify calendar layouts

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

* add comment to explain complex css

* fix calendar dropdown due to too broad css-selector

* reduce spacing of top-nav

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

Now it follows the PrometheusText1.0.0 ContentType header specified from their code: 32d306854b/config/config.go (L516-L529)

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

---------

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

* fix contrast for skip-link

* fix overlay with back-to-organizer-link

* add fallback if no main-element

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

powered by weblate
2025-05-09 11:20:27 +02:00
Zona Vip
0ae98f072a Translations: Update Spanish
Currently translated at 100.0% (5869 of 5869 strings)

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

powered by weblate
2025-05-09 11:20:27 +02:00
KC Tseng
9b1a723001 Translations: Update Chinese (Traditional Han script)
Currently translated at 100.0% (244 of 244 strings)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* Use updated seat icon

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

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

---------

Co-authored-by: Richard Schreiber <schreiber@rami.io>
2025-05-06 11:14:28 +02:00
78 changed files with 2979 additions and 2046 deletions

View File

@@ -378,6 +378,8 @@ class EventSerializer(SalesChannelMigrationMixin, I18nAwareModelSerializer):
if prop.name not in meta_data: if prop.name not in meta_data:
current_object.delete() current_object.delete()
instance._prefetched_objects_cache.clear()
# Item Meta properties # Item Meta properties
if item_meta_properties is not None: if item_meta_properties is not None:
current = list(event.item_meta_properties.all()) current = list(event.item_meta_properties.all())
@@ -398,6 +400,8 @@ class EventSerializer(SalesChannelMigrationMixin, I18nAwareModelSerializer):
if prop.name not in list(item_meta_properties.keys()): if prop.name not in list(item_meta_properties.keys()):
prop.delete() prop.delete()
instance._prefetched_objects_cache.clear()
# Seats # Seats
if seat_category_mapping is not None or ('seating_plan' in validated_data and validated_data['seating_plan'] is None): if seat_category_mapping is not None or ('seating_plan' in validated_data and validated_data['seating_plan'] is None):
current_mappings = { current_mappings = {

View File

@@ -531,7 +531,7 @@ def send_invoices_to_organizer(sender, **kwargs):
if i.event.settings.invoice_email_organizer: if i.event.settings.invoice_email_organizer:
with language(i.event.settings.locale): with language(i.event.settings.locale):
mail( mail(
email=i.event.settings.invoice_email_organizer, email=[e.strip() for e in i.event.settings.invoice_email_organizer.split(",")],
subject=_('New invoice: {number}').format(number=i.number), subject=_('New invoice: {number}').format(number=i.number),
template=LazyI18nString.from_gettext(_( template=LazyI18nString.from_gettext(_(
'Hello,\n\n' 'Hello,\n\n'

View File

@@ -62,6 +62,9 @@ class VATIDTemporaryError(VATIDError):
def _validate_vat_id_NO(vat_id, country_code): def _validate_vat_id_NO(vat_id, country_code):
# Inspired by vat_moss library # Inspired by vat_moss library
if not vat_id.startswith("NO"):
# prefix is not usually used in Norway, but expected by vat_moss library
vat_id = "NO" + vat_id
try: try:
vat_id = vat_moss.id.normalize(vat_id) vat_id = vat_moss.id.normalize(vat_id)
except ValueError: except ValueError:

View File

@@ -71,6 +71,7 @@ from pretix.base.reldate import (
RelativeDateField, RelativeDateTimeField, RelativeDateWrapper, RelativeDateField, RelativeDateTimeField, RelativeDateWrapper,
SerializerRelativeDateField, SerializerRelativeDateTimeField, SerializerRelativeDateField, SerializerRelativeDateTimeField,
) )
from pretix.base.validators import multimail_validate
from pretix.control.forms import ( from pretix.control.forms import (
ExtFileField, FontSelect, MultipleLanguagesWidget, SingleLanguageWidget, ExtFileField, FontSelect, MultipleLanguagesWidget, SingleLanguageWidget,
) )
@@ -1233,14 +1234,18 @@ DEFAULTS = {
'invoice_email_organizer': { 'invoice_email_organizer': {
'default': '', 'default': '',
'type': str, 'type': str,
'form_class': forms.EmailField, 'form_class': forms.CharField,
'serializer_class': serializers.EmailField, 'serializer_class': serializers.CharField,
'form_kwargs': dict( 'form_kwargs': dict(
label=_("Email address to receive a copy of each invoice"), label=_("Email address to receive a copy of each invoice"),
help_text=_("Each newly created invoice will be sent to this email address shortly after creation. You can " help_text=_("Each newly created invoice will be sent to this email address shortly after creation. You can "
"use this for an automated import of invoices to your accounting system. The invoice will be " "use this for an automated import of invoices to your accounting system. The invoice will be "
"the only attachment of the email."), "the only attachment of the email."),
) validators=[multimail_validate],
),
'serializer_kwargs': dict(
validators=[multimail_validate],
),
}, },
'show_items_outside_presale_period': { 'show_items_outside_presale_period': {
'default': 'True', 'default': 'True',

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="14" viewBox="0 0 18 14"
class="{{ cls }}">
<path d="M7.713 3.573c-.787-.124-1.677.472-1.511 1.529l.857 3.473c.116.579.578 1.086 1.317 1.086h3.166v3.504c0 1.108 1.556 1.113 1.556.019V8.682c0-.536-.376-1.116-1.099-1.116L9.52 7.563l-.752-2.936c-.147-.648-.583-.981-1.055-1.055v.001Z"></path>
<path d="M4.48 5.835a.6.6 0 0 0-.674.725l.71 3.441c.287 1.284 1.39 2.114 2.495 2.114h2.273c.807 0 .811-1.215-.01-1.215H7.188c-.753 0-1.375-.45-1.563-1.289l-.672-3.293c-.062-.3-.26-.452-.474-.483ZM7.433.102a1.468 1.468 0 1 0 0 2.937 1.469 1.469 0 1 0 0-2.937Z"></path>
</svg>

After

Width:  |  Height:  |  Size: 636 B

View File

@@ -80,4 +80,4 @@ def serve_metrics(request):
content = "\n".join(output) + "\n" content = "\n".join(output) + "\n"
return HttpResponse(content) return HttpResponse(content, content_type="text/plain;version=1.0.0;escaping=allow-utf-8")

View File

@@ -85,7 +85,7 @@
<div class="checkbox"> <div class="checkbox">
<label> <label>
<input type="checkbox" name="delete" value="yes" /> <input type="checkbox" name="delete" value="yes" />
<b>{% trans "Permanently delete all orders created in test mode" %}</b> <strong>{% trans "Permanently delete all orders created in test mode" %}</strong>
</label> </label>
</div> </div>
<div class="text-right"> <div class="text-right">

View File

@@ -40,6 +40,7 @@
<th class="iconcol"></th> <th class="iconcol"></th>
<th class="iconcol"></th> <th class="iconcol"></th>
<th class="iconcol"></th> <th class="iconcol"></th>
<th class="iconcol"></th>
<th class="text-right flip">{% trans "Default price" %}</th> <th class="text-right flip">{% trans "Default price" %}</th>
<th class="action-col-2"><span class="sr-only">Edit</span></th> <th class="action-col-2"><span class="sr-only">Edit</span></th>
</tr> </tr>
@@ -111,6 +112,14 @@
<span class="fa fa-bars fa-fw text-muted" data-toggle="tooltip" title="{% trans "Product with variations" %}"></span> <span class="fa fa-bars fa-fw text-muted" data-toggle="tooltip" title="{% trans "Product with variations" %}"></span>
{% endif %} {% endif %}
</td> </td>
<td>
{% if i.requires_seat %}
<span data-toggle="tooltip"
title="{% if request.event.has_subevents %}{% trans "Product assigned to seating plan for one or more dates" context "subevent" %}{% else %}{% trans "Product assigned to seating plan" %}{% endif %}">
{% include "icons/seat.svg" with cls="svg-icon text-muted" %}
</span>
{% endif %}
</td>
<td> <td>
{% if i.category.is_addon %} {% if i.category.is_addon %}
<span class="fa fa-plus-square fa-fw text-muted" data-toggle="tooltip" <span class="fa fa-plus-square fa-fw text-muted" data-toggle="tooltip"

View File

@@ -413,10 +413,7 @@
{% endif %} {% endif %}
{% if line.seat %} {% if line.seat %}
<br /> <br />
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="14" viewBox="0 0 4.7624999 3.7041668" class="svg-icon"> {% include "icons/seat.svg" with cls="svg-icon" %}
<path
d="m 1.9592032,1.8522629e-4 c -0.21468,0 -0.38861,0.17394000371 -0.38861,0.38861000371 0,0.21466 0.17393,0.38861 0.38861,0.38861 0.21468,0 0.3886001,-0.17395 0.3886001,-0.38861 0,-0.21467 -0.1739201,-0.38861000371 -0.3886001,-0.38861000371 z m 0.1049,0.84543000371 c -0.20823,-0.0326 -0.44367,0.12499 -0.39998,0.40462997 l 0.20361,1.01854 c 0.0306,0.15316 0.15301,0.28732 0.3483,0.28732 h 0.8376701 v 0.92708 c 0,0.29313 0.41187,0.29447 0.41187,0.005 v -1.19115 c 0,-0.14168 -0.0995,-0.29507 -0.29094,-0.29507 l -0.65578,-10e-4 -0.1757,-0.87644 C 2.3042533,0.95300523 2.1890432,0.86500523 2.0641032,0.84547523 Z m -0.58549,0.44906997 c -0.0946,-0.0134 -0.20202,0.0625 -0.17829,0.19172 l 0.18759,0.91054 c 0.0763,0.33956 0.36802,0.55914 0.66042,0.55914 h 0.6015201 c 0.21356,0 0.21448,-0.32143 -0.003,-0.32143 H 2.1954632 c -0.19911,0 -0.36364,-0.11898 -0.41341,-0.34107 l -0.17777,-0.87126 c -0.0165,-0.0794 -0.0688,-0.11963 -0.12557,-0.12764 z"/>
</svg>
{{ line.seat }} {{ line.seat }}
{% endif %} {% endif %}
{% if line.voucher %} {% if line.voucher %}

View File

@@ -65,7 +65,7 @@ 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, Question, CartPosition, Item, ItemCategory, ItemVariation, Order, Question,
QuestionAnswer, QuestionOption, Quota, Voucher, QuestionAnswer, QuestionOption, Quota, SeatCategoryMapping, Voucher,
) )
from pretix.base.models.event import SubEvent from pretix.base.models.event import SubEvent
from pretix.base.models.items import ItemAddOn, ItemBundle, ItemMetaValue from pretix.base.models.items import ItemAddOn, ItemBundle, ItemMetaValue
@@ -101,10 +101,16 @@ class ItemList(ListView):
template_name = 'pretixcontrol/items/index.html' template_name = 'pretixcontrol/items/index.html'
def get_queryset(self): def get_queryset(self):
requires_seat = Exists(
SeatCategoryMapping.objects.filter(
product_id=OuterRef('pk'),
)
)
return Item.objects.filter( return Item.objects.filter(
event=self.request.event event=self.request.event
).select_related("tax_rule").annotate( ).select_related("tax_rule").annotate(
var_count=Count('variations') var_count=Count('variations'),
requires_seat=requires_seat,
).prefetch_related("category", "limit_sales_channels").order_by( ).prefetch_related("category", "limit_sales_channels").order_by(
F('category__position').asc(nulls_first=True), F('category__position').asc(nulls_first=True),
'category', 'position' 'category', 'position'

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="14" viewBox="0 0 4.7624999 3.7041668"> <svg xmlns="http://www.w3.org/2000/svg" width="18" height="14" viewBox="0 0 18 14">
<path <path d="M7.713 3.573c-.787-.124-1.677.472-1.511 1.529l.857 3.473c.116.579.578 1.086 1.317 1.086h3.166v3.504c0 1.108 1.556 1.113 1.556.019V8.682c0-.536-.376-1.116-1.099-1.116L9.52 7.563l-.752-2.936c-.147-.648-.583-.981-1.055-1.055v.001Z"></path>
d="m 1.9592032,1.8522629e-4 c -0.21468,0 -0.38861,0.17394000371 -0.38861,0.38861000371 0,0.21466 0.17393,0.38861 0.38861,0.38861 0.21468,0 0.3886001,-0.17395 0.3886001,-0.38861 0,-0.21467 -0.1739201,-0.38861000371 -0.3886001,-0.38861000371 z m 0.1049,0.84543000371 c -0.20823,-0.0326 -0.44367,0.12499 -0.39998,0.40462997 l 0.20361,1.01854 c 0.0306,0.15316 0.15301,0.28732 0.3483,0.28732 h 0.8376701 v 0.92708 c 0,0.29313 0.41187,0.29447 0.41187,0.005 v -1.19115 c 0,-0.14168 -0.0995,-0.29507 -0.29094,-0.29507 l -0.65578,-10e-4 -0.1757,-0.87644 C 2.3042533,0.95300523 2.1890432,0.86500523 2.0641032,0.84547523 Z m -0.58549,0.44906997 c -0.0946,-0.0134 -0.20202,0.0625 -0.17829,0.19172 l 0.18759,0.91054 c 0.0763,0.33956 0.36802,0.55914 0.66042,0.55914 h 0.6015201 c 0.21356,0 0.21448,-0.32143 -0.003,-0.32143 H 2.1954632 c -0.19911,0 -0.36364,-0.11898 -0.41341,-0.34107 l -0.17777,-0.87126 c -0.0165,-0.0794 -0.0688,-0.11963 -0.12557,-0.12764 z"/> <path d="M4.48 5.835a.6.6 0 0 0-.674.725l.71 3.441c.287 1.284 1.39 2.114 2.495 2.114h2.273c.807 0 .811-1.215-.01-1.215H7.188c-.753 0-1.375-.45-1.563-1.289l-.672-3.293c-.062-.3-.26-.452-.474-.483ZM7.433.102a1.468 1.468 0 1 0 0 2.937 1.469 1.469 0 1 0 0-2.937Z"></path>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 668 B

View File

@@ -5,7 +5,7 @@ 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-04-28 11:06+0000\n" "POT-Creation-Date: 2025-04-28 11:06+0000\n"
"PO-Revision-Date: 2025-04-28 11:32+0000\n" "PO-Revision-Date: 2025-05-06 16:20+0000\n"
"Last-Translator: Raphael Michel <michel@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"
@@ -14,7 +14,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\n" "X-Generator: Weblate 5.11.1\n"
"X-Poedit-Bookmarks: -1,-1,904,-1,-1,-1,-1,-1,-1,-1\n" "X-Poedit-Bookmarks: -1,-1,904,-1,-1,-1,-1,-1,-1,-1\n"
#: pretix/_base_settings.py:87 #: pretix/_base_settings.py:87
@@ -6103,7 +6103,7 @@ msgstr "Zertifikat"
#: pretix/base/models/orders.py:3468 pretix/control/views/event.py:390 #: pretix/base/models/orders.py:3468 pretix/control/views/event.py:390
#: pretix/control/views/event.py:395 #: pretix/control/views/event.py:395
msgid "Other" msgid "Other"
msgstr "Sonstiges" msgstr "Sonstige"
#: pretix/base/models/organizer.py:79 #: pretix/base/models/organizer.py:79
msgid "" msgid ""
@@ -15355,7 +15355,7 @@ msgstr ""
#: pretix/control/forms/organizer.py:195 #: pretix/control/forms/organizer.py:195
msgid "You need to choose an event." msgid "You need to choose an event."
msgstr "Sie müssen eine Veranstaltung auswählen." msgstr "Sie müssen eine Veranstaltung wählen."
#: pretix/control/forms/organizer.py:227 #: pretix/control/forms/organizer.py:227
msgid "You may set only one organizer domain." msgid "You may set only one organizer domain."
@@ -28084,7 +28084,7 @@ msgstr "Alternative Veranstalterdomain für einzelne Veranstaltungen"
#: pretix/multidomain/models.py:38 #: pretix/multidomain/models.py:38
msgid "Event domain" msgid "Event domain"
msgstr "Veranstaltungsdomain" msgstr "Veranstaltungs-Domain"
#: pretix/multidomain/models.py:44 #: pretix/multidomain/models.py:44
msgid "Domain name" msgid "Domain name"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:08+0000\n" "POT-Creation-Date: 2025-04-28 11:08+0000\n"
"PO-Revision-Date: 2025-04-28 11:32+0000\n" "PO-Revision-Date: 2025-05-12 14:33+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n" "Last-Translator: Raphael Michel <michel@rami.io>\n"
"Language-Team: German <https://translate.pretix.eu/projects/pretix/pretix-js/" "Language-Team: German <https://translate.pretix.eu/projects/pretix/pretix-js/"
"de/>\n" "de/>\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=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.11\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
@@ -742,7 +742,7 @@ msgstr "Bitte tragen Sie eine Menge für eines der Produkte ein."
#: pretix/static/pretixpresale/js/ui/main.js:510 #: pretix/static/pretixpresale/js/ui/main.js:510
msgid "required" msgid "required"
msgstr "verpflichtend" msgstr "erforderlich"
#: pretix/static/pretixpresale/js/ui/main.js:554 #: pretix/static/pretixpresale/js/ui/main.js:554
#: pretix/static/pretixpresale/js/ui/main.js:574 #: pretix/static/pretixpresale/js/ui/main.js:574

View File

@@ -8,8 +8,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-04-28 11:06+0000\n" "POT-Creation-Date: 2025-04-28 11:06+0000\n"
"PO-Revision-Date: 2025-04-28 11:32+0000\n" "PO-Revision-Date: 2025-05-09 22:00+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n" "Last-Translator: Luca Hammer <hammer@rami.io>\n"
"Language-Team: German (informal) <https://translate.pretix.eu/projects/" "Language-Team: German (informal) <https://translate.pretix.eu/projects/"
"pretix/pretix/de_Informal/>\n" "pretix/pretix/de_Informal/>\n"
"Language: de_Informal\n" "Language: de_Informal\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=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.11\n" "X-Generator: Weblate 5.11.4\n"
#: pretix/_base_settings.py:87 #: pretix/_base_settings.py:87
msgid "English" msgid "English"
@@ -6099,7 +6099,7 @@ msgstr "Zertifikat"
#: pretix/base/models/orders.py:3468 pretix/control/views/event.py:390 #: pretix/base/models/orders.py:3468 pretix/control/views/event.py:390
#: pretix/control/views/event.py:395 #: pretix/control/views/event.py:395
msgid "Other" msgid "Other"
msgstr "Sonstiges" msgstr "Sonstige"
#: pretix/base/models/organizer.py:79 #: pretix/base/models/organizer.py:79
msgid "" msgid ""
@@ -9464,10 +9464,10 @@ msgstr ""
"die Kurzform der Veranstaltung verwendet, gefolgt von einem Bindestrich. " "die Kurzform der Veranstaltung verwendet, gefolgt von einem Bindestrich. "
"Achtung: Wenn mehrere Veranstaltungen des selben Veranstalters den selben " "Achtung: Wenn mehrere Veranstaltungen des selben Veranstalters den selben "
"Wert in diesem Feld nutzen, teilen sie sich den Nummernkreis, d.h. jede " "Wert in diesem Feld nutzen, teilen sie sich den Nummernkreis, d.h. jede "
"vollständige Rechnungsnummer wird pro Veranstalter nur einmal ergeben. Diese " "vollständige Rechnungsnummer wird pro Veranstalter nur einmal vergeben. "
"Einstellung betrifft nur zukünftige Rechnungen. Du kannst die Platzhalter %Y " "Diese Einstellung betrifft nur zukünftige Rechnungen. Du kannst die "
"(mit Jahrhundert) oder %y (ohne Jahrhundert) verwenden um das Jahr der " "Platzhalter %Y (mit Jahrhundert) oder %y (ohne Jahrhundert) verwenden um das "
"Rechnung einzusetzen, oder %m bzw. %d für den Tag oder Monat." "Jahr der Rechnung einzusetzen, oder %m bzw. %d für den Tag oder Monat."
#: pretix/base/settings.py:697 pretix/base/settings.py:719 #: pretix/base/settings.py:697 pretix/base/settings.py:719
#, python-brace-format #, python-brace-format
@@ -15329,7 +15329,7 @@ msgstr ""
#: pretix/control/forms/organizer.py:195 #: pretix/control/forms/organizer.py:195
msgid "You need to choose an event." msgid "You need to choose an event."
msgstr "Du musst eine Veranstaltung auswählen." msgstr "Du musst eine Veranstaltung wählen."
#: pretix/control/forms/organizer.py:227 #: pretix/control/forms/organizer.py:227
msgid "You may set only one organizer domain." msgid "You may set only one organizer domain."
@@ -28036,7 +28036,7 @@ msgstr "Alternative Veranstalterdomain für einzelne Veranstaltungen"
#: pretix/multidomain/models.py:38 #: pretix/multidomain/models.py:38
msgid "Event domain" msgid "Event domain"
msgstr "Veranstaltungsdomain" msgstr "Veranstaltungs-Domain"
#: pretix/multidomain/models.py:44 #: pretix/multidomain/models.py:44
msgid "Domain name" msgid "Domain name"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-28 11:08+0000\n" "POT-Creation-Date: 2025-04-28 11:08+0000\n"
"PO-Revision-Date: 2025-04-28 12:21+0000\n" "PO-Revision-Date: 2025-05-12 14:33+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n" "Last-Translator: Raphael Michel <michel@rami.io>\n"
"Language-Team: German (informal) <https://translate.pretix.eu/projects/" "Language-Team: German (informal) <https://translate.pretix.eu/projects/"
"pretix/pretix-js/de_Informal/>\n" "pretix/pretix-js/de_Informal/>\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=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.11\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
@@ -741,7 +741,7 @@ msgstr "Bitte trage eine Menge für eines der Produkte ein."
#: pretix/static/pretixpresale/js/ui/main.js:510 #: pretix/static/pretixpresale/js/ui/main.js:510
msgid "required" msgid "required"
msgstr "verpflichtend" msgstr "erforderlich"
#: pretix/static/pretixpresale/js/ui/main.js:554 #: pretix/static/pretixpresale/js/ui/main.js:554
#: pretix/static/pretixpresale/js/ui/main.js:574 #: pretix/static/pretixpresale/js/ui/main.js:574

View File

@@ -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-04-28 11:06+0000\n" "POT-Creation-Date: 2025-04-28 11:06+0000\n"
"PO-Revision-Date: 2025-04-29 18:00+0000\n" "PO-Revision-Date: 2025-05-07 06:00+0000\n"
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n" "Last-Translator: Zona Vip <contacto@zonavip.mx>\n"
"Language-Team: Spanish <https://translate.pretix.eu/projects/pretix/pretix/" "Language-Team: Spanish <https://translate.pretix.eu/projects/pretix/pretix/"
"es/>\n" "es/>\n"
"Language: es\n" "Language: es\n"
@@ -6011,7 +6011,7 @@ msgstr ""
#: pretix/base/models/orders.py:2286 #: pretix/base/models/orders.py:2286
msgid "Service fee" msgid "Service fee"
msgstr "Gastos de gestión" msgstr "Cargo por servicio"
#: pretix/base/models/orders.py:2287 #: pretix/base/models/orders.py:2287
msgid "Payment fee" msgid "Payment fee"

View File

@@ -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-04-28 11:06+0000\n" "POT-Creation-Date: 2025-04-28 11:06+0000\n"
"PO-Revision-Date: 2025-02-12 15:27+0000\n" "PO-Revision-Date: 2025-05-04 16:00+0000\n"
"Last-Translator: Johanna Ketola <johanna.ketola@om.org>\n" "Last-Translator: Pekka Sarkola <pekka.sarkola@gispo.fi>\n"
"Language-Team: Finnish <https://translate.pretix.eu/projects/pretix/pretix/" "Language-Team: Finnish <https://translate.pretix.eu/projects/pretix/pretix/"
"fi/>\n" "fi/>\n"
"Language: fi\n" "Language: fi\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=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.9.2\n" "X-Generator: Weblate 5.11.1\n"
#: pretix/_base_settings.py:87 #: pretix/_base_settings.py:87
msgid "English" msgid "English"
@@ -57,7 +57,7 @@ msgstr "tšekki"
#: pretix/_base_settings.py:96 #: pretix/_base_settings.py:96
msgid "Croatian" msgid "Croatian"
msgstr "" msgstr "Kroatia"
#: pretix/_base_settings.py:97 #: pretix/_base_settings.py:97
msgid "Danish" msgid "Danish"
@@ -2887,7 +2887,7 @@ msgstr "Odottaa lunastusta"
#: pretix/control/templates/pretixcontrol/waitinglist/index.html:223 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:223
#: pretix/control/views/waitinglist.py:329 #: pretix/control/views/waitinglist.py:329
msgid "Voucher redeemed" msgid "Voucher redeemed"
msgstr "Kuponi lunastettu" msgstr "Kuponki lunastettu"
#: pretix/base/exporters/waitinglist.py:80 #: pretix/base/exporters/waitinglist.py:80
#: pretix/control/templates/pretixcontrol/waitinglist/index.html:116 #: pretix/control/templates/pretixcontrol/waitinglist/index.html:116
@@ -4245,7 +4245,7 @@ msgstr ""
#: pretix/base/models/discount.py:177 #: pretix/base/models/discount.py:177
msgctxt "subevent" msgctxt "subevent"
msgid "Available for dates starting from" msgid "Available for dates starting from"
msgstr "" msgstr "Saatavilla lähtien"
#: pretix/base/models/discount.py:182 #: pretix/base/models/discount.py:182
#, fuzzy #, fuzzy
@@ -9794,7 +9794,7 @@ msgstr ""
#: pretix/base/settings.py:1311 #: pretix/base/settings.py:1311
msgid "This shop represents an event" msgid "This shop represents an event"
msgstr "" msgstr "Tämä kauppaa koskee tapahtumaa"
#: pretix/base/settings.py:1313 #: pretix/base/settings.py:1313
msgid "" msgid ""
@@ -12805,15 +12805,15 @@ msgstr "Tehtävä on suoritettu."
#: pretix/control/forms/__init__.py:205 #: pretix/control/forms/__init__.py:205
#, python-brace-format #, python-brace-format
msgid "Please do not upload files larger than {size}!" msgid "Please do not upload files larger than {size}!"
msgstr "" msgstr "Älä lataa tiedostoja, jotka ovat suurempia kuin {size}!"
#: pretix/control/forms/__init__.py:227 #: pretix/control/forms/__init__.py:227
msgid "Filetype not allowed!" msgid "Filetype not allowed!"
msgstr "" msgstr "Tiedostomuoto ei ole sallittu!"
#: pretix/control/forms/__init__.py:330 #: pretix/control/forms/__init__.py:330
msgid "Community translations" msgid "Community translations"
msgstr "" msgstr "Yhteisön käännökset"
#: pretix/control/forms/__init__.py:332 #: pretix/control/forms/__init__.py:332
#, python-brace-format #, python-brace-format
@@ -12843,7 +12843,7 @@ msgstr ""
#: pretix/control/forms/checkin.py:176 #: pretix/control/forms/checkin.py:176
msgid "Barcode" msgid "Barcode"
msgstr "" msgstr "Viivakoodi"
#: pretix/control/forms/checkin.py:179 #: pretix/control/forms/checkin.py:179
msgid "Check-in time" msgid "Check-in time"
@@ -12869,11 +12869,11 @@ msgstr "Kaikki portit"
#: pretix/control/forms/event.py:91 #: pretix/control/forms/event.py:91
msgid "Use languages" msgid "Use languages"
msgstr "" msgstr "Käytä kieliä"
#: pretix/control/forms/event.py:93 #: pretix/control/forms/event.py:93
msgid "Choose all languages that your event should be available in." msgid "Choose all languages that your event should be available in."
msgstr "" msgstr "Valitse kaikki kielet, joita tapahtumasi käyttää."
#: pretix/control/forms/event.py:96 #: pretix/control/forms/event.py:96
msgid "This is an event series" msgid "This is an event series"
@@ -12886,19 +12886,19 @@ msgstr ""
#: pretix/control/forms/event.py:136 pretix/control/forms/event.py:518 #: pretix/control/forms/event.py:136 pretix/control/forms/event.py:518
msgid "Event timezone" msgid "Event timezone"
msgstr "" msgstr "Tapahtuman aikavyöhyke"
#: pretix/control/forms/event.py:143 #: pretix/control/forms/event.py:143
msgid "I don't want to specify taxes now" msgid "I don't want to specify taxes now"
msgstr "" msgstr "En halua määritellä veroja nyt"
#: pretix/control/forms/event.py:144 #: pretix/control/forms/event.py:144
msgid "You can always configure tax rates later." msgid "You can always configure tax rates later."
msgstr "" msgstr "Voit aina määritellä verojen määrn myöhemmin."
#: pretix/control/forms/event.py:148 #: pretix/control/forms/event.py:148
msgid "Sales tax rate" msgid "Sales tax rate"
msgstr "" msgstr "Arvonlisävero"
#: pretix/control/forms/event.py:149 #: pretix/control/forms/event.py:149
msgid "" msgid ""
@@ -12927,6 +12927,8 @@ msgid ""
"Sample Conference Center\n" "Sample Conference Center\n"
"Heidelberg, Germany" "Heidelberg, Germany"
msgstr "" msgstr ""
"Esimerkki konferenssikeskus\n"
"Helsinki, Finland"
#: pretix/control/forms/event.py:232 #: pretix/control/forms/event.py:232
msgid "Your default locale must be specified." msgid "Your default locale must be specified."
@@ -12956,7 +12958,7 @@ msgstr "Oletus ({value})"
#: pretix/control/forms/event.py:384 pretix/control/forms/event.py:397 #: pretix/control/forms/event.py:384 pretix/control/forms/event.py:397
msgid "Domain" msgid "Domain"
msgstr "" msgstr "Verkkotunnus"
#: pretix/control/forms/event.py:388 #: pretix/control/forms/event.py:388
msgid "You can configure this in your organizer settings." msgid "You can configure this in your organizer settings."
@@ -13009,7 +13011,7 @@ msgstr ""
#: pretix/control/forms/event.py:689 #: pretix/control/forms/event.py:689
msgid "Do not ask" msgid "Do not ask"
msgstr "" msgstr "Älä kysy"
#: pretix/control/forms/event.py:690 #: pretix/control/forms/event.py:690
msgid "Ask, but do not require input" msgid "Ask, but do not require input"
@@ -13393,7 +13395,7 @@ msgstr ""
#: pretix/control/forms/event.py:1723 #: pretix/control/forms/event.py:1723
msgid "Payment via Stripe" msgid "Payment via Stripe"
msgstr "" msgstr "Maksut Stripen kautta"
#: pretix/control/forms/event.py:1724 #: pretix/control/forms/event.py:1724
msgid "" msgid ""
@@ -13894,7 +13896,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/checkin/checkins.html:67 #: pretix/control/templates/pretixcontrol/checkin/checkins.html:67
#: pretix/plugins/checkinlists/exporters.py:761 #: pretix/plugins/checkinlists/exporters.py:761
msgid "Device" msgid "Device"
msgstr "" msgstr "Laite"
#: pretix/control/forms/filter.py:2389 pretix/control/forms/filter.py:2424 #: pretix/control/forms/filter.py:2389 pretix/control/forms/filter.py:2424
#: pretix/control/forms/filter.py:2615 #: pretix/control/forms/filter.py:2615
@@ -14229,7 +14231,7 @@ msgstr ""
#: pretix/control/forms/item.py:447 #: pretix/control/forms/item.py:447
msgid "Size" msgid "Size"
msgstr "" msgstr "Koko"
#: pretix/control/forms/item.py:448 #: pretix/control/forms/item.py:448
msgid "Number of tickets" msgid "Number of tickets"
@@ -14332,7 +14334,7 @@ msgstr ""
#: pretix/control/forms/item.py:1079 #: pretix/control/forms/item.py:1079
msgid "Add-ons" msgid "Add-ons"
msgstr "" msgstr "Lisäosat"
#: pretix/control/forms/item.py:1103 #: pretix/control/forms/item.py:1103
msgid "You added the same add-on category twice" msgid "You added the same add-on category twice"
@@ -14361,7 +14363,7 @@ msgstr ""
#: pretix/control/forms/item.py:1236 pretix/control/forms/orders.py:367 #: pretix/control/forms/item.py:1236 pretix/control/forms/orders.py:367
#: pretix/control/forms/orders.py:557 #: pretix/control/forms/orders.py:557
msgid "inactive" msgid "inactive"
msgstr "" msgstr "Ei käytössä"
#: pretix/control/forms/mailsetup.py:42 #: pretix/control/forms/mailsetup.py:42
msgid "Hostname" msgid "Hostname"
@@ -14588,7 +14590,7 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/event/checkout_membership.html:23 #: pretix/presale/templates/pretixpresale/event/checkout_membership.html:23
#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:100 #: pretix/presale/templates/pretixpresale/event/checkout_questions.html:100
msgid "Seat" msgid "Seat"
msgstr "" msgstr "Istumapaikka"
#: pretix/control/forms/orders.py:336 #: pretix/control/forms/orders.py:336
#: pretix/control/templates/pretixcontrol/order/change.html:182 #: pretix/control/templates/pretixcontrol/order/change.html:182
@@ -14609,7 +14611,7 @@ msgstr ""
#: pretix/control/forms/orders.py:552 pretix/control/forms/orders.py:570 #: pretix/control/forms/orders.py:552 pretix/control/forms/orders.py:570
#: pretix/control/forms/orders.py:598 #: pretix/control/forms/orders.py:598
msgid "(Unchanged)" msgid "(Unchanged)"
msgstr "" msgstr "(Muuttumaton)"
#: pretix/control/forms/orders.py:469 pretix/control/forms/orders.py:593 #: pretix/control/forms/orders.py:469 pretix/control/forms/orders.py:593
msgid "New price (gross)" msgid "New price (gross)"
@@ -14694,7 +14696,7 @@ msgstr "Liitä laskut"
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_inspect.html:20 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_inspect.html:20
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_list.html:30 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_list.html:30
msgid "Recipient" msgid "Recipient"
msgstr "" msgstr "Vastaanottaja"
#: pretix/control/forms/orders.py:768 #: pretix/control/forms/orders.py:768
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
@@ -15032,7 +15034,7 @@ msgstr "Myyntikanava samalla tunnuksella on jo olemassa."
#: pretix/control/templates/pretixcontrol/items/question_edit.html:139 #: pretix/control/templates/pretixcontrol/items/question_edit.html:139
msgctxt "form" msgctxt "form"
msgid "Optional" msgid "Optional"
msgstr "" msgstr "Valinnainen"
#: pretix/control/forms/renderers.py:148 #: pretix/control/forms/renderers.py:148
#: pretix/control/templates/pretixcontrol/organizers/device_bulk_edit.html:26 #: pretix/control/templates/pretixcontrol/organizers/device_bulk_edit.html:26
@@ -15045,23 +15047,23 @@ msgstr "muuta"
#: pretix/control/forms/rrule.py:35 #: pretix/control/forms/rrule.py:35
msgid "year(s)" msgid "year(s)"
msgstr "" msgstr "vuosi(a)"
#: pretix/control/forms/rrule.py:36 #: pretix/control/forms/rrule.py:36
msgid "month(s)" msgid "month(s)"
msgstr "" msgstr "kuukausi(a)"
#: pretix/control/forms/rrule.py:37 #: pretix/control/forms/rrule.py:37
msgid "week(s)" msgid "week(s)"
msgstr "" msgstr "viikko(ja)"
#: pretix/control/forms/rrule.py:38 #: pretix/control/forms/rrule.py:38
msgid "day(s)" msgid "day(s)"
msgstr "" msgstr "päiviä"
#: pretix/control/forms/rrule.py:43 #: pretix/control/forms/rrule.py:43
msgid "Interval" msgid "Interval"
msgstr "" msgstr "Aikaväli"
#: pretix/control/forms/rrule.py:69 #: pretix/control/forms/rrule.py:69
msgid "Number of repetitions" msgid "Number of repetitions"
@@ -15074,27 +15076,27 @@ msgstr ""
#: pretix/control/forms/rrule.py:86 pretix/control/forms/rrule.py:133 #: pretix/control/forms/rrule.py:86 pretix/control/forms/rrule.py:133
msgctxt "rrule" msgctxt "rrule"
msgid "first" msgid "first"
msgstr "" msgstr "ensimmäinen"
#: pretix/control/forms/rrule.py:87 pretix/control/forms/rrule.py:134 #: pretix/control/forms/rrule.py:87 pretix/control/forms/rrule.py:134
msgctxt "rrule" msgctxt "rrule"
msgid "second" msgid "second"
msgstr "" msgstr "toinen"
#: pretix/control/forms/rrule.py:88 pretix/control/forms/rrule.py:135 #: pretix/control/forms/rrule.py:88 pretix/control/forms/rrule.py:135
msgctxt "rrule" msgctxt "rrule"
msgid "third" msgid "third"
msgstr "" msgstr "kolmas"
#: pretix/control/forms/rrule.py:89 pretix/control/forms/rrule.py:136 #: pretix/control/forms/rrule.py:89 pretix/control/forms/rrule.py:136
msgctxt "rrule" msgctxt "rrule"
msgid "last" msgid "last"
msgstr "" msgstr "viimeinen"
#: pretix/control/forms/rrule.py:110 pretix/control/forms/rrule.py:149 #: pretix/control/forms/rrule.py:110 pretix/control/forms/rrule.py:149
#: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:21 #: pretix/presale/templates/pretixpresale/fragment_calendar_nav.html:21
msgid "Day" msgid "Day"
msgstr "" msgstr "Päivä"
#: pretix/control/forms/rrule.py:112 pretix/control/forms/rrule.py:151 #: pretix/control/forms/rrule.py:112 pretix/control/forms/rrule.py:151
msgid "Weekend day" msgid "Weekend day"
@@ -15140,7 +15142,7 @@ msgstr ""
#: pretix/control/forms/vouchers.py:262 #: pretix/control/forms/vouchers.py:262
msgid "Codes" msgid "Codes"
msgstr "" msgstr "Koodit"
#: pretix/control/forms/vouchers.py:264 #: pretix/control/forms/vouchers.py:264
msgid "" msgid ""
@@ -15191,11 +15193,11 @@ msgstr ""
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_update.html:42 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_update.html:42
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/send_form.html:25 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/send_form.html:25
msgid "Recipients" msgid "Recipients"
msgstr "" msgstr "Vastaanottajaat"
#: pretix/control/forms/vouchers.py:292 #: pretix/control/forms/vouchers.py:292
msgid "or" msgid "or"
msgstr "" msgstr "tai"
#: pretix/control/forms/vouchers.py:296 #: pretix/control/forms/vouchers.py:296
msgid "" msgid ""
@@ -15444,7 +15446,7 @@ msgstr ""
#: pretix/control/logdisplay.py:343 pretix/control/logdisplay.py:345 #: pretix/control/logdisplay.py:343 pretix/control/logdisplay.py:345
#: pretix/control/logdisplay.py:891 pretix/control/logdisplay.py:893 #: pretix/control/logdisplay.py:891 pretix/control/logdisplay.py:893
msgid "(unknown)" msgid "(unknown)"
msgstr "" msgstr "(tuntematon)"
#: pretix/control/logdisplay.py:365 #: pretix/control/logdisplay.py:365
#, python-brace-format #, python-brace-format
@@ -16544,7 +16546,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/dashboard.html:3 #: pretix/control/templates/pretixcontrol/dashboard.html:3
#: pretix/control/templates/pretixcontrol/dashboard.html:5 #: pretix/control/templates/pretixcontrol/dashboard.html:5
msgid "Dashboard" msgid "Dashboard"
msgstr "" msgstr "Kojelauta"
#: pretix/control/navigation.py:49 pretix/control/navigation.py:382 #: pretix/control/navigation.py:49 pretix/control/navigation.py:382
#: pretix/control/navigation.py:487 #: pretix/control/navigation.py:487
@@ -16559,7 +16561,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/organizers/mail.html:19 #: pretix/control/templates/pretixcontrol/organizers/mail.html:19
#: pretix/control/templates/pretixcontrol/organizers/property_edit.html:15 #: pretix/control/templates/pretixcontrol/organizers/property_edit.html:15
msgid "General" msgid "General"
msgstr "" msgstr "Yleinen"
#: pretix/control/navigation.py:57 #: pretix/control/navigation.py:57
#: pretix/control/templates/pretixcontrol/event/quick_setup.html:151 #: pretix/control/templates/pretixcontrol/event/quick_setup.html:151
@@ -16571,7 +16573,7 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:43 #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:43
#: pretix/presale/templates/pretixpresale/event/order.html:86 #: pretix/presale/templates/pretixpresale/event/order.html:86
msgid "Payment" msgid "Payment"
msgstr "" msgstr "Maksut"
#: pretix/control/navigation.py:73 pretix/control/views/event.py:1516 #: pretix/control/navigation.py:73 pretix/control/views/event.py:1516
#: pretix/control/views/event.py:1518 pretix/control/views/event.py:1550 #: pretix/control/views/event.py:1518 pretix/control/views/event.py:1550
@@ -16593,17 +16595,17 @@ msgstr ""
#: pretix/control/navigation.py:97 #: pretix/control/navigation.py:97
msgid "Invoicing" msgid "Invoicing"
msgstr "" msgstr "Laskutus"
#: pretix/control/navigation.py:105 #: pretix/control/navigation.py:105
msgctxt "action" msgctxt "action"
msgid "Cancellation" msgid "Cancellation"
msgstr "" msgstr "Peruutus"
#: pretix/control/navigation.py:113 #: pretix/control/navigation.py:113
#: pretix/control/templates/pretixcontrol/event/widget.html:8 #: pretix/control/templates/pretixcontrol/event/widget.html:8
msgid "Widget" msgid "Widget"
msgstr "" msgstr "Pienoisohjelma"
#: pretix/control/navigation.py:126 pretix/control/navigation.py:435 #: pretix/control/navigation.py:126 pretix/control/navigation.py:435
#: pretix/control/navigation.py:480 #: pretix/control/navigation.py:480
@@ -16613,11 +16615,11 @@ msgstr ""
#: pretix/plugins/returnurl/apps.py:40 #: pretix/plugins/returnurl/apps.py:40
#: pretix/plugins/ticketoutputpdf/apps.py:55 #: pretix/plugins/ticketoutputpdf/apps.py:55
msgid "Settings" msgid "Settings"
msgstr "" msgstr "Asetukset"
#: pretix/control/navigation.py:164 #: pretix/control/navigation.py:164
msgid "Categories" msgid "Categories"
msgstr "" msgstr "Kategoriat"
#: pretix/control/navigation.py:180 #: pretix/control/navigation.py:180
msgid "Discounts" msgid "Discounts"
@@ -16625,7 +16627,7 @@ msgstr "Alennukset"
#: pretix/control/navigation.py:213 #: pretix/control/navigation.py:213
msgid "Overview" msgid "Overview"
msgstr "" msgstr "Yleiskuva"
#: pretix/control/navigation.py:221 #: pretix/control/navigation.py:221
#: pretix/control/templates/pretixcontrol/order/index.html:828 #: pretix/control/templates/pretixcontrol/order/index.html:828
@@ -16635,11 +16637,11 @@ msgstr ""
#: pretix/plugins/reports/accountingreport.py:684 #: pretix/plugins/reports/accountingreport.py:684
#: pretix/presale/templates/pretixpresale/event/order.html:137 #: pretix/presale/templates/pretixpresale/event/order.html:137
msgid "Refunds" msgid "Refunds"
msgstr "" msgstr "Maksupalautukset"
#: pretix/control/navigation.py:247 #: pretix/control/navigation.py:247
msgid "Import" msgid "Import"
msgstr "" msgstr "Tuonti"
#: pretix/control/navigation.py:276 #: pretix/control/navigation.py:276
msgid "All vouchers" msgid "All vouchers"
@@ -16647,12 +16649,12 @@ msgstr ""
#: pretix/control/navigation.py:284 #: pretix/control/navigation.py:284
msgid "Tags" msgid "Tags"
msgstr "" msgstr "Tagit"
#: pretix/control/navigation.py:296 #: pretix/control/navigation.py:296
msgctxt "navigation" msgctxt "navigation"
msgid "Check-in" msgid "Check-in"
msgstr "" msgstr "Ilmoittautumiset"
#: pretix/control/navigation.py:313 #: pretix/control/navigation.py:313
#: pretix/control/templates/pretixcontrol/checkin/checkins.html:4 #: pretix/control/templates/pretixcontrol/checkin/checkins.html:4
@@ -16672,20 +16674,20 @@ msgstr "Etsi"
#: pretix/plugins/reports/accountingreport.py:677 #: pretix/plugins/reports/accountingreport.py:677
#: pretix/plugins/reports/accountingreport.py:871 #: pretix/plugins/reports/accountingreport.py:871
msgid "Payments" msgid "Payments"
msgstr "" msgstr "Maksut"
#: pretix/control/navigation.py:376 #: pretix/control/navigation.py:376
msgid "User settings" msgid "User settings"
msgstr "" msgstr "Käyttäjän asetukset"
#: pretix/control/navigation.py:387 #: pretix/control/navigation.py:387
#: pretix/control/templates/pretixcontrol/user/settings.html:16 #: pretix/control/templates/pretixcontrol/user/settings.html:16
msgid "Notifications" msgid "Notifications"
msgstr "" msgstr "Ilmoitukset"
#: pretix/control/navigation.py:392 #: pretix/control/navigation.py:392
msgid "2FA" msgid "2FA"
msgstr "" msgstr "2FA"
#: pretix/control/navigation.py:397 #: pretix/control/navigation.py:397
msgid "Authorized apps" msgid "Authorized apps"
@@ -16713,7 +16715,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/global_settings_base.html:5 #: pretix/control/templates/pretixcontrol/global_settings_base.html:5
#: pretix/control/templates/pretixcontrol/global_settings_base.html:7 #: pretix/control/templates/pretixcontrol/global_settings_base.html:7
msgid "Global settings" msgid "Global settings"
msgstr "" msgstr "Yleiset asetukset"
#: pretix/control/navigation.py:440 #: pretix/control/navigation.py:440
msgid "Update check" msgid "Update check"
@@ -16761,7 +16763,7 @@ msgstr "SSO palveluntarjoajat"
#: pretix/control/navigation.py:626 pretix/control/navigation.py:633 #: pretix/control/navigation.py:626 pretix/control/navigation.py:633
msgid "Devices" msgid "Devices"
msgstr "" msgstr "Laitteet"
#: pretix/control/permissions.py:72 pretix/control/permissions.py:109 #: pretix/control/permissions.py:72 pretix/control/permissions.py:109
#: pretix/control/permissions.py:140 pretix/control/permissions.py:157 #: pretix/control/permissions.py:140 pretix/control/permissions.py:157
@@ -16798,13 +16800,13 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/auth/invite.html:23 #: pretix/control/templates/pretixcontrol/auth/invite.html:23
#: pretix/control/templates/pretixcontrol/auth/register.html:18 #: pretix/control/templates/pretixcontrol/auth/register.html:18
msgid "Login" msgid "Login"
msgstr "" msgstr "Sisäänkirjautuminen"
#: pretix/control/templates/pretixcontrol/auth/invite.html:27 #: pretix/control/templates/pretixcontrol/auth/invite.html:27
#: pretix/control/templates/pretixcontrol/auth/login.html:43 #: pretix/control/templates/pretixcontrol/auth/login.html:43
#: pretix/control/templates/pretixcontrol/auth/register.html:22 #: pretix/control/templates/pretixcontrol/auth/register.html:22
msgid "Register" msgid "Register"
msgstr "" msgstr "Rekisteröinti"
#: pretix/control/templates/pretixcontrol/auth/login.html:27 #: pretix/control/templates/pretixcontrol/auth/login.html:27
#: pretix/presale/templates/pretixpresale/fragment_login_status.html:20 #: pretix/presale/templates/pretixpresale/fragment_login_status.html:20
@@ -16830,7 +16832,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/auth/login_2fa.html:14 #: pretix/control/templates/pretixcontrol/auth/login_2fa.html:14
msgid "Token" msgid "Token"
msgstr "" msgstr "Token"
#: pretix/control/templates/pretixcontrol/auth/login_2fa.html:18 #: pretix/control/templates/pretixcontrol/auth/login_2fa.html:18
#: pretix/control/templates/pretixcontrol/user/reauth.html:22 #: pretix/control/templates/pretixcontrol/user/reauth.html:22
@@ -16903,7 +16905,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/auth/oauth_authorization.html:54 #: pretix/control/templates/pretixcontrol/auth/oauth_authorization.html:54
msgid "Error:" msgid "Error:"
msgstr "" msgstr "Virhe:"
#: pretix/control/templates/pretixcontrol/auth/recover.html:7 #: pretix/control/templates/pretixcontrol/auth/recover.html:7
msgid "Set new password" msgid "Set new password"
@@ -16979,7 +16981,7 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/organizers/customer_password.html:20 #: pretix/presale/templates/pretixpresale/organizers/customer_password.html:20
#: pretix/presale/templates/pretixpresale/organizers/customer_setpassword.html:20 #: pretix/presale/templates/pretixpresale/organizers/customer_setpassword.html:20
msgid "Save" msgid "Save"
msgstr "" msgstr "Tallenna"
#: pretix/control/templates/pretixcontrol/auth/register.html:7 #: pretix/control/templates/pretixcontrol/auth/register.html:7
msgid "Create a new account" msgid "Create a new account"
@@ -17129,7 +17131,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/boxoffice/payment.html:11 #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:11
msgid "ID" msgid "ID"
msgstr "" msgstr "ID"
#: pretix/control/templates/pretixcontrol/boxoffice/payment.html:15 #: pretix/control/templates/pretixcontrol/boxoffice/payment.html:15
msgid "ZVT Terminal" msgid "ZVT Terminal"
@@ -17350,7 +17352,7 @@ msgstr[1] ""
#: pretix/presale/templates/pretixpresale/event/position_change.html:24 #: pretix/presale/templates/pretixpresale/event/position_change.html:24
#: pretix/presale/templates/pretixpresale/event/position_modify.html:44 #: pretix/presale/templates/pretixpresale/event/position_modify.html:44
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr "Peruuta"
#: pretix/control/templates/pretixcontrol/checkin/bulk_revert_confirm.html:27 #: pretix/control/templates/pretixcontrol/checkin/bulk_revert_confirm.html:27
#: pretix/control/templates/pretixcontrol/checkin/list_delete.html:24 #: pretix/control/templates/pretixcontrol/checkin/list_delete.html:24
@@ -17396,7 +17398,7 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/organizers/customer_profile_delete.html:34 #: pretix/presale/templates/pretixpresale/organizers/customer_profile_delete.html:34
#: pretix/presale/templates/pretixpresale/organizers/customer_profiles.html:29 #: pretix/presale/templates/pretixpresale/organizers/customer_profiles.html:29
msgid "Delete" msgid "Delete"
msgstr "" msgstr "Poista"
#: pretix/control/templates/pretixcontrol/checkin/checkins.html:9 #: pretix/control/templates/pretixcontrol/checkin/checkins.html:9
#: pretix/control/templates/pretixcontrol/checkin/checkins.html:41 #: pretix/control/templates/pretixcontrol/checkin/checkins.html:41
@@ -17445,7 +17447,7 @@ msgstr ""
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_form.html:91 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/import_form.html:91
#: pretix/presale/templates/pretixpresale/fragment_event_list_filter.html:21 #: pretix/presale/templates/pretixpresale/fragment_event_list_filter.html:21
msgid "Filter" msgid "Filter"
msgstr "" msgstr "Suodatin"
#: pretix/control/templates/pretixcontrol/checkin/checkins.html:50 #: pretix/control/templates/pretixcontrol/checkin/checkins.html:50
msgid "Your search did not match any check-ins." msgid "Your search did not match any check-ins."
@@ -17464,7 +17466,7 @@ msgstr ""
#: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/transaction_list.html:14 #: pretix/plugins/banktransfer/templates/pretixplugins/banktransfer/transaction_list.html:14
#: pretix/plugins/checkinlists/exporters.py:766 #: pretix/plugins/checkinlists/exporters.py:766
msgid "Result" msgid "Result"
msgstr "" msgstr "Tulos"
#: pretix/control/templates/pretixcontrol/checkin/checkins.html:78 #: pretix/control/templates/pretixcontrol/checkin/checkins.html:78
#: pretix/control/templates/pretixcontrol/order/index.html:392 #: pretix/control/templates/pretixcontrol/order/index.html:392
@@ -17534,11 +17536,11 @@ msgstr "Ilmoittautumis-simulaattori"
#: pretix/control/templates/pretixcontrol/orders/overview.html:20 #: pretix/control/templates/pretixcontrol/orders/overview.html:20
#: pretix/plugins/ticketoutputpdf/ticketoutput.py:64 #: pretix/plugins/ticketoutputpdf/ticketoutput.py:64
msgid "PDF" msgid "PDF"
msgstr "" msgstr "PDF"
#: pretix/control/templates/pretixcontrol/checkin/index.html:32 #: pretix/control/templates/pretixcontrol/checkin/index.html:32
msgid "CSV" msgid "CSV"
msgstr "" msgstr "CSV"
#: pretix/control/templates/pretixcontrol/checkin/index.html:73 #: pretix/control/templates/pretixcontrol/checkin/index.html:73
msgid "No attendee record was found." msgid "No attendee record was found."
@@ -17556,7 +17558,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/checkin/index.html:114 #: pretix/control/templates/pretixcontrol/checkin/index.html:114
#: pretix/control/templates/pretixcontrol/user/staff_session_edit.html:29 #: pretix/control/templates/pretixcontrol/user/staff_session_edit.html:29
msgid "Timestamp" msgid "Timestamp"
msgstr "" msgstr "Aikaleima"
#: pretix/control/templates/pretixcontrol/checkin/index.html:125 #: pretix/control/templates/pretixcontrol/checkin/index.html:125
#: pretix/control/templates/pretixcontrol/orders/index.html:165 #: pretix/control/templates/pretixcontrol/orders/index.html:165
@@ -17622,7 +17624,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/event/tax_edit.html:33 #: pretix/control/templates/pretixcontrol/event/tax_edit.html:33
#: pretix/control/templates/pretixcontrol/items/question_edit.html:128 #: pretix/control/templates/pretixcontrol/items/question_edit.html:128
msgid "Advanced" msgid "Advanced"
msgstr "" msgstr "Edistynyt"
#: pretix/control/templates/pretixcontrol/checkin/list_edit.html:50 #: pretix/control/templates/pretixcontrol/checkin/list_edit.html:50
msgid "" msgid ""
@@ -17669,7 +17671,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/vouchers/bulk.html:117 #: pretix/control/templates/pretixcontrol/vouchers/bulk.html:117
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/send_form.html:85 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/send_form.html:85
msgid "Edit" msgid "Edit"
msgstr "" msgstr "Muokkaa"
#: pretix/control/templates/pretixcontrol/checkin/list_edit.html:89 #: pretix/control/templates/pretixcontrol/checkin/list_edit.html:89
msgid "Visualize" msgid "Visualize"
@@ -17740,7 +17742,7 @@ msgstr ""
#: pretix/plugins/badges/templates/pretixplugins/badges/index.html:72 #: pretix/plugins/badges/templates/pretixplugins/badges/index.html:72
#: pretix/plugins/ticketoutputpdf/templates/pretixplugins/ticketoutputpdf/index.html:69 #: pretix/plugins/ticketoutputpdf/templates/pretixplugins/ticketoutputpdf/index.html:69
msgid "Clone" msgid "Clone"
msgstr "" msgstr "Monista"
#: pretix/control/templates/pretixcontrol/checkin/simulator.html:22 #: pretix/control/templates/pretixcontrol/checkin/simulator.html:22
msgid "" msgid ""
@@ -18211,7 +18213,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:271 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:271
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:275 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:275
msgid "Optional" msgid "Optional"
msgstr "" msgstr "Valinnainen"
#: pretix/control/templates/pretixcontrol/event/fragment_geodata.html:22 #: pretix/control/templates/pretixcontrol/event/fragment_geodata.html:22
#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:57 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:57
@@ -18537,7 +18539,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/vouchers/bulk.html:97 #: pretix/control/templates/pretixcontrol/vouchers/bulk.html:97
#: pretix/control/templates/pretixcontrol/vouchers/bulk.html:120 #: pretix/control/templates/pretixcontrol/vouchers/bulk.html:120
msgid "Preview" msgid "Preview"
msgstr "" msgstr "Esikatselu"
#: pretix/control/templates/pretixcontrol/event/mail.html:87 #: pretix/control/templates/pretixcontrol/event/mail.html:87
#: pretix/control/templates/pretixcontrol/organizers/mail.html:58 #: pretix/control/templates/pretixcontrol/organizers/mail.html:58
@@ -18615,7 +18617,7 @@ msgstr "Ota jonotuslista käyttöön"
#: pretix/control/templates/pretixcontrol/event/payment.html:66 #: pretix/control/templates/pretixcontrol/event/payment.html:66
msgid "Deadlines" msgid "Deadlines"
msgstr "" msgstr "Määräpäivät"
#: pretix/control/templates/pretixcontrol/event/payment.html:74 #: pretix/control/templates/pretixcontrol/event/payment.html:74
msgctxt "unit" msgctxt "unit"
@@ -18629,7 +18631,7 @@ msgstr "päivää"
#: pretix/presale/templates/pretixpresale/event/position_change_confirm.html:25 #: pretix/presale/templates/pretixpresale/event/position_change_confirm.html:25
#: pretix/presale/templates/pretixpresale/event/position_giftcard.html:16 #: pretix/presale/templates/pretixpresale/event/position_giftcard.html:16
msgid "Back" msgid "Back"
msgstr "" msgstr "Takaisin"
#: pretix/control/templates/pretixcontrol/event/payment_provider.html:15 #: pretix/control/templates/pretixcontrol/event/payment_provider.html:15
msgid "Payment provider:" msgid "Payment provider:"
@@ -18637,7 +18639,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/event/payment_provider.html:21 #: pretix/control/templates/pretixcontrol/event/payment_provider.html:21
msgid "Warning:" msgid "Warning:"
msgstr "" msgstr "Varoitus:"
#: pretix/control/templates/pretixcontrol/event/payment_provider.html:22 #: pretix/control/templates/pretixcontrol/event/payment_provider.html:22
msgid "" msgid ""
@@ -18755,7 +18757,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/event/settings_base.html:10 #: pretix/control/templates/pretixcontrol/event/settings_base.html:10
#: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:18 #: pretix/presale/templates/pretixpresale/event/fragment_product_list.html:18
msgid "Congratulations!" msgid "Congratulations!"
msgstr "" msgstr "Onnittelut!"
#: pretix/control/templates/pretixcontrol/event/quick_setup.html:16 #: pretix/control/templates/pretixcontrol/event/quick_setup.html:16
#: pretix/control/templates/pretixcontrol/event/settings_base.html:12 #: pretix/control/templates/pretixcontrol/event/settings_base.html:12
@@ -18806,7 +18808,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/event/quick_setup.html:132 #: pretix/control/templates/pretixcontrol/event/quick_setup.html:132
#: pretix/control/views/event.py:378 #: pretix/control/views/event.py:378
msgid "Features" msgid "Features"
msgstr "" msgstr "Ominaisuudet"
#: pretix/control/templates/pretixcontrol/event/quick_setup.html:134 #: pretix/control/templates/pretixcontrol/event/quick_setup.html:134
msgid "" msgid ""
@@ -18848,7 +18850,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/event/settings.html:21 #: pretix/control/templates/pretixcontrol/event/settings.html:21
msgid "Basics" msgid "Basics"
msgstr "" msgstr "Perusteet"
#: pretix/control/templates/pretixcontrol/event/settings.html:40 #: pretix/control/templates/pretixcontrol/event/settings.html:40
#: pretix/control/templates/pretixcontrol/item/create.html:144 #: pretix/control/templates/pretixcontrol/item/create.html:144
@@ -18864,7 +18866,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/event/settings.html:59 #: pretix/control/templates/pretixcontrol/event/settings.html:59
#: pretix/control/templates/pretixcontrol/organizers/edit.html:126 #: pretix/control/templates/pretixcontrol/organizers/edit.html:126
msgid "Localization" msgid "Localization"
msgstr "" msgstr "Lokalisointi"
#: pretix/control/templates/pretixcontrol/event/settings.html:66 #: pretix/control/templates/pretixcontrol/event/settings.html:66
msgid "Customer and attendee data" msgid "Customer and attendee data"
@@ -18904,7 +18906,7 @@ msgstr "Muutoksia tehtyihin tilauksiin"
#: pretix/control/templates/pretixcontrol/event/settings.html:130 #: pretix/control/templates/pretixcontrol/event/settings.html:130
msgid "Texts" msgid "Texts"
msgstr "" msgstr "Tekstit"
#: pretix/control/templates/pretixcontrol/event/settings.html:137 #: pretix/control/templates/pretixcontrol/event/settings.html:137
msgid "Confirmation text" msgid "Confirmation text"
@@ -19826,7 +19828,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/item/include_addons.html:28 #: pretix/control/templates/pretixcontrol/item/include_addons.html:28
#: pretix/control/templates/pretixcontrol/item/include_addons.html:62 #: pretix/control/templates/pretixcontrol/item/include_addons.html:62
msgid "Add-On" msgid "Add-On"
msgstr "" msgstr "Lisäosa"
#: pretix/control/templates/pretixcontrol/item/include_addons.html:86 #: pretix/control/templates/pretixcontrol/item/include_addons.html:86
msgid "Add a new add-on" msgid "Add a new add-on"
@@ -19871,7 +19873,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/item/index.html:154 #: pretix/control/templates/pretixcontrol/item/index.html:154
msgid "Availability" msgid "Availability"
msgstr "" msgstr "Saatavuus"
#: pretix/control/templates/pretixcontrol/item/index.html:184 #: pretix/control/templates/pretixcontrol/item/index.html:184
msgid "Tickets & Badges" msgid "Tickets & Badges"
@@ -19889,7 +19891,7 @@ msgstr "Kesto"
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:355 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:355
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:364 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:364
msgid "minutes" msgid "minutes"
msgstr "" msgstr "minuuttia"
#: pretix/control/templates/pretixcontrol/item/index.html:217 #: pretix/control/templates/pretixcontrol/item/index.html:217
msgid "hours" msgid "hours"
@@ -20013,7 +20015,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/items/discount.html:43 #: pretix/control/templates/pretixcontrol/items/discount.html:43
#: pretix/plugins/stripe/templates/pretixplugins/stripe/checkout_payment_form_card.html:53 #: pretix/plugins/stripe/templates/pretixplugins/stripe/checkout_payment_form_card.html:53
msgid "OR" msgid "OR"
msgstr "" msgstr "TAI"
#: pretix/control/templates/pretixcontrol/items/discount.html:53 #: pretix/control/templates/pretixcontrol/items/discount.html:53
msgctxt "discount" msgctxt "discount"
@@ -20112,7 +20114,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/items/fragment_quota_availability.html:3 #: pretix/control/templates/pretixcontrol/items/fragment_quota_availability.html:3
msgid "Closed" msgid "Closed"
msgstr "" msgstr "Suljettu"
#: pretix/control/templates/pretixcontrol/items/fragment_quota_availability.html:5 #: pretix/control/templates/pretixcontrol/items/fragment_quota_availability.html:5
msgid "Sold out (pending orders)" msgid "Sold out (pending orders)"
@@ -20125,7 +20127,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/items/fragment_quota_availability.html:11 #: pretix/control/templates/pretixcontrol/items/fragment_quota_availability.html:11
msgid "Unlimited" msgid "Unlimited"
msgstr "" msgstr "Rajoittamaton"
#: pretix/control/templates/pretixcontrol/items/fragment_quota_availability.html:14 #: pretix/control/templates/pretixcontrol/items/fragment_quota_availability.html:14
msgid "Fully reserved" msgid "Fully reserved"
@@ -20144,7 +20146,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/order/index.html:19 #: pretix/control/templates/pretixcontrol/order/index.html:19
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:7 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:7
msgid "taxes" msgid "taxes"
msgstr "" msgstr "verot"
#: pretix/control/templates/pretixcontrol/items/index.html:10 #: pretix/control/templates/pretixcontrol/items/index.html:10
msgid "" msgid ""
@@ -20551,7 +20553,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/oauth/authorized.html:18 #: pretix/control/templates/pretixcontrol/oauth/authorized.html:18
msgid "Permissions" msgid "Permissions"
msgstr "" msgstr "Oikeudet"
#: pretix/control/templates/pretixcontrol/oauth/authorized.html:59 #: pretix/control/templates/pretixcontrol/oauth/authorized.html:59
msgid "No applications have access to your pretix account." msgid "No applications have access to your pretix account."
@@ -20838,7 +20840,7 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/event/checkout_questions.html:40 #: pretix/presale/templates/pretixpresale/event/checkout_questions.html:40
#: pretix/presale/templates/pretixpresale/event/order_modify.html:30 #: pretix/presale/templates/pretixpresale/event/order_modify.html:30
msgid "(optional)" msgid "(optional)"
msgstr "" msgstr "(valinnainen)"
#: pretix/control/templates/pretixcontrol/order/delete.html:4 #: pretix/control/templates/pretixcontrol/order/delete.html:4
#: pretix/control/templates/pretixcontrol/order/delete.html:8 #: pretix/control/templates/pretixcontrol/order/delete.html:8
@@ -21115,7 +21117,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/order/index.html:690 #: pretix/control/templates/pretixcontrol/order/index.html:690
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:444 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:444
msgid "Taxes" msgid "Taxes"
msgstr "" msgstr "Verot"
#: pretix/control/templates/pretixcontrol/order/index.html:699 #: pretix/control/templates/pretixcontrol/order/index.html:699
#: pretix/control/templates/pretixcontrol/orders/overview.html:89 #: pretix/control/templates/pretixcontrol/orders/overview.html:89
@@ -21173,7 +21175,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/order/index.html:839 #: pretix/control/templates/pretixcontrol/order/index.html:839
#: pretix/control/templates/pretixcontrol/orders/refunds.html:60 #: pretix/control/templates/pretixcontrol/orders/refunds.html:60
msgid "Source" msgid "Source"
msgstr "" msgstr "Lähde"
#: pretix/control/templates/pretixcontrol/order/index.html:872 #: pretix/control/templates/pretixcontrol/order/index.html:872
msgid "Cancel transfer" msgid "Cancel transfer"
@@ -21199,7 +21201,7 @@ msgstr ""
#: pretix/presale/templates/pretixpresale/event/base.html:140 #: pretix/presale/templates/pretixpresale/event/base.html:140
#: pretix/presale/templates/pretixpresale/event/timemachine.html:30 #: pretix/presale/templates/pretixpresale/event/timemachine.html:30
msgid "Change" msgid "Change"
msgstr "" msgstr "Vaihda"
#: pretix/control/templates/pretixcontrol/order/index.html:954 #: pretix/control/templates/pretixcontrol/order/index.html:954
#: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:91 #: pretix/presale/templates/pretixpresale/event/checkout_confirm.html:91
@@ -21467,7 +21469,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/order/sendmail.html:44 #: pretix/control/templates/pretixcontrol/order/sendmail.html:44
#: pretix/plugins/sendmail/templates/pretixplugins/sendmail/send_form.html:89 #: pretix/plugins/sendmail/templates/pretixplugins/sendmail/send_form.html:89
msgid "Send" msgid "Send"
msgstr "" msgstr "Lähetä"
#: pretix/control/templates/pretixcontrol/order/transactions.html:5 #: pretix/control/templates/pretixcontrol/order/transactions.html:5
#: pretix/control/templates/pretixcontrol/order/transactions.html:8 #: pretix/control/templates/pretixcontrol/order/transactions.html:8
@@ -21996,7 +21998,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/orders/overview.html:10 #: pretix/control/templates/pretixcontrol/orders/overview.html:10
msgid "Sales" msgid "Sales"
msgstr "" msgstr "Myynti"
#: pretix/control/templates/pretixcontrol/orders/overview.html:11 #: pretix/control/templates/pretixcontrol/orders/overview.html:11
msgid "Revenue (gross)" msgid "Revenue (gross)"
@@ -22026,7 +22028,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/orders/overview.html:80 #: pretix/control/templates/pretixcontrol/orders/overview.html:80
#: pretix/plugins/reports/exporters.py:382 #: pretix/plugins/reports/exporters.py:382
msgid "Purchased" msgid "Purchased"
msgstr "" msgstr "Ostettu"
#: pretix/control/templates/pretixcontrol/orders/overview.html:189 #: pretix/control/templates/pretixcontrol/orders/overview.html:189
msgid "" msgid ""
@@ -22604,7 +22606,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/organizers/team_members.html:67 #: pretix/control/templates/pretixcontrol/organizers/team_members.html:67
#: pretix/control/templates/pretixcontrol/organizers/team_members.html:120 #: pretix/control/templates/pretixcontrol/organizers/team_members.html:120
msgid "Remove" msgid "Remove"
msgstr "" msgstr "Poista"
#: pretix/control/templates/pretixcontrol/organizers/giftcard_acceptance_list.html:66 #: pretix/control/templates/pretixcontrol/organizers/giftcard_acceptance_list.html:66
msgid "Accept" msgid "Accept"
@@ -22911,7 +22913,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/organizers/team_members.html:21 #: pretix/control/templates/pretixcontrol/organizers/team_members.html:21
msgid "Member" msgid "Member"
msgstr "" msgstr "Jäsen"
#: pretix/control/templates/pretixcontrol/organizers/team_members.html:36 #: pretix/control/templates/pretixcontrol/organizers/team_members.html:36
msgid "Two-factor authentication enabled" msgid "Two-factor authentication enabled"
@@ -22939,7 +22941,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/organizers/team_members.html:85 #: pretix/control/templates/pretixcontrol/organizers/team_members.html:85
#: pretix/control/templates/pretixcontrol/organizers/team_members.html:134 #: pretix/control/templates/pretixcontrol/organizers/team_members.html:134
msgid "Add" msgid "Add"
msgstr "" msgstr "Lisää"
#: pretix/control/templates/pretixcontrol/organizers/team_members.html:92 #: pretix/control/templates/pretixcontrol/organizers/team_members.html:92
msgid "API tokens" msgid "API tokens"
@@ -22955,7 +22957,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/organizers/teams.html:38 #: pretix/control/templates/pretixcontrol/organizers/teams.html:38
msgid "Members" msgid "Members"
msgstr "" msgstr "Jäsenet"
#: pretix/control/templates/pretixcontrol/organizers/teams.html:54 #: pretix/control/templates/pretixcontrol/organizers/teams.html:54
#, python-format #, python-format
@@ -23007,7 +23009,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/organizers/webhook_logs.html:73 #: pretix/control/templates/pretixcontrol/organizers/webhook_logs.html:73
msgid "Failed" msgid "Failed"
msgstr "" msgstr "Epäonnistunut"
#: pretix/control/templates/pretixcontrol/organizers/webhook_logs.html:83 #: pretix/control/templates/pretixcontrol/organizers/webhook_logs.html:83
msgid "Request URL" msgid "Request URL"
@@ -23090,7 +23092,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/pdf/index.html:31 #: pretix/control/templates/pretixcontrol/pdf/index.html:31
#: pretix/plugins/banktransfer/refund_export.py:46 #: pretix/plugins/banktransfer/refund_export.py:46
msgid "Code" msgid "Code"
msgstr "" msgstr "Koodi"
#: pretix/control/templates/pretixcontrol/pdf/index.html:35 #: pretix/control/templates/pretixcontrol/pdf/index.html:35
msgid "Paste" msgid "Paste"
@@ -23158,7 +23160,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/pdf/index.html:141 #: pretix/control/templates/pretixcontrol/pdf/index.html:141
#: pretix/control/templates/pretixcontrol/pdf/index.html:173 #: pretix/control/templates/pretixcontrol/pdf/index.html:173
msgid "Loading…" msgid "Loading…"
msgstr "" msgstr "Lataa…"
#: pretix/control/templates/pretixcontrol/pdf/index.html:144 #: pretix/control/templates/pretixcontrol/pdf/index.html:144
msgid "Start editing" msgid "Start editing"
@@ -23166,12 +23168,12 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/pdf/index.html:159 #: pretix/control/templates/pretixcontrol/pdf/index.html:159
msgid "Cut" msgid "Cut"
msgstr "" msgstr "Leikkaa"
#: pretix/control/templates/pretixcontrol/pdf/index.html:163 #: pretix/control/templates/pretixcontrol/pdf/index.html:163
#: pretix/control/templates/pretixcontrol/vouchers/detail.html:54 #: pretix/control/templates/pretixcontrol/vouchers/detail.html:54
msgid "Copy" msgid "Copy"
msgstr "" msgstr "Kopioi"
#: pretix/control/templates/pretixcontrol/pdf/index.html:180 #: pretix/control/templates/pretixcontrol/pdf/index.html:180
msgid "Layout name" msgid "Layout name"
@@ -23225,15 +23227,15 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/pdf/index.html:254 #: pretix/control/templates/pretixcontrol/pdf/index.html:254
msgid "Style" msgid "Style"
msgstr "" msgstr "Tyyli"
#: pretix/control/templates/pretixcontrol/pdf/index.html:256 #: pretix/control/templates/pretixcontrol/pdf/index.html:256
msgid "Dark" msgid "Dark"
msgstr "" msgstr "Tumma"
#: pretix/control/templates/pretixcontrol/pdf/index.html:257 #: pretix/control/templates/pretixcontrol/pdf/index.html:257
msgid "Light" msgid "Light"
msgstr "" msgstr "Vaalea"
#: pretix/control/templates/pretixcontrol/pdf/index.html:263 #: pretix/control/templates/pretixcontrol/pdf/index.html:263
msgid "Image content" msgid "Image content"
@@ -23262,7 +23264,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/pdf/index.html:292 #: pretix/control/templates/pretixcontrol/pdf/index.html:292
msgid "Other…" msgid "Other…"
msgstr "" msgstr "Muu…"
#: pretix/control/templates/pretixcontrol/pdf/index.html:302 #: pretix/control/templates/pretixcontrol/pdf/index.html:302
msgid "Show available placeholders" msgid "Show available placeholders"
@@ -23534,7 +23536,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:258 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:258
msgctxt "subevent" msgctxt "subevent"
msgid "Preview" msgid "Preview"
msgstr "" msgstr "Esikatselu"
#: pretix/control/templates/pretixcontrol/subevents/bulk.html:265 #: pretix/control/templates/pretixcontrol/subevents/bulk.html:265
msgctxt "subevent" msgctxt "subevent"
@@ -24040,13 +24042,13 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/user/notifications.html:72 #: pretix/control/templates/pretixcontrol/user/notifications.html:72
#: pretix/control/templates/pretixcontrol/user/settings.html:20 #: pretix/control/templates/pretixcontrol/user/settings.html:20
msgid "On" msgid "On"
msgstr "" msgstr "Päällä"
#: pretix/control/templates/pretixcontrol/user/notifications.html:70 #: pretix/control/templates/pretixcontrol/user/notifications.html:70
#: pretix/control/templates/pretixcontrol/user/notifications.html:71 #: pretix/control/templates/pretixcontrol/user/notifications.html:71
#: pretix/control/templates/pretixcontrol/user/settings.html:24 #: pretix/control/templates/pretixcontrol/user/settings.html:24
msgid "Off" msgid "Off"
msgstr "" msgstr "Poissa"
#: pretix/control/templates/pretixcontrol/user/notifications.html:75 #: pretix/control/templates/pretixcontrol/user/notifications.html:75
msgid "You have no permission to receive this notification" msgid "You have no permission to receive this notification"
@@ -24206,7 +24208,7 @@ msgstr "Etuliite (valinnainen)"
#: pretix/control/templates/pretixcontrol/vouchers/bulk.html:21 #: pretix/control/templates/pretixcontrol/vouchers/bulk.html:21
msgctxt "number_of_things" msgctxt "number_of_things"
msgid "Number" msgid "Number"
msgstr "" msgstr "Numero"
#: pretix/control/templates/pretixcontrol/vouchers/bulk.html:25 #: pretix/control/templates/pretixcontrol/vouchers/bulk.html:25
msgid "Generate random codes" msgid "Generate random codes"
@@ -25084,7 +25086,7 @@ msgstr "Kaikkia kohteita ei ole valittu."
#: pretix/control/views/item.py:471 #: pretix/control/views/item.py:471
msgid "Street" msgid "Street"
msgstr "" msgstr "Katu"
#: pretix/control/views/item.py:573 pretix/control/views/item.py:747 #: pretix/control/views/item.py:573 pretix/control/views/item.py:747
#: pretix/control/views/item.py:769 #: pretix/control/views/item.py:769
@@ -25702,7 +25704,7 @@ msgstr ""
#: pretix/control/views/organizer.py:570 #: pretix/control/views/organizer.py:570
msgid "Administrators" msgid "Administrators"
msgstr "" msgstr "Ylläpitäjät"
#: pretix/control/views/organizer.py:633 #: pretix/control/views/organizer.py:633
msgid "The team has been created. You can now add members to the team." msgid "The team has been created. You can now add members to the team."

View File

@@ -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-04-28 11:06+0000\n" "POT-Creation-Date: 2025-04-28 11:06+0000\n"
"PO-Revision-Date: 2025-04-29 01:00+0000\n" "PO-Revision-Date: 2025-05-05 09:40+0000\n"
"Last-Translator: Davide Manzella <manzella.davide97@gmail.com>\n" "Last-Translator: \"Luca Martinelli [Sannita]\" <sannita@gmail.com>\n"
"Language-Team: Italian <https://translate.pretix.eu/projects/pretix/pretix/" "Language-Team: Italian <https://translate.pretix.eu/projects/pretix/pretix/"
"it/>\n" "it/>\n"
"Language: it\n" "Language: it\n"
@@ -2988,12 +2988,9 @@ msgid "Repeat password"
msgstr "Ripeti la password" msgstr "Ripeti la password"
#: pretix/base/forms/questions.py:134 pretix/base/forms/questions.py:256 #: pretix/base/forms/questions.py:134 pretix/base/forms/questions.py:256
#, fuzzy
#| msgctxt "subevent"
#| msgid "No date was specified."
msgctxt "name_salutation" msgctxt "name_salutation"
msgid "not specified" msgid "not specified"
msgstr "Nessuna data è stata specificata." msgstr "non specificato"
#: pretix/base/forms/questions.py:219 #: pretix/base/forms/questions.py:219
msgid "Please do not use special characters in names." msgid "Please do not use special characters in names."
@@ -4272,14 +4269,12 @@ msgstr ""
#: pretix/base/models/discount.py:177 #: pretix/base/models/discount.py:177
msgctxt "subevent" msgctxt "subevent"
msgid "Available for dates starting from" msgid "Available for dates starting from"
msgstr "" msgstr "Disponibile per le date a partire da"
#: pretix/base/models/discount.py:182 #: pretix/base/models/discount.py:182
#, fuzzy
#| msgid "Available until"
msgctxt "subevent" msgctxt "subevent"
msgid "Available for dates starting until" msgid "Available for dates starting until"
msgstr "Disponibile fino a" msgstr "Disponibile per le date fino a"
#: pretix/base/models/discount.py:214 #: pretix/base/models/discount.py:214
msgid "" msgid ""
@@ -5592,20 +5587,12 @@ msgid "Unknown country code."
msgstr "Codice del paese sconosciuto." msgstr "Codice del paese sconosciuto."
#: pretix/base/models/items.py:1921 pretix/base/models/items.py:1923 #: pretix/base/models/items.py:1921 pretix/base/models/items.py:1923
#, fuzzy
#| msgid "The maximum count needs to be greater than the minimum count."
msgid "The maximum date must not be before the minimum value." msgid "The maximum date must not be before the minimum value."
msgstr "Il conteggio massimo deve essere superiore al conteggio minimo." msgstr "La data massima non può essere prima del valore minimo."
#: pretix/base/models/items.py:1925 #: pretix/base/models/items.py:1925
#, fuzzy
#| msgid ""
#| "The maximum number of usages may not be lower than the minimum number of "
#| "usages."
msgid "The maximum value must not be lower than the minimum value." msgid "The maximum value must not be lower than the minimum value."
msgstr "" msgstr "Il valore massimo non può essere inferiore al valore minimo."
"Il numero massimo di utilizzi non può essere inferiore al numero minimo di "
"utilizzi."
#: pretix/base/models/items.py:1942 #: pretix/base/models/items.py:1942
#: pretix/control/templates/pretixcontrol/items/question.html:90 #: pretix/control/templates/pretixcontrol/items/question.html:90
@@ -9084,37 +9071,44 @@ msgstr "Permetti utilizzo di plugin con restrizioni"
#: pretix/base/settings.py:158 #: pretix/base/settings.py:158
msgid "Allow customers to create accounts" msgid "Allow customers to create accounts"
msgstr "Permetti ai clienti di creare account" msgstr "Permetti ai clienti di creare un account"
#: pretix/base/settings.py:159 #: pretix/base/settings.py:159
msgid "" msgid ""
"This will allow customers to sign up for an account on your ticket shop. " "This will allow customers to sign up for an account on your ticket shop. "
"This is a prerequisite for some advanced features like memberships." "This is a prerequisite for some advanced features like memberships."
msgstr "" msgstr ""
"Ciò consentirà ai clienti di registrare un account sul vostro negozio di "
"biglietti. Questo è un prerequisito per alcune funzioni avanzate come le "
"iscrizioni."
#: pretix/base/settings.py:169 #: pretix/base/settings.py:169
msgid "Allow customers to log in with email address and password" msgid "Allow customers to log in with email address and password"
msgstr "" msgstr "Permetti ai clienti di loggarsi con un indirizzo email e una password"
#: pretix/base/settings.py:170 #: pretix/base/settings.py:170
msgid "" msgid ""
"If disabled, you will need to connect one or more single-sign-on providers." "If disabled, you will need to connect one or more single-sign-on providers."
msgstr "" msgstr ""
"Se è disattivato, sarà necessario collegare uno o più provider single-sign-"
"on."
#: pretix/base/settings.py:180 #: pretix/base/settings.py:180
#, fuzzy
msgid "Match orders based on email address" msgid "Match orders based on email address"
msgstr "Email partecipante" msgstr "Abbina gli ordini in base all'indirizzo e-mail"
#: pretix/base/settings.py:181 #: pretix/base/settings.py:181
msgid "" msgid ""
"This will allow registered customers to access orders made with the same " "This will allow registered customers to access orders made with the same "
"email address, even if the customer was not logged in during the purchase." "email address, even if the customer was not logged in during the purchase."
msgstr "" msgstr ""
"Ciò consentirà ai clienti registrati di accedere agli ordini effettuati con "
"lo stesso indirizzo e-mail, anche se il cliente non ha effettuato il login "
"durante l'acquisto."
#: pretix/base/settings.py:191 #: pretix/base/settings.py:191
msgid "Activate re-usable media" msgid "Activate re-usable media"
msgstr "" msgstr "Attiva supporti riutilizzabili"
#: pretix/base/settings.py:192 #: pretix/base/settings.py:192
msgid "" msgid ""
@@ -9122,53 +9116,61 @@ msgid ""
"with physical media such as wristbands or chip cards that may be re-used for " "with physical media such as wristbands or chip cards that may be re-used for "
"different tickets or gift cards later." "different tickets or gift cards later."
msgstr "" msgstr ""
"La funzione di supporto riutilizzabile consente di collegare i biglietti e "
"le carte regalo con supporti fisici come braccialetti o chip card che "
"possono essere riutilizzati in seguito per altri biglietti o carte regalo."
#: pretix/base/settings.py:218 #: pretix/base/settings.py:218
#, fuzzy
msgid "Length of barcodes" msgid "Length of barcodes"
msgstr "Codice biglietto" msgstr "Lunghezza dei codici a barre"
#: pretix/base/settings.py:247 #: pretix/base/settings.py:247
msgid "" msgid ""
"Automatically create a new gift card if a previously unknown chip is seen" "Automatically create a new gift card if a previously unknown chip is seen"
msgstr "" msgstr ""
"Crea automaticamente una nuova carta regalo se viene visto un chip "
"precedentemente sconosciuto"
#: pretix/base/settings.py:260 pretix/base/settings.py:291 #: pretix/base/settings.py:260 pretix/base/settings.py:291
#, fuzzy
msgid "Gift card currency" msgid "Gift card currency"
msgstr "Codice Gift Card" msgstr "Valuta della carta regalo"
#: pretix/base/settings.py:278 #: pretix/base/settings.py:278
msgid "Automatically create a new gift card if a new chip is encoded" msgid "Automatically create a new gift card if a new chip is encoded"
msgstr "" msgstr ""
"Crea automaticamente una nuova carta regalo se viene codificato un nuovo chip"
#: pretix/base/settings.py:300 #: pretix/base/settings.py:300
msgid "Use UID protection feature of NFC chip" msgid "Use UID protection feature of NFC chip"
msgstr "" msgstr "Utilizza la funzione di protezione UID del chip NFC"
#: pretix/base/settings.py:316 #: pretix/base/settings.py:316
msgid "Maximum number of items per order" msgid "Maximum number of items per order"
msgstr "" msgstr "Numero massimo di elementi per ordine"
#: pretix/base/settings.py:317 #: pretix/base/settings.py:317
msgid "Add-on products will not be counted." msgid "Add-on products will not be counted."
msgstr "" msgstr "I prodotti aggiuntivi non verranno conteggiati."
#: pretix/base/settings.py:326 #: pretix/base/settings.py:326
msgid "" msgid ""
"Show net prices instead of gross prices in the product list (not " "Show net prices instead of gross prices in the product list (not "
"recommended!)" "recommended!)"
msgstr "" msgstr ""
"Mostra il prezzo netto anziché il prezzo lordo nella lista dei prodotti (non "
"raccomandato!)"
#: pretix/base/settings.py:327 #: pretix/base/settings.py:327
msgid "" msgid ""
"Independent of your choice, the cart will show gross prices as this is the " "Independent of your choice, the cart will show gross prices as this is the "
"price that needs to be paid." "price that needs to be paid."
msgstr "" msgstr ""
"Indipendentemente dalla vostra scelta, il carrello mostrerà i prezzi lordi, "
"poiché questo è il prezzo che deve essere pagato."
#: pretix/base/settings.py:338 #: pretix/base/settings.py:338
msgid "Hide prices on attendee ticket page" msgid "Hide prices on attendee ticket page"
msgstr "" msgstr "Nascondi i prezzi nella pagina dei biglietti per i partecipanti"
#: pretix/base/settings.py:339 #: pretix/base/settings.py:339
msgid "" msgid ""
@@ -9177,10 +9179,14 @@ msgid ""
"page of the individual attendees. The ticket buyer will of course see the " "page of the individual attendees. The ticket buyer will of course see the "
"price." "price."
msgstr "" msgstr ""
"Se una persona acquista più biglietti e si inviano e-mail a tutti i "
"partecipanti, con questa opzione il prezzo del biglietto non verrà mostrato "
"nella pagina dei biglietti dei singoli partecipanti. L'acquirente del "
"biglietto vedrà ovviamente il prezzo."
#: pretix/base/settings.py:357 #: pretix/base/settings.py:357
msgid "Ask for attendee names" msgid "Ask for attendee names"
msgstr "" msgstr "Chiedi il nome dei partecipanti"
#: pretix/base/settings.py:358 #: pretix/base/settings.py:358
msgid "Ask for a name for all personalized tickets." msgid "Ask for a name for all personalized tickets."
@@ -23307,10 +23313,8 @@ msgid "Download current background"
msgstr "" msgstr ""
#: pretix/control/templates/pretixcontrol/pdf/index.html:224 #: pretix/control/templates/pretixcontrol/pdf/index.html:224
#, fuzzy
#| msgid "Canceled by customer"
msgid "Or choose custom paper size" msgid "Or choose custom paper size"
msgstr "Cancellato dal cliente" msgstr "Oppure scegli un formato carta personalizzato"
#: pretix/control/templates/pretixcontrol/pdf/index.html:226 #: pretix/control/templates/pretixcontrol/pdf/index.html:226
msgid "" msgid ""
@@ -26399,28 +26403,18 @@ msgid "until"
msgstr "Data fino a" msgstr "Data fino a"
#: pretix/helpers/daterange.py:106 #: pretix/helpers/daterange.py:106
#, fuzzy, python-brace-format #, python-brace-format
#| msgctxt "invoice"
#| msgid ""
#| "{from_date}\n"
#| "until {to_date}"
msgid "{date_from}{until}{date_to}" msgid "{date_from}{until}{date_to}"
msgstr "" msgstr "{date_from}{until}{date_to}"
"{from_date}\n"
"a {to_date}"
#: pretix/helpers/images.py:61 pretix/helpers/images.py:67 #: pretix/helpers/images.py:61 pretix/helpers/images.py:67
#: pretix/helpers/images.py:85 #: pretix/helpers/images.py:85
#, fuzzy
#| msgid ""
#| "The file you uploaded has a very large number of pixels, please upload an "
#| "image no larger than 10000 x 10000 pixels."
msgid "" msgid ""
"The file you uploaded has a very large number of pixels, please upload a " "The file you uploaded has a very large number of pixels, please upload a "
"picture with smaller dimensions." "picture with smaller dimensions."
msgstr "" msgstr ""
"Il file che hai caricato ha un numero molto elevato di pixel, per favore " "Il file che hai caricato ha un numero molto elevato di pixel, per favore "
"carica un'immagine che abbia 10000 x 10000 pixel." "carica un'immagine di dimensione più piccola."
#: pretix/helpers/security.py:166 #: pretix/helpers/security.py:166
msgid "Login from new source detected" msgid "Login from new source detected"
@@ -30025,10 +30019,8 @@ msgid "Payer name"
msgstr "" msgstr ""
#: pretix/plugins/stripe/templates/pretixplugins/stripe/control.html:91 #: pretix/plugins/stripe/templates/pretixplugins/stripe/control.html:91
#, fuzzy
#| msgid "Payment fee"
msgid "Payment receipt" msgid "Payment receipt"
msgstr "Commissione di pagamento" msgstr "Ricevuta di pagamento"
#: pretix/plugins/stripe/templates/pretixplugins/stripe/oauth_disconnect.html:12 #: pretix/plugins/stripe/templates/pretixplugins/stripe/oauth_disconnect.html:12
msgid "Do you really want to disconnect your Stripe account?" msgid "Do you really want to disconnect your Stripe account?"

View File

@@ -8,16 +8,16 @@ 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-04-28 11:08+0000\n" "POT-Creation-Date: 2025-04-28 11:08+0000\n"
"PO-Revision-Date: 2025-03-16 19:00+0000\n" "PO-Revision-Date: 2025-05-05 09:40+0000\n"
"Last-Translator: \"Luca Martinelli [Sannita]\" <sannita@gmail.com>\n" "Last-Translator: \"Luca Martinelli [Sannita]\" <sannita@gmail.com>\n"
"Language-Team: Italian <https://translate.pretix.eu/projects/pretix/pretix-" "Language-Team: Italian <https://translate.pretix.eu/projects/pretix/"
"js/it/>\n" "pretix-js/it/>\n"
"Language: it\n" "Language: it\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.10.3\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
@@ -938,12 +938,9 @@ msgid "Open ticket shop"
msgstr "Apri la biglietteria" msgstr "Apri la biglietteria"
#: pretix/static/pretixpresale/js/widget/widget.js:48 #: pretix/static/pretixpresale/js/widget/widget.js:48
#, fuzzy
#| msgctxt "widget"
#| msgid "Resume checkout"
msgctxt "widget" msgctxt "widget"
msgid "Checkout" msgid "Checkout"
msgstr "Ricarica checkout" msgstr "Checkout"
#: pretix/static/pretixpresale/js/widget/widget.js:49 #: pretix/static/pretixpresale/js/widget/widget.js:49
msgctxt "widget" msgctxt "widget"

View File

@@ -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-04-28 11:06+0000\n" "POT-Creation-Date: 2025-04-28 11:06+0000\n"
"PO-Revision-Date: 2025-03-31 15:00+0000\n" "PO-Revision-Date: 2025-05-12 13:00+0000\n"
"Last-Translator: Hijiri Umemoto <hijiri@umemoto.org>\n" "Last-Translator: Hijiri Umemoto <hijiri@umemoto.org>\n"
"Language-Team: Japanese <https://translate.pretix.eu/projects/pretix/pretix/" "Language-Team: Japanese <https://translate.pretix.eu/projects/pretix/pretix/"
"ja/>\n" "ja/>\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.10.4\n" "X-Generator: Weblate 5.11.4\n"
#: pretix/_base_settings.py:87 #: pretix/_base_settings.py:87
msgid "English" msgid "English"
@@ -2971,21 +2971,17 @@ msgid "Repeat password"
msgstr "パスワードを再入力してください" msgstr "パスワードを再入力してください"
#: pretix/base/forms/questions.py:134 pretix/base/forms/questions.py:256 #: pretix/base/forms/questions.py:134 pretix/base/forms/questions.py:256
#, fuzzy
#| msgid "No country specified."
msgctxt "name_salutation" msgctxt "name_salutation"
msgid "not specified" msgid "not specified"
msgstr "国が指定されていません" msgstr "指定されていません"
#: pretix/base/forms/questions.py:219 #: pretix/base/forms/questions.py:219
msgid "Please do not use special characters in names." msgid "Please do not use special characters in names."
msgstr "" msgstr "名前に特殊文字を使わないでください。"
"Understood, I will avoid using special characters in names. Thank you for "
"the reminder."
#: pretix/base/forms/questions.py:281 #: pretix/base/forms/questions.py:281
msgid "Please enter a shorter name." msgid "Please enter a shorter name."
msgstr "短い名前を入力してください。" msgstr "もっと短い名前を入力してください。"
#: pretix/base/forms/questions.py:305 #: pretix/base/forms/questions.py:305
msgctxt "phonenumber" msgctxt "phonenumber"
@@ -3001,11 +2997,12 @@ msgstr "電話番号(国際エリアコードなし)"
msgid "" msgid ""
"You uploaded an image in landscape orientation. Please upload an image in " "You uploaded an image in landscape orientation. Please upload an image in "
"portrait orientation." "portrait orientation."
msgstr "画像を縦向きでアップロードしてください。" msgstr "画像が横向きでアップロードされています。縦向きの画像をアップロードしてくださ"
"い。"
#: pretix/base/forms/questions.py:493 #: pretix/base/forms/questions.py:493
msgid "Please upload an image where the width is 3/4 of the height." msgid "Please upload an image where the width is 3/4 of the height."
msgstr "幅が高さの3/4の画像をアップロードしてください。" msgstr "縦4x幅3の比率の画像をアップロードしてください。"
#: pretix/base/forms/questions.py:496 #: pretix/base/forms/questions.py:496
msgid "" msgid ""
@@ -3059,7 +3056,7 @@ msgstr "会社名を提供する必要があります。"
#: pretix/base/forms/questions.py:1187 #: pretix/base/forms/questions.py:1187
msgid "You need to provide your name." msgid "You need to provide your name."
msgstr "私はアシスタントです。" msgstr "あなたの名前を提供する必要があります。"
#: pretix/base/forms/user.py:51 pretix/control/forms/users.py:43 #: pretix/base/forms/user.py:51 pretix/control/forms/users.py:43
msgid "" msgid ""
@@ -3631,12 +3628,12 @@ msgstr "有効な販売チャネルを入力してください。"
#: pretix/base/modelimport_orders.py:585 #: pretix/base/modelimport_orders.py:585
#: pretix/base/modelimport_vouchers.py:291 #: pretix/base/modelimport_vouchers.py:291
msgid "Multiple matching seats were found." msgid "Multiple matching seats were found."
msgstr "複数のマッチングする席が見つかりました。" msgstr "該当する席が複数見つかりました。"
#: pretix/base/modelimport_orders.py:587 #: pretix/base/modelimport_orders.py:587
#: pretix/base/modelimport_vouchers.py:293 #: pretix/base/modelimport_vouchers.py:293
msgid "No matching seat was found." msgid "No matching seat was found."
msgstr "適合する席が見つかりませんでした。" msgstr "該当する席が見つかりませんでした。"
#: pretix/base/modelimport_orders.py:590 #: pretix/base/modelimport_orders.py:590
#: pretix/base/modelimport_vouchers.py:296 pretix/base/services/cart.py:212 #: pretix/base/modelimport_vouchers.py:296 pretix/base/services/cart.py:212
@@ -3674,7 +3671,7 @@ msgstr "顧客"
#: pretix/base/modelimport_orders.py:711 #: pretix/base/modelimport_orders.py:711
msgid "No matching customer was found." msgid "No matching customer was found."
msgstr "顧客が見つかりませんでした。" msgstr "該当する顧客が見つかりませんでした。"
#: pretix/base/modelimport_vouchers.py:50 pretix/base/models/vouchers.py:488 #: pretix/base/modelimport_vouchers.py:50 pretix/base/models/vouchers.py:488
msgid "A voucher with this code already exists." msgid "A voucher with this code already exists."
@@ -3815,7 +3812,7 @@ msgstr "電源を切ると、通知を受け取れません。"
#: pretix/control/templates/pretixcontrol/users/form.html:6 #: pretix/control/templates/pretixcontrol/users/form.html:6
#: pretix/control/views/organizer.py:158 tests/base/test_mail.py:149 #: pretix/control/views/organizer.py:158 tests/base/test_mail.py:149
msgid "User" msgid "User"
msgstr "ユーザ" msgstr "ユーザ"
#: pretix/base/models/auth.py:284 pretix/control/navigation.py:411 #: pretix/base/models/auth.py:284 pretix/control/navigation.py:411
#: pretix/control/templates/pretixcontrol/users/index.html:5 #: pretix/control/templates/pretixcontrol/users/index.html:5
@@ -4234,20 +4231,14 @@ msgstr ""
"れます。" "れます。"
#: pretix/base/models/discount.py:177 #: pretix/base/models/discount.py:177
#, fuzzy
#| msgctxt "subevent"
#| msgid "All dates starting before"
msgctxt "subevent" msgctxt "subevent"
msgid "Available for dates starting from" msgid "Available for dates starting from"
msgstr "すべての日付は、前に始まります" msgstr "この日から始まる日付で利用可能"
#: pretix/base/models/discount.py:182 #: pretix/base/models/discount.py:182
#, fuzzy
#| msgctxt "subevent"
#| msgid "All dates starting before"
msgctxt "subevent" msgctxt "subevent"
msgid "Available for dates starting until" msgid "Available for dates starting until"
msgstr "すべての日付は、前に始まります" msgstr "これより以前に開始する日付で利用可能"
#: pretix/base/models/discount.py:214 #: pretix/base/models/discount.py:214
msgid "" msgid ""
@@ -5513,18 +5504,12 @@ msgid "Unknown country code."
msgstr "不明な国コード。" msgstr "不明な国コード。"
#: pretix/base/models/items.py:1921 pretix/base/models/items.py:1923 #: pretix/base/models/items.py:1921 pretix/base/models/items.py:1923
#, fuzzy
#| msgid "The maximum count needs to be greater than the minimum count."
msgid "The maximum date must not be before the minimum value." msgid "The maximum date must not be before the minimum value."
msgstr "最大数は最小よりも大きくする必要があります。" msgstr "最大日付は、最小より前でなければなりません。"
#: pretix/base/models/items.py:1925 #: pretix/base/models/items.py:1925
#, fuzzy
#| msgid ""
#| "The maximum number of usages may not be lower than the minimum number of "
#| "usages."
msgid "The maximum value must not be lower than the minimum value." msgid "The maximum value must not be lower than the minimum value."
msgstr "使用回数の最大値は最小回数より低くすることはできません。" msgstr "最大値は最小より低くできません。"
#: pretix/base/models/items.py:1942 #: pretix/base/models/items.py:1942
#: pretix/control/templates/pretixcontrol/items/question.html:90 #: pretix/control/templates/pretixcontrol/items/question.html:90
@@ -11383,13 +11368,6 @@ msgid "Header image"
msgstr "ヘッダー画像" msgstr "ヘッダー画像"
#: pretix/base/settings.py:2885 #: pretix/base/settings.py:2885
#, fuzzy
#| msgid ""
#| "If you provide a logo image, we will by default not show your event name "
#| "and date in the page header. By default, we show your logo with a size of "
#| "up to 1140x120 pixels. You can increase the size with the setting below. "
#| "We recommend not using small details on the picture as it will be resized "
#| "on smaller screens."
msgid "" msgid ""
"If you provide a logo image, we will by default not show your event name and " "If you provide a logo image, we will by default not show your event name and "
"date in the page header. If you use a white background, we show your logo " "date in the page header. If you use a white background, we show your logo "
@@ -11397,11 +11375,11 @@ msgid ""
"pixels. You can increase the size with the setting below. We recommend not " "pixels. You can increase the size with the setting below. We recommend not "
"using small details on the picture as it will be resized on smaller screens." "using small details on the picture as it will be resized on smaller screens."
msgstr "" msgstr ""
"ロゴ画像を提供していただければ、デフォルトではイベント名と日付はページヘッ" "ロゴ画像を提供すると、デフォルトでページヘッダーにイベント名と日付が表示され"
"ダーに表示されません。デフォルトでは、1140x120ピクセルまでのサイズでロゴが表" "ません。白い背景を使用する場合、最大1140x120ピクセルのサイズでロゴが表示され"
"示されます。以下の設定でサイズを拡大することもできます。画像に細かいディテー" "ます。それ以外の場合、最大サイズは1120x120ピクセルです。以下の設定でサイズを"
"ルを使用しないことをお勧めします。なぜなら、小さな画面ではサイズされるため" "大きくすることができます。小さな画面ではサイズが変更されるため、写真に小さな"
"す。" "ディテールを使用しないことをお勧めします。"
#: pretix/base/settings.py:2906 pretix/base/settings.py:2949 #: pretix/base/settings.py:2906 pretix/base/settings.py:2949
msgid "Use header image in its full size" msgid "Use header image in its full size"
@@ -11427,13 +11405,6 @@ msgstr ""
"れます。" "れます。"
#: pretix/base/settings.py:2929 pretix/control/forms/organizer.py:524 #: pretix/base/settings.py:2929 pretix/control/forms/organizer.py:524
#, fuzzy
#| msgid ""
#| "If you provide a logo image, we will by default not show your "
#| "organization name in the page header. By default, we show your logo with "
#| "a size of up to 1140x120 pixels. You can increase the size with the "
#| "setting below. We recommend not using small details on the picture as it "
#| "will be resized on smaller screens."
msgid "" msgid ""
"If you provide a logo image, we will by default not show your organization " "If you provide a logo image, we will by default not show your organization "
"name in the page header. If you use a white background, we show your logo " "name in the page header. If you use a white background, we show your logo "
@@ -19792,7 +19763,7 @@ msgstr "クォータごとの有料チケット"
#: pretix/control/views/dashboards.py:519 pretix/control/views/typeahead.py:89 #: pretix/control/views/dashboards.py:519 pretix/control/views/typeahead.py:89
msgctxt "subevent" msgctxt "subevent"
msgid "No dates" msgid "No dates"
msgstr "データなし" msgstr "日付なし"
#: pretix/control/templates/pretixcontrol/events/index.html:141 #: pretix/control/templates/pretixcontrol/events/index.html:141
#: pretix/control/templates/pretixcontrol/subevents/index.html:158 #: pretix/control/templates/pretixcontrol/subevents/index.html:158
@@ -23989,32 +23960,29 @@ msgstr "優先する言語"
#: pretix/control/templates/pretixcontrol/pdf/index.html:200 #: pretix/control/templates/pretixcontrol/pdf/index.html:200
#: pretix/control/templates/pretixcontrol/pdf/index.html:210 #: pretix/control/templates/pretixcontrol/pdf/index.html:210
#, fuzzy
#| msgid "Upload custom background"
msgid "Upload PDF as background" msgid "Upload PDF as background"
msgstr "カスタム背景をアップロード" msgstr "背景としてPDFをアップロードする"
#: pretix/control/templates/pretixcontrol/pdf/index.html:202 #: pretix/control/templates/pretixcontrol/pdf/index.html:202
msgid "" msgid ""
"You can upload a PDF to use as a custom background. The paper size will " "You can upload a PDF to use as a custom background. The paper size will "
"match the PDF." "match the PDF."
msgstr "" msgstr "PDF をアップロードして、カスタムの背景として使用できます。用紙のサイズは PDF "
"と一致します。"
#: pretix/control/templates/pretixcontrol/pdf/index.html:217 #: pretix/control/templates/pretixcontrol/pdf/index.html:217
msgid "Download current background" msgid "Download current background"
msgstr "現在の背景をダウンロード" msgstr "現在の背景をダウンロード"
#: pretix/control/templates/pretixcontrol/pdf/index.html:224 #: pretix/control/templates/pretixcontrol/pdf/index.html:224
#, fuzzy
#| msgid "Date chosen by customer"
msgid "Or choose custom paper size" msgid "Or choose custom paper size"
msgstr "お客様が選んだ日付" msgstr "または、カスタム用紙サイズを選択"
#: pretix/control/templates/pretixcontrol/pdf/index.html:226 #: pretix/control/templates/pretixcontrol/pdf/index.html:226
msgid "" msgid ""
"To manually change the paper size, you need to create a new, empty " "To manually change the paper size, you need to create a new, empty "
"background." "background."
msgstr "" msgstr "用紙サイズを手動で変更するには、新しい空の背景を作成する必要があります。"
#: pretix/control/templates/pretixcontrol/pdf/index.html:234 #: pretix/control/templates/pretixcontrol/pdf/index.html:234
#: pretix/control/templates/pretixcontrol/pdf/index.html:321 #: pretix/control/templates/pretixcontrol/pdf/index.html:321
@@ -27322,10 +27290,9 @@ msgid "until"
msgstr "まで" msgstr "まで"
#: pretix/helpers/daterange.py:106 #: pretix/helpers/daterange.py:106
#, fuzzy, python-brace-format #, python-brace-format
#| msgid "{date_from} {date_to}"
msgid "{date_from}{until}{date_to}" msgid "{date_from}{until}{date_to}"
msgstr "{date_from} {date_to}" msgstr "{date_from}{until}{date_to}"
#: pretix/helpers/images.py:61 pretix/helpers/images.py:67 #: pretix/helpers/images.py:61 pretix/helpers/images.py:67
#: pretix/helpers/images.py:85 #: pretix/helpers/images.py:85
@@ -31012,10 +30979,8 @@ msgid "Payer name"
msgstr "支払い者の名前" msgstr "支払い者の名前"
#: pretix/plugins/stripe/templates/pretixplugins/stripe/control.html:91 #: pretix/plugins/stripe/templates/pretixplugins/stripe/control.html:91
#, fuzzy
#| msgid "Payment fee"
msgid "Payment receipt" msgid "Payment receipt"
msgstr "支払手数料" msgstr "領収書"
#: pretix/plugins/stripe/templates/pretixplugins/stripe/oauth_disconnect.html:12 #: pretix/plugins/stripe/templates/pretixplugins/stripe/oauth_disconnect.html:12
msgid "Do you really want to disconnect your Stripe account?" msgid "Do you really want to disconnect your Stripe account?"

View File

@@ -8,16 +8,16 @@ 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-04-28 11:08+0000\n" "POT-Creation-Date: 2025-04-28 11:08+0000\n"
"PO-Revision-Date: 2025-03-31 15:00+0000\n" "PO-Revision-Date: 2025-05-12 13:00+0000\n"
"Last-Translator: Hijiri Umemoto <hijiri@umemoto.org>\n" "Last-Translator: Hijiri Umemoto <hijiri@umemoto.org>\n"
"Language-Team: Japanese <https://translate.pretix.eu/projects/pretix/pretix-" "Language-Team: Japanese <https://translate.pretix.eu/projects/pretix/"
"js/ja/>\n" "pretix-js/ja/>\n"
"Language: ja\n" "Language: ja\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=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.10.4\n" "X-Generator: Weblate 5.11.4\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56 #: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62 #: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -233,7 +233,7 @@ msgstr "未払い"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:44 #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:44
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:45 #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:45
msgid "Canceled" msgid "Canceled"
msgstr "キャンセル" msgstr "キャンセル済み"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:46 #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:46
msgid "Confirmed" msgid "Confirmed"
@@ -907,12 +907,9 @@ msgid "Open ticket shop"
msgstr "チケットショップを開く" msgstr "チケットショップを開く"
#: pretix/static/pretixpresale/js/widget/widget.js:48 #: pretix/static/pretixpresale/js/widget/widget.js:48
#, fuzzy
#| msgctxt "widget"
#| msgid "Resume checkout"
msgctxt "widget" msgctxt "widget"
msgid "Checkout" msgid "Checkout"
msgstr "購入を続行する" msgstr "チェックアウト"
#: pretix/static/pretixpresale/js/widget/widget.js:49 #: pretix/static/pretixpresale/js/widget/widget.js:49
msgctxt "widget" msgctxt "widget"
@@ -1068,31 +1065,31 @@ msgstr "日"
#: pretix/static/pretixpresale/js/widget/widget.js:81 #: pretix/static/pretixpresale/js/widget/widget.js:81
msgid "Monday" msgid "Monday"
msgstr "" msgstr "月曜日"
#: pretix/static/pretixpresale/js/widget/widget.js:82 #: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "Tuesday" msgid "Tuesday"
msgstr "" msgstr "火曜日"
#: pretix/static/pretixpresale/js/widget/widget.js:83 #: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "Wednesday" msgid "Wednesday"
msgstr "" msgstr "水曜日"
#: pretix/static/pretixpresale/js/widget/widget.js:84 #: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "Thursday" msgid "Thursday"
msgstr "" msgstr "木曜日"
#: pretix/static/pretixpresale/js/widget/widget.js:85 #: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "Friday" msgid "Friday"
msgstr "" msgstr "金曜日"
#: pretix/static/pretixpresale/js/widget/widget.js:86 #: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "Saturday" msgid "Saturday"
msgstr "" msgstr "土曜日"
#: pretix/static/pretixpresale/js/widget/widget.js:87 #: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "Sunday" msgid "Sunday"
msgstr "" msgstr "日曜日"
#: pretix/static/pretixpresale/js/widget/widget.js:90 #: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "January" msgid "January"

File diff suppressed because it is too large Load Diff

View File

@@ -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-04-28 11:08+0000\n" "POT-Creation-Date: 2025-04-28 11:08+0000\n"
"PO-Revision-Date: 2025-04-16 10:00+0000\n" "PO-Revision-Date: 2025-05-08 10: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"
@@ -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.10.4\n" "X-Generator: Weblate 5.11.4\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56 #: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62 #: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -1084,31 +1084,31 @@ msgstr "일요일"
#: pretix/static/pretixpresale/js/widget/widget.js:81 #: pretix/static/pretixpresale/js/widget/widget.js:81
msgid "Monday" msgid "Monday"
msgstr "" msgstr "월요일"
#: pretix/static/pretixpresale/js/widget/widget.js:82 #: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "Tuesday" msgid "Tuesday"
msgstr "" msgstr "화요일"
#: pretix/static/pretixpresale/js/widget/widget.js:83 #: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "Wednesday" msgid "Wednesday"
msgstr "" msgstr "수요일"
#: pretix/static/pretixpresale/js/widget/widget.js:84 #: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "Thursday" msgid "Thursday"
msgstr "" msgstr "목요일"
#: pretix/static/pretixpresale/js/widget/widget.js:85 #: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "Friday" msgid "Friday"
msgstr "" msgstr "금요일"
#: pretix/static/pretixpresale/js/widget/widget.js:86 #: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "Saturday" msgid "Saturday"
msgstr "" msgstr "토요일"
#: pretix/static/pretixpresale/js/widget/widget.js:87 #: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "Sunday" msgid "Sunday"
msgstr "" msgstr "일요일"
#: pretix/static/pretixpresale/js/widget/widget.js:90 #: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "January" msgid "January"

View File

@@ -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-04-28 11:06+0000\n" "POT-Creation-Date: 2025-04-28 11:06+0000\n"
"PO-Revision-Date: 2025-03-30 16:00+0000\n" "PO-Revision-Date: 2025-05-01 02:00+0000\n"
"Last-Translator: Jan Van Haver <jan.van.haver@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.10.4\n" "X-Generator: Weblate 5.11.1\n"
#: pretix/_base_settings.py:87 #: pretix/_base_settings.py:87
msgid "English" msgid "English"
@@ -2980,11 +2980,9 @@ msgid "Repeat password"
msgstr "Herhaal wachtwoord" msgstr "Herhaal wachtwoord"
#: pretix/base/forms/questions.py:134 pretix/base/forms/questions.py:256 #: pretix/base/forms/questions.py:134 pretix/base/forms/questions.py:256
#, fuzzy
#| msgid "No country specified."
msgctxt "name_salutation" msgctxt "name_salutation"
msgid "not specified" msgid "not specified"
msgstr "Geen land opgegeven." msgstr "Niet opgegeven"
#: pretix/base/forms/questions.py:219 #: pretix/base/forms/questions.py:219
msgid "Please do not use special characters in names." msgid "Please do not use special characters in names."
@@ -3999,7 +3997,7 @@ msgstr "Bestelling niet goedgekeurd"
#: pretix/base/models/checkin.py:366 #: pretix/base/models/checkin.py:366
msgid "Ticket not valid at this time" msgid "Ticket not valid at this time"
msgstr "Ticket is niet geldig op dit moment" msgstr "Ticket is op dit moment niet geldig"
#: pretix/base/models/customers.py:55 #: pretix/base/models/customers.py:55
msgid "Provider name" msgid "Provider name"
@@ -4253,20 +4251,14 @@ msgstr ""
"uitverkochte producten zullen nog steeds een korting krijgen." "uitverkochte producten zullen nog steeds een korting krijgen."
#: pretix/base/models/discount.py:177 #: pretix/base/models/discount.py:177
#, fuzzy
#| msgctxt "subevent"
#| msgid "All dates starting before"
msgctxt "subevent" msgctxt "subevent"
msgid "Available for dates starting from" msgid "Available for dates starting from"
msgstr "Alle subevenementen beginnend voor" msgstr "Beschikbaar vanaf de volgende datums"
#: pretix/base/models/discount.py:182 #: pretix/base/models/discount.py:182
#, fuzzy
#| msgctxt "subevent"
#| msgid "All dates starting before"
msgctxt "subevent" msgctxt "subevent"
msgid "Available for dates starting until" msgid "Available for dates starting until"
msgstr "Alle subevenementen beginnend voor" msgstr "Beschikbaar voor startdatums tot"
#: pretix/base/models/discount.py:214 #: pretix/base/models/discount.py:214
msgid "" msgid ""
@@ -5576,20 +5568,12 @@ msgid "Unknown country code."
msgstr "Onbekende landcode." msgstr "Onbekende landcode."
#: pretix/base/models/items.py:1921 pretix/base/models/items.py:1923 #: pretix/base/models/items.py:1921 pretix/base/models/items.py:1923
#, fuzzy
#| msgid "The maximum count needs to be greater than the minimum count."
msgid "The maximum date must not be before the minimum value." msgid "The maximum date must not be before the minimum value."
msgstr "Het maximale aantal moet groter zijn dan het minimum aantal." msgstr "De maximumdatum mag niet vóór de minimumwaarde liggen."
#: pretix/base/models/items.py:1925 #: pretix/base/models/items.py:1925
#, fuzzy
#| msgid ""
#| "The maximum number of usages may not be lower than the minimum number of "
#| "usages."
msgid "The maximum value must not be lower than the minimum value." msgid "The maximum value must not be lower than the minimum value."
msgstr "" msgstr "De maximum waarde mag niet lager zijn dan de minimum waarde."
"Het maximum aantal keer gebruikt mag niet lager zijn dan het minimum aantal "
"keer gebruikt."
#: pretix/base/models/items.py:1942 #: pretix/base/models/items.py:1942
#: pretix/control/templates/pretixcontrol/items/question.html:90 #: pretix/control/templates/pretixcontrol/items/question.html:90
@@ -6298,8 +6282,6 @@ msgstr ""
"Gemiddeld tarief (andere omzet in een agriculturele en bosbouwkundig bedrijf)" "Gemiddeld tarief (andere omzet in een agriculturele en bosbouwkundig bedrijf)"
#: pretix/base/models/tax.py:164 #: pretix/base/models/tax.py:164
#, fuzzy
#| msgid "Reverse charge"
msgctxt "tax_code" msgctxt "tax_code"
msgid "Reverse charge" msgid "Reverse charge"
msgstr "Omgekeerde belastingheffing" msgstr "Omgekeerde belastingheffing"
@@ -6347,7 +6329,7 @@ msgstr "Canarische Eilanden algemeen belastingtarief"
#: pretix/base/models/tax.py:190 #: pretix/base/models/tax.py:190
msgctxt "tax_code" msgctxt "tax_code"
msgid "Tax for production, services and importation in Ceuta and Melilla" msgid "Tax for production, services and importation in Ceuta and Melilla"
msgstr "" msgstr "Belasting op productie, diensten en invoer in Ceuta en Melilla"
#: pretix/base/models/tax.py:191 #: pretix/base/models/tax.py:191
msgctxt "tax_code" msgctxt "tax_code"
@@ -6416,14 +6398,14 @@ msgstr "Intracommunautaire aankoop van verzamelobjecten en antiek"
#: pretix/base/models/tax.py:262 #: pretix/base/models/tax.py:262
msgctxt "tax_code" msgctxt "tax_code"
msgid "France domestic VAT franchise in base" msgid "France domestic VAT franchise in base"
msgstr "" msgstr "Franse btw-vrijstelling (binnenlands, franchise)"
#: pretix/base/models/tax.py:264 #: pretix/base/models/tax.py:264
msgctxt "tax_code" msgctxt "tax_code"
msgid "" msgid ""
"France domestic Credit Notes without VAT, due to supplier forfeit of VAT for " "France domestic Credit Notes without VAT, due to supplier forfeit of VAT for "
"discount" "discount"
msgstr "" msgstr "Franse binnenlandse creditnota, geen betw door korting van leverancier"
#: pretix/base/models/tax.py:314 #: pretix/base/models/tax.py:314
msgid "Your set of rules is not valid. Error message: {}" msgid "Your set of rules is not valid. Error message: {}"
@@ -6447,6 +6429,9 @@ msgid ""
"If you help us understand what this tax rules legally is, we can use this " "If you help us understand what this tax rules legally is, we can use this "
"information for eInvoices, exporting to accounting system, etc." "information for eInvoices, exporting to accounting system, etc."
msgstr "" msgstr ""
"Wanneer je ons helpt te begrijpen wat deze belastingsregels juridisch "
"inhouden, kunnen we deze informatie inzetten voor e-facturen, het exporteren "
"naar het boekhoudsysteem, enz."
#: pretix/base/models/tax.py:351 #: pretix/base/models/tax.py:351
msgid "The configured product prices include the tax amount" msgid "The configured product prices include the tax amount"
@@ -6516,11 +6501,15 @@ msgstr "U moet uw thuisland instellen om de verleggingsfunctie te gebruiken."
msgid "" msgid ""
"A combination of this tax code with a non-zero tax rate does not make sense." "A combination of this tax code with a non-zero tax rate does not make sense."
msgstr "" msgstr ""
"Een combinatie van deze belastingcode met een belastingtarief groter dan nul "
"is niet logisch."
#: pretix/base/models/tax.py:421 pretix/control/forms/event.py:1562 #: pretix/base/models/tax.py:421 pretix/control/forms/event.py:1562
msgid "" msgid ""
"A combination of this tax code with a zero tax rate does not make sense." "A combination of this tax code with a zero tax rate does not make sense."
msgstr "" msgstr ""
"Een combinatie van deze belastingscode met een belastingstarief van nul is "
"niet logisch."
#: pretix/base/models/tax.py:426 #: pretix/base/models/tax.py:426
#, python-brace-format #, python-brace-format
@@ -11660,13 +11649,6 @@ msgid "Header image"
msgstr "Header-afbeelding" msgstr "Header-afbeelding"
#: pretix/base/settings.py:2885 #: pretix/base/settings.py:2885
#, fuzzy
#| msgid ""
#| "If you provide a logo image, we will by default not show your event name "
#| "and date in the page header. By default, we show your logo with a size of "
#| "up to 1140x120 pixels. You can increase the size with the setting below. "
#| "We recommend not using small details on the picture as it will be resized "
#| "on smaller screens."
msgid "" msgid ""
"If you provide a logo image, we will by default not show your event name and " "If you provide a logo image, we will by default not show your event name and "
"date in the page header. If you use a white background, we show your logo " "date in the page header. If you use a white background, we show your logo "
@@ -11705,13 +11687,6 @@ msgstr ""
"organisator dan zal de titel altijd getoond worden." "organisator dan zal de titel altijd getoond worden."
#: pretix/base/settings.py:2929 pretix/control/forms/organizer.py:524 #: pretix/base/settings.py:2929 pretix/control/forms/organizer.py:524
#, fuzzy
#| msgid ""
#| "If you provide a logo image, we will by default not show your "
#| "organization name in the page header. By default, we show your logo with "
#| "a size of up to 1140x120 pixels. You can increase the size with the "
#| "setting below. We recommend not using small details on the picture as it "
#| "will be resized on smaller screens."
msgid "" msgid ""
"If you provide a logo image, we will by default not show your organization " "If you provide a logo image, we will by default not show your organization "
"name in the page header. If you use a white background, we show your logo " "name in the page header. If you use a white background, we show your logo "
@@ -11721,7 +11696,7 @@ msgid ""
msgstr "" msgstr ""
"Als u een logo opgeeft zullen we standaard niet uw organisatienaam in de " "Als u een logo opgeeft zullen we standaard niet uw organisatienaam in de "
"paginaheader tonen. We tonen uw logo standaard met een maximumgrootte van " "paginaheader tonen. We tonen uw logo standaard met een maximumgrootte van "
"1140x120 pixels. U kunt deze grootte aanpassen met de instelling hieronder. " "1120x120 pixels. U kunt deze grootte aanpassen met de instelling hieronder. "
"We raden aan om geen kleine details op de afbeelding te gebruiken, omdat de " "We raden aan om geen kleine details op de afbeelding te gebruiken, omdat de "
"afbeelding op kleinere schermen zal worden geschaald." "afbeelding op kleinere schermen zal worden geschaald."
@@ -13570,6 +13545,8 @@ msgid ""
"A combination of this calculation mode with a non-zero tax rate does not " "A combination of this calculation mode with a non-zero tax rate does not "
"make sense." "make sense."
msgstr "" msgstr ""
"Een combinatie van deze berekeningsmodus met een belastingstarief groter dan "
"nul is niet logisch."
#: pretix/control/forms/event.py:1550 pretix/control/forms/event.py:1554 #: pretix/control/forms/event.py:1550 pretix/control/forms/event.py:1554
msgid "This combination of calculation mode and tax code does not make sense." msgid "This combination of calculation mode and tax code does not make sense."
@@ -13786,7 +13763,7 @@ msgstr "Goedgekeurd, wacht op betaling"
#: pretix/plugins/reports/exporters.py:380 #: pretix/plugins/reports/exporters.py:380
#: pretix/presale/templates/pretixpresale/event/fragment_order_status.html:7 #: pretix/presale/templates/pretixpresale/event/fragment_order_status.html:7
msgid "Approval pending" msgid "Approval pending"
msgstr "Wachtend op goedkeuring" msgstr "Goedkeuring in afwachting"
#: pretix/control/forms/filter.py:241 #: pretix/control/forms/filter.py:241
msgid "Follow-up configured" msgid "Follow-up configured"
@@ -15008,6 +14985,8 @@ msgid ""
"This affects both the ticket secret (often used as a QR code) as well as the " "This affects both the ticket secret (often used as a QR code) as well as the "
"link used to individually access the ticket." "link used to individually access the ticket."
msgstr "" msgstr ""
"Dit heeft invloed op zowel het ticketgeheim (vaak gebruikt als QR-code) als "
"de link waarmee het ticket individueel kan worden geopend."
#: pretix/control/forms/orders.py:501 #: pretix/control/forms/orders.py:501
msgid "Cancel this position" msgid "Cancel this position"
@@ -15434,6 +15413,8 @@ msgid ""
"Optional query parameters, that will be added to calls to the authorization " "Optional query parameters, that will be added to calls to the authorization "
"endpoint. Enter as: {example}" "endpoint. Enter as: {example}"
msgstr "" msgstr ""
"Optionele queryparameters, die worden toegevoegd aan oproepen naar het "
"autorisatie-eindpunt. Voer in als: {example}"
#: pretix/control/forms/organizer.py:1110 #: pretix/control/forms/organizer.py:1110
msgid "Invalidate old client secret and generate a new one" msgid "Invalidate old client secret and generate a new one"
@@ -23679,9 +23660,9 @@ msgid ""
"before you are allowed to use cookies or similar technology for analytics, " "before you are allowed to use cookies or similar technology for analytics, "
"tracking, payment, or similar purposes." "tracking, payment, or similar purposes."
msgstr "" msgstr ""
"In sommige rechtsgebieden, waaronder de Europese Unie, is toestemming van de " "Bepaalde rechtsgebieden, zoals de Europese Unie, vereisen de toestemming van "
"gebruiker vereist voordat u cookies of vergelijkbare technologie mag " "de gebruiker voordat je cookies of soortgelijke technologieën mag gebruiken "
"gebruiken voor analyses, tracking, betaling of soortgelijke doeleinden." "voor analyses, tracking, betalingen of soortgelijke doeleinden."
#: pretix/control/templates/pretixcontrol/organizers/edit.html:172 #: pretix/control/templates/pretixcontrol/organizers/edit.html:172
msgid "" msgid ""
@@ -23713,12 +23694,12 @@ msgid ""
"usage, the legal details in your specific jurisdiction, or the agreements " "usage, the legal details in your specific jurisdiction, or the agreements "
"you have with third parties such as payment or tracking providers." "you have with third parties such as payment or tracking providers."
msgstr "" msgstr ""
"Niettemin blijft het uw verantwoordelijkheid om ervoor te zorgen dat uw " "Het is uiteindelijk uw verantwoordelijkheid om ervoor te zorgen dat u "
"ticketshop aan alle toepasselijke wetten voldoet. Wij proberen u te helpen " "voldoet aan alle relevante wetgeving. Wij bieden deze instellingen ter "
"met deze instellingen, maar kunnen geen aansprakelijkheid aanvaarden omdat " "ondersteuning, maar kunnen geen aansprakelijkheid dragen, aangezien wij de "
"wij onder andere niet de exacte configuratie van uw ticketshop, de " "exacte configuratie van uw gebruik van pretix, de juridische details in uw "
"juridische details van het toepasselijke rechtsgebied en de overeenkomsten " "rechtsgebied, of de afspraken met derden zoals betalings- of "
"tussen u en de gebruikte derde aanbieders kennen." "trackingaanbieders niet kennen."
#: pretix/control/templates/pretixcontrol/organizers/edit.html:210 #: pretix/control/templates/pretixcontrol/organizers/edit.html:210
msgid "Barcode media" msgid "Barcode media"
@@ -24553,32 +24534,32 @@ msgstr "Voorkeurstaal"
#: pretix/control/templates/pretixcontrol/pdf/index.html:200 #: pretix/control/templates/pretixcontrol/pdf/index.html:200
#: pretix/control/templates/pretixcontrol/pdf/index.html:210 #: pretix/control/templates/pretixcontrol/pdf/index.html:210
#, fuzzy
#| msgid "Upload custom background"
msgid "Upload PDF as background" msgid "Upload PDF as background"
msgstr "Upload aangepaste achtergrond" msgstr "Upload PDF als achtergrond"
#: pretix/control/templates/pretixcontrol/pdf/index.html:202 #: pretix/control/templates/pretixcontrol/pdf/index.html:202
msgid "" msgid ""
"You can upload a PDF to use as a custom background. The paper size will " "You can upload a PDF to use as a custom background. The paper size will "
"match the PDF." "match the PDF."
msgstr "" msgstr ""
"Je kunt een PDF uploaden om als aangepaste achtergrond te gebruiken. De "
"papier-grootte zal overeenkomen met dat van de PDF."
#: pretix/control/templates/pretixcontrol/pdf/index.html:217 #: pretix/control/templates/pretixcontrol/pdf/index.html:217
msgid "Download current background" msgid "Download current background"
msgstr "Download huidige achtergrond" msgstr "Download huidige achtergrond"
#: pretix/control/templates/pretixcontrol/pdf/index.html:224 #: pretix/control/templates/pretixcontrol/pdf/index.html:224
#, fuzzy
#| msgid "Date chosen by customer"
msgid "Or choose custom paper size" msgid "Or choose custom paper size"
msgstr "Datum gekozen door klant" msgstr "Of kies een aangepaste papier-grootte"
#: pretix/control/templates/pretixcontrol/pdf/index.html:226 #: pretix/control/templates/pretixcontrol/pdf/index.html:226
msgid "" msgid ""
"To manually change the paper size, you need to create a new, empty " "To manually change the paper size, you need to create a new, empty "
"background." "background."
msgstr "" msgstr ""
"Om manueel de papier-grootte te kunnen aanpassen, moet je eerst een nieuwe, "
"lege, achtergrond maken."
#: pretix/control/templates/pretixcontrol/pdf/index.html:234 #: pretix/control/templates/pretixcontrol/pdf/index.html:234
#: pretix/control/templates/pretixcontrol/pdf/index.html:321 #: pretix/control/templates/pretixcontrol/pdf/index.html:321
@@ -27962,10 +27943,9 @@ msgid "until"
msgstr "tot" msgstr "tot"
#: pretix/helpers/daterange.py:106 #: pretix/helpers/daterange.py:106
#, fuzzy, python-brace-format #, python-brace-format
#| msgid "{date_from} {date_to}"
msgid "{date_from}{until}{date_to}" msgid "{date_from}{until}{date_to}"
msgstr "{date_from} {date_to}" msgstr "{date_from}{until}{date_to}"
#: pretix/helpers/images.py:61 pretix/helpers/images.py:67 #: pretix/helpers/images.py:61 pretix/helpers/images.py:67
#: pretix/helpers/images.py:85 #: pretix/helpers/images.py:85
@@ -31726,10 +31706,8 @@ msgid "Payer name"
msgstr "Naam betaler" msgstr "Naam betaler"
#: pretix/plugins/stripe/templates/pretixplugins/stripe/control.html:91 #: pretix/plugins/stripe/templates/pretixplugins/stripe/control.html:91
#, fuzzy
#| msgid "Payment fee"
msgid "Payment receipt" msgid "Payment receipt"
msgstr "Betalingskosten" msgstr "Betalingsbewijs"
#: pretix/plugins/stripe/templates/pretixplugins/stripe/oauth_disconnect.html:12 #: pretix/plugins/stripe/templates/pretixplugins/stripe/oauth_disconnect.html:12
msgid "Do you really want to disconnect your Stripe account?" msgid "Do you really want to disconnect your Stripe account?"

View File

@@ -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-04-28 11:08+0000\n" "POT-Creation-Date: 2025-04-28 11:08+0000\n"
"PO-Revision-Date: 2025-03-30 16:00+0000\n" "PO-Revision-Date: 2025-05-01 02:00+0000\n"
"Last-Translator: Jan Van Haver <jan.van.haver@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.10.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
@@ -34,28 +34,28 @@ 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 "" 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 "" 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 "" 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"
msgstr "" msgstr "PayPal-krediet"
#: 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 "" msgstr "Kredietkaart"
#: 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 "" 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"
@@ -75,7 +75,7 @@ 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"
msgstr "" 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"
@@ -83,51 +83,51 @@ 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 "" msgstr "MyBank"
#: 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 "" msgstr "Przelewy24"
#: 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 "" msgstr "Verkkopankki"
#: 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 "" msgstr "PayU"
#: 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 "" msgstr "BLIK"
#: 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 "" msgstr "Trustly"
#: 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 "" msgstr "Zimpler"
#: 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 "" msgstr "Maxima"
#: 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 "" msgstr "OXXO"
#: 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 "" msgstr "Boleto"
#: 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 "" msgstr "WeChat Pay"
#: 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 "" msgstr "Mercado Pago"
#: 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
@@ -145,7 +145,7 @@ msgstr "Betaling bevestigen …"
#: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:254 #: pretix/plugins/paypal2/static/pretixplugins/paypal2/pretix-paypal.js:254
msgid "Payment method unavailable" msgid "Payment method unavailable"
msgstr "" msgstr "Betaalmethode niet beschikbaar"
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:15 #: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:15
#: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:39 #: pretix/plugins/statistics/static/pretixplugins/statistics/statistics.js:39
@@ -236,11 +236,11 @@ msgstr "Geannuleerd"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:46 #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:46
msgid "Confirmed" msgid "Confirmed"
msgstr "" msgstr "Bevestigd"
#: 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 "" msgstr "Goedkeuring in afwachting"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:48 #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:48
msgid "Redeemed" msgid "Redeemed"
@@ -296,14 +296,12 @@ msgid "Ticket code revoked/changed"
msgstr "Ticketcode ingetrokken/veranderd" msgstr "Ticketcode ingetrokken/veranderd"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:63 #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:63
#, fuzzy
msgid "Ticket blocked" msgid "Ticket blocked"
msgstr "Ticket niet betaald" msgstr "Ticket geblokkeerd"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:64 #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:64
#, fuzzy
msgid "Ticket not valid at this time" msgid "Ticket not valid at this time"
msgstr "Ticket niet betaald" msgstr "Ticket is op dit moment niet geldig"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:65 #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:65
msgid "Order canceled" msgid "Order canceled"
@@ -440,7 +438,7 @@ msgstr "is na"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:40 #: pretix/static/pretixcontrol/js/ui/checkinrules.js:40
msgid "=" msgid "="
msgstr "" msgstr "="
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:99 #: pretix/static/pretixcontrol/js/ui/checkinrules.js:99
msgid "Product" msgid "Product"
@@ -460,11 +458,11 @@ msgstr "Huidige datum en tijd"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:115 #: pretix/static/pretixcontrol/js/ui/checkinrules.js:115
msgid "Current day of the week (1 = Monday, 7 = Sunday)" msgid "Current day of the week (1 = Monday, 7 = Sunday)"
msgstr "" msgstr "Huidige dag van de week (1 = Maandag, 7 = Zondag)"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:119 #: pretix/static/pretixcontrol/js/ui/checkinrules.js:119
msgid "Current entry status" msgid "Current entry status"
msgstr "" msgstr "Huidige toegangstatus"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:123 #: pretix/static/pretixcontrol/js/ui/checkinrules.js:123
msgid "Number of previous entries" msgid "Number of previous entries"
@@ -475,36 +473,32 @@ msgid "Number of previous entries since midnight"
msgstr "Aantal eerdere binnenkomsten sinds middernacht" msgstr "Aantal eerdere binnenkomsten sinds middernacht"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:131 #: pretix/static/pretixcontrol/js/ui/checkinrules.js:131
#, fuzzy
msgid "Number of previous entries since" msgid "Number of previous entries since"
msgstr "Aantal eerdere binnenkomsten" msgstr "Aantal eerdere binnenkomsten sinds"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:135 #: pretix/static/pretixcontrol/js/ui/checkinrules.js:135
#, fuzzy
msgid "Number of previous entries before" msgid "Number of previous entries before"
msgstr "Aantal eerdere binnenkomsten" msgstr "Aantal eerdere binnenkomsten voor"
#: 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 "Aantal dagen met een eerdere binnenkomst" msgstr "Aantal dagen met een eerdere binnenkomst"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:143 #: pretix/static/pretixcontrol/js/ui/checkinrules.js:143
#, fuzzy
msgid "Number of days with a previous entry since" msgid "Number of days with a previous entry since"
msgstr "Aantal dagen met een eerdere binnenkomst" msgstr "Aantal dagen met een eerdere binnenkomst sinds"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:147 #: pretix/static/pretixcontrol/js/ui/checkinrules.js:147
#, fuzzy
msgid "Number of days with a previous entry before" msgid "Number of days with a previous entry before"
msgstr "Aantal dagen met een eerdere binnenkomst" msgstr "Aantal dagen met een eerdere binnenkomst voor"
#: 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 "" msgstr "Minuten sinds laatste toegang (-1 bij eerste toegang)"
#: 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 "" msgstr "Minuten sinds de eerste toegang (-1 bij eerste toegang)"
#: 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)"
@@ -548,17 +542,17 @@ msgstr "minuten"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:192 #: pretix/static/pretixcontrol/js/ui/checkinrules.js:192
msgid "Duplicate" msgid "Duplicate"
msgstr "" msgstr "duplicaat"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:193 #: pretix/static/pretixcontrol/js/ui/checkinrules.js:193
msgctxt "entry_status" msgctxt "entry_status"
msgid "present" msgid "present"
msgstr "" msgstr "aanwezig"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:194 #: pretix/static/pretixcontrol/js/ui/checkinrules.js:194
msgctxt "entry_status" msgctxt "entry_status"
msgid "absent" msgid "absent"
msgstr "" msgstr "afwezig"
#: pretix/static/pretixcontrol/js/ui/editor.js:171 #: pretix/static/pretixcontrol/js/ui/editor.js:171
msgid "Check-in QR" msgid "Check-in QR"
@@ -573,9 +567,8 @@ msgid "Group of objects"
msgstr "Groep van objecten" msgstr "Groep van objecten"
#: pretix/static/pretixcontrol/js/ui/editor.js:908 #: pretix/static/pretixcontrol/js/ui/editor.js:908
#, fuzzy
msgid "Text object (deprecated)" msgid "Text object (deprecated)"
msgstr "Tekstobject" msgstr "Tekstobject (verouderd)"
#: pretix/static/pretixcontrol/js/ui/editor.js:910 #: pretix/static/pretixcontrol/js/ui/editor.js:910
msgid "Text box" msgid "Text box"
@@ -662,11 +655,11 @@ msgstr "Alleen geselecteerde"
#: pretix/static/pretixcontrol/js/ui/main.js:820 #: pretix/static/pretixcontrol/js/ui/main.js:820
msgid "Enter page number between 1 and %(max)s." msgid "Enter page number between 1 and %(max)s."
msgstr "" msgstr "voer een pagina nummer tussen 1 en %(max)s in."
#: pretix/static/pretixcontrol/js/ui/main.js:823 #: pretix/static/pretixcontrol/js/ui/main.js:823
msgid "Invalid page number." msgid "Invalid page number."
msgstr "" msgstr "Ongeldig pagina nummer."
#: pretix/static/pretixcontrol/js/ui/main.js:981 #: pretix/static/pretixcontrol/js/ui/main.js:981
msgid "Use a different name internally" msgid "Use a different name internally"
@@ -752,22 +745,22 @@ msgstr "Uw lokale tijd:"
#: pretix/static/pretixpresale/js/walletdetection.js:39 #: pretix/static/pretixpresale/js/walletdetection.js:39
msgid "Google Pay" msgid "Google Pay"
msgstr "" msgstr "Google Pay"
#: pretix/static/pretixpresale/js/widget/widget.js:16 #: pretix/static/pretixpresale/js/widget/widget.js:16
msgctxt "widget" msgctxt "widget"
msgid "Quantity" msgid "Quantity"
msgstr "" msgstr "Aantal"
#: pretix/static/pretixpresale/js/widget/widget.js:17 #: pretix/static/pretixpresale/js/widget/widget.js:17
msgctxt "widget" msgctxt "widget"
msgid "Decrease quantity" msgid "Decrease quantity"
msgstr "" msgstr "Verlaag aantal"
#: pretix/static/pretixpresale/js/widget/widget.js:18 #: pretix/static/pretixpresale/js/widget/widget.js:18
msgctxt "widget" msgctxt "widget"
msgid "Increase quantity" msgid "Increase quantity"
msgstr "" msgstr "Verhoog aantal"
#: pretix/static/pretixpresale/js/widget/widget.js:19 #: pretix/static/pretixpresale/js/widget/widget.js:19
msgctxt "widget" msgctxt "widget"
@@ -778,19 +771,18 @@ msgstr "Prijs"
#, javascript-format #, javascript-format
msgctxt "widget" msgctxt "widget"
msgid "Original price: %s" msgid "Original price: %s"
msgstr "" msgstr "Originele prijs: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:21 #: pretix/static/pretixpresale/js/widget/widget.js:21
#, javascript-format #, javascript-format
msgctxt "widget" msgctxt "widget"
msgid "New price: %s" msgid "New price: %s"
msgstr "" msgstr "Nieuwe prijs: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:22 #: pretix/static/pretixpresale/js/widget/widget.js:22
#, fuzzy
msgctxt "widget" msgctxt "widget"
msgid "Select" msgid "Select"
msgstr "Alleen geselecteerde" msgstr "Selecteer"
#: pretix/static/pretixpresale/js/widget/widget.js:23 #: pretix/static/pretixpresale/js/widget/widget.js:23
#, javascript-format #, javascript-format
@@ -838,7 +830,7 @@ msgstr "vanaf %(currency)s %(price)s"
#, javascript-format #, javascript-format
msgctxt "widget" msgctxt "widget"
msgid "Image of %s" msgid "Image of %s"
msgstr "" msgstr "Afbeelding van %s"
#: pretix/static/pretixpresale/js/widget/widget.js:32 #: pretix/static/pretixpresale/js/widget/widget.js:32
msgctxt "widget" msgctxt "widget"
@@ -873,21 +865,19 @@ msgstr "Alleen verkrijgbaar met een voucher"
#: pretix/static/pretixpresale/js/widget/widget.js:38 #: pretix/static/pretixpresale/js/widget/widget.js:38
#: pretix/static/pretixpresale/js/widget/widget.js:41 #: pretix/static/pretixpresale/js/widget/widget.js:41
#, fuzzy
msgctxt "widget" msgctxt "widget"
msgid "Not yet available" msgid "Not yet available"
msgstr "momenteel beschikbaar: %s" msgstr "Nog niet beschikbaar"
#: pretix/static/pretixpresale/js/widget/widget.js:39 #: pretix/static/pretixpresale/js/widget/widget.js:39
msgctxt "widget" msgctxt "widget"
msgid "Not available anymore" msgid "Not available anymore"
msgstr "" msgstr "Niet langer beschikbaar"
#: pretix/static/pretixpresale/js/widget/widget.js:40 #: pretix/static/pretixpresale/js/widget/widget.js:40
#, fuzzy
msgctxt "widget" msgctxt "widget"
msgid "Currently not available" msgid "Currently not available"
msgstr "momenteel beschikbaar: %s" msgstr "Momenteel niet beschikbaar"
#: pretix/static/pretixpresale/js/widget/widget.js:42 #: pretix/static/pretixpresale/js/widget/widget.js:42
#, javascript-format #, javascript-format
@@ -920,12 +910,9 @@ msgid "Open ticket shop"
msgstr "Open de ticketwinkel" msgstr "Open de ticketwinkel"
#: pretix/static/pretixpresale/js/widget/widget.js:48 #: pretix/static/pretixpresale/js/widget/widget.js:48
#, fuzzy
#| msgctxt "widget"
#| msgid "Resume checkout"
msgctxt "widget" msgctxt "widget"
msgid "Checkout" msgid "Checkout"
msgstr "Doorgaan met afrekenen" msgstr "Afrekenen"
#: pretix/static/pretixpresale/js/widget/widget.js:49 #: pretix/static/pretixpresale/js/widget/widget.js:49
msgctxt "widget" msgctxt "widget"
@@ -989,16 +976,14 @@ msgid "Continue"
msgstr "Ga verder" msgstr "Ga verder"
#: pretix/static/pretixpresale/js/widget/widget.js:61 #: pretix/static/pretixpresale/js/widget/widget.js:61
#, fuzzy
msgctxt "widget" msgctxt "widget"
msgid "Show variants" msgid "Show variants"
msgstr "Zie variaties" msgstr "Toon varianten"
#: pretix/static/pretixpresale/js/widget/widget.js:62 #: pretix/static/pretixpresale/js/widget/widget.js:62
#, fuzzy
msgctxt "widget" msgctxt "widget"
msgid "Hide variants" msgid "Hide variants"
msgstr "Zie variaties" msgstr "Verberg varianten"
#: pretix/static/pretixpresale/js/widget/widget.js:63 #: pretix/static/pretixpresale/js/widget/widget.js:63
msgctxt "widget" msgctxt "widget"
@@ -1047,6 +1032,9 @@ 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 ""
"Sommige of alle tiketcategorieën zijn op heden uitverkocht. Als je wilt, kun "
"je jezelf toevoegen aan de wachtlijst. We zullen je informeren wanneer er "
"weer plaatsen beschikbaar zijn."
#: pretix/static/pretixpresale/js/widget/widget.js:72 #: pretix/static/pretixpresale/js/widget/widget.js:72
msgctxt "widget" msgctxt "widget"
@@ -1083,31 +1071,31 @@ msgstr "Zo"
#: pretix/static/pretixpresale/js/widget/widget.js:81 #: pretix/static/pretixpresale/js/widget/widget.js:81
msgid "Monday" msgid "Monday"
msgstr "" msgstr "Maandag"
#: pretix/static/pretixpresale/js/widget/widget.js:82 #: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "Tuesday" msgid "Tuesday"
msgstr "" msgstr "Dinsdag"
#: pretix/static/pretixpresale/js/widget/widget.js:83 #: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "Wednesday" msgid "Wednesday"
msgstr "" msgstr "Woensdag"
#: pretix/static/pretixpresale/js/widget/widget.js:84 #: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "Thursday" msgid "Thursday"
msgstr "" msgstr "Donderdag"
#: pretix/static/pretixpresale/js/widget/widget.js:85 #: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "Friday" msgid "Friday"
msgstr "" msgstr "Vrijdag"
#: pretix/static/pretixpresale/js/widget/widget.js:86 #: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "Saturday" msgid "Saturday"
msgstr "" msgstr "Zaterdag"
#: pretix/static/pretixpresale/js/widget/widget.js:87 #: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "Sunday" msgid "Sunday"
msgstr "" msgstr "Zondag"
#: pretix/static/pretixpresale/js/widget/widget.js:90 #: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "January" msgid "January"

View File

@@ -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-04-28 11:06+0000\n" "POT-Creation-Date: 2025-04-28 11:06+0000\n"
"PO-Revision-Date: 2025-02-21 19:00+0000\n" "PO-Revision-Date: 2025-05-06 16:20+0000\n"
"Last-Translator: anonymous <noreply@weblate.org>\n" "Last-Translator: KC Tseng <tkc0204@gmail.com>\n"
"Language-Team: Chinese (Traditional Han script) <https://translate.pretix.eu/" "Language-Team: Chinese (Traditional Han script) <https://translate.pretix.eu/"
"projects/pretix/pretix/zh_Hant/>\n" "projects/pretix/pretix/zh_Hant/>\n"
"Language: zh_Hant\n" "Language: zh_Hant\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.10\n" "X-Generator: Weblate 5.11.1\n"
#: pretix/_base_settings.py:87 #: pretix/_base_settings.py:87
msgid "English" msgid "English"
@@ -57,7 +57,7 @@ msgstr "捷克語"
#: pretix/_base_settings.py:96 #: pretix/_base_settings.py:96
msgid "Croatian" msgid "Croatian"
msgstr "" msgstr "克羅埃西亞語"
#: pretix/_base_settings.py:97 #: pretix/_base_settings.py:97
msgid "Danish" msgid "Danish"
@@ -2910,11 +2910,9 @@ msgid "Repeat password"
msgstr "重複" msgstr "重複"
#: pretix/base/forms/questions.py:134 pretix/base/forms/questions.py:256 #: pretix/base/forms/questions.py:134 pretix/base/forms/questions.py:256
#, fuzzy
#| msgid "No country specified."
msgctxt "name_salutation" msgctxt "name_salutation"
msgid "not specified" msgid "not specified"
msgstr "未指定國家/地區。" msgstr "未指定"
#: pretix/base/forms/questions.py:219 #: pretix/base/forms/questions.py:219
msgid "Please do not use special characters in names." msgid "Please do not use special characters in names."
@@ -3980,10 +3978,8 @@ msgid "Grant type"
msgstr "授權類型" msgstr "授權類型"
#: pretix/base/models/customers.py:420 #: pretix/base/models/customers.py:420
#, fuzzy
#| msgid "Required question"
msgid "Require PKCE extension" msgid "Require PKCE extension"
msgstr "必填題" msgstr "需要交換驗證碼用的驗證密鑰(PKCE)擴充功能"
#: pretix/base/models/customers.py:432 #: pretix/base/models/customers.py:432
msgid "Allowed access scopes" msgid "Allowed access scopes"
@@ -4139,12 +4135,9 @@ msgstr ""
"產品僅限於例如解鎖隱藏產品或獲得售罄配額仍可享折扣。" "產品僅限於例如解鎖隱藏產品或獲得售罄配額仍可享折扣。"
#: pretix/base/models/discount.py:177 #: pretix/base/models/discount.py:177
#, fuzzy
#| msgctxt "subevent"
#| msgid "All dates starting before"
msgctxt "subevent" msgctxt "subevent"
msgid "Available for dates starting from" msgid "Available for dates starting from"
msgstr "之前開始的所有日期" msgstr "適用日期始於"
#: pretix/base/models/discount.py:182 #: pretix/base/models/discount.py:182
#, fuzzy #, fuzzy
@@ -5333,18 +5326,12 @@ msgid "Unknown country code."
msgstr "未知國家代碼." msgstr "未知國家代碼."
#: pretix/base/models/items.py:1921 pretix/base/models/items.py:1923 #: pretix/base/models/items.py:1921 pretix/base/models/items.py:1923
#, fuzzy
#| msgid "The maximum count needs to be greater than the minimum count."
msgid "The maximum date must not be before the minimum value." msgid "The maximum date must not be before the minimum value."
msgstr "最大計數需要大於最小計數。" msgstr "最大日期不得早於最小。"
#: pretix/base/models/items.py:1925 #: pretix/base/models/items.py:1925
#, fuzzy
#| msgid ""
#| "The maximum number of usages may not be lower than the minimum number of "
#| "usages."
msgid "The maximum value must not be lower than the minimum value." msgid "The maximum value must not be lower than the minimum value."
msgstr "最大使用次數,不得低於最小使用次數。" msgstr "最大不得低於最小。"
#: pretix/base/models/items.py:1942 #: pretix/base/models/items.py:1942
#: pretix/control/templates/pretixcontrol/items/question.html:90 #: pretix/control/templates/pretixcontrol/items/question.html:90
@@ -6738,11 +6725,9 @@ msgid "The payment for this invoice has already been received."
msgstr "此發票的付款已收到。" msgstr "此發票的付款已收到。"
#: pretix/base/payment.py:970 #: pretix/base/payment.py:970
#, fuzzy
#| msgid "This payment can not be canceled at the moment."
msgid "" msgid ""
"This payment is already being processed and can not be canceled any more." "This payment is already being processed and can not be canceled any more."
msgstr "此付款目前無法取消。" msgstr "此付款已在處理中,無法取消。"
#: pretix/base/payment.py:984 #: pretix/base/payment.py:984
msgid "Automatic refunds are not supported by this payment provider." msgid "Automatic refunds are not supported by this payment provider."
@@ -7087,7 +7072,7 @@ msgstr "活動從工作日開始"
#: pretix/base/pdf.py:266 pretix/base/pdf.py:295 #: pretix/base/pdf.py:266 pretix/base/pdf.py:295
#: pretix/base/services/checkin.py:362 pretix/control/forms/filter.py:1240 #: pretix/base/services/checkin.py:362 pretix/control/forms/filter.py:1240
msgid "Friday" msgid "Friday"
msgstr "星期五" msgstr "五"
#: pretix/base/pdf.py:270 #: pretix/base/pdf.py:270
msgid "Event end date and time" msgid "Event end date and time"
@@ -7762,27 +7747,27 @@ msgstr "工作日"
#: pretix/base/services/checkin.py:358 pretix/control/forms/filter.py:1236 #: pretix/base/services/checkin.py:358 pretix/control/forms/filter.py:1236
msgid "Monday" msgid "Monday"
msgstr "星期一" msgstr "一"
#: pretix/base/services/checkin.py:359 pretix/control/forms/filter.py:1237 #: pretix/base/services/checkin.py:359 pretix/control/forms/filter.py:1237
msgid "Tuesday" msgid "Tuesday"
msgstr "星期二" msgstr "二"
#: pretix/base/services/checkin.py:360 pretix/control/forms/filter.py:1238 #: pretix/base/services/checkin.py:360 pretix/control/forms/filter.py:1238
msgid "Wednesday" msgid "Wednesday"
msgstr "星期三" msgstr "三"
#: pretix/base/services/checkin.py:361 pretix/control/forms/filter.py:1239 #: pretix/base/services/checkin.py:361 pretix/control/forms/filter.py:1239
msgid "Thursday" msgid "Thursday"
msgstr "星期四" msgstr "四"
#: pretix/base/services/checkin.py:363 pretix/control/forms/filter.py:1241 #: pretix/base/services/checkin.py:363 pretix/control/forms/filter.py:1241
msgid "Saturday" msgid "Saturday"
msgstr "星期六" msgstr "六"
#: pretix/base/services/checkin.py:364 pretix/control/forms/filter.py:1242 #: pretix/base/services/checkin.py:364 pretix/control/forms/filter.py:1242
msgid "Sunday" msgid "Sunday"
msgstr "星期天" msgstr "週日"
#: pretix/base/services/checkin.py:368 #: pretix/base/services/checkin.py:368
#, python-brace-format #, python-brace-format
@@ -9315,6 +9300,9 @@ msgid ""
"page. Note that pretix still is a system built around events and the date " "page. Note that pretix still is a system built around events and the date "
"may still show up in other places." "may still show up in other places."
msgstr "" msgstr ""
"如果您僅出售無特定日期的物品(例如:禮品卡或可隨時使用的門票),請取消勾選此"
"方塊。系統將停止在某些地方活動開始頁面顯示活動日期。請注意pretix "
"仍然是一個圍繞建立活動的系統,日期可能仍會出現在其他地方。"
#: pretix/base/settings.py:1326 #: pretix/base/settings.py:1326
msgid "Show event end date" msgid "Show event end date"
@@ -10920,13 +10908,6 @@ msgid "Header image"
msgstr "標題圖像" msgstr "標題圖像"
#: pretix/base/settings.py:2885 #: pretix/base/settings.py:2885
#, fuzzy
#| msgid ""
#| "If you provide a logo image, we will by default not show your event name "
#| "and date in the page header. By default, we show your logo with a size of "
#| "up to 1140x120 pixels. You can increase the size with the setting below. "
#| "We recommend not using small details on the picture as it will be resized "
#| "on smaller screens."
msgid "" msgid ""
"If you provide a logo image, we will by default not show your event name and " "If you provide a logo image, we will by default not show your event name and "
"date in the page header. If you use a white background, we show your logo " "date in the page header. If you use a white background, we show your logo "
@@ -10934,9 +10915,10 @@ msgid ""
"pixels. You can increase the size with the setting below. We recommend not " "pixels. You can increase the size with the setting below. We recommend not "
"using small details on the picture as it will be resized on smaller screens." "using small details on the picture as it will be resized on smaller screens."
msgstr "" msgstr ""
"如果你提供徽章標誌圖片,默認情況下,我們不會在頁中顯示您的活動名稱和日期。" "如果你提供標誌圖片,預設情況下,我們不會在頁中顯示您的活動名稱和日期。如果"
"默認情況下我們顯示的徽標大小最大為1140x120圖元。您可以使用以下設置增加大" "您使用白色背景的標誌我們顯示標誌尺寸最大為1140x120像素其餘情況的最大尺寸"
"小。我們建議不要在圖片上使用小細節,因為它將在較小的螢幕上調整大小。" "為您1120x120像素。您可以使用下列設定擴大尺寸。我們建議不要在圖片上使用小細節"
",因為它的尺寸將在較小的螢幕被調整。"
#: pretix/base/settings.py:2906 pretix/base/settings.py:2949 #: pretix/base/settings.py:2906 pretix/base/settings.py:2949
msgid "Use header image in its full size" msgid "Use header image in its full size"
@@ -10960,13 +10942,6 @@ msgstr ""
"的標題圖像,則將忽略此選項,並始終顯示活動標題。" "的標題圖像,則將忽略此選項,並始終顯示活動標題。"
#: pretix/base/settings.py:2929 pretix/control/forms/organizer.py:524 #: pretix/base/settings.py:2929 pretix/control/forms/organizer.py:524
#, fuzzy
#| msgid ""
#| "If you provide a logo image, we will by default not show your "
#| "organization name in the page header. By default, we show your logo with "
#| "a size of up to 1140x120 pixels. You can increase the size with the "
#| "setting below. We recommend not using small details on the picture as it "
#| "will be resized on smaller screens."
msgid "" msgid ""
"If you provide a logo image, we will by default not show your organization " "If you provide a logo image, we will by default not show your organization "
"name in the page header. If you use a white background, we show your logo " "name in the page header. If you use a white background, we show your logo "
@@ -10974,10 +10949,11 @@ msgid ""
"pixels. You can increase the size with the setting below. We recommend not " "pixels. You can increase the size with the setting below. We recommend not "
"using small details on the picture as it will be resized on smaller screens." "using small details on the picture as it will be resized on smaller screens."
msgstr "" msgstr ""
"如果你提供徽章標誌圖片,預設情況下,我們不會在頁面抬頭中顯示你的活動名稱和" "如果你提供標誌圖片,預設情況下,我們不會在頁中顯示你的活動名稱和日期。如果"
"日期。預設值情況下我們顯示的徽章標誌圖片大小最大為1140x120圖元。你可以使用" "你使用白色背景我們顯示的標誌尺寸最大為1140x120像素。否則最大尺寸為 "
"以下設置增加大小。我們建議不要在圖片上使用小細節,因為圖片將在較小的螢幕上調" "1120x120 "
"整大小。" "像素。你可以使用下列設定增加大小。我們建議不要在圖片上使用小細節,因為圖片將"
"在較小的螢幕上調整尺寸。"
#: pretix/base/settings.py:2959 #: pretix/base/settings.py:2959
msgid "Use header image also for events without an individually uploaded logo" msgid "Use header image also for events without an individually uploaded logo"
@@ -11352,18 +11328,14 @@ msgid "MA"
msgstr "MA" msgstr "MA"
#: pretix/base/settings.py:3722 pretix/base/settings.py:3724 #: pretix/base/settings.py:3722 pretix/base/settings.py:3724
#, fuzzy
#| msgid "Provider name"
msgctxt "address" msgctxt "address"
msgid "Province" msgid "Province"
msgstr "提供者名稱" msgstr ""
#: pretix/base/settings.py:3723 #: pretix/base/settings.py:3723
#, fuzzy
#| msgid "Price effect"
msgctxt "address" msgctxt "address"
msgid "Prefecture" msgid "Prefecture"
msgstr "價格效應" msgstr "縣/州/區"
#: pretix/base/settings.py:3812 pretix/control/forms/event.py:228 #: pretix/base/settings.py:3812 pretix/control/forms/event.py:228
msgid "" msgid ""
@@ -13372,7 +13344,7 @@ msgstr "小冊子磁磚屬性"
#: pretix/control/forms/global_settings.py:103 #: pretix/control/forms/global_settings.py:103
msgid "ApplePay MerchantID Domain Association" msgid "ApplePay MerchantID Domain Association"
msgstr "" msgstr "ApplePay 網域憑證驗證"
#: pretix/control/forms/global_settings.py:104 #: pretix/control/forms/global_settings.py:104
#, python-brace-format #, python-brace-format
@@ -13798,7 +13770,8 @@ msgid ""
"The password contains characters not supported by our email system. Please " "The password contains characters not supported by our email system. Please "
"only use characters A-Z, a-z, 0-9, and common special characters " "only use characters A-Z, a-z, 0-9, and common special characters "
"({characters})." "({characters})."
msgstr "" msgstr "密碼包含我們電子郵件系統不支援的字元。僅接受字元 A-Z、a-z、0-9 "
"和常見的特殊字元 ({characters})。"
#: pretix/control/forms/mailsetup.py:70 #: pretix/control/forms/mailsetup.py:70
msgid "Use STARTTLS" msgid "Use STARTTLS"
@@ -14132,7 +14105,7 @@ msgstr "收件人"
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
#| msgid "Attach ticket files" #| msgid "Attach ticket files"
msgid "Attach {file}" msgid "Attach {file}"
msgstr "附加票證檔" msgstr "附件{files}"
#: pretix/control/forms/orders.py:796 #: pretix/control/forms/orders.py:796
msgid "" msgid ""
@@ -14448,7 +14421,7 @@ msgstr "電話欄位"
#: pretix/control/forms/organizer.py:1048 #: pretix/control/forms/organizer.py:1048
msgctxt "sso_oidc" msgctxt "sso_oidc"
msgid "Query parameters" msgid "Query parameters"
msgstr "" msgstr "查詢參數"
#: pretix/control/forms/organizer.py:1049 #: pretix/control/forms/organizer.py:1049
#, python-brace-format #, python-brace-format
@@ -14456,7 +14429,7 @@ msgctxt "sso_oidc"
msgid "" msgid ""
"Optional query parameters, that will be added to calls to the authorization " "Optional query parameters, that will be added to calls to the authorization "
"endpoint. Enter as: {example}" "endpoint. Enter as: {example}"
msgstr "" msgstr "可選查詢參數,將被加入到對授權端的呼叫。輸入為:{example}"
#: pretix/control/forms/organizer.py:1110 #: pretix/control/forms/organizer.py:1110
msgid "Invalidate old client secret and generate a new one" msgid "Invalidate old client secret and generate a new one"
@@ -16770,20 +16743,14 @@ msgid "Delete check-ins"
msgstr "刪除簽到" msgstr "刪除簽到"
#: pretix/control/templates/pretixcontrol/checkin/bulk_revert_confirm.html:15 #: pretix/control/templates/pretixcontrol/checkin/bulk_revert_confirm.html:15
#, fuzzy, python-format #, python-format
#| msgid ""
#| "Are you sure you want to permanently delete the check-ins of <strong>one "
#| "ticket</strong>."
#| msgid_plural ""
#| "Are you sure you want to permanently delete the check-ins of "
#| "<strong>%(count)s tickets</strong>?"
msgid "" msgid ""
"Are you sure you want to permanently delete the check-ins of <strong>one " "Are you sure you want to permanently delete the check-ins of <strong>one "
"ticket</strong>?" "ticket</strong>?"
msgid_plural "" msgid_plural ""
"Are you sure you want to permanently delete the check-ins of " "Are you sure you want to permanently delete the check-ins of "
"<strong>%(count)s tickets</strong>?" "<strong>%(count)s tickets</strong>?"
msgstr[0] "你確定要永久刪除<strong>%(count)s 張票</strong>的簽到清單嗎?" msgstr[0] "你確定要永久刪除<strong>%(count)s 張票</strong>的報到紀錄嗎?"
#: pretix/control/templates/pretixcontrol/checkin/bulk_revert_confirm.html:24 #: pretix/control/templates/pretixcontrol/checkin/bulk_revert_confirm.html:24
#: pretix/control/templates/pretixcontrol/checkin/list_delete.html:18 #: pretix/control/templates/pretixcontrol/checkin/list_delete.html:18
@@ -17443,6 +17410,18 @@ msgid ""
"Best regards, \n" "Best regards, \n"
"Your %(instance)s team\n" "Your %(instance)s team\n"
msgstr "" msgstr ""
"你好,\n"
"\n"
"偵測到有人從不尋常或新位置登入您的 %(instance)s 帳戶。登入是在 %(country)s "
"使用 %(os)s 系統的 %(agent)s 執行。\n"
"\n"
"如果這是您,您可以放心忽略這封電子郵件。\n"
"\n"
"如果這不是您本人,我們建議您在帳戶設定中變更密碼:\n"
"\n"
"%(url)s\n"
"\n"
"%(instance)s 團隊 敬上\n"
#: pretix/control/templates/pretixcontrol/email/security_notice.txt:1 #: pretix/control/templates/pretixcontrol/email/security_notice.txt:1
#, python-format #, python-format
@@ -18209,10 +18188,8 @@ msgid "Disabled"
msgstr "禁用" msgstr "禁用"
#: pretix/control/templates/pretixcontrol/event/payment.html:57 #: pretix/control/templates/pretixcontrol/event/payment.html:57
#, fuzzy
#| msgid "Enable waiting list"
msgid "Enable additional payment plugins" msgid "Enable additional payment plugins"
msgstr "啟動候補名單" msgstr "啟用其他支付外掛"
#: pretix/control/templates/pretixcontrol/event/payment.html:66 #: pretix/control/templates/pretixcontrol/event/payment.html:66
msgid "Deadlines" msgid "Deadlines"
@@ -18308,10 +18285,8 @@ msgid "Your changes have been saved."
msgstr "你的更改已儲存。" msgstr "你的更改已儲存。"
#: pretix/control/templates/pretixcontrol/event/plugins.html:34 #: pretix/control/templates/pretixcontrol/event/plugins.html:34
#, fuzzy
#| msgid "Check results"
msgid "Search results" msgid "Search results"
msgstr "檢查結果" msgstr "搜尋結果"
#: pretix/control/templates/pretixcontrol/event/plugins.html:56 #: pretix/control/templates/pretixcontrol/event/plugins.html:56
msgid "Top recommendation" msgid "Top recommendation"
@@ -18331,16 +18306,12 @@ msgstr "無法使用"
#: pretix/control/templates/pretixcontrol/event/plugins.html:93 #: pretix/control/templates/pretixcontrol/event/plugins.html:93
#: pretix/control/templates/pretixcontrol/event/plugins.html:105 #: pretix/control/templates/pretixcontrol/event/plugins.html:105
#, fuzzy
#| msgid "Login settings"
msgid "Open plugin settings" msgid "Open plugin settings"
msgstr "登錄設定" msgstr "開啟外掛設定"
#: pretix/control/templates/pretixcontrol/event/plugins.html:94 #: pretix/control/templates/pretixcontrol/event/plugins.html:94
#, fuzzy
#| msgid "Go to shop"
msgid "Go to" msgid "Go to"
msgstr "到商店" msgstr "前往"
#: pretix/control/templates/pretixcontrol/event/plugins.html:116 #: pretix/control/templates/pretixcontrol/event/plugins.html:116
#: pretix/control/templates/pretixcontrol/oauth/app_delete.html:15 #: pretix/control/templates/pretixcontrol/oauth/app_delete.html:15
@@ -19143,18 +19114,21 @@ msgid ""
"If you have a pretix Enterprise license, this report must be submitted to " "If you have a pretix Enterprise license, this report must be submitted to "
"pretix support when your license renews. It may also be requested by pretix " "pretix support when your license renews. It may also be requested by pretix "
"support to aid debugging of problems." "support to aid debugging of problems."
msgstr "" msgstr "如果您擁有 "
"Pretix企業版許可證必須在許可證續約時將此報告提交給pretix支援團隊。 pretix "
"支援人員可能會要求以協助調試問題。"
#: pretix/control/templates/pretixcontrol/global_sysreport.html:8 #: pretix/control/templates/pretixcontrol/global_sysreport.html:8
msgid "" msgid ""
"It serves two purposes: Collecting useful information that might help with " "It serves two purposes: Collecting useful information that might help with "
"debugging problems in your pretix installation, and verifying that your " "debugging problems in your pretix installation, and verifying that your "
"usage of pretix is in compliance with the Enterprise license you purchased." "usage of pretix is in compliance with the Enterprise license you purchased."
msgstr "" msgstr "它有兩個目的:收集可能有助於調試 pretix 安裝中問題的有用資訊,"
"以及驗證您使用pretix 時是否符合您購買的企業許可證。"
#: pretix/control/templates/pretixcontrol/global_sysreport.html:14 #: pretix/control/templates/pretixcontrol/global_sysreport.html:14
msgid "First month of license term:" msgid "First month of license term:"
msgstr "" msgstr "許可期限的第一個月:"
#: pretix/control/templates/pretixcontrol/global_sysreport.html:16 #: pretix/control/templates/pretixcontrol/global_sysreport.html:16
msgid "January" msgid "January"
@@ -19477,10 +19451,10 @@ msgstr "是否確實要刪除商品<strong>%(item)s</strong>"
#: pretix/control/templates/pretixcontrol/item/delete.html:22 #: pretix/control/templates/pretixcontrol/item/delete.html:22
#: pretix/control/templates/pretixcontrol/items/quota_delete.html:24 #: pretix/control/templates/pretixcontrol/items/quota_delete.html:24
#, fuzzy, python-format #, python-format
msgid "That will cause %(count)s voucher to be unusable." msgid "That will cause %(count)s voucher to be unusable."
msgid_plural "That will cause %(count)s voucher to be unusable." msgid_plural "That will cause %(count)s voucher to be unusable."
msgstr[0] "這將導致%(count)s優惠券不可用.這將導致 %(count)s的優惠券不可用." msgstr[0] "這將導致%(count)s優惠券無法使用。"
#: pretix/control/templates/pretixcontrol/item/delete.html:29 #: pretix/control/templates/pretixcontrol/item/delete.html:29
#: pretix/control/templates/pretixcontrol/items/quota_delete.html:31 #: pretix/control/templates/pretixcontrol/items/quota_delete.html:31
@@ -19861,20 +19835,13 @@ msgid "taxes"
msgstr "稅" msgstr "稅"
#: pretix/control/templates/pretixcontrol/items/index.html:10 #: pretix/control/templates/pretixcontrol/items/index.html:10
#, fuzzy
#| msgid ""
#| "Below, you find a list of all available products. You can click on a "
#| "product name to inspect and change product details. You can also use the "
#| "buttons on the right to change the order of products within a give "
#| "category."
msgid "" msgid ""
"Below, you find a list of all available products. You can click on a product " "Below, you find a list of all available products. You can click on a product "
"name to inspect and change product details. You can also use the buttons on " "name to inspect and change product details. You can also use the buttons on "
"the right to change the order of products or move products to a different " "the right to change the order of products or move products to a different "
"category." "category."
msgstr "" msgstr "下面,你可以找到所有可用產品的清單。你可以按下產品名稱來檢查和更改產品詳細資"
"下面,你可以找到所有可用產品的清單。你可以按下產品名稱來檢查和更改產品詳細資" "訊。你也可使用右側按鈕變更產品順序或將其移至其他類別。"
"訊。你還可以使用右側的按鈕更改給定類別中產品的順序。"
#: pretix/control/templates/pretixcontrol/items/index.html:19 #: pretix/control/templates/pretixcontrol/items/index.html:19
msgid "You haven't created any products yet." msgid "You haven't created any products yet."

View File

@@ -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-04-28 11:08+0000\n" "POT-Creation-Date: 2025-04-28 11:08+0000\n"
"PO-Revision-Date: 2025-01-31 01:00+0000\n" "PO-Revision-Date: 2025-05-06 16:20+0000\n"
"Last-Translator: Chislon <chislon@gmail.com>\n" "Last-Translator: KC Tseng <tkc0204@gmail.com>\n"
"Language-Team: Chinese (Traditional Han script) <https://translate.pretix.eu/" "Language-Team: Chinese (Traditional Han script) <https://translate.pretix.eu/"
"projects/pretix/pretix-js/zh_Hant/>\n" "projects/pretix/pretix-js/zh_Hant/>\n"
"Language: zh_Hant\n" "Language: zh_Hant\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.9.2\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
@@ -669,10 +669,8 @@ msgid "Calculating default price…"
msgstr "計算預設價格…" 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 "搜尋結果" msgstr "結果"
#: pretix/static/pretixcontrol/js/ui/question.js:42 #: pretix/static/pretixcontrol/js/ui/question.js:42
msgid "Others" msgid "Others"
@@ -898,12 +896,9 @@ msgid "Open ticket shop"
msgstr "開放售票" msgstr "開放售票"
#: pretix/static/pretixpresale/js/widget/widget.js:48 #: pretix/static/pretixpresale/js/widget/widget.js:48
#, fuzzy
#| msgctxt "widget"
#| msgid "Resume checkout"
msgctxt "widget" msgctxt "widget"
msgid "Checkout" msgid "Checkout"
msgstr "繼續結帳" msgstr "結帳"
#: pretix/static/pretixpresale/js/widget/widget.js:49 #: pretix/static/pretixpresale/js/widget/widget.js:49
msgctxt "widget" msgctxt "widget"
@@ -1058,31 +1053,31 @@ msgstr "星期天"
#: pretix/static/pretixpresale/js/widget/widget.js:81 #: pretix/static/pretixpresale/js/widget/widget.js:81
msgid "Monday" msgid "Monday"
msgstr "" msgstr "週一"
#: pretix/static/pretixpresale/js/widget/widget.js:82 #: pretix/static/pretixpresale/js/widget/widget.js:82
msgid "Tuesday" msgid "Tuesday"
msgstr "" msgstr "週二"
#: pretix/static/pretixpresale/js/widget/widget.js:83 #: pretix/static/pretixpresale/js/widget/widget.js:83
msgid "Wednesday" msgid "Wednesday"
msgstr "" msgstr "週三"
#: pretix/static/pretixpresale/js/widget/widget.js:84 #: pretix/static/pretixpresale/js/widget/widget.js:84
msgid "Thursday" msgid "Thursday"
msgstr "" msgstr "週四"
#: pretix/static/pretixpresale/js/widget/widget.js:85 #: pretix/static/pretixpresale/js/widget/widget.js:85
msgid "Friday" msgid "Friday"
msgstr "" msgstr "週五"
#: pretix/static/pretixpresale/js/widget/widget.js:86 #: pretix/static/pretixpresale/js/widget/widget.js:86
msgid "Saturday" msgid "Saturday"
msgstr "" msgstr "週六"
#: pretix/static/pretixpresale/js/widget/widget.js:87 #: pretix/static/pretixpresale/js/widget/widget.js:87
msgid "Sunday" msgid "Sunday"
msgstr "" msgstr "週日"
#: pretix/static/pretixpresale/js/widget/widget.js:90 #: pretix/static/pretixpresale/js/widget/widget.js:90
msgid "January" msgid "January"

View File

@@ -801,7 +801,13 @@ class CheckinLogList(ListExporter):
ia = ci.position.order.invoice_address ia = ci.position.order.invoice_address
except InvoiceAddress.DoesNotExist: except InvoiceAddress.DoesNotExist:
ia = InvoiceAddress() ia = InvoiceAddress()
name = (
ci.position.attendee_name or
(ci.position.addon_to.attendee_name if ci.position.addon_to else '') or
ia.name
)
else:
name = ""
yield [ yield [
date_format(ci.datetime.astimezone(self.timezone), 'SHORT_DATE_FORMAT'), date_format(ci.datetime.astimezone(self.timezone), 'SHORT_DATE_FORMAT'),
date_format(ci.datetime.astimezone(self.timezone), 'TIME_FORMAT'), date_format(ci.datetime.astimezone(self.timezone), 'TIME_FORMAT'),
@@ -811,7 +817,7 @@ class CheckinLogList(ListExporter):
ci.position.positionid if ci.position else '', ci.position.positionid if ci.position else '',
ci.raw_barcode or ci.position.secret, ci.raw_barcode or ci.position.secret,
str(ci.position.item) if ci.position else (str(ci.raw_item) if ci.raw_item else ''), str(ci.position.item) if ci.position else (str(ci.raw_item) if ci.raw_item else ''),
(ci.position.attendee_name or ia.name) if ci.position else '', name,
str(ci.device) if ci.device else '', str(ci.device) if ci.device else '',
_('Yes') if ci.force_sent is True else (_('No') if ci.force_sent is False else '?'), _('Yes') if ci.force_sent is True else (_('No') if ci.force_sent is False else '?'),
_('Yes') if ci.forced else _('No'), _('Yes') if ci.forced else _('No'),

View File

@@ -44,6 +44,7 @@ from pretix.base.forms.questions import (
from pretix.base.i18n import get_language_without_region from pretix.base.i18n import get_language_without_region
from pretix.base.models import Customer from pretix.base.models import Customer
from pretix.helpers.http import get_client_ip from pretix.helpers.http import get_client_ip
from pretix.multidomain.urlreverse import build_absolute_uri
class TokenGenerator(PasswordResetTokenGenerator): class TokenGenerator(PasswordResetTokenGenerator):
@@ -68,16 +69,24 @@ class AuthenticationForm(forms.Form):
'invalid_login': _( 'invalid_login': _(
"We have not found an account with this email address and password." "We have not found an account with this email address and password."
), ),
'invalid_login_email': _('Please verify that you entered the correct email addess.'),
'invalid_login_password': _('Please enter the correct password.'),
'inactive': _("This account is disabled."), 'inactive': _("This account is disabled."),
'unverified': _("You have not yet activated your account and set a password. Please click the link in the " 'unverified': _("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 " "email we sent you. In case you cannot find it, click \"Forgot your password?\" to receive "
"it again."), "a new email."),
} }
def __init__(self, request=None, *args, **kwargs): def __init__(self, request=None, *args, **kwargs):
self.request = request self.request = request
self.customer_cache = None self.customer_cache = None
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.fields['password'].help_text = "<a href='{}'>{}</a>".format(
build_absolute_uri(False, 'presale:organizer.customer.resetpw', kwargs={
'organizer': request.organizer.slug,
}),
_('Forgot your password?')
)
def clean(self): def clean(self):
email = self.cleaned_data.get('email') email = self.cleaned_data.get('email')
@@ -94,6 +103,8 @@ class AuthenticationForm(forms.Form):
if u.check_password(password): if u.check_password(password):
self.customer_cache = u self.customer_cache = u
if self.customer_cache is None: if self.customer_cache is None:
self.add_error("email", self.error_messages['invalid_login_email'])
self.add_error("password", self.error_messages['invalid_login_password'])
raise forms.ValidationError( raise forms.ValidationError(
self.error_messages['invalid_login'], self.error_messages['invalid_login'],
code='invalid_login', code='invalid_login',
@@ -110,15 +121,9 @@ class AuthenticationForm(forms.Form):
def confirm_login_allowed(self, user): def confirm_login_allowed(self, user):
if not user.is_active: if not user.is_active:
raise forms.ValidationError( self.add_error("email", self.error_messages['inactive'])
self.error_messages['inactive'], elif not user.is_verified:
code='inactive', self.add_error("password", self.error_messages['unverified'])
)
if not user.is_verified:
raise forms.ValidationError(
self.error_messages['unverified'],
code='unverified',
)
def get_customer(self): def get_customer(self):
return self.customer_cache return self.customer_cache

View File

@@ -65,8 +65,6 @@ def render_label(content, label_for=None, label_class=None, label_title='', labe
elif not optional: elif not optional:
opt += '<i class="label-required">{}</i>'.format(pgettext('form', 'required')) opt += '<i class="label-required">{}</i>'.format(pgettext('form', 'required'))
opt += '<strong class="label-alert" role="alert"></strong>'
builder = '<{tag}{attrs}>{content}{opt}</{tag}>' builder = '<{tag}{attrs}>{content}{opt}</{tag}>'
return format_html( return format_html(
builder, builder,

View File

@@ -44,6 +44,9 @@
</head> </head>
<body class="nojs" data-locale="{{ request.LANGUAGE_CODE }}" data-now="{% now "U.u" %}" data-datetimeformat="{{ js_datetime_format }}" data-timeformat="{{ js_time_format }}" data-dateformat="{{ js_date_format }}" data-datetimelocale="{{ js_locale }}" data-currency="{{ request.event.currency }}"> <body class="nojs" data-locale="{{ request.LANGUAGE_CODE }}" data-now="{% now "U.u" %}" data-datetimeformat="{{ js_datetime_format }}" data-timeformat="{{ js_time_format }}" data-dateformat="{{ js_date_format }}" data-datetimelocale="{{ js_locale }}" data-currency="{{ request.event.currency }}">
{{ html_page_header|safe }} {{ html_page_header|safe }}
<nav id="skip-to-main" role="navigation" aria-label="{% trans "Skip link" context "skip-to-main-nav" %}" class="sr-only on-focus-visible">
<p><a href="#content">{% trans "Skip to main content" %}</a></p>
</nav>
<header> <header>
{% if ie_deprecation_warning %} {% if ie_deprecation_warning %}
<div class="old-browser-warning"> <div class="old-browser-warning">

View File

@@ -13,7 +13,7 @@
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<aside aria-label="{% trans "Your cart" %}"> <aside aria-label="{% trans "Your cart" %}">
<details class="panel panel-default cart{% if "open_cart" not in request.GET %} sneak-peek{% endif %}" {% if "open_cart" in request.GET %}open{% endif %}> <details class="panel panel-default cart sneak-peek-container" open>
<summary class="panel-heading"> <summary class="panel-heading">
<h2 class="panel-title"> <h2 class="panel-title">
<span> <span>
@@ -33,11 +33,15 @@
</summary> </summary>
{% if "open_cart" not in request.GET %} {% if "open_cart" not in request.GET %}
<p class="sneak-peek-trigger"> <p class="sneak-peek-trigger">
<button type="button" class="btn btn-default">{% trans "Show full cart" %}</button> <button type="button" class="btn btn-default" aria-controls="cart-foldable-container">{% trans "Show full cart" %}</button>
</p> </p>
{% endif %} {% endif %}
<div> <div>
{% if "open_cart" not in request.GET %}
<div class="panel-body sneak-peek-content" id="cart-foldable-container">
{% else %}
<div class="panel-body"> <div class="panel-body">
{% endif %}
{% include "pretixpresale/event/fragment_cart.html" with cart=cart event=request.event %} {% include "pretixpresale/event/fragment_cart.html" with cart=cart event=request.event %}
</div> </div>
</div> </div>

View File

@@ -48,15 +48,6 @@
</p> </p>
{% if request.organizer.settings.customer_accounts_native %} {% if request.organizer.settings.customer_accounts_native %}
{% bootstrap_form login_form layout="checkout" %} {% bootstrap_form login_form layout="checkout" %}
<div class="row">
<div class="col-md-offset-3 col-md-9">
<a
href="{% abseventurl request.organizer "presale:organizer.customer.resetpw" %}"
target="_blank">
{% trans "Reset password" %}
</a>
</div>
</div>
{% endif %} {% endif %}
<div class="row"> <div class="row">
<div class="col-md-6 col-md-offset-3"> <div class="col-md-6 col-md-offset-3">

View File

@@ -23,10 +23,7 @@
{% trans "Seat" %} {% trans "Seat" %}
</label> </label>
<div class="col-md-9 form-control-text"> <div class="col-md-9 form-control-text">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="14" viewBox="0 0 4.7624999 3.7041668" class="svg-icon"> {% include "icons/seat.svg" with cls="svg-icon" %}
<path
d="m 1.9592032,1.8522629e-4 c -0.21468,0 -0.38861,0.17394000371 -0.38861,0.38861000371 0,0.21466 0.17393,0.38861 0.38861,0.38861 0.21468,0 0.3886001,-0.17395 0.3886001,-0.38861 0,-0.21467 -0.1739201,-0.38861000371 -0.3886001,-0.38861000371 z m 0.1049,0.84543000371 c -0.20823,-0.0326 -0.44367,0.12499 -0.39998,0.40462997 l 0.20361,1.01854 c 0.0306,0.15316 0.15301,0.28732 0.3483,0.28732 h 0.8376701 v 0.92708 c 0,0.29313 0.41187,0.29447 0.41187,0.005 v -1.19115 c 0,-0.14168 -0.0995,-0.29507 -0.29094,-0.29507 l -0.65578,-10e-4 -0.1757,-0.87644 C 2.3042533,0.95300523 2.1890432,0.86500523 2.0641032,0.84547523 Z m -0.58549,0.44906997 c -0.0946,-0.0134 -0.20202,0.0625 -0.17829,0.19172 l 0.18759,0.91054 c 0.0763,0.33956 0.36802,0.55914 0.66042,0.55914 h 0.6015201 c 0.21356,0 0.21448,-0.32143 -0.003,-0.32143 H 2.1954632 c -0.19911,0 -0.36364,-0.11898 -0.41341,-0.34107 l -0.17777,-0.87126 c -0.0165,-0.0794 -0.0688,-0.11963 -0.12557,-0.12764 z"/>
</svg>
{{ form.position.seat }} {{ form.position.seat }}
</div> </div>
</div> </div>

View File

@@ -6,11 +6,6 @@
{% load escapejson %} {% load escapejson %}
{% block inner %} {% block inner %}
<p>{% trans "Before we continue, we need you to answer some questions." %}</p> <p>{% trans "Before we continue, we need you to answer some questions." %}</p>
<p class="required-legend" aria-hidden="true">
{% blocktrans trimmed %}
You need to fill all fields that are marked with <span>*</span> to continue.
{% endblocktrans %}
</p>
{% if profiles_data %} {% if profiles_data %}
{{ profiles_data|json_script:"profiles_json" }} {{ profiles_data|json_script:"profiles_json" }}
{% endif %} {% endif %}
@@ -100,10 +95,7 @@
{% trans "Seat" %} {% trans "Seat" %}
</label> </label>
<div class="col-md-9 form-control-text"> <div class="col-md-9 form-control-text">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="14" viewBox="0 0 4.7624999 3.7041668" class="svg-icon"> {% include "icons/seat.svg" with cls="svg-icon" %}
<path
d="m 1.9592032,1.8522629e-4 c -0.21468,0 -0.38861,0.17394000371 -0.38861,0.38861000371 0,0.21466 0.17393,0.38861 0.38861,0.38861 0.21468,0 0.3886001,-0.17395 0.3886001,-0.38861 0,-0.21467 -0.1739201,-0.38861000371 -0.3886001,-0.38861000371 z m 0.1049,0.84543000371 c -0.20823,-0.0326 -0.44367,0.12499 -0.39998,0.40462997 l 0.20361,1.01854 c 0.0306,0.15316 0.15301,0.28732 0.3483,0.28732 h 0.8376701 v 0.92708 c 0,0.29313 0.41187,0.29447 0.41187,0.005 v -1.19115 c 0,-0.14168 -0.0995,-0.29507 -0.29094,-0.29507 l -0.65578,-10e-4 -0.1757,-0.87644 C 2.3042533,0.95300523 2.1890432,0.86500523 2.0641032,0.84547523 Z m -0.58549,0.44906997 c -0.0946,-0.0134 -0.20202,0.0625 -0.17829,0.19172 l 0.18759,0.91054 c 0.0763,0.33956 0.36802,0.55914 0.66042,0.55914 h 0.6015201 c 0.21356,0 0.21448,-0.32143 -0.003,-0.32143 H 2.1954632 c -0.19911,0 -0.36364,-0.11898 -0.41341,-0.34107 l -0.17777,-0.87126 c -0.0165,-0.0794 -0.0688,-0.11963 -0.12557,-0.12764 z"/>
</svg>
{{ pos.seat }} {{ pos.seat }}
</div> </div>
</div> </div>

View File

@@ -44,11 +44,8 @@
<div class="cart-icon-details"> <div class="cart-icon-details">
<dt class="sr-only">{% trans "Seat:" %}</dt> <dt class="sr-only">{% trans "Seat:" %}</dt>
<dd> <dd>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="14" viewBox="0 0 4.7624999 3.7041668" class="svg-icon"> {% include "icons/seat.svg" with cls="svg-icon" %}
<path {{ line.seat }}
d="m 1.9592032,1.8522629e-4 c -0.21468,0 -0.38861,0.17394000371 -0.38861,0.38861000371 0,0.21466 0.17393,0.38861 0.38861,0.38861 0.21468,0 0.3886001,-0.17395 0.3886001,-0.38861 0,-0.21467 -0.1739201,-0.38861000371 -0.3886001,-0.38861000371 z m 0.1049,0.84543000371 c -0.20823,-0.0326 -0.44367,0.12499 -0.39998,0.40462997 l 0.20361,1.01854 c 0.0306,0.15316 0.15301,0.28732 0.3483,0.28732 h 0.8376701 v 0.92708 c 0,0.29313 0.41187,0.29447 0.41187,0.005 v -1.19115 c 0,-0.14168 -0.0995,-0.29507 -0.29094,-0.29507 l -0.65578,-10e-4 -0.1757,-0.87644 C 2.3042533,0.95300523 2.1890432,0.86500523 2.0641032,0.84547523 Z m -0.58549,0.44906997 c -0.0946,-0.0134 -0.20202,0.0625 -0.17829,0.19172 l 0.18759,0.91054 c 0.0763,0.33956 0.36802,0.55914 0.66042,0.55914 h 0.6015201 c 0.21356,0 0.21448,-0.32143 -0.003,-0.32143 H 2.1954632 c -0.19911,0 -0.36364,-0.11898 -0.41341,-0.34107 l -0.17777,-0.87126 c -0.0165,-0.0794 -0.0688,-0.11963 -0.12557,-0.12764 z"/>
</svg>
{{ line.seat }}
</dd> </dd>
</div> </div>
{% endif %} {% endif %}
@@ -264,7 +261,7 @@
{{ line.price|money:event.currency }} {{ line.price|money:event.currency }}
{% endif %} {% endif %}
{% if line.discount and line.line_price_gross != line.price %} {% if line.discount and line.line_price_gross != line.price %}
<span class="text-success discounted" data-toggle="tooltip" title="{% trans "The price of this product was reduced because of an automatic discount." %}"> <span class="text-success discounted" data-toggle="tooltip" data-placement="bottom" title="{% trans "The price of this product was reduced because of an automatic discount." %}">
<br> <br>
<span class="fa fa-star fa-fw" aria-hidden="true"></span> <span class="fa fa-star fa-fw" aria-hidden="true"></span>
{% if line.price < line.line_price_gross %} {% if line.price < line.line_price_gross %}
@@ -337,7 +334,7 @@
{{ line.price|money:event.currency }} {{ line.price|money:event.currency }}
{% endif %} {% endif %}
{% if line.discount and line.line_price_gross != line.price %} {% if line.discount and line.line_price_gross != line.price %}
<span class="text-success discounted" data-toggle="tooltip" title="{% trans "The price of this product was reduced because of an automatic discount." %}"> <span class="text-success discounted" data-toggle="tooltip" data-placement="bottom" title="{% trans "The price of this product was reduced because of an automatic discount." %}">
<br> <br>
<span class="fa fa-star fa-fw" aria-hidden="true"></span> <span class="fa fa-star fa-fw" aria-hidden="true"></span>
{% if line.price < line.line_price_gross %} {% if line.price < line.line_price_gross %}

View File

@@ -7,7 +7,7 @@
{% load rich_text %} {% load rich_text %}
{% for tup in items_by_category %}{% with category=tup.0 items=tup.1 form_prefix=tup.2 %} {% for tup in items_by_category %}{% with category=tup.0 items=tup.1 form_prefix=tup.2 %}
{% if category %} {% if category %}
<section aria-labelledby="{{ form_prefix }}category-{{ category.id }}"{% if category.description %} aria-describedby="{{ form_prefix }}category-info-{{ category.id }}"{% endif %}> <section class="item-category" aria-labelledby="{{ form_prefix }}category-{{ category.id }}"{% if category.description %} aria-describedby="{{ form_prefix }}category-info-{{ category.id }}"{% endif %}>
<h{{ headline_level|default:3 }} class="h3" id="{{ form_prefix }}category-{{ category.id }}">{{ category.name }} <h{{ headline_level|default:3 }} class="h3" id="{{ form_prefix }}category-{{ category.id }}">{{ category.name }}
{% if category.subevent_name %} {% if category.subevent_name %}
<small class="text-muted"><i class="fa fa-calendar" aria-hidden="true"></i> {{ category.subevent_name }}</small> <small class="text-muted"><i class="fa fa-calendar" aria-hidden="true"></i> {{ category.subevent_name }}</small>
@@ -24,7 +24,7 @@
<div id="{{ form_prefix }}category-info-{{ category.id }}">{{ category.description|localize|rich_text }}</div> <div id="{{ form_prefix }}category-info-{{ category.id }}">{{ category.description|localize|rich_text }}</div>
{% endif %} {% endif %}
{% else %} {% else %}
<section aria-labelledby="{{ form_prefix }}category-none"> <section class="item-category" aria-labelledby="{{ form_prefix }}category-none">
<h{{ headline_level|default:"3" }} id="{{ form_prefix }}category-none" class="h3 sr-only">{% trans "Uncategorized items" %}</h{{ headline_level|default:3 }}> <h{{ headline_level|default:"3" }} id="{{ form_prefix }}category-none" class="h3 sr-only">{% trans "Uncategorized items" %}</h{{ headline_level|default:3 }}>
{% endif %} {% endif %}
{% for item in items %} {% for item in items %}

View File

@@ -1,44 +1,55 @@
{% load i18n %} {% load i18n %}
{% load eventurl %} {% load eventurl %}
{% load icon %}
{% load urlreplace %} {% load urlreplace %}
<nav aria-label="{% trans "calendar navigation" %}"> <nav aria-label="{% trans "calendar navigation" %}">
<ul class="row calendar-nav"> <ul class="row calendar-nav">
<li class="col-sm-4 col-xs-2 text-left flip"> <li class="text-left flip">
{% if subevent_list.has_before %} {% if subevent_list.has_before %}
<a href="?{% url_replace request "date" subevent_list.before|date:"Y-m" %}" <a href="?{% url_replace request "date" subevent_list.before|date:"Y-m" %}"
class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with month=subevent_list.before|date:"F Y" %}Show previous month, {{ month }}{% endblocktrans %}"> class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with month=subevent_list.before|date:"F Y" %}Show previous month, {{ month }}{% endblocktrans %}">
<span class="fa fa-arrow-left" aria-hidden="true"></span> {% icon "arrow-left" %}
<span class="hidden-xs">{{ subevent_list.before|date:"F Y" }}</span> <span class="hidden-xs">{{ subevent_list.before|date:"F Y" }}</span>
</a> </a>
{% endif %} {% endif %}
</li> </li>
<li class="col-sm-4 col-xs-8 text-center"> <li class="text-center">
<form class="form-inline" method="get" id="monthselform" action="{% eventurl event "presale:event.index" cart_namespace=cart_namespace %}"> <form class="form-inline" method="get" id="monthselform" action="{% eventurl event "presale:event.index" cart_namespace=cart_namespace %}">
{% for f, v in request.GET.items %} {% for f, v in request.GET.items %}
{% if f != "date" %} {% if f != "date" %}
<input type="hidden" name="{{ f }}" value="{{ v }}"> <input type="hidden" name="{{ f }}" value="{{ v }}">
{% endif %} {% endif %}
{% endfor %} {% endfor %}
<select name="date" class="form-control" aria-label="{% trans "Select month to show" %}"> <fieldset>
{% for y in subevent_list.years %} <legend class="sr-only">{% trans "Select a month to display" %}</legend>
<optgroup label="{{ y }}"> <div>
{% for m in subevent_list.months %} <label for="calendar-input-date">{% trans "Month" %}</label>
<option value="{{ y }}-{{ m|date:"m" }}" {% if m.month == subevent_list.date.month and y == subevent_list.date.year %}selected{% endif %}>{{ m|date:"F" }} {{ y }}</option> </div>
{% endfor %} <div class="input-group">
</optgroup> <select name="date" class="form-control" id="calendar-input-date">
{% endfor %} {% for y in subevent_list.years %}
</select> <optgroup label="{{ y }}">
<button type="submit" class="js-hidden btn btn-default"> {% for m in subevent_list.months %}
{% trans "Go" %} <option value="{{ y }}-{{ m|date:"m" }}" {% if m.month == subevent_list.date.month and y == subevent_list.date.year %}selected{% endif %}>{{ m|date:"F" }} {{ y }}</option>
</button> {% endfor %}
</optgroup>
{% endfor %}
</select>
<span class="input-group-btn">
<button type="submit" class="btn btn-default" aria-label="{% trans "Show month" %}">
{% icon "chevron-right" %}
</button>
</span>
</div>
</fieldset>
</form> </form>
</li> </li>
<li class="col-sm-4 col-xs-2 text-right flip"> <li class="text-right flip">
{% if subevent_list.has_after %} {% if subevent_list.has_after %}
<a href="?{% url_replace request "date" subevent_list.after|date:"Y-m" %}" <a href="?{% url_replace request "date" subevent_list.after|date:"Y-m" %}"
class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with month=subevent_list.after|date:"F Y" %}Show next month, {{ month }}{% endblocktrans %}"> class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with month=subevent_list.after|date:"F Y" %}Show next month, {{ month }}{% endblocktrans %}">
<span class="hidden-xs">{{ subevent_list.after|date:"F Y" }}</span> <span class="hidden-xs">{{ subevent_list.after|date:"F Y" }}</span>
<span class="fa fa-arrow-right" aria-hidden="true"></span> {% icon "arrow-right" %}
</a> </a>
{% endif %} {% endif %}
</li> </li>

View File

@@ -1,63 +1,78 @@
{% load i18n %} {% load i18n %}
{% load eventurl %} {% load eventurl %}
{% load icon %}
{% load urlreplace %} {% load urlreplace %}
<nav aria-label="{% trans "calendar navigation" %}"> <nav aria-label="{% trans "calendar navigation" %}">
<ul class="row calendar-nav"> <ul class="row calendar-nav">
<li class="col-sm-4 col-xs-2 text-left flip"> <li class="text-left flip">
{% if subevent_list.has_before %} {% if subevent_list.has_before %}
<a href="?{% url_replace request "date" subevent_list.before|date:"o-\WW" %}" <a href="?{% url_replace request "date" subevent_list.before|date:"o-\WW" %}"
class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with week=subevent_list.before|date:subevent_list.week_format %}Show previous week, {{ week }}{% endblocktrans %}"> class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with week=subevent_list.before|date:subevent_list.week_format %}Show previous week, {{ week }}{% endblocktrans %}">
<span class="fa fa-arrow-left" aria-hidden="true"></span> {% icon "arrow-left" %}
<span class="hidden-xs">{{ subevent_list.before|date:subevent_list.week_format }}</span> <span class="hidden-xs">{{ subevent_list.before|date:subevent_list.week_format }}</span>
</a> </a>
{% endif %} {% endif %}
</li> </li>
<li class="col-sm-4 col-xs-8 text-center"> <li class="text-center">
<form class="form-inline" method="get" id="monthselform" action="{% eventurl event "presale:event.index" cart_namespace=cart_namespace %}"> <form class="form-inline" method="get" id="monthselform" action="{% eventurl event "presale:event.index" cart_namespace=cart_namespace %}">
{% for f, v in request.GET.items %} {% for f, v in request.GET.items %}
{% if f != "date" %} {% if f != "date" %}
<input type="hidden" name="{{ f }}" value="{{ v }}"> <input type="hidden" name="{{ f }}" value="{{ v }}">
{% endif %} {% endif %}
{% endfor %}
<select name="date" class="form-control" aria-label="{% trans "Select week to show" %}">
{% for weeks_per_year in subevent_list.weeks %}
<optgroup label="{{ weeks_per_year.0.0.year }}">
{% for w in weeks_per_year %}
<option value="{{ w.0.isocalendar.0 }}-W{{ w.0.isocalendar.1 }}"
{% if w.0.isocalendar.0 == subevent_list.date.isocalendar.0 and w.0.isocalendar.1 == subevent_list.date.isocalendar.1 %}selected{% endif %}>
{{ w.0|date:subevent_list.week_format }}
({{ w.0|date:subevent_list.short_month_day_format }} {{ w.1|date:subevent_list.short_month_day_format }})
</option>
{% endfor %}
</optgroup>
{% endfor %} {% endfor %}
</select> <fieldset>
<button type="submit" class="js-hidden btn btn-default"> <legend class="sr-only">{% trans "Select a week to display" %}</legend>
{% trans "Go" %} <div>
</button> <label for="calendar-input-date">{% trans "Week" %}</label>
</div>
<div class="input-group">
<select name="date" class="form-control" aria-label="{% trans "Select week to show" %}">
{% for weeks_per_year in subevent_list.weeks %}
<optgroup label="{{ weeks_per_year.0.0.year }}">
{% for w in weeks_per_year %}
<option value="{{ w.0.isocalendar.0 }}-W{{ w.0.isocalendar.1 }}"
{% if w.0.isocalendar.0 == subevent_list.date.isocalendar.0 and w.0.isocalendar.1 == subevent_list.date.isocalendar.1 %}selected{% endif %}>
{{ w.0|date:subevent_list.week_format }}
({{ w.0|date:subevent_list.short_month_day_format }} {{ w.1|date:subevent_list.short_month_day_format }})
</option>
{% endfor %}
</optgroup>
{% endfor %}
</select>
<span class="input-group-btn">
<button type="submit" class="btn btn-default" aria-label="{% trans "Show week" %}">
{% icon "chevron-right" %}
</button>
</span>
</div>
</fieldset>
</form> </form>
</li> </li>
<li class="col-sm-4 col-xs-2 text-right flip"> <li class="text-right flip">
{% if subevent_list.has_after %} {% if subevent_list.has_after %}
<a href="?{% url_replace request "date" subevent_list.after|date:"o-\WW" %}" <a href="?{% url_replace request "date" subevent_list.after|date:"o-\WW" %}"
class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with week=subevent_list.after|date:subevent_list.week_format %}Show next week, {{ week }}{% endblocktrans %}"> class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with week=subevent_list.after|date:subevent_list.week_format %}Show next week, {{ week }}{% endblocktrans %}">
<span class="hidden-xs">{{ subevent_list.after|date:subevent_list.week_format }}</span> <span class="hidden-xs">{{ subevent_list.after|date:subevent_list.week_format }}</span>
<span class="fa fa-arrow-right" aria-hidden="true"></span> {% icon "arrow-right" %}
</a> </a>
{% endif %} {% endif %}
</li> </li>
</ul> </ul>
</nav> </nav>
{% include "pretixpresale/fragment_week_calendar.html" with show_avail=event.settings.event_list_availability days=subevent_list.days show_names=subevent_list.show_names %} {% include "pretixpresale/fragment_week_calendar.html" with show_avail=event.settings.event_list_availability days=subevent_list.days show_names=subevent_list.show_names %}
<div class="visible-xs text-center" aria-hidden="true"> <div class="row visible-xs">
<a href="?{% url_replace request "date" subevent_list.before|date:"o-\WW" %}" <div class="col-xs-6 text-left flip">
class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with week=subevent_list.before|date:subevent_list.week_format %}Show previous week, {{ week }}{% endblocktrans %}"> <a href="?{% url_replace request "date" subevent_list.before|date:"o-\WW" %}"
<span class="fa fa-arrow-left" aria-hidden="true"></span> class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with week=subevent_list.before|date:subevent_list.week_format %}Show previous week, {{ week }}{% endblocktrans %}">
{{ subevent_list.before|date:subevent_list.week_format }} <span class="fa fa-arrow-left" aria-hidden="true"></span>
</a> <span class="hidden-xs">{{ subevent_list.before|date:subevent_list.week_format }}</span>
<a href="?{% url_replace request "date" subevent_list.after|date:"o-\WW" %}" </a>
class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with week=subevent_list.after|date:subevent_list.week_format %}Show next week, {{ week }}{% endblocktrans %}"> </div>
{{ subevent_list.after|date:subevent_list.week_format }} <div class="col-xs-6 text-right flip">
<span class="fa fa-arrow-right" aria-hidden="true"></span> <a href="?{% url_replace request "date" subevent_list.after|date:"o-\WW" %}"
</a> class="btn btn-default" data-save-scrollpos aria-label="{% blocktrans with week=subevent_list.after|date:subevent_list.week_format %}Show next week, {{ week }}{% endblocktrans %}">
<span class="hidden-xs">{{ subevent_list.after|date:subevent_list.week_format }}</span>
<span class="fa fa-arrow-right" aria-hidden="true"></span>
</a>
</div>
</div> </div>

View File

@@ -71,14 +71,15 @@
{% endif %} {% endif %}
{% if subevent_list_foldable %} {% if subevent_list.list_type != "list" or subevent_list.visible_events %}
<details class="panel panel-{% if show_cart %}primary{% else %}default{% endif %}"> {% if subevent_list_foldable %}
<summary class="panel-heading"> <details class="panel panel-{% if show_cart %}primary{% else %}default{% endif %}">
{% else %} <summary class="panel-heading">
<div class="panel panel-default"> {% else %}
<div class="panel-heading"> <div class="panel panel-default">
{% endif %} <div class="panel-heading">
<h3 class="panel-title"><b> {% endif %}
<h3 class="panel-title"><strong>
{% if subevent_list_foldable %} {% if subevent_list_foldable %}
{% if show_cart %} {% if show_cart %}
{% trans "Add tickets for a different date" %} {% trans "Add tickets for a different date" %}
@@ -87,36 +88,37 @@
{% endif %} {% endif %}
{% else %} {% else %}
{% trans "Choose date to book a ticket" %} {% trans "Choose date to book a ticket" %}
{% endif %}</b> {% endif %}</strong>
</h3> </h3>
{% if subevent_list_foldable %} {% if subevent_list_foldable %}
</summary> </summary>
<div> <div>
{% else %} {% else %}
</div> </div>
{% endif %} {% endif %}
{% if filter_form.fields %} {% if filter_form.fields %}
<div class="panel-subhead"> <div class="panel-subhead">
{% include "pretixpresale/fragment_event_list_filter.html" with request=request %} {% include "pretixpresale/fragment_event_list_filter.html" with request=request %}
</div> </div>
{% endif %} {% endif %}
<div class="panel-body"> <div class="panel-body">
{% cache_large 15 subevent_list subevent_list_cache_key %} {% cache_large 15 subevent_list subevent_list_cache_key %}
{% if subevent_list.list_type == "calendar" %} {% if subevent_list.list_type == "calendar" %}
{% include "pretixpresale/event/fragment_subevent_calendar.html" %} {% include "pretixpresale/event/fragment_subevent_calendar.html" %}
{% elif subevent_list.list_type == "week" %} {% elif subevent_list.list_type == "week" %}
{% include "pretixpresale/event/fragment_subevent_calendar_week.html" %} {% include "pretixpresale/event/fragment_subevent_calendar_week.html" %}
{% else %} {% else %}
{% include "pretixpresale/event/fragment_subevent_list.html" %} {% include "pretixpresale/event/fragment_subevent_list.html" %}
{% endif %} {% endif %}
{% endcache_large %} {% endcache_large %}
</div>
{% if subevent_list_foldable %}
</div> </div>
</details> {% if subevent_list_foldable %}
{% else %} </div>
</div> </details>
{% endif %} {% else %}
</div>
{% endif %}
{% endif %}
{% if subevent %} {% if subevent %}
<h2 class="subevent-head">{{ subevent.name }}</h2> <h2 class="subevent-head">{{ subevent.name }}</h2>

View File

@@ -10,15 +10,13 @@
<h2> <h2>
{% trans "Resend order links" %} {% trans "Resend order links" %}
</h2> </h2>
<div class="row"> <p>
<div class="panel-body">
{% blocktrans trimmed %} {% blocktrans trimmed %}
If you lost the link to your order or orders, please enter the email address you If you lost the link to your order or orders, please enter the email address you
used for your order. We will send you an email with links to all orders you placed used for your order. We will send you an email with links to all orders you placed
using this email address. using this email address.
{% endblocktrans %} {% endblocktrans %}
</div> </p>
</div>
<div class="row"> <div class="row">
<form class="form" method="post"> <form class="form" method="post">
{% csrf_token %} {% csrf_token %}

View File

@@ -7,7 +7,7 @@
<thead> <thead>
<tr> <tr>
{% for d in weeks|iter_weekdays %} {% for d in weeks|iter_weekdays %}
<th><span aria-hidden="true">{{ d|date_fast:"D" }}</span><span class="sr-only">{{ d|date_fast:"l" }}</span></th> <th><span aria-hidden="true" class="text-muted">{{ d|date_fast:"D" }}</span><span class="sr-only">{{ d|date_fast:"l" }}</span></th>
{% endfor %} {% endfor %}
</tr> </tr>
</thead> </thead>

View File

@@ -16,6 +16,7 @@
{% for f in filter_form.fields %} {% for f in filter_form.fields %}
{% bootstrap_field filter_form|getitem:f %} {% bootstrap_field filter_form|getitem:f %}
{% endfor %} {% endfor %}
<div class="visible-xs">&nbsp;</div>
<button type="submit" class="btn btn-primary"> <button type="submit" class="btn btn-primary">
<span class="fa fa-filter" aria-hidden="true"></span> <span class="fa fa-filter" aria-hidden="true"></span>
{% trans "Filter" %} {% trans "Filter" %}

View File

@@ -1,61 +1,91 @@
{% extends "pretixpresale/organizers/base.html" %} {% extends "pretixpresale/organizers/base.html" %}
{% load i18n %} {% load i18n %}
{% load icon %}
{% load rich_text %} {% load rich_text %}
{% load eventurl %} {% load eventurl %}
{% load urlreplace %} {% load urlreplace %}
{% block title %}{% trans "Event overview" %}{% endblock %} {% block title %}{% trans "Event overview" %}{% endblock %}
{% block content %} {% block content %}
{% if organizer_homepage_text %} {% if organizer_homepage_text %}
<div> <div class="blank-after">
{{ organizer_homepage_text | rich_text }} {{ organizer_homepage_text | rich_text }}
</div> </div>
{% endif %} {% endif %}
<h3>{{ date|date:"F Y" }}</h3> <div class="blank-after text-left flip">
<form class="form-inline" method="get" id="monthselform" action="{% eventurl request.organizer "presale:organizer.index" %}"> {% include "pretixpresale/fragment_calendar_nav.html" with date=date request=request style="calendar" %}
{% for f, v in request.GET.items %} </div>
{% if f != "date" %} <div class="panel panel-default">
<input type="hidden" name="{{ f }}" value="{{ v }}"> <div class="panel-heading">
{% endif %} <h2 class="panel-title">
{% endfor %} <strong>
<div class="row"> {% blocktrans trimmed with month=date|date:"F Y" %}
<div class="col-md-5 col-sm-6 col-xs-12 text-left flip"> Events in {{ month }}
{% include "pretixpresale/fragment_calendar_nav.html" with date=date request=request style="calendar" %} {% endblocktrans %}
</div> </strong>
<div class="col-md-2 col-sm-4 col-xs-8 text-center" role="group" aria-label="{% trans "Select month to show" %}"> </h2>
<select name="date" class="form-control" aria-label="{% trans "Month" %}">
{% for y in years %}
<optgroup label="{{ y }}">
{% for m in months %}
<option value="{{ y }}-{{ m|date:"m" }}" {% if m.month == date.month and y == date.year %}selected{% endif %}>{{ m|date:"F" }} {{ y }}</option>
{% endfor %}
</optgroup>
{% endfor %}
</select>
<button type="submit" class="js-hidden btn btn-default">
{% trans "Go" %}
</button>
</div>
<div class="col-md-5 col-sm-2 col-xs-4 text-right flip">
{% if has_before %}
<a href="?{% url_replace request "date" before|date:"Y-m" %}"
class="btn btn-default" data-save-scrollpos aria-label="{{ before|date:"F Y" }}">
<span class="fa fa-arrow-left" aria-hidden="true"></span>
<span class="hidden-sm hidden-xs">{{ before|date:"F Y" }}</span>
</a>
{% endif %}
{% if has_after %}
<a href="?{% url_replace request "date" after|date:"Y-m" %}"
class="btn btn-default" data-save-scrollpos aria-label="{{ after|date:"F Y" }}">
<span class="fa fa-arrow-right" aria-hidden="true"></span>
<span class="hidden-sm hidden-xs">{{ after|date:"F Y" }}</span>
</a>
{% endif %}
</div>
</div> </div>
</form> {% if filter_form.fields %}
{% include "pretixpresale/fragment_event_list_filter.html" with request=request %} <div class="panel-subhead">
{% include "pretixpresale/fragment_calendar.html" with show_avail=request.organizer.settings.event_list_availability %} {% include "pretixpresale/fragment_event_list_filter.html" with request=request %}
</div>
{% endif %}
<div class="panel-body">
<nav aria-label="{% trans "calendar navigation" %}">
<ul class="row calendar-nav">
<li class="text-left flip">
{% if has_before %}
<a href="?{% url_replace request "date" before|date:"Y-m" %}"
class="btn btn-default" data-save-scrollpos aria-label="{{ before|date:"F Y" }}">
{% icon "arrow-left" %}
<span class="hidden-xs">{{ before|date:"F Y" }}</span>
</a>
{% endif %}
</li>
<li class="text-center">
<form class="form-inline" method="get" id="monthselform" action="{% eventurl request.organizer "presale:organizer.index" %}">
{% for f, v in request.GET.items %}
{% if f != "date" %}
<input type="hidden" name="{{ f }}" value="{{ v }}">
{% endif %}
{% endfor %}
<fieldset>
<legend class="sr-only">{% trans "Select a month to display" %}</legend>
<div>
<label for="calendar-input-date">{% trans "Month" %}</label>
</div>
<div class="input-group">
<select name="date" class="form-control" id="calendar-input-date">
{% for y in years %}
<optgroup label="{{ y }}">
{% for m in months %}
<option value="{{ y }}-{{ m|date:"m" }}" {% if m.month == date.month and y == date.year %}selected{% endif %}>{{ m|date:"F" }} {{ y }}</option>
{% endfor %}
</optgroup>
{% endfor %}
</select>
<span class="input-group-btn">
<button type="submit" class="btn btn-default" aria-label="{% trans "Show month" %}">
{% icon "chevron-right" %}
</button>
</span>
</div>
</fieldset>
</form>
</li>
<li class="text-right flip">
{% if has_after %}
<a href="?{% url_replace request "date" after|date:"Y-m" %}"
class="btn btn-default" data-save-scrollpos aria-label="{{ after|date:"F Y" }}">
<span class="hidden-xs">{{ after|date:"F Y" }}</span>
{% icon "arrow-right" %}
</a>
{% endif %}
</li>
</ul>
</nav>
{% include "pretixpresale/fragment_calendar.html" with show_avail=request.organizer.settings.event_list_availability %}
</div>
</div>
{% if multiple_timezones %} {% if multiple_timezones %}
<div class="alert alert-info"> <div class="alert alert-info">
{% blocktrans trimmed %} {% blocktrans trimmed %}

View File

@@ -1,68 +1,102 @@
{% extends "pretixpresale/organizers/base.html" %} {% extends "pretixpresale/organizers/base.html" %}
{% load i18n %} {% load i18n %}
{% load icon %}
{% load rich_text %} {% load rich_text %}
{% load eventurl %} {% load eventurl %}
{% load urlreplace %} {% load urlreplace %}
{% block title %}{% trans "Event overview" %}{% endblock %} {% block title %}{% trans "Event overview" %}{% endblock %}
{% block content %} {% block content %}
{% if organizer_homepage_text %} {% if organizer_homepage_text %}
<div> <div class="blank-after">
{{ organizer_homepage_text | rich_text }} {{ organizer_homepage_text | rich_text }}
</div> </div>
{% endif %} {% endif %}
<h3>{{ date|date:"DATE_FORMAT" }}</h3> <div class="blank-after text-left flip">
<form class="form-inline" method="get" id="monthselform" {% include "pretixpresale/fragment_calendar_nav.html" with date=date request=request style="day" %}
action="{% eventurl request.organizer "presale:organizer.index" %}"> </div>
{% for f, v in request.GET.items %} <div class="panel panel-default">
{% if f != "date" %} <div class="panel-heading">
<input type="hidden" name="{{ f }}" value="{{ v }}"> <h2 class="panel-title">
{% endif %} <strong>
{% endfor %} {% blocktrans trimmed with day=date|date:"DATE_FORMAT" %}
<div class="row"> Events on {{ day }}
<div class="col-md-5 col-sm-6 col-xs-12 text-left flip"> {% endblocktrans %}
{% include "pretixpresale/fragment_calendar_nav.html" with date=date request=request style="day" %} </strong>
</h2>
</div>
{% if filter_form.fields %}
<div class="panel-subhead">
{% include "pretixpresale/fragment_event_list_filter.html" with request=request %}
</div> </div>
<div class="col-md-2 col-sm-4 col-xs-8 text-center"> {% endif %}
<input class="datepickerfield form-control" value="{{ date|date:"SHORT_DATE_FORMAT" }}" name="date"> <div class="panel-body">
<button type="submit" class="js-hidden btn btn-default"> <nav aria-label="{% trans "calendar navigation" %}">
{% trans "Go" %} <ul class="row calendar-nav">
</button> <li class="text-left flip">
</div> {% if has_before %}
<div class="col-md-5 col-sm-2 col-xs-4 text-right flip"> <a href="?{% url_replace request "date" before.date.isoformat %}"
class="btn btn-default" data-save-scrollpos aria-label="{{ before|date:"SHORT_DATE_FORMAT" }}">
{% icon "arrow-left" %}
<span class="hidden-xs">{{ before|date:"SHORT_DATE_FORMAT" }}</span>
</a>
{% endif %}
</li>
<li class="text-center">
<form class="form-inline" method="get" id="monthselform" action="{% eventurl request.organizer "presale:organizer.index" %}">
{% for f, v in request.GET.items %}
{% if f != "date" %}
<input type="hidden" name="{{ f }}" value="{{ v }}">
{% endif %}
{% endfor %}
<fieldset>
<legend class="sr-only">{% trans "Select a date to display" %}</legend>
<div>
<label for="calendar-input-date">{% trans "Date" %}</label>
</div>
<div class="input-group">
<input class="datepickerfield form-control" id="calendar-input-date" value="{{ date|date:"SHORT_DATE_FORMAT" }}" name="date">
<span class="input-group-btn">
<button type="submit" class="btn btn-default" aria-label="{% trans "Show date" %}">
{% icon "chevron-right" %}
</button>
</span>
</div>
</fieldset>
</form>
</li>
<li class="text-right flip">
{% if has_after %}
<a href="?{% url_replace request "date" after.date.isoformat %}"
class="btn btn-default" data-save-scrollpos aria-label="{{ after|date:"SHORT_DATE_FORMAT" }}">
<span class="hidden-xs">{{ after|date:"SHORT_DATE_FORMAT" }}</span>
{% icon "arrow-right" %}
</a>
{% endif %}
</li>
</ul>
</nav>
{% include "pretixpresale/fragment_day_calendar.html" with show_avail=request.organizer.settings.event_list_availability %}
<div class="row visible-xs">
{% if has_before %} {% if has_before %}
<div class="col-xs-6 text-left flip">
<a href="?{% url_replace request "date" before.date.isoformat %}" <a href="?{% url_replace request "date" before.date.isoformat %}"
class="btn btn-default" data-save-scrollpos aria-label="{{ before|date:"SHORT_DATE_FORMAT" }}"> class="btn btn-default">
<span class="fa fa-arrow-left" aria-hidden="true"></span> <span class="fa fa-arrow-left" aria-hidden="true"></span>
<span class="hidden-sm hidden-xs">{{ before|date:"SHORT_DATE_FORMAT" }}</span> <span class="hidden-xs">{{ before|date:"SHORT_DATE_FORMAT" }}</span>
</a> </a>
</div>
{% endif %} {% endif %}
{% if has_after %} {% if has_after %}
<div class="col-xs-6 text-right flip{% if not has_before %} col-xs-offset-6{% endif %}">
<a href="?{% url_replace request "date" after.date.isoformat %}" <a href="?{% url_replace request "date" after.date.isoformat %}"
class="btn btn-default" data-save-scrollpos aria-label="{{ after|date:"SHORT_DATE_FORMAT" }}"> class="btn btn-default">
<span class="hidden-sm hidden-xs">{{ after|date:"SHORT_DATE_FORMAT" }}</span> <span class="hidden-xs">{{ after|date:"SHORT_DATE_FORMAT" }}</span>
<span class="fa fa-arrow-right" aria-hidden="true"></span> <span class="fa fa-arrow-right" aria-hidden="true"></span>
</a> </a>
</div>
{% endif %} {% endif %}
</div> </div>
</div> </div>
</form>
{% include "pretixpresale/fragment_event_list_filter.html" with request=request %}
{% include "pretixpresale/fragment_day_calendar.html" with show_avail=request.organizer.settings.event_list_availability %}
<div class="col-sm-4 visible-xs text-center">
{% if has_before %}
<a href="?{% url_replace request "date" before.date.isoformat %}"
class="btn btn-default">
<span class="fa fa-arrow-left" aria-hidden="true"></span>
{{ before|date:"SHORT_DATE_FORMAT" }}
</a>
{% endif %}
{% if has_after %}
<a href="?{% url_replace request "date" after.date.isoformat %}"
class="btn btn-default">
{{ after|date:"SHORT_DATE_FORMAT" }}
<span class="fa fa-arrow-right" aria-hidden="true"></span>
</a>
{% endif %}
</div> </div>
{% if multiple_timezones %} {% if multiple_timezones %}

View File

@@ -1,82 +1,117 @@
{% extends "pretixpresale/organizers/base.html" %} {% extends "pretixpresale/organizers/base.html" %}
{% load i18n %} {% load i18n %}
{% load icon %}
{% load rich_text %} {% load rich_text %}
{% load eventurl %} {% load eventurl %}
{% load urlreplace %} {% load urlreplace %}
{% block title %}{% trans "Event overview" %}{% endblock %} {% block title %}{% trans "Event overview" %}{% endblock %}
{% block content %} {% block content %}
{% if organizer_homepage_text %} {% if organizer_homepage_text %}
<div> <div class="blank-after">
{{ organizer_homepage_text | rich_text }} {{ organizer_homepage_text | rich_text }}
</div> </div>
{% endif %} {% endif %}
<h3>{{ date|date:"F Y" }}</h3> <div class="blank-after text-left flip">
<form class="form-inline" method="get" id="monthselform" {% include "pretixpresale/fragment_calendar_nav.html" with date=date request=request style="week" %}
action="{% eventurl request.organizer "presale:organizer.index" %}"> </div>
{% for f, v in request.GET.items %} <div class="panel panel-default">
{% if f != "date" %} <div class="panel-heading">
<input type="hidden" name="{{ f }}" value="{{ v }}"> <h2 class="panel-title">
{% endif %} <strong>
{% endfor %} {% blocktrans trimmed with week=date|date:week_format week_day_from=date|date:short_month_day_format week_day_to=date|date:short_month_day_format %}
<div class="row"> Events in {{ week }} ({{ week_day_from }} {{ week_day_to }})
<div class="col-md-4 col-sm-6 col-xs-12 text-left flip"> {% endblocktrans %}
{% include "pretixpresale/fragment_calendar_nav.html" with date=date request=request style="week" %} </strong>
</h2>
</div>
{% if filter_form.fields %}
<div class="panel-subhead">
{% include "pretixpresale/fragment_event_list_filter.html" with request=request %}
</div> </div>
<div class="col-md-4 col-sm-4 col-xs-8 text-center"> {% endif %}
<select name="date" class="form-control" aria-label="{% trans "Select week to show" %}"> <div class="panel-body">
{% for weeks_per_year in weeks %} <nav aria-label="{% trans "calendar navigation" %}">
<optgroup label="{{ weeks_per_year.0.0.year }}"> <ul class="row calendar-nav">
{% for w in weeks_per_year %} <li class="text-left flip">
<option value="{{ w.0.isocalendar.0 }}-W{{ w.0.isocalendar.1 }}" {% if has_before %}
{% if w.0.isocalendar.0 == date.isocalendar.0 and w.0.isocalendar.1 == date.isocalendar.1 %}selected{% endif %}> <a href="?{% url_replace request "date" before|date:"o-\WW" %}"
{{ w.0|date:week_format }} class="btn btn-default" data-save-scrollpos aria-label="{{ before|date:week_format }}">
({{ w.0|date:short_month_day_format }} {{ w.1|date:short_month_day_format }}) {% icon "arrow-left" %}
</option> <span class="hidden-xs">{{ before|date:week_format }}</span>
{% endfor %} </a>
</optgroup> {% endif %}
{% endfor %} </li>
</select> <li class="text-center">
<button type="submit" class="js-hidden btn btn-default"> <form class="form-inline" method="get" id="monthselform" action="{% eventurl request.organizer "presale:organizer.index" %}">
{% trans "Go" %} {% for f, v in request.GET.items %}
</button> {% if f != "date" %}
</div> <input type="hidden" name="{{ f }}" value="{{ v }}">
<div class="col-md-4 col-sm-2 col-xs-4 text-right flip"> {% endif %}
{% endfor %}
<fieldset>
<legend class="sr-only">{% trans "Select a week to display" %}</legend>
<div>
<label for="calendar-input-date">{% trans "Week" %}</label>
</div>
<div class="input-group">
<select name="date" class="form-control" id="calendar-input-date">
{% for weeks_per_year in weeks %}
<optgroup label="{{ weeks_per_year.0.0.year }}">
{% for w in weeks_per_year %}
<option value="{{ w.0.isocalendar.0 }}-W{{ w.0.isocalendar.1 }}"
{% if w.0.isocalendar.0 == date.isocalendar.0 and w.0.isocalendar.1 == date.isocalendar.1 %}selected{% endif %}>
{{ w.0|date:week_format }}
({{ w.0|date:short_month_day_format }} {{ w.1|date:short_month_day_format }})
</option>
{% endfor %}
</optgroup>
{% endfor %}
</select>
<span class="input-group-btn">
<button type="submit" class="btn btn-default" aria-label="{% trans "Show week" %}">
{% icon "chevron-right" %}
</button>
</span>
</div>
</fieldset>
</form>
</li>
<li class="text-right flip">
{% if has_after %}
<a href="?{% url_replace request "date" after|date:"o-\WW" %}"
class="btn btn-default" data-save-scrollpos aria-label="{{ after|date:week_format }}">
<span class="hidden-xs">{{ after|date:week_format }}</span>
{% icon "arrow-right" %}
</a>
{% endif %}
</li>
</ul>
</nav>
{% include "pretixpresale/fragment_week_calendar.html" with show_avail=request.organizer.settings.event_list_availability %}
<div class="row visible-sm visible-xs">
{% if has_before %} {% if has_before %}
<div class="col-xs-6 text-left flip">
<a href="?{% url_replace request "date" before|date:"o-\WW" %}" <a href="?{% url_replace request "date" before|date:"o-\WW" %}"
class="btn btn-default" data-save-scrollpos aria-label="{{ before|date:week_format }}"> class="btn btn-default">
<span class="fa fa-arrow-left" aria-hidden="true"></span> <span class="fa fa-arrow-left" aria-hidden="true"></span>
<span class="hidden-sm hidden-xs">{{ before|date:week_format }}</span> {{ before|date:week_format }}
</a> </a>
</div>
{% endif %} {% endif %}
{% if has_after %} {% if has_after %}
<div class="col-xs-6 text-right flip">
<a href="?{% url_replace request "date" after|date:"o-\WW" %}" <a href="?{% url_replace request "date" after|date:"o-\WW" %}"
class="btn btn-default" data-save-scrollpos aria-label="{{ after|date:week_format }}"> class="btn btn-default">
<span class="hidden-sm hidden-xs">{{ after|date:week_format }}</span> {{ after|date:week_format }}
<span class="fa fa-arrow-right" aria-hidden="true"></span> <span class="fa fa-arrow-right" aria-hidden="true"></span>
</a> </a>
</div>
{% endif %} {% endif %}
</div> </div>
</div> </div>
</form>
{% include "pretixpresale/fragment_event_list_filter.html" with request=request %}
{% include "pretixpresale/fragment_week_calendar.html" with show_avail=request.organizer.settings.event_list_availability %}
<div class="col-sm-12 visible-sm visible-xs text-center">
{% if has_before %}
<a href="?{% url_replace request "date" before|date:"o-\WW" %}"
class="btn btn-default">
<span class="fa fa-arrow-left" aria-hidden="true"></span>
{{ before|date:week_format }}
</a>
{% endif %}
{% if has_after %}
<a href="?{% url_replace request "date" after|date:"o-\WW" %}"
class="btn btn-default">
{{ after|date:week_format }}
<span class="fa fa-arrow-right" aria-hidden="true"></span>
</a>
{% endif %}
</div> </div>
{% if multiple_timezones %} {% if multiple_timezones %}
<div class="alert alert-info"> <div class="alert alert-info">
{% blocktrans trimmed %} {% blocktrans trimmed %}

View File

@@ -7,7 +7,7 @@
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
<h3 class="panel-title"> <h3 class="panel-title">
{% icon "address-card-o" %} <b>{% trans "Delete address" %}</b> {% icon "address-card-o" %} <strong>{% trans "Delete address" %}</strong>
</h3> </h3>
</div> </div>
<div class="panel-body account-addresses"> <div class="panel-body account-addresses">

View File

@@ -8,7 +8,7 @@
<div class="panel-heading"> <div class="panel-heading">
<h3 class="panel-title"> <h3 class="panel-title">
{% icon "address-card-o" %} {% icon "address-card-o" %}
<b>{% trans "Addresses" %}</b> ({{ page_obj.paginator.count }}) <strong>{% trans "Addresses" %}</strong> ({{ page_obj.paginator.count }})
</h3> </h3>
</div> </div>
<div class="panel-body"> <div class="panel-body">

View File

@@ -6,19 +6,26 @@
{% block title %}{% trans "Account information" %}{% endblock %} {% block title %}{% trans "Account information" %}{% endblock %}
{% block content %} {% block content %}
<div class="row"> <div class="row">
<div class="col-md-6 col-md-offset-3"> <div class="col-xs-12">
<h2> <form action="" method="post" class="form-horizontal">
{% blocktrans trimmed %}
Update your account information
{% endblocktrans %}
</h2>
<form action="" method="post">
{% csrf_token %} {% csrf_token %}
{% bootstrap_form form %} <div class="panel panel-default">
<div class="form-group buttons"> <div class="panel-heading">
<button type="submit" class="btn btn-primary btn-lg btn-block"> <h2 class="panel-title">
{% trans "Save" %} {% trans "Update your account information" %}
</button> </h2>
</div>
<div class="panel-body">
{% bootstrap_form form layout="checkout" %}
</div>
</div>
<div class="row checkout-button-row">
<div class="col-md-4 col-md-offset-8">
<button class="btn btn-block btn-primary btn-lg" type="submit">
{% trans "Save" %}
</button>
</div>
<div class="clearfix"></div>
</div> </div>
</form> </form>
</div> </div>

View File

@@ -7,48 +7,70 @@
{% block content %} {% block content %}
<div class="row"> <div class="row">
<div class="col-md-6 col-md-offset-3"> <div class="col-md-6 col-md-offset-3">
<h2> {% if request.organizer.settings.customer_accounts_native %}
<form action="" method="post" class="form-horizontal blank-after">
{% csrf_token %}
<div class="panel panel-primary">
<div class="panel-heading">
<h2 class="panel-title">
{% blocktrans trimmed with org=request.organizer.name %}
Sign in to your account at {{ org }}
{% endblocktrans %}
</h2>
</div>
<div class="panel-body">
{% bootstrap_form form layout="checkout" %}
<div class="row">
<div class="col-md-8 col-sm-6 hidden-xs">
<a class="btn btn-link btn-lg"
href="{% eventurl request.organizer "presale:organizer.customer.register" %}">
<small>
{% icon "address-book-o" %}
{% trans "Create account" %}
</small>
</a>
</div>
<div class="col-md-4 col-sm-6">
<button class="btn btn-block btn-primary btn-lg" type="submit">
{% icon "sign-in" %}
{% trans "Log in" %}
</button>
</div>
<div class="clearfix"></div>
</div>
<div class="row visible-xs">
<div class="col-xs-12 text-center"><br>
<a
href="{% eventurl request.organizer "presale:organizer.customer.register" %}">
{% icon "address-book-o" %}
{% trans "Create account" %}
</a>
</div>
</div>
</div>
</div>
</form>
{% else %}
<h2 class="blank-after">
{% blocktrans trimmed with org=request.organizer.name %} {% blocktrans trimmed with org=request.organizer.name %}
Sign in to your account at {{ org }} Sign in to your account at {{ org }}
{% endblocktrans %} {% endblocktrans %}
</h2> </h2>
<form action="" method="post"> {% endif %}
{% csrf_token %}
{% if request.organizer.settings.customer_accounts_native %} {% if providers %}
{% bootstrap_form form %} <ul class="list-inline text-center blank-after">
<div class="form-group buttons">
<button type="submit" class="btn btn-primary btn-lg btn-block">
{% icon "sign-in" %}
{% trans "Log in" %}
</button>
</div>
{% endif %}
{% for provider in providers %} {% for provider in providers %}
{% if provider.is_active %} <li>
<a href="{% eventurl request.organizer "presale:organizer.customer.login" provider=provider.pk %}?{{ request.META.QUERY_STRING }}" <a href="{% eventurl request.organizer "presale:organizer.customer.login" provider=provider.pk %}?{{ request.META.QUERY_STRING }}"
class="btn btn-primary btn-lg btn-block"> class="btn {% if request.organizer.settings.customer_accounts_native %}btn-default{% else %}btn-primary btn-lg btn-block{% endif %}">
{{ provider.button_label }} {% icon "sign-in" %} {{ provider.button_label }}
</a> </a>
{% endif %} </li>
{% endfor %} {% endfor %}
{% if request.organizer.settings.customer_accounts_native %} </ul>
<div class="row"> {% endif %}
<div class="col-md-6">
<a class="btn btn-link btn-block"
href="{% eventurl request.organizer "presale:organizer.customer.register" %}">
{% icon "address-book-o" %}
{% trans "Create account" %}
</a>
</div>
<div class="col-md-6">
<a class="btn btn-link btn-block"
href="{% eventurl request.organizer "presale:organizer.customer.resetpw" %}">
{% trans "Reset password" %}
</a>
</div>
</div>
{% endif %}
</form>
</div> </div>
</div> </div>
<p>&nbsp;</p> <p>&nbsp;</p>

View File

@@ -13,7 +13,7 @@
{% else %} {% else %}
{% icon "id-badge" %} {% icon "id-badge" %}
{% endif %} {% endif %}
<b>{% trans "Your membership" %}</b> <strong>{% trans "Your membership" %}</strong>
{% if membership.testmode %} {% if membership.testmode %}
<span class="h6"> <span class="h6">
{% textbubble "warning" %} {% textbubble "warning" %}

View File

@@ -9,7 +9,7 @@
<div class="panel-heading"> <div class="panel-heading">
<h3 class="panel-title"> <h3 class="panel-title">
{% icon "id-badge" %} {% icon "id-badge" %}
<b>{% trans "Memberships" %}</b> ({{ page_obj.paginator.count }}) <strong>{% trans "Memberships" %}</strong> ({{ page_obj.paginator.count }})
</h3> </h3>
</div> </div>
<div class="panel-body"> <div class="panel-body">

View File

@@ -10,7 +10,7 @@
<div class="panel-heading"> <div class="panel-heading">
<h3 class="panel-title"> <h3 class="panel-title">
{% icon "shopping-cart" %} {% icon "shopping-cart" %}
<b>{% trans "Orders" %}</b> ({{ page_obj.paginator.count }}) <strong>{% trans "Orders" %}</strong> ({{ page_obj.paginator.count }})
</h3> </h3>
</div> </div>
<div class="panel-body"> <div class="panel-body">

View File

@@ -7,18 +7,25 @@
{% block content %} {% block content %}
<div class="row"> <div class="row">
<div class="col-md-6 col-md-offset-3"> <div class="col-md-6 col-md-offset-3">
<h2> <form action="" method="post" class="form-horizontal">
{% blocktrans trimmed %}
Set a new password for your account
{% endblocktrans %}
</h2>
<form action="" method="post">
{% csrf_token %} {% csrf_token %}
{% bootstrap_form form %} <div class="panel panel-default">
<div class="form-group buttons"> <div class="panel-heading">
<button type="submit" class="btn btn-primary btn-lg btn-block"> <h2 class="panel-title">
{% trans "Save" %} {% trans "Set a new password for your account" %}
</button> </h2>
</div>
<div class="panel-body">
{% bootstrap_form form layout="checkout" %}
</div>
</div>
<div class="row checkout-button-row">
<div class="col-md-4 col-md-offset-8">
<button class="btn btn-block btn-primary btn-lg" type="submit">
{% trans "Save" %}
</button>
</div>
<div class="clearfix"></div>
</div> </div>
</form> </form>
</div> </div>

View File

@@ -7,7 +7,7 @@
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
<h3 class="panel-title"> <h3 class="panel-title">
{% icon "user" %} <b>{% trans "Delete profile" %}</b> {% icon "user" %} <strong>{% trans "Delete profile" %}</strong>
</h3> </h3>
</div> </div>
<div class="panel-body"> <div class="panel-body">

View File

@@ -8,7 +8,7 @@
<div class="panel-heading"> <div class="panel-heading">
<h3 class="panel-title"> <h3 class="panel-title">
{% icon "users" %} {% icon "users" %}
<b>{% trans "Attendee profiles" %}</b> ({{ page_obj.paginator.count }}) <strong>{% trans "Attendee profiles" %}</strong> ({{ page_obj.paginator.count }})
</h3> </h3>
</div> </div>
<div class="panel-body"> <div class="panel-body">

View File

@@ -1,28 +1,54 @@
{% extends "pretixpresale/organizers/base.html" %} {% extends "pretixpresale/organizers/base.html" %}
{% load i18n %} {% load i18n %}
{% load icon %}
{% load eventurl %} {% load eventurl %}
{% load urlreplace %} {% load urlreplace %}
{% load bootstrap3 %} {% load bootstrap3 %}
{% block title %}{% trans "Registration" %}{% endblock %} {% block title %}{% trans "Registration" %}{% endblock %}
{% block content %} {% block content %}
<div class="row"> <div class="row">
<div class="col-md-6 col-md-offset-3"> <div class="col-xs-12">
<h2> <form action="" method="post" class="form-horizontal">
{% blocktrans trimmed with org=request.organizer.name %}
Create a new account at {{ org }}
{% endblocktrans %}
</h2>
<form action="" method="post">
{% csrf_token %} {% csrf_token %}
{% bootstrap_form form %} <div class="panel panel-default">
<div class="form-group buttons"> <div class="panel-heading">
<button type="submit" class="btn btn-primary btn-lg btn-block"> <h2 class="panel-title">
{% trans "Create account" %} {% blocktrans trimmed with org=request.organizer.name %}
</button> Create a new account at {{ org }}
{% endblocktrans %}
</h2>
</div>
<div class="panel-body">
{% bootstrap_form form layout="checkout" %}
</div>
</div>
<div class="row checkout-button-row blank-after">
<div class="col-md-8 col-sm-6 hidden-xs">
<a class="btn btn-link btn-lg"
href="{% eventurl request.organizer "presale:organizer.customer.login" %}">
<small>
{% icon "sign-in" %}
{% trans "Log in to an existing account" %}
</small>
</a>
</div>
<div class="col-md-4 col-sm-6">
<button class="btn btn-block btn-primary btn-lg" type="submit">
{% icon "address-book-o" %}
{% trans "Create account" %}
</button>
</div>
<div class="clearfix"></div>
</div>
<div class="row visible-xs">
<div class="col-xs-12 text-center">
<a
href="{% eventurl request.organizer "presale:organizer.customer.login" %}">
{% icon "sign-in" %}
{% trans "Log in to an existing account" %}
</a>
</div>
</div> </div>
<a class="btn btn-link btn-block" href="{% eventurl request.organizer "presale:organizer.customer.login" %}">
{% trans "Log in to an existing account" %}
</a>
</form> </form>
</div> </div>
</div> </div>

View File

@@ -1,5 +1,6 @@
{% extends "pretixpresale/organizers/base.html" %} {% extends "pretixpresale/organizers/base.html" %}
{% load i18n %} {% load i18n %}
{% load icon %}
{% load eventurl %} {% load eventurl %}
{% load urlreplace %} {% load urlreplace %}
{% load bootstrap3 %} {% load bootstrap3 %}
@@ -7,18 +8,44 @@
{% block content %} {% block content %}
<div class="row"> <div class="row">
<div class="col-md-6 col-md-offset-3"> <div class="col-md-6 col-md-offset-3">
<h2> <form action="" method="post" class="form-horizontal">
{% blocktrans trimmed %}
Password reset
{% endblocktrans %}
</h2>
<form action="" method="post">
{% csrf_token %} {% csrf_token %}
{% bootstrap_form form %} <div class="panel panel-primary">
<div class="form-group buttons"> <div class="panel-heading">
<button type="submit" class="btn btn-primary btn-lg btn-block"> <h2 class="panel-title">
{% trans "Request a new password" %} {% trans "Request a new password" %}
</button> </h2>
</div>
<div class="panel-body">
{% bootstrap_form form layout="checkout" %}
<div class="row">
<div class="col-sm-4 hidden-xs">
<a class="btn btn-link btn-lg"
href="{% eventurl request.organizer "presale:organizer.customer.login" %}">
<small>
{% icon "sign-in" %}
{% trans "Log in" %}
</small>
</a>
</div>
<div class="col-sm-8">
<button class="btn btn-block btn-primary btn-lg" type="submit">
{% trans "Request a new password" %}
</button>
</div>
<div class="clearfix"></div>
</div>
<div class="row visible-xs">
<div class="col-xs-12 text-center">
<a
href="{% eventurl request.organizer "presale:organizer.customer.register" %}">
{% icon "sign-in" %}
{% trans "Log in" %}
</a>
</div>
</div>
</div>
</div> </div>
</form> </form>
</div> </div>

View File

@@ -7,18 +7,25 @@
{% block content %} {% block content %}
<div class="row"> <div class="row">
<div class="col-md-6 col-md-offset-3"> <div class="col-md-6 col-md-offset-3">
<h2> <form action="" method="post" class="form-horizontal">
{% blocktrans trimmed %}
Set a new password for your account
{% endblocktrans %}
</h2>
<form action="" method="post">
{% csrf_token %} {% csrf_token %}
{% bootstrap_form form %} <div class="panel panel-default">
<div class="form-group buttons"> <div class="panel-heading">
<button type="submit" class="btn btn-primary btn-lg btn-block"> <h2 class="panel-title">
{% trans "Save" %} {% trans "Set a new password for your account" %}
</button> </h2>
</div>
<div class="panel-body">
{% bootstrap_form form layout="checkout" %}
</div>
</div>
<div class="row checkout-button-row blank-after">
<div class="col-md-4 col-md-offset-8">
<button class="btn btn-block btn-primary btn-lg" type="submit">
{% trans "Save" %}
</button>
</div>
<div class="clearfix"></div>
</div> </div>
</form> </form>
</div> </div>

View File

@@ -19,28 +19,24 @@
<meta property="og:url" content="{% abseventurl organizer "presale:organizer.index" %}"/> <meta property="og:url" content="{% abseventurl organizer "presale:organizer.index" %}"/>
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<div> {% if organizer_homepage_text %}
{% if organizer_homepage_text %} <div class="blank-after">
{{ organizer_homepage_text | rich_text }} {{ organizer_homepage_text | rich_text }}
{% endif %}
</div>
<div id="monthselform">
<div class="row">
<div class="col-md-12">
{% include "pretixpresale/fragment_calendar_nav.html" with date=date request=request style="list" %}
</div>
</div> </div>
{% endif %}
<div class="blank-after text-left flip">
{% include "pretixpresale/fragment_calendar_nav.html" with date=date request=request style="list" %}
</div> </div>
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
<h2 class="panel-title"> <h2 class="panel-title">
<b> <strong>
{% if "old" in request.GET %} {% if "old" in request.GET %}
{% trans "Past events" %} {% trans "Past events" %}
{% else %} {% else %}
{% trans "Upcoming events" %} {% trans "Upcoming events" %}
{% endif %} {% endif %}
</b> </strong>
</h2> </h2>
</div> </div>
{% if filter_form.fields %} {% if filter_form.fields %}

View File

@@ -122,7 +122,7 @@ class LoginView(RedirectBackMixin, FormView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
return super().get_context_data( return super().get_context_data(
**kwargs, **kwargs,
providers=self.request.organizer.sso_providers.all() providers=self.request.organizer.sso_providers.filter(is_active=True)
) )
def get_form_kwargs(self): def get_form_kwargs(self):

View File

@@ -815,6 +815,7 @@ class EventIndex(EventViewMixin, EventListMixin, CartMixin, TemplateView):
se for se in context['subevent_list'] se for se in context['subevent_list']
if not se.presale_has_ended and (se.best_availability_state is None or se.best_availability_state >= Quota.AVAILABILITY_RESERVED) if not se.presale_has_ended and (se.best_availability_state is None or se.best_availability_state >= Quota.AVAILABILITY_RESERVED)
] ]
context['visible_events'] = len(context['subevent_list']) > 0
return context return context

View File

@@ -1452,7 +1452,7 @@ if (typeof jQuery === 'undefined') {
template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>', template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
trigger: 'hover focus', trigger: 'hover focus',
title: '', title: '',
delay: 0, delay: 1,
html: false, html: false,
container: false, container: false,
viewport: { viewport: {
@@ -1464,6 +1464,14 @@ if (typeof jQuery === 'undefined') {
whiteList : DefaultWhitelist whiteList : DefaultWhitelist
} }
Tooltip.activeTooltip = null;
function hideOnEscapeListener(e) {
if (Tooltip.activeTooltip && e.key === 'Escape') {
Tooltip.activeTooltip.hide();
}
}
Tooltip.prototype.init = function (type, element, options) { Tooltip.prototype.init = function (type, element, options) {
this.enabled = true this.enabled = true
this.type = type this.type = type
@@ -1476,6 +1484,8 @@ if (typeof jQuery === 'undefined') {
throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
} }
document.body.addEventListener('keyup', hideOnEscapeListener);
var triggers = this.options.trigger.split(' ') var triggers = this.options.trigger.split(' ')
for (var i = triggers.length; i--;) { for (var i = triggers.length; i--;) {
@@ -1483,7 +1493,7 @@ if (typeof jQuery === 'undefined') {
if (trigger == 'click') { if (trigger == 'click') {
this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
} else if (trigger != 'manual') { } else if (trigger == 'hover' || trigger == 'focus') {
var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'
var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
@@ -1547,7 +1557,8 @@ if (typeof jQuery === 'undefined') {
} }
if (obj instanceof $.Event) { if (obj instanceof $.Event) {
self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true console.log("enter",obj.currentTarget.role, obj.type, obj.currentTarget)
self.inState[(obj.currentTarget.role == 'tooltip' ? 'tip' : '') + (obj.type == 'focusin' ? 'focus' : 'hover')] = true
} }
if (self.tip().hasClass('in') || self.hoverState == 'in') { if (self.tip().hasClass('in') || self.hoverState == 'in') {
@@ -1567,6 +1578,7 @@ if (typeof jQuery === 'undefined') {
} }
Tooltip.prototype.isInStateTrue = function () { Tooltip.prototype.isInStateTrue = function () {
console.log("state:",this.inState)
for (var key in this.inState) { for (var key in this.inState) {
if (this.inState[key]) return true if (this.inState[key]) return true
} }
@@ -1584,7 +1596,8 @@ if (typeof jQuery === 'undefined') {
} }
if (obj instanceof $.Event) { if (obj instanceof $.Event) {
self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false console.log("leave",obj.currentTarget.role, obj.type, obj.currentTarget)
self.inState[(obj.currentTarget.role == 'tooltip' ? 'tip' : '') + (obj.type == 'focusout' ? 'focus' : 'hover')] = false
} }
if (self.isInStateTrue()) return if (self.isInStateTrue()) return
@@ -1610,6 +1623,12 @@ if (typeof jQuery === 'undefined') {
if (e.isDefaultPrevented() || !inDom) return if (e.isDefaultPrevented() || !inDom) return
var that = this var that = this
if (Tooltip.activeTooltip) {
Tooltip.activeTooltip.hide();
}
Tooltip.activeTooltip = this;
var $tip = this.tip() var $tip = this.tip()
var tipId = this.getUID(this.type) var tipId = this.getUID(this.type)
@@ -1768,6 +1787,8 @@ if (typeof jQuery === 'undefined') {
if (e.isDefaultPrevented()) return if (e.isDefaultPrevented()) return
Tooltip.activeTooltip = null;
$tip.removeClass('in') $tip.removeClass('in')
$.support.transition && $tip.hasClass('fade') ? $.support.transition && $tip.hasClass('fade') ?
@@ -1812,12 +1833,12 @@ if (typeof jQuery === 'undefined') {
return $.extend({}, elRect, scroll, outerDims, elOffset) return $.extend({}, elRect, scroll, outerDims, elOffset)
} }
const OVERLAP = 3;
Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : return placement == 'bottom' ? { top: pos.top + pos.height - OVERLAP, left: pos.left + pos.width / 2 - actualWidth / 2 } :
placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : placement == 'top' ? { top: pos.top - actualHeight + OVERLAP, left: pos.left + pos.width / 2 - actualWidth / 2 } :
placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2 , left: pos.left - actualWidth + OVERLAP } :
/* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width - OVERLAP }
} }
@@ -1872,6 +1893,20 @@ if (typeof jQuery === 'undefined') {
if (this.$tip.length != 1) { if (this.$tip.length != 1) {
throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
} }
var triggers = this.options.trigger.split(' ')
for (var i = triggers.length; i--;) {
var trigger = triggers[i]
if (trigger == 'tiphover' || trigger == 'tipfocus') {
var eventIn = trigger == 'tiphover' ? 'mouseenter' : 'focusin'
var eventOut = trigger == 'tiphover' ? 'mouseleave' : 'focusout'
this.$tip.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
this.$tip.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
}
}
} }
return this.$tip return this.$tip
} }

View File

@@ -51,6 +51,13 @@ $(function () {
const required = 'required' in options && options.required && isRequired && visible; const required = 'required' in options && options.required && isRequired && visible;
dependent.closest(".form-group").toggle(visible).toggleClass('required', required); dependent.closest(".form-group").toggle(visible).toggleClass('required', required);
dependent.prop("required", required); dependent.prop("required", required);
const label = dependent.closest(".form-group").find("label");
const labelRequired = label.find(".label-required");
if (!required) {
labelRequired.remove();
} else if (!labelRequired.length) {
label.append('<i class="label-required">' + gettext('required') + '</i>')
}
} }
for (var k in dependents) dependents[k].prop("disabled", false); for (var k in dependents) dependents[k].prop("disabled", false);
}).always(function() { }).always(function() {
@@ -64,6 +71,7 @@ $(function () {
dependent.closest(".form-group").toggle(visible).toggleClass('required', required); dependent.closest(".form-group").toggle(visible).toggleClass('required', required);
dependent.prop("required", required); dependent.prop("required", required);
dependent.closest(".form-group").find("label .label-required").remove();
} }
}); });
}; };

View File

@@ -2,39 +2,56 @@
setup_collapsible_details = function (el) { setup_collapsible_details = function (el) {
el.find('details.sneak-peek:not([open])').each(function() { el.find('.sneak-peek-trigger').each(function() {
this.open = true; var trigger = this;
var $elements = $("> :not(summary)", this).show().filter(':not(.sneak-peek-trigger)'); var button = this.querySelector('button');
var container = this; var content = document.getElementById(button.getAttribute('aria-controls'));
if (content.scrollHeight < 200) {
if (Array.prototype.reduce.call($elements, function (h, e) { trigger.remove();
return h + $(e).outerHeight(); content.classList.remove('sneak-peek-content');
}, 0) < 200) {
$(".sneak-peek-trigger", this).remove();
$(container).removeClass('sneak-peek');
container.style.removeProperty('height');
return; return;
} }
content.setAttribute('aria-hidden', 'true');
button.setAttribute('aria-expanded', 'false');
button.addEventListener('click', function (e) {
button.setAttribute('aria-expanded', 'true');
content.setAttribute('aria-hidden', 'false');
$elements.attr('aria-hidden', 'true'); content.addEventListener('transitionend', function() {
content.classList.remove('sneak-peek-content');
var trigger = $('summary, .sneak-peek-trigger button', container); content.style.removeProperty('height');
function onclick(e) { // we need to keep the trigger/button in the DOM to not irritate screenreaders toggling visibility
e.preventDefault(); trigger.classList.add('sr-only');
container.addEventListener('transitionend', function() {
$(container).removeClass('sneak-peek');
container.style.removeProperty('height');
}, {once: true}); }, {once: true});
container.style.height = container.scrollHeight + 'px'; content.style.height = content.scrollHeight + 'px';
$('.sneak-peek-trigger', container).fadeOut(function() {
$(this).remove();
});
$elements.removeAttr('aria-hidden');
trigger.off('click', onclick); button.addEventListener('click', function (e) {
// this will be called by screenreader users if they kept focus on the button after expanding
// we need to keep the trigger/button in the DOM to not irritate screenreaders toggling visibility
var expanded = button.getAttribute('aria-expanded') == 'true';
button.setAttribute('aria-expanded', !expanded);
content.setAttribute('aria-hidden', expanded);
});
button.addEventListener('blur', function (e) {
// if content is visible and the user leaves the button, we can safely remove the trigger/button
if (button.getAttribute('aria-expanded') == 'true') {
trigger.remove();
}
});
}, { once: true });
var container = this.closest('details.sneak-peek-container');
if (container) {
function removeSneekPeakWhenClosed(e) {
if (e.newState == "closed") {
container.removeEventListener("toggle", removeSneekPeakWhenClosed);
trigger.remove();
content.removeAttribute('aria-hidden');
content.classList.remove('sneak-peek-content');
}
}
container.addEventListener("toggle", removeSneekPeakWhenClosed);
} }
trigger.on('click', onclick);
}); });
var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]'; var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]';
@@ -43,10 +60,6 @@ setup_collapsible_details = function (el) {
return true; return true;
} }
var $details = $(this).closest("details"); var $details = $(this).closest("details");
if ($details.hasClass('sneak-peek')) {
// if sneak-peek is active, needs to be handled differently
return true;
}
var isOpen = $details.prop("open"); var isOpen = $details.prop("open");
var $detailsNotSummary = $details.children(':not(summary)'); var $detailsNotSummary = $details.children(':not(summary)');
if ($detailsNotSummary.is(':animated')) { if ($detailsNotSummary.is(':animated')) {
@@ -70,11 +83,6 @@ setup_collapsible_details = function (el) {
if (32 == event.keyCode || (13 == event.keyCode && !isOpera)) { if (32 == event.keyCode || (13 == event.keyCode && !isOpera)) {
// Space or Enter is pressed — trigger the `click` event on the `summary` element // Space or Enter is pressed — trigger the `click` event on the `summary` element
// Opera already seems to trigger the `click` event when Enter is pressed // Opera already seems to trigger the `click` event when Enter is pressed
var $details = $(this).closest("details");
if ($details.hasClass('sneak-peek')) {
// if sneak-peek is active, needs to be handled differently
return true;
}
event.preventDefault(); event.preventDefault();
$(this).click(); $(this).click();
} }

View File

@@ -227,6 +227,10 @@ svg.svg-icon {
top: 2px; top: 2px;
} }
.text-muted path {
fill: $text-muted;
}
.link-muted a, a.link-muted { .link-muted a, a.link-muted {
color: $text-muted; color: $text-muted;
} }

View File

@@ -795,9 +795,10 @@ function setup_basics(el) {
}); });
}); });
el.find('[data-toggle="tooltip"]').tooltip(); el.find('[data-toggle="tooltip"]').tooltip({ delay: 1, trigger: 'focus hover tipfocus tiphover' })
.filter(':not([tabindex])').attr('tabindex', '0');
el.find('[data-toggle="tooltip_html"]').tooltip({ el.find('[data-toggle="tooltip_html"]').tooltip({
'html': true, 'html': true, delay: 1, trigger: 'focus hover tipfocus tiphover',
'whiteList': { 'whiteList': {
// Global attributes allowed on any supplied element below. // Global attributes allowed on any supplied element below.
'*': ['class', 'dir', 'id', 'lang', 'role'], '*': ['class', 'dir', 'id', 'lang', 'role'],
@@ -812,7 +813,7 @@ function setup_basics(el) {
strong: [], strong: [],
u: [], u: [],
} }
}); }).filter(':not([tabindex])').attr('tabindex', '0');
el.find('a.pagination-selection').click(function (e) { el.find('a.pagination-selection').click(function (e) {
e.preventDefault(); e.preventDefault();

View File

@@ -83,8 +83,6 @@ var form_handlers = function (el) {
Math.abs(+new Date(opts.minDate) - new Date()) < Math.abs(+new Date(opts.maxDate) - new Date()) Math.abs(+new Date(opts.minDate) - new Date()) < Math.abs(+new Date(opts.maxDate) - new Date())
) ? opts.minDate : opts.maxDate; ) ? opts.minDate : opts.maxDate;
} }
var container = $(this).closest(".form-group");
var alert = $('.label-alert', container);
$(this).datetimepicker(opts).on("dp.hide", function() { $(this).datetimepicker(opts).on("dp.hide", function() {
// when min/max is used in datetimepicker, closing and re-opening the picker opens at the wrong date // when min/max is used in datetimepicker, closing and re-opening the picker opens at the wrong date
// therefore keep the current viewDate and re-set it after datetimepicker is done hiding // therefore keep the current viewDate and re-set it after datetimepicker is done hiding
@@ -93,32 +91,7 @@ var form_handlers = function (el) {
window.setTimeout(function () { window.setTimeout(function () {
$dtp.viewDate(currentViewDate); $dtp.viewDate(currentViewDate);
}, 50); }, 50);
}).on('dp.error', function (e) {
container.addClass("has-error");
if (e.date) {
if (e.date.isBefore(opts["minDate"])) {
alert.text(gettext("The date you entered is too early."));
} else if (e.date.isAfter(opts["maxDate"])) {
alert.text(gettext("The date you entered is too late."));
}
} else {
alert.text(gettext("We could not recognize the date you entered."));
}
var self = this;
window.setTimeout(function () {
self.focus();
}, 50);
}).on('dp.change', function (e) {
container.removeClass("has-error");
alert.text("");
}).on('blur', function (e) {// dp.change does not trigger when changed to empty string - although documentation notes otherwise
if (!this.value) {
container.removeClass("has-error");
alert.text("");
}
}); });
if ($(this).parent().is('.splitdatetimerow')) { if ($(this).parent().is('.splitdatetimerow')) {
$(this).on("dp.change", function (ev) { $(this).on("dp.change", function (ev) {
var $timepicker = $(this).closest(".splitdatetimerow").find(".timepickerfield"); var $timepicker = $(this).closest(".splitdatetimerow").find(".timepickerfield");
@@ -290,6 +263,10 @@ function setup_basics(el) {
el.find(".js-only").removeClass("js-only"); el.find(".js-only").removeClass("js-only");
el.find(".js-hidden").hide(); el.find(".js-hidden").hide();
// make sure to always have a #content for skip-link to work
if (!document.querySelector("#content")) {
(document.querySelector('main') || document.querySelector('.page-header + *')).id = "content"
}
el.find("div.collapsed").removeClass("collapsed").addClass("collapse"); el.find("div.collapsed").removeClass("collapsed").addClass("collapse");
el.find(".has-error, .alert-danger").each(function () { el.find(".has-error, .alert-danger").each(function () {
@@ -330,7 +307,8 @@ function setup_basics(el) {
e.preventDefault(); e.preventDefault();
}); });
el.find('[data-toggle="tooltip"]').tooltip(); el.find('[data-toggle="tooltip"]').tooltip({ delay: 1, trigger: 'focus hover tipfocus tiphover' })
.filter(':not([tabindex])').attr('tabindex', '0');
// AddOns // AddOns
el.find('.addon-variation-description').hide(); el.find('.addon-variation-description').hide();
@@ -499,17 +477,10 @@ $(function () {
$("[data-save-scrollpos]").on("click submit", function () { $("[data-save-scrollpos]").on("click submit", function () {
sessionStorage.setItem('scrollpos', window.scrollY); sessionStorage.setItem('scrollpos', window.scrollY);
}); });
$("#monthselform").on("submit", function () {
sessionStorage.setItem('scrollpos', window.scrollY);
});
} }
$("#monthselform select").change(function () {
if (sessionStorage) sessionStorage.setItem('scrollpos', window.scrollY);
this.form.submit();
});
$("#monthselform input").on("dp.change", function () {
if ($(this).data("DateTimePicker")) { // prevent submit after dp init
if (sessionStorage) sessionStorage.setItem('scrollpos', window.scrollY);
this.form.submit();
}
});
var update_cart_form = function () { var update_cart_form = function () {
var is_enabled = $(".product-row input[type=checkbox]:checked, .variations input[type=checkbox]:checked, .product-row input[type=radio]:checked, .variations input[type=radio]:checked").length; var is_enabled = $(".product-row input[type=checkbox]:checked, .variations input[type=checkbox]:checked, .product-row input[type=radio]:checked, .variations input[type=radio]:checked").length;
if (!is_enabled) { if (!is_enabled) {
@@ -578,7 +549,7 @@ $(function () {
} }
dependent.closest('.form-group').toggleClass('required', enabled); dependent.closest('.form-group').toggleClass('required', enabled);
if (enabled) { if (enabled) {
dependentLabel.append('<i class="sr-only label-required">, ' + gettext('required') + '</i>'); dependentLabel.append('<i class="label-required">' + gettext('required') + '</i>');
} }
else { else {
dependentLabel.find(".label-required").remove(); dependentLabel.find(".label-required").remove();

View File

@@ -208,7 +208,7 @@ Vue.component('availbox', {
template: ('<div class="pretix-widget-availability-box">' template: ('<div class="pretix-widget-availability-box">'
+ '<div class="pretix-widget-availability-unavailable"' + '<div class="pretix-widget-availability-unavailable"'
+ ' v-if="item.current_unavailability_reason === \'require_voucher\'">' + ' v-if="item.current_unavailability_reason === \'require_voucher\'">'
+ '<small><a @click.prevent.stop="focus_voucher_field" role="button">{{unavailability_reason_message}}</a></small>' + '<small><a @click.prevent.stop="focus_voucher_field" role="button" tabindex="0">{{unavailability_reason_message}}</a></small>'
+ '</div>' + '</div>'
+ '<div class="pretix-widget-availability-unavailable"' + '<div class="pretix-widget-availability-unavailable"'
+ ' v-else-if="unavailability_reason_message">' + ' v-else-if="unavailability_reason_message">'
@@ -239,12 +239,12 @@ Vue.component('availbox', {
+ '>' + '>'
+ '</label>' + '</label>'
+ '<div :class="count_group_classes" v-else role="group" v-bind:aria-label="item.name">' + '<div :class="count_group_classes" v-else role="group" v-bind:aria-label="item.name">'
+ '<button v-if="!$root.use_native_spinners" type="button" @click.prevent.stop="on_step" data-step="-1" v-bind:data-controls="\'input_\' + input_name" class="pretix-widget-btn-default pretix-widget-item-count-dec" aria-label="' + strings.quantity_dec + '"><span>-</span></button>' + '<button v-if="!$root.use_native_spinners" type="button" @click.prevent.stop="on_step" data-step="-1" v-bind:data-controls="\'input_\' + input_name" class="pretix-widget-btn-default pretix-widget-item-count-dec" v-bind:aria-label="dec_label"><span>-</span></button>'
+ '<input type="number" inputmode="numeric" pattern="\d*" class="pretix-widget-item-count-multiple" placeholder="0" min="0"' + '<input type="number" inputmode="numeric" pattern="\d*" class="pretix-widget-item-count-multiple" placeholder="0" min="0"'
+ ' v-model="amount_selected" :max="order_max" :name="input_name" :id="\'input_\' + input_name"' + ' v-model="amount_selected" :max="order_max" :name="input_name" :id="\'input_\' + input_name"'
+ ' aria-label="' + strings.quantity + '" ref="quantity"' + ' v-bind:aria-labelledby="aria_labelledby" ref="quantity"'
+ ' >' + ' >'
+ '<button v-if="!$root.use_native_spinners" type="button" @click.prevent.stop="on_step" data-step="1" v-bind:data-controls="\'input_\' + input_name" class="pretix-widget-btn-default pretix-widget-item-count-inc" aria-label="' + strings.quantity_inc + '"><span>+</span></button>' + '<button v-if="!$root.use_native_spinners" type="button" @click.prevent.stop="on_step" data-step="1" v-bind:data-controls="\'input_\' + input_name" class="pretix-widget-btn-default pretix-widget-item-count-inc" v-bind:aria-label="inc_label"><span>+</span></button>'
+ '</div>' + '</div>'
+ '</div>' + '</div>'
+ '</div>'), + '</div>'),
@@ -262,6 +262,15 @@ Vue.component('availbox', {
this.$root.$emit('amounts_changed') this.$root.$emit('amounts_changed')
}, },
computed: { computed: {
aria_labelledby: function () {
return this.$root.html_id + '-item-label-' + this.item.id;
},
dec_label: function () {
return '- ' + (this.item.has_variations ? this.variation.value : this.item.name) + ': ' + strings.quantity_dec;
},
inc_label: function () {
return '+ ' + (this.item.has_variations ? this.variation.value : this.item.name) + ': ' + strings.quantity_inc;
},
count_group_classes: function () { count_group_classes: function () {
return { return {
'pretix-widget-item-count-group': !this.$root.use_native_spinners 'pretix-widget-item-count-group': !this.$root.use_native_spinners
@@ -350,12 +359,12 @@ Vue.component('pricebox', {
+ '<del class="pretix-widget-pricebox-original-price" v-bind:aria-label="original_price_aria_label" v-html="original_line"></del> ' + '<del class="pretix-widget-pricebox-original-price" v-bind:aria-label="original_price_aria_label" v-html="original_line"></del> '
+ '<ins class="pretix-widget-pricebox-new-price" v-bind:aria-label="new_price_aria_label" v-html="priceline"></ins></span>' + '<ins class="pretix-widget-pricebox-new-price" v-bind:aria-label="new_price_aria_label" v-html="priceline"></ins></span>'
+ '<div v-if="free_price">' + '<div v-if="free_price">'
+ '<span class="pretix-widget-pricebox-currency">{{ $root.currency }}</span> ' + '<span class="pretix-widget-pricebox-currency" :id="price_box_id">{{ $root.currency }}</span> '
+ '<input type="number" class="pretix-widget-pricebox-price-input" placeholder="0" ' + '<input type="number" class="pretix-widget-pricebox-price-input" placeholder="0" '
+ ' :min="display_price_nonlocalized" :value="suggested_price_nonlocalized" :name="field_name"' + ' :min="display_price_nonlocalized" :value="suggested_price_nonlocalized" :name="field_name"'
+ ' step="any" v-bind:aria-label="free_price_label">' + ' step="any" v-bind:aria-labelledby="aria_labelledby" v-bind:aria-describedby="price_desc_id">'
+ '</div>' + '</div>'
+ '<small class="pretix-widget-pricebox-tax" v-if="price.rate != \'0.00\' && price.gross != \'0.00\'">' + '<small class="pretix-widget-pricebox-tax" :id="price_desc_id" v-if="price.rate != \'0.00\' && price.gross != \'0.00\'">'
+ '{{ taxline }}' + '{{ taxline }}'
+ '</small>' + '</small>'
+ '</div>'), + '</div>'),
@@ -366,6 +375,7 @@ Vue.component('pricebox', {
suggested_price: Object, suggested_price: Object,
original_price: String, original_price: String,
mandatory_priced_addons: Boolean, mandatory_priced_addons: Boolean,
item_id: Number,
}, },
methods: { methods: {
stripHTML: function (s) { stripHTML: function (s) {
@@ -375,6 +385,18 @@ Vue.component('pricebox', {
}, },
}, },
computed: { computed: {
aria_labelledby: function () {
return [
this.$root.html_id + '-item-label-' + this.item_id,
this.price_box_id
].join(" ");
},
price_box_id: function () {
return this.$root.html_id + '-item-pricebox-' + this.item_id;
},
price_desc_id: function () {
return this.$root.html_id + '-item-pricedesc-' + this.item_id;
},
display_price: function () { display_price: function () {
if (this.$root.display_net_prices) { if (this.$root.display_net_prices) {
return floatformat(parseFloat(this.price.net), 2); return floatformat(parseFloat(this.price.net), 2);
@@ -419,9 +441,6 @@ Vue.component('pricebox', {
return '<span class="pretix-widget-pricebox-currency">' + this.$root.currency + "</span> " + this.display_price; return '<span class="pretix-widget-pricebox-currency">' + this.$root.currency + "</span> " + this.display_price;
} }
}, },
free_price_label () {
return [strings.price, this.$root.currency].join(", ")
},
taxline: function () { taxline: function () {
if (this.$root.display_net_prices) { if (this.$root.display_net_prices) {
if (this.price.includes_mixed_tax_rate) { if (this.price.includes_mixed_tax_rate) {
@@ -465,7 +484,7 @@ Vue.component('variation', {
+ '<div :id="variation_price_id" class="pretix-widget-item-price-col">' + '<div :id="variation_price_id" class="pretix-widget-item-price-col">'
+ '<pricebox :price="variation.price" :free_price="item.free_price" :original_price="orig_price" ' + '<pricebox :price="variation.price" :free_price="item.free_price" :original_price="orig_price" '
+ ' :mandatory_priced_addons="item.mandatory_priced_addons" :suggested_price="variation.suggested_price"' + ' :mandatory_priced_addons="item.mandatory_priced_addons" :suggested_price="variation.suggested_price"'
+ ' :field_name="\'price_\' + item.id + \'_\' + variation.id" v-if="$root.showPrices">' + ' :field_name="\'price_\' + item.id + \'_\' + variation.id" v-if="$root.showPrices" :item_id="item.id">'
+ '</pricebox>' + '</pricebox>'
+ '<span v-if="!$root.showPrices">&nbsp;</span>' + '<span v-if="!$root.showPrices">&nbsp;</span>'
+ '</div>' + '</div>'
@@ -515,7 +534,7 @@ Vue.component('item', {
+ '<a :href="item.picture_fullsize" v-if="item.picture" class="pretix-widget-item-picture-link" @click.prevent.stop="lightbox"><img :src="item.picture" class="pretix-widget-item-picture" :alt="picture_alt_text"></a>' + '<a :href="item.picture_fullsize" v-if="item.picture" class="pretix-widget-item-picture-link" @click.prevent.stop="lightbox"><img :src="item.picture" class="pretix-widget-item-picture" :alt="picture_alt_text"></a>'
+ '<div class="pretix-widget-item-title-and-description">' + '<div class="pretix-widget-item-title-and-description">'
+ '<a v-if="item.has_variations && show_toggle" :id="item_label_id" class="pretix-widget-item-title" :href="\'#\' + item.id + \'-variants\'"' + '<a v-if="item.has_variations && show_toggle" :id="item_label_id" class="pretix-widget-item-title" :href="\'#\' + item.id + \'-variants\'"'
+ ' @click.prevent.stop="expand" tabindex="-1"' + ' @click.prevent.stop="expand"'
+ '>' + '>'
+ '{{ item.name }}' + '{{ item.name }}'
+ '</a>' + '</a>'
@@ -848,10 +867,10 @@ var shared_iframe_fragment = (
); );
var shared_alert_fragment = ( var shared_alert_fragment = (
'<div :class="alertClasses" role="dialog" aria-modal="true" aria-live="polite">' '<div :class="alertClasses" role="alertdialog" v-bind:aria-labelledby="$root.parent.html_id + \'-error-message\'">'
+ '<transition name="bounce" @after-enter="focusButton">' + '<transition name="bounce" @after-enter="focusButton">'
+ '<div class="pretix-widget-alert-box" v-if="$root.error_message">' + '<div class="pretix-widget-alert-box" v-if="$root.error_message">'
+ '<p>{{ $root.error_message }}</p>' + '<p :id="$root.parent.html_id + \'-error-message\'">{{ $root.error_message }}</p>'
+ '<p><button v-if="$root.error_url_after" @click.prevent.stop="errorContinue">' + strings.continue + '</button>' + '<p><button v-if="$root.error_url_after" @click.prevent.stop="errorContinue">' + strings.continue + '</button>'
+ '<button v-else @click.prevent.stop="errorClose">' + strings.close + '</button></p>' + '<button v-else @click.prevent.stop="errorClose">' + strings.close + '</button></p>'
+ '</div>' + '</div>'
@@ -996,7 +1015,7 @@ Vue.component('pretix-widget-event-form', {
// Form start // Form start
+ '<div class="pretix-widget-event-description" v-if="display_event_info && $root.frontpage_text" v-html="$root.frontpage_text"></div>' + '<div class="pretix-widget-event-description" v-if="display_event_info && $root.frontpage_text" v-html="$root.frontpage_text"></div>'
+ '<form method="post" :action="$root.formAction" ref="form" :target="$root.formTarget">' + '<form method="post" :action="$root.formAction" ref="form" :target="$root.formTarget" @submit="$parent.buy">'
+ '<input type="hidden" name="_voucher_code" :value="$root.voucher_code" v-if="$root.voucher_code">' + '<input type="hidden" name="_voucher_code" :value="$root.voucher_code" v-if="$root.voucher_code">'
+ '<input type="hidden" name="subevent" :value="$root.subevent" />' + '<input type="hidden" name="subevent" :value="$root.subevent" />'
+ '<input type="hidden" name="widget_data" :value="$root.widget_data_json" />' + '<input type="hidden" name="widget_data" :value="$root.widget_data_json" />'
@@ -1040,7 +1059,7 @@ Vue.component('pretix-widget-event-form', {
// Buy button // Buy button
+ '<div class="pretix-widget-action" v-if="$root.display_add_to_cart">' + '<div class="pretix-widget-action" v-if="$root.display_add_to_cart">'
+ '<button @click="$parent.buy" type="submit" :disabled="buy_disabled">{{ this.buy_label }}</button>' + '<button type="submit">{{ this.buy_label }}</button>'
+ '</div>' + '</div>'
+ '</form>' + '</form>'
@@ -1049,10 +1068,10 @@ Vue.component('pretix-widget-event-form', {
+ '<form method="get" :action="$root.voucherFormTarget" target="_blank" ' + '<form method="get" :action="$root.voucherFormTarget" target="_blank" '
+ ' v-if="$root.vouchers_exist && !$root.disable_vouchers && !$root.voucher_code">' + ' v-if="$root.vouchers_exist && !$root.disable_vouchers && !$root.voucher_code">'
+ '<div class="pretix-widget-voucher">' + '<div class="pretix-widget-voucher">'
+ '<h3 class="pretix-widget-voucher-headline">'+ strings['redeem_voucher'] +'</h3>' + '<h3 class="pretix-widget-voucher-headline" :id="aria_labelledby">'+ strings['redeem_voucher'] +'</h3>'
+ '<div v-if="$root.voucher_explanation_text" class="pretix-widget-voucher-text" v-html="$root.voucher_explanation_text"></div>' + '<div v-if="$root.voucher_explanation_text" class="pretix-widget-voucher-text" v-html="$root.voucher_explanation_text"></div>'
+ '<div class="pretix-widget-voucher-input-wrap">' + '<div class="pretix-widget-voucher-input-wrap">'
+ '<input class="pretix-widget-voucher-input" ref="voucherinput" type="text" v-model="$parent.voucher" name="voucher" placeholder="'+strings.voucher_code+'">' + '<input class="pretix-widget-voucher-input" ref="voucherinput" type="text" v-model="$parent.voucher" name="voucher" placeholder="'+strings.voucher_code+'" v-bind:aria-labelledby="aria_labelledby">'
+ '</div>' + '</div>'
+ '<input type="hidden" v-for="p in hiddenParams" :name="p[0]" :value="p[1]" />' + '<input type="hidden" v-for="p in hiddenParams" :name="p[0]" :value="p[1]" />'
+ '<div class="pretix-widget-voucher-button-wrap">' + '<div class="pretix-widget-voucher-button-wrap">'
@@ -1064,21 +1083,16 @@ Vue.component('pretix-widget-event-form', {
+ '</div>' + '</div>'
), ),
data: function () {
return {
buy_disabled: true
}
},
mounted: function() { mounted: function() {
this.$root.$on('amounts_changed', this.calculate_buy_disabled)
this.$root.$on('focus_voucher_field', this.focus_voucher_field) this.$root.$on('focus_voucher_field', this.focus_voucher_field)
this.calculate_buy_disabled()
}, },
beforeDestroy: function() { beforeDestroy: function() {
this.$root.$off('amounts_changed', this.calculate_buy_disabled)
this.$root.$off('focus_voucher_field', this.focus_voucher_field) this.$root.$off('focus_voucher_field', this.focus_voucher_field)
}, },
computed: { computed: {
aria_labelledby: function() {
return this.$root.html_id + '-voucher-headline';
},
display_event_info: function () { display_event_info: function () {
return this.$root.display_event_info || (this.$root.display_event_info === null && (this.$root.events || this.$root.weeks || this.$root.days)); return this.$root.display_event_info || (this.$root.display_event_info === null && (this.$root.events || this.$root.weeks || this.$root.days));
}, },
@@ -1151,28 +1165,6 @@ Vue.component('pretix-widget-event-form', {
$el.focus(); $el.focus();
}); });
}, },
calculate_buy_disabled: function() {
var i, j, k;
for (i = 0; i < this.$root.categories.length; i++) {
var cat = this.$root.categories[i];
for (j = 0; j < cat.items.length; j++) {
var item = cat.items[j];
if (item.has_variations) {
for (k = 0; k < item.variations.length; k++) {
var v = item.variations[k];
if (v.amount_selected) {
this.buy_disabled = false;
return;
}
}
} else if (item.amount_selected) {
this.buy_disabled = false;
return;
}
}
}
this.buy_disabled = true;
}
} }
}); });

View File

@@ -3,7 +3,9 @@
width: 14.29%; width: 14.29%;
} }
h3 { h3 {
font-size: 16px; font-size: 0.875rem;
color: $text-muted;
border-bottom: 2px solid $table-border-color;
} }
p { p {
margin-bottom: 3px; margin-bottom: 3px;
@@ -11,6 +13,7 @@
.events { .events {
list-style: none; list-style: none;
padding: 0; padding: 0;
margin-bottom: 0;
} }
a.event { a.event {
--status-bg-color: var(--pretix-brand-primary-tint-90); --status-bg-color: var(--pretix-brand-primary-tint-90);
@@ -97,9 +100,13 @@
margin-bottom: 15px; margin-bottom: 15px;
} }
h3 { h3 {
margin-top: 0;
padding-top: 10px;
padding-bottom: 8px;
margin-bottom: 8px; margin-bottom: 8px;
font-weight: bold; font-weight: bold;
cursor: pointer; cursor: pointer;
background-color: #fff;
} }
h3 .fa::before { h3 .fa::before {
content: $fa-var-caret-right; content: $fa-var-caret-right;
@@ -112,6 +119,10 @@
} }
} }
.table-calendar .day:nth-child(even) {
background-color: $table-bg-accent;
}
.event-list-filter-form { .event-list-filter-form {
.event-list-filter-form-row { .event-list-filter-form-row {
display: flex; display: flex;
@@ -244,7 +255,7 @@
} }
.day-calendar a.event { .day-calendar a.event {
margin: 1px; margin: 0;
} }
.day-calendar a.event .event-time { .day-calendar a.event .event-time {
display: inline; display: inline;
@@ -373,9 +384,20 @@ if concurrency is higher than 9, JavaScript (currently in pretixpresale/js/ui/ma
grid-template-rows: repeat(var(--concurrency, 1), auto); grid-template-rows: repeat(var(--concurrency, 1), auto);
} }
.day-timeline {
--total-concurrency: var(--concurrency);
}
.day-timeline > li { .day-timeline > li {
grid-column: calc(1 + var(--offset-hour, 0)*60/var(--raster-size, 5) + var(--offset-minute, 0)/var(--raster-size, 5)) / span calc(var(--duration-hour, 0)*60/var(--raster-size, 5) + var(--duration-minute, 0)/var(--raster-size, 5)); grid-column: calc(1 + var(--offset-hour, 0)*60/var(--raster-size, 5) + var(--offset-minute, 0)/var(--raster-size, 5)) / span calc(var(--duration-hour, 0)*60/var(--raster-size, 5) + var(--duration-minute, 0)/var(--raster-size, 5));
grid-row: var(--concurrency, 1) / span 1; grid-row: var(--concurrency, 1) / span 1;
padding: 3px 8px 0;
/* add 11px of padding-bottom to the events with --concurrency being the same as --total-concurrency, otherwise 0px */
padding-bottom: #{'round(down, calc(11px * var(--concurrency)/var(--total-concurrency)), 11px)'};
}
.day-timeline > li[data-concurrency="1"] {
padding-top: 8px;
} }
.day-timeline > li:focus-within { .day-timeline > li:focus-within {
z-index: 2; /* move to front so focus-outline overlays other elements */ z-index: 2; /* move to front so focus-outline overlays other elements */
@@ -385,12 +407,14 @@ if concurrency is higher than 9, JavaScript (currently in pretixpresale/js/ui/ma
grid-row: 1 / span var(--concurrency, 1) !important; grid-row: 1 / span var(--concurrency, 1) !important;
} }
.ticks li { .ticks li {
padding: 8px 3px 5px; padding: 11px 8px 8px;
line-height: 1; line-height: 1;
border-top-left-radius: $border-radius-base; border-top-left-radius: $border-radius-base;
border-top-right-radius: $border-radius-base; border-top-right-radius: $border-radius-base;
border-bottom: 2px solid $table-border-color;
font-weight: bold;
} }
.ticks li:nth-of-type(odd), .tick { .tick {
background-color: $table-bg-accent; background-color: $table-bg-accent;
} }
.day-timeline:nth-last-of-type(1) li { .day-timeline:nth-last-of-type(1) li {
@@ -422,7 +446,16 @@ if concurrency is higher than 9, JavaScript (currently in pretixpresale/js/ui/ma
.weekday { .weekday {
flex: 1; flex: 1;
margin: 0 5px; padding: 0 8px 8px;
}
.weekday:nth-child(even) {
background-color: $table-bg-accent;
}
.weekday h3 {
margin-left: -8px;
margin-right: -8px;
padding-left: 8px;
padding-right: 8px;
} }
.weekday:first-child { .weekday:first-child {
margin-left: 0; margin-left: 0;

View File

@@ -240,14 +240,26 @@ div.front-page {
} }
} }
.calendar-nav, .calendar-nav li { .calendar-nav, .calendar-nav > li {
list-style: none; list-style: none;
margin: 0; margin: 0;
padding: 0 padding: 0
} }
.calendar-nav li { .calendar-nav > li {
padding: 10px 0; padding: 0 0 10px;
} }
.calendar-nav {
display: flex;
align-items: end;
}
.calendar-nav > li {
width: 60%;
}
.calendar-nav > li:first-child,
.calendar-nav > li:last-child {
width: 20%;
}
.subevent-toggle { .subevent-toggle {
display: none; display: none;

View File

@@ -23,6 +23,10 @@ a.btn, button.btn {
} }
} }
.input-group:has(.input-group-btn:last-child) *:not(last-child) {
border-right: 0;
}
.panel-title .radio { .panel-title .radio {
margin-left: 20px; margin-left: 20px;
} }
@@ -141,21 +145,14 @@ output {
} }
} }
.required-legend span { .label-required {
color: $brand-primary; color: $text-muted;
font-weight: bold;
}
.label-required,
.label-alert {
display: inline; display: inline;
font-weight: normal; font-weight: normal;
font-style: normal; font-style: normal;
font-size: 85%; font-size: 85%;
color: $text-muted;
} }
.has-error .label-required, .has-error .label-required {
.has-error .label-alert {
color: inherit; color: inherit;
} }
.label-required { .label-required {
@@ -166,18 +163,13 @@ output {
content: ")"; content: ")";
} }
} }
.label-alert:not(:empty):before {
content: " ";
}
@media (min-width: $screen-md-min) { @media (min-width: $screen-md-min) {
.form-group:not(:has(.checkbox)) { .form-group:not(:has(.checkbox)) {
.label-required, .label-required {
.label-alert:not(:empty) {
display: block; display: block;
} }
.label-required:before, .label-required:before,
.label-required:after, .label-required:after {
.label-alert:before {
content: ""; content: "";
} }
} }

View File

@@ -1,10 +1,18 @@
h1, .h1, h1, .h1,
h2, .h2, h2, .h2,
h3, .h3 { h3, .h3 {
margin-top: 2.25 * $line-height-computed; margin-top: 0.75 * $line-height-computed;
margin-bottom: 0.75 * $line-height-computed; margin-bottom: 0.75 * $line-height-computed;
} }
.front-page, .item-category {
h1, .h1,
h2, .h2,
h3, .h3 {
margin-top: 2.25 * $line-height-computed;
}
}
.page-header { .page-header {
position: relative; position: relative;
padding-bottom: 9px; padding-bottom: 9px;
@@ -35,8 +43,9 @@ h3, .h3 {
.page-header-links > div.header-part { .page-header-links > div.header-part {
padding-top: 15px; padding-top: 15px;
a:link, a:visited { a {
color: var(--pretix-link-contrast-color); color: var(--pretix-link-contrast-color);
outline-color: inherit;
} }
a:active, a:hover, a:focus { a:active, a:hover, a:focus {
color: var(--pretix-link-hover-contrast-color); color: var(--pretix-link-hover-contrast-color);

View File

@@ -14,7 +14,7 @@ $font-size-h4: ($font-size-base * 1.25) !default;
$font-size-h5: $font-size-base !default; $font-size-h5: $font-size-base !default;
$font-size-h6: ($font-size-base * .85) !default; $font-size-h6: ($font-size-base * .85) !default;
$line-height-base: 1.428571429 !default; $line-height-base: 1.43 !default;
$line-height-computed: ($font-size-base * $line-height-base) !default; $line-height-computed: ($font-size-base * $line-height-base) !default;
$line-height-large: 1.3333333 !default; // extra decimals for Win 8.1 Chrome $line-height-large: 1.3333333 !default; // extra decimals for Win 8.1 Chrome
$line-height-small: 1.5 !default; $line-height-small: 1.5 !default;
@@ -69,6 +69,30 @@ html {
} }
} }
.on-focus-visible:focus, .on-focus-visible:focus-within {
height: auto;
width: auto;
overflow: auto;
clip: auto;
}
#skip-to-main {
/* padding is needed to make focus-outline visible */
padding: 8px;
background-color: inherit;
p {
margin: 0;
}
a {
padding: .125em .5em;
display: inline-block;
color: var(--pretix-link-contrast-color);
outline-color: inherit;
}
a:active, a:hover, a:focus {
color: var(--pretix-link-hover-contrast-color);
}
}
/* fixe for bootstrap using px-values for fontsize */ /* fixe for bootstrap using px-values for fontsize */
.panel-title { .panel-title {
font-size: ($font-size-base * 1.125); font-size: ($font-size-base * 1.125);
@@ -521,12 +545,17 @@ details summary {
transform: rotate(-90deg); transform: rotate(-90deg);
} }
details.sneak-peek { .sneak-peek-container {
position: relative; position: relative;
height: 11em; }
.sneak-peek-content {
height: 8em;
overflow: hidden; overflow: hidden;
transition: height .5s; transition: height .5s;
} }
.nojs .sneak-peek-content {
height: auto;
}
.sneak-peek-trigger { .sneak-peek-trigger {
display: grid; display: grid;
justify-content: center; justify-content: center;
@@ -540,6 +569,14 @@ details.sneak-peek {
bottom: 0; bottom: 0;
left: 0; left: 0;
z-index: 10; z-index: 10;
opacity: 1;
transition: opacity .5s;
}
.nojs .sneak-peek-trigger {
display: none;
}
.sneak-peek-trigger:has(button[aria-expanded="true"]) {
opacity: 0;
} }
form.download-btn-form { form.download-btn-form {

View File

@@ -165,7 +165,7 @@
margin: 10px 0; margin: 10px 0;
background-color: white; background-color: white;
border: 2px solid $brand-info; border: 2px solid $brand-info;
color: $brand-info; color: $state-info-text;
border-radius: $alert-border-radius; border-radius: $alert-border-radius;
} }
@@ -175,7 +175,7 @@
margin: 10px 0; margin: 10px 0;
background-color: white; background-color: white;
border: 2px solid $brand-danger; border: 2px solid $brand-danger;
color: $brand-danger; color: $state-danger-text;
border-radius: $alert-border-radius; border-radius: $alert-border-radius;
} }

View File

@@ -734,6 +734,9 @@ def test_event_update(token_client, organizer, event, item, meta_prop):
format='json' format='json'
) )
assert resp.status_code == 200 assert resp.status_code == 200
assert resp.data["meta_data"] == {
meta_prop.name: "Workshop"
}
with scopes_disabled(): with scopes_disabled():
assert organizer.events.get(slug=resp.data['slug']).meta_values.filter( assert organizer.events.get(slug=resp.data['slug']).meta_values.filter(
property__name=meta_prop.name, value="Workshop" property__name=meta_prop.name, value="Workshop"

View File

@@ -195,4 +195,27 @@ def test_NO_id_valid():
assert validate_vat_id('NO974760673 MVA', 'NO') == 'NO974760673MVA' assert validate_vat_id('NO974760673 MVA', 'NO') == 'NO974760673MVA'
@responses.activate
def test_NO_id_valid_without_prefix():
responses.add(
responses.GET,
'https://data.brreg.no/enhetsregisteret/api/enheter/974760673',
body='{"organisasjonsnummer":"974760673","navn":"REGISTERENHETEN I BRØNNØYSUND","organisasjonsform":{"kode":'
'"ORGL","beskrivelse":"Organisasjonsledd","_links":{"self":{"href":"https://data.brreg.no/enhetsregisteret/api/'
'organisasjonsformer/ORGL"}}},"hjemmeside":"www.brreg.no","postadresse":{"land":"Norge","landkode":"NO","postn'
'ummer":"8910","poststed":"BRØNNØYSUND","adresse":["Postboks 900"],"kommune":"BRØNNØY","kommunenummer":"1813"}'
',"registreringsdatoEnhetsregisteret":"1995-08-09","registrertIMvaregisteret":false,"naeringskode1":{"beskrivels'
'e":"Generell offentlig administrasjon","kode":"84.110"},"antallAnsatte":455,"overordnetEnhet":"912660680","for'
'retningsadresse":{"land":"Norge","landkode":"NO","postnummer":"8900","poststed":"BRØNNØYSUND","adresse":["Havn'
'egata 48"],"kommune":"BRØNNØY","kommunenummer":"1813"},"institusjonellSektorkode":{"kode":"6100","beskrivelse'
'":"Statsforvaltningen"},"registrertIForetaksregisteret":false,"registrertIStiftelsesregisteret":false,"registr'
'ertIFrivillighetsregisteret":false,"konkurs":false,"underAvvikling":false,"underTvangsavviklingEllerTvangsopp'
'losning":false,"maalform":"Bokmål","_links":{"self":{"href":"https://data.brreg.no/enhetsregisteret/api/enheter'
'/974760673"},"overordnetEnhet":{"href":"https://data.brreg.no/enhetsregisteret/api/enheter/912660680"}}}',
status=200
)
assert validate_vat_id('974 760 673 MVA', 'NO') == 'NO974760673MVA'
# No tests for CH currently since it's harder to mock Zeep # No tests for CH currently since it's harder to mock Zeep

View File

@@ -239,7 +239,7 @@ def test_org_login_not_verified(env, client, mocker):
'password': 'foo', 'password': 'foo',
}) })
assert r.status_code == 200 assert r.status_code == 200
assert b'alert-danger' in r.content assert b'form-group has-error' in r.content
customer_signed_in.send.assert_not_called() customer_signed_in.send.assert_not_called()
@@ -258,7 +258,7 @@ def test_org_login_not_active(env, client, mocker):
'password': 'foo', 'password': 'foo',
}) })
assert r.status_code == 200 assert r.status_code == 200
assert b'alert-danger' in r.content assert b'form-group has-error' in r.content
customer_signed_in.send.assert_not_called() customer_signed_in.send.assert_not_called()