Compare commits

..

14 Commits

Author SHA1 Message Date
Raphael Michel
09440a96f8 Bump version to 2025.1.0 2025-01-31 16:19:48 +01:00
Raphael Michel
88d9d05879 Bump version to 2025.1.0 2025-01-31 16:17:58 +01:00
Raphael Michel
cf589bf30c Translations: Update German (informal) (de_Informal)
Currently translated at 100.0% (5846 of 5846 strings)

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

powered by weblate
2025-01-31 15:17:12 +01:00
Raphael Michel
22e530bc62 Translations: Update German
Currently translated at 100.0% (5846 of 5846 strings)

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

powered by weblate
2025-01-31 15:17:12 +01:00
조정화
4553f4a0cd Translations: Update Korean
Currently translated at 1.2% (75 of 5846 strings)

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

powered by weblate
2025-01-31 15:17:12 +01:00
Chislon
666a6f9b93 Translations: Update Chinese (Traditional Han script)
Currently translated at 100.0% (235 of 235 strings)

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

powered by weblate
2025-01-31 15:17:12 +01:00
Chislon
1491420346 Translations: Update Chinese (Traditional Han script)
Currently translated at 97.0% (5672 of 5846 strings)

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

powered by weblate
2025-01-31 15:17:12 +01:00
Lorhan Sohaky
c8156a56ef Translations: Update Portuguese (Brazil)
Currently translated at 18.2% (1069 of 5846 strings)

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

powered by weblate
2025-01-31 15:17:12 +01:00
Cornelius Kibelka
9a4b0681b4 Translations: Update Portuguese (Brazil)
Currently translated at 18.2% (1069 of 5846 strings)

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

powered by weblate
2025-01-31 15:17:12 +01:00
Linnea Thelander
45c30cd59d Translations: Update Swedish
Currently translated at 96.5% (5646 of 5846 strings)

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

powered by weblate
2025-01-31 15:17:12 +01:00
CVZ-es
97ce34625a Translations: Update Spanish
Currently translated at 100.0% (5846 of 5846 strings)

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

powered by weblate
2025-01-31 15:17:12 +01:00
CVZ-es
680521d8f2 Translations: Update French
Currently translated at 100.0% (5846 of 5846 strings)

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

powered by weblate
2025-01-31 15:17:12 +01:00
Cornelius Kibelka
7ee14a12f8 Translations: Update Portuguese (Brazil)
Currently translated at 17.4% (1021 of 5846 strings)

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

powered by weblate
2025-01-31 15:17:12 +01:00
Martin Gross
a1100412ff OIDC: Allow to add query parameters to Authorization URL (#4791)
Co-authored-by: Mira <weller@rami.io>
2025-01-30 13:39:31 +01:00
13 changed files with 775 additions and 1205 deletions

View File

@@ -19,4 +19,4 @@
# You should have received a copy of the GNU Affero General Public License along with this program. If not, see # You should have received a copy of the GNU Affero General Public License along with this program. If not, see
# <https://www.gnu.org/licenses/>. # <https://www.gnu.org/licenses/>.
# #
__version__ = "2024.12.0.dev0" __version__ = "2025.1.0"

View File

@@ -24,7 +24,7 @@ import hashlib
import logging import logging
import time import time
from datetime import datetime from datetime import datetime
from urllib.parse import urlencode, urljoin from urllib.parse import parse_qsl, urlencode, urljoin
import jwt import jwt
import requests import requests
@@ -139,6 +139,11 @@ def oidc_validate_and_complete_config(config):
) )
) )
if "query_parameters" in config and config["query_parameters"]:
config["query_parameters"] = urlencode(
parse_qsl(config["query_parameters"])
)
config['provider_config'] = provider_config config['provider_config'] = provider_config
return config return config
@@ -154,6 +159,10 @@ def oidc_authorize_url(provider, state, redirect_uri):
'state': state, 'state': state,
'redirect_uri': redirect_uri, 'redirect_uri': redirect_uri,
} }
if "query_parameters" in provider.configuration and provider.configuration["query_parameters"]:
params.update(parse_qsl(provider.configuration["query_parameters"]))
return endpoint + '?' + urlencode(params) return endpoint + '?' + urlencode(params)

View File

@@ -1043,6 +1043,15 @@ class SSOProviderForm(I18nModelForm):
label=pgettext_lazy('sso_oidc', 'Phone field'), label=pgettext_lazy('sso_oidc', 'Phone field'),
required=False, required=False,
) )
config_oidc_query_parameters = forms.CharField(
label=pgettext_lazy('sso_oidc', 'Query parameters'),
help_text=pgettext_lazy('sso_oidc', 'Optional query parameters, that will be added to calls to '
'the authorization endpoint. Enter as: {example}'.format(
example='<code>param1=value1&amp;param2=value2</code>'
),
),
required=False,
)
class Meta: class Meta:
model = CustomerSSOProvider model = CustomerSSOProvider

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-01-29 13:18+0000\n" "POT-Creation-Date: 2025-01-29 13:18+0000\n"
"PO-Revision-Date: 2025-01-21 17:11+0000\n" "PO-Revision-Date: 2025-01-31 14:13+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"
@@ -3429,10 +3429,8 @@ msgid "The relevant plugin is currently not active."
msgstr "Die notwendige Erweiterung ist nicht aktiv." msgstr "Die notwendige Erweiterung ist nicht aktiv."
#: pretix/base/logentrytypes.py:49 #: pretix/base/logentrytypes.py:49
#, fuzzy
#| msgid "Delete"
msgid "(deleted)" msgid "(deleted)"
msgstr "Löschen" msgstr "(gelöscht)"
#: pretix/base/logentrytypes.py:78 #: pretix/base/logentrytypes.py:78
#, python-brace-format #, python-brace-format
@@ -15012,6 +15010,9 @@ msgid ""
"Note that payment fees have a special semantic and might automatically be " "Note that payment fees have a special semantic and might automatically be "
"changed if the payment method of the order is changed." "changed if the payment method of the order is changed."
msgstr "" msgstr ""
"Bitte beachten Sie, dass Zahlungsgebühren eine spezielle Bedeutung haben und "
"automatisch geändert werden können, wenn die Zahlungsmethode der Bestellung "
"sich ändert."
#: pretix/control/forms/orders.py:626 #: pretix/control/forms/orders.py:626
#: pretix/control/templates/pretixcontrol/order/change.html:214 #: pretix/control/templates/pretixcontrol/order/change.html:214
@@ -15855,16 +15856,13 @@ msgstr ""
"\"{type}\")." "\"{type}\")."
#: pretix/control/logdisplay.py:309 #: pretix/control/logdisplay.py:309
#, fuzzy, python-brace-format #, python-brace-format
#| msgid ""
#| "Scan scan of revoked code \"{barcode}…\" at {datetime} for list \"{list}"
#| "\", type \"{type}\", was uploaded."
msgid "" msgid ""
"Scan of revoked code \"{barcode}…\" at {datetime} for list \"{list}\", type " "Scan of revoked code \"{barcode}…\" at {datetime} for list \"{list}\", type "
"\"{type}\", was uploaded." "\"{type}\", was uploaded."
msgstr "" msgstr ""
"Unbekannter Scan von Code \"{barcode}…\" um {datetime} für die Liste \"{list}" "Scan von gesperrtem Code \"{barcode}…\" um {datetime} für die Liste "
"\" (Typ \"{type}\")." "\"{list}\" (Typ \"{type}\") wurde hochgeladen."
#: pretix/control/logdisplay.py:310 #: pretix/control/logdisplay.py:310
#, python-brace-format #, python-brace-format
@@ -16840,10 +16838,9 @@ msgid "The check-in list has been changed."
msgstr "Die Check-in-Liste wurde verändert." msgstr "Die Check-in-Liste wurde verändert."
#: pretix/control/logdisplay.py:762 #: pretix/control/logdisplay.py:762
#, fuzzy, python-brace-format #, python-brace-format
#| msgid "Check-in list"
msgid "Check-in list {val}" msgid "Check-in list {val}"
msgstr "Check-in-Liste" msgstr "Check-in-Liste {val}"
#: pretix/control/logdisplay.py:769 #: pretix/control/logdisplay.py:769
msgid "The plugin has been enabled." msgid "The plugin has been enabled."

View File

@@ -8,7 +8,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-01-29 13:18+0000\n" "POT-Creation-Date: 2025-01-29 13:18+0000\n"
"PO-Revision-Date: 2025-01-21 17:11+0000\n" "PO-Revision-Date: 2025-01-31 14:13+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/de_Informal/>\n" "pretix/pretix/de_Informal/>\n"
@@ -3429,10 +3429,8 @@ msgid "The relevant plugin is currently not active."
msgstr "Die notwendige Erweiterung ist nicht aktiv." msgstr "Die notwendige Erweiterung ist nicht aktiv."
#: pretix/base/logentrytypes.py:49 #: pretix/base/logentrytypes.py:49
#, fuzzy
#| msgid "Delete"
msgid "(deleted)" msgid "(deleted)"
msgstr "Löschen" msgstr "(gelöscht)"
#: pretix/base/logentrytypes.py:78 #: pretix/base/logentrytypes.py:78
#, python-brace-format #, python-brace-format
@@ -14987,6 +14985,9 @@ msgid ""
"Note that payment fees have a special semantic and might automatically be " "Note that payment fees have a special semantic and might automatically be "
"changed if the payment method of the order is changed." "changed if the payment method of the order is changed."
msgstr "" msgstr ""
"Bitte beachte, dass Zahlungsgebühren eine spezielle Bedeutung haben und "
"automatisch geändert werden können, wenn die Zahlungsmethode der Bestellung "
"sich ändert."
#: pretix/control/forms/orders.py:626 #: pretix/control/forms/orders.py:626
#: pretix/control/templates/pretixcontrol/order/change.html:214 #: pretix/control/templates/pretixcontrol/order/change.html:214
@@ -15830,16 +15831,13 @@ msgstr ""
"\"{type}\")." "\"{type}\")."
#: pretix/control/logdisplay.py:309 #: pretix/control/logdisplay.py:309
#, fuzzy, python-brace-format #, python-brace-format
#| msgid ""
#| "Scan scan of revoked code \"{barcode}…\" at {datetime} for list \"{list}"
#| "\", type \"{type}\", was uploaded."
msgid "" msgid ""
"Scan of revoked code \"{barcode}…\" at {datetime} for list \"{list}\", type " "Scan of revoked code \"{barcode}…\" at {datetime} for list \"{list}\", type "
"\"{type}\", was uploaded." "\"{type}\", was uploaded."
msgstr "" msgstr ""
"Unbekannter Scan von Code \"{barcode}…\" um {datetime} für die Liste \"{list}" "Scan von gesperrtem Code \"{barcode}…\" um {datetime} für die Liste "
"\" (Typ \"{type}\")." "\"{list}\" (Typ \"{type}\") wurde hochgeladen."
#: pretix/control/logdisplay.py:310 #: pretix/control/logdisplay.py:310
#, python-brace-format #, python-brace-format
@@ -16815,10 +16813,9 @@ msgid "The check-in list has been changed."
msgstr "Die Check-in-Liste wurde verändert." msgstr "Die Check-in-Liste wurde verändert."
#: pretix/control/logdisplay.py:762 #: pretix/control/logdisplay.py:762
#, fuzzy, python-brace-format #, python-brace-format
#| msgid "Check-in list"
msgid "Check-in list {val}" msgid "Check-in list {val}"
msgstr "Check-in-Liste" msgstr "Check-in-Liste {val}"
#: pretix/control/logdisplay.py:769 #: pretix/control/logdisplay.py:769
msgid "The plugin has been enabled." msgid "The plugin has been enabled."

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-01-29 13:18+0000\n" "POT-Creation-Date: 2025-01-29 13:18+0000\n"
"PO-Revision-Date: 2025-01-22 16:00+0000\n" "PO-Revision-Date: 2025-01-30 12:39+0000\n"
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n" "Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\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"
@@ -3438,10 +3438,8 @@ msgid "The relevant plugin is currently not active."
msgstr "El plugin correspondiente no está activado." msgstr "El plugin correspondiente no está activado."
#: pretix/base/logentrytypes.py:49 #: pretix/base/logentrytypes.py:49
#, fuzzy
#| msgid "Delete"
msgid "(deleted)" msgid "(deleted)"
msgstr "Borrar" msgstr "borrado"
#: pretix/base/logentrytypes.py:78 #: pretix/base/logentrytypes.py:78
#, python-brace-format #, python-brace-format
@@ -14988,6 +14986,8 @@ msgid ""
"Note that payment fees have a special semantic and might automatically be " "Note that payment fees have a special semantic and might automatically be "
"changed if the payment method of the order is changed." "changed if the payment method of the order is changed."
msgstr "" msgstr ""
"Tenga en cuenta que las tasas de pago tienen una semántica especial y pueden "
"modificarse automáticamente si se cambia el método de pago del pedido."
#: pretix/control/forms/orders.py:626 #: pretix/control/forms/orders.py:626
#: pretix/control/templates/pretixcontrol/order/change.html:214 #: pretix/control/templates/pretixcontrol/order/change.html:214
@@ -15827,16 +15827,13 @@ msgstr ""
"escriba \"{type}\"." "escriba \"{type}\"."
#: pretix/control/logdisplay.py:309 #: pretix/control/logdisplay.py:309
#, fuzzy, python-brace-format #, python-brace-format
#| msgid ""
#| "Scan scan of revoked code \"{barcode}…\" at {datetime} for list \"{list}"
#| "\", type \"{type}\", was uploaded."
msgid "" msgid ""
"Scan of revoked code \"{barcode}…\" at {datetime} for list \"{list}\", type " "Scan of revoked code \"{barcode}…\" at {datetime} for list \"{list}\", type "
"\"{type}\", was uploaded." "\"{type}\", was uploaded."
msgstr "" msgstr ""
"Se cargó el escaneo del código revocado \"{barcode}…\" el {datetime} para la " "escaneo del código revocado \"{barcode}…\" el {datetime} para la lista "
"lista \"{list}\", escriba \"{type}\"." "\"{list}\", escriba \"{type}\", fue cargado."
#: pretix/control/logdisplay.py:310 #: pretix/control/logdisplay.py:310
#, python-brace-format #, python-brace-format
@@ -16828,10 +16825,9 @@ msgid "The check-in list has been changed."
msgstr "Se ha modificado la lista de asistentes." msgstr "Se ha modificado la lista de asistentes."
#: pretix/control/logdisplay.py:762 #: pretix/control/logdisplay.py:762
#, fuzzy, python-brace-format #, python-brace-format
#| msgid "Check-in list"
msgid "Check-in list {val}" msgid "Check-in list {val}"
msgstr "lista de asistentes" msgstr "Lista de asistentes {val}"
#: pretix/control/logdisplay.py:769 #: pretix/control/logdisplay.py:769
msgid "The plugin has been enabled." msgid "The plugin has been enabled."

View File

@@ -4,7 +4,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-01-29 13:18+0000\n" "POT-Creation-Date: 2025-01-29 13:18+0000\n"
"PO-Revision-Date: 2025-01-22 16:00+0000\n" "PO-Revision-Date: 2025-01-30 12:39+0000\n"
"Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n" "Last-Translator: CVZ-es <damien.bremont@casadevelazquez.org>\n"
"Language-Team: French <https://translate.pretix.eu/projects/pretix/pretix/fr/" "Language-Team: French <https://translate.pretix.eu/projects/pretix/pretix/fr/"
">\n" ">\n"
@@ -3445,10 +3445,8 @@ msgid "The relevant plugin is currently not active."
msgstr "Le plugin correspondant n'est pas activé." msgstr "Le plugin correspondant n'est pas activé."
#: pretix/base/logentrytypes.py:49 #: pretix/base/logentrytypes.py:49
#, fuzzy
#| msgid "Delete"
msgid "(deleted)" msgid "(deleted)"
msgstr "Supprimer" msgstr "(supprimé)"
#: pretix/base/logentrytypes.py:78 #: pretix/base/logentrytypes.py:78
#, python-brace-format #, python-brace-format
@@ -15122,6 +15120,9 @@ msgid ""
"Note that payment fees have a special semantic and might automatically be " "Note that payment fees have a special semantic and might automatically be "
"changed if the payment method of the order is changed." "changed if the payment method of the order is changed."
msgstr "" msgstr ""
"Notez que les frais de règlement ont une sémantique particulière et peuvent "
"être automatiquement modifiés si la méthode de règlement de la commande est "
"modifiée."
#: pretix/control/forms/orders.py:626 #: pretix/control/forms/orders.py:626
#: pretix/control/templates/pretixcontrol/order/change.html:214 #: pretix/control/templates/pretixcontrol/order/change.html:214
@@ -15969,16 +15970,13 @@ msgstr ""
"\"{type}\"." "\"{type}\"."
#: pretix/control/logdisplay.py:309 #: pretix/control/logdisplay.py:309
#, fuzzy, python-brace-format #, python-brace-format
#| msgid ""
#| "Scan scan of revoked code \"{barcode}…\" at {datetime} for list \"{list}"
#| "\", type \"{type}\", was uploaded."
msgid "" msgid ""
"Scan of revoked code \"{barcode}…\" at {datetime} for list \"{list}\", type " "Scan of revoked code \"{barcode}…\" at {datetime} for list \"{list}\", type "
"\"{type}\", was uploaded." "\"{type}\", was uploaded."
msgstr "" msgstr ""
"Le scan du code révoqué \"{barcode}…\" à {datetime} pour la liste \"{list}" "scan du code révoqué \"{barcode}…\" à {datetime} pour la liste \"{list}\", "
"\", type \"{type}\", a été téléchargé." "type \"{type}\", a été téléchargé."
#: pretix/control/logdisplay.py:310 #: pretix/control/logdisplay.py:310
#, python-brace-format #, python-brace-format
@@ -16962,10 +16960,9 @@ msgid "The check-in list has been changed."
msgstr "La liste d'enregistrement a été modifiée." msgstr "La liste d'enregistrement a été modifiée."
#: pretix/control/logdisplay.py:762 #: pretix/control/logdisplay.py:762
#, fuzzy, python-brace-format #, python-brace-format
#| msgid "Check-in list"
msgid "Check-in list {val}" msgid "Check-in list {val}"
msgstr "Liste d'enregistrement" msgstr "Liste d'enregistrement {val}"
#: pretix/control/logdisplay.py:769 #: pretix/control/logdisplay.py:769
msgid "The plugin has been enabled." msgid "The plugin has been enabled."

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-01-29 13:18+0000\n" "POT-Creation-Date: 2025-01-29 13:18+0000\n"
"PO-Revision-Date: 2025-01-16 12:06+0000\n" "PO-Revision-Date: 2025-01-31 05:00+0000\n"
"Last-Translator: deborahfoell <deborah.foell@om.org>\n" "Last-Translator: 조정화 <junghwa.jo@om.org>\n"
"Language-Team: Korean <https://translate.pretix.eu/projects/pretix/pretix/ko/" "Language-Team: Korean <https://translate.pretix.eu/projects/pretix/pretix/ko/"
">\n" ">\n"
"Language: ko\n" "Language: ko\n"
@@ -29,68 +29,67 @@ msgstr "독일어"
#: pretix/_base_settings.py:89 #: pretix/_base_settings.py:89
msgid "German (informal)" msgid "German (informal)"
msgstr "" msgstr "독일어"
#: pretix/_base_settings.py:90 #: pretix/_base_settings.py:90
msgid "Arabic" msgid "Arabic"
msgstr "" msgstr "아랍어"
#: pretix/_base_settings.py:91 #: pretix/_base_settings.py:91
msgid "Basque" msgid "Basque"
msgstr "" msgstr "바스크어"
#: pretix/_base_settings.py:92 #: pretix/_base_settings.py:92
msgid "Catalan" msgid "Catalan"
msgstr "" msgstr "카탈루냐어"
#: pretix/_base_settings.py:93 #: pretix/_base_settings.py:93
#, fuzzy
msgid "Chinese (simplified)" msgid "Chinese (simplified)"
msgstr "중국어" msgstr "중국어(간체)"
#: pretix/_base_settings.py:94 #: pretix/_base_settings.py:94
msgid "Chinese (traditional)" msgid "Chinese (traditional)"
msgstr "" msgstr "중국어(번체)"
#: pretix/_base_settings.py:95 #: pretix/_base_settings.py:95
msgid "Czech" msgid "Czech"
msgstr "" msgstr "체코어"
#: pretix/_base_settings.py:96 #: pretix/_base_settings.py:96
msgid "Danish" msgid "Danish"
msgstr "" msgstr "덴마크어"
#: pretix/_base_settings.py:97 #: pretix/_base_settings.py:97
msgid "Dutch" msgid "Dutch"
msgstr "" msgstr "네덜란드어"
#: pretix/_base_settings.py:98 #: pretix/_base_settings.py:98
msgid "Dutch (informal)" msgid "Dutch (informal)"
msgstr "" msgstr "네덜란드어(비공식)"
#: pretix/_base_settings.py:99 #: pretix/_base_settings.py:99
msgid "French" msgid "French"
msgstr "" msgstr "프랑스어"
#: pretix/_base_settings.py:100 #: pretix/_base_settings.py:100
msgid "Finnish" msgid "Finnish"
msgstr "" msgstr "핀란드어"
#: pretix/_base_settings.py:101 #: pretix/_base_settings.py:101
msgid "Galician" msgid "Galician"
msgstr "" msgstr "갈라시아어"
#: pretix/_base_settings.py:102 #: pretix/_base_settings.py:102
msgid "Greek" msgid "Greek"
msgstr "" msgstr "그리스어"
#: pretix/_base_settings.py:103 #: pretix/_base_settings.py:103
msgid "Indonesian" msgid "Indonesian"
msgstr "" msgstr "인도네시아어"
#: pretix/_base_settings.py:104 #: pretix/_base_settings.py:104
msgid "Italian" msgid "Italian"
msgstr "" msgstr "이탈리아어"
#: pretix/_base_settings.py:105 #: pretix/_base_settings.py:105
msgid "Japanese" msgid "Japanese"
@@ -98,69 +97,69 @@ msgstr "일본어"
#: pretix/_base_settings.py:106 #: pretix/_base_settings.py:106
msgid "Latvian" msgid "Latvian"
msgstr "" msgstr "라트비아어"
#: pretix/_base_settings.py:107 #: pretix/_base_settings.py:107
msgid "Norwegian Bokmål" msgid "Norwegian Bokmål"
msgstr "" msgstr "노르웨이어"
#: pretix/_base_settings.py:108 #: pretix/_base_settings.py:108
msgid "Polish" msgid "Polish"
msgstr "" msgstr "폴란드어"
#: pretix/_base_settings.py:109 #: pretix/_base_settings.py:109
msgid "Portuguese (Portugal)" msgid "Portuguese (Portugal)"
msgstr "" msgstr "포르투갈어"
#: pretix/_base_settings.py:110 #: pretix/_base_settings.py:110
msgid "Portuguese (Brazil)" msgid "Portuguese (Brazil)"
msgstr "" msgstr "포르투갈어(브라질)"
#: pretix/_base_settings.py:111 #: pretix/_base_settings.py:111
msgid "Romanian" msgid "Romanian"
msgstr "" msgstr "루마니아어"
#: pretix/_base_settings.py:112 #: pretix/_base_settings.py:112
msgid "Russian" msgid "Russian"
msgstr "" msgstr "러시아어"
#: pretix/_base_settings.py:113 #: pretix/_base_settings.py:113
msgid "Slovak" msgid "Slovak"
msgstr "" msgstr "슬로바키아어"
#: pretix/_base_settings.py:114 #: pretix/_base_settings.py:114
msgid "Swedish" msgid "Swedish"
msgstr "" msgstr "스웨덴어"
#: pretix/_base_settings.py:115 #: pretix/_base_settings.py:115
msgid "Spanish" msgid "Spanish"
msgstr "" msgstr "스페인어"
#: pretix/_base_settings.py:116 #: pretix/_base_settings.py:116
msgid "Turkish" msgid "Turkish"
msgstr "" msgstr "터키어"
#: pretix/_base_settings.py:117 #: pretix/_base_settings.py:117
msgid "Ukrainian" msgid "Ukrainian"
msgstr "" msgstr "우크라이나어"
#: pretix/api/auth/devicesecurity.py:58 #: pretix/api/auth/devicesecurity.py:58
msgid "" msgid ""
"Full device access (reading and changing orders and gift cards, reading of " "Full device access (reading and changing orders and gift cards, reading of "
"products and settings)" "products and settings)"
msgstr "" msgstr "전체 장치 엑세스(주문 및 기프트 카드 읽기 및 변경, 제품 및 설정읽기)"
#: pretix/api/auth/devicesecurity.py:80 #: pretix/api/auth/devicesecurity.py:80
msgid "pretixSCAN" msgid "pretixSCAN"
msgstr "" msgstr "프레틴스스캔"
#: pretix/api/auth/devicesecurity.py:118 #: pretix/api/auth/devicesecurity.py:118
msgid "pretixSCAN (kiosk mode, no order sync, no search)" msgid "pretixSCAN (kiosk mode, no order sync, no search)"
msgstr "" msgstr "프레틱스스캔(키오스크모드, 주문 동기화 없음, 검색없음)"
#: pretix/api/auth/devicesecurity.py:153 #: pretix/api/auth/devicesecurity.py:153
msgid "pretixSCAN (online only, no order sync)" msgid "pretixSCAN (online only, no order sync)"
msgstr "" msgstr "프레틱스스캔(온라인 전용, 주문 동기화 없음)"
#: pretix/api/models.py:39 pretix/base/models/customers.py:402 #: pretix/api/models.py:39 pretix/base/models/customers.py:402
msgid "Application name" msgid "Application name"
@@ -222,92 +221,101 @@ msgstr "코멘트"
#: pretix/api/serializers/cart.py:168 pretix/api/serializers/order.py:1384 #: pretix/api/serializers/cart.py:168 pretix/api/serializers/order.py:1384
msgid "The product \"{}\" is not assigned to a quota." msgid "The product \"{}\" is not assigned to a quota."
msgstr "" msgstr "제품\"{}\" 은 할당량에 할당되지 않습니다."
#: pretix/api/serializers/checkin.py:65 pretix/base/models/event.py:1667 #: pretix/api/serializers/checkin.py:65 pretix/base/models/event.py:1667
#: pretix/base/models/items.py:1916 pretix/base/models/items.py:2174 #: pretix/base/models/items.py:1916 pretix/base/models/items.py:2174
msgid "One or more items do not belong to this event." msgid "One or more items do not belong to this event."
msgstr "" msgstr "하나 이상의 항목이 이 이벤트에 속하지 않습니다."
#: pretix/api/serializers/checkin.py:69 pretix/api/serializers/checkin.py:72 #: pretix/api/serializers/checkin.py:69 pretix/api/serializers/checkin.py:72
#: pretix/base/models/items.py:2185 pretix/base/models/items.py:2188 #: pretix/base/models/items.py:2185 pretix/base/models/items.py:2188
#: pretix/base/models/waitinglist.py:305 pretix/base/models/waitinglist.py:308 #: pretix/base/models/waitinglist.py:305 pretix/base/models/waitinglist.py:308
msgid "The subevent does not belong to this event." msgid "The subevent does not belong to this event."
msgstr "" msgstr "하위 이벤트는 이 이벤트에 속하지 않습니다."
#: pretix/api/serializers/event.py:231 #: pretix/api/serializers/event.py:231
msgid "" msgid ""
"Events cannot be created as 'live'. Quotas and payment must be added to the " "Events cannot be created as 'live'. Quotas and payment must be added to the "
"event before sales can go live." "event before sales can go live."
msgstr "" msgstr "이벤트는 '라이브'로 생성할 수 없습니다; 이벤트가 시작되기 전에 사용 가능한 "
"숫자와 결제 란을 추가 해야 합니다."
#: pretix/api/serializers/event.py:246 pretix/api/serializers/event.py:551 #: pretix/api/serializers/event.py:246 pretix/api/serializers/event.py:551
#, python-brace-format #, python-brace-format
msgid "Meta data property '{name}' does not exist." msgid "Meta data property '{name}' does not exist."
msgstr "" msgstr "메타 데이타 속성 '{name}' 이 존재하지 않습니다."
#: pretix/api/serializers/event.py:249 pretix/api/serializers/event.py:554 #: pretix/api/serializers/event.py:249 pretix/api/serializers/event.py:554
#, python-brace-format #, python-brace-format
msgid "Meta data property '{name}' does not allow value '{value}'." msgid "Meta data property '{name}' does not allow value '{value}'."
msgstr "" msgstr "메타 데이터 속성 '{name}'은 '{value}' 값을 허용하지 않습니다."
#: pretix/api/serializers/event.py:293 #: pretix/api/serializers/event.py:293
#, python-brace-format #, python-brace-format
msgid "Unknown plugin: '{name}'." msgid "Unknown plugin: '{name}'."
msgstr "" msgstr "알수 없는 플러그인: '{name}'."
#: pretix/api/serializers/event.py:296 #: pretix/api/serializers/event.py:296
#, python-brace-format #, python-brace-format
msgid "Restricted plugin: '{name}'." msgid "Restricted plugin: '{name}'."
msgstr "" msgstr "제한된 플러그인: '{name}'."
#: pretix/api/serializers/item.py:86 pretix/api/serializers/item.py:148 #: pretix/api/serializers/item.py:86 pretix/api/serializers/item.py:148
#: pretix/api/serializers/item.py:359 #: pretix/api/serializers/item.py:359
#, python-brace-format #, python-brace-format
msgid "Item meta data property '{name}' does not exist." msgid "Item meta data property '{name}' does not exist."
msgstr "" msgstr "항목 메타 데이터 속성 {name}이 존재지 않습니다."
#: pretix/api/serializers/item.py:207 pretix/control/forms/item.py:1266 #: pretix/api/serializers/item.py:207 pretix/control/forms/item.py:1266
msgid "The bundled item must not be the same item as the bundling one." msgid "The bundled item must not be the same item as the bundling one."
msgstr "" msgstr "묶음 상품은 묶은 상품과 동일한 상품이어서는 안 됩니다."
#: pretix/api/serializers/item.py:210 pretix/control/forms/item.py:1268 #: pretix/api/serializers/item.py:210 pretix/control/forms/item.py:1268
msgid "The bundled item must not have bundles on its own." msgid "The bundled item must not have bundles on its own."
msgstr "" msgstr "묶음 상품은 그 자체로 또 다른 묶음을 포함 할 수 없습니다."
#: pretix/api/serializers/item.py:298 #: pretix/api/serializers/item.py:298
#, fuzzy
msgid "" msgid ""
"Updating add-ons, bundles, or variations via PATCH/PUT is not supported. " "Updating add-ons, bundles, or variations via PATCH/PUT is not supported. "
"Please use the dedicated nested endpoint." "Please use the dedicated nested endpoint."
msgstr "" msgstr ""
"추가 기능, 묶음 상품들, 또는 변형은 PATCH/PUT를 통해 업데이트 할 수 "
"없습니다. 전용 중첩은 마지막 지점에서 사용해주세요."
#: pretix/api/serializers/item.py:306 #: pretix/api/serializers/item.py:306
#, fuzzy
msgid "Only admission products can currently be personalized." msgid "Only admission products can currently be personalized."
msgstr "" msgstr "현재 입장권 상품만 개인화할 수 있습니다."
#: pretix/api/serializers/item.py:317 #: pretix/api/serializers/item.py:317
#, fuzzy
msgid "" msgid ""
"Gift card products should not be associated with non-zero tax rates since " "Gift card products should not be associated with non-zero tax rates since "
"sales tax will be applied when the gift card is redeemed." "sales tax will be applied when the gift card is redeemed."
msgstr "" msgstr "기프트 카드 상품은 0이 아닌 세율과 연결되어서는 안됩니다. 왜냐하면 판매세는 "
"기프트 카드가 사용될 때 부과되기 때문입니다."
#: pretix/api/serializers/item.py:322 pretix/control/forms/item.py:773 #: pretix/api/serializers/item.py:322 pretix/control/forms/item.py:773
msgid "Gift card products should not be admission products at the same time." msgid "Gift card products should not be admission products at the same time."
msgstr "" msgstr "기프트 카드 상품은 동시에 입장권 상품이 될 수 없습니다."
#: pretix/api/serializers/item.py:519 #: pretix/api/serializers/item.py:519
#, fuzzy
msgid "" msgid ""
"Updating options via PATCH/PUT is not supported. Please use the dedicated " "Updating options via PATCH/PUT is not supported. Please use the dedicated "
"nested endpoint." "nested endpoint."
msgstr "" msgstr "옵션을 PATCH/PUT을 통해 업데이트 하는 것은 지원되지 않습니다. 전용 중첩 "
"마지막 지점을 사용하세요."
#: pretix/api/serializers/item.py:533 pretix/control/forms/item.py:177 #: pretix/api/serializers/item.py:533 pretix/control/forms/item.py:177
msgid "Question cannot depend on a question asked during check-in." msgid "Question cannot depend on a question asked during check-in."
msgstr "" msgstr "질문은 체크인 중에 질문된 질문에 의존할 수 없습니다."
#: pretix/api/serializers/item.py:538 pretix/control/forms/item.py:182 #: pretix/api/serializers/item.py:538 pretix/control/forms/item.py:182
msgid "Circular dependency between questions detected." msgid "Circular dependency between questions detected."
msgstr "" msgstr "질문 간의 순환 의존성이 감지되었습니다."
#: pretix/api/serializers/item.py:543 pretix/control/forms/item.py:191 #: pretix/api/serializers/item.py:543 pretix/control/forms/item.py:191
msgid "This type of question cannot be asked during check-in." msgid "This type of question cannot be asked during check-in."

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-01-29 13:18+0000\n" "POT-Creation-Date: 2025-01-29 13:18+0000\n"
"PO-Revision-Date: 2025-01-29 07:00+0000\n" "PO-Revision-Date: 2025-01-31 01:00+0000\n"
"Last-Translator: Cornelius Kibelka <ckibelka-ctr@wikimedia.org>\n" "Last-Translator: Lorhan Sohaky <lorhansohaky@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://translate.pretix.eu/projects/" "Language-Team: Portuguese (Brazil) <https://translate.pretix.eu/projects/"
"pretix/pretix/pt_BR/>\n" "pretix/pretix/pt_BR/>\n"
"Language: pt_BR\n" "Language: pt_BR\n"
@@ -3978,16 +3978,12 @@ msgstr ""
"segunda vez." "segunda vez."
#: pretix/base/models/checkin.py:99 #: pretix/base/models/checkin.py:99
#, fuzzy
#| msgid "Ticket checked in"
msgid "Automatically check out everyone at" msgid "Automatically check out everyone at"
msgstr "Este ingresso já foi validado" msgstr "Fazer check-out automático de todos em"
#: pretix/base/models/checkin.py:336 #: pretix/base/models/checkin.py:336
#, fuzzy
#| msgid "Country"
msgid "Entry" msgid "Entry"
msgstr "País" msgstr "Entrada"
#: pretix/base/models/checkin.py:337 #: pretix/base/models/checkin.py:337
msgid "Exit" msgid "Exit"
@@ -3998,10 +3994,8 @@ msgid "Unknown ticket"
msgstr "Bilhete desconhecido" msgstr "Bilhete desconhecido"
#: pretix/base/models/checkin.py:356 #: pretix/base/models/checkin.py:356
#, fuzzy
#| msgid "Ticket design"
msgid "Ticket not paid" msgid "Ticket not paid"
msgstr "Design de bilhetes" msgstr "Bilhete não pago"
#: pretix/base/models/checkin.py:357 #: pretix/base/models/checkin.py:357
msgid "Forbidden by custom rule" msgid "Forbidden by custom rule"
@@ -4012,64 +4006,48 @@ msgid "Ticket code revoked/changed"
msgstr "Código do bilhete revogado/alterado" msgstr "Código do bilhete revogado/alterado"
#: pretix/base/models/checkin.py:359 #: pretix/base/models/checkin.py:359
#, fuzzy
#| msgid "Cancellation fee"
msgid "Information required" msgid "Information required"
msgstr "Taxa de cancelamento" msgstr "Informações necessárias"
#: pretix/base/models/checkin.py:360 #: pretix/base/models/checkin.py:360
#, fuzzy
#| msgid "Default timezone"
msgid "Ticket already used" msgid "Ticket already used"
msgstr "Fuso-horário padrão" msgstr "Bilhete já utilizado"
#: pretix/base/models/checkin.py:361 #: pretix/base/models/checkin.py:361
#, fuzzy
#| msgid "Presale not started"
msgid "Ticket type not allowed here" msgid "Ticket type not allowed here"
msgstr "Pré-venda não iniciada" msgstr "Tipo de bilhete não permitido aqui"
#: pretix/base/models/checkin.py:362 #: pretix/base/models/checkin.py:362
msgid "Ticket code is ambiguous on list" msgid "Ticket code is ambiguous on list"
msgstr "O código do bilhete é ambíguo na lista" msgstr "O código do bilhete é ambíguo na lista"
#: pretix/base/models/checkin.py:363 #: pretix/base/models/checkin.py:363
#, fuzzy
#| msgid "Service fee"
msgid "Server error" msgid "Server error"
msgstr "Taxa de serviço" msgstr "Erro do servidor"
#: pretix/base/models/checkin.py:364 #: pretix/base/models/checkin.py:364
#, fuzzy
#| msgid "Ticket design"
msgid "Ticket blocked" msgid "Ticket blocked"
msgstr "Design de bilhetes" msgstr "Bilhete bloqueado"
#: pretix/base/models/checkin.py:365 #: pretix/base/models/checkin.py:365
#, fuzzy
#| msgid "Order approved"
msgid "Order not approved" msgid "Order not approved"
msgstr "Pedido aprovado" msgstr "Pedido não aprovado"
#: 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 "Bilhete não válido no momento" msgstr "Bilhete não válido no momento"
#: pretix/base/models/customers.py:55 #: pretix/base/models/customers.py:55
#, fuzzy
#| msgid "Attendee name"
msgid "Provider name" msgid "Provider name"
msgstr "Nome do participante" msgstr "Nome do provedor"
#: pretix/base/models/customers.py:60 #: pretix/base/models/customers.py:60
msgid "Login button label" msgid "Login button label"
msgstr "Rótulo do botão de login" msgstr "Rótulo do botão de login"
#: pretix/base/models/customers.py:64 #: pretix/base/models/customers.py:64
#, fuzzy
#| msgid "Required question"
msgid "Single-sign-on method" msgid "Single-sign-on method"
msgstr "Pergunta obrigatória" msgstr "Método de login único"
#: pretix/base/models/customers.py:85 pretix/base/models/devices.py:71 #: pretix/base/models/customers.py:85 pretix/base/models/devices.py:71
#: pretix/base/models/items.py:1675 pretix/base/models/items.py:1923 #: pretix/base/models/items.py:1675 pretix/base/models/items.py:1923
@@ -4095,10 +4073,8 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/organizers/giftcard_acceptance_list.html:56 #: pretix/control/templates/pretixcontrol/organizers/giftcard_acceptance_list.html:56
#: pretix/control/templates/pretixcontrol/organizers/giftcard_acceptance_list.html:135 #: pretix/control/templates/pretixcontrol/organizers/giftcard_acceptance_list.html:135
#: pretix/control/templates/pretixcontrol/organizers/reusable_medium.html:35 #: pretix/control/templates/pretixcontrol/organizers/reusable_medium.html:35
#, fuzzy
#| msgid "Shop disabled"
msgid "disabled" msgid "disabled"
msgstr "Loja desativada" msgstr "desativado"
#: pretix/base/models/customers.py:310 pretix/base/models/orders.py:1536 #: pretix/base/models/customers.py:310 pretix/base/models/orders.py:1536
#: pretix/base/models/orders.py:3262 pretix/base/settings.py:1111 #: pretix/base/models/orders.py:3262 pretix/base/settings.py:1111
@@ -4122,11 +4098,9 @@ msgid "Public"
msgstr "Público" msgstr "Público"
#: pretix/base/models/customers.py:388 #: pretix/base/models/customers.py:388
#, fuzzy
#| msgid "Creation date"
msgctxt "openidconnect" msgctxt "openidconnect"
msgid "Authorization code" msgid "Authorization code"
msgstr "Data de criação" msgstr "Código de autorização"
#: pretix/base/models/customers.py:389 #: pretix/base/models/customers.py:389
msgctxt "openidconnect" msgctxt "openidconnect"
@@ -4138,32 +4112,24 @@ msgid "OpenID Connect access (required)"
msgstr "Acesso ao OpenID Connect (obrigatório)" msgstr "Acesso ao OpenID Connect (obrigatório)"
#: pretix/base/models/customers.py:394 #: pretix/base/models/customers.py:394
#, fuzzy
#| msgid "Device type"
msgid "Profile data (name, addresses)" msgid "Profile data (name, addresses)"
msgstr "Tipo de dispositivo" msgstr "Dados de perfil (nome, endereços)"
#: pretix/base/models/customers.py:414 #: pretix/base/models/customers.py:414
#, fuzzy
#| msgid "Events"
msgid "Client type" msgid "Client type"
msgstr "Eventos" msgstr "Tipo de cliente"
#: pretix/base/models/customers.py:417 #: pretix/base/models/customers.py:417
#, fuzzy
#| msgid "Payment type"
msgid "Grant type" msgid "Grant type"
msgstr "Tipo de pagamento" msgstr "Tipo de subsídio"
#: pretix/base/models/customers.py:428 #: pretix/base/models/customers.py:428
msgid "Allowed access scopes" msgid "Allowed access scopes"
msgstr "Escopos de acesso permitidos" msgstr "Escopos de acesso permitidos"
#: pretix/base/models/customers.py:429 #: pretix/base/models/customers.py:429
#, fuzzy
#| msgid "Device type"
msgid "Separate multiple values with spaces" msgid "Separate multiple values with spaces"
msgstr "Tipo de dispositivo" msgstr "Separe vários valores com espaços"
#: pretix/base/models/devices.py:70 pretix/base/models/items.py:1674 #: pretix/base/models/devices.py:70 pretix/base/models/items.py:1674
msgid "Internal identifier" msgid "Internal identifier"
@@ -4213,10 +4179,8 @@ msgid "Position"
msgstr "Posição" msgstr "Posição"
#: pretix/base/models/discount.py:70 #: pretix/base/models/discount.py:70
#, fuzzy
#| msgid "Sales channels"
msgid "All supported sales channels" msgid "All supported sales channels"
msgstr "Canal de vendas" msgstr "Todos os canais de vendas suportados"
#: pretix/base/models/discount.py:91 #: pretix/base/models/discount.py:91
#, fuzzy #, fuzzy
@@ -4914,7 +4878,7 @@ msgstr ""
#: pretix/base/models/items.py:459 #: pretix/base/models/items.py:459
msgid "Require either an existing or a new medium to be used" msgid "Require either an existing or a new medium to be used"
msgstr "" msgstr "Exigir o uso de um meio existente ou de um novo meio"
#: pretix/base/models/items.py:475 pretix/base/models/items.py:1457 #: pretix/base/models/items.py:475 pretix/base/models/items.py:1457
msgid "Category" msgid "Category"
@@ -4969,6 +4933,10 @@ msgid ""
"have without the free price option. This will be ignored if a voucher is " "have without the free price option. This will be ignored if a voucher is "
"used that lowers the price." "used that lowers the price."
msgstr "" msgstr ""
"Esse preço será usado como o valor padrão do campo de entrada. O usuário "
"pode escolher um valor mais baixo, mas não inferior ao preço que o produto "
"teria sem a opção de preço gratuito. Isso será ignorado se for usado um "
"voucher que reduza o preço."
#: pretix/base/models/items.py:527 #: pretix/base/models/items.py:527
msgid "Whether or not buying this product allows a person to enter your event" msgid "Whether or not buying this product allows a person to enter your event"
@@ -4991,7 +4959,7 @@ msgstr ""
#: pretix/base/models/items.py:543 #: pretix/base/models/items.py:543
msgid "Show a waiting list for this ticket" msgid "Show a waiting list for this ticket"
msgstr "" msgstr "Mostrar uma lista de espera para esse bilhete"
#: pretix/base/models/items.py:544 #: pretix/base/models/items.py:544
#, fuzzy #, fuzzy
@@ -5002,11 +4970,11 @@ msgstr "As listas de espera estão desabilitadas para este evento."
#: pretix/base/models/items.py:548 pretix/base/settings.py:1352 #: pretix/base/models/items.py:548 pretix/base/settings.py:1352
#: pretix/control/forms/event.py:1677 #: pretix/control/forms/event.py:1677
msgid "Show number of tickets left" msgid "Show number of tickets left"
msgstr "" msgstr "Mostrar o número de bilhetes restantes"
#: pretix/base/models/items.py:549 #: pretix/base/models/items.py:549
msgid "Publicly show how many tickets are still available." msgid "Publicly show how many tickets are still available."
msgstr "" msgstr "Mostrar publicamente quantos bilhetes ainda estão disponíveis."
#: pretix/base/models/items.py:556 pretix/control/forms/item.py:625 #: pretix/base/models/items.py:556 pretix/control/forms/item.py:625
msgid "Product picture" msgid "Product picture"
@@ -5015,7 +4983,7 @@ msgstr "Imagem do produto"
#: pretix/base/models/items.py:585 #: pretix/base/models/items.py:585
msgctxt "hidden_if_available_legacy" msgctxt "hidden_if_available_legacy"
msgid "Only show after sellout of" msgid "Only show after sellout of"
msgstr "" msgstr "Só mostrar após o esgotamento de"
#: pretix/base/models/items.py:586 #: pretix/base/models/items.py:586
msgid "" msgid ""
@@ -5025,10 +4993,16 @@ msgid ""
"out. There might be a short period in which both products are visible while " "out. There might be a short period in which both products are visible while "
"all tickets in the referenced quota are reserved, but not yet sold." "all tickets in the referenced quota are reserved, but not yet sold."
msgstr "" msgstr ""
"Se você selecionar uma cota aqui, esse produto só será exibido quando essa "
"cota não estiver disponível. Se combinado com a opção de ocultar produtos "
"esgotados, isso permite que você troque produtos por outros mais caros "
"quando eles estiverem esgotados. Pode haver um curto período em que ambos os "
"produtos estejam visíveis enquanto todos os ingressos da cota mencionada "
"estiverem reservados, mas ainda não vendidos."
#: pretix/base/models/items.py:596 #: pretix/base/models/items.py:596
msgid "Only show after sellout of" msgid "Only show after sellout of"
msgstr "" msgstr "Só mostrar após o esgotamento de"
#: pretix/base/models/items.py:597 #: pretix/base/models/items.py:597
msgid "" msgid ""
@@ -5039,6 +5013,12 @@ msgid ""
"products are visible while all tickets of the referenced product are " "products are visible while all tickets of the referenced product are "
"reserved, but not yet sold." "reserved, but not yet sold."
msgstr "" msgstr ""
"Se você selecionar um produto aqui, esse produto só será mostrado quando "
"estiver esgotado. Se combinado com a opção de ocultar produtos esgotados, "
"isso permite que você troque produtos por outros mais caros quando a opção "
"mais barata estiver esgotada. Pode haver um curto período em que ambos os "
"produtos estejam visíveis enquanto todos os ingressos do produto em questão "
"estiverem reservados, mas ainda não vendidos."
#: pretix/base/models/items.py:611 #: pretix/base/models/items.py:611
msgid "" msgid ""
@@ -5648,7 +5628,7 @@ msgstr ""
#: pretix/base/models/items.py:1715 #: pretix/base/models/items.py:1715
msgid "Show answer during check-in" msgid "Show answer during check-in"
msgstr "" msgstr "Mostrar resposta durante o check-in"
#: pretix/base/models/items.py:1720 #: pretix/base/models/items.py:1720
#: pretix/control/templates/pretixcontrol/items/questions.html:66 #: pretix/control/templates/pretixcontrol/items/questions.html:66
@@ -5665,7 +5645,7 @@ msgstr "Esta pergunta será feita aos compradores dos produtos selecionados"
#: pretix/base/models/items.py:1725 #: pretix/base/models/items.py:1725
msgid "Print answer on invoices" msgid "Print answer on invoices"
msgstr "" msgstr "Imprimir resposta nas faturas"
#: pretix/base/models/items.py:1733 pretix/base/models/items.py:1739 #: pretix/base/models/items.py:1733 pretix/base/models/items.py:1739
#: pretix/base/models/items.py:1745 #: pretix/base/models/items.py:1745
@@ -5679,7 +5659,7 @@ msgstr "Número mínimo"
#: pretix/base/models/items.py:1746 pretix/base/models/items.py:1749 #: pretix/base/models/items.py:1746 pretix/base/models/items.py:1749
#: pretix/base/models/items.py:1753 #: pretix/base/models/items.py:1753
msgid "Currently not supported in our apps and during check-in" msgid "Currently not supported in our apps and during check-in"
msgstr "" msgstr "Atualmente, não há suporte em nossos aplicativos e durante o check-in"
#: pretix/base/models/items.py:1736 pretix/base/models/items.py:1742 #: pretix/base/models/items.py:1736 pretix/base/models/items.py:1742
#: pretix/base/models/items.py:1748 #: pretix/base/models/items.py:1748
@@ -5696,13 +5676,15 @@ msgstr "Número máximo"
#: pretix/base/models/items.py:1757 #: pretix/base/models/items.py:1757
msgid "Validate file to be a portrait" msgid "Validate file to be a portrait"
msgstr "" msgstr "Validar o arquivo como sendo um retrato"
#: pretix/base/models/items.py:1758 #: pretix/base/models/items.py:1758
msgid "" msgid ""
"If checked, files must be images with an aspect ratio of 3:4. This is " "If checked, files must be images with an aspect ratio of 3:4. This is "
"commonly used for photos printed on badges." "commonly used for photos printed on badges."
msgstr "" msgstr ""
"Se marcado, os arquivos devem ser imagens com uma proporção de 3:4. Isso é a "
"proporção comum usada para fotos impressas em crachás."
#: pretix/base/models/items.py:1813 #: pretix/base/models/items.py:1813
msgid "An answer to this question is required to proceed." msgid "An answer to this question is required to proceed."
@@ -5716,11 +5698,11 @@ msgstr "Entrada de data inválida."
#: pretix/base/models/items.py:1857 #: pretix/base/models/items.py:1857
msgid "The number is to low." msgid "The number is to low."
msgstr "" msgstr "O número é baixo demais."
#: pretix/base/models/items.py:1859 #: pretix/base/models/items.py:1859
msgid "The number is to high." msgid "The number is to high."
msgstr "" msgstr "O número é alto demais."
#: pretix/base/models/items.py:1862 #: pretix/base/models/items.py:1862
msgid "Invalid number input." msgid "Invalid number input."
@@ -5799,7 +5781,7 @@ msgstr "Variações"
#: pretix/base/models/items.py:2063 #: pretix/base/models/items.py:2063
#: pretix/control/templates/pretixcontrol/items/quotas.html:70 #: pretix/control/templates/pretixcontrol/items/quotas.html:70
msgid "Ignore this quota when determining event availability" msgid "Ignore this quota when determining event availability"
msgstr "" msgstr "Ignorar essa cota ao determinar a disponibilidade do evento"
#: pretix/base/models/items.py:2064 #: pretix/base/models/items.py:2064
msgid "" msgid ""
@@ -5808,10 +5790,14 @@ msgid ""
"that is added to each event but should not stop the event from being shown " "that is added to each event but should not stop the event from being shown "
"as sold out." "as sold out."
msgstr "" msgstr ""
"Se você ativar essa opção, essa cota será ignorada ao determinar a "
"disponibilidade do evento em seu calendário de eventos. Isso é útil, por "
"exemplo, para mercadorias que são adicionadas a cada evento, mas não deve "
"impedir que o evento seja mostrado como esgotado."
#: pretix/base/models/items.py:2071 #: pretix/base/models/items.py:2071
msgid "Close this quota permanently once it is sold out" msgid "Close this quota permanently once it is sold out"
msgstr "" msgstr "Feche essa cota permanentemente quando ela estiver esgotada"
#: pretix/base/models/items.py:2072 #: pretix/base/models/items.py:2072
msgid "" msgid ""
@@ -5819,10 +5805,16 @@ msgid ""
"sold, even if tickets become available again through cancellations or " "sold, even if tickets become available again through cancellations or "
"expiring orders. Of course, you can always re-open it manually." "expiring orders. Of course, you can always re-open it manually."
msgstr "" msgstr ""
"Se você ativar essa opção, quando a cota for esgotada uma vez, nenhum outro "
"bilhete será vendido, mesmo que os bilhetes fiquem disponíveis novamente por "
"meio de cancelamentos ou pedidos expirados. Obviamente, você sempre poderá "
"reabri-la manualmente."
#: pretix/base/models/items.py:2080 #: pretix/base/models/items.py:2080
msgid "Allow to sell more tickets once people have checked out" msgid "Allow to sell more tickets once people have checked out"
msgstr "" msgstr ""
"Permitir a venda de mais bilhetes depois que as pessoas tiverem feito o "
"check-out"
#: pretix/base/models/items.py:2081 #: pretix/base/models/items.py:2081
msgid "" msgid ""
@@ -5833,6 +5825,12 @@ msgid ""
"are ignored if they are set to \"Allow re-entering after an exit scan\" to " "are ignored if they are set to \"Allow re-entering after an exit scan\" to "
"prevent accidental overbooking." "prevent accidental overbooking."
msgstr "" msgstr ""
"Com essa opção, a cota será liberada assim que as pessoas forem escaneadas "
"na saída do seu evento. Isso só ocorrerá se elas tiverem sido escaneadas em "
"uma entrada e em uma saída e a saída for o escaneamento mais recente. Não "
"importa em qual lista de check-in uma das verificações estava, mas as listas "
"de check-in serão ignoradas se estiverem definidas como “Permitir reentrada "
"após uma verificação de saída” para evitar overbooking acidental."
#: pretix/base/models/items.py:2093 pretix/control/navigation.py:156 #: pretix/base/models/items.py:2093 pretix/control/navigation.py:156
#: pretix/control/templates/pretixcontrol/items/quotas.html:4 #: pretix/control/templates/pretixcontrol/items/quotas.html:4
@@ -5841,7 +5839,7 @@ msgstr ""
#: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:184 #: pretix/control/templates/pretixcontrol/subevents/bulk_edit.html:184
#: pretix/control/templates/pretixcontrol/subevents/detail.html:59 #: pretix/control/templates/pretixcontrol/subevents/detail.html:59
msgid "Quotas" msgid "Quotas"
msgstr "" msgstr "Cotas"
#: pretix/base/models/items.py:2166 #: pretix/base/models/items.py:2166
msgid "All variations must belong to an item contained in the items list." msgid "All variations must belong to an item contained in the items list."
@@ -5870,27 +5868,34 @@ msgid ""
"If checked, this property must be set in each product. Does not apply if a " "If checked, this property must be set in each product. Does not apply if a "
"default value is set." "default value is set."
msgstr "" msgstr ""
"Se marcada, essa propriedade deverá ser definida em cada produto. Não se "
"aplica se um valor padrão for definido."
#: pretix/base/models/items.py:2225 #: pretix/base/models/items.py:2225
msgid "" msgid ""
"If you keep this empty, any value is allowed. Otherwise, enter one possible " "If you keep this empty, any value is allowed. Otherwise, enter one possible "
"value per line." "value per line."
msgstr "" msgstr ""
"Se você mantiver esse campo vazio, qualquer valor será permitido. Caso "
"contrário, insira um valor possível por linha."
#: pretix/base/models/memberships.py:44 #: pretix/base/models/memberships.py:44
#: pretix/presale/templates/pretixpresale/organizers/customer_memberships.html:29 #: pretix/presale/templates/pretixpresale/organizers/customer_memberships.html:29
msgid "Membership is transferable" msgid "Membership is transferable"
msgstr "" msgstr "A assinatura é transferível"
#: pretix/base/models/memberships.py:45 #: pretix/base/models/memberships.py:45
msgid "" msgid ""
"If this is selected, the membership can be used to purchase tickets for " "If this is selected, the membership can be used to purchase tickets for "
"multiple persons. If not, the attendee name always needs to stay the same." "multiple persons. If not, the attendee name always needs to stay the same."
msgstr "" msgstr ""
"Se essa opção for selecionada, a assinatura poderá ser usada para comprar "
"bilhetes para várias pessoas. Caso contrário, o nome do participante precisa "
"ser sempre o mesmo."
#: pretix/base/models/memberships.py:50 #: pretix/base/models/memberships.py:50
msgid "Parallel usage is allowed" msgid "Parallel usage is allowed"
msgstr "" msgstr "O uso paralelo é permitido"
#: pretix/base/models/memberships.py:51 #: pretix/base/models/memberships.py:51
msgid "" msgid ""
@@ -5900,10 +5905,15 @@ msgid ""
"overlap check will be performed if there is a product-level validity of the " "overlap check will be performed if there is a product-level validity of the "
"ticket." "ticket."
msgstr "" msgstr ""
"Se essa opção for selecionada, a assinatura poderá ser usada para comprar "
"ingressos para eventos que ocorrerão ao mesmo tempo. Observe que isso só "
"verificará se o horário de início dos eventos é idêntico, e não se há "
"sobreposição entre os eventos. Uma verificação de sobreposição será "
"realizada se houver uma validade do bilhete no nível do produto."
#: pretix/base/models/memberships.py:58 #: pretix/base/models/memberships.py:58
msgid "Number of times this membership can be used in a purchase." msgid "Number of times this membership can be used in a purchase."
msgstr "" msgstr "Número de vezes que essa assinatura pode ser usada em uma compra."
#: pretix/base/models/memberships.py:124 #: pretix/base/models/memberships.py:124
#: pretix/control/templates/pretixcontrol/items/question.html:33 #: pretix/control/templates/pretixcontrol/items/question.html:33
@@ -5959,7 +5969,7 @@ msgstr ""
#: pretix/base/models/orders.py:278 #: pretix/base/models/orders.py:278
msgid "We'll show you this order to be due for a follow-up on this day." msgid "We'll show you this order to be due for a follow-up on this day."
msgstr "" msgstr "Mostraremos a você que essa ordem deve ser acompanhada nesse dia."
#: pretix/base/models/orders.py:284 #: pretix/base/models/orders.py:284
msgid "" msgid ""
@@ -5978,6 +5988,8 @@ msgid ""
"This text will be shown by the check-in app if a ticket of this order is " "This text will be shown by the check-in app if a ticket of this order is "
"scanned." "scanned."
msgstr "" msgstr ""
"Esse texto será exibido pelo aplicativo de check-in se um bilhete desse "
"pedido for escaneado."
#: pretix/base/models/orders.py:301 pretix/base/models/orders.py:1524 #: pretix/base/models/orders.py:301 pretix/base/models/orders.py:1524
msgid "Meta information" msgid "Meta information"
@@ -6045,7 +6057,7 @@ msgstr "O produto encomendado \"{item}\" já não está disponível."
#: pretix/base/models/orders.py:1062 #: pretix/base/models/orders.py:1062
#, python-brace-format #, python-brace-format
msgid "The voucher \"{voucher}\" no longer has sufficient budget." msgid "The voucher \"{voucher}\" no longer has sufficient budget."
msgstr "" msgstr "O voucher “{voucher}” não tem mais saldo suficiente."
#: pretix/base/models/orders.py:1063 #: pretix/base/models/orders.py:1063
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
@@ -6156,6 +6168,8 @@ msgstr "Data de pagamento"
msgid "" msgid ""
"May be shown to the end user or used e.g. as part of a payment reference." "May be shown to the end user or used e.g. as part of a payment reference."
msgstr "" msgstr ""
"Pode ser mostrado ao usuário final ou usado, por exemplo, como parte de uma "
"referência de pagamento."
#: pretix/base/models/orders.py:2284 #: pretix/base/models/orders.py:2284
msgid "Service fee" msgid "Service fee"
@@ -6176,7 +6190,7 @@ msgstr "Taxa de cancelamento"
#: pretix/base/models/orders.py:2288 #: pretix/base/models/orders.py:2288
msgid "Insurance fee" msgid "Insurance fee"
msgstr "" msgstr "Taxa de seguro"
#: pretix/base/models/orders.py:2289 #: pretix/base/models/orders.py:2289
#, fuzzy #, fuzzy
@@ -6234,14 +6248,14 @@ msgstr "Esta referência será impressa na sua fatura para sua conveniência."
#: pretix/base/models/orders.py:3461 #: pretix/base/models/orders.py:3461
#: pretix/plugins/badges/templates/pretixplugins/badges/control_order_position_buttons.html:9 #: pretix/plugins/badges/templates/pretixplugins/badges/control_order_position_buttons.html:9
msgid "Badge" msgid "Badge"
msgstr "" msgstr "Crachá"
#: pretix/base/models/orders.py:3462 pretix/base/pdf.py:1109 #: pretix/base/models/orders.py:3462 pretix/base/pdf.py:1109
#: pretix/control/forms/organizer.py:777 pretix/control/forms/organizer.py:813 #: pretix/control/forms/organizer.py:777 pretix/control/forms/organizer.py:813
#: pretix/control/templates/pretixcontrol/checkin/checkins.html:66 #: pretix/control/templates/pretixcontrol/checkin/checkins.html:66
#: pretix/plugins/ticketoutputpdf/ticketoutput.py:113 #: pretix/plugins/ticketoutputpdf/ticketoutput.py:113
msgid "Ticket" msgid "Ticket"
msgstr "" msgstr "Bilhete"
#: pretix/base/models/orders.py:3463 #: pretix/base/models/orders.py:3463
#, fuzzy #, fuzzy
@@ -6286,6 +6300,7 @@ msgstr "Membros do time"
#: pretix/base/models/organizer.py:289 #: pretix/base/models/organizer.py:289
msgid "Require all members of this team to use two-factor authentication" msgid "Require all members of this team to use two-factor authentication"
msgstr "" msgstr ""
"Exigir que todos os membros dessa equipe usem a autenticação de dois fatores"
#: pretix/base/models/organizer.py:290 #: pretix/base/models/organizer.py:290
msgid "" msgid ""
@@ -6293,6 +6308,9 @@ msgid ""
"up two-factor authentication or leave the team. The setting may take a few " "up two-factor authentication or leave the team. The setting may take a few "
"minutes to become effective for all users." "minutes to become effective for all users."
msgstr "" msgstr ""
"Se você ativar essa opção, todos os membros da equipe deverão configurar a "
"autenticação de dois fatores ou sair da equipe. A configuração pode levar "
"alguns minutos para entrar em vigor para todos os usuários."
#: pretix/base/models/organizer.py:297 #: pretix/base/models/organizer.py:297
msgid "Can create events" msgid "Can create events"
@@ -6487,45 +6505,47 @@ msgstr "Isento de impostos (sem justificativa)"
#: pretix/base/models/tax.py:177 #: pretix/base/models/tax.py:177
msgctxt "tax_code" msgctxt "tax_code"
msgid "Zero-rated goods" msgid "Zero-rated goods"
msgstr "" msgstr "Mercadorias com taxa zero"
#: pretix/base/models/tax.py:180 #: pretix/base/models/tax.py:180
msgctxt "tax_code" msgctxt "tax_code"
msgid "Free export item, VAT not charged" msgid "Free export item, VAT not charged"
msgstr "" msgstr "Item de exportação gratuita, IVA não cobrado"
#: pretix/base/models/tax.py:183 #: pretix/base/models/tax.py:183
msgctxt "tax_code" msgctxt "tax_code"
msgid "VAT exempt for EEA intra-community supply of goods and services" msgid "VAT exempt for EEA intra-community supply of goods and services"
msgstr "" msgstr ""
"Isenção de IVA para fornecimento intracomunitário de bens e serviços no EEE"
#: pretix/base/models/tax.py:187 #: pretix/base/models/tax.py:187
msgid "Special cases" msgid "Special cases"
msgstr "" msgstr "Casos especiais"
#: pretix/base/models/tax.py:189 #: pretix/base/models/tax.py:189
msgctxt "tax_code" msgctxt "tax_code"
msgid "Canary Islands general indirect tax" msgid "Canary Islands general indirect tax"
msgstr "" msgstr "Imposto indireto geral das Ilhas Canárias"
#: 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 "Imposto para produção, serviços e importação em Ceuta e Melilla"
#: pretix/base/models/tax.py:191 #: pretix/base/models/tax.py:191
msgctxt "tax_code" msgctxt "tax_code"
msgid "Transferred (VAT), only in Italy" msgid "Transferred (VAT), only in Italy"
msgstr "" msgstr "Transferido (IVA), apenas na Itália"
#: pretix/base/models/tax.py:195 #: pretix/base/models/tax.py:195
msgid "Exempt with specific reason" msgid "Exempt with specific reason"
msgstr "" msgstr "Isento por motivo específico"
#: pretix/base/models/tax.py:198 #: pretix/base/models/tax.py:198
msgctxt "tax_code" msgctxt "tax_code"
msgid "Exempt based on article 79, point c of Council Directive 2006/112/EC" msgid "Exempt based on article 79, point c of Council Directive 2006/112/EC"
msgstr "" msgstr ""
"Isento com base no artigo 79, alínea c, da Diretiva 2006/112/CE do Conselho"
#: pretix/base/models/tax.py:205 pretix/base/models/tax.py:218 #: pretix/base/models/tax.py:205 pretix/base/models/tax.py:218
#: pretix/base/models/tax.py:244 #: pretix/base/models/tax.py:244

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-01-29 13:18+0000\n" "POT-Creation-Date: 2025-01-29 13:18+0000\n"
"PO-Revision-Date: 2024-10-30 19:00+0000\n" "PO-Revision-Date: 2025-01-30 12:39+0000\n"
"Last-Translator: Tinna Sandström <tinna@coeo.events>\n" "Last-Translator: Linnea Thelander <linnea@coeo.events>\n"
"Language-Team: Swedish <https://translate.pretix.eu/projects/pretix/pretix/" "Language-Team: Swedish <https://translate.pretix.eu/projects/pretix/pretix/"
"sv/>\n" "sv/>\n"
"Language: sv\n" "Language: sv\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.8.1\n" "X-Generator: Weblate 5.9.2\n"
#: pretix/_base_settings.py:87 #: pretix/_base_settings.py:87
msgid "English" msgid "English"
@@ -643,9 +643,8 @@ msgstr "{system} Användare"
#: pretix/presale/forms/customer.py:375 pretix/presale/forms/user.py:40 #: pretix/presale/forms/customer.py:375 pretix/presale/forms/user.py:40
#: pretix/presale/templates/pretixpresale/event/checkout_customer.html:30 #: pretix/presale/templates/pretixpresale/event/checkout_customer.html:30
#: pretix/presale/templates/pretixpresale/event/order.html:299 #: pretix/presale/templates/pretixpresale/event/order.html:299
#, fuzzy
msgid "Email" msgid "Email"
msgstr "Epost" msgstr "E-post"
#: pretix/base/auth.py:157 pretix/base/forms/auth.py:164 #: pretix/base/auth.py:157 pretix/base/forms/auth.py:164
#: pretix/base/forms/auth.py:218 pretix/base/models/auth.py:672 #: pretix/base/forms/auth.py:218 pretix/base/models/auth.py:672
@@ -2203,7 +2202,7 @@ msgstr "Namn på deltagare"
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:176 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:176
#: pretix/presale/templates/pretixpresale/event/fragment_cart.html:179 #: pretix/presale/templates/pretixpresale/event/fragment_cart.html:179
msgid "Attendee email" msgid "Attendee email"
msgstr "Epost till deltagare" msgstr "E-post till deltagare"
#: pretix/base/exporters/orderlist.py:609 pretix/base/models/vouchers.py:312 #: pretix/base/exporters/orderlist.py:609 pretix/base/models/vouchers.py:312
#: pretix/control/templates/pretixcontrol/vouchers/bulk.html:5 #: pretix/control/templates/pretixcontrol/vouchers/bulk.html:5
@@ -11670,7 +11669,7 @@ msgid ""
"Make sure to enter a valid email address. We will send you an order " "Make sure to enter a valid email address. We will send you an order "
"confirmation including a link that you need to access your order later." "confirmation including a link that you need to access your order later."
msgstr "" msgstr ""
"Var noggrann och ange en korrekt epost-adress. Vi kommer skicka dig en " "Var noggrann och ange en korrekt e-postadress. Vi kommer skicka dig en "
"bekräftelse på din bokning som innehåller en länk som du behöver för att " "bekräftelse på din bokning som innehåller en länk som du behöver för att "
"komma åt din bokning vid senare tillfällen." "komma åt din bokning vid senare tillfällen."
@@ -20635,7 +20634,7 @@ msgstr "Tillgänglighet"
#: pretix/control/templates/pretixcontrol/item/index.html:184 #: pretix/control/templates/pretixcontrol/item/index.html:184
msgid "Tickets & Badges" msgid "Tickets & Badges"
msgstr "Biljetter och märken" msgstr "Biljetter och namnbrickor"
#: pretix/control/templates/pretixcontrol/item/index.html:203 #: pretix/control/templates/pretixcontrol/item/index.html:203
msgid "Check-in & Validity" msgid "Check-in & Validity"
@@ -27901,7 +27900,7 @@ msgstr "Den valda regeln har raderats."
#: pretix/plugins/badges/templates/pretixplugins/badges/index.html:4 #: pretix/plugins/badges/templates/pretixplugins/badges/index.html:4
#: pretix/plugins/badges/templates/pretixplugins/badges/index.html:6 #: pretix/plugins/badges/templates/pretixplugins/badges/index.html:6
msgid "Badges" msgid "Badges"
msgstr "Märken" msgstr "Namnbrickor"
#: pretix/plugins/badges/apps.py:38 #: pretix/plugins/badges/apps.py:38
msgid "" msgid ""
@@ -29037,7 +29036,7 @@ msgstr "Inga giltiga bokningar har hittats."
#: pretix/plugins/banktransfer/views.py:905 pretix/presale/checkoutflow.py:1012 #: pretix/plugins/banktransfer/views.py:905 pretix/presale/checkoutflow.py:1012
#: pretix/presale/checkoutflow.py:1018 #: pretix/presale/checkoutflow.py:1018
msgid "Please enter a valid email address." msgid "Please enter a valid email address."
msgstr "Ange en giltig epost." msgstr "Ange en giltig e-post."
#: pretix/plugins/banktransfer/views.py:912 #: pretix/plugins/banktransfer/views.py:912
msgid "" msgid ""
@@ -31885,17 +31884,17 @@ msgstr ""
#: pretix/presale/forms/checkout.py:70 #: pretix/presale/forms/checkout.py:70
msgid "Email address (repeated)" msgid "Email address (repeated)"
msgstr "Epost (repetera)" msgstr "E-post (repetera)"
#: pretix/presale/forms/checkout.py:71 #: pretix/presale/forms/checkout.py:71
msgid "" msgid ""
"Please enter the same email address again to make sure you typed it " "Please enter the same email address again to make sure you typed it "
"correctly." "correctly."
msgstr "Ange samma epost igen och var noggrann så att du skrivit den korrekt." msgstr "Ange samma e-post igen och var noggrann så att du skrivit den korrekt."
#: pretix/presale/forms/checkout.py:110 #: pretix/presale/forms/checkout.py:110
msgid "Please enter the same email address twice." msgid "Please enter the same email address twice."
msgstr "Ange samma epost två gånger." msgstr "Ange samma e-post två gånger."
#: pretix/presale/forms/checkout.py:125 #: pretix/presale/forms/checkout.py:125
msgid "Save to address" msgid "Save to address"

File diff suppressed because it is too large Load Diff

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-01-29 13:18+0000\n" "POT-Creation-Date: 2025-01-29 13:18+0000\n"
"PO-Revision-Date: 2024-01-22 17:08+0000\n" "PO-Revision-Date: 2025-01-31 01:00+0000\n"
"Last-Translator: Raphael Michel <michel@rami.io>\n" "Last-Translator: Chislon <chislon@gmail.com>\n"
"Language-Team: Chinese (Traditional) <https://translate.pretix.eu/projects/" "Language-Team: Chinese (Traditional Han script) <https://translate.pretix.eu/"
"pretix/pretix-js/zh_Hant/>\n" "projects/pretix/pretix-js/zh_Hant/>\n"
"Language: zh_Hant\n" "Language: zh_Hant\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.3.1\n" "X-Generator: Weblate 5.9.2\n"
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56 #: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:56
#: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62 #: pretix/plugins/banktransfer/static/pretixplugins/banktransfer/ui.js:62
@@ -237,11 +237,11 @@ msgstr "已取消"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:46 #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:46
msgid "Confirmed" msgid "Confirmed"
msgstr "" msgstr "已確認"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:47 #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:47
msgid "Approval pending" msgid "Approval pending"
msgstr "" msgstr "等待批准"
#: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:48 #: pretix/plugins/webcheckin/static/pretixplugins/webcheckin/main.js:48
msgid "Redeemed" msgid "Redeemed"
@@ -432,7 +432,7 @@ msgstr "是之後"
#: 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"
@@ -444,7 +444,7 @@ msgstr "產品變體"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:107 #: pretix/static/pretixcontrol/js/ui/checkinrules.js:107
msgid "Gate" msgid "Gate"
msgstr "" msgstr "閘口"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:111 #: pretix/static/pretixcontrol/js/ui/checkinrules.js:111
msgid "Current date and time" msgid "Current date and time"
@@ -456,7 +456,7 @@ msgstr "目前一週當中的星期幾(1=星期一7=星期天)"
#: 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 "當前入場狀態"
#: 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"
@@ -471,26 +471,20 @@ msgid "Number of previous entries since"
msgstr "之前入場的數量" msgstr "之前入場的數量"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:135 #: pretix/static/pretixcontrol/js/ui/checkinrules.js:135
#, fuzzy
#| msgid "Number of previous entries"
msgid "Number of previous entries before" msgid "Number of previous entries before"
msgstr "先前入場的數量" msgstr "先前入場的數量"
#: 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 "先前入場的天數數量" msgstr "先前入場的天數數量"
#: 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"
msgid "Number of days with a previous entry since" msgid "Number of days with a previous entry since"
msgstr "先前入場的天數數量" msgstr "自上次入場以來的天數"
#: 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"
msgid "Number of days with a previous entry before" msgid "Number of days with a previous entry before"
msgstr "先前入場的天數數量" msgstr "先前自上次入場以來的天數"
#: pretix/static/pretixcontrol/js/ui/checkinrules.js:151 #: pretix/static/pretixcontrol/js/ui/checkinrules.js:151
msgid "Minutes since last entry (-1 on first entry)" msgid "Minutes since last entry (-1 on first entry)"
@@ -547,12 +541,12 @@ msgstr "重覆"
#: 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 "出席"
#: 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 "缺席"
#: pretix/static/pretixcontrol/js/ui/editor.js:171 #: pretix/static/pretixcontrol/js/ui/editor.js:171
msgid "Check-in QR" msgid "Check-in QR"
@@ -567,16 +561,12 @@ msgid "Group of objects"
msgstr "物件群組" msgstr "物件群組"
#: pretix/static/pretixcontrol/js/ui/editor.js:899 #: pretix/static/pretixcontrol/js/ui/editor.js:899
#, fuzzy
#| msgid "Text object"
msgid "Text object (deprecated)" msgid "Text object (deprecated)"
msgstr "文字物件" msgstr "文字物件(已棄用)"
#: pretix/static/pretixcontrol/js/ui/editor.js:901 #: pretix/static/pretixcontrol/js/ui/editor.js:901
#, fuzzy
#| msgid "Text object"
msgid "Text box" msgid "Text box"
msgstr "文字物件" msgstr "文字"
#: pretix/static/pretixcontrol/js/ui/editor.js:903 #: pretix/static/pretixcontrol/js/ui/editor.js:903
msgid "Barcode area" msgid "Barcode area"
@@ -656,11 +646,11 @@ msgstr "只選定"
#: pretix/static/pretixcontrol/js/ui/main.js:808 #: pretix/static/pretixcontrol/js/ui/main.js:808
msgid "Enter page number between 1 and %(max)s." msgid "Enter page number between 1 and %(max)s."
msgstr "" msgstr "輸入於 1 和 %(max)s 之間的頁號。"
#: pretix/static/pretixcontrol/js/ui/main.js:811 #: pretix/static/pretixcontrol/js/ui/main.js:811
msgid "Invalid page number." msgid "Invalid page number."
msgstr "" msgstr "頁號無效。"
#: pretix/static/pretixcontrol/js/ui/main.js:969 #: pretix/static/pretixcontrol/js/ui/main.js:969
msgid "Use a different name internally" msgid "Use a different name internally"
@@ -765,21 +755,18 @@ msgstr "價格"
#, javascript-format #, javascript-format
msgctxt "widget" msgctxt "widget"
msgid "Original price: %s" msgid "Original price: %s"
msgstr "" msgstr "原價: %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 "新價: %s"
#: pretix/static/pretixpresale/js/widget/widget.js:22 #: pretix/static/pretixpresale/js/widget/widget.js:22
#, fuzzy
#| msgctxt "widget"
#| msgid "Select %s"
msgctxt "widget" msgctxt "widget"
msgid "Select" msgid "Select"
msgstr "選擇%s" msgstr "選擇"
#: pretix/static/pretixpresale/js/widget/widget.js:23 #: pretix/static/pretixpresale/js/widget/widget.js:23
#, javascript-format #, javascript-format
@@ -821,13 +808,13 @@ msgstr "免費或自由"
#: pretix/static/pretixpresale/js/widget/widget.js:30 #: pretix/static/pretixpresale/js/widget/widget.js:30
msgctxt "widget" msgctxt "widget"
msgid "from %(currency)s %(price)s" msgid "from %(currency)s %(price)s"
msgstr "從%currencys %prices" msgstr "從 %(currency)s %(price)s"
#: pretix/static/pretixpresale/js/widget/widget.js:31 #: pretix/static/pretixpresale/js/widget/widget.js:31
#, javascript-format #, javascript-format
msgctxt "widget" msgctxt "widget"
msgid "Image of %s" msgid "Image of %s"
msgstr "" msgstr "%s的圖像"
#: pretix/static/pretixpresale/js/widget/widget.js:32 #: pretix/static/pretixpresale/js/widget/widget.js:32
msgctxt "widget" msgctxt "widget"
@@ -862,24 +849,19 @@ msgstr "僅限優惠券可用"
#: 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
#| msgid "Payment method unavailable"
msgctxt "widget" msgctxt "widget"
msgid "Not yet available" msgid "Not yet available"
msgstr "目前無法使用的付款方式" msgstr "目前無法使用"
#: 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 "不再可用"
#: pretix/static/pretixpresale/js/widget/widget.js:40 #: pretix/static/pretixpresale/js/widget/widget.js:40
#, fuzzy
#| msgctxt "widget"
#| msgid "currently available: %s"
msgctxt "widget" msgctxt "widget"
msgid "Currently not available" msgid "Currently not available"
msgstr "當前可用: %s" msgstr "目前不可用"
#: pretix/static/pretixpresale/js/widget/widget.js:42 #: pretix/static/pretixpresale/js/widget/widget.js:42
#, javascript-format #, javascript-format
@@ -968,20 +950,14 @@ msgid "Continue"
msgstr "繼續" msgstr "繼續"
#: pretix/static/pretixpresale/js/widget/widget.js:60 #: pretix/static/pretixpresale/js/widget/widget.js:60
#, fuzzy
#| msgctxt "widget"
#| msgid "Select variant %s"
msgctxt "widget" msgctxt "widget"
msgid "Show variants" msgid "Show variants"
msgstr "選擇類型 %s" msgstr "顯示不同的類型"
#: pretix/static/pretixpresale/js/widget/widget.js:61 #: pretix/static/pretixpresale/js/widget/widget.js:61
#, fuzzy
#| msgctxt "widget"
#| msgid "Select variant %s"
msgctxt "widget" msgctxt "widget"
msgid "Hide variants" msgid "Hide variants"
msgstr "選擇類型 %s" msgstr "隱藏不同的類型"
#: pretix/static/pretixpresale/js/widget/widget.js:62 #: pretix/static/pretixpresale/js/widget/widget.js:62
msgctxt "widget" msgctxt "widget"

View File

@@ -77,13 +77,6 @@ var strings = {
'FR': django.gettext('Fr'), 'FR': django.gettext('Fr'),
'SA': django.gettext('Sa'), 'SA': django.gettext('Sa'),
'SU': django.gettext('Su'), 'SU': django.gettext('Su'),
'MONDAY': django.gettext('Monday'),
'TUESDAY': django.gettext('Tuesday'),
'WEDNESDAY': django.gettext('Wednesday'),
'THURSDAY': django.gettext('Thursday'),
'FRIDAY': django.gettext('Friday'),
'SATURDAY': django.gettext('Saturday'),
'SUNDAY': django.gettext('Sunday'),
}, },
'months': { 'months': {
'01': django.gettext('January'), '01': django.gettext('January'),
@@ -997,10 +990,10 @@ Vue.component('pretix-widget-event-form', {
template: ('<div class="pretix-widget-event-form">' template: ('<div class="pretix-widget-event-form">'
// Back navigation // Back navigation
+ '<div class="pretix-widget-event-list-back" v-if="$root.events || $root.weeks || $root.days">' + '<div class="pretix-widget-event-list-back" v-if="$root.events || $root.weeks || $root.days">'
+ '<a :href="href" rel="back" @click.prevent.stop="back_to_list" v-if="!$root.subevent">&lsaquo; ' + '<a href="#" @click.prevent.stop="back_to_list" v-if="!$root.subevent">&lsaquo; '
+ strings['back_to_list'] + strings['back_to_list']
+ '</a>' + '</a>'
+ '<a :href="href" rel="back" @click.prevent.stop="back_to_list" v-if="$root.subevent">&lsaquo; ' + '<a href="#" @click.prevent.stop="back_to_list" v-if="$root.subevent">&lsaquo; '
+ strings['back_to_dates'] + strings['back_to_dates']
+ '</a>' + '</a>'
+ '</div>' + '</div>'
@@ -1104,9 +1097,6 @@ Vue.component('pretix-widget-event-form', {
this.$root.$off('focus_voucher_field', this.focus_voucher_field) this.$root.$off('focus_voucher_field', this.focus_voucher_field)
}, },
computed: { computed: {
href: function () {
return this.$root.event?.event_url || this.$root.parent_stack[this.$root.parent_stack.length-1];
},
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));
}, },
@@ -1150,11 +1140,6 @@ Vue.component('pretix-widget-event-form', {
back_to_list: function() { back_to_list: function() {
this.$root.target_url = this.$root.parent_stack.pop(); this.$root.target_url = this.$root.parent_stack.pop();
this.$root.error = null; this.$root.error = null;
if (!this.$root.subevent) {
// reset if we are not in a series
this.$root.name = null;
this.$root.frontpage_text = null;
}
this.$root.subevent = null; this.$root.subevent = null;
this.$root.offset = 0; this.$root.offset = 0;
this.$root.append_events = false; this.$root.append_events = false;
@@ -1166,12 +1151,6 @@ Vue.component('pretix-widget-event-form', {
} else { } else {
this.$root.view = "weeks"; this.$root.view = "weeks";
} }
var $el = this.$root.$el;
this.$root.$nextTick(function() {
// wait for redraw, then focus content element for better a11y
$el.focus();
});
}, },
calculate_buy_disabled: function() { calculate_buy_disabled: function() {
var i, j, k; var i, j, k;
@@ -1239,7 +1218,7 @@ Vue.component('pretix-widget-event-list-filter-form', {
}); });
Vue.component('pretix-widget-event-list-entry', { Vue.component('pretix-widget-event-list-entry', {
template: ('<a :href="href" :class="classObject" @click.prevent.stop="select">' template: ('<a :class="classObject" @click.prevent.stop="select">'
+ '<div class="pretix-widget-event-list-entry-name">{{ event.name }}</div>' + '<div class="pretix-widget-event-list-entry-name">{{ event.name }}</div>'
+ '<div class="pretix-widget-event-list-entry-date">{{ event.date_range }}</div>' + '<div class="pretix-widget-event-list-entry-date">{{ event.date_range }}</div>'
+ '<div class="pretix-widget-event-list-entry-location">{{ location }}</div>' // hidden by css for now, but + '<div class="pretix-widget-event-list-entry-location">{{ location }}</div>' // hidden by css for now, but
@@ -1262,10 +1241,7 @@ Vue.component('pretix-widget-event-list-entry', {
}, },
location: function () { location: function () {
return this.event.location.replace(/\s*\n\s*/g, ', '); return this.event.location.replace(/\s*\n\s*/g, ', ');
}, }
href: function () {
return this.event.event_url + (this.event.subevent ? this.event.subevent + '/' : '');
},
}, },
methods: { methods: {
select: function () { select: function () {
@@ -1282,7 +1258,7 @@ Vue.component('pretix-widget-event-list-entry', {
Vue.component('pretix-widget-event-list', { Vue.component('pretix-widget-event-list', {
template: ('<div class="pretix-widget-event-list">' template: ('<div class="pretix-widget-event-list">'
+ '<div class="pretix-widget-back" v-if="$root.weeks || $root.parent_stack.length > 0">' + '<div class="pretix-widget-back" v-if="$root.weeks || $root.parent_stack.length > 0">'
+ '<a :href="href" rel="prev" @click.prevent.stop="back_to_calendar">&lsaquo; ' + '<a href="#" @click.prevent.stop="back_to_calendar" role="button">&lsaquo; '
+ strings['back'] + strings['back']
+ '</a>' + '</a>'
+ '</div>' + '</div>'
@@ -1298,16 +1274,9 @@ Vue.component('pretix-widget-event-list', {
display_event_info: function () { display_event_info: function () {
return this.$root.display_event_info || (this.$root.display_event_info === null && this.$root.parent_stack.length > 0); return this.$root.display_event_info || (this.$root.display_event_info === null && this.$root.parent_stack.length > 0);
}, },
href: function () {
return this.$root.$weeks ? this.$root.event.event_url : this.$root.parent_stack[this.$root.parent_stack.length-1];
},
}, },
methods: { methods: {
back_to_calendar: function () { back_to_calendar: function () {
// make sure to always focus content element
this.$nextTick(function () {
this.$root.$el.focus();
});
this.$root.offset = 0; this.$root.offset = 0;
this.$root.append_events = false; this.$root.append_events = false;
if (this.$root.weeks) { if (this.$root.weeks) {
@@ -1332,7 +1301,7 @@ Vue.component('pretix-widget-event-list', {
}); });
Vue.component('pretix-widget-event-calendar-event', { Vue.component('pretix-widget-event-calendar-event', {
template: ('<a :href="href" :class="classObject" @click.prevent.stop="select" v-bind:aria-describedby="describedby">' template: ('<a :class="classObject" @click.prevent.stop="select">'
+ '<strong class="pretix-widget-event-calendar-event-name">' + '<strong class="pretix-widget-event-calendar-event-name">'
+ '{{ event.name }}' + '{{ event.name }}'
+ '</strong>' + '</strong>'
@@ -1340,13 +1309,9 @@ Vue.component('pretix-widget-event-calendar-event', {
+ '<div class="pretix-widget-event-calendar-event-availability" v-if="!event.continued && event.availability.text">{{ event.availability.text }}</div>' + '<div class="pretix-widget-event-calendar-event-availability" v-if="!event.continued && event.availability.text">{{ event.availability.text }}</div>'
+ '</a>'), + '</a>'),
props: { props: {
event: Object, event: Object
describedby: String,
}, },
computed: { computed: {
href: function () {
return this.event.event_url + (this.event.subevent ? this.event.subevent + '/' : '');
},
classObject: function () { classObject: function () {
var o = { var o = {
'pretix-widget-event-calendar-event': true 'pretix-widget-event-calendar-event': true
@@ -1372,11 +1337,11 @@ Vue.component('pretix-widget-event-calendar-event', {
Vue.component('pretix-widget-event-week-cell', { Vue.component('pretix-widget-event-week-cell', {
template: ('<div :class="classObject" @click.prevent.stop="selectDay">' template: ('<div :class="classObject" @click.prevent.stop="selectDay">'
+ '<div class="pretix-widget-event-calendar-day" v-if="day" :id="id">' + '<div class="pretix-widget-event-calendar-day" v-if="day">'
+ '{{ dayhead }}' + '{{ dayhead }}'
+ '</div>' + '</div>'
+ '<div class="pretix-widget-event-calendar-events" v-if="day">' + '<div class="pretix-widget-event-calendar-events" v-if="day">'
+ '<pretix-widget-event-calendar-event v-for="e in day.events" :event="e" :describedby="id"></pretix-widget-event-calendar-event>' + '<pretix-widget-event-calendar-event v-for="e in day.events" :event="e"></pretix-widget-event-calendar-event>'
+ '</div>' + '</div>'
+ '</div>'), + '</div>'),
props: { props: {
@@ -1402,9 +1367,6 @@ Vue.component('pretix-widget-event-week-cell', {
} }
}, },
computed: { computed: {
id: function () {
return this.day ? this.$root.html_id + '-' + this.day.date : '';
},
dayhead: function () { dayhead: function () {
if (!this.day) { if (!this.day) {
return; return;
@@ -1440,7 +1402,7 @@ Vue.component('pretix-widget-event-week-cell', {
Vue.component('pretix-widget-event-calendar-cell', { Vue.component('pretix-widget-event-calendar-cell', {
template: ('<td :class="classObject" @click.prevent.stop="selectDay">' template: ('<td :class="classObject" @click.prevent.stop="selectDay">'
+ '<div class="pretix-widget-event-calendar-day" v-if="day" v-bind:aria-label="date">' + '<div class="pretix-widget-event-calendar-day" v-if="day">'
+ '{{ daynum }}' + '{{ daynum }}'
+ '</div>' + '</div>'
+ '<div class="pretix-widget-event-calendar-events" v-if="day">' + '<div class="pretix-widget-event-calendar-events" v-if="day">'
@@ -1476,9 +1438,6 @@ Vue.component('pretix-widget-event-calendar-cell', {
} }
return this.day.date.substr(8); return this.day.date.substr(8);
}, },
date: function () {
return this.day ? (new Date(this.day.date)).toLocaleDateString() : '';
},
classObject: function () { classObject: function () {
var o = {}; var o = {};
if (this.day && this.day.events.length > 0) { if (this.day && this.day.events.length > 0) {
@@ -1536,26 +1495,26 @@ Vue.component('pretix-widget-event-calendar', {
// Calendar navigation // Calendar navigation
+ '<div class="pretix-widget-event-calendar-head">' + '<div class="pretix-widget-event-calendar-head">'
+ '<a class="pretix-widget-event-calendar-previous-month" :href="prev_href" @click.prevent.stop="prevmonth">&laquo; ' + '<a class="pretix-widget-event-calendar-previous-month" href="#" @click.prevent.stop="prevmonth" role="button">&laquo; '
+ strings['previous_month'] + strings['previous_month']
+ '</a> ' + '</a> '
+ '<strong>{{ monthname }}</strong> ' + '<strong>{{ monthname }}</strong> '
+ '<a class="pretix-widget-event-calendar-next-month" :href="next_href" @click.prevent.stop="nextmonth">' + '<a class="pretix-widget-event-calendar-next-month" href="#" @click.prevent.stop="nextmonth" role="button">'
+ strings['next_month'] + strings['next_month']
+ ' &raquo;</a>' + ' &raquo;</a>'
+ '</div>' + '</div>'
// Calendar // Calendar
+ '<table class="pretix-widget-event-calendar-table" :id="id" tabindex="0" v-bind:aria-label="monthname">' + '<table class="pretix-widget-event-calendar-table">'
+ '<thead>' + '<thead>'
+ '<tr>' + '<tr>'
+ '<th aria-label="' + strings['days']['MONDAY'] + '">' + strings['days']['MO'] + '</th>' + '<th>' + strings['days']['MO'] + '</th>'
+ '<th aria-label="' + strings['days']['TUESDAY'] + '">' + strings['days']['TU'] + '</th>' + '<th>' + strings['days']['TU'] + '</th>'
+ '<th aria-label="' + strings['days']['WEDNESDAY'] + '">' + strings['days']['WE'] + '</th>' + '<th>' + strings['days']['WE'] + '</th>'
+ '<th aria-label="' + strings['days']['THURSDAY'] + '">' + strings['days']['TH'] + '</th>' + '<th>' + strings['days']['TH'] + '</th>'
+ '<th aria-label="' + strings['days']['FRIDAY'] + '">' + strings['days']['FR'] + '</th>' + '<th>' + strings['days']['FR'] + '</th>'
+ '<th aria-label="' + strings['days']['SATURDAY'] + '">' + strings['days']['SA'] + '</th>' + '<th>' + strings['days']['SA'] + '</th>'
+ '<th aria-label="' + strings['days']['SUNDAY'] + '">' + strings['days']['SU'] + '</th>' + '<th>' + strings['days']['SU'] + '</th>'
+ '</tr>' + '</tr>'
+ '</thead>' + '</thead>'
+ '<tbody>' + '<tbody>'
@@ -1569,41 +1528,7 @@ Vue.component('pretix-widget-event-calendar', {
}, },
monthname: function () { monthname: function () {
return strings['months'][this.$root.date.substr(5, 2)] + ' ' + this.$root.date.substr(0, 4); return strings['months'][this.$root.date.substr(5, 2)] + ' ' + this.$root.date.substr(0, 4);
}, }
month: function () {
return parseInt(this.$root.date.substr(5, 2));
},
year: function () {
return parseInt(this.$root.date.substr(0, 4));
},
prev_month_date: function () {
var pm = this.month - 1;
return String(this.year - (pm ? 0 : 1)) + "-" + padNumber((pm || 12), 2);
},
next_month_date: function () {
var pm = this.month + 1;
return String(this.year + (pm > 12 ? 1 : 0)) + "-" + padNumber(pm % 12, 2);
},
id: function () {
return this.$root.html_id + "-event-calendar-table";
},
base_href: function () {
return this.$root.event?.event_url || this.$root.target_url;
},
prev_href: function () {
return [
this.base_href,
'?style=calendar&date=',
this.prev_month_date
].join('');
},
next_href: function () {
return [
this.base_href,
'?style=calendar&date=',
this.next_month_date
].join('');
},
}, },
methods: { methods: {
back_to_list: function () { back_to_list: function () {
@@ -1613,14 +1538,28 @@ Vue.component('pretix-widget-event-calendar', {
this.$root.frontpage_text = null; this.$root.frontpage_text = null;
}, },
prevmonth: function () { prevmonth: function () {
this.$root.date = this.prev_month_date + "-01"; var curMonth = parseInt(this.$root.date.substr(5, 2));
var curYear = parseInt(this.$root.date.substr(0, 4));
curMonth--;
if (curMonth < 1) {
curMonth = 12;
curYear--;
}
this.$root.date = String(curYear) + "-" + padNumber(curMonth, 2) + "-01";
this.$root.loading++; this.$root.loading++;
this.$root.reload({focus: '#'+this.id}); this.$root.reload();
}, },
nextmonth: function () { nextmonth: function () {
this.$root.date = this.next_month_date + "-01"; var curMonth = parseInt(this.$root.date.substr(5, 2));
var curYear = parseInt(this.$root.date.substr(0, 4));
curMonth++;
if (curMonth > 12) {
curMonth = 1;
curYear++;
}
this.$root.date = String(curYear) + "-" + padNumber(curMonth, 2) + "-01";
this.$root.loading++; this.$root.loading++;
this.$root.reload({focus: '#'+this.id}); this.$root.reload();
} }
}, },
}); });
@@ -1645,17 +1584,17 @@ Vue.component('pretix-widget-event-week-calendar', {
// Calendar navigation // Calendar navigation
+ '<div class="pretix-widget-event-description" v-if="$root.frontpage_text && display_event_info" v-html="$root.frontpage_text"></div>' + '<div class="pretix-widget-event-description" v-if="$root.frontpage_text && display_event_info" v-html="$root.frontpage_text"></div>'
+ '<div class="pretix-widget-event-calendar-head">' + '<div class="pretix-widget-event-calendar-head">'
+ '<a class="pretix-widget-event-calendar-previous-month" :href="prev_href" @click.prevent.stop="prevweek" role="button">&laquo; ' + '<a class="pretix-widget-event-calendar-previous-month" href="#" @click.prevent.stop="prevweek" role="button">&laquo; '
+ strings['previous_week'] + strings['previous_week']
+ '</a> ' + '</a> '
+ '<strong>{{ weekname }}</strong> ' + '<strong>{{ weekname }}</strong> '
+ '<a class="pretix-widget-event-calendar-next-month" :href="next_href" @click.prevent.stop="nextweek" role="button">' + '<a class="pretix-widget-event-calendar-next-month" href="#" @click.prevent.stop="nextweek" role="button">'
+ strings['next_week'] + strings['next_week']
+ ' &raquo;</a>' + ' &raquo;</a>'
+ '</div>' + '</div>'
// Actual calendar // Actual calendar
+ '<div class="pretix-widget-event-week-table" :id="id" tabindex="0" v-bind:aria-label="weekname">' + '<div class="pretix-widget-event-week-table">'
+ '<div class="pretix-widget-event-week-col" v-for="d in $root.days">' + '<div class="pretix-widget-event-week-col" v-for="d in $root.days">'
+ '<pretix-widget-event-week-cell :day="d">' + '<pretix-widget-event-week-cell :day="d">'
+ '</pretix-widget-event-week-cell>' + '</pretix-widget-event-week-cell>'
@@ -1668,48 +1607,10 @@ Vue.component('pretix-widget-event-week-calendar', {
display_event_info: function () { display_event_info: function () {
return this.$root.display_event_info || (this.$root.display_event_info === null && this.$root.parent_stack.length > 0); return this.$root.display_event_info || (this.$root.display_event_info === null && this.$root.parent_stack.length > 0);
}, },
week: function () {
return this.$root.week[1];
},
year: function () {
return this.$root.week[0];
},
weekname: function () { weekname: function () {
return this.week + ' / ' + this.year; var curWeek = this.$root.week[1];
}, var curYear = this.$root.week[0];
prev_week_date: function () { return curWeek + ' / ' + curYear;
var w = this.week - 1;
if (!w) {
return (this.year - 1) + "-W" + getISOWeeks(this.year - 1);
}
return this.year + "-W" + w;
},
next_week_date: function () {
var w = this.week + 1;
if (w > getISOWeeks(this.year)) {
return String(this.year + 1) + "-W1";
}
return String(this.year) + "-W" + w;
},
id: function () {
return this.$root.html_id + "-event-week-table";
},
base_href: function () {
return this.$root.event?.event_url || this.$root.target_url;
},
prev_href: function () {
return [
this.base_href,
'?style=week&date=',
this.prev_week_date
].join('');
},
next_href: function () {
return [
this.base_href,
'?style=week&date=',
this.next_week_date
].join('');
}, },
}, },
methods: { methods: {
@@ -1720,20 +1621,34 @@ Vue.component('pretix-widget-event-week-calendar', {
this.$root.view = "events"; this.$root.view = "events";
}, },
prevweek: function () { prevweek: function () {
this.$root.week = this.prev_week_date.split("-W"); var curWeek = this.$root.week[1];
var curYear = this.$root.week[0];
curWeek--;
if (curWeek < 1) {
curYear--;
curWeek = getISOWeeks(curYear);
}
this.$root.week = [curYear, curWeek];
this.$root.loading++; this.$root.loading++;
this.$root.reload({focus: '#'+this.id}); this.$root.reload();
}, },
nextweek: function () { nextweek: function () {
this.$root.week = this.next_week_date.split("-W"); var curWeek = this.$root.week[1];
var curYear = this.$root.week[0];
curWeek++;
if (curWeek > getISOWeeks(curYear)) {
curWeek = 1;
curYear++;
}
this.$root.week = [curYear, curWeek];
this.$root.loading++; this.$root.loading++;
this.$root.reload({focus: '#'+this.id}); this.$root.reload();
} }
}, },
}); });
Vue.component('pretix-widget', { Vue.component('pretix-widget', {
template: ('<div class="pretix-widget-wrapper" ref="wrapper" tabindex="0" role="article" v-bind:aria-label="$root.name">' template: ('<div class="pretix-widget-wrapper" ref="wrapper">'
+ '<div :class="classObject">' + '<div :class="classObject">'
+ shared_loading_fragment + shared_loading_fragment
+ '<div class="pretix-widget-error-message" v-if="$root.error && $root.view !== \'event\'">{{ $root.error }}</div>' + '<div class="pretix-widget-error-message" v-if="$root.error && $root.view !== \'event\'">{{ $root.error }}</div>'
@@ -1842,7 +1757,7 @@ var shared_root_methods = {
} }
}); });
}, },
reload: function (opt = {}) { reload: function () {
var url; var url;
if (this.$root.is_button) { if (this.$root.is_button) {
return; return;
@@ -1959,15 +1874,6 @@ var shared_root_methods = {
// If we're on desktop and someone selects a seating-only event in a calendar, let's open it right away, // If we're on desktop and someone selects a seating-only event in a calendar, let's open it right away,
// but only if the person didn't close it before. // but only if the person didn't close it before.
root.startseating() root.startseating()
} else {
// make sure to only move focus to content element when it had focus before the reload/click
// this is needed because reload is also called on initial load and we do not want to move focus on initial load
if (root.$el.contains(document.activeElement)) {
root.$nextTick(function() {
// wait for redraw, then focus content element for better a11y
(opt.focus ? document.querySelector(opt.focus) : root.$el).focus();
});
}
} }
}, function (error) { }, function (error) {
root.categories = []; root.categories = [];