diff --git a/aleksis/apps/paweljong/data_checks.py b/aleksis/apps/paweljong/data_checks.py
index 9fd310c01cce2e315167e49aa800825fcdb0eb1d..b13878e94e573f29059fc61d49286fcbbf2fd0b9 100644
--- a/aleksis/apps/paweljong/data_checks.py
+++ b/aleksis/apps/paweljong/data_checks.py
@@ -29,7 +29,9 @@ class EventMembersSyncDataCheck(DataCheck):
 
         async_events = []
         for event in Event.objects.all():
-            if set(event.linked_group.members.values_list("id", flat=True)) != set(event.registrations.filter(retracted=False).values_list("person", flat=True)):
+            if set(event.linked_group.members.values_list("id", flat=True)) != set(
+                event.registrations.filter(retracted=False).values_list("person", flat=True)
+            ):
                 async_events.append(event)
 
         for event in async_events:
diff --git a/aleksis/apps/paweljong/forms.py b/aleksis/apps/paweljong/forms.py
index 4376595e942efc0c56ee64c4335c3e03fafc36b9..a79004ab5225a1ce13d0005a15c799abc715b9f7 100644
--- a/aleksis/apps/paweljong/forms.py
+++ b/aleksis/apps/paweljong/forms.py
@@ -62,7 +62,13 @@ class EditEventForm(ExtensibleForm):
             Row("display_name", "slug", "description"),
             Row("place", "published"),
             Fieldset(_("Date data"), Row("date_event", "date_registration", "date_retraction")),
-            Fieldset(_("Event details"), Row("cost", "max_participants"), "information", "additional_fields", "contact_information_visible_fields"),
+            Fieldset(
+                _("Event details"),
+                Row("cost", "min_cost", "max_cost", "max_participants"),
+                "information",
+                "additional_fields",
+                "contact_information_visible_fields",
+            ),
             Fieldset(_("Terms"), "terms"),
             Fieldset(_("Info mailings"), "info_mailings"),
         ),
@@ -81,6 +87,8 @@ class EditEventForm(ExtensibleForm):
             "date_registration",
             "date_retraction",
             "cost",
+            "min_cost",
+            "max_cost",
             "max_participants",
             "terms",
             "information",
@@ -106,16 +114,17 @@ class EditEventForm(ExtensibleForm):
                 attrs={"data-minimum-input-length": 0, "class": "browser-default"},
             ),
             "contact_information_visible_fields": ArrayFieldCheckboxSelectMultiple(
-            choices=[
-                ("date_of_birth", _("Date of birth")),
-                ("sex", _("Sex")),
-                ("street", _("Street")),
-                ("housenumber", _("House number")),
-                ("postal_code", _("Postal code")),
-                ("place", _("Place")),
-                ("mobile_number", _("Mobile number")),
-                ("school_details", _("School details")),
-            ])
+                choices=[
+                    ("date_of_birth", _("Date of birth")),
+                    ("sex", _("Sex")),
+                    ("street", _("Street")),
+                    ("housenumber", _("House number")),
+                    ("postal_code", _("Postal code")),
+                    ("place", _("Place")),
+                    ("mobile_number", _("Mobile number")),
+                    ("school_details", _("School details")),
+                ]
+            ),
         }
 
 
@@ -216,10 +225,12 @@ class RegisterEventContactDetails(ExtensibleForm):
 
     @classmethod
     def clear_layout(cls):
-        cls.base_layout = [Fieldset(
-            _("Name"),
-            Row("first_name", "last_name"),
-        )]
+        cls.base_layout = [
+            Fieldset(
+                _("Name"),
+                Row("first_name", "last_name"),
+            )
+        ]
         cls.layout = Layout(*cls.base_layout)
 
     def __init__(self, event, *args, **kwargs):
@@ -237,7 +248,10 @@ class RegisterEventContactDetails(ExtensibleForm):
             disabled=True,
         )
 
-        if "date_of_birth" in event.contact_information_visible_fields or "sex" in event.contact_information_visible_fields:
+        if (
+            "date_of_birth" in event.contact_information_visible_fields
+            or "sex" in event.contact_information_visible_fields
+        ):
             active_fields = []
             if "date_of_birth" in event.contact_information_visible_fields:
                 active_fields.append("date_of_birth")
@@ -258,7 +272,12 @@ class RegisterEventContactDetails(ExtensibleForm):
             node = Fieldset(_("Personal information"), *active_fields)
             self.add_node_to_layout(node, add_fields=False)
 
-        if "street" in event.contact_information_visible_fields or "housenumber" in event.contact_information_visible_fields or "postal_code" in event.contact_information_visible_fields or "place" in event.contact_information_visible_fields:
+        if (
+            "street" in event.contact_information_visible_fields
+            or "housenumber" in event.contact_information_visible_fields
+            or "postal_code" in event.contact_information_visible_fields
+            or "place" in event.contact_information_visible_fields
+        ):
             active_fields = []
             if "street" in event.contact_information_visible_fields:
                 active_fields.append("street")
@@ -281,7 +300,6 @@ class RegisterEventContactDetails(ExtensibleForm):
                     label=_("Place"),
                 )
             self.add_node_to_layout(Fieldset(_("Address data"), *active_fields), add_fields=False)
-                
 
         self.fields["email"] = forms.EmailField(
             label=_("Email address"),
@@ -304,7 +322,7 @@ class RegisterEventContactDetails(ExtensibleForm):
             contact_details_fields = ["mobile_number", "email"]
         else:
             contact_details_fields = ["email"]
-        
+
         node = Fieldset(_("Contact details"), *contact_details_fields)
         self.add_node_to_layout(node, add_fields=False)
 
@@ -601,6 +619,7 @@ class EventCheckpointForm(forms.Form):
         widget=forms.HiddenInput(),
     )
 
+
 class RegisterAccountForm(SignupForm, ExtensibleForm):
     """Form to register new user accounts."""
 
diff --git a/aleksis/apps/paweljong/frontend/components/event/Checkpoint.vue b/aleksis/apps/paweljong/frontend/components/event/Checkpoint.vue
index 04ca3f8f02220b3b903e42aa88949aaac8877521..b8262de7c99c780bee3c4f482e110da6813412e9 100644
--- a/aleksis/apps/paweljong/frontend/components/event/Checkpoint.vue
+++ b/aleksis/apps/paweljong/frontend/components/event/Checkpoint.vue
@@ -1,116 +1,126 @@
-<template><div>
-  <v-form
-    ref="form"
-  >
-    <v-text-field
-      v-model="comment"
-      label="Comment"
-      required
-    ></v-text-field>
+<template>
+  <div>
+    <v-form ref="form">
+      <v-text-field v-model="comment" label="Comment" required></v-text-field>
 
-    <v-btn
-      color="success"
-      class="mr-4"
-      @click="startScan"
-    >
-      Check in
-    </v-btn>
-  </v-form>
-  <v-card class="mx-auto">
-    <v-alert :color="status.color">
-      {{ status.message }}
-    </v-alert>
-  </v-card>
-  <v-card class="mx-auto">
-    <v-alert v-for="(checkIn, i) in checkIns" :key="i" :color="checkIn.color">
-      {{ checkIn.message }}
-    </v-alert>
-  </v-card>
-</div></template>
+      <v-btn color="success" class="mr-4" @click="startScan"> Check in </v-btn>
+    </v-form>
+    <v-card class="mx-auto">
+      <v-alert :color="status.color">
+        {{ status.message }}
+      </v-alert>
+    </v-card>
+    <v-card class="mx-auto">
+      <v-alert v-for="(checkIn, i) in checkIns" :key="i" :color="checkIn.color">
+        {{ checkIn.message }}
+      </v-alert>
+    </v-card>
+  </div>
+</template>
 
 <script>
-  import gql from "graphql-tag";
+import gql from "graphql-tag";
 
-  export default {
-    data () {
-      return {
-        comment: "",
-        status: {
-          "color": "blue-grey",
-          "message": "Scan not started",
-        },
-        checkIns: new Array(),
-      }
-    },
-    methods: {
-      checkIn (data, statusObject) {
-        this.$apollo.mutate({
-          mutation: gql`mutation ($eventSlug:String!, $personId:Int!, $comment:String!, $lat:Int, $lon:Int) {
-            checkpointCheckIn(eventSlug:$eventSlug, personId:$personId, comment:$comment, lat:$lat, lon:$lon){
-              checkpoint {
-                id
+export default {
+  data() {
+    return {
+      comment: "",
+      status: {
+        color: "blue-grey",
+        message: "Scan not started",
+      },
+      checkIns: new Array(),
+    };
+  },
+  methods: {
+    checkIn(data, statusObject) {
+      this.$apollo
+        .mutate({
+          mutation: gql`
+            mutation (
+              $eventSlug: String!
+              $personId: Int!
+              $comment: String!
+              $lat: Int
+              $lon: Int
+            ) {
+              checkpointCheckIn(
+                eventSlug: $eventSlug
+                personId: $personId
+                comment: $comment
+                lat: $lat
+                lon: $lon
+              ) {
+                checkpoint {
+                  id
+                }
               }
             }
-          }`,
+          `,
           variables: {
-            "eventSlug": this.$route.params.slug,
-            "personId": data.id,
-            "comment": this.comment
-	  }
-	}).then((data) => {
+            eventSlug: this.$route.params.slug,
+            personId: data.id,
+            comment: this.comment,
+          },
+        })
+        .then((data) => {
           statusObject.message = `Checked in ${data.user.username}`;
           statusObject.color = "green";
-	}).catch((error) => {
+        })
+        .catch((error) => {
           statusObject.message = `Error checking in ${data.user.username}`;
           statusObject.color = "red";
-	})
-      },
-      startScan() {
-        try {
-          const ndef = new NDEFReader();
-          ndef.scan().then(() => {
-            this.status.color = "blue-grey";
-            this.status.message = "Scanning...";
-            ndef.addEventListener("readingerror", (err) => {
-              // FIXME use semantic colors/types
-              this.status.color = "red";
-              this.status.message = err;
-            });
-            ndef.addEventListener("reading", (e) => {
-              const message = e.message;
-              const checkInStatus = {
-                "color": "blue-grey",
-                "message": "Decoding...",
-              };
-              this.checkIns.unshift(checkInStatus);
-              for (const record of message.records) {
-                if (record.recordType !== "url") {
-                  checkInStatus.message = "Found non-URL";
-                  continue;
-                }
-                const decoder = new TextDecoder();
-                const url = decoder.decode(record.data);
-                // FIXME use configured base URL here
-                if (!url.startsWith("https://ticdesk.teckids.org/o/")) {
-                  checkInStatus.message = "Found invalid URL";
-                  checkInStatus.color = "red";
-                  break;
-                }
-                fetch(url).then((res) => res.json()).then((data) => {
+        });
+    },
+    startScan() {
+      try {
+        const ndef = new NDEFReader();
+        ndef.scan().then(() => {
+          this.status.color = "blue-grey";
+          this.status.message = "Scanning...";
+          ndef.addEventListener("readingerror", (err) => {
+            // FIXME use semantic colors/types
+            this.status.color = "red";
+            this.status.message = err;
+          });
+          ndef.addEventListener("reading", (e) => {
+            const message = e.message;
+            const checkInStatus = {
+              color: "blue-grey",
+              message: "Decoding...",
+            };
+            this.checkIns.unshift(checkInStatus);
+            for (const record of message.records) {
+              if (record.recordType !== "url") {
+                checkInStatus.message = "Found non-URL";
+                continue;
+              }
+              const decoder = new TextDecoder();
+              const url = decoder.decode(record.data);
+              // FIXME use configured base URL here
+              if (!url.startsWith("https://ticdesk.teckids.org/o/")) {
+                checkInStatus.message = "Found invalid URL";
+                checkInStatus.color = "red";
+                break;
+              }
+              fetch(url)
+                .then((res) => res.json())
+                .then((data) => {
                   checkInStatus.message = `Checking in ${data.user.username}...`;
                   checkInStatus.color = "orange";
                   this.checkIn(data, checkInStatus);
-                }).catch((error) => {
+                })
+                .catch((error) => {
                   checkInStatus.message = "Error retrieving or decoding data";
                   checkInStatus.color = "red";
                 });
-              }
-            });
+            }
           });
-        } catch {
-          console.log("Error");
-        }
+        });
+      } catch {
+        console.log("Error");
       }
     },
-  }
+  },
+};
 </script>
diff --git a/aleksis/apps/paweljong/frontend/components/event/events.graphql b/aleksis/apps/paweljong/frontend/components/event/events.graphql
new file mode 100644
index 0000000000000000000000000000000000000000..7422e6d6322e316d28116824f06dfa5421e8d500
--- /dev/null
+++ b/aleksis/apps/paweljong/frontend/components/event/events.graphql
@@ -0,0 +1,42 @@
+query eventById($id: ID!) {
+  eventById(id: $id) {
+    id
+    displayName
+    description
+    cost
+    minCost
+    maxCost
+    terms {
+      id
+    }
+    additionalFields {
+      id
+    }
+  }
+}
+
+query eventBySlug($slug: String!) {
+  event: eventBySlug(slug: $slug) {
+    id
+    displayName
+    description
+    cost
+    minCost
+    maxCost
+    dateRetraction
+    terms {
+      id
+      title
+      term
+      confirmationText
+    }
+    additionalFields {
+      id
+      title
+      fieldType
+      required
+      helpText
+    }
+    contactInformationVisibleFields
+  }
+}
diff --git a/aleksis/apps/paweljong/frontend/components/event_additional_field/EventAdditionalFieldList.vue b/aleksis/apps/paweljong/frontend/components/event_additional_field/EventAdditionalFieldList.vue
index a0e2da9f0a75f48012299ef4c952d68374be504b..a43fa9db4fdbc882df4f24f26bb75a3d277b23db 100644
--- a/aleksis/apps/paweljong/frontend/components/event_additional_field/EventAdditionalFieldList.vue
+++ b/aleksis/apps/paweljong/frontend/components/event_additional_field/EventAdditionalFieldList.vue
@@ -80,7 +80,9 @@ export default {
           value: "fieldType",
         },
         {
-          text: this.$t("paweljong.event_additional_field.required.form_field_name"),
+          text: this.$t(
+            "paweljong.event_additional_field.required.form_field_name",
+          ),
           value: "required",
         },
         {
@@ -104,7 +106,7 @@ export default {
   },
   methods: {
     getCreateData(item) {
-      let {fieldTitle: _, ...filteredObj} = item;
+      let { fieldTitle: _, ...filteredObj } = item;
       return {
         ...filteredObj,
         required: !!item.required,
@@ -113,7 +115,7 @@ export default {
     },
     getPatchData(item) {
       if ("required" in item) {
-        let {fieldTitle: _, ...filteredObj} = item;
+        let { fieldTitle: _, ...filteredObj } = item;
         return {
           ...filteredObj,
           required: !!item.required,
diff --git a/aleksis/apps/paweljong/frontend/components/event_additional_field/eventAdditionalFieldMixin.js b/aleksis/apps/paweljong/frontend/components/event_additional_field/eventAdditionalFieldMixin.js
new file mode 100644
index 0000000000000000000000000000000000000000..c63724f460d003a341cefc26f1cb1c41af9570b5
--- /dev/null
+++ b/aleksis/apps/paweljong/frontend/components/event_additional_field/eventAdditionalFieldMixin.js
@@ -0,0 +1,48 @@
+/**
+ * Vue mixin containing code getting the respective vue component for event additional fields.
+ *
+ * Only used by event registration form, but factored out for readability.
+ */
+
+// TODO: add some more rule checking (e.g. for emails)
+
+import DateField from "aleksis.core/components/generic/forms/DateField.vue";
+import DateTimeField from "aleksis.core/components/generic/forms/DateTimeField.vue";
+import TimeField from "aleksis.core/components/generic/forms/TimeField.vue";
+import PositiveSmallIntegerField from "aleksis.core/components/generic/forms/PositiveSmallIntegerField.vue";
+
+const eventAdditionalFieldMixin = {
+  methods: {
+    fieldComponentForAdditionalField(additionalField) {
+      if (
+        additionalField.fieldType == "CHARFIELD" ||
+        additionalField.fieldType == "EMAILFIELD" ||
+        additionalField.fieldType == "URLFIELD" ||
+        additionalField.fieldType == "GENERICIPADDRESSFIELD"
+      ) {
+        return "v-text-field";
+      } else if (
+        additionalField.fieldType == "BOOLEANFIELD" ||
+        additionalField.fieldType == "NULLBOOLEANFIELD"
+      ) {
+        // TODO: implement proper null boolean input
+        return "v-checkbox";
+      } else if (additionalField.fieldType == "DATEFIELD") {
+        return DateField;
+      } else if (additionalField.fieldType == "DATETIMEFIELD") {
+        return DateTimeField;
+      } else if (additionalField.fieldType == "TIMEFIELD") {
+        return TimeField;
+      } else if (
+        additionalField.fieldType == "INTEGERFIELD" ||
+        additionalField.fieldType == "DECIMALFIELD"
+      ) {
+        // TODO: implement proper decimal input
+        return PositiveSmallIntegerField;
+      }
+      return "";
+    },
+  },
+};
+
+export default eventAdditionalFieldMixin;
diff --git a/aleksis/apps/paweljong/frontend/components/event_registration/EventRegistrationForm.vue b/aleksis/apps/paweljong/frontend/components/event_registration/EventRegistrationForm.vue
new file mode 100644
index 0000000000000000000000000000000000000000..5ea4d8b3d7d8d1fee3d3b2ed1c5d2dd04a847c3b
--- /dev/null
+++ b/aleksis/apps/paweljong/frontend/components/event_registration/EventRegistrationForm.vue
@@ -0,0 +1,1321 @@
+<script setup>
+import ControlRow from "aleksis.core/components/generic/multi_step/ControlRow.vue";
+import DateField from "aleksis.core/components/generic/forms/DateField.vue";
+import PositiveSmallIntegerField from "aleksis.core/components/generic/forms/PositiveSmallIntegerField.vue";
+import SexSelect from "aleksis.core/components/generic/forms/SexSelect.vue";
+
+import PrimaryActionButton from "aleksis.core/components/generic/buttons/PrimaryActionButton.vue";
+import SecondaryActionButton from "aleksis.core/components/generic/buttons/SecondaryActionButton.vue";
+</script>
+
+<template>
+  <div>
+    <div v-if="event && eventRegistrationSent">
+      <v-card>
+        <v-card-title>
+          <v-icon class="mr-2" color="success">mdi-check-circle-outline</v-icon>
+          {{ $t("paweljong.event_registration.form.submitted.thank_you") }}
+        </v-card-title>
+        <v-card-text class="text-body-1 black--text">
+          {{
+            $t(
+              "paweljong.event_registration.form.submitted.submitted_successfully",
+            )
+          }}
+          <template v-if="doPaymentToken">
+            {{
+              $t(
+                "paweljong.event_registration.form.submitted.payment_text",
+              )
+            }}
+          </template>
+        </v-card-text>
+        <v-card-actions v-if="doPaymentToken">
+          <primary-action-button :to="{ name: 'tezor.doPayment', params: { token: doPaymentToken } }" i18n-key="paweljong.event_registration.form.submitted.payment_button"/>
+        </v-card-actions>
+      </v-card>
+    </div>
+    <div v-else-if="event">
+      <h1 class="text-h4 mb-4">{{ event.displayName }}</h1>
+      <v-row
+        v-if="currentParticipantHelpText || currentGuardianHelpText"
+        class="mb-2"
+      >
+        <v-col
+          v-if="currentParticipantHelpText"
+          cols="12"
+          :md="currentGuardianHelpText ? '6' : '12'"
+        >
+          <v-card>
+            <v-card-title>
+              {{
+                $t("paweljong.event_registration.form.help_text.participant")
+              }}
+            </v-card-title>
+            <v-card-text>{{ currentParticipantHelpText }}</v-card-text>
+          </v-card>
+        </v-col>
+        <v-col
+          v-if="currentGuardianHelpText"
+          cols="12"
+          :md="currentParticipantHelpText ? '6' : '12'"
+        >
+          <v-card>
+            <v-card-title>
+              {{ $t("paweljong.event_registration.form.help_text.guardian") }}
+            </v-card-title>
+            <v-card-text>{{ currentGuardianHelpText }}</v-card-text>
+          </v-card>
+        </v-col>
+      </v-row>
+      <v-stepper v-model="step" class="mb-4">
+        <v-stepper-header class="flex-nowrap">
+          <template v-for="(stepChoice, index) in steps">
+            <v-stepper-step
+              :complete="step > index + 1"
+              :step="index + 1"
+              :key="stepChoice.name"
+            >
+              {{ $t(stepChoice.titleKey) }}
+            </v-stepper-step>
+            <v-divider v-if="index + 1 < steps.length"></v-divider>
+          </template>
+        </v-stepper-header>
+        <v-stepper-items>
+          <v-stepper-content
+            v-if="isStepEnabled('email')"
+            :step="getStepIndex('email')"
+          >
+            <h2 class="text-h6 mb-4">{{ $t(getStepTitleKey("email")) }}</h2>
+            <div class="mb-4">
+              <v-card-text>
+                {{
+                  $t(
+                    "paweljong.event_registration.form.steps.email.choose_mode.help_text",
+                  )
+                }}
+              </v-card-text>
+              <v-tabs
+                v-model="emailMode"
+                :grow="!$vuetify.breakpoint.mdAndDown"
+                optional
+                show-arrows
+              >
+                <v-tab style="max-width: 50vw" class="primary--text">
+                  {{
+                    $t(
+                      "paweljong.event_registration.form.steps.email.choose_mode.continue_aleksis",
+                    )
+                  }}
+                </v-tab>
+                <v-tab  style="max-width: 50vw" class="primary--text">
+                  {{
+                    $t(
+                      "paweljong.event_registration.form.steps.email.choose_mode.continue_own",
+                    )
+                  }}
+                </v-tab>
+              </v-tabs>
+              <v-form v-model="validationStatuses['email']">
+                <v-tabs-items v-model="emailMode">
+                  <v-tab-item>
+                    <v-row class="mt-4">
+                      <v-col cols="12" md="6">
+                        <div aria-required="true">
+                          <v-text-field
+                            outlined
+                            v-model="data.email.localPart"
+                            :label="
+                              $t(
+                                'postbuero.mail_addresses.data_table.local_part',
+                              )
+                            "
+                            :rules="
+                              emailMode === 0
+                                ? $rules().required.build(rules.emailLocalPart)
+                                : []
+                            "
+                            required
+                          ></v-text-field>
+                        </div>
+                      </v-col>
+                      <v-col cols="12" md="6">
+                        <div aria-required="true">
+                          <v-autocomplete
+                            outlined
+                            hide-no-data
+                            :items="mailDomains"
+                            item-text="domain"
+                            item-value="id"
+                            :loading="$apollo.queries.mailDomains.loading"
+                            prepend-icon="mdi-at"
+                            v-model="data.email.domain"
+                            :label="
+                              $t('postbuero.mail_addresses.data_table.domain')
+                            "
+                            required
+                            :rules="
+                              emailMode === 0 ? $rules().required.build() : []
+                            "
+                          />
+                        </div>
+                      </v-col>
+                    </v-row>
+                  </v-tab-item>
+                  <v-tab-item>
+                    <v-row class="mt-4">
+                      <v-col cols="12" md="6">
+                        <div aria-required="true">
+                          <v-text-field
+                            outlined
+                            v-model="data.user.email"
+                            :label="
+                              $t(
+                                'paweljong.event_registration.form.steps.email.fields.email.label',
+                              )
+                            "
+                            required
+                            :rules="
+                              emailMode === 1
+                                ? $rules().required.build(rules.email)
+                                : []
+                            "
+                            prepend-icon="mdi-email-outline"
+                          ></v-text-field>
+                        </div>
+                      </v-col>
+                      <v-col cols="12" md="6">
+                        <div aria-required="true">
+                          <v-text-field
+                            outlined
+                            v-model="data.user.confirmEmail"
+                            :label="
+                              $t(
+                                'paweljong.event_registration.form.steps.email.fields.confirm_email.label',
+                              )
+                            "
+                            required
+                            :rules="
+                              emailMode === 1
+                                ? $rules().required.build(rules.confirmEmail)
+                                : []
+                            "
+                            prepend-icon="mdi-email-outline"
+                          ></v-text-field>
+                        </div>
+                      </v-col>
+                    </v-row>
+                  </v-tab-item>
+                </v-tabs-items>
+              </v-form>
+            </div>
+            <v-divider class="mb-4" />
+            <control-row
+              :step="step"
+              @set-step="setStep"
+              :next-disabled="
+                emailMode === undefined ||
+                emailMode === null ||
+                !validationStatuses['email']
+              "
+            />
+          </v-stepper-content>
+
+          <v-stepper-content
+            v-if="isStepEnabled('register')"
+            :step="getStepIndex('register')"
+          >
+            <h2 class="text-h6 mb-4">{{ $t(getStepTitleKey("register")) }}</h2>
+            <div class="mb-4">
+              <v-form v-model="validationStatuses['register']">
+                <v-row>
+                  <v-col>
+                    <div aria-required="true">
+                      <v-text-field
+                        outlined
+                        v-model="data.person.firstName"
+                        :label="
+                          $t(
+                            'paweljong.event_registration.form.steps.register.fields.first_name.label',
+                          )
+                        "
+                        required
+                        :rules="$rules().required.build()"
+                      ></v-text-field>
+                    </div>
+                  </v-col>
+                  <v-col>
+                    <div aria-required="true">
+                      <v-text-field
+                        outlined
+                        v-model="data.person.lastName"
+                        :label="
+                          $t(
+                            'paweljong.event_registration.form.steps.register.fields.last_name.label',
+                          )
+                        "
+                        required
+                        :rules="$rules().required.build()"
+                      ></v-text-field>
+                    </div>
+                  </v-col>
+                </v-row>
+                <v-row>
+                  <v-col cols="12" lg="4">
+                    <div aria-required="true">
+                      <v-text-field
+                        outlined
+                        v-model="data.user.username"
+                        :label="
+                          $t(
+                            'paweljong.event_registration.form.steps.register.fields.username.label',
+                          )
+                        "
+                        required
+                        :rules="$rules().required.build()"
+                        prepend-icon="mdi-account-outline"
+                      ></v-text-field>
+                    </div>
+                  </v-col>
+                  <v-col cols="12" md="6" lg="4">
+                    <div aria-required="true">
+                      <v-text-field
+                        outlined
+                        v-model="data.user.password"
+                        :label="
+                          $t(
+                            'paweljong.event_registration.form.steps.register.fields.password.label',
+                          )
+                        "
+                        required
+                        :rules="$rules().required.build()"
+                        type="password"
+                        prepend-icon="mdi-form-textbox-password"
+                      ></v-text-field>
+                    </div>
+                  </v-col>
+                  <v-col cols="12" md="6" lg="4">
+                    <div aria-required="true">
+                      <v-text-field
+                        outlined
+                        v-model="data.user.confirmPassword"
+                        :label="
+                          $t(
+                            'paweljong.event_registration.form.steps.register.fields.confirm_password.label',
+                          )
+                        "
+                        required
+                        :rules="$rules().required.build(rules.confirmPassword)"
+                        type="password"
+                        prepend-icon="mdi-form-textbox-password"
+                      ></v-text-field>
+                    </div>
+                  </v-col>
+                </v-row>
+              </v-form>
+            </div>
+            <v-divider class="mb-4" />
+            <control-row
+              :step="step"
+              @set-step="setStep"
+              :next-disabled="!validationStatuses['register']"
+            />
+          </v-stepper-content>
+
+          <v-stepper-content
+            v-if="isStepEnabled('contact_details')"
+            :step="getStepIndex('contact_details')"
+          >
+            <h2 class="text-h6 mb-4">
+              {{ $t(getStepTitleKey("contact_details")) }}
+            </h2>
+            <div class="mb-4">
+              <v-form v-model="validationStatuses['contact_details']">
+                <v-row>
+                  <v-col
+                    v-if="isFieldVisible('date_of_birth')"
+                    cols="12"
+                    md="6"
+                    lg="4"
+                  >
+                    <div aria-required="true">
+                      <date-field
+                        outlined
+                        v-model="data.person.dateOfBirth"
+                        :label="
+                          $t(
+                            'paweljong.event_registration.form.steps.contact_details.fields.date_of_birth.label',
+                          )
+                        "
+                        required
+                        :rules="$rules().required.build()"
+                        prepend-icon="mdi-cake-variant-outline"
+                      />
+                    </div>
+                  </v-col>
+                  <v-col
+                    v-if="isFieldVisible('mobile_number')"
+                    cols="12"
+                    md="6"
+                    lg="4"
+                  >
+                    <div aria-required="true">
+                      <v-text-field
+                        outlined
+                        v-model="data.person.mobileNumber"
+                        :label="
+                          $t(
+                            'paweljong.event_registration.form.steps.contact_details.fields.mobile_number.label',
+                          )
+                        "
+                        required
+                        prepend-icon="mdi-phone-outline"
+                        :rules="$rules().required.build()"
+                      ></v-text-field>
+                    </div>
+                  </v-col>
+                  <v-col v-if="isFieldVisible('sex')" cols="12" lg="4">
+                    <div aria-required="true">
+                      <!-- FIXME: Prefilling data does not work due to upper-/lowercase situation; will be fixed with core person form refactoring -->
+                      <sex-select
+                        outlined
+                        v-model="data.person.sex"
+                        :label="
+                          $t(
+                            'paweljong.event_registration.form.steps.contact_details.fields.sex.label',
+                          )
+                        "
+                        :hint="
+                          $t(
+                            'paweljong.event_registration.form.steps.contact_details.fields.sex.help_text',
+                          )
+                        "
+                        persistent-hint
+                        required
+                        :rules="$rules().required.build()"
+                      />
+                    </div>
+                  </v-col>
+                </v-row>
+                <v-row>
+                  <v-col v-if="isFieldVisible('street')" cols="12" lg="6">
+                    <div aria-required="true">
+                      <v-text-field
+                        outlined
+                        v-model="data.person.address.street"
+                        :label="
+                          $t(
+                            'paweljong.event_registration.form.steps.contact_details.fields.street.label',
+                          )
+                        "
+                        required
+                        :rules="$rules().required.build()"
+                      ></v-text-field>
+                    </div>
+                  </v-col>
+                  <v-col v-if="isFieldVisible('housenumber')" cols="12" lg="6">
+                    <div aria-required="true">
+                      <v-text-field
+                        outlined
+                        v-model="data.person.address.housenumber"
+                        :label="
+                          $t(
+                            'paweljong.event_registration.form.steps.contact_details.fields.housenumber.label',
+                          )
+                        "
+                        required
+                        :rules="$rules().required.build()"
+                      ></v-text-field>
+                    </div>
+                  </v-col>
+                </v-row>
+                <v-row>
+                  <v-col v-if="isFieldVisible('postal_code')" cols="12" lg="6">
+                    <div aria-required="true">
+                      <v-text-field
+                        outlined
+                        v-model="data.person.address.postalCode"
+                        :label="
+                          $t(
+                            'paweljong.event_registration.form.steps.contact_details.fields.postal_code.label',
+                          )
+                        "
+                        required
+                        :rules="$rules().required.build()"
+                      ></v-text-field>
+                    </div>
+                  </v-col>
+                  <v-col v-if="isFieldVisible('place')" cols="12" lg="6">
+                    <div aria-required="true">
+                      <v-text-field
+                        outlined
+                        v-model="data.person.address.place"
+                        :label="
+                          $t(
+                            'paweljong.event_registration.form.steps.contact_details.fields.place.label',
+                          )
+                        "
+                        required
+                        :rules="$rules().required.build()"
+                      ></v-text-field>
+                    </div>
+                  </v-col>
+                </v-row>
+                <v-row v-if="isFieldVisible('school_details')">
+                  <v-col cols="12" lg="4">
+                    <div aria-required="true">
+                      <v-text-field
+                        outlined
+                        v-model="data.school"
+                        :label="
+                          $t(
+                            'paweljong.event_registration.form.steps.contact_details.fields.school.label',
+                          )
+                        "
+                        :hint="
+                          $t(
+                            'paweljong.event_registration.form.steps.contact_details.fields.school.help_text',
+                          )
+                        "
+                        required
+                        :rules="$rules().required.build()"
+                      ></v-text-field>
+                    </div>
+                  </v-col>
+                  <v-col cols="12" lg="4">
+                    <div aria-required="true">
+                      <v-text-field
+                        outlined
+                        v-model="data.schoolPlace"
+                        :label="
+                          $t(
+                            'paweljong.event_registration.form.steps.contact_details.fields.school_place.label',
+                          )
+                        "
+                        :hint="
+                          $t(
+                            'paweljong.event_registration.form.steps.contact_details.fields.school_place.help_text',
+                          )
+                        "
+                        required
+                        :rules="$rules().required.build()"
+                      ></v-text-field>
+                    </div>
+                  </v-col>
+                  <v-col cols="12" lg="4">
+                    <div aria-required="true">
+                      <v-text-field
+                        outlined
+                        v-model="data.schoolClass"
+                        :label="
+                          $t(
+                            'paweljong.event_registration.form.steps.contact_details.fields.school_class.label',
+                          )
+                        "
+                        :hint="
+                          $t(
+                            'paweljong.event_registration.form.steps.contact_details.fields.school_class.help_text',
+                          )
+                        "
+                        required
+                        :rules="$rules().required.build()"
+                      ></v-text-field>
+                    </div>
+                  </v-col>
+                </v-row>
+              </v-form>
+            </div>
+            <v-divider class="mb-4" />
+            <control-row
+              :step="step"
+              @set-step="setStep"
+              :next-disabled="!validationStatuses['contact_details']"
+            />
+          </v-stepper-content>
+
+          <v-stepper-content :step="getStepIndex('guardians')">
+            <h2 class="text-h6 mb-4">{{ $t(getStepTitleKey("guardians")) }}</h2>
+            <div class="mb-4">
+              <v-form v-model="validationStatuses['guardians']">
+                <v-card
+                  v-for="(guardian, index) in data.person.guardians"
+                  :key="index"
+                  class="mb-4"
+                >
+                  <v-card-title>
+                    {{
+                      $t(
+                        "paweljong.event_registration.form.steps.guardians.counter",
+                        { i: index + 1 },
+                      )
+                    }}
+                  </v-card-title>
+                  <v-card-text>
+                    <v-row>
+                      <v-col cols="12" md="6">
+                        <div :aria-required="index === 0 ? 'true' : 'false'">
+                          <v-text-field
+                            outlined
+                            v-model="guardian.firstName"
+                            :label="
+                              $t(
+                                'paweljong.event_registration.form.steps.guardians.fields.first_name.label',
+                              )
+                            "
+                            :hint="
+                              $t(
+                                'paweljong.event_registration.form.steps.guardians.fields.first_name.help_text',
+                              )
+                            "
+                            required
+                            :rules="
+                              index === 0 ? $rules().required.build() : []
+                            "
+                          ></v-text-field>
+                        </div>
+                      </v-col>
+                      <v-col cols="12" md="6">
+                        <div :aria-required="index === 0 ? 'true' : 'false'">
+                          <v-text-field
+                            outlined
+                            v-model="guardian.lastName"
+                            :label="
+                              $t(
+                                'paweljong.event_registration.form.steps.guardians.fields.last_name.label',
+                              )
+                            "
+                            :hint="
+                              $t(
+                                'paweljong.event_registration.form.steps.guardians.fields.last_name.help_text',
+                              )
+                            "
+                            required
+                            :rules="
+                              index === 0 ? $rules().required.build() : []
+                            "
+                          ></v-text-field>
+                        </div>
+                      </v-col>
+                    </v-row>
+                    <v-row>
+                      <v-col cols="12" md="6">
+                        <div :aria-required="index === 0 ? 'true' : 'false'">
+                          <v-text-field
+                            outlined
+                            v-model="guardian.email"
+                            :label="
+                              $t(
+                                'paweljong.event_registration.form.steps.guardians.fields.email.label',
+                              )
+                            "
+                            required
+                            :rules="
+                              index === 0
+                                ? $rules().required.build(rules.email)
+                                : []
+                            "
+                          ></v-text-field>
+                        </div>
+                      </v-col>
+                      <v-col cols="12" md="6">
+                        <div :aria-required="index === 0 ? 'true' : 'false'">
+                          <v-text-field
+                            outlined
+                            v-model="guardian.mobileNumber"
+                            :label="
+                              $t(
+                                'paweljong.event_registration.form.steps.guardians.fields.mobile_number.label',
+                              )
+                            "
+                            :hint="
+                              $t(
+                                'paweljong.event_registration.form.steps.guardians.fields.mobile_number.help_text',
+                              )
+                            "
+                            required
+                            :rules="
+                              index === 0 ? $rules().required.build() : []
+                            "
+                          ></v-text-field>
+                        </div>
+                      </v-col>
+                    </v-row>
+                  </v-card-text>
+                </v-card>
+              </v-form>
+              <v-row class="mb-4">
+                <v-col>
+                  <v-spacer />
+                  <secondary-action-button
+                    @click="addGuardian"
+                    class="btn-multiline"
+                  >
+                    <span class="text-wrap">
+                      {{
+                        $t(
+                          "paweljong.event_registration.form.steps.guardians.add",
+                        )
+                      }}
+                    </span>
+                  </secondary-action-button>
+                </v-col>
+              </v-row>
+            </div>
+            <v-divider class="mb-4" />
+            <control-row
+              :step="step"
+              @set-step="setStep"
+              :next-disabled="!validationStatuses['guardians']"
+            />
+          </v-stepper-content>
+
+          <v-stepper-content :step="getStepIndex('additional')">
+            <h2 class="text-h6 mb-4">
+              {{ $t(getStepTitleKey("additional")) }}
+            </h2>
+            <div class="mb-4">
+              <v-form v-model="validationStatuses['additional']">
+                <v-row>
+                  <v-col>
+                    <v-text-field
+                      outlined
+                      v-model="data.medicalInformation"
+                      :label="
+                        $t(
+                          'paweljong.event_registration.form.steps.additional.fields.medical_information.label',
+                        )
+                      "
+                      :hint="
+                        $t(
+                          'paweljong.event_registration.form.steps.additional.fields.medical_information.help_text',
+                        )
+                      "
+                    ></v-text-field>
+                  </v-col>
+                </v-row>
+                <v-row
+                  v-for="additionalField in event.additionalFields"
+                  :key="`additional-field-${additionalField.id}`"
+                >
+                  <v-col>
+                    <div
+                      :aria-required="
+                        additionalField.required ? 'true' : 'false'
+                      "
+                    >
+                      <component
+                        :is="fieldComponentForAdditionalField(additionalField)"
+                        v-model="data.additionalFields[additionalField.id]"
+                        outlined
+                        :label="additionalField.title"
+                        :hint="additionalField.helpText"
+                        persistent-hint
+                        :required="additionalField.required"
+                        :rules="
+                          additionalField.required
+                            ? $rules().required.build()
+                            : []
+                        "
+                      />
+                    </div>
+                  </v-col>
+                </v-row>
+              </v-form>
+            </div>
+            <v-divider class="mb-4" />
+            <control-row
+              :step="step"
+              @set-step="setStep"
+              :next-disabled="!validationStatuses['additional']"
+            />
+          </v-stepper-content>
+
+          <v-stepper-content
+            v-if="isStepEnabled('financial')"
+            :step="getStepIndex('financial')"
+          >
+            <h2 class="text-h6 mb-4">{{ $t(getStepTitleKey("financial")) }}</h2>
+            <div class="mb-4">
+              <message-box type="info" class="mb-4">
+                {{
+                  $t(
+                    "paweljong.event_registration.form.steps.financial.help_text.cost_info",
+                  )
+                }}
+              </message-box>
+              <v-simple-table class="mb-4">
+                <template v-slot:default>
+                  <tbody>
+                    <tr>
+                      <td>
+                        {{
+                          $t(
+                            "paweljong.event_registration.form.steps.financial.help_text.min_cost",
+                          )
+                        }}
+                      </td>
+                      <td>{{ `${event.minCost} €` }}</td>
+                    </tr>
+                    <tr>
+                      <td>
+                        {{
+                          $t(
+                            "paweljong.event_registration.form.steps.financial.help_text.cost",
+                          )
+                        }}
+                      </td>
+                      <td>{{ `${event.cost} €` }}</td>
+                    </tr>
+                    <tr v-if="event.maxCost">
+                      <td>
+                        {{
+                          $t(
+                            "paweljong.event_registration.form.steps.financial.help_text.max_cost",
+                          )
+                        }}
+                      </td>
+                      <td>{{ `${event.maxCost} €` }}</td>
+                    </tr>
+                  </tbody>
+                </template>
+              </v-simple-table>
+              <v-form v-model="validationStatuses['financial']">
+                <v-row>
+                  <v-col cols="12" md="6">
+                    <div aria-required="true">
+                      <v-select
+                        :items="paweljongPaymentChoices"
+                        item-text="text"
+                        item-value="variant"
+                        outlined
+                        v-model="data.payment.paymentMethod"
+                        :label="
+                          $t(
+                            'paweljong.event_registration.form.steps.financial.fields.payment_method.label',
+                          )
+                        "
+                        :hint="
+                          $t(
+                            'paweljong.event_registration.form.steps.financial.fields.payment_method.help_text',
+                          )
+                        "
+                        persistent-hint
+                        required
+                        :disabled="data.payment.amount === 0"
+                        :rules="
+                          data.payment.amount === 0
+                            ? []
+                            : $rules().required.build()
+                        "
+                      ></v-select>
+                    </div>
+                  </v-col>
+                  <v-col cols="12" md="6">
+                    <div aria-required="true">
+                      <positive-small-integer-field
+                        outlined
+                        v-model="data.payment.amount"
+                        :label="
+                          $t(
+                            'paweljong.event_registration.form.steps.financial.fields.amount.label',
+                          )
+                        "
+                        :rules="$rules().build(rules.amount)"
+                      />
+                    </div>
+                  </v-col>
+                </v-row>
+              </v-form>
+            </div>
+            <v-divider class="mb-4" />
+            <control-row
+              :step="step"
+              @set-step="setStep"
+              :next-disabled="!validationStatuses['financial']"
+            />
+          </v-stepper-content>
+
+          <v-stepper-content :step="getStepIndex('consent')">
+            <h2 class="text-h6 mb-4">{{ $t(getStepTitleKey("consent")) }}</h2>
+            <div class="mb-4">
+              <v-card v-for="term in event.terms" :key="`term-card-${term.id}`">
+                <v-card-title>
+                  {{ term.title }}
+                </v-card-title>
+                <v-card-text v-html="term.term" />
+              </v-card>
+              <v-form v-model="validationStatuses['consent']">
+                <div
+                  v-for="term in event.terms"
+                  :key="`term-checkbox-${term.id}`"
+                  aria-required="true"
+                >
+                  <v-checkbox
+                    required
+                    :rules="$rules().required.build()"
+                    :label="term.confirmationText"
+                    v-model="data.terms[term.id]"
+                  />
+                </div>
+                <div aria-required="true">
+                  <v-checkbox
+                    v-if="event.dateRetraction"
+                    required
+                    :rules="$rules().required.build()"
+                    :label="
+                      $t(
+                        'paweljong.event_registration.form.steps.consent.fields.retraction_consent.label',
+                        {
+                          date: $d(
+                            $parseISODate(event.dateRetraction, 'short'),
+                          ),
+                        },
+                      )
+                    "
+                    v-model="data.retractionConsent"
+                  />
+                </div>
+              </v-form>
+            </div>
+            <v-divider class="mb-4" />
+            <control-row
+              :step="step"
+              @set-step="setStep"
+              :next-disabled="!validationStatuses['consent']"
+            />
+          </v-stepper-content>
+
+          <v-stepper-content :step="getStepIndex('confirm')">
+            <h2 class="text-h6 mb-4">{{ $t(getStepTitleKey("confirm")) }}</h2>
+            <div class="mb-4">
+              <v-text-field
+                outlined
+                v-model="data.comment"
+                :label="
+                  $t(
+                    'paweljong.event_registration.form.steps.confirm.fields.comment.label',
+                  )
+                "
+              ></v-text-field>
+            </div>
+            <v-divider class="my-4" />
+
+            <!-- TODO: Add summary -->
+
+            <message-box type="info" class="mb-4">
+              {{ $t("paweljong.event_registration.form.steps.confirm.hint") }}
+            </message-box>
+            <ApolloMutation
+              :mutation="require('./eventRegistrationMutation.graphql')"
+              :variables="{
+                event: event.id,
+                eventRegistration: dataForSubmit,
+              }"
+              @done="eventRegistrationDone"
+            >
+              <template #default="{ mutate, loading, error }">
+                <control-row
+                  :step="step"
+                  final-step
+                  @set-step="setStep"
+                  @confirm="mutate"
+                  :next-loading="loading"
+                />
+                <v-alert v-if="error" type="error" outlined>{{
+                  error.message
+                }}</v-alert>
+              </template>
+            </ApolloMutation>
+          </v-stepper-content>
+        </v-stepper-items>
+      </v-stepper>
+    </div>
+    <div v-else-if="$apollo.queries.event.loading">
+      <v-skeleton-loader type="heading, text, actions" />
+    </div>
+  </div>
+</template>
+
+<script>
+import { eventBySlug } from "../event/events.graphql";
+import {
+  gqlPaweljongPaymentChoices,
+  gqlPaweljongSitePreferences,
+  whoAmI,
+} from "./helpers.graphql";
+import {
+  mailDomainsForUser,
+  disallowedLocalParts,
+} from "aleksis.apps.postbuero/components/mail_addresses/mailAddresses.graphql";
+
+import eventAdditionalFieldMixin from "../event_additional_field/eventAdditionalFieldMixin";
+import formRulesMixin from "aleksis.core/mixins/formRulesMixin";
+
+export default {
+  name: "EventRegistrationForm",
+  apollo: {
+    event: {
+      query: eventBySlug,
+      variables() {
+        return {
+          slug: this.slug,
+        };
+      },
+    },
+    paweljongPaymentChoices: gqlPaweljongPaymentChoices,
+    paweljongSitePreferences: gqlPaweljongSitePreferences,
+    mailDomains: mailDomainsForUser,
+    disallowedLocalParts: disallowedLocalParts,
+    whoAmI: {
+      query: whoAmI,
+      result({ data }) {
+        if (data && data.whoAmI && data.whoAmI.person) {
+          const {
+            id,
+            __typename,
+            street,
+            housenumber,
+            postalCode,
+            place,
+            guardians,
+            ...filteredPerson
+          } = data.whoAmI.person;
+          this.data.person = filteredPerson;
+
+          const filteredGuardians = guardians.map(
+            ({ __typename, ...filteredGuardian }) => filteredGuardian,
+          );
+          if (filteredGuardians.length) {
+            this.data.person.guardians = filteredGuardians;
+          } else {
+            this.data.person.guardians = [
+              {
+                firstName: "",
+                lastName: "",
+                email: "",
+                mobileNumber: "",
+              },
+            ];
+          }
+
+          this.data.person.address = {
+            street: street,
+            housenumber: housenumber,
+            postalCode: postalCode,
+            place: place,
+          };
+        }
+      },
+      skip() {
+        return this.$root.whoAmI?.person?.isDummy;
+      },
+    },
+  },
+  mixins: [eventAdditionalFieldMixin, formRulesMixin],
+  methods: {
+    setStep(step) {
+      this.step = step;
+      this.valid = false;
+    },
+    eventRegistrationDone({ data }) {
+      if (data.sendEventRegistration.ok) {
+        this.eventRegistrationSent = true;
+      }
+      if (data.sendEventRegistration.doPaymentToken) {
+        this.doPaymentToken = data.sendEventRegistration.doPaymentToken;
+      }
+    },
+    isFieldVisible(fieldName) {
+      return this.event?.contactInformationVisibleFields.includes(fieldName);
+    },
+    addGuardian() {
+      const updatedPerson = {
+        ...this.data.person,
+        guardians: [
+          ...this.data.person.guardians,
+          {
+            firstName: "",
+            lastName: "",
+            email: "",
+            mobileNumber: "",
+          },
+        ]
+      };
+      this.$set(this.data, "person", updatedPerson);
+    },
+    isStepEnabled(stepName) {
+      return this.steps.some((s) => s.name === stepName);
+    },
+    getStepIndex(stepName) {
+      return this.steps.findIndex((s) => s.name === stepName) + 1;
+    },
+    getStepTitleKey(stepName) {
+      return this.steps.find((s) => s.name === stepName)?.titleKey;
+    },
+    setValidationStatus(stepName, validationStatus) {
+      this.validationStatuses[stepName] = validationStatus;
+    },
+    getValidationStatus(stepName) {
+      if (this.validationStatuses[stepName]) {
+        return this.validationStatuses[stepName];
+      }
+      return false;
+    },
+  },
+  props: {
+    slug: {
+      type: String,
+      required: true,
+    },
+  },
+  computed: {
+    rules() {
+      return {
+        name: [
+          (v) => !!v || this.$t("order.rules.name.required"),
+          (v) => v.length <= 255 || this.$t("order.rules.name.max"),
+        ],
+        email: [
+          (v) =>
+            /.+@.+\..+/.test(v) ||
+            this.$t("paweljong.event_registration.form.rules.email.valid"),
+        ],
+        confirmEmail: [
+          (v) =>
+            this.data.user.email == v ||
+            this.$t(
+              "paweljong.event_registration.form.rules.confirm_email.no_match",
+            ),
+        ],
+        emailLocalPart: [
+          (v) =>
+            /^\w+([.!#$%&'*+-\/=?^_`{|}~]?\w+)*$/.test(v) ||
+            this.$t(
+              "postbuero.mail_addresses.data_table.errors.local_part_invalid_characters",
+            ),
+          (v) =>
+            this.disallowedLocalParts.indexOf(v) === -1 ||
+            this.$t(
+              "postbuero.mail_addresses.data_table.errors.local_part_disallowed",
+            ),
+        ],
+        confirmPassword: [
+          (v) =>
+            this.data.user.password == v ||
+            this.$t(
+              "paweljong.event_registration.form.rules.confirm_password.no_match",
+            ),
+        ],
+        amount: [
+          (v) =>
+            v >= this.event.minCost ||
+            this.$t("paweljong.event_registration.form.rules.amount.too_low"),
+          (v) =>
+            this.event.maxCost === null ||
+            v <= this.event.maxCost ||
+            this.$t("paweljong.event_registration.form.rules.amount.too_high"),
+        ],
+      };
+    },
+    dataForSubmit() {
+      const { confirmEmail, confirmPassword, ...filteredUserData } =
+        this.data.user;
+
+      let data = {
+        ...this.data,
+        additionalFields: JSON.stringify(this.data.additionalFields),
+        terms: JSON.stringify(this.data.terms),
+        user: filteredUserData,
+      };
+
+      if (this.event.maxCost == 0) {
+        const { payment, ...filteredData } = data;
+        data = filteredData;
+      }
+      if (!this.data.email.localPart && !this.data.email.domain) {
+        const { email, ...filteredData } = data;
+        data = filteredData;
+      }
+      if (
+        !this.data.user.username &&
+        !this.data.user.email &&
+        !this.data.user.password
+      ) {
+        const { user, ...filteredData } = data;
+        data = filteredData;
+      }
+      return data;
+    },
+    steps() {
+      return [
+        ...(this.$root?.whoAmI.isAnonymous
+          ? [
+              {
+                name: "email",
+                titleKey: "paweljong.event_registration.form.steps.email.title",
+                participantHelpText:
+                  this.paweljongSitePreferences
+                    ?.eventRegistrationEmailParticipantHelpText,
+                guardianHelpText:
+                  this.paweljongSitePreferences
+                    ?.eventRegistrationEmailGuardianHelpText,
+              },
+            ]
+          : []),
+        ...(this.$root?.whoAmI.isAnonymous
+          ? [
+              {
+                name: "register",
+                titleKey:
+                  "paweljong.event_registration.form.steps.register.title",
+                participantHelpText:
+                  this.paweljongSitePreferences
+                    ?.eventRegistrationRegisterParticipantHelpText,
+                guardianHelpText:
+                  this.paweljongSitePreferences
+                    ?.eventRegistrationRegisterGuardianHelpText,
+              },
+            ]
+          : []),
+        ...(this.event?.contactInformationVisibleFields.length
+          ? [
+              {
+                name: "contact_details",
+                titleKey:
+                  "paweljong.event_registration.form.steps.contact_details.title",
+                participantHelpText:
+                  this.paweljongSitePreferences
+                    ?.eventRegistrationContactDetailsParticipantHelpText,
+                guardianHelpText:
+                  this.paweljongSitePreferences
+                    ?.eventRegistrationContactDetailsGuardianHelpText,
+              },
+            ]
+          : []),
+        {
+          name: "guardians",
+          titleKey: "paweljong.event_registration.form.steps.guardians.title",
+          participantHelpText:
+            this.paweljongSitePreferences
+              ?.eventRegistrationGuardiansParticipantHelpText,
+          guardianHelpText:
+            this.paweljongSitePreferences
+              ?.eventRegistrationGuardiansGuardianHelpText,
+        },
+        {
+          name: "additional",
+          titleKey: "paweljong.event_registration.form.steps.additional.title",
+          participantHelpText:
+            this.paweljongSitePreferences
+              ?.eventRegistrationAdditionalParticipantHelpText,
+          guardianHelpText:
+            this.paweljongSitePreferences
+              ?.eventRegistrationAdditionalGuardianHelpText,
+        },
+        ...(this.event.maxCost !== 0
+          ? [
+              {
+                name: "financial",
+                titleKey:
+                  "paweljong.event_registration.form.steps.financial.title",
+                participantHelpText:
+                  this.paweljongSitePreferences
+                    ?.eventRegistrationFinancialParticipantHelpText,
+                guardianHelpText:
+                  this.paweljongSitePreferences
+                    ?.eventRegistrationFinancialGuardianHelpText,
+              },
+            ]
+          : []),
+        {
+          name: "consent",
+          titleKey: "paweljong.event_registration.form.steps.consent.title",
+          participantHelpText:
+            this.paweljongSitePreferences
+              ?.eventRegistrationConsentParticipantHelpText,
+          guardianHelpText:
+            this.paweljongSitePreferences
+              ?.eventRegistrationConsentGuardianHelpText,
+        },
+        {
+          name: "confirm",
+          titleKey: "paweljong.event_registration.form.steps.confirm.title",
+          participantHelpText:
+            this.paweljongSitePreferences
+              ?.eventRegistrationConfirmParticipantHelpText,
+          guardianHelpText:
+            this.paweljongSitePreferences
+              ?.eventRegistrationConfirmGuardianHelpText,
+        },
+      ];
+    },
+    currentParticipantHelpText() {
+      return this.steps[this.step - 1].participantHelpText;
+    },
+    currentGuardianHelpText() {
+      return this.steps[this.step - 1].guardianHelpText;
+    },
+  },
+  data() {
+    return {
+      validationStatuses: {},
+      eventRegistrationSent: false,
+      step: 1,
+      emailMode: null,
+      data: {
+        email: {
+          localPart: "",
+          domain: "",
+        },
+        person: {
+          firstName: "",
+          lastName: "",
+          dateOfBirth: "",
+          sex: "",
+          address: {
+            street: "",
+            housenumber: "",
+            postalCode: "",
+            place: "",
+          },
+          guardians: [
+            {
+              firstName: "",
+              lastName: "",
+              email: "",
+              mobileNumber: "",
+            },
+          ],
+          mobileNumber: "",
+        },
+        user: {
+          username: "",
+          email: "",
+          confirmEmail: "",
+          password: "",
+          confirmPassword: "",
+        },
+        school: "",
+        schoolPlace: "",
+        schoolClass: "",
+        payment: {
+          paymentMethod: "",
+          amount: null,
+        },
+        medicalInformation: "",
+        comment: "",
+        additionalFields: {},
+        terms: {},
+        retractionConsent: false,
+      },
+      doPaymentToken: null,
+    };
+  },
+};
+</script>
+
+<style>
+.btn-multiline > span {
+  width: 100%;
+}
+</style>
diff --git a/aleksis/apps/paweljong/frontend/components/event_registration/eventRegistrationMutation.graphql b/aleksis/apps/paweljong/frontend/components/event_registration/eventRegistrationMutation.graphql
new file mode 100644
index 0000000000000000000000000000000000000000..7dc363eacd54089516e14dd227089bc47bffbd88
--- /dev/null
+++ b/aleksis/apps/paweljong/frontend/components/event_registration/eventRegistrationMutation.graphql
@@ -0,0 +1,9 @@
+mutation sendEventRegistration(
+  $event: ID!
+  $eventRegistration: EventRegistrationInputType!
+) {
+  sendEventRegistration(event: $event, eventRegistration: $eventRegistration) {
+    ok
+    doPaymentToken
+  }
+}
diff --git a/aleksis/apps/paweljong/frontend/components/event_registration/helpers.graphql b/aleksis/apps/paweljong/frontend/components/event_registration/helpers.graphql
new file mode 100644
index 0000000000000000000000000000000000000000..83d5dd5373f155b09897313bdf0dd7c67941b959
--- /dev/null
+++ b/aleksis/apps/paweljong/frontend/components/event_registration/helpers.graphql
@@ -0,0 +1,53 @@
+query whoAmI {
+  whoAmI {
+    id
+    person {
+      id
+      firstName
+      lastName
+      guardians {
+        id
+        firstName
+        lastName
+        mobileNumber
+        email
+      }
+      mobileNumber
+      sex
+      street
+      housenumber
+      postalCode
+      place
+      dateOfBirth
+    }
+  }
+}
+
+query gqlPaweljongPaymentChoices {
+  paweljongPaymentChoices {
+    variant
+    text
+  }
+}
+
+query gqlPaweljongSitePreferences {
+  paweljongSitePreferences {
+    eventRegistrationEmailParticipantHelpText
+    eventRegistrationRegisterParticipantHelpText
+    eventRegistrationContactDetailsParticipantHelpText
+    eventRegistrationGuardiansParticipantHelpText
+    eventRegistrationAdditionalParticipantHelpText
+    eventRegistrationFinancialParticipantHelpText
+    eventRegistrationConsentParticipantHelpText
+    eventRegistrationConfirmParticipantHelpText
+
+    eventRegistrationEmailGuardianHelpText
+    eventRegistrationRegisterGuardianHelpText
+    eventRegistrationContactDetailsGuardianHelpText
+    eventRegistrationGuardiansGuardianHelpText
+    eventRegistrationAdditionalGuardianHelpText
+    eventRegistrationFinancialGuardianHelpText
+    eventRegistrationConsentGuardianHelpText
+    eventRegistrationConfirmGuardianHelpText
+  }
+}
diff --git a/aleksis/apps/paweljong/frontend/index.js b/aleksis/apps/paweljong/frontend/index.js
index a0891db80299ff99e9d9b10a1cecd7f87d37b7b6..c1451f315381419c9a7e836ccee65a7213d63b5f 100644
--- a/aleksis/apps/paweljong/frontend/index.js
+++ b/aleksis/apps/paweljong/frontend/index.js
@@ -30,11 +30,10 @@ export default {
     },
     {
       path: "event/:slug/register/",
-      component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
+      component: () =>
+        import("./components/event_registration/EventRegistrationForm.vue"),
       name: "paweljong.registerEventBySlug",
-      props: {
-        byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
-      },
+      props: true,
     },
     {
       path: "group_persons/:pk/add/",
diff --git a/aleksis/apps/paweljong/frontend/messages/de.json b/aleksis/apps/paweljong/frontend/messages/de.json
index 26073ecccf3b05a73f3a8ae7744f49536ff899d3..68c8af7d98a0466da242c679d57760e0971737e9 100644
--- a/aleksis/apps/paweljong/frontend/messages/de.json
+++ b/aleksis/apps/paweljong/frontend/messages/de.json
@@ -1,56 +1,246 @@
 {
-    "paweljong": {
-        "events": {
-            "menu_title": "Veranstaltungen",
-            "vouchers": {
-                "menu_title": "Gutscheine"
-            },
-            "terms": {
-                "menu_title": "Bedingungen"
-            },
-            "registration_states": {
-                "menu_title": "Registrierungsstatus"
-            },
-            "info_mailings": {
-                "menu_title": "Info-Mailings"
+  "paweljong": {
+    "events": {
+      "menu_title": "Veranstaltungen",
+      "vouchers": {
+        "menu_title": "Gutscheine"
+      },
+      "terms": {
+        "menu_title": "Bedingungen"
+      },
+      "registration_states": {
+        "menu_title": "Registrierungsstatus"
+      },
+      "info_mailings": {
+        "menu_title": "Info-Mailings"
+      },
+      "generate_lists": {
+        "menu_title": "Teilnehmendenliste generieren"
+      },
+      "manage_events": {
+        "menu_title": "Veranstaltungen verwalten"
+      }
+    },
+    "register": {
+      "menu_title": "Registrieren"
+    },
+    "event_additional_field": {
+      "create": "Zusätzliche Felder für Veranstaltungen erstellen",
+      "title": "Zusätzliches Feld für Veranstaltung",
+      "field_title": "Titel",
+      "title_plural": "Zusätzliche Felder für Veranstaltungen",
+      "menu_title": "Zusätzliche Felder für Veranstaltungen",
+      "field_type": {
+        "form_field_name": "Feld-Typ",
+        "BOOLEANFIELD": "Boolescher Wert (Ja/Nein)",
+        "CHARFIELD": "Text (einzeilig)",
+        "DATEFIELD": "Datum",
+        "DATETIMEFIELD": "Datum und Uhrzeit",
+        "DECIMALFIELD": "Dezimalzahl",
+        "EMAILFIELD": "E-Mail-Adresse",
+        "INTEGERFIELD": "Zahl",
+        "GENERICIPADDRESSFIELD": "IP-Adresse",
+        "NULLBOOLEANFIELD": "Boolescher Wert oder leer (Ja/Nein/Leer)",
+        "TEXTFIELD": "Text (mehrzeilig)",
+        "TIMEFIELD": "Uhrzeit",
+        "URLFIELD": "URL / Link"
+      },
+      "required": {
+        "form_field_name": "Verpflichtend",
+        "required": "Verpflichtend",
+        "optional": "Optional"
+      },
+      "help_text": "Hilfe-Text"
+    },
+    "event_registration": {
+      "form": {
+        "submitted": {
+          "thank_you": "Danke!",
+          "submitted_successfully": "Deine Anmeldung wurde erfolgreich abgeschickt.",
+          "payment_text": "Du musst noch den Zahlungsvorgang für deine Anmeldung abschließen.",
+          "payment_button": "Zahlung abschließen"
+        },
+        "steps": {
+          "email": {
+            "title": "E-Mail-Adresse",
+            "choose_mode": {
+              "help_text": " Jeder Teilnehmende benötigt seine eigene E-Mail-Adresse. Diese Adresse muss eine Adresse sein, die du selbst abrufst und liest, und die nicht deinen Eltern gehört. Wichtige Informationen senden wir natürlich immer zusätzlich an deine Eltern. Natürlich solltest du mit deinen Eltern immer reden, falls du beim Lesen deiner E-Mails Fragen oder Sorgen hast.  Wenn du bisher keine eigene E-Mail-Adresse hast, und keine bei den \"großen\" Anbietern anlegen kannst oder möchtest (denke daran, dass Google, Outlook etc. Accounts erst ab 16 erlauben, und oft deine Daten sammeln und analysieren), kannst du Dir bei uns eine E-Mail-Adresse registrieren.",
+              "continue_aleksis": "Ich habe keine persönliche E-Mail-Adresse",
+              "continue_own": "Ich habe eine persönliche E-Mail-Adresse",
+              "continue_existing_account": "Ich habe bereits ein Konto",
+              "back": "Zurück"
             },
-            "generate_lists": {
-                "menu_title": "Teilnehmendenliste generieren"
+            "fields": {
+              "email": {
+                "label": "E-Mail-Adresse"
+              },
+              "confirm_email": {
+                "label": "E-Mail-Adresse bestätigen"
+              }
+            }
+          },
+          "register": {
+            "title": "Konto",
+            "fields": {
+              "first_name": {
+                "label": "Vorname"
+              },
+              "last_name": {
+                "label": "Nachname"
+              },
+              "username": {
+                "label": "Benutzername"
+              },
+              "password": {
+                "label": "Passwort"
+              },
+              "confirm_password": {
+                "label": "Passwort bestätigen"
+              }
+            }
+          },
+          "contact_details": {
+            "title": "Kontaktinformationen",
+            "fields": {
+              "first_name": {
+                "label": "Vorname"
+              },
+              "last_name": {
+                "label": "Nachname"
+              },
+              "date_of_birth": {
+                "label": "Geburtsdatum"
+              },
+              "sex": {
+                "label": "Geschlecht",
+                "help_text": "Aus verschiedenen Gründen, z. B. weil wir aus rechtlichen Gründen nachts eine geschlechtergetrennte Unterbringung einhalten müssen, müssen wir wissen, ob du ein Junge oder ein Mädchen bist."
+              },
+              "street": {
+                "label": "Straße"
+              },
+              "housenumber": {
+                "label": "Hausnummer"
+              },
+              "postal_code": {
+                "label": "Postleitzahl"
+              },
+              "place": {
+                "label": "Ort"
+              },
+              "email": {
+                "label": "E-Mail-Adresse",
+                "help_text": "Bitte gib hier deine persönliche E-Mail-Adresse an, die du regelmäßig abrufst. Wichtige Informationen werden immer auch an deine Eltern gesendet. Verwende hier keine E-Mail-Adresse deiner Eltern."
+              },
+              "mobile_number": {
+                "label": "Handynummer",
+                "help_text": "Deine Handynummer hilft uns, dich im Notfall während der Veranstaltung zu erreichen, z. B. wenn du mit deiner Gruppe auf einer Konferenz unterwegs bist. Falls du kein Handy hast, kannst du das Feld leer lassen."
+              },
+              "school": {
+                "label": "Schule",
+                "help_text": "Bitte gib den Namen deiner Schule ein."
+              },
+              "school_place": {
+                "label": "Schulort",
+                "help_text": "Gib den Ort (Stadt) an, in dem sich deine Schule befindet."
+              },
+              "school_class": {
+                "label": "Klasse",
+                "help_text": "Bitte gib deine aktuelle Klasse an (z. B. 8a)."
+              }
+            }
+          },
+          "guardians": {
+            "title": "Erziehungsberechtigte",
+            "counter": "Erziehungsberechtigter {i}",
+            "add": "Erziehungsberechtigten hinzufügen",
+            "fields": {
+              "first_name": {
+                "label": "Vorname des Erziehungsberechtigten",
+                "help_text": "Bitte gib den Vornamen des Erziehungsberechtigten an, der das Anmeldeformular mit dir ausfüllt und während der Veranstaltung in Notfällen erreichbar ist."
+              },
+              "last_name": {
+                "label": "Nachname des Erziehungsberechtigten",
+                "help_text": "Bitte gib den Nachnamen des Erziehungsberechtigten an, der das Anmeldeformular mit dir ausfüllt und während der Veranstaltung in Notfällen erreichbar ist."
+              },
+              "email": {
+                "label": "E-Mail-Adresse des Erziehungsberechtigten"
+              },
+              "mobile_number": {
+                "label": "Handynummer des Erziehungsberechtigten",
+                "help_text": "Wir benötigen die Handynummer für Notfälle, falls wir deine Eltern während der Veranstaltung dringend erreichen müssen."
+              }
+            }
+          },
+          "additional": {
+            "title": "Zusätzliche Informationen",
+            "fields": {
+              "medical_information": {
+                "label": "Medizinische Informationen / Unverträglichkeiten",
+                "help_text": "Falls es medizinisch wichtige Dinge gibt, die wir beachten müssen, z. B. bei der Essenszubereitung oder zur Einnahme verschriebener Medikamente, gib diese bitte hier an."
+              }
+            }
+          },
+          "financial": {
+            "title": "Bezahlung",
+            "help_text": {
+              "cost": "Tatsächliche Kosten",
+              "max_cost": "Maximal zu zahlender Betrag",
+              "min_cost": "Minimal zu zahlender Betrag",
+              "cost_info": "Unser Verein möchte allen Kindern und Jugendlichen die Teilnahme an unseren Veranstaltungen ermöglichen. Manchmal können Familien jedoch nicht die volle Gebühr zahlen. Deshalb haben wir ein Budget, aus dem wir die Teilnahme fördern können, wenn die Notwendigkeit geprüft wurde. Dieses Budget basiert auf Spenden. Falls du freiwillig einen zusätzlichen Betrag für dieses Budget spenden möchtest, gib bitte einen Betrag über den tatsächlichen Kosten an. Falls du die volle Gebühr nicht zahlen kannst, gib bitte einen Betrag an, der zu deinen finanziellen Möglichkeiten passt."
             },
-            "manage_events": {
-                "menu_title": "Veranstaltungen verwalten"
+            "fields": {
+              "payment_method": {
+                "label": "Zahlungsmethode",
+                "help_text": "Bitte wähle eine Zahlungsmethode. Die tatsächliche Zahlung erfolgt nach der Anmeldung."
+              },
+              "voucher_code": {
+                "label": "Gutscheincode",
+                "help_text": "Falls du einen Gutscheincode hast, gib ihn hier ein."
+              },
+              "amount": {
+                "label": "Von dir gezahlter Betrag (in €)"
+              }
+            }
+          },
+          "consent": {
+            "title": "Einverständniserklärung",
+            "fields": {
+              "retraction_consent": {
+                "label": "Ich bestätige, dass die Rücknahme der Anmeldung nach dem {date} nicht mehr möglich ist."
+              }
             }
+          },
+          "confirm": {
+            "title": "Bestätigen",
+            "hint": "Nach diesem Schritt kannst du deine Anmeldung nicht mehr bearbeiten.",
+            "fields": {
+              "comment": {
+                "label": "Weitere Anmerkungen",
+                "help_text": "Hier kannst du uns zusätzliche Anmerkungen mitteilen."
+              }
+            }
+          }
         },
-        "register": {
-            "menu_title": "Registrieren"
+        "rules": {
+          "email": {
+            "valid": "Dies ist keine gültige E-Mail-Adresse"
+          },
+          "confirm_email": {
+            "no_match": "Die E-Mail-Adressen stimmen nicht überein"
+          },
+          "confirm_password": {
+            "no_match": "Die Passwörter stimmen nicht überein"
+          },
+          "amount": {
+            "too_high": "Der Betrag ist höher als der maximal zu zahlende Betrag.",
+            "too_low": "Der Betrag ist niedriger als der minimal zu zahlende Betrag."
+          }
         },
-        "event_additional_field": {
-            "create": "Zusätzliche Felder für Veranstaltungen erstellen",
-            "title": "Zusätzliches Feld für Veranstaltung",
-            "field_title": "Titel",
-            "title_plural": "Zusätzliche Felder für Veranstaltungen",
-            "menu_title": "Zusätzliche Felder für Veranstaltungen",
-            "field_type": {
-                "form_field_name": "Feld-Typ",
-                "BOOLEANFIELD": "Boolescher Wert (Ja/Nein)",
-                "CHARFIELD": "Text (einzeilig)",
-                "DATEFIELD": "Datum",
-                "DATETIMEFIELD": "Datum und Uhrzeit",
-                "DECIMALFIELD": "Dezimalzahl",
-                "EMAILFIELD": "E-Mail-Adresse",
-                "INTEGERFIELD": "Zahl",
-                "GENERICIPADDRESSFIELD": "IP-Adresse",
-                "NULLBOOLEANFIELD": "Boolescher Wert oder leer (Ja/Nein/Leer)",
-                "TEXTFIELD": "Text (mehrzeilig)",
-                "TIMEFIELD": "Uhrzeit",
-                "URLFIELD": "URL / Link"
-            },
-            "required": {
-                "form_field_name": "Verpflichtend",
-                "required": "Verpflichtend",
-                "optional": "Optional"
-            },
-            "help_text": "Hilfe-Text"
+        "help_text": {
+          "guardian": "Für Erziehungsberechtigte",
+          "participant": "Für Teilnehmende"
         }
+      }
     }
+  }
 }
diff --git a/aleksis/apps/paweljong/frontend/messages/en.json b/aleksis/apps/paweljong/frontend/messages/en.json
index 802ccc0578ca5f59c36d54c9e4ec80ffabf1d61f..b7c54f83e1183e08fd1807253483f07559714901 100644
--- a/aleksis/apps/paweljong/frontend/messages/en.json
+++ b/aleksis/apps/paweljong/frontend/messages/en.json
@@ -51,6 +51,196 @@
         "optional": "Optional"
       },
       "help_text": "Helptext"
+    },
+    "event_registration": {
+      "form": {
+        "submitted": {
+          "thank_you": "Thanks!",
+          "submitted_successfully": "Your registration was submitted successfully.",
+          "payment_text": "You need to finish the payment process for your registration.",
+          "payment_button": "Finish payment"
+        },
+        "steps": {
+          "email": {
+            "title": "E-Mail address",
+            "choose_mode": {
+              "help_text": "Every person needs a personal e-mail address. This address must be one that you, the participating child, check and read yourself, not one owned by your parents. If you do not have a personal e-mail address yet, and do not want or cannot register one with one of the \"big\" providers (keep in mind that Google, Outlook, etc. are allowed from 16 years only, and often collect and analyse your private mail), you can register an e-mail address with us.",
+              "continue_aleksis": "I don't have a personal email address",
+              "continue_own": "I have a personal email address",
+              "continue_existing_account": "I already have an account",
+              "back": "Go back"
+            },
+            "fields": {
+              "email": {
+                "label": "E-Mail address"
+              },
+              "confirm_email": {
+                "label": "Confirm e-mail address"
+              }
+            }
+          },
+          "register": {
+            "title": "Account",
+            "fields": {
+              "first_name": {
+                "label": "First name"
+              },
+              "last_name": {
+                "label": "Last name"
+              },
+              "username": {
+                "label": "Username"
+              },
+              "password": {
+                "label": "Password"
+              },
+              "confirm_password": {
+                "label": "Confirm password"
+              }
+            }
+          },
+          "contact_details": {
+            "title": "Contact information",
+            "fields": {
+              "first_name": {
+                "label": "First name"
+              },
+              "last_name": {
+                "label": "Last name"
+              },
+              "date_of_birth": {
+                "label": "Date of birth"
+              },
+              "sex": {
+                "label": "Sex",
+                "help_text": "For various reasons, e.g. because we have to keep gender segregation during the night for legal reasons, we need to know if you are a boy or a girl."
+              },
+              "street": {
+                "label": "Street"
+              },
+              "housenumber": {
+                "label": "Housenumber"
+              },
+              "postal_code": {
+                "label": "Postal code"
+              },
+              "place": {
+                "label": "Place"
+              },
+              "email": {
+                "label": "E-Mail address",
+                "help_text": "Please use your personal e-mail address here, which you will check personally. Important information will always be sent to your parents as well. Do not use an e-mail address owned by your parents here."
+              },
+              "mobile_number": {
+                "label": "Mobile number",
+                "help_text": "Your mobile number helps us to reach you in an emergency during the event, e.g. if you are alone with your group at a conference or similar. If you don't have a cell phone, you can leave the field blank."
+              },
+              "school": {
+                "label": "School",
+                "help_text": "Please enter the name of your school."
+              },
+              "school_place": {
+                "label": "School place",
+                "help_text": "Enter the place (city) where your school is located."
+              },
+              "school_class": {
+                "label": "School class",
+                "help_text": "Please enter the class you are in (e.g. 8a)."
+              }
+            }
+          },
+          "guardians": {
+            "title": "Legal guardians",
+            "counter": "Guardian {i}",
+            "add": "Add guardian",
+            "fields": {
+              "first_name": {
+                "label": "Guardian's first name",
+                "help_text": "Please enter the first name of the legal guardian who will fill in the registration with you and who can be reached during the event in an emergency."
+              },
+              "last_name": {
+                "label": "Guardian's last name",
+                "help_text": "Please enter the last name of the legal guardian who will fill in the registration with you and who can be reached during the event in an emergency."
+              },
+              "email": {
+                "label": "Guardian's email address"
+              },
+              "mobile_number": {
+                "label": "Guardian's mobile number",
+                "help_text": "We need the mobile phone number for emergencies if we urgently need to reach your parents during the event."
+              }
+            }
+          },
+          "additional": {
+            "title": "Additional information",
+            "fields": {
+              "medical_information": {
+                "label": "Medical information / intolerances",
+                "help_text": "If there are any medically important things we need to consider, e.g. when making food or to make sure you take prescribed medication, please enter it here."
+              }
+            }
+          },
+          "financial": {
+            "title": "Payment",
+            "help_text": {
+              "cost": "Real costs",
+              "max_cost": "Maximal payable amount",
+              "min_cost": "Minimal payable amount",
+              "cost_info": "Our association would like to offer all children and young people the opportunity to participate in our events. Sometimes, however, families cannot afford the full fee. We therefore have a budget from which we can promote participation after we have carefully examined the necessity and eligibility. We rely on donations for this budget. If you would like to donate a voluntary additional amount for this budget, please enter an amount higher than our costs. If you cannot afford the full fee, please enter an amount that fits your financial capacities."
+            },
+            "fields": {
+              "payment_method": {
+                "label": "Payment method",
+                "help_text": "Please choose a payment method. The actual payment will be made after the registration."
+              },
+              "voucher_code": {
+                "label": "Voucher code",
+                "help_text": "If you have a voucher code, type it in here."
+              },
+              "amount": {
+                "label": "Amount paid by you (in €)"
+              }
+            }
+          },
+          "consent": {
+            "title": "Consent",
+            "fields": {
+              "retraction_consent": {
+                "label": "I confirm that the retraction of the registration is not possible anymore after {date}"
+              }
+            }
+          },
+          "confirm": {
+            "title": "Confirm",
+            "hint": "After this step, you won't be able to edit your registration.",
+            "fields": {
+              "comment": {
+                "label": "Other remarks",
+                "help_text": "You can write down any remarks you want to tell us here."
+              }
+            }
+          }
+        },
+        "rules": {
+          "email": {
+            "valid": "This is not a valid e-mail address"
+          },
+          "confirm_email": {
+            "no_match": "The e-mail addresses do not match"
+          },
+          "confirm_password": {
+            "no_match": "The passwords do not match"
+          },
+          "amount": {
+            "too_high": "The amount is higher than the maximal payable amount.",
+            "too_low": "The amount is lower than the minimal payable amount."
+          }
+        },
+        "help_text": {
+          "guardian": "For guardians",
+          "participant": "For participants"
+        }
+      }
     }
   }
 }
diff --git a/aleksis/apps/paweljong/locale/ar/LC_MESSAGES/django.po b/aleksis/apps/paweljong/locale/ar/LC_MESSAGES/django.po
index 83c955cf6483247a5773f555eef4510b45ac0aad..ba796c2843d0ef8be66f4f495afad71759736209 100644
--- a/aleksis/apps/paweljong/locale/ar/LC_MESSAGES/django.po
+++ b/aleksis/apps/paweljong/locale/ar/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-02-15 18:11+0000\n"
+"POT-Creation-Date: 2025-02-15 18:23+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -70,8 +70,8 @@ msgstr ""
 msgid "Creative Commons with attribution and distribution only under the same conditions, 4.0 or later"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:60 aleksis/apps/paweljong/forms.py:489
-#: aleksis/apps/paweljong/forms.py:613
+#: aleksis/apps/paweljong/forms.py:60 aleksis/apps/paweljong/forms.py:507
+#: aleksis/apps/paweljong/forms.py:632
 msgid "Base data"
 msgstr ""
 
@@ -79,11 +79,11 @@ msgstr ""
 msgid "Date data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:65
+#: aleksis/apps/paweljong/forms.py:66
 msgid "Event details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:66 aleksis/apps/paweljong/models.py:172
+#: aleksis/apps/paweljong/forms.py:72 aleksis/apps/paweljong/models.py:176
 #: aleksis/apps/paweljong/templates/paweljong/event/terms.html:4
 #: aleksis/apps/paweljong/templates/paweljong/event/terms.html:5
 #: aleksis/apps/paweljong/templates/paweljong/term/list.html:6
@@ -91,14 +91,14 @@ msgstr ""
 msgid "Terms"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:67 aleksis/apps/paweljong/models.py:175
+#: aleksis/apps/paweljong/forms.py:73 aleksis/apps/paweljong/models.py:179
 #: aleksis/apps/paweljong/templates/paweljong/info_mailing/list.html:6
 #: aleksis/apps/paweljong/templates/paweljong/info_mailing/list.html:7
 msgid "Info mailings"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:110 aleksis/apps/paweljong/forms.py:245
-#: aleksis/apps/paweljong/forms.py:626 aleksis/apps/paweljong/models.py:190
+#: aleksis/apps/paweljong/forms.py:118 aleksis/apps/paweljong/forms.py:259
+#: aleksis/apps/paweljong/forms.py:645 aleksis/apps/paweljong/models.py:194
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:22
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:12
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:42
@@ -107,13 +107,13 @@ msgstr ""
 msgid "Date of birth"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:111 aleksis/apps/paweljong/forms.py:250
-#: aleksis/apps/paweljong/models.py:191
+#: aleksis/apps/paweljong/forms.py:119 aleksis/apps/paweljong/forms.py:264
+#: aleksis/apps/paweljong/models.py:195
 msgid "Sex"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:112 aleksis/apps/paweljong/forms.py:266
-#: aleksis/apps/paweljong/models.py:192
+#: aleksis/apps/paweljong/forms.py:120 aleksis/apps/paweljong/forms.py:285
+#: aleksis/apps/paweljong/models.py:196
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:15
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:45
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:18
@@ -121,12 +121,12 @@ msgstr ""
 msgid "Street"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:113 aleksis/apps/paweljong/models.py:193
+#: aleksis/apps/paweljong/forms.py:121 aleksis/apps/paweljong/models.py:197
 msgid "House number"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:114 aleksis/apps/paweljong/forms.py:276
-#: aleksis/apps/paweljong/models.py:194
+#: aleksis/apps/paweljong/forms.py:122 aleksis/apps/paweljong/forms.py:295
+#: aleksis/apps/paweljong/models.py:198
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:17
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:47
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:20
@@ -134,19 +134,19 @@ msgstr ""
 msgid "Postal code"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:115 aleksis/apps/paweljong/forms.py:281
-#: aleksis/apps/paweljong/models.py:195
+#: aleksis/apps/paweljong/forms.py:123 aleksis/apps/paweljong/forms.py:300
+#: aleksis/apps/paweljong/models.py:199
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:18
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:48
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:11
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:39
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:41
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:21
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:70
 msgid "Place"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:116 aleksis/apps/paweljong/forms.py:296
-#: aleksis/apps/paweljong/models.py:196
+#: aleksis/apps/paweljong/forms.py:124 aleksis/apps/paweljong/forms.py:314
+#: aleksis/apps/paweljong/models.py:200
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:22
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:23
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:14
@@ -160,86 +160,86 @@ msgstr ""
 msgid "Mobile number"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:117 aleksis/apps/paweljong/forms.py:325
-#: aleksis/apps/paweljong/models.py:197
+#: aleksis/apps/paweljong/forms.py:125 aleksis/apps/paweljong/forms.py:343
+#: aleksis/apps/paweljong/models.py:201
 msgid "School details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:139
+#: aleksis/apps/paweljong/forms.py:148
 msgid "Event the voucher is valid for"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:140
+#: aleksis/apps/paweljong/forms.py:149
 msgid "Person the voucher is valid for"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:141
+#: aleksis/apps/paweljong/forms.py:150
 msgid "Voucher discount"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:149 aleksis/apps/paweljong/models.py:156
+#: aleksis/apps/paweljong/forms.py:158 aleksis/apps/paweljong/models.py:156
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:8
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:36
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:38
 msgid "Group"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:151
+#: aleksis/apps/paweljong/forms.py:160
 msgid "Select group to generate list"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:155
+#: aleksis/apps/paweljong/forms.py:164
 msgid "Template"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:157
+#: aleksis/apps/paweljong/forms.py:166
 msgid "Select template to generate list"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:161
+#: aleksis/apps/paweljong/forms.py:170
 msgid "Landscape"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:162
+#: aleksis/apps/paweljong/forms.py:171
 msgid "Select if output should be in landscape"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:174
+#: aleksis/apps/paweljong/forms.py:183
 msgid "Guardians personal data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:178
+#: aleksis/apps/paweljong/forms.py:187
 msgid "Guardians contact details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:184
+#: aleksis/apps/paweljong/forms.py:193
 msgid "Guardian's first name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:186
+#: aleksis/apps/paweljong/forms.py:195
 msgid "Please enter the first name of the legal guardian who will fill in the registration with you and who can be reached during the event in an emergency."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:192
+#: aleksis/apps/paweljong/forms.py:201
 msgid "Guardian's last name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:194
+#: aleksis/apps/paweljong/forms.py:203
 msgid "Please enter the last name of the legal guardian who will fill in the registration with you and who can be reached during the event in an emergency."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:200
+#: aleksis/apps/paweljong/forms.py:209
 msgid "Guardian's mobile number"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:202
+#: aleksis/apps/paweljong/forms.py:211
 msgid "We need the mobile phone number for emergencies if we urgently need to reach your parents during the event."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:208
+#: aleksis/apps/paweljong/forms.py:217
 msgid "Guardian's email address"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:220 aleksis/apps/paweljong/models.py:42
+#: aleksis/apps/paweljong/forms.py:230 aleksis/apps/paweljong/models.py:42
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:10
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:24
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:40
@@ -251,8 +251,8 @@ msgstr ""
 msgid "Name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:231 aleksis/apps/paweljong/forms.py:500
-#: aleksis/apps/paweljong/forms.py:624
+#: aleksis/apps/paweljong/forms.py:242 aleksis/apps/paweljong/forms.py:518
+#: aleksis/apps/paweljong/forms.py:643
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:20
 #: aleksis/apps/paweljong/templates/paweljong/print/list_attendance.html:20
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:21
@@ -260,8 +260,8 @@ msgstr ""
 msgid "First name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:236 aleksis/apps/paweljong/forms.py:501
-#: aleksis/apps/paweljong/forms.py:625
+#: aleksis/apps/paweljong/forms.py:247 aleksis/apps/paweljong/forms.py:519
+#: aleksis/apps/paweljong/forms.py:644
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:19
 #: aleksis/apps/paweljong/templates/paweljong/print/list_attendance.html:19
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:20
@@ -269,15 +269,15 @@ msgstr ""
 msgid "Last name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:252
+#: aleksis/apps/paweljong/forms.py:266
 msgid "For various reasons, e.g. because we have to keep gender segregation during the night for legal reasons, we need to know if you are a boy or a girl."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:258
+#: aleksis/apps/paweljong/forms.py:272
 msgid "Personal information"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:271
+#: aleksis/apps/paweljong/forms.py:290
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:16
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:46
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:19
@@ -285,11 +285,11 @@ msgstr ""
 msgid "Housenumber"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:283
+#: aleksis/apps/paweljong/forms.py:302
 msgid "Address data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:287
+#: aleksis/apps/paweljong/forms.py:305
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:13
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:25
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:43
@@ -301,97 +301,97 @@ msgstr ""
 msgid "Email address"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:289
+#: aleksis/apps/paweljong/forms.py:307
 msgid "Please use your personal e-mail address here, which you will check personally. Important information will always be sent to your parents as well. Do not use an e-mail address owned by your parents here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:299
+#: aleksis/apps/paweljong/forms.py:317
 msgid "Your mobile number helps us to reach you in an emergency during the event, e.g. if you are alone with your group at a conference or similar. If you don't have a cell phone, you can leave the field blank."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:308
+#: aleksis/apps/paweljong/forms.py:326
 #: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:72
 msgid "Contact details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:313
+#: aleksis/apps/paweljong/forms.py:331
 msgid "School"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:314
+#: aleksis/apps/paweljong/forms.py:332
 msgid "Please enter the name of your school."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:317
+#: aleksis/apps/paweljong/forms.py:335
 msgid "School place"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:318
+#: aleksis/apps/paweljong/forms.py:336
 msgid "Enter the place (city) where your school is located."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:321 aleksis/apps/paweljong/models.py:341
+#: aleksis/apps/paweljong/forms.py:339 aleksis/apps/paweljong/models.py:343
 msgid "School class"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:322
+#: aleksis/apps/paweljong/forms.py:340
 msgid "Please enter the class you are in (e.g. 8a)."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:332 aleksis/apps/paweljong/models.py:346
+#: aleksis/apps/paweljong/forms.py:350 aleksis/apps/paweljong/models.py:350
 msgid "Medical information / intolerances"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:336
+#: aleksis/apps/paweljong/forms.py:354
 msgid "Other remarks"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:346
+#: aleksis/apps/paweljong/forms.py:364
 msgid "If there are any medically important things we need to consider, e.g. when making food or to make sure you take prescribed medication, please enter it here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:350
+#: aleksis/apps/paweljong/forms.py:368
 msgid "You can write down any remarks you want to tell us here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:375
+#: aleksis/apps/paweljong/forms.py:393
 msgid "Financial data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:382
+#: aleksis/apps/paweljong/forms.py:400
 msgid "Voucher code"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:383
+#: aleksis/apps/paweljong/forms.py:401
 msgid "If you have a voucher code, type it in here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:388
+#: aleksis/apps/paweljong/forms.py:406
 msgid "Payment method"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:390
+#: aleksis/apps/paweljong/forms.py:408
 msgid "Please choose a payment method. The actual payment will be made after the registration."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:415
+#: aleksis/apps/paweljong/forms.py:433
 msgid "Our association would like to offer all children and young people the opportunity to participate in our events. Sometimes, however, families cannot afford the full fee. We therefore have a budget from which we can promote participation after we have carefully examined the necessity and eligibility. We rely on donations for this budget. If you would like to donate a voluntary additional amount for this budget, please indicate this here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:447
+#: aleksis/apps/paweljong/forms.py:465
 msgid "I confirm that the retraction of the registration is not possible anymore after {}"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:493 aleksis/apps/paweljong/forms.py:617
+#: aleksis/apps/paweljong/forms.py:511 aleksis/apps/paweljong/forms.py:636
 msgid "Account data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:507 aleksis/apps/paweljong/forms.py:632
+#: aleksis/apps/paweljong/forms.py:525 aleksis/apps/paweljong/forms.py:651
 msgid "The username must only contain lower case letters and numbers, and must begin with a letter."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:552 aleksis/apps/paweljong/forms.py:576
-#: aleksis/apps/paweljong/models.py:309 aleksis/apps/paweljong/models.py:337
+#: aleksis/apps/paweljong/forms.py:570 aleksis/apps/paweljong/forms.py:594
+#: aleksis/apps/paweljong/models.py:311 aleksis/apps/paweljong/models.py:339
 #: aleksis/apps/paweljong/tables.py:46
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:8
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:38
@@ -400,19 +400,19 @@ msgstr ""
 msgid "Person"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:554 aleksis/apps/paweljong/forms.py:577
+#: aleksis/apps/paweljong/forms.py:572 aleksis/apps/paweljong/forms.py:595
 msgid "Please enter a username."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:570 aleksis/apps/paweljong/models.py:513
+#: aleksis/apps/paweljong/forms.py:588 aleksis/apps/paweljong/models.py:522
 msgid "Comment"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:571
+#: aleksis/apps/paweljong/forms.py:589
 msgid "Please enter a comment describing the checkpoint (e.g. Dinner)."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:583
+#: aleksis/apps/paweljong/forms.py:601
 msgid "Submit geolocation"
 msgstr ""
 
@@ -542,7 +542,7 @@ msgstr ""
 
 #: aleksis/apps/paweljong/models.py:158
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:9
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:37
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:39
 msgid "Description"
 msgstr ""
 
@@ -556,54 +556,62 @@ msgstr ""
 
 #: aleksis/apps/paweljong/models.py:164
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:12
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:40
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:42
 msgid "Date of event"
 msgstr ""
 
 #: aleksis/apps/paweljong/models.py:165
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:13
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:41
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:43
 msgid "Registration deadline"
 msgstr ""
 
 #: aleksis/apps/paweljong/models.py:166
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:14
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:42
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:44
 msgid "Retraction deadline"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:169 aleksis/apps/paweljong/models.py:372
+#: aleksis/apps/paweljong/models.py:169 aleksis/apps/paweljong/models.py:376
 msgid "Cost in €"
 msgstr ""
 
 #: aleksis/apps/paweljong/models.py:170
+msgid "Minimum cost in €"
+msgstr ""
+
+#: aleksis/apps/paweljong/models.py:172
+msgid "Maximum cost in €"
+msgstr ""
+
+#: aleksis/apps/paweljong/models.py:174
 msgid "Maximum participants"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:171
+#: aleksis/apps/paweljong/models.py:175
 msgid "Information about the event"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:182
+#: aleksis/apps/paweljong/models.py:186
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:80
 msgid "Additional fields"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:201
+#: aleksis/apps/paweljong/models.py:204
 msgid "Contact information fields to be shown."
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:286
+#: aleksis/apps/paweljong/models.py:288
 msgid "Sent to persons"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:295 aleksis/apps/paweljong/models.py:296
+#: aleksis/apps/paweljong/models.py:297 aleksis/apps/paweljong/models.py:298
 #: aleksis/apps/paweljong/templates/paweljong/voucher/list.html:6
 #: aleksis/apps/paweljong/templates/paweljong/voucher/list.html:7
 msgid "Vouchers"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:302 aleksis/apps/paweljong/models.py:335
+#: aleksis/apps/paweljong/models.py:304 aleksis/apps/paweljong/models.py:337
 #: aleksis/apps/paweljong/tables.py:12 aleksis/apps/paweljong/tables.py:43
 #: aleksis/apps/paweljong/templates/paweljong/event/full.html:4
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:8
@@ -613,109 +621,109 @@ msgstr ""
 msgid "Event"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:318
+#: aleksis/apps/paweljong/models.py:320
 msgid "Used by"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:338
+#: aleksis/apps/paweljong/models.py:340
 msgid "Registration date"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:340
+#: aleksis/apps/paweljong/models.py:342
 msgid "Name of school"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:342
+#: aleksis/apps/paweljong/models.py:345
 msgid "Place of the school"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:344
+#: aleksis/apps/paweljong/models.py:348
 msgid "Comment / remarks"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:351
+#: aleksis/apps/paweljong/models.py:355
 msgid "Voucher"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:355
+#: aleksis/apps/paweljong/models.py:359
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:31
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:80
 msgid "Donation"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:358
+#: aleksis/apps/paweljong/models.py:362
 msgid "Accepted terms"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:363
+#: aleksis/apps/paweljong/models.py:367
 msgid "States"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:366
+#: aleksis/apps/paweljong/models.py:370
 msgid "Retracted"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:367
+#: aleksis/apps/paweljong/models.py:371
 msgid "Retracted at"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:369
+#: aleksis/apps/paweljong/models.py:373
 msgid "Checked in"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:370
+#: aleksis/apps/paweljong/models.py:374
 msgid "Checked in at"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:380 aleksis/apps/paweljong/views.py:1029
+#: aleksis/apps/paweljong/models.py:384 aleksis/apps/paweljong/views.py:1038
 msgid "Person is already checked in!"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:417
+#: aleksis/apps/paweljong/models.py:426
 msgid "Participation of {} in event {}"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:446
+#: aleksis/apps/paweljong/models.py:455
 msgid "Social Sponsoring / Extra Donation"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:457
+#: aleksis/apps/paweljong/models.py:466
 msgid "Voucher / Granted discount"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:487 aleksis/apps/paweljong/views.py:427
+#: aleksis/apps/paweljong/models.py:496 aleksis/apps/paweljong/views.py:429
 msgid "Event registration"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:488
+#: aleksis/apps/paweljong/models.py:497
 msgid "Event registrations"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:498
+#: aleksis/apps/paweljong/models.py:507
 msgid "Related event"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:502
+#: aleksis/apps/paweljong/models.py:511
 msgid "Checked person"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:508
+#: aleksis/apps/paweljong/models.py:517
 msgid "Checked by person"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:515
+#: aleksis/apps/paweljong/models.py:524
 msgid "Date and time of check"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:517
+#: aleksis/apps/paweljong/models.py:526
 msgid "Latitude of check"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:520
+#: aleksis/apps/paweljong/models.py:529
 msgid "Longitude of check"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:528
+#: aleksis/apps/paweljong/models.py:536
 msgid "Can generate lists of participants of a group"
 msgstr ""
 
@@ -727,9 +735,122 @@ msgstr ""
 msgid "Mail recipient for event notifications"
 msgstr ""
 
+#: aleksis/apps/paweljong/preferences.py:32
+msgid "Name of client linked to invoices for events."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:43
+msgid "Name of invoice group used for events."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:53
+msgid "Participant help text for email step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:65
+msgid "Participant help text for account registration step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:77
+msgid "Participant help text for contact details step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:88
+msgid "Participant help text for guardians step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:100
+msgid "Participant help text for additional information step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:112
+msgid "Participant help text for financial step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:123
+msgid "Participant help text for consent step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:134
+msgid "Participant help text for confirmation step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:145
+msgid "Guardian help text for email step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:157
+msgid "Guardian help text for account registration step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:169
+msgid "Guardian help text for contact details step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:180
+msgid "Guardian help text for guardians step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:192
+msgid "Guardian help text for additional information step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:204
+msgid "Guardian help text for financial step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:215
+msgid "Guardian help text for consent step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:226
+msgid "Guardian help text for confirmation step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:61
+msgid "Retraction consent is required"
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:71
+msgid "Mail domain does not exist."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:78
+msgid "Mail address already in use."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:92
+msgid "A user with this username or e-mail already exists."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:109
+#: aleksis/apps/paweljong/schema/event_registration.py:149
+#, python-format
+msgid "A person using the e-mail address %s already exists."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:191
+msgid "The field 'Amount paid by you' is required."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:214
+msgid "The field 'Payment method' is required."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:239
+#: aleksis/apps/paweljong/views.py:718
+msgid "You registered for an event"
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:240
+#: aleksis/apps/paweljong/views.py:719
+#, python-format
+msgid "You registered for the event %s"
+msgstr ""
+
 #: aleksis/apps/paweljong/tables.py:14
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:16
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:44
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:18
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:48
 msgid "Max. participants"
 msgstr ""
 
@@ -844,8 +965,8 @@ msgid "of"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:62
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:17
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:45
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:19
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:49
 msgid "Owners"
 msgstr ""
 
@@ -874,8 +995,11 @@ msgstr ""
 msgid "Edit event"
 msgstr ""
 
+#: aleksis/apps/paweljong/templates/paweljong/event/full.html:37
+msgid "Self-determined"
+msgstr ""
+
 #: aleksis/apps/paweljong/templates/paweljong/event/full.html:58
-#: aleksis/apps/paweljong/templates/paweljong/event/full.html:60
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:109
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:119
 #: aleksis/apps/paweljong/templates/paweljong/register_start.html:57
@@ -883,7 +1007,7 @@ msgstr ""
 msgid "Register now"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event/full.html:62
+#: aleksis/apps/paweljong/templates/paweljong/event/full.html:60
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:85
 msgid "Not available"
 msgstr ""
@@ -894,7 +1018,7 @@ msgid "Events"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/list.html:10
-#: aleksis/apps/paweljong/views.py:789
+#: aleksis/apps/paweljong/views.py:798
 msgid "Upcoming events"
 msgstr ""
 
@@ -1088,24 +1212,24 @@ msgstr ""
 msgid "No checked in yet."
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:241
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:242
 msgid "Invoice details"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:247
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:248
 msgid "Billing information"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:279
-#: aleksis/apps/paweljong/views.py:456
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:280
+#: aleksis/apps/paweljong/views.py:458
 msgid "Payment"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:310
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:311
 msgid "Mark payed"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:323
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:325
 msgid "Guardians / Parents "
 msgstr ""
 
@@ -1308,8 +1432,8 @@ msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:30
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:61
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:26
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:61
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:28
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:65
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:49
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:103
 msgid "Your AlekSIS team"
@@ -1320,23 +1444,33 @@ msgid "New event"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:6
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:31
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:33
 #, python-format
 msgid " An event was created: %(new_event)s"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:10
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:38
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:40
 msgid "Published"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:15
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:43
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:45
 msgid "Cost"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:22
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:55
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:16
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:46
+msgid "Minimum cost"
+msgstr ""
+
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:17
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:47
+msgid "Maximum cost"
+msgstr ""
+
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:24
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:59
 #, python-format
 msgid ""
 "\n"
@@ -1384,123 +1518,114 @@ msgstr ""
 msgid "The registration has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:235
+#: aleksis/apps/paweljong/views.py:236
 msgid "The registration has been deleted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:247
+#: aleksis/apps/paweljong/views.py:248
 msgid "The voucher has been created."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:259
+#: aleksis/apps/paweljong/views.py:260
 msgid "The voucher has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:269
+#: aleksis/apps/paweljong/views.py:270
 msgid "The voucher has been deleted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:418
+#: aleksis/apps/paweljong/views.py:420
 msgid "Create e-mail address"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:420
+#: aleksis/apps/paweljong/views.py:422
 msgid "All participants need a personal e-mail address, which they check and read temselves. We offer the possibility to register an e-mail address on our secure servers, made for young users. For information about receiving mails, see: <a href='https://wiki.teckids.org/de/Dienste/E-Mail'>https://wiki.teckids.org/de/Dienste/E-Mail</a>."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:429
+#: aleksis/apps/paweljong/views.py:431
 msgid "First, please enter some basic information about yourself, and check whether all information is correct."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:433
+#: aleksis/apps/paweljong/views.py:435
 msgid "Contact information"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:435
+#: aleksis/apps/paweljong/views.py:437
 msgid "Tell us how we can contact you. You will receive information about the event by e-mail. Please use your personal e-mail address where you will read mails yourself, not an address of your parents. We will always send all important information to your parents as well, and you will enter their e-mail address on the next page."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:442
+#: aleksis/apps/paweljong/views.py:444
 msgid "Legal guardians / parents"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:444
+#: aleksis/apps/paweljong/views.py:446
 msgid "Tell us how we can reach your parents or other legal guardians. This should be the person who was present when you registered for the event (which is now). If you want to add another parent, please tell us later as a comment."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:450
+#: aleksis/apps/paweljong/views.py:452
 msgid "Additional registration information"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:452
+#: aleksis/apps/paweljong/views.py:454
 msgid "Please answer the following questions as precisely as you can, so we can make sure your event attendance will be organised as wel las possible."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:458
+#: aleksis/apps/paweljong/views.py:460
 msgid "Please decide with your parents how you want to pay. In this step, you only select a payment method. The real payment will be done in a separate step, after the registration is complete."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:463
+#: aleksis/apps/paweljong/views.py:465
 msgid "Consent"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:465
+#: aleksis/apps/paweljong/views.py:467
 msgid "Lastly, please read the terms and conditions carefully, together with your parents. After that, you will need to confirm that you agree with everything yourself, and that your parents also agree."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:676
+#: aleksis/apps/paweljong/views.py:685
 msgid "You entered an invalid voucher code!"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:702
+#: aleksis/apps/paweljong/views.py:711
 msgid "You have successfully registered for the event. Please give us up to two days to process your registration. You will then receive an email from us."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:709
-msgid "You registered for an event"
-msgstr ""
-
-#: aleksis/apps/paweljong/views.py:710
-#, python-format
-msgid "You registered for the event %s"
-msgstr ""
-
-#: aleksis/apps/paweljong/views.py:770 aleksis/apps/paweljong/views.py:918
+#: aleksis/apps/paweljong/views.py:779 aleksis/apps/paweljong/views.py:927
 msgid "The term has been created."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:782 aleksis/apps/paweljong/views.py:930
+#: aleksis/apps/paweljong/views.py:791 aleksis/apps/paweljong/views.py:939
 msgid "The term has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:798
+#: aleksis/apps/paweljong/views.py:807
 msgid "Announcement feed of all upcoming events"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:838
+#: aleksis/apps/paweljong/views.py:847
 msgid "The info mailing has been created."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:850
+#: aleksis/apps/paweljong/views.py:859
 msgid "The info mailing has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:860
+#: aleksis/apps/paweljong/views.py:869
 msgid "The info mailing has been deleted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:943
+#: aleksis/apps/paweljong/views.py:952
 msgid "Registration successfully retracted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:1000
+#: aleksis/apps/paweljong/views.py:1009
 msgid "Person does not exist!"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:1027
+#: aleksis/apps/paweljong/views.py:1036
 msgid "Successfully checked in."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:1047
+#: aleksis/apps/paweljong/views.py:1056
 msgid "Successfully marked as payed!"
 msgstr ""
diff --git a/aleksis/apps/paweljong/locale/de_DE/LC_MESSAGES/django.po b/aleksis/apps/paweljong/locale/de_DE/LC_MESSAGES/django.po
index 59408dde8e376580ef7972d3ae78aa809bacd3eb..ca5389f29c65df937c27a4a7e6f6af928e727bfb 100644
--- a/aleksis/apps/paweljong/locale/de_DE/LC_MESSAGES/django.po
+++ b/aleksis/apps/paweljong/locale/de_DE/LC_MESSAGES/django.po
@@ -3,165 +3,149 @@
 # This file is distributed under the same license as the PACKAGE package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
+#, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-02-15 18:11+0000\n"
-"PO-Revision-Date: 2025-02-15 18:15+0000\n"
-"Last-Translator: Tom Teichler <tom.teichler@teckids.org>\n"
-"Language-Team: German <https://translate.edugit.org/projects/hacknfun/"
-"aleksis-app-paweljong/de/>\n"
-"Language: de_DE\n"
+"POT-Creation-Date: 2025-02-15 18:23+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 5.8.4\n"
 
 #: aleksis/apps/paweljong/data_checks.py:8
 msgid "Sync members"
-msgstr "Teilnehmer syncronisieren"
+msgstr ""
 
 #: aleksis/apps/paweljong/data_checks.py:19
 msgid "Ensure that all registered persons are member of the linked group"
 msgstr ""
-"Stelle sicher, dass alle registrierten Personen auch Mitglied der verlinkten "
-"Gruppe sind"
 
 #: aleksis/apps/paweljong/data_checks.py:20
 msgid "Event members are out of sync with registrations!"
-msgstr "Veranstaltungsteilnehmer sind asyncron mit den Anmeldungen!"
+msgstr ""
 
 #: aleksis/apps/paweljong/filters.py:17 aleksis/apps/paweljong/filters.py:45
 msgid "Search by name"
-msgstr "Suche nach Name"
+msgstr ""
 
 #: aleksis/apps/paweljong/filters.py:37
 msgid "Search by event"
-msgstr "Suche nach Veranstaltung"
+msgstr ""
 
 #: aleksis/apps/paweljong/forms.py:19
 msgid "Only first name"
-msgstr "Nur Vorname"
+msgstr ""
 
 #: aleksis/apps/paweljong/forms.py:20
 msgid "First name and age"
-msgstr "Vorname und Alter"
+msgstr ""
 
 #: aleksis/apps/paweljong/forms.py:21
 msgid "First name, last name and age"
-msgstr "Vor-, Nachname und Alter"
+msgstr ""
 
 #: aleksis/apps/paweljong/forms.py:25
 msgid "Signature list"
-msgstr "Unterschriftenliste"
+msgstr ""
 
 #: aleksis/apps/paweljong/forms.py:26
 msgid "Participants list"
-msgstr "Teilnehmerliste"
+msgstr ""
 
 #: aleksis/apps/paweljong/forms.py:27
 msgid "Corona attendance list"
-msgstr "Corona-Anwesenheitsliste"
+msgstr ""
 
 #: aleksis/apps/paweljong/forms.py:31
 msgid "Creative Commons with attribution, 4.0 or later"
 msgstr ""
-"Creative Commons mit Namensnennung 4.0 International (CC BY 4.0) oder neuer"
 
 #: aleksis/apps/paweljong/forms.py:35
-msgid ""
-"Creative Commons with attribution and distribution only under the same "
-"conditions, 4.0 or later"
+msgid "Creative Commons with attribution and distribution only under the same conditions, 4.0 or later"
 msgstr ""
-"Creative Commons mit Namensnennung und Weitergabe unter gleichen "
-"Bedingungen, 4.0 oder später"
 
-#: aleksis/apps/paweljong/forms.py:60 aleksis/apps/paweljong/forms.py:489
-#: aleksis/apps/paweljong/forms.py:613 aleksis/apps/paweljong/forms.py:47
-#: aleksis/apps/paweljong/forms.py:448
+#: aleksis/apps/paweljong/forms.py:60 aleksis/apps/paweljong/forms.py:507
+#: aleksis/apps/paweljong/forms.py:632
 msgid "Base data"
-msgstr "Basisdaten"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:64 aleksis/apps/paweljong/forms.py:51
+#: aleksis/apps/paweljong/forms.py:64
 msgid "Date data"
-msgstr "Kalenderdaten"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:65 aleksis/apps/paweljong/forms.py:52
+#: aleksis/apps/paweljong/forms.py:66
 msgid "Event details"
-msgstr "Veranstaltungsdetails"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:66 aleksis/apps/paweljong/models.py:172
+#: aleksis/apps/paweljong/forms.py:72 aleksis/apps/paweljong/models.py:176
 #: aleksis/apps/paweljong/templates/paweljong/event/terms.html:4
 #: aleksis/apps/paweljong/templates/paweljong/event/terms.html:5
 #: aleksis/apps/paweljong/templates/paweljong/term/list.html:6
 #: aleksis/apps/paweljong/templates/paweljong/term/list.html:7
-#: aleksis/apps/paweljong/forms.py:53 aleksis/apps/paweljong/models.py:171
 msgid "Terms"
-msgstr "Bedingungen"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:67 aleksis/apps/paweljong/models.py:175
+#: aleksis/apps/paweljong/forms.py:73 aleksis/apps/paweljong/models.py:179
 #: aleksis/apps/paweljong/templates/paweljong/info_mailing/list.html:6
 #: aleksis/apps/paweljong/templates/paweljong/info_mailing/list.html:7
-#: aleksis/apps/paweljong/forms.py:54 aleksis/apps/paweljong/models.py:174
 msgid "Info mailings"
-msgstr "Info-Mailings"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:110 aleksis/apps/paweljong/forms.py:245
-#: aleksis/apps/paweljong/forms.py:626 aleksis/apps/paweljong/models.py:190
+#: aleksis/apps/paweljong/forms.py:118 aleksis/apps/paweljong/forms.py:259
+#: aleksis/apps/paweljong/forms.py:645 aleksis/apps/paweljong/models.py:194
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:22
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:12
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:42
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:15
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:64
-#: aleksis/apps/paweljong/forms.py:250 aleksis/apps/paweljong/forms.py:461
 msgid "Date of birth"
-msgstr "Geburtsdatum"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:111 aleksis/apps/paweljong/forms.py:250
-#: aleksis/apps/paweljong/models.py:191 aleksis/apps/paweljong/forms.py:254
+#: aleksis/apps/paweljong/forms.py:119 aleksis/apps/paweljong/forms.py:264
+#: aleksis/apps/paweljong/models.py:195
 msgid "Sex"
-msgstr "Geschlecht"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:112 aleksis/apps/paweljong/forms.py:266
-#: aleksis/apps/paweljong/models.py:192
+#: aleksis/apps/paweljong/forms.py:120 aleksis/apps/paweljong/forms.py:285
+#: aleksis/apps/paweljong/models.py:196
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:15
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:45
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:18
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:67
-#: aleksis/apps/paweljong/forms.py:224
 msgid "Street"
-msgstr "Straße"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:113 aleksis/apps/paweljong/models.py:193
+#: aleksis/apps/paweljong/forms.py:121 aleksis/apps/paweljong/models.py:197
 msgid "House number"
-msgstr "Hausnummer"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:114 aleksis/apps/paweljong/forms.py:276
-#: aleksis/apps/paweljong/models.py:194
+#: aleksis/apps/paweljong/forms.py:122 aleksis/apps/paweljong/forms.py:295
+#: aleksis/apps/paweljong/models.py:198
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:17
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:47
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:20
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:69
-#: aleksis/apps/paweljong/forms.py:232
 msgid "Postal code"
-msgstr "Postleitzahl"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:115 aleksis/apps/paweljong/forms.py:281
-#: aleksis/apps/paweljong/models.py:195
+#: aleksis/apps/paweljong/forms.py:123 aleksis/apps/paweljong/forms.py:300
+#: aleksis/apps/paweljong/models.py:199
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:18
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:48
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:11
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:39
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:41
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:21
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:70
-#: aleksis/apps/paweljong/forms.py:236
 msgid "Place"
-msgstr "Stadt"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:116 aleksis/apps/paweljong/forms.py:296
-#: aleksis/apps/paweljong/models.py:196
+#: aleksis/apps/paweljong/forms.py:124 aleksis/apps/paweljong/forms.py:314
+#: aleksis/apps/paweljong/models.py:200
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:22
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:23
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:14
@@ -172,105 +156,89 @@ msgstr "Stadt"
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:27
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:66
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:76
-#: aleksis/apps/paweljong/forms.py:240
 msgid "Mobile number"
-msgstr "Handynummer"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:117 aleksis/apps/paweljong/forms.py:325
-#: aleksis/apps/paweljong/models.py:197 aleksis/apps/paweljong/forms.py:208
+#: aleksis/apps/paweljong/forms.py:125 aleksis/apps/paweljong/forms.py:343
+#: aleksis/apps/paweljong/models.py:201
 msgid "School details"
-msgstr "Angaben zur Schule"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:139 aleksis/apps/paweljong/forms.py:114
+#: aleksis/apps/paweljong/forms.py:148
 msgid "Event the voucher is valid for"
-msgstr "Veranstaltungsgutschein ist gültig für"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:140 aleksis/apps/paweljong/forms.py:115
+#: aleksis/apps/paweljong/forms.py:149
 msgid "Person the voucher is valid for"
-msgstr "Person, für die der Gutschein gültig ist"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:141 aleksis/apps/paweljong/forms.py:116
+#: aleksis/apps/paweljong/forms.py:150
 msgid "Voucher discount"
-msgstr "Rabatt"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:149 aleksis/apps/paweljong/models.py:156
+#: aleksis/apps/paweljong/forms.py:158 aleksis/apps/paweljong/models.py:156
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:8
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:36
-#: aleksis/apps/paweljong/forms.py:124 aleksis/apps/paweljong/models.py:155
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:38
 msgid "Group"
-msgstr "Gruppe"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:151 aleksis/apps/paweljong/forms.py:126
+#: aleksis/apps/paweljong/forms.py:160
 msgid "Select group to generate list"
-msgstr "Gruppe auswählen, für die die Liste generiert werden soll"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:155 aleksis/apps/paweljong/forms.py:130
+#: aleksis/apps/paweljong/forms.py:164
 msgid "Template"
-msgstr "Vorlage"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:157 aleksis/apps/paweljong/forms.py:132
+#: aleksis/apps/paweljong/forms.py:166
 msgid "Select template to generate list"
-msgstr "Vorlage auswählen, um Liste zu generieren"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:161 aleksis/apps/paweljong/forms.py:136
+#: aleksis/apps/paweljong/forms.py:170
 msgid "Landscape"
-msgstr "Querformat"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:162 aleksis/apps/paweljong/forms.py:137
+#: aleksis/apps/paweljong/forms.py:171
 msgid "Select if output should be in landscape"
-msgstr "Wähle, ob die Ausgabe im Querformat sein soll"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:174 aleksis/apps/paweljong/forms.py:149
+#: aleksis/apps/paweljong/forms.py:183
 msgid "Guardians personal data"
-msgstr "Persönliche Daten der Erziehungsberechtigten"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:178 aleksis/apps/paweljong/forms.py:153
+#: aleksis/apps/paweljong/forms.py:187
 msgid "Guardians contact details"
-msgstr "Kontaktdaten der Erziehungsberechtigten"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:184 aleksis/apps/paweljong/forms.py:159
+#: aleksis/apps/paweljong/forms.py:193
 msgid "Guardian's first name"
-msgstr "Vorname des Erziehungsberechtigten"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:186 aleksis/apps/paweljong/forms.py:161
-msgid ""
-"Please enter the first name of the legal guardian who will fill in the "
-"registration with you and who can be reached during the event in an "
-"emergency."
+#: aleksis/apps/paweljong/forms.py:195
+msgid "Please enter the first name of the legal guardian who will fill in the registration with you and who can be reached during the event in an emergency."
 msgstr ""
-"Bitte gib den Vornamen des Erziehungsberechtigten ein, der die Anmeldung mit "
-"dir ausfüllt und in Notfällen während der Veranstaltung erreichbar ist."
 
-#: aleksis/apps/paweljong/forms.py:192 aleksis/apps/paweljong/forms.py:167
+#: aleksis/apps/paweljong/forms.py:201
 msgid "Guardian's last name"
-msgstr "Nachname des Erziehungsberechtigten"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:194 aleksis/apps/paweljong/forms.py:169
-msgid ""
-"Please enter the last name of the legal guardian who will fill in the "
-"registration with you and who can be reached during the event in an "
-"emergency."
+#: aleksis/apps/paweljong/forms.py:203
+msgid "Please enter the last name of the legal guardian who will fill in the registration with you and who can be reached during the event in an emergency."
 msgstr ""
-"Bitte gib den Nachnamen des Erziehungsberechtigten ein, der die Anmeldung "
-"mit dir ausfüllt und in Notfällen während der Veranstaltung erreichbar ist."
 
-#: aleksis/apps/paweljong/forms.py:200 aleksis/apps/paweljong/forms.py:175
+#: aleksis/apps/paweljong/forms.py:209
 msgid "Guardian's mobile number"
-msgstr "Handynummer des Erziehungsberechtigten"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:202 aleksis/apps/paweljong/forms.py:177
-msgid ""
-"We need the mobile phone number for emergencies if we urgently need to reach "
-"your parents during the event."
+#: aleksis/apps/paweljong/forms.py:211
+msgid "We need the mobile phone number for emergencies if we urgently need to reach your parents during the event."
 msgstr ""
-"Wir benötigen die Handynummer für Notfälle, wenn wir deine Eltern während "
-"der Veranstaltung dringend erreichen müssen."
 
-#: aleksis/apps/paweljong/forms.py:208 aleksis/apps/paweljong/forms.py:183
+#: aleksis/apps/paweljong/forms.py:217
 msgid "Guardian's email address"
-msgstr "E-Mail-Adresse des Erziehungsberechtigten"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:220 aleksis/apps/paweljong/models.py:42
+#: aleksis/apps/paweljong/forms.py:230 aleksis/apps/paweljong/models.py:42
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:10
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:24
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:40
@@ -279,57 +247,48 @@ msgstr "E-Mail-Adresse des Erziehungsberechtigten"
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:25
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:63
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:74
-#: aleksis/apps/paweljong/models.py:41
 msgid "Name"
-msgstr "Name"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:231 aleksis/apps/paweljong/forms.py:500
-#: aleksis/apps/paweljong/forms.py:624
+#: aleksis/apps/paweljong/forms.py:242 aleksis/apps/paweljong/forms.py:518
+#: aleksis/apps/paweljong/forms.py:643
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:20
 #: aleksis/apps/paweljong/templates/paweljong/print/list_attendance.html:20
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:21
 #: aleksis/apps/paweljong/templates/paweljong/print/list_sign.html:21
-#: aleksis/apps/paweljong/forms.py:214 aleksis/apps/paweljong/forms.py:459
 msgid "First name"
-msgstr "Vorname"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:236 aleksis/apps/paweljong/forms.py:501
-#: aleksis/apps/paweljong/forms.py:625
+#: aleksis/apps/paweljong/forms.py:247 aleksis/apps/paweljong/forms.py:519
+#: aleksis/apps/paweljong/forms.py:644
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:19
 #: aleksis/apps/paweljong/templates/paweljong/print/list_attendance.html:19
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:20
 #: aleksis/apps/paweljong/templates/paweljong/print/list_sign.html:20
-#: aleksis/apps/paweljong/forms.py:219 aleksis/apps/paweljong/forms.py:460
 msgid "Last name"
-msgstr "Nachname"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:252 aleksis/apps/paweljong/forms.py:256
-msgid ""
-"For various reasons, e.g. because we have to keep gender segregation during "
-"the night for legal reasons, we need to know if you are a boy or a girl."
+#: aleksis/apps/paweljong/forms.py:266
+msgid "For various reasons, e.g. because we have to keep gender segregation during the night for legal reasons, we need to know if you are a boy or a girl."
 msgstr ""
-"Aus verschiedenen Gründen, z.B da wir aus rechtlichen Gründen die "
-"Geschlechtertrennung während der Nacht aufrechterhalten müssen, müssen wir "
-"wissen, ob du ein Junge oder ein Mädchen bist."
 
-#: aleksis/apps/paweljong/forms.py:258
+#: aleksis/apps/paweljong/forms.py:272
 msgid "Personal information"
-msgstr "Persönliche Informationen"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:271
+#: aleksis/apps/paweljong/forms.py:290
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:16
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:46
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:19
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:68
-#: aleksis/apps/paweljong/forms.py:228
 msgid "Housenumber"
-msgstr "Hausnummer"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:283 aleksis/apps/paweljong/forms.py:199
+#: aleksis/apps/paweljong/forms.py:302
 msgid "Address data"
-msgstr "Addressdaten"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:287
+#: aleksis/apps/paweljong/forms.py:305
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:13
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:25
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:43
@@ -338,511 +297,565 @@ msgstr "Addressdaten"
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:26
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:65
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:75
-#: aleksis/apps/paweljong/forms.py:264
 msgid "Email address"
-msgstr "E-Mail-Adresse"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:289 aleksis/apps/paweljong/forms.py:266
-msgid ""
-"Please use your personal e-mail address here, which you will check "
-"personally. Important information will always be sent to your parents as "
-"well. Do not use an e-mail address owned by your parents here."
+#: aleksis/apps/paweljong/forms.py:307
+msgid "Please use your personal e-mail address here, which you will check personally. Important information will always be sent to your parents as well. Do not use an e-mail address owned by your parents here."
 msgstr ""
-"Bitte nutze hier deine persönliche E-Mail-Adresse, welche du persönlich "
-"abrufst. Wichtige Informationen senden wir immer zusätzlich an deine Eltern. "
-"Bitte nutze hier nicht die E-Mail-Adresse deiner Eltern."
 
-#: aleksis/apps/paweljong/forms.py:299 aleksis/apps/paweljong/forms.py:243
-msgid ""
-"Your mobile number helps us to reach you in an emergency during the event, e."
-"g. if you are alone with your group at a conference or similar. If you don't "
-"have a cell phone, you can leave the field blank."
+#: aleksis/apps/paweljong/forms.py:317
+msgid "Your mobile number helps us to reach you in an emergency during the event, e.g. if you are alone with your group at a conference or similar. If you don't have a cell phone, you can leave the field blank."
 msgstr ""
-"deine Handynummer hilft uns, dich bei Notfällen während der Veranstaltung zu "
-"erreichen, z.B. wenn du alleine mit deiner Gruppe auf einer Konferenz "
-"unterwegs bist. Wenn du kein Handy hast, kannst du dieses Feld ignorieren."
 
-#: aleksis/apps/paweljong/forms.py:308
+#: aleksis/apps/paweljong/forms.py:326
 #: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:72
-#: aleksis/apps/paweljong/forms.py:204
 msgid "Contact details"
-msgstr "Kontaktdaten"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:313 aleksis/apps/paweljong/forms.py:273
+#: aleksis/apps/paweljong/forms.py:331
 msgid "School"
-msgstr "Schule"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:314 aleksis/apps/paweljong/forms.py:274
+#: aleksis/apps/paweljong/forms.py:332
 msgid "Please enter the name of your school."
-msgstr "Bitte trage den Namen deiner Schule ein."
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:317 aleksis/apps/paweljong/forms.py:278
+#: aleksis/apps/paweljong/forms.py:335
 msgid "School place"
-msgstr "Ort der Schule"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:318 aleksis/apps/paweljong/forms.py:279
+#: aleksis/apps/paweljong/forms.py:336
 msgid "Enter the place (city) where your school is located."
-msgstr "Bitte trage die Stadt ein, wo sich deine Schule befindet."
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:321 aleksis/apps/paweljong/models.py:341
-#: aleksis/apps/paweljong/forms.py:283 aleksis/apps/paweljong/models.py:318
+#: aleksis/apps/paweljong/forms.py:339 aleksis/apps/paweljong/models.py:343
 msgid "School class"
-msgstr "Schulklasse"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:322 aleksis/apps/paweljong/forms.py:284
+#: aleksis/apps/paweljong/forms.py:340
 msgid "Please enter the class you are in (e.g. 8a)."
-msgstr "Bitte trage die Klasse ein, in die du gehst (z.B. 8a)."
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:332 aleksis/apps/paweljong/models.py:346
-#: aleksis/apps/paweljong/forms.py:291 aleksis/apps/paweljong/models.py:323
+#: aleksis/apps/paweljong/forms.py:350 aleksis/apps/paweljong/models.py:350
 msgid "Medical information / intolerances"
-msgstr "Medizinische Informationen / Intoleranzen"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:336 aleksis/apps/paweljong/forms.py:295
+#: aleksis/apps/paweljong/forms.py:354
 msgid "Other remarks"
-msgstr "Sonstige Anmerkungen"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:346 aleksis/apps/paweljong/forms.py:305
-msgid ""
-"If there are any medically important things we need to consider, e.g. when "
-"making food or to make sure you take prescribed medication, please enter it "
-"here."
+#: aleksis/apps/paweljong/forms.py:364
+msgid "If there are any medically important things we need to consider, e.g. when making food or to make sure you take prescribed medication, please enter it here."
 msgstr ""
-"Wenn es medizinisch wichtige Dinge gibt, die wir berücksichtigen müssen, z.B "
-"bei der Zubereitung von Speisen oder zur Sicherstellung der Einnahme "
-"verordneter Medikamente, trage diese bitte hier ein."
 
-#: aleksis/apps/paweljong/forms.py:350 aleksis/apps/paweljong/forms.py:309
+#: aleksis/apps/paweljong/forms.py:368
 msgid "You can write down any remarks you want to tell us here."
-msgstr "Du kannst hier alles rein schreiben, was du uns mitteilen möchtest."
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:375 aleksis/apps/paweljong/forms.py:334
+#: aleksis/apps/paweljong/forms.py:393
 msgid "Financial data"
-msgstr "Angaben zur Bezahlung"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:382 aleksis/apps/paweljong/forms.py:341
+#: aleksis/apps/paweljong/forms.py:400
 msgid "Voucher code"
-msgstr "Gutscheincode"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:383 aleksis/apps/paweljong/forms.py:342
+#: aleksis/apps/paweljong/forms.py:401
 msgid "If you have a voucher code, type it in here."
-msgstr "Wenn du einen Gutscheincode hast, gib diesen hier ein."
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:388 aleksis/apps/paweljong/forms.py:347
+#: aleksis/apps/paweljong/forms.py:406
 msgid "Payment method"
-msgstr "Zahlungsmethode"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:390 aleksis/apps/paweljong/forms.py:349
-msgid ""
-"Please choose a payment method. The actual payment will be made after the "
-"registration."
+#: aleksis/apps/paweljong/forms.py:408
+msgid "Please choose a payment method. The actual payment will be made after the registration."
 msgstr ""
-"Bitte wähle eine Zahlungsmethode. Die tatsächliche Zahlung wird nach der "
-"Anmeldung gemacht."
 
-#: aleksis/apps/paweljong/forms.py:415 aleksis/apps/paweljong/forms.py:374
-msgid ""
-"Our association would like to offer all children and young people the "
-"opportunity to participate in our events. Sometimes, however, families "
-"cannot afford the full fee. We therefore have a budget from which we can "
-"promote participation after we have carefully examined the necessity and "
-"eligibility. We rely on donations for this budget. If you would like to "
-"donate a voluntary additional amount for this budget, please indicate this "
-"here."
-msgstr ""
-"Unser Verein möchte allen Kindern und Jugendlichen die Möglichkeit bieten, "
-"an unseren Veranstaltungen teilzunehmen. Manchmal können sich Familien "
-"jedoch nicht die volle Gebühr leisten. Wir haben also ein Budget, aus dem "
-"wir die Teilnahme fördern können, nachdem wir die Notwendigkeit und "
-"Förderfähigkeit sorgfältig geprüft haben. Für dieses Budget sind wir auf "
-"Spenden angewiesen. Wenn Sie für dieses Budget einen freiwilligen "
-"Zusatzbetrag spenden möchten, geben Sie dies bitte hier an."
-
-#: aleksis/apps/paweljong/forms.py:447 aleksis/apps/paweljong/forms.py:406
-msgid ""
-"I confirm that the retraction of the registration is not possible anymore "
-"after {}"
+#: aleksis/apps/paweljong/forms.py:433
+msgid "Our association would like to offer all children and young people the opportunity to participate in our events. Sometimes, however, families cannot afford the full fee. We therefore have a budget from which we can promote participation after we have carefully examined the necessity and eligibility. We rely on donations for this budget. If you would like to donate a voluntary additional amount for this budget, please indicate this here."
+msgstr ""
+
+#: aleksis/apps/paweljong/forms.py:465
+msgid "I confirm that the retraction of the registration is not possible anymore after {}"
 msgstr ""
-"Ich bestätige, dass eine Stornierung nach dem {} nicht mehr möglich ist"
 
-#: aleksis/apps/paweljong/forms.py:493 aleksis/apps/paweljong/forms.py:617
-#: aleksis/apps/paweljong/forms.py:452
+#: aleksis/apps/paweljong/forms.py:511 aleksis/apps/paweljong/forms.py:636
 msgid "Account data"
-msgstr "Kontodaten"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:507 aleksis/apps/paweljong/forms.py:632
-#: aleksis/apps/paweljong/forms.py:467
-msgid ""
-"The username must only contain lower case letters and numbers, and must "
-"begin with a letter."
+#: aleksis/apps/paweljong/forms.py:525 aleksis/apps/paweljong/forms.py:651
+msgid "The username must only contain lower case letters and numbers, and must begin with a letter."
 msgstr ""
-"Der Benutzername darf nur Kleinbuchstaben und Zahlen beinhalten, und muss "
-"mit einem Buchstaben beginnen."
 
-#: aleksis/apps/paweljong/forms.py:552 aleksis/apps/paweljong/forms.py:576
-#: aleksis/apps/paweljong/models.py:309 aleksis/apps/paweljong/models.py:337
+#: aleksis/apps/paweljong/forms.py:570 aleksis/apps/paweljong/forms.py:594
+#: aleksis/apps/paweljong/models.py:311 aleksis/apps/paweljong/models.py:339
 #: aleksis/apps/paweljong/tables.py:46
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:8
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:38
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:12
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:61
-#: aleksis/apps/paweljong/forms.py:512 aleksis/apps/paweljong/forms.py:536
-#: aleksis/apps/paweljong/models.py:286 aleksis/apps/paweljong/models.py:314
 msgid "Person"
-msgstr "Person"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:554 aleksis/apps/paweljong/forms.py:577
-#: aleksis/apps/paweljong/forms.py:514 aleksis/apps/paweljong/forms.py:537
+#: aleksis/apps/paweljong/forms.py:572 aleksis/apps/paweljong/forms.py:595
 msgid "Please enter a username."
-msgstr "Bitte wähle einen Benutzernamen."
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:570 aleksis/apps/paweljong/models.py:513
-#: aleksis/apps/paweljong/forms.py:530 aleksis/apps/paweljong/models.py:490
+#: aleksis/apps/paweljong/forms.py:588 aleksis/apps/paweljong/models.py:522
 msgid "Comment"
-msgstr "Kommentar"
+msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:571 aleksis/apps/paweljong/forms.py:531
+#: aleksis/apps/paweljong/forms.py:589
 msgid "Please enter a comment describing the checkpoint (e.g. Dinner)."
 msgstr ""
-"Bitte gib einen Kommentar ein, der den Checkpoint beschreibt (z.B. "
-"Abendessen)."
 
-#: aleksis/apps/paweljong/forms.py:583 aleksis/apps/paweljong/forms.py:543
+#: aleksis/apps/paweljong/forms.py:601
 msgid "Submit geolocation"
-msgstr "Standort speichern"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:27 aleksis/apps/paweljong/models.py:26
+#: aleksis/apps/paweljong/models.py:27
 msgid "Boolean (Yes/No)"
-msgstr "Boolescher Wert (Ja/Nein)"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:28 aleksis/apps/paweljong/models.py:27
+#: aleksis/apps/paweljong/models.py:28
 msgid "Text (one line)"
-msgstr "Text (einzeilig)"
+msgstr ""
 
 #: aleksis/apps/paweljong/models.py:29 aleksis/apps/paweljong/tables.py:13
-#: aleksis/apps/paweljong/models.py:28
 msgid "Date"
-msgstr "Datum"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:29
+#: aleksis/apps/paweljong/models.py:30
 msgid "Date and time"
-msgstr "Datum und Uhrzeit"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:30
+#: aleksis/apps/paweljong/models.py:31
 msgid "Decimal number"
-msgstr "Dezimalzahl"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:31
+#: aleksis/apps/paweljong/models.py:32
 msgid "E-mail address"
-msgstr "E-Mail-Adresse"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:32
+#: aleksis/apps/paweljong/models.py:33
 msgid "Integer"
-msgstr "Zahl"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:33
+#: aleksis/apps/paweljong/models.py:34
 msgid "IP address"
-msgstr "IP-Adresse"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:35 aleksis/apps/paweljong/models.py:34
+#: aleksis/apps/paweljong/models.py:35
 msgid "Boolean or empty (Yes/No/Neither)"
-msgstr "Boolescher Wert oder leer (Ja/Nein/Weder noch)"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:35
+#: aleksis/apps/paweljong/models.py:36
 msgid "Time"
-msgstr "Zeit"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:36
+#: aleksis/apps/paweljong/models.py:37
 msgid "URL / Link"
-msgstr "URL / Link"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:43 aleksis/apps/paweljong/models.py:42
+#: aleksis/apps/paweljong/models.py:43
 msgid "Colour"
-msgstr "Farbe"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:50 aleksis/apps/paweljong/models.py:49
+#: aleksis/apps/paweljong/models.py:50
 msgid "Title"
-msgstr "Titel"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:51 aleksis/apps/paweljong/models.py:50
+#: aleksis/apps/paweljong/models.py:51
 msgid "Term"
-msgstr "Bedingung"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:52 aleksis/apps/paweljong/models.py:51
+#: aleksis/apps/paweljong/models.py:52
 msgid "Confirmation text"
-msgstr "Bestätigungstext"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:59 aleksis/apps/paweljong/models.py:58
+#: aleksis/apps/paweljong/models.py:59
 msgid "subject"
-msgstr "Betreff"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:60 aleksis/apps/paweljong/models.py:59
+#: aleksis/apps/paweljong/models.py:60
 msgid "Text"
-msgstr "Text"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:61 aleksis/apps/paweljong/models.py:60
+#: aleksis/apps/paweljong/models.py:61
 msgid "Request replies to"
-msgstr "Antworten an"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:63 aleksis/apps/paweljong/models.py:62
+#: aleksis/apps/paweljong/models.py:63
 msgid "Mailing is active"
-msgstr "Mailing ist aktiv"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:65 aleksis/apps/paweljong/models.py:64
+#: aleksis/apps/paweljong/models.py:65
 msgid "Sender"
-msgstr "Absender"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:66 aleksis/apps/paweljong/models.py:65
+#: aleksis/apps/paweljong/models.py:66
 msgid "Send to registered person"
-msgstr "An angemeldete Personen senden"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:67 aleksis/apps/paweljong/models.py:66
+#: aleksis/apps/paweljong/models.py:67
 msgid "Send to guardians"
-msgstr "An Erziehungsberechtigte senden"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:69 aleksis/apps/paweljong/models.py:68
+#: aleksis/apps/paweljong/models.py:69
 msgid "Send to participants who retracted"
-msgstr "An Teilnehmende senden, die storniert haben"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:72 aleksis/apps/paweljong/models.py:71
+#: aleksis/apps/paweljong/models.py:72
 msgid "Send to participants who did not check in"
-msgstr "An Teilnehmende senden, die nicht eingechecked sind"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:134
+#: aleksis/apps/paweljong/models.py:135
 msgid "Title of field"
-msgstr "Titel des Feldes"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:136
+#: aleksis/apps/paweljong/models.py:137
 msgid "Type of field"
-msgstr "Typ des Feldes"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:138
+#: aleksis/apps/paweljong/models.py:139
 msgid "Required"
-msgstr "Verpflichtend"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:139
+#: aleksis/apps/paweljong/models.py:140
 msgid "Help text / description"
-msgstr "Erklärungstext / Beschreibung"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:145
+#: aleksis/apps/paweljong/models.py:146
 msgid "Addtitional field for events"
-msgstr "Zusätzliche Felder für Veranstaltungen"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:146
+#: aleksis/apps/paweljong/models.py:147
 msgid "Addtitional fields for events"
-msgstr "Zusätzliche Felder für Veranstaltungen"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:154 aleksis/apps/paweljong/models.py:153
+#: aleksis/apps/paweljong/models.py:154
 msgid "Display name"
-msgstr "Anzeigename"
+msgstr ""
 
 #: aleksis/apps/paweljong/models.py:158
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:9
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:37
-#: aleksis/apps/paweljong/models.py:157
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:39
 msgid "Description"
-msgstr "Beschreibung"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:159 aleksis/apps/paweljong/models.py:158
+#: aleksis/apps/paweljong/models.py:159
 msgid "Publish"
-msgstr "Veröffentlichen"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:161 aleksis/apps/paweljong/models.py:160
+#: aleksis/apps/paweljong/models.py:161
 msgid "Slug"
-msgstr "Slug"
+msgstr ""
 
 #: aleksis/apps/paweljong/models.py:164
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:12
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:40
-#: aleksis/apps/paweljong/models.py:163
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:42
 msgid "Date of event"
-msgstr "Datum der Veranstaltung"
+msgstr ""
 
 #: aleksis/apps/paweljong/models.py:165
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:13
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:41
-#: aleksis/apps/paweljong/models.py:164
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:43
 msgid "Registration deadline"
-msgstr "Anmeldungsschluss"
+msgstr ""
 
 #: aleksis/apps/paweljong/models.py:166
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:14
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:42
-#: aleksis/apps/paweljong/models.py:165
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:44
 msgid "Retraction deadline"
-msgstr "Kündigungsfrist"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:169 aleksis/apps/paweljong/models.py:372
-#: aleksis/apps/paweljong/models.py:168 aleksis/apps/paweljong/models.py:349
+#: aleksis/apps/paweljong/models.py:169 aleksis/apps/paweljong/models.py:376
 msgid "Cost in €"
-msgstr "Kosten in €"
+msgstr ""
+
+#: aleksis/apps/paweljong/models.py:170
+msgid "Minimum cost in €"
+msgstr ""
+
+#: aleksis/apps/paweljong/models.py:172
+msgid "Maximum cost in €"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:170 aleksis/apps/paweljong/models.py:169
+#: aleksis/apps/paweljong/models.py:174
 msgid "Maximum participants"
-msgstr "Maximale Teilnehmerzahl"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:171 aleksis/apps/paweljong/models.py:170
+#: aleksis/apps/paweljong/models.py:175
 msgid "Information about the event"
-msgstr "Informationen über die Veranstaltung"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:182
+#: aleksis/apps/paweljong/models.py:186
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:80
-#: aleksis/apps/paweljong/models.py:181
 msgid "Additional fields"
-msgstr "Zusätzliche Felder"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:201
+#: aleksis/apps/paweljong/models.py:204
 msgid "Contact information fields to be shown."
-msgstr "Kontaktinformationensfelder, die angezeigt werden sollen."
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:286 aleksis/apps/paweljong/models.py:263
+#: aleksis/apps/paweljong/models.py:288
 msgid "Sent to persons"
-msgstr "An Personen gesendet"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:295 aleksis/apps/paweljong/models.py:296
+#: aleksis/apps/paweljong/models.py:297 aleksis/apps/paweljong/models.py:298
 #: aleksis/apps/paweljong/templates/paweljong/voucher/list.html:6
 #: aleksis/apps/paweljong/templates/paweljong/voucher/list.html:7
-#: aleksis/apps/paweljong/models.py:272 aleksis/apps/paweljong/models.py:273
 msgid "Vouchers"
-msgstr "Gutscheine"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:302 aleksis/apps/paweljong/models.py:335
+#: aleksis/apps/paweljong/models.py:304 aleksis/apps/paweljong/models.py:337
 #: aleksis/apps/paweljong/tables.py:12 aleksis/apps/paweljong/tables.py:43
 #: aleksis/apps/paweljong/templates/paweljong/event/full.html:4
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:8
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:10
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:57
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:59
-#: aleksis/apps/paweljong/models.py:279 aleksis/apps/paweljong/models.py:312
 msgid "Event"
-msgstr "Veranstaltung"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:318 aleksis/apps/paweljong/models.py:295
+#: aleksis/apps/paweljong/models.py:320
 msgid "Used by"
-msgstr "Benutzt von"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:338 aleksis/apps/paweljong/models.py:315
+#: aleksis/apps/paweljong/models.py:340
 msgid "Registration date"
-msgstr "Anmeldedatum"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:340 aleksis/apps/paweljong/models.py:317
+#: aleksis/apps/paweljong/models.py:342
 msgid "Name of school"
-msgstr "Name der Schule"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:342 aleksis/apps/paweljong/models.py:319
+#: aleksis/apps/paweljong/models.py:345
 msgid "Place of the school"
-msgstr "Ort der Schule"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:344 aleksis/apps/paweljong/models.py:321
+#: aleksis/apps/paweljong/models.py:348
 msgid "Comment / remarks"
-msgstr "Kommentar / Anmerkungen"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:351 aleksis/apps/paweljong/models.py:328
+#: aleksis/apps/paweljong/models.py:355
 msgid "Voucher"
-msgstr "Gutschein"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:355
+#: aleksis/apps/paweljong/models.py:359
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:31
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:80
-#: aleksis/apps/paweljong/models.py:332
 msgid "Donation"
-msgstr "Spende"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:358 aleksis/apps/paweljong/models.py:335
+#: aleksis/apps/paweljong/models.py:362
 msgid "Accepted terms"
-msgstr "Akzeptierte Bedingungen"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:363 aleksis/apps/paweljong/models.py:340
+#: aleksis/apps/paweljong/models.py:367
 msgid "States"
-msgstr "Status"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:366 aleksis/apps/paweljong/models.py:343
+#: aleksis/apps/paweljong/models.py:370
 msgid "Retracted"
-msgstr "Storniert"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:367 aleksis/apps/paweljong/models.py:344
+#: aleksis/apps/paweljong/models.py:371
 msgid "Retracted at"
-msgstr "Storniert am"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:369 aleksis/apps/paweljong/models.py:346
+#: aleksis/apps/paweljong/models.py:373
 msgid "Checked in"
-msgstr "Eingechecked"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:370 aleksis/apps/paweljong/models.py:347
+#: aleksis/apps/paweljong/models.py:374
 msgid "Checked in at"
-msgstr "Eingechecked am"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:380 aleksis/apps/paweljong/views.py:1029
-#: aleksis/apps/paweljong/models.py:357 aleksis/apps/paweljong/views.py:1028
+#: aleksis/apps/paweljong/models.py:384 aleksis/apps/paweljong/views.py:1038
 msgid "Person is already checked in!"
-msgstr "Person ist bereits eingechecked!"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:417 aleksis/apps/paweljong/models.py:394
+#: aleksis/apps/paweljong/models.py:426
 msgid "Participation of {} in event {}"
-msgstr "Teilnahme von {} bei Veranstaltung {}"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:446 aleksis/apps/paweljong/models.py:423
+#: aleksis/apps/paweljong/models.py:455
 msgid "Social Sponsoring / Extra Donation"
-msgstr "Social-Sponsoring / Spende"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:457 aleksis/apps/paweljong/models.py:434
+#: aleksis/apps/paweljong/models.py:466
 msgid "Voucher / Granted discount"
-msgstr "Rabatt"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:487 aleksis/apps/paweljong/views.py:427
-#: aleksis/apps/paweljong/models.py:464 aleksis/apps/paweljong/views.py:416
+#: aleksis/apps/paweljong/models.py:496 aleksis/apps/paweljong/views.py:429
 msgid "Event registration"
-msgstr "Veranstaltungsanmeldung"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:488 aleksis/apps/paweljong/models.py:465
+#: aleksis/apps/paweljong/models.py:497
 msgid "Event registrations"
-msgstr "Veranstaltungsanmeldungen"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:498 aleksis/apps/paweljong/models.py:475
+#: aleksis/apps/paweljong/models.py:507
 msgid "Related event"
-msgstr "Zugehörige Veranstaltung"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:502 aleksis/apps/paweljong/models.py:479
+#: aleksis/apps/paweljong/models.py:511
 msgid "Checked person"
-msgstr "Eingecheckte Person"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:508 aleksis/apps/paweljong/models.py:485
+#: aleksis/apps/paweljong/models.py:517
 msgid "Checked by person"
-msgstr "Eingechecked von person"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:515 aleksis/apps/paweljong/models.py:492
+#: aleksis/apps/paweljong/models.py:524
 msgid "Date and time of check"
-msgstr "Datum und Uhrzeit des Check-Ins"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:517 aleksis/apps/paweljong/models.py:494
+#: aleksis/apps/paweljong/models.py:526
 msgid "Latitude of check"
-msgstr "Breitengrad des Check-Ins"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:520 aleksis/apps/paweljong/models.py:497
+#: aleksis/apps/paweljong/models.py:529
 msgid "Longitude of check"
-msgstr "Längengrad des Check-Ins"
+msgstr ""
 
-#: aleksis/apps/paweljong/models.py:528 aleksis/apps/paweljong/models.py:505
+#: aleksis/apps/paweljong/models.py:536
 msgid "Can generate lists of participants of a group"
-msgstr "Kann eine Liste von Mitgliedern einer Gruppe generieren"
+msgstr ""
 
 #: aleksis/apps/paweljong/preferences.py:10
 msgid "Paweljong"
-msgstr "Paweljong"
+msgstr ""
 
 #: aleksis/apps/paweljong/preferences.py:20
 msgid "Mail recipient for event notifications"
-msgstr "Mail-Empfänger für Veranstaltungsbenachrichtigungen"
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:32
+msgid "Name of client linked to invoices for events."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:43
+msgid "Name of invoice group used for events."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:53
+msgid "Participant help text for email step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:65
+msgid "Participant help text for account registration step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:77
+msgid "Participant help text for contact details step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:88
+msgid "Participant help text for guardians step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:100
+msgid "Participant help text for additional information step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:112
+msgid "Participant help text for financial step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:123
+msgid "Participant help text for consent step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:134
+msgid "Participant help text for confirmation step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:145
+msgid "Guardian help text for email step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:157
+msgid "Guardian help text for account registration step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:169
+msgid "Guardian help text for contact details step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:180
+msgid "Guardian help text for guardians step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:192
+msgid "Guardian help text for additional information step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:204
+msgid "Guardian help text for financial step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:215
+msgid "Guardian help text for consent step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:226
+msgid "Guardian help text for confirmation step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:61
+msgid "Retraction consent is required"
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:71
+msgid "Mail domain does not exist."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:78
+msgid "Mail address already in use."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:92
+msgid "A user with this username or e-mail already exists."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:109
+#: aleksis/apps/paweljong/schema/event_registration.py:149
+#, python-format
+msgid "A person using the e-mail address %s already exists."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:191
+msgid "The field 'Amount paid by you' is required."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:214
+msgid "The field 'Payment method' is required."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:239
+#: aleksis/apps/paweljong/views.py:718
+msgid "You registered for an event"
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:240
+#: aleksis/apps/paweljong/views.py:719
+#, python-format
+msgid "You registered for the event %s"
+msgstr ""
 
 #: aleksis/apps/paweljong/tables.py:14
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:16
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:44
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:18
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:48
 msgid "Max. participants"
-msgstr "Maximale Teilnehmerzahl"
+msgstr ""
 
 #: aleksis/apps/paweljong/tables.py:15
 msgid "Registration until"
-msgstr "Anmeldung möglich bis"
+msgstr ""
 
 #: aleksis/apps/paweljong/tables.py:20 aleksis/apps/paweljong/tables.py:21
 #: aleksis/apps/paweljong/tables.py:54 aleksis/apps/paweljong/tables.py:84
@@ -853,48 +866,48 @@ msgstr "Anmeldung möglich bis"
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:24
 #: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:26
 msgid "Edit"
-msgstr "Bearbeiten"
+msgstr ""
 
 #: aleksis/apps/paweljong/tables.py:27 aleksis/apps/paweljong/tables.py:28
 msgid "Public page"
-msgstr "Öffentliche Seite"
+msgstr ""
 
 #: aleksis/apps/paweljong/tables.py:34 aleksis/apps/paweljong/tables.py:35
 #: aleksis/apps/paweljong/tables.py:73
 msgid "View"
-msgstr "Ansehen"
+msgstr ""
 
 #: aleksis/apps/paweljong/tables.py:44
 msgid "Amount"
-msgstr "Betrag"
+msgstr ""
 
 #: aleksis/apps/paweljong/tables.py:45
 msgid "Code"
-msgstr "Code"
+msgstr ""
 
 #: aleksis/apps/paweljong/tables.py:50 aleksis/apps/paweljong/tables.py:51
 #: aleksis/apps/paweljong/tables.py:122 aleksis/apps/paweljong/tables.py:123
 #: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:43
 msgid "Delete"
-msgstr "Löschen"
+msgstr ""
 
 #: aleksis/apps/paweljong/tables.py:57
 #: aleksis/apps/paweljong/templates/paweljong/print/manage.html:11
 msgid "Print"
-msgstr "Drucken"
+msgstr ""
 
 #: aleksis/apps/paweljong/tables.py:72
 msgid "View registration"
-msgstr "Anmeldung ansehen"
+msgstr ""
 
 #: aleksis/apps/paweljong/tables.py:78 aleksis/apps/paweljong/tables.py:79
 #: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:30
 msgid "Check in"
-msgstr "Einchecken"
+msgstr ""
 
 #: aleksis/apps/paweljong/tables.py:157 aleksis/apps/paweljong/tables.py:158
 msgid "Add persons"
-msgstr "Personen hinzufügen"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/account_wizard.html:4
 #: aleksis/apps/paweljong/templates/paweljong/account_wizard.html:5
@@ -905,322 +918,235 @@ msgstr "Personen hinzufügen"
 #: aleksis/apps/paweljong/templates/paweljong/register.html:9
 #: aleksis/apps/paweljong/templates/paweljong/register_start.html:13
 msgid "Registration"
-msgstr "Anmeldung"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/account_wizard.html:25
 #: aleksis/apps/paweljong/templates/paweljong/event/register_wizard.html:37
 #: aleksis/apps/paweljong/templates/paweljong/event/register_wizard_consent.html:51
 msgid "first step"
-msgstr "Erster Schritt"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/account_wizard.html:29
 #: aleksis/apps/paweljong/templates/paweljong/event/register_wizard.html:41
 #: aleksis/apps/paweljong/templates/paweljong/event/register_wizard_consent.html:55
 msgid "previous step"
-msgstr "Vorheriger Schritt"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/account_wizard.html:32
 #: aleksis/apps/paweljong/templates/paweljong/event/register_wizard.html:44
 #: aleksis/apps/paweljong/templates/paweljong/event/register_wizard_consent.html:58
 msgid "Next"
-msgstr "Weiter"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/create.html:4
 #: aleksis/apps/paweljong/templates/paweljong/event/create.html:5
 #: aleksis/apps/paweljong/templates/paweljong/event/manage.html:20
 msgid "Create event"
-msgstr "Veranstaltung erstellen"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:30
 msgid "Checkpoint"
-msgstr "Checkpoint"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:47
 #: aleksis/apps/paweljong/templates/paweljong/event/full.html:31
 msgid "Registration open until"
-msgstr "Anmeldung möglich bis"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:52
 #: aleksis/apps/paweljong/templates/paweljong/event/full.html:36
 msgid "Participation fee (all inclusive)"
-msgstr "Teilnahmegebühr (alles inklusive)"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:58
 #: aleksis/apps/paweljong/templates/paweljong/event/full.html:42
 msgid "of"
-msgstr "von"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:62
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:17
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:45
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:19
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:49
 msgid "Owners"
-msgstr "Besitzer"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:84
 msgid "Child groups"
-msgstr "Kind-Gruppen"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:89
 msgid "Registrations"
-msgstr "Anmeldungen"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:92
 #: aleksis/apps/paweljong/templates/paweljong/event/manage.html:14
 #: aleksis/apps/paweljong/templates/paweljong/voucher/list.html:14
 msgid "Search"
-msgstr "Suche"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:96
 #: aleksis/apps/paweljong/templates/paweljong/event/manage.html:18
 #: aleksis/apps/paweljong/templates/paweljong/voucher/list.html:18
 msgid "Clear"
-msgstr "Leeren"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/edit.html:4
 #: aleksis/apps/paweljong/templates/paweljong/event/edit.html:5
 msgid "Edit event"
-msgstr "Veranstaltung bearbeiten"
+msgstr ""
+
+#: aleksis/apps/paweljong/templates/paweljong/event/full.html:37
+msgid "Self-determined"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/full.html:58
-#: aleksis/apps/paweljong/templates/paweljong/event/full.html:60
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:109
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:119
 #: aleksis/apps/paweljong/templates/paweljong/register_start.html:57
 #: aleksis/apps/paweljong/templates/paweljong/register_start.html:67
 msgid "Register now"
-msgstr "Jetzt anmelden"
+msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event/full.html:62
+#: aleksis/apps/paweljong/templates/paweljong/event/full.html:60
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:85
 msgid "Not available"
-msgstr "Nicht verfügbar"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/list.html:5
 #: aleksis/apps/paweljong/templates/paweljong/event/list.html:6
 msgid "Events"
-msgstr "Veranstaltungen"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/list.html:10
-#: aleksis/apps/paweljong/views.py:789 aleksis/apps/paweljong/views.py:788
+#: aleksis/apps/paweljong/views.py:798
 msgid "Upcoming events"
-msgstr "Anstehende Veranstaltungen"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/list.html:17
 msgid "Events you've taken part"
-msgstr "Veranstaltungen an denen du teilgenommen hast"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/manage.html:6
 #: aleksis/apps/paweljong/templates/paweljong/event/manage.html:7
 msgid "Manage events"
-msgstr "Veranstaltungen verwalten"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/manage.html:11
 msgid "Filter events"
-msgstr "Veranstaltungen filtern"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/manage.html:23
 msgid "Selected events"
-msgstr "Ausgewähle Veranstaltungen"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/persons_group.html:4
 #: aleksis/apps/paweljong/templates/paweljong/event/persons_group.html:5
 msgid "Add person to group"
-msgstr "Person zur Gruppe hinzufügen"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:4
 msgid "Register for"
-msgstr "Anmelden für"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:20
 msgid ""
 "\n"
-"           Welcome to the registration for this event! Please make sure to "
-"fill in\n"
-"           the registration yourself, as the child who wants to "
-"participate.\n"
-"           You should fill in the registration together with a parent (or "
-"other legal\n"
+"           Welcome to the registration for this event! Please make sure to fill in\n"
+"           the registration yourself, as the child who wants to participate.\n"
+"           You should fill in the registration together with a parent (or other legal\n"
 "           guardian).\n"
 "           "
 msgstr ""
-"\n"
-"           Willkommen bei der Anmeldung für diese Veranstaltung! Bitte achte "
-"darauf,\n"
-"           die Anmeldung selbst auszufüllen. Du solltest diese Anmeldung "
-"zusammen mit\n"
-"           deinen Eltern oder Erziehungsberechtigten ausfüllen.\n"
-"           "
 
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:28
 msgid ""
 "\n"
-"           We ask parents to not fill in the registration on behalf of their "
-"child.\n"
+"           We ask parents to not fill in the registration on behalf of their child.\n"
 "           It is a requirement that our participants can freely access and\n"
 "           manage their accounts and inboxes, and that parents allow their\n"
-"           children to keep their passwords secret. We kindly ask parents "
-"to\n"
+"           children to keep their passwords secret. We kindly ask parents to\n"
 "           get in contact with us if they have questions about this rule,\n"
 "           and of course, we encourage all children to show everything they\n"
 "           do not understand or have questions about to their parents.\n"
 "           "
 msgstr ""
-"\n"
-"           Wir bitten Eltern, die Anmeldung nicht stellvertretend für ihr "
-"Kind auszufüllen.\n"
-"\tUnser Teilnehmenden müssen freien Zugriff auf ihre Accounts und "
-"Postfächer\n"
-"\thaben und ihre Eltern müssen erlauben, dass sie ihre Passwörter "
-"geheimhalten.\n"
-"\tWir bitten Eltern, uns zu kontaktieren, falls sie Fragen zu dieser "
-"Regelung haben\n"
-"\tund natürlich ermutigen wir alle Kinder, ihren Eltern alles, was sie nicht "
-"verstehen\n"
-"\toder wozu sie Fragen haben, zu zeigen.\n"
-"           "
 
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:39
 msgid ""
 "\n"
-"           Every participant needs a personal e-mail address. This address "
-"must be one\n"
-"           that you, the participating child, check and read yourself, not "
-"one owned by your\n"
-"           parents. Of course, we will always send important information to "
-"your parents as\n"
-"           well, and of course you should always talk to your parents if "
-"you\n"
+"           Every participant needs a personal e-mail address. This address must be one\n"
+"           that you, the participating child, check and read yourself, not one owned by your\n"
+"           parents. Of course, we will always send important information to your parents as\n"
+"           well, and of course you should always talk to your parents if you\n"
 "           have questions or concerns while reading your e-mail.\n"
 "           "
 msgstr ""
-"\n"
-"           Jeder Teilnehmende benötigt seine eigene E-Mail-Adresse. Diese "
-"Adresse muss eine Adresse sein,\n"
-"           die du selbst abrufst und liest, und die nicht deinen Eltern "
-"gehört.\n"
-"           Wichtige Informationen senden wir natürlich immer zusätzlich an "
-"deine Eltern.\n"
-"\tNatürlich solltest du mit deinen Eltern immer reden, falls du beim Lesen "
-"deiner E-Mails\n"
-"\tFragen oder Sorgen hast.\n"
-"           "
 
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:48
 #: aleksis/apps/paweljong/templates/paweljong/register_start.html:23
 msgid ""
 "\n"
-"           If you do not have a personal e-mail address yet, and do not want "
-"or cannot register\n"
-"           one with one of the \"big\" providers (keep in mind that Google, "
-"Outlook, etc. are\n"
-"           allowed from 16 years only, and often collect and analyse your "
-"private mail), you can\n"
+"           If you do not have a personal e-mail address yet, and do not want or cannot register\n"
+"           one with one of the \"big\" providers (keep in mind that Google, Outlook, etc. are\n"
+"           allowed from 16 years only, and often collect and analyse your private mail), you can\n"
 "           register an e-mail address with us.\n"
 "           "
 msgstr ""
-"\n"
-"           Wenn du bisher keine eigene E-Mail-Adresse hast, und keine bei "
-"den \"großen\"\n"
-"           Anbietern anlegen kannst oder möchtest (denke daran, dass Google, "
-"Outlook etc.\n"
-"           Accounts erst ab 16 erlauben, und oft deine Daten sammeln und "
-"analysieren), kannst du\n"
-"           Dir bei uns eine E-Mail-Adresse registrieren.\n"
-"           "
 
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:56
 msgid ""
 "\n"
-"           If you already have a user account with Teckids, do not register "
-"a new one. Login\n"
-"           with your existing username and password. If you have forgotten "
-"your password, please\n"
-"           send us an e-mail (please do this yourself, with the help of your "
-"parents, if needed).\n"
+"           If you already have a user account with Teckids, do not register a new one. Login\n"
+"           with your existing username and password. If you have forgotten your password, please\n"
+"           send us an e-mail (please do this yourself, with the help of your parents, if needed).\n"
 "           "
 msgstr ""
-"\n"
-"           Wenn du bereits einen Teckids-Account hast, lege Dir bitte keinen "
-"neuen an. Melde\n"
-"           dich mit deinem vorhandenen Benutzernamen und Passwort an. Wenn "
-"du dein\n"
-"           Passwort vergessen hast, schreibe uns bitte eine E-Mail (bitte "
-"mache das selbst mit der Hilfe\n"
-"           deiner Eltern, falls nötig).\n"
-"           "
 
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:70
 msgid "I already have an account"
-msgstr "Ich habe bereits ein Konto"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:75
 #: aleksis/apps/paweljong/templates/paweljong/register_start.html:37
 msgid "I have a personal email address"
-msgstr "Ich habe eine persönliche E-Mail-Adresse"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:80
 #: aleksis/apps/paweljong/templates/paweljong/register_start.html:42
 msgid "I don't have a personal email address"
-msgstr "Ich habe keine persönliche E-Mail-Adresse"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:93
 msgid ""
 "\n"
-"         If you already have a Teckids account, please login here. If you "
-"forgot your password,\n"
+"         If you already have a Teckids account, please login here. If you forgot your password,\n"
 "         or have problems logging in, please send us an e-mail.\n"
 "         "
 msgstr ""
-"\n"
-"         Wenn du bereits einen Teckids-Account hast, melde dich bitte hier "
-"an. Wenn du dein Passwort\n"
-"         vergessen hast, oder Probleme bei der Anmeldung hast, sende uns "
-"bitte eine E-Mail.\n"
-"         "
 
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:98
 msgid "Login"
-msgstr "Anmelden"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:102
 #: aleksis/apps/paweljong/templates/paweljong/register_start.html:50
 msgid ""
 "\n"
-"         You can now choose a personal e-mail address hosted on our "
-"servers.\n"
+"         You can now choose a personal e-mail address hosted on our servers.\n"
 "         For information about receiving mails, see <a\n"
 "         href=\"https://wiki.teckids.org/de/Dienste/E-Mail\">\n"
 "         https://wiki.teckids.org/de/Dienste/E-Mail</a>\n"
 "         "
 msgstr ""
-"\n"
-"         Du kannst Dir jetzt eine bei uns gehostete E-Mail-Adresse "
-"aussuchen.\n"
-"         Informationen, wie Du deine Mails abrufen kannst, findest Du unter "
-"<a\n"
-"         href=\"https://wiki.teckids.org/de/Dienste/E-Mail\">\n"
-"         https://wiki.teckids.org/de/Dienste/E-Mail</a>\n"
-"         "
 
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:113
 #: aleksis/apps/paweljong/templates/paweljong/register_start.html:61
 msgid ""
 "\n"
-"         You will be asked for your existing, personal e-mail address. "
-"Please remember\n"
-"         that you should not use an address owned by your parents. If you do "
-"not have\n"
-"         a personal e-mail address, please choose the respective option "
-"instead!\n"
+"         You will be asked for your existing, personal e-mail address. Please remember\n"
+"         that you should not use an address owned by your parents. If you do not have\n"
+"         a personal e-mail address, please choose the respective option instead!\n"
 "         "
 msgstr ""
-"\n"
-"         Du wirst nach deiner persönlichen E-Mail-Adresse gefragt werden. "
-"Bitte denke daran,\n"
-"         dass du keine Adresse nutzen solltest, die deinen Eltern gehört. "
-"Wenn du keine persönliche\n"
-"         E-Mail-Adresse hast, nutze die dafür vorgesehene Option!\n"
-"         "
 
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:124
 msgid ""
@@ -1228,116 +1154,107 @@ msgid ""
 "         Registration is no longer possible.\n"
 "         "
 msgstr ""
-"\n"
-"         Die Anmeldung ist nicht mehr möglich.\n"
-"         "
 
 #: aleksis/apps/paweljong/templates/paweljong/event/register_wizard_consent.html:34
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:41
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:92
 msgid "Consents"
-msgstr "Einverständnisse"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/registered.html:4
 #: aleksis/apps/paweljong/templates/paweljong/event/registered.html:5
 msgid "Registered successfully"
-msgstr "Erfolgreich angemeldet"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event_registration/edit.html:4
 #: aleksis/apps/paweljong/templates/paweljong/event_registration/edit.html:5
 msgid "Edit registration"
-msgstr "Anmeldung bearbeiten"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:36
 msgid "Retract"
-msgstr "Stornieren"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:50
 msgid "Notification"
-msgstr "Benachrichtigung"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:57
 #: aleksis/apps/paweljong/templates/paweljong/invoice_pdf.html:16
 #: aleksis/apps/paweljong/templates/paweljong/invoice_pdf.html:200
 msgid "Invoice"
-msgstr "Rechnung"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:64
 msgid "Edit person"
-msgstr "Person bearbeiten"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:143
 msgid "Retraction information"
-msgstr "Stornierungsinformationen"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:150
 msgid "True"
-msgstr "Ja"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:165
 msgid "Registration information"
-msgstr "Anmeldungsinformationen"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:198
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:45
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:96
 msgid "Accepted"
-msgstr "Akzeptiert"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:232
 msgid "No checked in yet."
-msgstr "Noch nicht eingechecked."
+msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:241
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:242
 msgid "Invoice details"
-msgstr "Rechnungsinformationen"
+msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:247
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:248
 msgid "Billing information"
-msgstr "Zahlungsinformationen"
+msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:279
-#: aleksis/apps/paweljong/views.py:456 aleksis/apps/paweljong/views.py:445
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:280
+#: aleksis/apps/paweljong/views.py:458
 msgid "Payment"
-msgstr "Bezahlung"
+msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:310
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:311
 msgid "Mark payed"
-msgstr "Als bezahlt markieren"
+msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:323
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:325
 msgid "Guardians / Parents "
-msgstr "Erziehungsberechtigte / Eltern "
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event_registration/notification.html:4
 #: aleksis/apps/paweljong/templates/paweljong/event_registration/notification.html:5
 msgid "Send notification"
-msgstr "Benachrichtigung senden"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/info_mailing/create.html:4
 #: aleksis/apps/paweljong/templates/paweljong/info_mailing/create.html:5
 #: aleksis/apps/paweljong/templates/paweljong/info_mailing/list.html:11
 msgid "Create info mailing"
-msgstr "Info-Mailing erstellen"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/info_mailing/edit.html:4
 #: aleksis/apps/paweljong/templates/paweljong/info_mailing/edit.html:5
 msgid "Edit info mailing"
-msgstr "Info-Mailing bearbeiten"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/invoice_pdf.html:207
 msgid ""
 "\n"
-"            Please make the payment with a member of the board or by bank "
-"transfer to the following\n"
+"            Please make the payment with a member of the board or by bank transfer to the following\n"
 "            account:\n"
 "            "
 msgstr ""
-"\n"
-"            Bitte senden Sie die Zahlung an ein Mitglied des Vorstands oder "
-"an die folgende\n"
-"            Adresse:\n"
-"            "
 
 #: aleksis/apps/paweljong/templates/paweljong/invoice_pdf.html:228
 msgid ""
@@ -1345,9 +1262,6 @@ msgid ""
 "            The payment will be made via:\n"
 "            "
 msgstr ""
-"\n"
-"            Die Zahlung wird durchgeführt via:\n"
-"            "
 
 #: aleksis/apps/paweljong/templates/paweljong/invoice_pdf.html:236
 msgid ""
@@ -1355,574 +1269,362 @@ msgid ""
 "\t    The payment is due on\n"
 "\t    "
 msgstr ""
-"\n"
-"\t    Das Fälligkeitsdatum ist am\n"
-"\t    "
 
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:5
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:12
 msgid "Corona"
-msgstr "Corona"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:21
 msgid "Address"
-msgstr "Adresse"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:23
 msgid "Arrival"
-msgstr "Ankunft"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:24
 msgid "Departure"
-msgstr "Abreise"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/print/list_attendance.html:5
 #: aleksis/apps/paweljong/templates/paweljong/print/list_attendance.html:12
 msgid "attendance list"
-msgstr "Anwesenheitsliste"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:5
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:12
 msgid "participant list"
-msgstr "Teilnehmerliste"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:19
 msgid "Photo"
-msgstr "Foto"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/print/list_sign.html:5
 #: aleksis/apps/paweljong/templates/paweljong/print/list_sign.html:12
 msgid "signature list"
-msgstr "Unterschriftenliste"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/print/list_sign.html:16
 msgid "Meeting"
-msgstr "Treffen"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/print/list_sign.html:22
 msgid "Signature"
-msgstr "Unterschrift"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/print/manage.html:4
 #: aleksis/apps/paweljong/templates/paweljong/print/manage.html:5
 msgid "Generate list"
-msgstr "Liste generieren"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/print/voucher.html:5
 #: aleksis/apps/paweljong/templates/paweljong/print/voucher.html:12
 msgid "Voucher for "
-msgstr "Gutschein für "
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/print/voucher.html:20
 msgid "Voucher for"
-msgstr "Gutschein für"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/print/voucher.html:20
 msgid "to visit event"
-msgstr "für die Veranstaltung"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/print/voucher.html:20
 msgid "on"
-msgstr "am"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/print/voucher.html:20
 msgid "at"
-msgstr "in"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/print/voucher.html:21
 msgid "To use the voucher, register for the event "
-msgstr "Um den Gutschein zu nutzen, registriere dich für die Veranstaltung "
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/print/voucher.html:21
 msgid "here"
-msgstr "hier"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/register_start.html:4
 msgid "Register"
-msgstr "Registrieren"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/register_start.html:16
 msgid ""
 "\n"
-"           Every person needs a personal e-mail address. This address must "
-"be one\n"
-"           that you, the participating child, check and read yourself, not "
-"one owned by your\n"
+"           Every person needs a personal e-mail address. This address must be one\n"
+"           that you, the participating child, check and read yourself, not one owned by your\n"
 "           parents.\n"
 "           "
 msgstr ""
-"\n"
-"           Jeder Benutzende benötigt seine eigene E-Mail-Adresse. Diese "
-"Adresse muss eine Adresse sein,\n"
-"           die du selbst abrufst und liest, und die nicht deinen Eltern "
-"gehört.\n"
-"           Wichtige Informationen senden wir natürlich immer zusätzlich an "
-"deine Eltern.\n"
-"           "
 
 #: aleksis/apps/paweljong/templates/paweljong/registration_state/create.html:4
 #: aleksis/apps/paweljong/templates/paweljong/registration_state/create.html:5
 #: aleksis/apps/paweljong/templates/paweljong/registration_state/list.html:11
 msgid "Create registration state"
-msgstr "Registrierungsstatus erstellen"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/registration_state/edit.html:4
 #: aleksis/apps/paweljong/templates/paweljong/registration_state/edit.html:5
 msgid "Edit registration state"
-msgstr "Registrierungsstatus bearbeiten"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/registration_state/list.html:6
 #: aleksis/apps/paweljong/templates/paweljong/registration_state/list.html:7
 msgid "Registration states"
-msgstr "Registrierungsstatus"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/term/create.html:4
 #: aleksis/apps/paweljong/templates/paweljong/term/create.html:5
 #: aleksis/apps/paweljong/templates/paweljong/term/list.html:11
 msgid "Create term"
-msgstr "Bedingung erstellen"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/term/edit.html:4
 #: aleksis/apps/paweljong/templates/paweljong/term/edit.html:5
 msgid "Edit term"
-msgstr "Bedingung bearbeiten"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/voucher/create.html:4
 #: aleksis/apps/paweljong/templates/paweljong/voucher/create.html:5
 #: aleksis/apps/paweljong/templates/paweljong/voucher/list.html:21
 msgid "Create voucher"
-msgstr "Gutschein erstellen"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/voucher/edit.html:4
 #: aleksis/apps/paweljong/templates/paweljong/voucher/edit.html:5
 msgid "Edit voucher"
-msgstr "Gutschein bearbeiten"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/voucher/list.html:11
 msgid "Filter vouchers"
-msgstr "Gutscheine filtern"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/voucher/list.html:23
 msgid "Selected vouchers"
-msgstr "Ausgewählte Gutscheine"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:3
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:35
 msgid "New account"
-msgstr "Neues Konto"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:6
 #, python-format
 msgid "New account: %(person)s"
-msgstr "Neues Konto: %(person)s"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:11
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:41
 msgid "Username"
-msgstr "Benutzername"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:22
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:51
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:23
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:72
 msgid "Guardian"
-msgstr "Erziehungsberechtigter"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:30
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:61
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:26
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:61
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:28
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:65
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:49
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:103
 msgid "Your AlekSIS team"
-msgstr "Dein AlekSIS-Team"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:3
 msgid "New event"
-msgstr "Neue Veranstaltung"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:6
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:31
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:33
 #, python-format
 msgid " An event was created: %(new_event)s"
-msgstr " Eine Veranstaltung wurde erstellt: %(new_event)s"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:10
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:38
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:40
 msgid "Published"
-msgstr "Veröffentlicht"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:15
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:43
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:45
 msgid "Cost"
-msgstr "Kosten"
+msgstr ""
 
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:22
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:55
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:16
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:46
+msgid "Minimum cost"
+msgstr ""
+
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:17
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:47
+msgid "Maximum cost"
+msgstr ""
+
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:24
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:59
 #, python-format
 msgid ""
 "\n"
 "        The event was created by %(sender)s\n"
 "    "
 msgstr ""
-"\n"
-"        Die Veranstaltung wurde von %(sender)s erstellt\n"
-"    "
 
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:3
 msgid "New registration"
-msgstr "Neue Anmeldung"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:6
 #, python-format
 msgid "New registration: %(event)s"
-msgstr "Neue Anmeldung: %(event)s"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:29
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:78
 msgid "Financial details"
-msgstr "Angaben zur Bezahlung"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:33
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:82
 msgid "Additional"
-msgstr "Zusätzliches"
+msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:54
 #, python-format
 msgid "New registration: %(registration)s"
-msgstr "Neue Anmeldung: %(registration)s"
+msgstr ""
 
 #: aleksis/apps/paweljong/views.py:73 aleksis/apps/paweljong/views.py:85
 msgid "The event has been saved."
-msgstr "Die Veranstaltung wurde gespeichert."
+msgstr ""
 
 #: aleksis/apps/paweljong/views.py:157
 msgid "The event registration has been created."
-msgstr "Die Veranstaltungsanmeldung wurde erstellt."
+msgstr ""
 
 #: aleksis/apps/paweljong/views.py:169
 msgid "The event registration has been saved."
-msgstr "Die Veranstaltungsanmeldung wurde gespeichert."
+msgstr ""
 
 #: aleksis/apps/paweljong/views.py:190
 msgid "The registration has been saved."
-msgstr "Die Anmeldung wurde gespeichert."
+msgstr ""
 
-#: aleksis/apps/paweljong/views.py:235
+#: aleksis/apps/paweljong/views.py:236
 msgid "The registration has been deleted."
-msgstr "Die Veranstaltung wurde gelöscht."
+msgstr ""
 
-#: aleksis/apps/paweljong/views.py:247
+#: aleksis/apps/paweljong/views.py:248
 msgid "The voucher has been created."
-msgstr "Der Gutschein wurde erstellt."
+msgstr ""
 
-#: aleksis/apps/paweljong/views.py:259
+#: aleksis/apps/paweljong/views.py:260
 msgid "The voucher has been saved."
-msgstr "Der Gutschein wurde gespeichert."
+msgstr ""
 
-#: aleksis/apps/paweljong/views.py:269
+#: aleksis/apps/paweljong/views.py:270
 msgid "The voucher has been deleted."
-msgstr "Der Gutschein wurde gelöscht."
+msgstr ""
 
-#: aleksis/apps/paweljong/views.py:418 aleksis/apps/paweljong/views.py:407
+#: aleksis/apps/paweljong/views.py:420
 msgid "Create e-mail address"
-msgstr "E-Mail-Adresse erstellen"
+msgstr ""
 
-#: aleksis/apps/paweljong/views.py:420 aleksis/apps/paweljong/views.py:409
-msgid ""
-"All participants need a personal e-mail address, which they check and read "
-"temselves. We offer the possibility to register an e-mail address on our "
-"secure servers, made for young users. For information about receiving mails, "
-"see: <a href='https://wiki.teckids.org/de/Dienste/E-Mail'>https://wiki."
-"teckids.org/de/Dienste/E-Mail</a>."
-msgstr ""
-"Alle Teilnehmenden brauchen eine persönliche Adresse, die sie selbst abrufen "
-"und lesen. Wir bieten die Möglichkeit an, E-Mail-Adressen auf unseren "
-"sicheren Servern zu registrieren. Informationen, wie Du deine Mails abrufen "
-"kannst, findest Du unter <a href='https://wiki.institute/pages/services."
-"html'>https://wiki.teckids.org/de/Dienste/E-Mail</a>."
-
-#: aleksis/apps/paweljong/views.py:429 aleksis/apps/paweljong/views.py:418
-msgid ""
-"First, please enter some basic information about yourself, and check whether "
-"all information is correct."
+#: aleksis/apps/paweljong/views.py:422
+msgid "All participants need a personal e-mail address, which they check and read temselves. We offer the possibility to register an e-mail address on our secure servers, made for young users. For information about receiving mails, see: <a href='https://wiki.teckids.org/de/Dienste/E-Mail'>https://wiki.teckids.org/de/Dienste/E-Mail</a>."
+msgstr ""
+
+#: aleksis/apps/paweljong/views.py:431
+msgid "First, please enter some basic information about yourself, and check whether all information is correct."
 msgstr ""
-"Zuerst, gib bitte einige Informationen über dich an und prüfe, dass alle "
-"Informationen korrekt sind."
 
-#: aleksis/apps/paweljong/views.py:433 aleksis/apps/paweljong/views.py:422
+#: aleksis/apps/paweljong/views.py:435
 msgid "Contact information"
-msgstr "Kontaktinformationen"
+msgstr ""
 
-#: aleksis/apps/paweljong/views.py:435 aleksis/apps/paweljong/views.py:424
-msgid ""
-"Tell us how we can contact you. You will receive information about the event "
-"by e-mail. Please use your personal e-mail address where you will read mails "
-"yourself, not an address of your parents. We will always send all important "
-"information to your parents as well, and you will enter their e-mail address "
-"on the next page."
-msgstr ""
-"Teile uns mit, wie wir dich erreichen können. Du wirst Informationen zu der "
-"Veranstaltung per E-Mail erhalten. Bitte nutze deine persönliche E-Mail-"
-"Adresse, die selbst liest, nicht die E-Mail-Adresse deiner Eltern. Wir "
-"senden wichtige Informationen immer zusätzlich an deine Eltern. Ihre E-Mail-"
-"Adresse wirst du im nächsten Schritt eingeben."
-
-#: aleksis/apps/paweljong/views.py:442 aleksis/apps/paweljong/views.py:431
+#: aleksis/apps/paweljong/views.py:437
+msgid "Tell us how we can contact you. You will receive information about the event by e-mail. Please use your personal e-mail address where you will read mails yourself, not an address of your parents. We will always send all important information to your parents as well, and you will enter their e-mail address on the next page."
+msgstr ""
+
+#: aleksis/apps/paweljong/views.py:444
 msgid "Legal guardians / parents"
-msgstr "Erziehungsberechtigte / Eltern"
+msgstr ""
 
-#: aleksis/apps/paweljong/views.py:444 aleksis/apps/paweljong/views.py:433
-msgid ""
-"Tell us how we can reach your parents or other legal guardians. This should "
-"be the person who was present when you registered for the event (which is "
-"now). If you want to add another parent, please tell us later as a comment."
+#: aleksis/apps/paweljong/views.py:446
+msgid "Tell us how we can reach your parents or other legal guardians. This should be the person who was present when you registered for the event (which is now). If you want to add another parent, please tell us later as a comment."
 msgstr ""
-"Teile uns mit, wie wir deine Eltern oder Erziehungsberechtigten während der "
-"Veranstaltung erreichen können. Das sollte eine Person sein, die während der "
-"Anmeldung (also jetzt gerade), bei Dir ist. Wenn du einen weiteren "
-"Erziehungsberechtigten angeben möchtest, kannst du uns das später als "
-"Kommentar mitteilen."
 
-#: aleksis/apps/paweljong/views.py:450 aleksis/apps/paweljong/views.py:439
+#: aleksis/apps/paweljong/views.py:452
 msgid "Additional registration information"
-msgstr "Zusätzliche Anmeldungsinformationen"
+msgstr ""
 
-#: aleksis/apps/paweljong/views.py:452 aleksis/apps/paweljong/views.py:441
-msgid ""
-"Please answer the following questions as precisely as you can, so we can "
-"make sure your event attendance will be organised as wel las possible."
+#: aleksis/apps/paweljong/views.py:454
+msgid "Please answer the following questions as precisely as you can, so we can make sure your event attendance will be organised as wel las possible."
 msgstr ""
-"Bitte beantworte die folgenden Fragen so genau wie möglich, sodass wir "
-"sicher gehen können, dass deine Teilnahme bei der Veranstaltung so gut wie "
-"möglich organisiert ist."
 
-#: aleksis/apps/paweljong/views.py:458 aleksis/apps/paweljong/views.py:447
-msgid ""
-"Please decide with your parents how you want to pay. In this step, you only "
-"select a payment method. The real payment will be done in a separate step, "
-"after the registration is complete."
+#: aleksis/apps/paweljong/views.py:460
+msgid "Please decide with your parents how you want to pay. In this step, you only select a payment method. The real payment will be done in a separate step, after the registration is complete."
 msgstr ""
-"Bitte wählen mit Deinen Eltern, wie Du bezahlen möchtest. In diesem Schritt "
-"wird nur die Zahlungsmethode ausgewählt. Die eigentliche Zahlung wird in "
-"einem separaten Schritt nach der Anmeldung durchgeführt."
 
-#: aleksis/apps/paweljong/views.py:463 aleksis/apps/paweljong/views.py:452
+#: aleksis/apps/paweljong/views.py:465
 msgid "Consent"
-msgstr "Einverständnis"
+msgstr ""
 
-#: aleksis/apps/paweljong/views.py:465 aleksis/apps/paweljong/views.py:454
-msgid ""
-"Lastly, please read the terms and conditions carefully, together with your "
-"parents. After that, you will need to confirm that you agree with everything "
-"yourself, and that your parents also agree."
+#: aleksis/apps/paweljong/views.py:467
+msgid "Lastly, please read the terms and conditions carefully, together with your parents. After that, you will need to confirm that you agree with everything yourself, and that your parents also agree."
 msgstr ""
-"Zuletzt lies bitte alle Bedingungen sorgfältig zusammen mit deinen Eltern "
-"durch. Danach musst du bestätigen, dass du und deine Eltern alles gelesen "
-"habt und akzeptiert."
 
-#: aleksis/apps/paweljong/views.py:676 aleksis/apps/paweljong/views.py:568
-#: aleksis/apps/paweljong/views.py:678
+#: aleksis/apps/paweljong/views.py:685
 msgid "You entered an invalid voucher code!"
-msgstr "Du hast einen ungütigen Gutscheincode eingegeben!"
-
-#: aleksis/apps/paweljong/views.py:702 aleksis/apps/paweljong/views.py:704
-msgid ""
-"You have successfully registered for the event. Please give us up to two "
-"days to process your registration. You will then receive an email from us."
 msgstr ""
-"Du hast dich erfolgreich zu der Veranstaltung angemeldet. Bitte gib uns ein "
-"paar Tage, um deine Anmeldung zu bearbeiten. Du wirst dann eine E-Mail von "
-"uns bekommen."
 
-#: aleksis/apps/paweljong/views.py:709 aleksis/apps/paweljong/views.py:711
-msgid "You registered for an event"
-msgstr "Du hast dich zu einer Veranstaltung angemeldet"
-
-#: aleksis/apps/paweljong/views.py:710 aleksis/apps/paweljong/views.py:712
-#, python-format
-msgid "You registered for the event %s"
-msgstr "Du hast dich zur Veranstaltung %s angemeldet"
+#: aleksis/apps/paweljong/views.py:711
+msgid "You have successfully registered for the event. Please give us up to two days to process your registration. You will then receive an email from us."
+msgstr ""
 
-#: aleksis/apps/paweljong/views.py:770 aleksis/apps/paweljong/views.py:918
-#: aleksis/apps/paweljong/views.py:769 aleksis/apps/paweljong/views.py:917
+#: aleksis/apps/paweljong/views.py:779 aleksis/apps/paweljong/views.py:927
 msgid "The term has been created."
-msgstr "Die Bedingung wurde erfolgreich erstellt."
+msgstr ""
 
-#: aleksis/apps/paweljong/views.py:782 aleksis/apps/paweljong/views.py:930
-#: aleksis/apps/paweljong/views.py:781 aleksis/apps/paweljong/views.py:929
+#: aleksis/apps/paweljong/views.py:791 aleksis/apps/paweljong/views.py:939
 msgid "The term has been saved."
-msgstr "Die Bedingung wurde gespeichert."
+msgstr ""
 
-#: aleksis/apps/paweljong/views.py:798 aleksis/apps/paweljong/views.py:797
+#: aleksis/apps/paweljong/views.py:807
 msgid "Announcement feed of all upcoming events"
-msgstr "Ankündigungs-Feed aller bevorstehenden Veranstaltungen"
+msgstr ""
 
-#: aleksis/apps/paweljong/views.py:838 aleksis/apps/paweljong/views.py:837
+#: aleksis/apps/paweljong/views.py:847
 msgid "The info mailing has been created."
-msgstr "Das Info-Mailing wurde erstellt."
+msgstr ""
 
-#: aleksis/apps/paweljong/views.py:850 aleksis/apps/paweljong/views.py:849
+#: aleksis/apps/paweljong/views.py:859
 msgid "The info mailing has been saved."
-msgstr "Das Info-Mailing wurde gespeichert."
+msgstr ""
 
-#: aleksis/apps/paweljong/views.py:860 aleksis/apps/paweljong/views.py:859
+#: aleksis/apps/paweljong/views.py:869
 msgid "The info mailing has been deleted."
-msgstr "Das Info-Mailing wurde gelöscht."
+msgstr ""
 
-#: aleksis/apps/paweljong/views.py:943 aleksis/apps/paweljong/views.py:942
+#: aleksis/apps/paweljong/views.py:952
 msgid "Registration successfully retracted."
-msgstr "Anmeldung erfolgreich storniert."
+msgstr ""
 
-#: aleksis/apps/paweljong/views.py:1000 aleksis/apps/paweljong/views.py:999
+#: aleksis/apps/paweljong/views.py:1009
 msgid "Person does not exist!"
-msgstr "Person existiert nicht!"
+msgstr ""
 
-#: aleksis/apps/paweljong/views.py:1027 aleksis/apps/paweljong/views.py:1026
+#: aleksis/apps/paweljong/views.py:1036
 msgid "Successfully checked in."
-msgstr "Erfolgreich eingechecked."
+msgstr ""
 
-#: aleksis/apps/paweljong/views.py:1047 aleksis/apps/paweljong/views.py:1046
+#: aleksis/apps/paweljong/views.py:1056
 msgid "Successfully marked as payed!"
-msgstr "Erfolgreich als bezahlt markiert!"
-
-#: aleksis/apps/paweljong/forms.py:194
-msgid "Personal data"
-msgstr "Persönliche Daten"
-
-#: aleksis/apps/paweljong/views.py:997
-#, python-brace-format
-msgid "Person {person} added successfully!"
-msgstr "Person {person} erfolgreich hinzugefügt!"
-
-#~ msgid "The provided username is not linked to a person."
-#~ msgstr "Der angegebene Benutzername ist nicht mit einer Person verknüpft."
-
-#~ msgid "{} successfully checked for {}."
-#~ msgstr "{} erfolgreich für {} eingechecked."
-
-#~ msgid "Generate participant list"
-#~ msgstr "Teilnehmerlisten generieren"
-
-#~ msgid ""
-#~ "\n"
-#~ "           We ask parents to not fill in the registration on behalf of "
-#~ "their child.\n"
-#~ "           "
-#~ msgstr ""
-#~ "\n"
-#~ "           Wir bitten die Eltern darum, diese Anmeldung nicht "
-#~ "stellvertretend für ihr Kind auszufüllen.\n"
-#~ "           "
-
-#~ msgid "Filter registrations"
-#~ msgstr "Anmeldungen filtern"
-
-#~ msgid "Selected registrations"
-#~ msgstr "Ausgewählte Anmeldungen"
-
-#~ msgid ""
-#~ "Parents: I authorize the creditor Teckids e.V., Kennedyallee 18, 53175 "
-#~ "Bonn with creditor ID DE70ZZZ00001497650, to collect the participant fee "
-#~ "from my account once using the SEPA core direct debit. At the same time, "
-#~ "I instruct my bank to redeem the SEPA core direct debit withdrawn from my "
-#~ "account by Teckids e.V."
-#~ msgstr ""
-#~ "Eltern: Ich ermächtige den Gläubiger Teckids e.V., Kennedyallee 18, 53175 "
-#~ "Bonn mit der Gläubiger-ID DE70ZZZ00001497650, den Teilnehmerbeitrag "
-#~ "einmalig per SEPA-Basislastschrift von meinem Konto einzuziehen. Zugleich "
-#~ "weise ich mein Kreditinstitut an, die von Teckids e.V. von meinem Konto "
-#~ "eingezogene SEPA-Basislastschrift einzulösen."
-
-#~ msgid ""
-#~ "If your parents want to pay by SEPA direct debit, please let them fill "
-#~ "out this field."
-#~ msgstr ""
-#~ "Wenn deine Eltern per SEPA-Lastschrift bezahlen möchten, lasse sie dieses "
-#~ "Feld ausfüllen."
-
-#~ msgid "General event information"
-#~ msgstr "Generelle Veranstaltungsinformationen"
-
-#~ msgid "Declaration of consent"
-#~ msgstr "Einverständniserklärung"
-
-#~ msgid "SEPA direct debit"
-#~ msgstr "SEPA-Lastschriftmandat"
-
-#~ msgid "IBAN (for SEPA direct debit)"
-#~ msgstr "IBAN (für SEPA-Lastschriftmandat)"
-
-#~ msgid "IBAN"
-#~ msgstr "IBAN"
-
-#~ msgid "Accept SEPA"
-#~ msgstr "SEPA-Lastschriftmandat"
-
-#~ msgid ""
-#~ "By default, we will send you an invoice, which you or your parents can "
-#~ "pay by bank transfer. You can also choose to pay by direct debit – please "
-#~ "make sure to enter exactly what your parents tell you."
-#~ msgstr ""
-#~ "Standardmäßig senden wir eine Rechnung, welche du oder deine Eltern per "
-#~ "Banküberweisung bezahlen könnt. Du kannst auch per Lastschrift bezahlen ­– "
-#~ "bitte trage hier genau das ein, was deine Eltern dir sagen."
-
-#~ msgid ""
-#~ "If you have a voucher for the event, enter the code here.It will be "
-#~ "charged automatically."
-#~ msgstr ""
-#~ "Wenn du einen Gutschein für diese Veranstaltung hast, gib den Code hier "
-#~ "ein. Er wird automatisch verrechnet."
-
-#~ msgid ""
-#~ "Parents: I authorize the creditor  e.V., Rochusstr. 2-4, 53123 Bonn with "
-#~ "creditor ID DE70FZT00001497650, to collect the participant fee from my "
-#~ "account once using the SEPA core direct debit. At the same time, I "
-#~ "instruct my bank to redeem the SEPA core direct debit withdrawn from my "
-#~ "account by  e.V."
-#~ msgstr ""
-#~ "Eltern: Ich ermächtige den Gläubiger Teckids e.V., Kennedyallee 18, 53175 "
-#~ "Bonn mit der Gläubiger-ID DE70ZZZ00001497650, den Teilnehmerbeitrag "
-#~ "einmalig per SEPA-Basislastschrift von meinem Konto einzuziehen. Zugleich "
-#~ "weise ich mein Kreditinstitut an, die von Teckids e.V. von meinem Konto "
-#~ "eingezogene SEPA-Basislastschrift einzulösen."
-
-#, python-format
-#~ msgid ""
-#~ "\n"
-#~ "               The event takes place in <strong>%(event.place)s</strong>\n"
-#~ "               (Information on overnight stays and shared trips see "
-#~ "description)\n"
-#~ "             "
-#~ msgstr ""
-#~ "\n"
-#~ "               Die Veranstaltung findet in<strong>%(event.place)s</"
-#~ "strong> statt\n"
-#~ "               (Informationen über Übernachtungen und Ausflüge findest du "
-#~ "in der Beschreibung)\n"
-#~ "             "
-
-#~ msgid "Registration possible until"
-#~ msgstr "Anmeldung möglich bis"
-
-#~ msgid "incl. program, overnight stays, trips and meals"
-#~ msgstr "inkl. Programm, Ãœbernachtungen Fahrten und Mahlzeiten"
-
-#~ msgid "(if part of the event)"
-#~ msgstr "(falls Teil der Veranstaltung)"
-
-#~ msgid ""
-#~ "\n"
-#~ "         You can now choose a personal e-mail address hosted on our "
-#~ "servers.\n"
-#~ "         "
-#~ msgstr ""
-#~ "\n"
-#~ "         du kannst eine persönliche E-Mail-Adresse wählen, die auf "
-#~ "unseren Servern gehostet wird.\n"
-#~ "         "
-
-#~ msgid "Declarations"
-#~ msgstr "Erklärungen"
+msgstr ""
diff --git a/aleksis/apps/paweljong/locale/fr/LC_MESSAGES/django.po b/aleksis/apps/paweljong/locale/fr/LC_MESSAGES/django.po
index 505723887b1f0217fa8cb397d3f173f4d295b219..e7ffe22cd38020e2e6cac23c1bea186ef826a44f 100644
--- a/aleksis/apps/paweljong/locale/fr/LC_MESSAGES/django.po
+++ b/aleksis/apps/paweljong/locale/fr/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-02-15 18:11+0000\n"
+"POT-Creation-Date: 2025-02-15 18:23+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -70,8 +70,8 @@ msgstr ""
 msgid "Creative Commons with attribution and distribution only under the same conditions, 4.0 or later"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:60 aleksis/apps/paweljong/forms.py:489
-#: aleksis/apps/paweljong/forms.py:613
+#: aleksis/apps/paweljong/forms.py:60 aleksis/apps/paweljong/forms.py:507
+#: aleksis/apps/paweljong/forms.py:632
 msgid "Base data"
 msgstr ""
 
@@ -79,11 +79,11 @@ msgstr ""
 msgid "Date data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:65
+#: aleksis/apps/paweljong/forms.py:66
 msgid "Event details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:66 aleksis/apps/paweljong/models.py:172
+#: aleksis/apps/paweljong/forms.py:72 aleksis/apps/paweljong/models.py:176
 #: aleksis/apps/paweljong/templates/paweljong/event/terms.html:4
 #: aleksis/apps/paweljong/templates/paweljong/event/terms.html:5
 #: aleksis/apps/paweljong/templates/paweljong/term/list.html:6
@@ -91,14 +91,14 @@ msgstr ""
 msgid "Terms"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:67 aleksis/apps/paweljong/models.py:175
+#: aleksis/apps/paweljong/forms.py:73 aleksis/apps/paweljong/models.py:179
 #: aleksis/apps/paweljong/templates/paweljong/info_mailing/list.html:6
 #: aleksis/apps/paweljong/templates/paweljong/info_mailing/list.html:7
 msgid "Info mailings"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:110 aleksis/apps/paweljong/forms.py:245
-#: aleksis/apps/paweljong/forms.py:626 aleksis/apps/paweljong/models.py:190
+#: aleksis/apps/paweljong/forms.py:118 aleksis/apps/paweljong/forms.py:259
+#: aleksis/apps/paweljong/forms.py:645 aleksis/apps/paweljong/models.py:194
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:22
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:12
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:42
@@ -107,13 +107,13 @@ msgstr ""
 msgid "Date of birth"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:111 aleksis/apps/paweljong/forms.py:250
-#: aleksis/apps/paweljong/models.py:191
+#: aleksis/apps/paweljong/forms.py:119 aleksis/apps/paweljong/forms.py:264
+#: aleksis/apps/paweljong/models.py:195
 msgid "Sex"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:112 aleksis/apps/paweljong/forms.py:266
-#: aleksis/apps/paweljong/models.py:192
+#: aleksis/apps/paweljong/forms.py:120 aleksis/apps/paweljong/forms.py:285
+#: aleksis/apps/paweljong/models.py:196
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:15
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:45
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:18
@@ -121,12 +121,12 @@ msgstr ""
 msgid "Street"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:113 aleksis/apps/paweljong/models.py:193
+#: aleksis/apps/paweljong/forms.py:121 aleksis/apps/paweljong/models.py:197
 msgid "House number"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:114 aleksis/apps/paweljong/forms.py:276
-#: aleksis/apps/paweljong/models.py:194
+#: aleksis/apps/paweljong/forms.py:122 aleksis/apps/paweljong/forms.py:295
+#: aleksis/apps/paweljong/models.py:198
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:17
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:47
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:20
@@ -134,19 +134,19 @@ msgstr ""
 msgid "Postal code"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:115 aleksis/apps/paweljong/forms.py:281
-#: aleksis/apps/paweljong/models.py:195
+#: aleksis/apps/paweljong/forms.py:123 aleksis/apps/paweljong/forms.py:300
+#: aleksis/apps/paweljong/models.py:199
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:18
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:48
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:11
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:39
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:41
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:21
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:70
 msgid "Place"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:116 aleksis/apps/paweljong/forms.py:296
-#: aleksis/apps/paweljong/models.py:196
+#: aleksis/apps/paweljong/forms.py:124 aleksis/apps/paweljong/forms.py:314
+#: aleksis/apps/paweljong/models.py:200
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:22
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:23
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:14
@@ -160,86 +160,86 @@ msgstr ""
 msgid "Mobile number"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:117 aleksis/apps/paweljong/forms.py:325
-#: aleksis/apps/paweljong/models.py:197
+#: aleksis/apps/paweljong/forms.py:125 aleksis/apps/paweljong/forms.py:343
+#: aleksis/apps/paweljong/models.py:201
 msgid "School details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:139
+#: aleksis/apps/paweljong/forms.py:148
 msgid "Event the voucher is valid for"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:140
+#: aleksis/apps/paweljong/forms.py:149
 msgid "Person the voucher is valid for"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:141
+#: aleksis/apps/paweljong/forms.py:150
 msgid "Voucher discount"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:149 aleksis/apps/paweljong/models.py:156
+#: aleksis/apps/paweljong/forms.py:158 aleksis/apps/paweljong/models.py:156
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:8
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:36
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:38
 msgid "Group"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:151
+#: aleksis/apps/paweljong/forms.py:160
 msgid "Select group to generate list"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:155
+#: aleksis/apps/paweljong/forms.py:164
 msgid "Template"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:157
+#: aleksis/apps/paweljong/forms.py:166
 msgid "Select template to generate list"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:161
+#: aleksis/apps/paweljong/forms.py:170
 msgid "Landscape"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:162
+#: aleksis/apps/paweljong/forms.py:171
 msgid "Select if output should be in landscape"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:174
+#: aleksis/apps/paweljong/forms.py:183
 msgid "Guardians personal data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:178
+#: aleksis/apps/paweljong/forms.py:187
 msgid "Guardians contact details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:184
+#: aleksis/apps/paweljong/forms.py:193
 msgid "Guardian's first name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:186
+#: aleksis/apps/paweljong/forms.py:195
 msgid "Please enter the first name of the legal guardian who will fill in the registration with you and who can be reached during the event in an emergency."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:192
+#: aleksis/apps/paweljong/forms.py:201
 msgid "Guardian's last name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:194
+#: aleksis/apps/paweljong/forms.py:203
 msgid "Please enter the last name of the legal guardian who will fill in the registration with you and who can be reached during the event in an emergency."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:200
+#: aleksis/apps/paweljong/forms.py:209
 msgid "Guardian's mobile number"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:202
+#: aleksis/apps/paweljong/forms.py:211
 msgid "We need the mobile phone number for emergencies if we urgently need to reach your parents during the event."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:208
+#: aleksis/apps/paweljong/forms.py:217
 msgid "Guardian's email address"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:220 aleksis/apps/paweljong/models.py:42
+#: aleksis/apps/paweljong/forms.py:230 aleksis/apps/paweljong/models.py:42
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:10
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:24
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:40
@@ -251,8 +251,8 @@ msgstr ""
 msgid "Name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:231 aleksis/apps/paweljong/forms.py:500
-#: aleksis/apps/paweljong/forms.py:624
+#: aleksis/apps/paweljong/forms.py:242 aleksis/apps/paweljong/forms.py:518
+#: aleksis/apps/paweljong/forms.py:643
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:20
 #: aleksis/apps/paweljong/templates/paweljong/print/list_attendance.html:20
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:21
@@ -260,8 +260,8 @@ msgstr ""
 msgid "First name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:236 aleksis/apps/paweljong/forms.py:501
-#: aleksis/apps/paweljong/forms.py:625
+#: aleksis/apps/paweljong/forms.py:247 aleksis/apps/paweljong/forms.py:519
+#: aleksis/apps/paweljong/forms.py:644
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:19
 #: aleksis/apps/paweljong/templates/paweljong/print/list_attendance.html:19
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:20
@@ -269,15 +269,15 @@ msgstr ""
 msgid "Last name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:252
+#: aleksis/apps/paweljong/forms.py:266
 msgid "For various reasons, e.g. because we have to keep gender segregation during the night for legal reasons, we need to know if you are a boy or a girl."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:258
+#: aleksis/apps/paweljong/forms.py:272
 msgid "Personal information"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:271
+#: aleksis/apps/paweljong/forms.py:290
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:16
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:46
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:19
@@ -285,11 +285,11 @@ msgstr ""
 msgid "Housenumber"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:283
+#: aleksis/apps/paweljong/forms.py:302
 msgid "Address data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:287
+#: aleksis/apps/paweljong/forms.py:305
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:13
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:25
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:43
@@ -301,97 +301,97 @@ msgstr ""
 msgid "Email address"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:289
+#: aleksis/apps/paweljong/forms.py:307
 msgid "Please use your personal e-mail address here, which you will check personally. Important information will always be sent to your parents as well. Do not use an e-mail address owned by your parents here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:299
+#: aleksis/apps/paweljong/forms.py:317
 msgid "Your mobile number helps us to reach you in an emergency during the event, e.g. if you are alone with your group at a conference or similar. If you don't have a cell phone, you can leave the field blank."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:308
+#: aleksis/apps/paweljong/forms.py:326
 #: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:72
 msgid "Contact details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:313
+#: aleksis/apps/paweljong/forms.py:331
 msgid "School"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:314
+#: aleksis/apps/paweljong/forms.py:332
 msgid "Please enter the name of your school."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:317
+#: aleksis/apps/paweljong/forms.py:335
 msgid "School place"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:318
+#: aleksis/apps/paweljong/forms.py:336
 msgid "Enter the place (city) where your school is located."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:321 aleksis/apps/paweljong/models.py:341
+#: aleksis/apps/paweljong/forms.py:339 aleksis/apps/paweljong/models.py:343
 msgid "School class"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:322
+#: aleksis/apps/paweljong/forms.py:340
 msgid "Please enter the class you are in (e.g. 8a)."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:332 aleksis/apps/paweljong/models.py:346
+#: aleksis/apps/paweljong/forms.py:350 aleksis/apps/paweljong/models.py:350
 msgid "Medical information / intolerances"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:336
+#: aleksis/apps/paweljong/forms.py:354
 msgid "Other remarks"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:346
+#: aleksis/apps/paweljong/forms.py:364
 msgid "If there are any medically important things we need to consider, e.g. when making food or to make sure you take prescribed medication, please enter it here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:350
+#: aleksis/apps/paweljong/forms.py:368
 msgid "You can write down any remarks you want to tell us here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:375
+#: aleksis/apps/paweljong/forms.py:393
 msgid "Financial data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:382
+#: aleksis/apps/paweljong/forms.py:400
 msgid "Voucher code"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:383
+#: aleksis/apps/paweljong/forms.py:401
 msgid "If you have a voucher code, type it in here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:388
+#: aleksis/apps/paweljong/forms.py:406
 msgid "Payment method"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:390
+#: aleksis/apps/paweljong/forms.py:408
 msgid "Please choose a payment method. The actual payment will be made after the registration."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:415
+#: aleksis/apps/paweljong/forms.py:433
 msgid "Our association would like to offer all children and young people the opportunity to participate in our events. Sometimes, however, families cannot afford the full fee. We therefore have a budget from which we can promote participation after we have carefully examined the necessity and eligibility. We rely on donations for this budget. If you would like to donate a voluntary additional amount for this budget, please indicate this here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:447
+#: aleksis/apps/paweljong/forms.py:465
 msgid "I confirm that the retraction of the registration is not possible anymore after {}"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:493 aleksis/apps/paweljong/forms.py:617
+#: aleksis/apps/paweljong/forms.py:511 aleksis/apps/paweljong/forms.py:636
 msgid "Account data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:507 aleksis/apps/paweljong/forms.py:632
+#: aleksis/apps/paweljong/forms.py:525 aleksis/apps/paweljong/forms.py:651
 msgid "The username must only contain lower case letters and numbers, and must begin with a letter."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:552 aleksis/apps/paweljong/forms.py:576
-#: aleksis/apps/paweljong/models.py:309 aleksis/apps/paweljong/models.py:337
+#: aleksis/apps/paweljong/forms.py:570 aleksis/apps/paweljong/forms.py:594
+#: aleksis/apps/paweljong/models.py:311 aleksis/apps/paweljong/models.py:339
 #: aleksis/apps/paweljong/tables.py:46
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:8
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:38
@@ -400,19 +400,19 @@ msgstr ""
 msgid "Person"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:554 aleksis/apps/paweljong/forms.py:577
+#: aleksis/apps/paweljong/forms.py:572 aleksis/apps/paweljong/forms.py:595
 msgid "Please enter a username."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:570 aleksis/apps/paweljong/models.py:513
+#: aleksis/apps/paweljong/forms.py:588 aleksis/apps/paweljong/models.py:522
 msgid "Comment"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:571
+#: aleksis/apps/paweljong/forms.py:589
 msgid "Please enter a comment describing the checkpoint (e.g. Dinner)."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:583
+#: aleksis/apps/paweljong/forms.py:601
 msgid "Submit geolocation"
 msgstr ""
 
@@ -542,7 +542,7 @@ msgstr ""
 
 #: aleksis/apps/paweljong/models.py:158
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:9
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:37
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:39
 msgid "Description"
 msgstr ""
 
@@ -556,54 +556,62 @@ msgstr ""
 
 #: aleksis/apps/paweljong/models.py:164
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:12
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:40
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:42
 msgid "Date of event"
 msgstr ""
 
 #: aleksis/apps/paweljong/models.py:165
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:13
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:41
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:43
 msgid "Registration deadline"
 msgstr ""
 
 #: aleksis/apps/paweljong/models.py:166
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:14
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:42
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:44
 msgid "Retraction deadline"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:169 aleksis/apps/paweljong/models.py:372
+#: aleksis/apps/paweljong/models.py:169 aleksis/apps/paweljong/models.py:376
 msgid "Cost in €"
 msgstr ""
 
 #: aleksis/apps/paweljong/models.py:170
+msgid "Minimum cost in €"
+msgstr ""
+
+#: aleksis/apps/paweljong/models.py:172
+msgid "Maximum cost in €"
+msgstr ""
+
+#: aleksis/apps/paweljong/models.py:174
 msgid "Maximum participants"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:171
+#: aleksis/apps/paweljong/models.py:175
 msgid "Information about the event"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:182
+#: aleksis/apps/paweljong/models.py:186
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:80
 msgid "Additional fields"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:201
+#: aleksis/apps/paweljong/models.py:204
 msgid "Contact information fields to be shown."
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:286
+#: aleksis/apps/paweljong/models.py:288
 msgid "Sent to persons"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:295 aleksis/apps/paweljong/models.py:296
+#: aleksis/apps/paweljong/models.py:297 aleksis/apps/paweljong/models.py:298
 #: aleksis/apps/paweljong/templates/paweljong/voucher/list.html:6
 #: aleksis/apps/paweljong/templates/paweljong/voucher/list.html:7
 msgid "Vouchers"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:302 aleksis/apps/paweljong/models.py:335
+#: aleksis/apps/paweljong/models.py:304 aleksis/apps/paweljong/models.py:337
 #: aleksis/apps/paweljong/tables.py:12 aleksis/apps/paweljong/tables.py:43
 #: aleksis/apps/paweljong/templates/paweljong/event/full.html:4
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:8
@@ -613,109 +621,109 @@ msgstr ""
 msgid "Event"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:318
+#: aleksis/apps/paweljong/models.py:320
 msgid "Used by"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:338
+#: aleksis/apps/paweljong/models.py:340
 msgid "Registration date"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:340
+#: aleksis/apps/paweljong/models.py:342
 msgid "Name of school"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:342
+#: aleksis/apps/paweljong/models.py:345
 msgid "Place of the school"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:344
+#: aleksis/apps/paweljong/models.py:348
 msgid "Comment / remarks"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:351
+#: aleksis/apps/paweljong/models.py:355
 msgid "Voucher"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:355
+#: aleksis/apps/paweljong/models.py:359
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:31
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:80
 msgid "Donation"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:358
+#: aleksis/apps/paweljong/models.py:362
 msgid "Accepted terms"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:363
+#: aleksis/apps/paweljong/models.py:367
 msgid "States"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:366
+#: aleksis/apps/paweljong/models.py:370
 msgid "Retracted"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:367
+#: aleksis/apps/paweljong/models.py:371
 msgid "Retracted at"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:369
+#: aleksis/apps/paweljong/models.py:373
 msgid "Checked in"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:370
+#: aleksis/apps/paweljong/models.py:374
 msgid "Checked in at"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:380 aleksis/apps/paweljong/views.py:1029
+#: aleksis/apps/paweljong/models.py:384 aleksis/apps/paweljong/views.py:1038
 msgid "Person is already checked in!"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:417
+#: aleksis/apps/paweljong/models.py:426
 msgid "Participation of {} in event {}"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:446
+#: aleksis/apps/paweljong/models.py:455
 msgid "Social Sponsoring / Extra Donation"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:457
+#: aleksis/apps/paweljong/models.py:466
 msgid "Voucher / Granted discount"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:487 aleksis/apps/paweljong/views.py:427
+#: aleksis/apps/paweljong/models.py:496 aleksis/apps/paweljong/views.py:429
 msgid "Event registration"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:488
+#: aleksis/apps/paweljong/models.py:497
 msgid "Event registrations"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:498
+#: aleksis/apps/paweljong/models.py:507
 msgid "Related event"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:502
+#: aleksis/apps/paweljong/models.py:511
 msgid "Checked person"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:508
+#: aleksis/apps/paweljong/models.py:517
 msgid "Checked by person"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:515
+#: aleksis/apps/paweljong/models.py:524
 msgid "Date and time of check"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:517
+#: aleksis/apps/paweljong/models.py:526
 msgid "Latitude of check"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:520
+#: aleksis/apps/paweljong/models.py:529
 msgid "Longitude of check"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:528
+#: aleksis/apps/paweljong/models.py:536
 msgid "Can generate lists of participants of a group"
 msgstr ""
 
@@ -727,9 +735,122 @@ msgstr ""
 msgid "Mail recipient for event notifications"
 msgstr ""
 
+#: aleksis/apps/paweljong/preferences.py:32
+msgid "Name of client linked to invoices for events."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:43
+msgid "Name of invoice group used for events."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:53
+msgid "Participant help text for email step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:65
+msgid "Participant help text for account registration step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:77
+msgid "Participant help text for contact details step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:88
+msgid "Participant help text for guardians step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:100
+msgid "Participant help text for additional information step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:112
+msgid "Participant help text for financial step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:123
+msgid "Participant help text for consent step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:134
+msgid "Participant help text for confirmation step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:145
+msgid "Guardian help text for email step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:157
+msgid "Guardian help text for account registration step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:169
+msgid "Guardian help text for contact details step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:180
+msgid "Guardian help text for guardians step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:192
+msgid "Guardian help text for additional information step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:204
+msgid "Guardian help text for financial step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:215
+msgid "Guardian help text for consent step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:226
+msgid "Guardian help text for confirmation step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:61
+msgid "Retraction consent is required"
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:71
+msgid "Mail domain does not exist."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:78
+msgid "Mail address already in use."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:92
+msgid "A user with this username or e-mail already exists."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:109
+#: aleksis/apps/paweljong/schema/event_registration.py:149
+#, python-format
+msgid "A person using the e-mail address %s already exists."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:191
+msgid "The field 'Amount paid by you' is required."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:214
+msgid "The field 'Payment method' is required."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:239
+#: aleksis/apps/paweljong/views.py:718
+msgid "You registered for an event"
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:240
+#: aleksis/apps/paweljong/views.py:719
+#, python-format
+msgid "You registered for the event %s"
+msgstr ""
+
 #: aleksis/apps/paweljong/tables.py:14
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:16
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:44
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:18
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:48
 msgid "Max. participants"
 msgstr ""
 
@@ -844,8 +965,8 @@ msgid "of"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:62
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:17
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:45
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:19
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:49
 msgid "Owners"
 msgstr ""
 
@@ -874,8 +995,11 @@ msgstr ""
 msgid "Edit event"
 msgstr ""
 
+#: aleksis/apps/paweljong/templates/paweljong/event/full.html:37
+msgid "Self-determined"
+msgstr ""
+
 #: aleksis/apps/paweljong/templates/paweljong/event/full.html:58
-#: aleksis/apps/paweljong/templates/paweljong/event/full.html:60
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:109
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:119
 #: aleksis/apps/paweljong/templates/paweljong/register_start.html:57
@@ -883,7 +1007,7 @@ msgstr ""
 msgid "Register now"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event/full.html:62
+#: aleksis/apps/paweljong/templates/paweljong/event/full.html:60
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:85
 msgid "Not available"
 msgstr ""
@@ -894,7 +1018,7 @@ msgid "Events"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/list.html:10
-#: aleksis/apps/paweljong/views.py:789
+#: aleksis/apps/paweljong/views.py:798
 msgid "Upcoming events"
 msgstr ""
 
@@ -1088,24 +1212,24 @@ msgstr ""
 msgid "No checked in yet."
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:241
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:242
 msgid "Invoice details"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:247
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:248
 msgid "Billing information"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:279
-#: aleksis/apps/paweljong/views.py:456
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:280
+#: aleksis/apps/paweljong/views.py:458
 msgid "Payment"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:310
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:311
 msgid "Mark payed"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:323
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:325
 msgid "Guardians / Parents "
 msgstr ""
 
@@ -1308,8 +1432,8 @@ msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:30
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:61
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:26
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:61
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:28
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:65
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:49
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:103
 msgid "Your AlekSIS team"
@@ -1320,23 +1444,33 @@ msgid "New event"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:6
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:31
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:33
 #, python-format
 msgid " An event was created: %(new_event)s"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:10
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:38
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:40
 msgid "Published"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:15
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:43
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:45
 msgid "Cost"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:22
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:55
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:16
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:46
+msgid "Minimum cost"
+msgstr ""
+
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:17
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:47
+msgid "Maximum cost"
+msgstr ""
+
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:24
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:59
 #, python-format
 msgid ""
 "\n"
@@ -1384,123 +1518,114 @@ msgstr ""
 msgid "The registration has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:235
+#: aleksis/apps/paweljong/views.py:236
 msgid "The registration has been deleted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:247
+#: aleksis/apps/paweljong/views.py:248
 msgid "The voucher has been created."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:259
+#: aleksis/apps/paweljong/views.py:260
 msgid "The voucher has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:269
+#: aleksis/apps/paweljong/views.py:270
 msgid "The voucher has been deleted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:418
+#: aleksis/apps/paweljong/views.py:420
 msgid "Create e-mail address"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:420
+#: aleksis/apps/paweljong/views.py:422
 msgid "All participants need a personal e-mail address, which they check and read temselves. We offer the possibility to register an e-mail address on our secure servers, made for young users. For information about receiving mails, see: <a href='https://wiki.teckids.org/de/Dienste/E-Mail'>https://wiki.teckids.org/de/Dienste/E-Mail</a>."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:429
+#: aleksis/apps/paweljong/views.py:431
 msgid "First, please enter some basic information about yourself, and check whether all information is correct."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:433
+#: aleksis/apps/paweljong/views.py:435
 msgid "Contact information"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:435
+#: aleksis/apps/paweljong/views.py:437
 msgid "Tell us how we can contact you. You will receive information about the event by e-mail. Please use your personal e-mail address where you will read mails yourself, not an address of your parents. We will always send all important information to your parents as well, and you will enter their e-mail address on the next page."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:442
+#: aleksis/apps/paweljong/views.py:444
 msgid "Legal guardians / parents"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:444
+#: aleksis/apps/paweljong/views.py:446
 msgid "Tell us how we can reach your parents or other legal guardians. This should be the person who was present when you registered for the event (which is now). If you want to add another parent, please tell us later as a comment."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:450
+#: aleksis/apps/paweljong/views.py:452
 msgid "Additional registration information"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:452
+#: aleksis/apps/paweljong/views.py:454
 msgid "Please answer the following questions as precisely as you can, so we can make sure your event attendance will be organised as wel las possible."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:458
+#: aleksis/apps/paweljong/views.py:460
 msgid "Please decide with your parents how you want to pay. In this step, you only select a payment method. The real payment will be done in a separate step, after the registration is complete."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:463
+#: aleksis/apps/paweljong/views.py:465
 msgid "Consent"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:465
+#: aleksis/apps/paweljong/views.py:467
 msgid "Lastly, please read the terms and conditions carefully, together with your parents. After that, you will need to confirm that you agree with everything yourself, and that your parents also agree."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:676
+#: aleksis/apps/paweljong/views.py:685
 msgid "You entered an invalid voucher code!"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:702
+#: aleksis/apps/paweljong/views.py:711
 msgid "You have successfully registered for the event. Please give us up to two days to process your registration. You will then receive an email from us."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:709
-msgid "You registered for an event"
-msgstr ""
-
-#: aleksis/apps/paweljong/views.py:710
-#, python-format
-msgid "You registered for the event %s"
-msgstr ""
-
-#: aleksis/apps/paweljong/views.py:770 aleksis/apps/paweljong/views.py:918
+#: aleksis/apps/paweljong/views.py:779 aleksis/apps/paweljong/views.py:927
 msgid "The term has been created."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:782 aleksis/apps/paweljong/views.py:930
+#: aleksis/apps/paweljong/views.py:791 aleksis/apps/paweljong/views.py:939
 msgid "The term has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:798
+#: aleksis/apps/paweljong/views.py:807
 msgid "Announcement feed of all upcoming events"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:838
+#: aleksis/apps/paweljong/views.py:847
 msgid "The info mailing has been created."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:850
+#: aleksis/apps/paweljong/views.py:859
 msgid "The info mailing has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:860
+#: aleksis/apps/paweljong/views.py:869
 msgid "The info mailing has been deleted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:943
+#: aleksis/apps/paweljong/views.py:952
 msgid "Registration successfully retracted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:1000
+#: aleksis/apps/paweljong/views.py:1009
 msgid "Person does not exist!"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:1027
+#: aleksis/apps/paweljong/views.py:1036
 msgid "Successfully checked in."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:1047
+#: aleksis/apps/paweljong/views.py:1056
 msgid "Successfully marked as payed!"
 msgstr ""
diff --git a/aleksis/apps/paweljong/locale/la/LC_MESSAGES/django.po b/aleksis/apps/paweljong/locale/la/LC_MESSAGES/django.po
index b7b042263f01f96f17da23327193588bead1f424..ca5389f29c65df937c27a4a7e6f6af928e727bfb 100644
--- a/aleksis/apps/paweljong/locale/la/LC_MESSAGES/django.po
+++ b/aleksis/apps/paweljong/locale/la/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-02-15 18:11+0000\n"
+"POT-Creation-Date: 2025-02-15 18:23+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -69,8 +69,8 @@ msgstr ""
 msgid "Creative Commons with attribution and distribution only under the same conditions, 4.0 or later"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:60 aleksis/apps/paweljong/forms.py:489
-#: aleksis/apps/paweljong/forms.py:613
+#: aleksis/apps/paweljong/forms.py:60 aleksis/apps/paweljong/forms.py:507
+#: aleksis/apps/paweljong/forms.py:632
 msgid "Base data"
 msgstr ""
 
@@ -78,11 +78,11 @@ msgstr ""
 msgid "Date data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:65
+#: aleksis/apps/paweljong/forms.py:66
 msgid "Event details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:66 aleksis/apps/paweljong/models.py:172
+#: aleksis/apps/paweljong/forms.py:72 aleksis/apps/paweljong/models.py:176
 #: aleksis/apps/paweljong/templates/paweljong/event/terms.html:4
 #: aleksis/apps/paweljong/templates/paweljong/event/terms.html:5
 #: aleksis/apps/paweljong/templates/paweljong/term/list.html:6
@@ -90,14 +90,14 @@ msgstr ""
 msgid "Terms"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:67 aleksis/apps/paweljong/models.py:175
+#: aleksis/apps/paweljong/forms.py:73 aleksis/apps/paweljong/models.py:179
 #: aleksis/apps/paweljong/templates/paweljong/info_mailing/list.html:6
 #: aleksis/apps/paweljong/templates/paweljong/info_mailing/list.html:7
 msgid "Info mailings"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:110 aleksis/apps/paweljong/forms.py:245
-#: aleksis/apps/paweljong/forms.py:626 aleksis/apps/paweljong/models.py:190
+#: aleksis/apps/paweljong/forms.py:118 aleksis/apps/paweljong/forms.py:259
+#: aleksis/apps/paweljong/forms.py:645 aleksis/apps/paweljong/models.py:194
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:22
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:12
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:42
@@ -106,13 +106,13 @@ msgstr ""
 msgid "Date of birth"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:111 aleksis/apps/paweljong/forms.py:250
-#: aleksis/apps/paweljong/models.py:191
+#: aleksis/apps/paweljong/forms.py:119 aleksis/apps/paweljong/forms.py:264
+#: aleksis/apps/paweljong/models.py:195
 msgid "Sex"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:112 aleksis/apps/paweljong/forms.py:266
-#: aleksis/apps/paweljong/models.py:192
+#: aleksis/apps/paweljong/forms.py:120 aleksis/apps/paweljong/forms.py:285
+#: aleksis/apps/paweljong/models.py:196
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:15
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:45
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:18
@@ -120,12 +120,12 @@ msgstr ""
 msgid "Street"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:113 aleksis/apps/paweljong/models.py:193
+#: aleksis/apps/paweljong/forms.py:121 aleksis/apps/paweljong/models.py:197
 msgid "House number"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:114 aleksis/apps/paweljong/forms.py:276
-#: aleksis/apps/paweljong/models.py:194
+#: aleksis/apps/paweljong/forms.py:122 aleksis/apps/paweljong/forms.py:295
+#: aleksis/apps/paweljong/models.py:198
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:17
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:47
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:20
@@ -133,19 +133,19 @@ msgstr ""
 msgid "Postal code"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:115 aleksis/apps/paweljong/forms.py:281
-#: aleksis/apps/paweljong/models.py:195
+#: aleksis/apps/paweljong/forms.py:123 aleksis/apps/paweljong/forms.py:300
+#: aleksis/apps/paweljong/models.py:199
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:18
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:48
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:11
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:39
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:41
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:21
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:70
 msgid "Place"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:116 aleksis/apps/paweljong/forms.py:296
-#: aleksis/apps/paweljong/models.py:196
+#: aleksis/apps/paweljong/forms.py:124 aleksis/apps/paweljong/forms.py:314
+#: aleksis/apps/paweljong/models.py:200
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:22
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:23
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:14
@@ -159,86 +159,86 @@ msgstr ""
 msgid "Mobile number"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:117 aleksis/apps/paweljong/forms.py:325
-#: aleksis/apps/paweljong/models.py:197
+#: aleksis/apps/paweljong/forms.py:125 aleksis/apps/paweljong/forms.py:343
+#: aleksis/apps/paweljong/models.py:201
 msgid "School details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:139
+#: aleksis/apps/paweljong/forms.py:148
 msgid "Event the voucher is valid for"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:140
+#: aleksis/apps/paweljong/forms.py:149
 msgid "Person the voucher is valid for"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:141
+#: aleksis/apps/paweljong/forms.py:150
 msgid "Voucher discount"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:149 aleksis/apps/paweljong/models.py:156
+#: aleksis/apps/paweljong/forms.py:158 aleksis/apps/paweljong/models.py:156
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:8
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:36
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:38
 msgid "Group"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:151
+#: aleksis/apps/paweljong/forms.py:160
 msgid "Select group to generate list"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:155
+#: aleksis/apps/paweljong/forms.py:164
 msgid "Template"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:157
+#: aleksis/apps/paweljong/forms.py:166
 msgid "Select template to generate list"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:161
+#: aleksis/apps/paweljong/forms.py:170
 msgid "Landscape"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:162
+#: aleksis/apps/paweljong/forms.py:171
 msgid "Select if output should be in landscape"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:174
+#: aleksis/apps/paweljong/forms.py:183
 msgid "Guardians personal data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:178
+#: aleksis/apps/paweljong/forms.py:187
 msgid "Guardians contact details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:184
+#: aleksis/apps/paweljong/forms.py:193
 msgid "Guardian's first name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:186
+#: aleksis/apps/paweljong/forms.py:195
 msgid "Please enter the first name of the legal guardian who will fill in the registration with you and who can be reached during the event in an emergency."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:192
+#: aleksis/apps/paweljong/forms.py:201
 msgid "Guardian's last name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:194
+#: aleksis/apps/paweljong/forms.py:203
 msgid "Please enter the last name of the legal guardian who will fill in the registration with you and who can be reached during the event in an emergency."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:200
+#: aleksis/apps/paweljong/forms.py:209
 msgid "Guardian's mobile number"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:202
+#: aleksis/apps/paweljong/forms.py:211
 msgid "We need the mobile phone number for emergencies if we urgently need to reach your parents during the event."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:208
+#: aleksis/apps/paweljong/forms.py:217
 msgid "Guardian's email address"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:220 aleksis/apps/paweljong/models.py:42
+#: aleksis/apps/paweljong/forms.py:230 aleksis/apps/paweljong/models.py:42
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:10
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:24
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:40
@@ -250,8 +250,8 @@ msgstr ""
 msgid "Name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:231 aleksis/apps/paweljong/forms.py:500
-#: aleksis/apps/paweljong/forms.py:624
+#: aleksis/apps/paweljong/forms.py:242 aleksis/apps/paweljong/forms.py:518
+#: aleksis/apps/paweljong/forms.py:643
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:20
 #: aleksis/apps/paweljong/templates/paweljong/print/list_attendance.html:20
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:21
@@ -259,8 +259,8 @@ msgstr ""
 msgid "First name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:236 aleksis/apps/paweljong/forms.py:501
-#: aleksis/apps/paweljong/forms.py:625
+#: aleksis/apps/paweljong/forms.py:247 aleksis/apps/paweljong/forms.py:519
+#: aleksis/apps/paweljong/forms.py:644
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:19
 #: aleksis/apps/paweljong/templates/paweljong/print/list_attendance.html:19
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:20
@@ -268,15 +268,15 @@ msgstr ""
 msgid "Last name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:252
+#: aleksis/apps/paweljong/forms.py:266
 msgid "For various reasons, e.g. because we have to keep gender segregation during the night for legal reasons, we need to know if you are a boy or a girl."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:258
+#: aleksis/apps/paweljong/forms.py:272
 msgid "Personal information"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:271
+#: aleksis/apps/paweljong/forms.py:290
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:16
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:46
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:19
@@ -284,11 +284,11 @@ msgstr ""
 msgid "Housenumber"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:283
+#: aleksis/apps/paweljong/forms.py:302
 msgid "Address data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:287
+#: aleksis/apps/paweljong/forms.py:305
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:13
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:25
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:43
@@ -300,97 +300,97 @@ msgstr ""
 msgid "Email address"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:289
+#: aleksis/apps/paweljong/forms.py:307
 msgid "Please use your personal e-mail address here, which you will check personally. Important information will always be sent to your parents as well. Do not use an e-mail address owned by your parents here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:299
+#: aleksis/apps/paweljong/forms.py:317
 msgid "Your mobile number helps us to reach you in an emergency during the event, e.g. if you are alone with your group at a conference or similar. If you don't have a cell phone, you can leave the field blank."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:308
+#: aleksis/apps/paweljong/forms.py:326
 #: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:72
 msgid "Contact details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:313
+#: aleksis/apps/paweljong/forms.py:331
 msgid "School"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:314
+#: aleksis/apps/paweljong/forms.py:332
 msgid "Please enter the name of your school."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:317
+#: aleksis/apps/paweljong/forms.py:335
 msgid "School place"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:318
+#: aleksis/apps/paweljong/forms.py:336
 msgid "Enter the place (city) where your school is located."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:321 aleksis/apps/paweljong/models.py:341
+#: aleksis/apps/paweljong/forms.py:339 aleksis/apps/paweljong/models.py:343
 msgid "School class"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:322
+#: aleksis/apps/paweljong/forms.py:340
 msgid "Please enter the class you are in (e.g. 8a)."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:332 aleksis/apps/paweljong/models.py:346
+#: aleksis/apps/paweljong/forms.py:350 aleksis/apps/paweljong/models.py:350
 msgid "Medical information / intolerances"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:336
+#: aleksis/apps/paweljong/forms.py:354
 msgid "Other remarks"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:346
+#: aleksis/apps/paweljong/forms.py:364
 msgid "If there are any medically important things we need to consider, e.g. when making food or to make sure you take prescribed medication, please enter it here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:350
+#: aleksis/apps/paweljong/forms.py:368
 msgid "You can write down any remarks you want to tell us here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:375
+#: aleksis/apps/paweljong/forms.py:393
 msgid "Financial data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:382
+#: aleksis/apps/paweljong/forms.py:400
 msgid "Voucher code"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:383
+#: aleksis/apps/paweljong/forms.py:401
 msgid "If you have a voucher code, type it in here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:388
+#: aleksis/apps/paweljong/forms.py:406
 msgid "Payment method"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:390
+#: aleksis/apps/paweljong/forms.py:408
 msgid "Please choose a payment method. The actual payment will be made after the registration."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:415
+#: aleksis/apps/paweljong/forms.py:433
 msgid "Our association would like to offer all children and young people the opportunity to participate in our events. Sometimes, however, families cannot afford the full fee. We therefore have a budget from which we can promote participation after we have carefully examined the necessity and eligibility. We rely on donations for this budget. If you would like to donate a voluntary additional amount for this budget, please indicate this here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:447
+#: aleksis/apps/paweljong/forms.py:465
 msgid "I confirm that the retraction of the registration is not possible anymore after {}"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:493 aleksis/apps/paweljong/forms.py:617
+#: aleksis/apps/paweljong/forms.py:511 aleksis/apps/paweljong/forms.py:636
 msgid "Account data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:507 aleksis/apps/paweljong/forms.py:632
+#: aleksis/apps/paweljong/forms.py:525 aleksis/apps/paweljong/forms.py:651
 msgid "The username must only contain lower case letters and numbers, and must begin with a letter."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:552 aleksis/apps/paweljong/forms.py:576
-#: aleksis/apps/paweljong/models.py:309 aleksis/apps/paweljong/models.py:337
+#: aleksis/apps/paweljong/forms.py:570 aleksis/apps/paweljong/forms.py:594
+#: aleksis/apps/paweljong/models.py:311 aleksis/apps/paweljong/models.py:339
 #: aleksis/apps/paweljong/tables.py:46
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:8
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:38
@@ -399,19 +399,19 @@ msgstr ""
 msgid "Person"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:554 aleksis/apps/paweljong/forms.py:577
+#: aleksis/apps/paweljong/forms.py:572 aleksis/apps/paweljong/forms.py:595
 msgid "Please enter a username."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:570 aleksis/apps/paweljong/models.py:513
+#: aleksis/apps/paweljong/forms.py:588 aleksis/apps/paweljong/models.py:522
 msgid "Comment"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:571
+#: aleksis/apps/paweljong/forms.py:589
 msgid "Please enter a comment describing the checkpoint (e.g. Dinner)."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:583
+#: aleksis/apps/paweljong/forms.py:601
 msgid "Submit geolocation"
 msgstr ""
 
@@ -541,7 +541,7 @@ msgstr ""
 
 #: aleksis/apps/paweljong/models.py:158
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:9
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:37
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:39
 msgid "Description"
 msgstr ""
 
@@ -555,54 +555,62 @@ msgstr ""
 
 #: aleksis/apps/paweljong/models.py:164
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:12
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:40
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:42
 msgid "Date of event"
 msgstr ""
 
 #: aleksis/apps/paweljong/models.py:165
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:13
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:41
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:43
 msgid "Registration deadline"
 msgstr ""
 
 #: aleksis/apps/paweljong/models.py:166
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:14
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:42
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:44
 msgid "Retraction deadline"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:169 aleksis/apps/paweljong/models.py:372
+#: aleksis/apps/paweljong/models.py:169 aleksis/apps/paweljong/models.py:376
 msgid "Cost in €"
 msgstr ""
 
 #: aleksis/apps/paweljong/models.py:170
+msgid "Minimum cost in €"
+msgstr ""
+
+#: aleksis/apps/paweljong/models.py:172
+msgid "Maximum cost in €"
+msgstr ""
+
+#: aleksis/apps/paweljong/models.py:174
 msgid "Maximum participants"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:171
+#: aleksis/apps/paweljong/models.py:175
 msgid "Information about the event"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:182
+#: aleksis/apps/paweljong/models.py:186
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:80
 msgid "Additional fields"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:201
+#: aleksis/apps/paweljong/models.py:204
 msgid "Contact information fields to be shown."
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:286
+#: aleksis/apps/paweljong/models.py:288
 msgid "Sent to persons"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:295 aleksis/apps/paweljong/models.py:296
+#: aleksis/apps/paweljong/models.py:297 aleksis/apps/paweljong/models.py:298
 #: aleksis/apps/paweljong/templates/paweljong/voucher/list.html:6
 #: aleksis/apps/paweljong/templates/paweljong/voucher/list.html:7
 msgid "Vouchers"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:302 aleksis/apps/paweljong/models.py:335
+#: aleksis/apps/paweljong/models.py:304 aleksis/apps/paweljong/models.py:337
 #: aleksis/apps/paweljong/tables.py:12 aleksis/apps/paweljong/tables.py:43
 #: aleksis/apps/paweljong/templates/paweljong/event/full.html:4
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:8
@@ -612,109 +620,109 @@ msgstr ""
 msgid "Event"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:318
+#: aleksis/apps/paweljong/models.py:320
 msgid "Used by"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:338
+#: aleksis/apps/paweljong/models.py:340
 msgid "Registration date"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:340
+#: aleksis/apps/paweljong/models.py:342
 msgid "Name of school"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:342
+#: aleksis/apps/paweljong/models.py:345
 msgid "Place of the school"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:344
+#: aleksis/apps/paweljong/models.py:348
 msgid "Comment / remarks"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:351
+#: aleksis/apps/paweljong/models.py:355
 msgid "Voucher"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:355
+#: aleksis/apps/paweljong/models.py:359
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:31
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:80
 msgid "Donation"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:358
+#: aleksis/apps/paweljong/models.py:362
 msgid "Accepted terms"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:363
+#: aleksis/apps/paweljong/models.py:367
 msgid "States"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:366
+#: aleksis/apps/paweljong/models.py:370
 msgid "Retracted"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:367
+#: aleksis/apps/paweljong/models.py:371
 msgid "Retracted at"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:369
+#: aleksis/apps/paweljong/models.py:373
 msgid "Checked in"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:370
+#: aleksis/apps/paweljong/models.py:374
 msgid "Checked in at"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:380 aleksis/apps/paweljong/views.py:1029
+#: aleksis/apps/paweljong/models.py:384 aleksis/apps/paweljong/views.py:1038
 msgid "Person is already checked in!"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:417
+#: aleksis/apps/paweljong/models.py:426
 msgid "Participation of {} in event {}"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:446
+#: aleksis/apps/paweljong/models.py:455
 msgid "Social Sponsoring / Extra Donation"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:457
+#: aleksis/apps/paweljong/models.py:466
 msgid "Voucher / Granted discount"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:487 aleksis/apps/paweljong/views.py:427
+#: aleksis/apps/paweljong/models.py:496 aleksis/apps/paweljong/views.py:429
 msgid "Event registration"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:488
+#: aleksis/apps/paweljong/models.py:497
 msgid "Event registrations"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:498
+#: aleksis/apps/paweljong/models.py:507
 msgid "Related event"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:502
+#: aleksis/apps/paweljong/models.py:511
 msgid "Checked person"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:508
+#: aleksis/apps/paweljong/models.py:517
 msgid "Checked by person"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:515
+#: aleksis/apps/paweljong/models.py:524
 msgid "Date and time of check"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:517
+#: aleksis/apps/paweljong/models.py:526
 msgid "Latitude of check"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:520
+#: aleksis/apps/paweljong/models.py:529
 msgid "Longitude of check"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:528
+#: aleksis/apps/paweljong/models.py:536
 msgid "Can generate lists of participants of a group"
 msgstr ""
 
@@ -726,9 +734,122 @@ msgstr ""
 msgid "Mail recipient for event notifications"
 msgstr ""
 
+#: aleksis/apps/paweljong/preferences.py:32
+msgid "Name of client linked to invoices for events."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:43
+msgid "Name of invoice group used for events."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:53
+msgid "Participant help text for email step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:65
+msgid "Participant help text for account registration step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:77
+msgid "Participant help text for contact details step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:88
+msgid "Participant help text for guardians step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:100
+msgid "Participant help text for additional information step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:112
+msgid "Participant help text for financial step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:123
+msgid "Participant help text for consent step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:134
+msgid "Participant help text for confirmation step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:145
+msgid "Guardian help text for email step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:157
+msgid "Guardian help text for account registration step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:169
+msgid "Guardian help text for contact details step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:180
+msgid "Guardian help text for guardians step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:192
+msgid "Guardian help text for additional information step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:204
+msgid "Guardian help text for financial step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:215
+msgid "Guardian help text for consent step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:226
+msgid "Guardian help text for confirmation step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:61
+msgid "Retraction consent is required"
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:71
+msgid "Mail domain does not exist."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:78
+msgid "Mail address already in use."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:92
+msgid "A user with this username or e-mail already exists."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:109
+#: aleksis/apps/paweljong/schema/event_registration.py:149
+#, python-format
+msgid "A person using the e-mail address %s already exists."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:191
+msgid "The field 'Amount paid by you' is required."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:214
+msgid "The field 'Payment method' is required."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:239
+#: aleksis/apps/paweljong/views.py:718
+msgid "You registered for an event"
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:240
+#: aleksis/apps/paweljong/views.py:719
+#, python-format
+msgid "You registered for the event %s"
+msgstr ""
+
 #: aleksis/apps/paweljong/tables.py:14
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:16
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:44
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:18
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:48
 msgid "Max. participants"
 msgstr ""
 
@@ -843,8 +964,8 @@ msgid "of"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:62
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:17
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:45
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:19
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:49
 msgid "Owners"
 msgstr ""
 
@@ -873,8 +994,11 @@ msgstr ""
 msgid "Edit event"
 msgstr ""
 
+#: aleksis/apps/paweljong/templates/paweljong/event/full.html:37
+msgid "Self-determined"
+msgstr ""
+
 #: aleksis/apps/paweljong/templates/paweljong/event/full.html:58
-#: aleksis/apps/paweljong/templates/paweljong/event/full.html:60
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:109
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:119
 #: aleksis/apps/paweljong/templates/paweljong/register_start.html:57
@@ -882,7 +1006,7 @@ msgstr ""
 msgid "Register now"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event/full.html:62
+#: aleksis/apps/paweljong/templates/paweljong/event/full.html:60
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:85
 msgid "Not available"
 msgstr ""
@@ -893,7 +1017,7 @@ msgid "Events"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/list.html:10
-#: aleksis/apps/paweljong/views.py:789
+#: aleksis/apps/paweljong/views.py:798
 msgid "Upcoming events"
 msgstr ""
 
@@ -1087,24 +1211,24 @@ msgstr ""
 msgid "No checked in yet."
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:241
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:242
 msgid "Invoice details"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:247
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:248
 msgid "Billing information"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:279
-#: aleksis/apps/paweljong/views.py:456
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:280
+#: aleksis/apps/paweljong/views.py:458
 msgid "Payment"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:310
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:311
 msgid "Mark payed"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:323
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:325
 msgid "Guardians / Parents "
 msgstr ""
 
@@ -1307,8 +1431,8 @@ msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:30
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:61
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:26
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:61
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:28
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:65
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:49
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:103
 msgid "Your AlekSIS team"
@@ -1319,23 +1443,33 @@ msgid "New event"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:6
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:31
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:33
 #, python-format
 msgid " An event was created: %(new_event)s"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:10
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:38
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:40
 msgid "Published"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:15
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:43
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:45
 msgid "Cost"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:22
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:55
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:16
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:46
+msgid "Minimum cost"
+msgstr ""
+
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:17
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:47
+msgid "Maximum cost"
+msgstr ""
+
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:24
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:59
 #, python-format
 msgid ""
 "\n"
@@ -1383,123 +1517,114 @@ msgstr ""
 msgid "The registration has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:235
+#: aleksis/apps/paweljong/views.py:236
 msgid "The registration has been deleted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:247
+#: aleksis/apps/paweljong/views.py:248
 msgid "The voucher has been created."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:259
+#: aleksis/apps/paweljong/views.py:260
 msgid "The voucher has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:269
+#: aleksis/apps/paweljong/views.py:270
 msgid "The voucher has been deleted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:418
+#: aleksis/apps/paweljong/views.py:420
 msgid "Create e-mail address"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:420
+#: aleksis/apps/paweljong/views.py:422
 msgid "All participants need a personal e-mail address, which they check and read temselves. We offer the possibility to register an e-mail address on our secure servers, made for young users. For information about receiving mails, see: <a href='https://wiki.teckids.org/de/Dienste/E-Mail'>https://wiki.teckids.org/de/Dienste/E-Mail</a>."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:429
+#: aleksis/apps/paweljong/views.py:431
 msgid "First, please enter some basic information about yourself, and check whether all information is correct."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:433
+#: aleksis/apps/paweljong/views.py:435
 msgid "Contact information"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:435
+#: aleksis/apps/paweljong/views.py:437
 msgid "Tell us how we can contact you. You will receive information about the event by e-mail. Please use your personal e-mail address where you will read mails yourself, not an address of your parents. We will always send all important information to your parents as well, and you will enter their e-mail address on the next page."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:442
+#: aleksis/apps/paweljong/views.py:444
 msgid "Legal guardians / parents"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:444
+#: aleksis/apps/paweljong/views.py:446
 msgid "Tell us how we can reach your parents or other legal guardians. This should be the person who was present when you registered for the event (which is now). If you want to add another parent, please tell us later as a comment."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:450
+#: aleksis/apps/paweljong/views.py:452
 msgid "Additional registration information"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:452
+#: aleksis/apps/paweljong/views.py:454
 msgid "Please answer the following questions as precisely as you can, so we can make sure your event attendance will be organised as wel las possible."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:458
+#: aleksis/apps/paweljong/views.py:460
 msgid "Please decide with your parents how you want to pay. In this step, you only select a payment method. The real payment will be done in a separate step, after the registration is complete."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:463
+#: aleksis/apps/paweljong/views.py:465
 msgid "Consent"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:465
+#: aleksis/apps/paweljong/views.py:467
 msgid "Lastly, please read the terms and conditions carefully, together with your parents. After that, you will need to confirm that you agree with everything yourself, and that your parents also agree."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:676
+#: aleksis/apps/paweljong/views.py:685
 msgid "You entered an invalid voucher code!"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:702
+#: aleksis/apps/paweljong/views.py:711
 msgid "You have successfully registered for the event. Please give us up to two days to process your registration. You will then receive an email from us."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:709
-msgid "You registered for an event"
-msgstr ""
-
-#: aleksis/apps/paweljong/views.py:710
-#, python-format
-msgid "You registered for the event %s"
-msgstr ""
-
-#: aleksis/apps/paweljong/views.py:770 aleksis/apps/paweljong/views.py:918
+#: aleksis/apps/paweljong/views.py:779 aleksis/apps/paweljong/views.py:927
 msgid "The term has been created."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:782 aleksis/apps/paweljong/views.py:930
+#: aleksis/apps/paweljong/views.py:791 aleksis/apps/paweljong/views.py:939
 msgid "The term has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:798
+#: aleksis/apps/paweljong/views.py:807
 msgid "Announcement feed of all upcoming events"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:838
+#: aleksis/apps/paweljong/views.py:847
 msgid "The info mailing has been created."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:850
+#: aleksis/apps/paweljong/views.py:859
 msgid "The info mailing has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:860
+#: aleksis/apps/paweljong/views.py:869
 msgid "The info mailing has been deleted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:943
+#: aleksis/apps/paweljong/views.py:952
 msgid "Registration successfully retracted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:1000
+#: aleksis/apps/paweljong/views.py:1009
 msgid "Person does not exist!"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:1027
+#: aleksis/apps/paweljong/views.py:1036
 msgid "Successfully checked in."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:1047
+#: aleksis/apps/paweljong/views.py:1056
 msgid "Successfully marked as payed!"
 msgstr ""
diff --git a/aleksis/apps/paweljong/locale/nb_NO/LC_MESSAGES/django.po b/aleksis/apps/paweljong/locale/nb_NO/LC_MESSAGES/django.po
index b7b042263f01f96f17da23327193588bead1f424..ca5389f29c65df937c27a4a7e6f6af928e727bfb 100644
--- a/aleksis/apps/paweljong/locale/nb_NO/LC_MESSAGES/django.po
+++ b/aleksis/apps/paweljong/locale/nb_NO/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-02-15 18:11+0000\n"
+"POT-Creation-Date: 2025-02-15 18:23+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -69,8 +69,8 @@ msgstr ""
 msgid "Creative Commons with attribution and distribution only under the same conditions, 4.0 or later"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:60 aleksis/apps/paweljong/forms.py:489
-#: aleksis/apps/paweljong/forms.py:613
+#: aleksis/apps/paweljong/forms.py:60 aleksis/apps/paweljong/forms.py:507
+#: aleksis/apps/paweljong/forms.py:632
 msgid "Base data"
 msgstr ""
 
@@ -78,11 +78,11 @@ msgstr ""
 msgid "Date data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:65
+#: aleksis/apps/paweljong/forms.py:66
 msgid "Event details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:66 aleksis/apps/paweljong/models.py:172
+#: aleksis/apps/paweljong/forms.py:72 aleksis/apps/paweljong/models.py:176
 #: aleksis/apps/paweljong/templates/paweljong/event/terms.html:4
 #: aleksis/apps/paweljong/templates/paweljong/event/terms.html:5
 #: aleksis/apps/paweljong/templates/paweljong/term/list.html:6
@@ -90,14 +90,14 @@ msgstr ""
 msgid "Terms"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:67 aleksis/apps/paweljong/models.py:175
+#: aleksis/apps/paweljong/forms.py:73 aleksis/apps/paweljong/models.py:179
 #: aleksis/apps/paweljong/templates/paweljong/info_mailing/list.html:6
 #: aleksis/apps/paweljong/templates/paweljong/info_mailing/list.html:7
 msgid "Info mailings"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:110 aleksis/apps/paweljong/forms.py:245
-#: aleksis/apps/paweljong/forms.py:626 aleksis/apps/paweljong/models.py:190
+#: aleksis/apps/paweljong/forms.py:118 aleksis/apps/paweljong/forms.py:259
+#: aleksis/apps/paweljong/forms.py:645 aleksis/apps/paweljong/models.py:194
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:22
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:12
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:42
@@ -106,13 +106,13 @@ msgstr ""
 msgid "Date of birth"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:111 aleksis/apps/paweljong/forms.py:250
-#: aleksis/apps/paweljong/models.py:191
+#: aleksis/apps/paweljong/forms.py:119 aleksis/apps/paweljong/forms.py:264
+#: aleksis/apps/paweljong/models.py:195
 msgid "Sex"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:112 aleksis/apps/paweljong/forms.py:266
-#: aleksis/apps/paweljong/models.py:192
+#: aleksis/apps/paweljong/forms.py:120 aleksis/apps/paweljong/forms.py:285
+#: aleksis/apps/paweljong/models.py:196
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:15
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:45
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:18
@@ -120,12 +120,12 @@ msgstr ""
 msgid "Street"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:113 aleksis/apps/paweljong/models.py:193
+#: aleksis/apps/paweljong/forms.py:121 aleksis/apps/paweljong/models.py:197
 msgid "House number"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:114 aleksis/apps/paweljong/forms.py:276
-#: aleksis/apps/paweljong/models.py:194
+#: aleksis/apps/paweljong/forms.py:122 aleksis/apps/paweljong/forms.py:295
+#: aleksis/apps/paweljong/models.py:198
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:17
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:47
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:20
@@ -133,19 +133,19 @@ msgstr ""
 msgid "Postal code"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:115 aleksis/apps/paweljong/forms.py:281
-#: aleksis/apps/paweljong/models.py:195
+#: aleksis/apps/paweljong/forms.py:123 aleksis/apps/paweljong/forms.py:300
+#: aleksis/apps/paweljong/models.py:199
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:18
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:48
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:11
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:39
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:41
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:21
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:70
 msgid "Place"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:116 aleksis/apps/paweljong/forms.py:296
-#: aleksis/apps/paweljong/models.py:196
+#: aleksis/apps/paweljong/forms.py:124 aleksis/apps/paweljong/forms.py:314
+#: aleksis/apps/paweljong/models.py:200
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:22
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:23
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:14
@@ -159,86 +159,86 @@ msgstr ""
 msgid "Mobile number"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:117 aleksis/apps/paweljong/forms.py:325
-#: aleksis/apps/paweljong/models.py:197
+#: aleksis/apps/paweljong/forms.py:125 aleksis/apps/paweljong/forms.py:343
+#: aleksis/apps/paweljong/models.py:201
 msgid "School details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:139
+#: aleksis/apps/paweljong/forms.py:148
 msgid "Event the voucher is valid for"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:140
+#: aleksis/apps/paweljong/forms.py:149
 msgid "Person the voucher is valid for"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:141
+#: aleksis/apps/paweljong/forms.py:150
 msgid "Voucher discount"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:149 aleksis/apps/paweljong/models.py:156
+#: aleksis/apps/paweljong/forms.py:158 aleksis/apps/paweljong/models.py:156
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:8
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:36
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:38
 msgid "Group"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:151
+#: aleksis/apps/paweljong/forms.py:160
 msgid "Select group to generate list"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:155
+#: aleksis/apps/paweljong/forms.py:164
 msgid "Template"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:157
+#: aleksis/apps/paweljong/forms.py:166
 msgid "Select template to generate list"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:161
+#: aleksis/apps/paweljong/forms.py:170
 msgid "Landscape"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:162
+#: aleksis/apps/paweljong/forms.py:171
 msgid "Select if output should be in landscape"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:174
+#: aleksis/apps/paweljong/forms.py:183
 msgid "Guardians personal data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:178
+#: aleksis/apps/paweljong/forms.py:187
 msgid "Guardians contact details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:184
+#: aleksis/apps/paweljong/forms.py:193
 msgid "Guardian's first name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:186
+#: aleksis/apps/paweljong/forms.py:195
 msgid "Please enter the first name of the legal guardian who will fill in the registration with you and who can be reached during the event in an emergency."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:192
+#: aleksis/apps/paweljong/forms.py:201
 msgid "Guardian's last name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:194
+#: aleksis/apps/paweljong/forms.py:203
 msgid "Please enter the last name of the legal guardian who will fill in the registration with you and who can be reached during the event in an emergency."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:200
+#: aleksis/apps/paweljong/forms.py:209
 msgid "Guardian's mobile number"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:202
+#: aleksis/apps/paweljong/forms.py:211
 msgid "We need the mobile phone number for emergencies if we urgently need to reach your parents during the event."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:208
+#: aleksis/apps/paweljong/forms.py:217
 msgid "Guardian's email address"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:220 aleksis/apps/paweljong/models.py:42
+#: aleksis/apps/paweljong/forms.py:230 aleksis/apps/paweljong/models.py:42
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:10
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:24
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:40
@@ -250,8 +250,8 @@ msgstr ""
 msgid "Name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:231 aleksis/apps/paweljong/forms.py:500
-#: aleksis/apps/paweljong/forms.py:624
+#: aleksis/apps/paweljong/forms.py:242 aleksis/apps/paweljong/forms.py:518
+#: aleksis/apps/paweljong/forms.py:643
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:20
 #: aleksis/apps/paweljong/templates/paweljong/print/list_attendance.html:20
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:21
@@ -259,8 +259,8 @@ msgstr ""
 msgid "First name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:236 aleksis/apps/paweljong/forms.py:501
-#: aleksis/apps/paweljong/forms.py:625
+#: aleksis/apps/paweljong/forms.py:247 aleksis/apps/paweljong/forms.py:519
+#: aleksis/apps/paweljong/forms.py:644
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:19
 #: aleksis/apps/paweljong/templates/paweljong/print/list_attendance.html:19
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:20
@@ -268,15 +268,15 @@ msgstr ""
 msgid "Last name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:252
+#: aleksis/apps/paweljong/forms.py:266
 msgid "For various reasons, e.g. because we have to keep gender segregation during the night for legal reasons, we need to know if you are a boy or a girl."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:258
+#: aleksis/apps/paweljong/forms.py:272
 msgid "Personal information"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:271
+#: aleksis/apps/paweljong/forms.py:290
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:16
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:46
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:19
@@ -284,11 +284,11 @@ msgstr ""
 msgid "Housenumber"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:283
+#: aleksis/apps/paweljong/forms.py:302
 msgid "Address data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:287
+#: aleksis/apps/paweljong/forms.py:305
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:13
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:25
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:43
@@ -300,97 +300,97 @@ msgstr ""
 msgid "Email address"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:289
+#: aleksis/apps/paweljong/forms.py:307
 msgid "Please use your personal e-mail address here, which you will check personally. Important information will always be sent to your parents as well. Do not use an e-mail address owned by your parents here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:299
+#: aleksis/apps/paweljong/forms.py:317
 msgid "Your mobile number helps us to reach you in an emergency during the event, e.g. if you are alone with your group at a conference or similar. If you don't have a cell phone, you can leave the field blank."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:308
+#: aleksis/apps/paweljong/forms.py:326
 #: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:72
 msgid "Contact details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:313
+#: aleksis/apps/paweljong/forms.py:331
 msgid "School"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:314
+#: aleksis/apps/paweljong/forms.py:332
 msgid "Please enter the name of your school."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:317
+#: aleksis/apps/paweljong/forms.py:335
 msgid "School place"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:318
+#: aleksis/apps/paweljong/forms.py:336
 msgid "Enter the place (city) where your school is located."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:321 aleksis/apps/paweljong/models.py:341
+#: aleksis/apps/paweljong/forms.py:339 aleksis/apps/paweljong/models.py:343
 msgid "School class"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:322
+#: aleksis/apps/paweljong/forms.py:340
 msgid "Please enter the class you are in (e.g. 8a)."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:332 aleksis/apps/paweljong/models.py:346
+#: aleksis/apps/paweljong/forms.py:350 aleksis/apps/paweljong/models.py:350
 msgid "Medical information / intolerances"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:336
+#: aleksis/apps/paweljong/forms.py:354
 msgid "Other remarks"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:346
+#: aleksis/apps/paweljong/forms.py:364
 msgid "If there are any medically important things we need to consider, e.g. when making food or to make sure you take prescribed medication, please enter it here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:350
+#: aleksis/apps/paweljong/forms.py:368
 msgid "You can write down any remarks you want to tell us here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:375
+#: aleksis/apps/paweljong/forms.py:393
 msgid "Financial data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:382
+#: aleksis/apps/paweljong/forms.py:400
 msgid "Voucher code"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:383
+#: aleksis/apps/paweljong/forms.py:401
 msgid "If you have a voucher code, type it in here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:388
+#: aleksis/apps/paweljong/forms.py:406
 msgid "Payment method"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:390
+#: aleksis/apps/paweljong/forms.py:408
 msgid "Please choose a payment method. The actual payment will be made after the registration."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:415
+#: aleksis/apps/paweljong/forms.py:433
 msgid "Our association would like to offer all children and young people the opportunity to participate in our events. Sometimes, however, families cannot afford the full fee. We therefore have a budget from which we can promote participation after we have carefully examined the necessity and eligibility. We rely on donations for this budget. If you would like to donate a voluntary additional amount for this budget, please indicate this here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:447
+#: aleksis/apps/paweljong/forms.py:465
 msgid "I confirm that the retraction of the registration is not possible anymore after {}"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:493 aleksis/apps/paweljong/forms.py:617
+#: aleksis/apps/paweljong/forms.py:511 aleksis/apps/paweljong/forms.py:636
 msgid "Account data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:507 aleksis/apps/paweljong/forms.py:632
+#: aleksis/apps/paweljong/forms.py:525 aleksis/apps/paweljong/forms.py:651
 msgid "The username must only contain lower case letters and numbers, and must begin with a letter."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:552 aleksis/apps/paweljong/forms.py:576
-#: aleksis/apps/paweljong/models.py:309 aleksis/apps/paweljong/models.py:337
+#: aleksis/apps/paweljong/forms.py:570 aleksis/apps/paweljong/forms.py:594
+#: aleksis/apps/paweljong/models.py:311 aleksis/apps/paweljong/models.py:339
 #: aleksis/apps/paweljong/tables.py:46
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:8
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:38
@@ -399,19 +399,19 @@ msgstr ""
 msgid "Person"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:554 aleksis/apps/paweljong/forms.py:577
+#: aleksis/apps/paweljong/forms.py:572 aleksis/apps/paweljong/forms.py:595
 msgid "Please enter a username."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:570 aleksis/apps/paweljong/models.py:513
+#: aleksis/apps/paweljong/forms.py:588 aleksis/apps/paweljong/models.py:522
 msgid "Comment"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:571
+#: aleksis/apps/paweljong/forms.py:589
 msgid "Please enter a comment describing the checkpoint (e.g. Dinner)."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:583
+#: aleksis/apps/paweljong/forms.py:601
 msgid "Submit geolocation"
 msgstr ""
 
@@ -541,7 +541,7 @@ msgstr ""
 
 #: aleksis/apps/paweljong/models.py:158
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:9
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:37
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:39
 msgid "Description"
 msgstr ""
 
@@ -555,54 +555,62 @@ msgstr ""
 
 #: aleksis/apps/paweljong/models.py:164
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:12
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:40
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:42
 msgid "Date of event"
 msgstr ""
 
 #: aleksis/apps/paweljong/models.py:165
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:13
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:41
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:43
 msgid "Registration deadline"
 msgstr ""
 
 #: aleksis/apps/paweljong/models.py:166
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:14
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:42
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:44
 msgid "Retraction deadline"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:169 aleksis/apps/paweljong/models.py:372
+#: aleksis/apps/paweljong/models.py:169 aleksis/apps/paweljong/models.py:376
 msgid "Cost in €"
 msgstr ""
 
 #: aleksis/apps/paweljong/models.py:170
+msgid "Minimum cost in €"
+msgstr ""
+
+#: aleksis/apps/paweljong/models.py:172
+msgid "Maximum cost in €"
+msgstr ""
+
+#: aleksis/apps/paweljong/models.py:174
 msgid "Maximum participants"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:171
+#: aleksis/apps/paweljong/models.py:175
 msgid "Information about the event"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:182
+#: aleksis/apps/paweljong/models.py:186
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:80
 msgid "Additional fields"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:201
+#: aleksis/apps/paweljong/models.py:204
 msgid "Contact information fields to be shown."
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:286
+#: aleksis/apps/paweljong/models.py:288
 msgid "Sent to persons"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:295 aleksis/apps/paweljong/models.py:296
+#: aleksis/apps/paweljong/models.py:297 aleksis/apps/paweljong/models.py:298
 #: aleksis/apps/paweljong/templates/paweljong/voucher/list.html:6
 #: aleksis/apps/paweljong/templates/paweljong/voucher/list.html:7
 msgid "Vouchers"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:302 aleksis/apps/paweljong/models.py:335
+#: aleksis/apps/paweljong/models.py:304 aleksis/apps/paweljong/models.py:337
 #: aleksis/apps/paweljong/tables.py:12 aleksis/apps/paweljong/tables.py:43
 #: aleksis/apps/paweljong/templates/paweljong/event/full.html:4
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:8
@@ -612,109 +620,109 @@ msgstr ""
 msgid "Event"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:318
+#: aleksis/apps/paweljong/models.py:320
 msgid "Used by"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:338
+#: aleksis/apps/paweljong/models.py:340
 msgid "Registration date"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:340
+#: aleksis/apps/paweljong/models.py:342
 msgid "Name of school"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:342
+#: aleksis/apps/paweljong/models.py:345
 msgid "Place of the school"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:344
+#: aleksis/apps/paweljong/models.py:348
 msgid "Comment / remarks"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:351
+#: aleksis/apps/paweljong/models.py:355
 msgid "Voucher"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:355
+#: aleksis/apps/paweljong/models.py:359
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:31
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:80
 msgid "Donation"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:358
+#: aleksis/apps/paweljong/models.py:362
 msgid "Accepted terms"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:363
+#: aleksis/apps/paweljong/models.py:367
 msgid "States"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:366
+#: aleksis/apps/paweljong/models.py:370
 msgid "Retracted"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:367
+#: aleksis/apps/paweljong/models.py:371
 msgid "Retracted at"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:369
+#: aleksis/apps/paweljong/models.py:373
 msgid "Checked in"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:370
+#: aleksis/apps/paweljong/models.py:374
 msgid "Checked in at"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:380 aleksis/apps/paweljong/views.py:1029
+#: aleksis/apps/paweljong/models.py:384 aleksis/apps/paweljong/views.py:1038
 msgid "Person is already checked in!"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:417
+#: aleksis/apps/paweljong/models.py:426
 msgid "Participation of {} in event {}"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:446
+#: aleksis/apps/paweljong/models.py:455
 msgid "Social Sponsoring / Extra Donation"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:457
+#: aleksis/apps/paweljong/models.py:466
 msgid "Voucher / Granted discount"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:487 aleksis/apps/paweljong/views.py:427
+#: aleksis/apps/paweljong/models.py:496 aleksis/apps/paweljong/views.py:429
 msgid "Event registration"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:488
+#: aleksis/apps/paweljong/models.py:497
 msgid "Event registrations"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:498
+#: aleksis/apps/paweljong/models.py:507
 msgid "Related event"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:502
+#: aleksis/apps/paweljong/models.py:511
 msgid "Checked person"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:508
+#: aleksis/apps/paweljong/models.py:517
 msgid "Checked by person"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:515
+#: aleksis/apps/paweljong/models.py:524
 msgid "Date and time of check"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:517
+#: aleksis/apps/paweljong/models.py:526
 msgid "Latitude of check"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:520
+#: aleksis/apps/paweljong/models.py:529
 msgid "Longitude of check"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:528
+#: aleksis/apps/paweljong/models.py:536
 msgid "Can generate lists of participants of a group"
 msgstr ""
 
@@ -726,9 +734,122 @@ msgstr ""
 msgid "Mail recipient for event notifications"
 msgstr ""
 
+#: aleksis/apps/paweljong/preferences.py:32
+msgid "Name of client linked to invoices for events."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:43
+msgid "Name of invoice group used for events."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:53
+msgid "Participant help text for email step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:65
+msgid "Participant help text for account registration step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:77
+msgid "Participant help text for contact details step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:88
+msgid "Participant help text for guardians step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:100
+msgid "Participant help text for additional information step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:112
+msgid "Participant help text for financial step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:123
+msgid "Participant help text for consent step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:134
+msgid "Participant help text for confirmation step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:145
+msgid "Guardian help text for email step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:157
+msgid "Guardian help text for account registration step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:169
+msgid "Guardian help text for contact details step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:180
+msgid "Guardian help text for guardians step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:192
+msgid "Guardian help text for additional information step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:204
+msgid "Guardian help text for financial step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:215
+msgid "Guardian help text for consent step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:226
+msgid "Guardian help text for confirmation step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:61
+msgid "Retraction consent is required"
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:71
+msgid "Mail domain does not exist."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:78
+msgid "Mail address already in use."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:92
+msgid "A user with this username or e-mail already exists."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:109
+#: aleksis/apps/paweljong/schema/event_registration.py:149
+#, python-format
+msgid "A person using the e-mail address %s already exists."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:191
+msgid "The field 'Amount paid by you' is required."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:214
+msgid "The field 'Payment method' is required."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:239
+#: aleksis/apps/paweljong/views.py:718
+msgid "You registered for an event"
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:240
+#: aleksis/apps/paweljong/views.py:719
+#, python-format
+msgid "You registered for the event %s"
+msgstr ""
+
 #: aleksis/apps/paweljong/tables.py:14
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:16
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:44
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:18
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:48
 msgid "Max. participants"
 msgstr ""
 
@@ -843,8 +964,8 @@ msgid "of"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:62
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:17
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:45
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:19
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:49
 msgid "Owners"
 msgstr ""
 
@@ -873,8 +994,11 @@ msgstr ""
 msgid "Edit event"
 msgstr ""
 
+#: aleksis/apps/paweljong/templates/paweljong/event/full.html:37
+msgid "Self-determined"
+msgstr ""
+
 #: aleksis/apps/paweljong/templates/paweljong/event/full.html:58
-#: aleksis/apps/paweljong/templates/paweljong/event/full.html:60
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:109
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:119
 #: aleksis/apps/paweljong/templates/paweljong/register_start.html:57
@@ -882,7 +1006,7 @@ msgstr ""
 msgid "Register now"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event/full.html:62
+#: aleksis/apps/paweljong/templates/paweljong/event/full.html:60
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:85
 msgid "Not available"
 msgstr ""
@@ -893,7 +1017,7 @@ msgid "Events"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/list.html:10
-#: aleksis/apps/paweljong/views.py:789
+#: aleksis/apps/paweljong/views.py:798
 msgid "Upcoming events"
 msgstr ""
 
@@ -1087,24 +1211,24 @@ msgstr ""
 msgid "No checked in yet."
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:241
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:242
 msgid "Invoice details"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:247
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:248
 msgid "Billing information"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:279
-#: aleksis/apps/paweljong/views.py:456
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:280
+#: aleksis/apps/paweljong/views.py:458
 msgid "Payment"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:310
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:311
 msgid "Mark payed"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:323
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:325
 msgid "Guardians / Parents "
 msgstr ""
 
@@ -1307,8 +1431,8 @@ msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:30
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:61
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:26
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:61
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:28
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:65
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:49
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:103
 msgid "Your AlekSIS team"
@@ -1319,23 +1443,33 @@ msgid "New event"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:6
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:31
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:33
 #, python-format
 msgid " An event was created: %(new_event)s"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:10
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:38
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:40
 msgid "Published"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:15
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:43
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:45
 msgid "Cost"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:22
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:55
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:16
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:46
+msgid "Minimum cost"
+msgstr ""
+
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:17
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:47
+msgid "Maximum cost"
+msgstr ""
+
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:24
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:59
 #, python-format
 msgid ""
 "\n"
@@ -1383,123 +1517,114 @@ msgstr ""
 msgid "The registration has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:235
+#: aleksis/apps/paweljong/views.py:236
 msgid "The registration has been deleted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:247
+#: aleksis/apps/paweljong/views.py:248
 msgid "The voucher has been created."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:259
+#: aleksis/apps/paweljong/views.py:260
 msgid "The voucher has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:269
+#: aleksis/apps/paweljong/views.py:270
 msgid "The voucher has been deleted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:418
+#: aleksis/apps/paweljong/views.py:420
 msgid "Create e-mail address"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:420
+#: aleksis/apps/paweljong/views.py:422
 msgid "All participants need a personal e-mail address, which they check and read temselves. We offer the possibility to register an e-mail address on our secure servers, made for young users. For information about receiving mails, see: <a href='https://wiki.teckids.org/de/Dienste/E-Mail'>https://wiki.teckids.org/de/Dienste/E-Mail</a>."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:429
+#: aleksis/apps/paweljong/views.py:431
 msgid "First, please enter some basic information about yourself, and check whether all information is correct."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:433
+#: aleksis/apps/paweljong/views.py:435
 msgid "Contact information"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:435
+#: aleksis/apps/paweljong/views.py:437
 msgid "Tell us how we can contact you. You will receive information about the event by e-mail. Please use your personal e-mail address where you will read mails yourself, not an address of your parents. We will always send all important information to your parents as well, and you will enter their e-mail address on the next page."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:442
+#: aleksis/apps/paweljong/views.py:444
 msgid "Legal guardians / parents"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:444
+#: aleksis/apps/paweljong/views.py:446
 msgid "Tell us how we can reach your parents or other legal guardians. This should be the person who was present when you registered for the event (which is now). If you want to add another parent, please tell us later as a comment."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:450
+#: aleksis/apps/paweljong/views.py:452
 msgid "Additional registration information"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:452
+#: aleksis/apps/paweljong/views.py:454
 msgid "Please answer the following questions as precisely as you can, so we can make sure your event attendance will be organised as wel las possible."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:458
+#: aleksis/apps/paweljong/views.py:460
 msgid "Please decide with your parents how you want to pay. In this step, you only select a payment method. The real payment will be done in a separate step, after the registration is complete."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:463
+#: aleksis/apps/paweljong/views.py:465
 msgid "Consent"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:465
+#: aleksis/apps/paweljong/views.py:467
 msgid "Lastly, please read the terms and conditions carefully, together with your parents. After that, you will need to confirm that you agree with everything yourself, and that your parents also agree."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:676
+#: aleksis/apps/paweljong/views.py:685
 msgid "You entered an invalid voucher code!"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:702
+#: aleksis/apps/paweljong/views.py:711
 msgid "You have successfully registered for the event. Please give us up to two days to process your registration. You will then receive an email from us."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:709
-msgid "You registered for an event"
-msgstr ""
-
-#: aleksis/apps/paweljong/views.py:710
-#, python-format
-msgid "You registered for the event %s"
-msgstr ""
-
-#: aleksis/apps/paweljong/views.py:770 aleksis/apps/paweljong/views.py:918
+#: aleksis/apps/paweljong/views.py:779 aleksis/apps/paweljong/views.py:927
 msgid "The term has been created."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:782 aleksis/apps/paweljong/views.py:930
+#: aleksis/apps/paweljong/views.py:791 aleksis/apps/paweljong/views.py:939
 msgid "The term has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:798
+#: aleksis/apps/paweljong/views.py:807
 msgid "Announcement feed of all upcoming events"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:838
+#: aleksis/apps/paweljong/views.py:847
 msgid "The info mailing has been created."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:850
+#: aleksis/apps/paweljong/views.py:859
 msgid "The info mailing has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:860
+#: aleksis/apps/paweljong/views.py:869
 msgid "The info mailing has been deleted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:943
+#: aleksis/apps/paweljong/views.py:952
 msgid "Registration successfully retracted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:1000
+#: aleksis/apps/paweljong/views.py:1009
 msgid "Person does not exist!"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:1027
+#: aleksis/apps/paweljong/views.py:1036
 msgid "Successfully checked in."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:1047
+#: aleksis/apps/paweljong/views.py:1056
 msgid "Successfully marked as payed!"
 msgstr ""
diff --git a/aleksis/apps/paweljong/locale/ru/LC_MESSAGES/django.po b/aleksis/apps/paweljong/locale/ru/LC_MESSAGES/django.po
index b0cce7ca619eb2449a499cc99023efeda2fcb01c..dc197a65bc4166d9a8b1bab50f087e38076fd2fd 100644
--- a/aleksis/apps/paweljong/locale/ru/LC_MESSAGES/django.po
+++ b/aleksis/apps/paweljong/locale/ru/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-02-15 18:11+0000\n"
+"POT-Creation-Date: 2025-02-15 18:23+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,9 +16,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
-"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
-"(n%100>=11 && n%100<=14)? 2 : 3);\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
+
 #: aleksis/apps/paweljong/data_checks.py:8
 msgid "Sync members"
 msgstr ""
@@ -71,8 +70,8 @@ msgstr ""
 msgid "Creative Commons with attribution and distribution only under the same conditions, 4.0 or later"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:60 aleksis/apps/paweljong/forms.py:489
-#: aleksis/apps/paweljong/forms.py:613
+#: aleksis/apps/paweljong/forms.py:60 aleksis/apps/paweljong/forms.py:507
+#: aleksis/apps/paweljong/forms.py:632
 msgid "Base data"
 msgstr ""
 
@@ -80,11 +79,11 @@ msgstr ""
 msgid "Date data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:65
+#: aleksis/apps/paweljong/forms.py:66
 msgid "Event details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:66 aleksis/apps/paweljong/models.py:172
+#: aleksis/apps/paweljong/forms.py:72 aleksis/apps/paweljong/models.py:176
 #: aleksis/apps/paweljong/templates/paweljong/event/terms.html:4
 #: aleksis/apps/paweljong/templates/paweljong/event/terms.html:5
 #: aleksis/apps/paweljong/templates/paweljong/term/list.html:6
@@ -92,14 +91,14 @@ msgstr ""
 msgid "Terms"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:67 aleksis/apps/paweljong/models.py:175
+#: aleksis/apps/paweljong/forms.py:73 aleksis/apps/paweljong/models.py:179
 #: aleksis/apps/paweljong/templates/paweljong/info_mailing/list.html:6
 #: aleksis/apps/paweljong/templates/paweljong/info_mailing/list.html:7
 msgid "Info mailings"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:110 aleksis/apps/paweljong/forms.py:245
-#: aleksis/apps/paweljong/forms.py:626 aleksis/apps/paweljong/models.py:190
+#: aleksis/apps/paweljong/forms.py:118 aleksis/apps/paweljong/forms.py:259
+#: aleksis/apps/paweljong/forms.py:645 aleksis/apps/paweljong/models.py:194
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:22
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:12
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:42
@@ -108,13 +107,13 @@ msgstr ""
 msgid "Date of birth"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:111 aleksis/apps/paweljong/forms.py:250
-#: aleksis/apps/paweljong/models.py:191
+#: aleksis/apps/paweljong/forms.py:119 aleksis/apps/paweljong/forms.py:264
+#: aleksis/apps/paweljong/models.py:195
 msgid "Sex"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:112 aleksis/apps/paweljong/forms.py:266
-#: aleksis/apps/paweljong/models.py:192
+#: aleksis/apps/paweljong/forms.py:120 aleksis/apps/paweljong/forms.py:285
+#: aleksis/apps/paweljong/models.py:196
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:15
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:45
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:18
@@ -122,12 +121,12 @@ msgstr ""
 msgid "Street"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:113 aleksis/apps/paweljong/models.py:193
+#: aleksis/apps/paweljong/forms.py:121 aleksis/apps/paweljong/models.py:197
 msgid "House number"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:114 aleksis/apps/paweljong/forms.py:276
-#: aleksis/apps/paweljong/models.py:194
+#: aleksis/apps/paweljong/forms.py:122 aleksis/apps/paweljong/forms.py:295
+#: aleksis/apps/paweljong/models.py:198
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:17
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:47
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:20
@@ -135,19 +134,19 @@ msgstr ""
 msgid "Postal code"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:115 aleksis/apps/paweljong/forms.py:281
-#: aleksis/apps/paweljong/models.py:195
+#: aleksis/apps/paweljong/forms.py:123 aleksis/apps/paweljong/forms.py:300
+#: aleksis/apps/paweljong/models.py:199
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:18
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:48
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:11
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:39
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:41
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:21
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:70
 msgid "Place"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:116 aleksis/apps/paweljong/forms.py:296
-#: aleksis/apps/paweljong/models.py:196
+#: aleksis/apps/paweljong/forms.py:124 aleksis/apps/paweljong/forms.py:314
+#: aleksis/apps/paweljong/models.py:200
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:22
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:23
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:14
@@ -161,86 +160,86 @@ msgstr ""
 msgid "Mobile number"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:117 aleksis/apps/paweljong/forms.py:325
-#: aleksis/apps/paweljong/models.py:197
+#: aleksis/apps/paweljong/forms.py:125 aleksis/apps/paweljong/forms.py:343
+#: aleksis/apps/paweljong/models.py:201
 msgid "School details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:139
+#: aleksis/apps/paweljong/forms.py:148
 msgid "Event the voucher is valid for"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:140
+#: aleksis/apps/paweljong/forms.py:149
 msgid "Person the voucher is valid for"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:141
+#: aleksis/apps/paweljong/forms.py:150
 msgid "Voucher discount"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:149 aleksis/apps/paweljong/models.py:156
+#: aleksis/apps/paweljong/forms.py:158 aleksis/apps/paweljong/models.py:156
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:8
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:36
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:38
 msgid "Group"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:151
+#: aleksis/apps/paweljong/forms.py:160
 msgid "Select group to generate list"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:155
+#: aleksis/apps/paweljong/forms.py:164
 msgid "Template"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:157
+#: aleksis/apps/paweljong/forms.py:166
 msgid "Select template to generate list"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:161
+#: aleksis/apps/paweljong/forms.py:170
 msgid "Landscape"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:162
+#: aleksis/apps/paweljong/forms.py:171
 msgid "Select if output should be in landscape"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:174
+#: aleksis/apps/paweljong/forms.py:183
 msgid "Guardians personal data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:178
+#: aleksis/apps/paweljong/forms.py:187
 msgid "Guardians contact details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:184
+#: aleksis/apps/paweljong/forms.py:193
 msgid "Guardian's first name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:186
+#: aleksis/apps/paweljong/forms.py:195
 msgid "Please enter the first name of the legal guardian who will fill in the registration with you and who can be reached during the event in an emergency."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:192
+#: aleksis/apps/paweljong/forms.py:201
 msgid "Guardian's last name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:194
+#: aleksis/apps/paweljong/forms.py:203
 msgid "Please enter the last name of the legal guardian who will fill in the registration with you and who can be reached during the event in an emergency."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:200
+#: aleksis/apps/paweljong/forms.py:209
 msgid "Guardian's mobile number"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:202
+#: aleksis/apps/paweljong/forms.py:211
 msgid "We need the mobile phone number for emergencies if we urgently need to reach your parents during the event."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:208
+#: aleksis/apps/paweljong/forms.py:217
 msgid "Guardian's email address"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:220 aleksis/apps/paweljong/models.py:42
+#: aleksis/apps/paweljong/forms.py:230 aleksis/apps/paweljong/models.py:42
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:10
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:24
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:40
@@ -252,8 +251,8 @@ msgstr ""
 msgid "Name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:231 aleksis/apps/paweljong/forms.py:500
-#: aleksis/apps/paweljong/forms.py:624
+#: aleksis/apps/paweljong/forms.py:242 aleksis/apps/paweljong/forms.py:518
+#: aleksis/apps/paweljong/forms.py:643
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:20
 #: aleksis/apps/paweljong/templates/paweljong/print/list_attendance.html:20
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:21
@@ -261,8 +260,8 @@ msgstr ""
 msgid "First name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:236 aleksis/apps/paweljong/forms.py:501
-#: aleksis/apps/paweljong/forms.py:625
+#: aleksis/apps/paweljong/forms.py:247 aleksis/apps/paweljong/forms.py:519
+#: aleksis/apps/paweljong/forms.py:644
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:19
 #: aleksis/apps/paweljong/templates/paweljong/print/list_attendance.html:19
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:20
@@ -270,15 +269,15 @@ msgstr ""
 msgid "Last name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:252
+#: aleksis/apps/paweljong/forms.py:266
 msgid "For various reasons, e.g. because we have to keep gender segregation during the night for legal reasons, we need to know if you are a boy or a girl."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:258
+#: aleksis/apps/paweljong/forms.py:272
 msgid "Personal information"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:271
+#: aleksis/apps/paweljong/forms.py:290
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:16
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:46
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:19
@@ -286,11 +285,11 @@ msgstr ""
 msgid "Housenumber"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:283
+#: aleksis/apps/paweljong/forms.py:302
 msgid "Address data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:287
+#: aleksis/apps/paweljong/forms.py:305
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:13
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:25
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:43
@@ -302,97 +301,97 @@ msgstr ""
 msgid "Email address"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:289
+#: aleksis/apps/paweljong/forms.py:307
 msgid "Please use your personal e-mail address here, which you will check personally. Important information will always be sent to your parents as well. Do not use an e-mail address owned by your parents here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:299
+#: aleksis/apps/paweljong/forms.py:317
 msgid "Your mobile number helps us to reach you in an emergency during the event, e.g. if you are alone with your group at a conference or similar. If you don't have a cell phone, you can leave the field blank."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:308
+#: aleksis/apps/paweljong/forms.py:326
 #: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:72
 msgid "Contact details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:313
+#: aleksis/apps/paweljong/forms.py:331
 msgid "School"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:314
+#: aleksis/apps/paweljong/forms.py:332
 msgid "Please enter the name of your school."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:317
+#: aleksis/apps/paweljong/forms.py:335
 msgid "School place"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:318
+#: aleksis/apps/paweljong/forms.py:336
 msgid "Enter the place (city) where your school is located."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:321 aleksis/apps/paweljong/models.py:341
+#: aleksis/apps/paweljong/forms.py:339 aleksis/apps/paweljong/models.py:343
 msgid "School class"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:322
+#: aleksis/apps/paweljong/forms.py:340
 msgid "Please enter the class you are in (e.g. 8a)."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:332 aleksis/apps/paweljong/models.py:346
+#: aleksis/apps/paweljong/forms.py:350 aleksis/apps/paweljong/models.py:350
 msgid "Medical information / intolerances"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:336
+#: aleksis/apps/paweljong/forms.py:354
 msgid "Other remarks"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:346
+#: aleksis/apps/paweljong/forms.py:364
 msgid "If there are any medically important things we need to consider, e.g. when making food or to make sure you take prescribed medication, please enter it here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:350
+#: aleksis/apps/paweljong/forms.py:368
 msgid "You can write down any remarks you want to tell us here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:375
+#: aleksis/apps/paweljong/forms.py:393
 msgid "Financial data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:382
+#: aleksis/apps/paweljong/forms.py:400
 msgid "Voucher code"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:383
+#: aleksis/apps/paweljong/forms.py:401
 msgid "If you have a voucher code, type it in here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:388
+#: aleksis/apps/paweljong/forms.py:406
 msgid "Payment method"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:390
+#: aleksis/apps/paweljong/forms.py:408
 msgid "Please choose a payment method. The actual payment will be made after the registration."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:415
+#: aleksis/apps/paweljong/forms.py:433
 msgid "Our association would like to offer all children and young people the opportunity to participate in our events. Sometimes, however, families cannot afford the full fee. We therefore have a budget from which we can promote participation after we have carefully examined the necessity and eligibility. We rely on donations for this budget. If you would like to donate a voluntary additional amount for this budget, please indicate this here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:447
+#: aleksis/apps/paweljong/forms.py:465
 msgid "I confirm that the retraction of the registration is not possible anymore after {}"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:493 aleksis/apps/paweljong/forms.py:617
+#: aleksis/apps/paweljong/forms.py:511 aleksis/apps/paweljong/forms.py:636
 msgid "Account data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:507 aleksis/apps/paweljong/forms.py:632
+#: aleksis/apps/paweljong/forms.py:525 aleksis/apps/paweljong/forms.py:651
 msgid "The username must only contain lower case letters and numbers, and must begin with a letter."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:552 aleksis/apps/paweljong/forms.py:576
-#: aleksis/apps/paweljong/models.py:309 aleksis/apps/paweljong/models.py:337
+#: aleksis/apps/paweljong/forms.py:570 aleksis/apps/paweljong/forms.py:594
+#: aleksis/apps/paweljong/models.py:311 aleksis/apps/paweljong/models.py:339
 #: aleksis/apps/paweljong/tables.py:46
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:8
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:38
@@ -401,19 +400,19 @@ msgstr ""
 msgid "Person"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:554 aleksis/apps/paweljong/forms.py:577
+#: aleksis/apps/paweljong/forms.py:572 aleksis/apps/paweljong/forms.py:595
 msgid "Please enter a username."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:570 aleksis/apps/paweljong/models.py:513
+#: aleksis/apps/paweljong/forms.py:588 aleksis/apps/paweljong/models.py:522
 msgid "Comment"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:571
+#: aleksis/apps/paweljong/forms.py:589
 msgid "Please enter a comment describing the checkpoint (e.g. Dinner)."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:583
+#: aleksis/apps/paweljong/forms.py:601
 msgid "Submit geolocation"
 msgstr ""
 
@@ -543,7 +542,7 @@ msgstr ""
 
 #: aleksis/apps/paweljong/models.py:158
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:9
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:37
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:39
 msgid "Description"
 msgstr ""
 
@@ -557,54 +556,62 @@ msgstr ""
 
 #: aleksis/apps/paweljong/models.py:164
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:12
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:40
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:42
 msgid "Date of event"
 msgstr ""
 
 #: aleksis/apps/paweljong/models.py:165
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:13
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:41
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:43
 msgid "Registration deadline"
 msgstr ""
 
 #: aleksis/apps/paweljong/models.py:166
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:14
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:42
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:44
 msgid "Retraction deadline"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:169 aleksis/apps/paweljong/models.py:372
+#: aleksis/apps/paweljong/models.py:169 aleksis/apps/paweljong/models.py:376
 msgid "Cost in €"
 msgstr ""
 
 #: aleksis/apps/paweljong/models.py:170
+msgid "Minimum cost in €"
+msgstr ""
+
+#: aleksis/apps/paweljong/models.py:172
+msgid "Maximum cost in €"
+msgstr ""
+
+#: aleksis/apps/paweljong/models.py:174
 msgid "Maximum participants"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:171
+#: aleksis/apps/paweljong/models.py:175
 msgid "Information about the event"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:182
+#: aleksis/apps/paweljong/models.py:186
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:80
 msgid "Additional fields"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:201
+#: aleksis/apps/paweljong/models.py:204
 msgid "Contact information fields to be shown."
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:286
+#: aleksis/apps/paweljong/models.py:288
 msgid "Sent to persons"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:295 aleksis/apps/paweljong/models.py:296
+#: aleksis/apps/paweljong/models.py:297 aleksis/apps/paweljong/models.py:298
 #: aleksis/apps/paweljong/templates/paweljong/voucher/list.html:6
 #: aleksis/apps/paweljong/templates/paweljong/voucher/list.html:7
 msgid "Vouchers"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:302 aleksis/apps/paweljong/models.py:335
+#: aleksis/apps/paweljong/models.py:304 aleksis/apps/paweljong/models.py:337
 #: aleksis/apps/paweljong/tables.py:12 aleksis/apps/paweljong/tables.py:43
 #: aleksis/apps/paweljong/templates/paweljong/event/full.html:4
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:8
@@ -614,109 +621,109 @@ msgstr ""
 msgid "Event"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:318
+#: aleksis/apps/paweljong/models.py:320
 msgid "Used by"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:338
+#: aleksis/apps/paweljong/models.py:340
 msgid "Registration date"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:340
+#: aleksis/apps/paweljong/models.py:342
 msgid "Name of school"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:342
+#: aleksis/apps/paweljong/models.py:345
 msgid "Place of the school"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:344
+#: aleksis/apps/paweljong/models.py:348
 msgid "Comment / remarks"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:351
+#: aleksis/apps/paweljong/models.py:355
 msgid "Voucher"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:355
+#: aleksis/apps/paweljong/models.py:359
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:31
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:80
 msgid "Donation"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:358
+#: aleksis/apps/paweljong/models.py:362
 msgid "Accepted terms"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:363
+#: aleksis/apps/paweljong/models.py:367
 msgid "States"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:366
+#: aleksis/apps/paweljong/models.py:370
 msgid "Retracted"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:367
+#: aleksis/apps/paweljong/models.py:371
 msgid "Retracted at"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:369
+#: aleksis/apps/paweljong/models.py:373
 msgid "Checked in"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:370
+#: aleksis/apps/paweljong/models.py:374
 msgid "Checked in at"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:380 aleksis/apps/paweljong/views.py:1029
+#: aleksis/apps/paweljong/models.py:384 aleksis/apps/paweljong/views.py:1038
 msgid "Person is already checked in!"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:417
+#: aleksis/apps/paweljong/models.py:426
 msgid "Participation of {} in event {}"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:446
+#: aleksis/apps/paweljong/models.py:455
 msgid "Social Sponsoring / Extra Donation"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:457
+#: aleksis/apps/paweljong/models.py:466
 msgid "Voucher / Granted discount"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:487 aleksis/apps/paweljong/views.py:427
+#: aleksis/apps/paweljong/models.py:496 aleksis/apps/paweljong/views.py:429
 msgid "Event registration"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:488
+#: aleksis/apps/paweljong/models.py:497
 msgid "Event registrations"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:498
+#: aleksis/apps/paweljong/models.py:507
 msgid "Related event"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:502
+#: aleksis/apps/paweljong/models.py:511
 msgid "Checked person"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:508
+#: aleksis/apps/paweljong/models.py:517
 msgid "Checked by person"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:515
+#: aleksis/apps/paweljong/models.py:524
 msgid "Date and time of check"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:517
+#: aleksis/apps/paweljong/models.py:526
 msgid "Latitude of check"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:520
+#: aleksis/apps/paweljong/models.py:529
 msgid "Longitude of check"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:528
+#: aleksis/apps/paweljong/models.py:536
 msgid "Can generate lists of participants of a group"
 msgstr ""
 
@@ -728,9 +735,122 @@ msgstr ""
 msgid "Mail recipient for event notifications"
 msgstr ""
 
+#: aleksis/apps/paweljong/preferences.py:32
+msgid "Name of client linked to invoices for events."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:43
+msgid "Name of invoice group used for events."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:53
+msgid "Participant help text for email step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:65
+msgid "Participant help text for account registration step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:77
+msgid "Participant help text for contact details step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:88
+msgid "Participant help text for guardians step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:100
+msgid "Participant help text for additional information step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:112
+msgid "Participant help text for financial step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:123
+msgid "Participant help text for consent step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:134
+msgid "Participant help text for confirmation step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:145
+msgid "Guardian help text for email step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:157
+msgid "Guardian help text for account registration step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:169
+msgid "Guardian help text for contact details step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:180
+msgid "Guardian help text for guardians step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:192
+msgid "Guardian help text for additional information step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:204
+msgid "Guardian help text for financial step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:215
+msgid "Guardian help text for consent step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:226
+msgid "Guardian help text for confirmation step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:61
+msgid "Retraction consent is required"
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:71
+msgid "Mail domain does not exist."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:78
+msgid "Mail address already in use."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:92
+msgid "A user with this username or e-mail already exists."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:109
+#: aleksis/apps/paweljong/schema/event_registration.py:149
+#, python-format
+msgid "A person using the e-mail address %s already exists."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:191
+msgid "The field 'Amount paid by you' is required."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:214
+msgid "The field 'Payment method' is required."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:239
+#: aleksis/apps/paweljong/views.py:718
+msgid "You registered for an event"
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:240
+#: aleksis/apps/paweljong/views.py:719
+#, python-format
+msgid "You registered for the event %s"
+msgstr ""
+
 #: aleksis/apps/paweljong/tables.py:14
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:16
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:44
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:18
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:48
 msgid "Max. participants"
 msgstr ""
 
@@ -845,8 +965,8 @@ msgid "of"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:62
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:17
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:45
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:19
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:49
 msgid "Owners"
 msgstr ""
 
@@ -875,8 +995,11 @@ msgstr ""
 msgid "Edit event"
 msgstr ""
 
+#: aleksis/apps/paweljong/templates/paweljong/event/full.html:37
+msgid "Self-determined"
+msgstr ""
+
 #: aleksis/apps/paweljong/templates/paweljong/event/full.html:58
-#: aleksis/apps/paweljong/templates/paweljong/event/full.html:60
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:109
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:119
 #: aleksis/apps/paweljong/templates/paweljong/register_start.html:57
@@ -884,7 +1007,7 @@ msgstr ""
 msgid "Register now"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event/full.html:62
+#: aleksis/apps/paweljong/templates/paweljong/event/full.html:60
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:85
 msgid "Not available"
 msgstr ""
@@ -895,7 +1018,7 @@ msgid "Events"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/list.html:10
-#: aleksis/apps/paweljong/views.py:789
+#: aleksis/apps/paweljong/views.py:798
 msgid "Upcoming events"
 msgstr ""
 
@@ -1089,24 +1212,24 @@ msgstr ""
 msgid "No checked in yet."
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:241
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:242
 msgid "Invoice details"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:247
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:248
 msgid "Billing information"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:279
-#: aleksis/apps/paweljong/views.py:456
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:280
+#: aleksis/apps/paweljong/views.py:458
 msgid "Payment"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:310
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:311
 msgid "Mark payed"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:323
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:325
 msgid "Guardians / Parents "
 msgstr ""
 
@@ -1309,8 +1432,8 @@ msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:30
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:61
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:26
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:61
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:28
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:65
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:49
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:103
 msgid "Your AlekSIS team"
@@ -1321,23 +1444,33 @@ msgid "New event"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:6
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:31
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:33
 #, python-format
 msgid " An event was created: %(new_event)s"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:10
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:38
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:40
 msgid "Published"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:15
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:43
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:45
 msgid "Cost"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:22
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:55
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:16
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:46
+msgid "Minimum cost"
+msgstr ""
+
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:17
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:47
+msgid "Maximum cost"
+msgstr ""
+
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:24
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:59
 #, python-format
 msgid ""
 "\n"
@@ -1385,123 +1518,114 @@ msgstr ""
 msgid "The registration has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:235
+#: aleksis/apps/paweljong/views.py:236
 msgid "The registration has been deleted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:247
+#: aleksis/apps/paweljong/views.py:248
 msgid "The voucher has been created."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:259
+#: aleksis/apps/paweljong/views.py:260
 msgid "The voucher has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:269
+#: aleksis/apps/paweljong/views.py:270
 msgid "The voucher has been deleted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:418
+#: aleksis/apps/paweljong/views.py:420
 msgid "Create e-mail address"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:420
+#: aleksis/apps/paweljong/views.py:422
 msgid "All participants need a personal e-mail address, which they check and read temselves. We offer the possibility to register an e-mail address on our secure servers, made for young users. For information about receiving mails, see: <a href='https://wiki.teckids.org/de/Dienste/E-Mail'>https://wiki.teckids.org/de/Dienste/E-Mail</a>."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:429
+#: aleksis/apps/paweljong/views.py:431
 msgid "First, please enter some basic information about yourself, and check whether all information is correct."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:433
+#: aleksis/apps/paweljong/views.py:435
 msgid "Contact information"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:435
+#: aleksis/apps/paweljong/views.py:437
 msgid "Tell us how we can contact you. You will receive information about the event by e-mail. Please use your personal e-mail address where you will read mails yourself, not an address of your parents. We will always send all important information to your parents as well, and you will enter their e-mail address on the next page."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:442
+#: aleksis/apps/paweljong/views.py:444
 msgid "Legal guardians / parents"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:444
+#: aleksis/apps/paweljong/views.py:446
 msgid "Tell us how we can reach your parents or other legal guardians. This should be the person who was present when you registered for the event (which is now). If you want to add another parent, please tell us later as a comment."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:450
+#: aleksis/apps/paweljong/views.py:452
 msgid "Additional registration information"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:452
+#: aleksis/apps/paweljong/views.py:454
 msgid "Please answer the following questions as precisely as you can, so we can make sure your event attendance will be organised as wel las possible."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:458
+#: aleksis/apps/paweljong/views.py:460
 msgid "Please decide with your parents how you want to pay. In this step, you only select a payment method. The real payment will be done in a separate step, after the registration is complete."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:463
+#: aleksis/apps/paweljong/views.py:465
 msgid "Consent"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:465
+#: aleksis/apps/paweljong/views.py:467
 msgid "Lastly, please read the terms and conditions carefully, together with your parents. After that, you will need to confirm that you agree with everything yourself, and that your parents also agree."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:676
+#: aleksis/apps/paweljong/views.py:685
 msgid "You entered an invalid voucher code!"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:702
+#: aleksis/apps/paweljong/views.py:711
 msgid "You have successfully registered for the event. Please give us up to two days to process your registration. You will then receive an email from us."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:709
-msgid "You registered for an event"
-msgstr ""
-
-#: aleksis/apps/paweljong/views.py:710
-#, python-format
-msgid "You registered for the event %s"
-msgstr ""
-
-#: aleksis/apps/paweljong/views.py:770 aleksis/apps/paweljong/views.py:918
+#: aleksis/apps/paweljong/views.py:779 aleksis/apps/paweljong/views.py:927
 msgid "The term has been created."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:782 aleksis/apps/paweljong/views.py:930
+#: aleksis/apps/paweljong/views.py:791 aleksis/apps/paweljong/views.py:939
 msgid "The term has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:798
+#: aleksis/apps/paweljong/views.py:807
 msgid "Announcement feed of all upcoming events"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:838
+#: aleksis/apps/paweljong/views.py:847
 msgid "The info mailing has been created."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:850
+#: aleksis/apps/paweljong/views.py:859
 msgid "The info mailing has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:860
+#: aleksis/apps/paweljong/views.py:869
 msgid "The info mailing has been deleted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:943
+#: aleksis/apps/paweljong/views.py:952
 msgid "Registration successfully retracted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:1000
+#: aleksis/apps/paweljong/views.py:1009
 msgid "Person does not exist!"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:1027
+#: aleksis/apps/paweljong/views.py:1036
 msgid "Successfully checked in."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:1047
+#: aleksis/apps/paweljong/views.py:1056
 msgid "Successfully marked as payed!"
 msgstr ""
diff --git a/aleksis/apps/paweljong/locale/tr_TR/LC_MESSAGES/django.po b/aleksis/apps/paweljong/locale/tr_TR/LC_MESSAGES/django.po
index b7b042263f01f96f17da23327193588bead1f424..ca5389f29c65df937c27a4a7e6f6af928e727bfb 100644
--- a/aleksis/apps/paweljong/locale/tr_TR/LC_MESSAGES/django.po
+++ b/aleksis/apps/paweljong/locale/tr_TR/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-02-15 18:11+0000\n"
+"POT-Creation-Date: 2025-02-15 18:23+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -69,8 +69,8 @@ msgstr ""
 msgid "Creative Commons with attribution and distribution only under the same conditions, 4.0 or later"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:60 aleksis/apps/paweljong/forms.py:489
-#: aleksis/apps/paweljong/forms.py:613
+#: aleksis/apps/paweljong/forms.py:60 aleksis/apps/paweljong/forms.py:507
+#: aleksis/apps/paweljong/forms.py:632
 msgid "Base data"
 msgstr ""
 
@@ -78,11 +78,11 @@ msgstr ""
 msgid "Date data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:65
+#: aleksis/apps/paweljong/forms.py:66
 msgid "Event details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:66 aleksis/apps/paweljong/models.py:172
+#: aleksis/apps/paweljong/forms.py:72 aleksis/apps/paweljong/models.py:176
 #: aleksis/apps/paweljong/templates/paweljong/event/terms.html:4
 #: aleksis/apps/paweljong/templates/paweljong/event/terms.html:5
 #: aleksis/apps/paweljong/templates/paweljong/term/list.html:6
@@ -90,14 +90,14 @@ msgstr ""
 msgid "Terms"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:67 aleksis/apps/paweljong/models.py:175
+#: aleksis/apps/paweljong/forms.py:73 aleksis/apps/paweljong/models.py:179
 #: aleksis/apps/paweljong/templates/paweljong/info_mailing/list.html:6
 #: aleksis/apps/paweljong/templates/paweljong/info_mailing/list.html:7
 msgid "Info mailings"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:110 aleksis/apps/paweljong/forms.py:245
-#: aleksis/apps/paweljong/forms.py:626 aleksis/apps/paweljong/models.py:190
+#: aleksis/apps/paweljong/forms.py:118 aleksis/apps/paweljong/forms.py:259
+#: aleksis/apps/paweljong/forms.py:645 aleksis/apps/paweljong/models.py:194
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:22
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:12
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:42
@@ -106,13 +106,13 @@ msgstr ""
 msgid "Date of birth"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:111 aleksis/apps/paweljong/forms.py:250
-#: aleksis/apps/paweljong/models.py:191
+#: aleksis/apps/paweljong/forms.py:119 aleksis/apps/paweljong/forms.py:264
+#: aleksis/apps/paweljong/models.py:195
 msgid "Sex"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:112 aleksis/apps/paweljong/forms.py:266
-#: aleksis/apps/paweljong/models.py:192
+#: aleksis/apps/paweljong/forms.py:120 aleksis/apps/paweljong/forms.py:285
+#: aleksis/apps/paweljong/models.py:196
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:15
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:45
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:18
@@ -120,12 +120,12 @@ msgstr ""
 msgid "Street"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:113 aleksis/apps/paweljong/models.py:193
+#: aleksis/apps/paweljong/forms.py:121 aleksis/apps/paweljong/models.py:197
 msgid "House number"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:114 aleksis/apps/paweljong/forms.py:276
-#: aleksis/apps/paweljong/models.py:194
+#: aleksis/apps/paweljong/forms.py:122 aleksis/apps/paweljong/forms.py:295
+#: aleksis/apps/paweljong/models.py:198
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:17
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:47
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:20
@@ -133,19 +133,19 @@ msgstr ""
 msgid "Postal code"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:115 aleksis/apps/paweljong/forms.py:281
-#: aleksis/apps/paweljong/models.py:195
+#: aleksis/apps/paweljong/forms.py:123 aleksis/apps/paweljong/forms.py:300
+#: aleksis/apps/paweljong/models.py:199
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:18
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:48
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:11
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:39
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:41
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:21
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:70
 msgid "Place"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:116 aleksis/apps/paweljong/forms.py:296
-#: aleksis/apps/paweljong/models.py:196
+#: aleksis/apps/paweljong/forms.py:124 aleksis/apps/paweljong/forms.py:314
+#: aleksis/apps/paweljong/models.py:200
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:22
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:23
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:14
@@ -159,86 +159,86 @@ msgstr ""
 msgid "Mobile number"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:117 aleksis/apps/paweljong/forms.py:325
-#: aleksis/apps/paweljong/models.py:197
+#: aleksis/apps/paweljong/forms.py:125 aleksis/apps/paweljong/forms.py:343
+#: aleksis/apps/paweljong/models.py:201
 msgid "School details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:139
+#: aleksis/apps/paweljong/forms.py:148
 msgid "Event the voucher is valid for"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:140
+#: aleksis/apps/paweljong/forms.py:149
 msgid "Person the voucher is valid for"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:141
+#: aleksis/apps/paweljong/forms.py:150
 msgid "Voucher discount"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:149 aleksis/apps/paweljong/models.py:156
+#: aleksis/apps/paweljong/forms.py:158 aleksis/apps/paweljong/models.py:156
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:8
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:36
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:38
 msgid "Group"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:151
+#: aleksis/apps/paweljong/forms.py:160
 msgid "Select group to generate list"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:155
+#: aleksis/apps/paweljong/forms.py:164
 msgid "Template"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:157
+#: aleksis/apps/paweljong/forms.py:166
 msgid "Select template to generate list"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:161
+#: aleksis/apps/paweljong/forms.py:170
 msgid "Landscape"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:162
+#: aleksis/apps/paweljong/forms.py:171
 msgid "Select if output should be in landscape"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:174
+#: aleksis/apps/paweljong/forms.py:183
 msgid "Guardians personal data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:178
+#: aleksis/apps/paweljong/forms.py:187
 msgid "Guardians contact details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:184
+#: aleksis/apps/paweljong/forms.py:193
 msgid "Guardian's first name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:186
+#: aleksis/apps/paweljong/forms.py:195
 msgid "Please enter the first name of the legal guardian who will fill in the registration with you and who can be reached during the event in an emergency."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:192
+#: aleksis/apps/paweljong/forms.py:201
 msgid "Guardian's last name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:194
+#: aleksis/apps/paweljong/forms.py:203
 msgid "Please enter the last name of the legal guardian who will fill in the registration with you and who can be reached during the event in an emergency."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:200
+#: aleksis/apps/paweljong/forms.py:209
 msgid "Guardian's mobile number"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:202
+#: aleksis/apps/paweljong/forms.py:211
 msgid "We need the mobile phone number for emergencies if we urgently need to reach your parents during the event."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:208
+#: aleksis/apps/paweljong/forms.py:217
 msgid "Guardian's email address"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:220 aleksis/apps/paweljong/models.py:42
+#: aleksis/apps/paweljong/forms.py:230 aleksis/apps/paweljong/models.py:42
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:10
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:24
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:40
@@ -250,8 +250,8 @@ msgstr ""
 msgid "Name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:231 aleksis/apps/paweljong/forms.py:500
-#: aleksis/apps/paweljong/forms.py:624
+#: aleksis/apps/paweljong/forms.py:242 aleksis/apps/paweljong/forms.py:518
+#: aleksis/apps/paweljong/forms.py:643
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:20
 #: aleksis/apps/paweljong/templates/paweljong/print/list_attendance.html:20
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:21
@@ -259,8 +259,8 @@ msgstr ""
 msgid "First name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:236 aleksis/apps/paweljong/forms.py:501
-#: aleksis/apps/paweljong/forms.py:625
+#: aleksis/apps/paweljong/forms.py:247 aleksis/apps/paweljong/forms.py:519
+#: aleksis/apps/paweljong/forms.py:644
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:19
 #: aleksis/apps/paweljong/templates/paweljong/print/list_attendance.html:19
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:20
@@ -268,15 +268,15 @@ msgstr ""
 msgid "Last name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:252
+#: aleksis/apps/paweljong/forms.py:266
 msgid "For various reasons, e.g. because we have to keep gender segregation during the night for legal reasons, we need to know if you are a boy or a girl."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:258
+#: aleksis/apps/paweljong/forms.py:272
 msgid "Personal information"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:271
+#: aleksis/apps/paweljong/forms.py:290
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:16
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:46
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:19
@@ -284,11 +284,11 @@ msgstr ""
 msgid "Housenumber"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:283
+#: aleksis/apps/paweljong/forms.py:302
 msgid "Address data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:287
+#: aleksis/apps/paweljong/forms.py:305
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:13
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:25
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:43
@@ -300,97 +300,97 @@ msgstr ""
 msgid "Email address"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:289
+#: aleksis/apps/paweljong/forms.py:307
 msgid "Please use your personal e-mail address here, which you will check personally. Important information will always be sent to your parents as well. Do not use an e-mail address owned by your parents here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:299
+#: aleksis/apps/paweljong/forms.py:317
 msgid "Your mobile number helps us to reach you in an emergency during the event, e.g. if you are alone with your group at a conference or similar. If you don't have a cell phone, you can leave the field blank."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:308
+#: aleksis/apps/paweljong/forms.py:326
 #: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:72
 msgid "Contact details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:313
+#: aleksis/apps/paweljong/forms.py:331
 msgid "School"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:314
+#: aleksis/apps/paweljong/forms.py:332
 msgid "Please enter the name of your school."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:317
+#: aleksis/apps/paweljong/forms.py:335
 msgid "School place"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:318
+#: aleksis/apps/paweljong/forms.py:336
 msgid "Enter the place (city) where your school is located."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:321 aleksis/apps/paweljong/models.py:341
+#: aleksis/apps/paweljong/forms.py:339 aleksis/apps/paweljong/models.py:343
 msgid "School class"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:322
+#: aleksis/apps/paweljong/forms.py:340
 msgid "Please enter the class you are in (e.g. 8a)."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:332 aleksis/apps/paweljong/models.py:346
+#: aleksis/apps/paweljong/forms.py:350 aleksis/apps/paweljong/models.py:350
 msgid "Medical information / intolerances"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:336
+#: aleksis/apps/paweljong/forms.py:354
 msgid "Other remarks"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:346
+#: aleksis/apps/paweljong/forms.py:364
 msgid "If there are any medically important things we need to consider, e.g. when making food or to make sure you take prescribed medication, please enter it here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:350
+#: aleksis/apps/paweljong/forms.py:368
 msgid "You can write down any remarks you want to tell us here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:375
+#: aleksis/apps/paweljong/forms.py:393
 msgid "Financial data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:382
+#: aleksis/apps/paweljong/forms.py:400
 msgid "Voucher code"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:383
+#: aleksis/apps/paweljong/forms.py:401
 msgid "If you have a voucher code, type it in here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:388
+#: aleksis/apps/paweljong/forms.py:406
 msgid "Payment method"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:390
+#: aleksis/apps/paweljong/forms.py:408
 msgid "Please choose a payment method. The actual payment will be made after the registration."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:415
+#: aleksis/apps/paweljong/forms.py:433
 msgid "Our association would like to offer all children and young people the opportunity to participate in our events. Sometimes, however, families cannot afford the full fee. We therefore have a budget from which we can promote participation after we have carefully examined the necessity and eligibility. We rely on donations for this budget. If you would like to donate a voluntary additional amount for this budget, please indicate this here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:447
+#: aleksis/apps/paweljong/forms.py:465
 msgid "I confirm that the retraction of the registration is not possible anymore after {}"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:493 aleksis/apps/paweljong/forms.py:617
+#: aleksis/apps/paweljong/forms.py:511 aleksis/apps/paweljong/forms.py:636
 msgid "Account data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:507 aleksis/apps/paweljong/forms.py:632
+#: aleksis/apps/paweljong/forms.py:525 aleksis/apps/paweljong/forms.py:651
 msgid "The username must only contain lower case letters and numbers, and must begin with a letter."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:552 aleksis/apps/paweljong/forms.py:576
-#: aleksis/apps/paweljong/models.py:309 aleksis/apps/paweljong/models.py:337
+#: aleksis/apps/paweljong/forms.py:570 aleksis/apps/paweljong/forms.py:594
+#: aleksis/apps/paweljong/models.py:311 aleksis/apps/paweljong/models.py:339
 #: aleksis/apps/paweljong/tables.py:46
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:8
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:38
@@ -399,19 +399,19 @@ msgstr ""
 msgid "Person"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:554 aleksis/apps/paweljong/forms.py:577
+#: aleksis/apps/paweljong/forms.py:572 aleksis/apps/paweljong/forms.py:595
 msgid "Please enter a username."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:570 aleksis/apps/paweljong/models.py:513
+#: aleksis/apps/paweljong/forms.py:588 aleksis/apps/paweljong/models.py:522
 msgid "Comment"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:571
+#: aleksis/apps/paweljong/forms.py:589
 msgid "Please enter a comment describing the checkpoint (e.g. Dinner)."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:583
+#: aleksis/apps/paweljong/forms.py:601
 msgid "Submit geolocation"
 msgstr ""
 
@@ -541,7 +541,7 @@ msgstr ""
 
 #: aleksis/apps/paweljong/models.py:158
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:9
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:37
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:39
 msgid "Description"
 msgstr ""
 
@@ -555,54 +555,62 @@ msgstr ""
 
 #: aleksis/apps/paweljong/models.py:164
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:12
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:40
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:42
 msgid "Date of event"
 msgstr ""
 
 #: aleksis/apps/paweljong/models.py:165
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:13
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:41
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:43
 msgid "Registration deadline"
 msgstr ""
 
 #: aleksis/apps/paweljong/models.py:166
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:14
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:42
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:44
 msgid "Retraction deadline"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:169 aleksis/apps/paweljong/models.py:372
+#: aleksis/apps/paweljong/models.py:169 aleksis/apps/paweljong/models.py:376
 msgid "Cost in €"
 msgstr ""
 
 #: aleksis/apps/paweljong/models.py:170
+msgid "Minimum cost in €"
+msgstr ""
+
+#: aleksis/apps/paweljong/models.py:172
+msgid "Maximum cost in €"
+msgstr ""
+
+#: aleksis/apps/paweljong/models.py:174
 msgid "Maximum participants"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:171
+#: aleksis/apps/paweljong/models.py:175
 msgid "Information about the event"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:182
+#: aleksis/apps/paweljong/models.py:186
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:80
 msgid "Additional fields"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:201
+#: aleksis/apps/paweljong/models.py:204
 msgid "Contact information fields to be shown."
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:286
+#: aleksis/apps/paweljong/models.py:288
 msgid "Sent to persons"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:295 aleksis/apps/paweljong/models.py:296
+#: aleksis/apps/paweljong/models.py:297 aleksis/apps/paweljong/models.py:298
 #: aleksis/apps/paweljong/templates/paweljong/voucher/list.html:6
 #: aleksis/apps/paweljong/templates/paweljong/voucher/list.html:7
 msgid "Vouchers"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:302 aleksis/apps/paweljong/models.py:335
+#: aleksis/apps/paweljong/models.py:304 aleksis/apps/paweljong/models.py:337
 #: aleksis/apps/paweljong/tables.py:12 aleksis/apps/paweljong/tables.py:43
 #: aleksis/apps/paweljong/templates/paweljong/event/full.html:4
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:8
@@ -612,109 +620,109 @@ msgstr ""
 msgid "Event"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:318
+#: aleksis/apps/paweljong/models.py:320
 msgid "Used by"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:338
+#: aleksis/apps/paweljong/models.py:340
 msgid "Registration date"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:340
+#: aleksis/apps/paweljong/models.py:342
 msgid "Name of school"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:342
+#: aleksis/apps/paweljong/models.py:345
 msgid "Place of the school"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:344
+#: aleksis/apps/paweljong/models.py:348
 msgid "Comment / remarks"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:351
+#: aleksis/apps/paweljong/models.py:355
 msgid "Voucher"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:355
+#: aleksis/apps/paweljong/models.py:359
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:31
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:80
 msgid "Donation"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:358
+#: aleksis/apps/paweljong/models.py:362
 msgid "Accepted terms"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:363
+#: aleksis/apps/paweljong/models.py:367
 msgid "States"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:366
+#: aleksis/apps/paweljong/models.py:370
 msgid "Retracted"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:367
+#: aleksis/apps/paweljong/models.py:371
 msgid "Retracted at"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:369
+#: aleksis/apps/paweljong/models.py:373
 msgid "Checked in"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:370
+#: aleksis/apps/paweljong/models.py:374
 msgid "Checked in at"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:380 aleksis/apps/paweljong/views.py:1029
+#: aleksis/apps/paweljong/models.py:384 aleksis/apps/paweljong/views.py:1038
 msgid "Person is already checked in!"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:417
+#: aleksis/apps/paweljong/models.py:426
 msgid "Participation of {} in event {}"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:446
+#: aleksis/apps/paweljong/models.py:455
 msgid "Social Sponsoring / Extra Donation"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:457
+#: aleksis/apps/paweljong/models.py:466
 msgid "Voucher / Granted discount"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:487 aleksis/apps/paweljong/views.py:427
+#: aleksis/apps/paweljong/models.py:496 aleksis/apps/paweljong/views.py:429
 msgid "Event registration"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:488
+#: aleksis/apps/paweljong/models.py:497
 msgid "Event registrations"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:498
+#: aleksis/apps/paweljong/models.py:507
 msgid "Related event"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:502
+#: aleksis/apps/paweljong/models.py:511
 msgid "Checked person"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:508
+#: aleksis/apps/paweljong/models.py:517
 msgid "Checked by person"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:515
+#: aleksis/apps/paweljong/models.py:524
 msgid "Date and time of check"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:517
+#: aleksis/apps/paweljong/models.py:526
 msgid "Latitude of check"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:520
+#: aleksis/apps/paweljong/models.py:529
 msgid "Longitude of check"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:528
+#: aleksis/apps/paweljong/models.py:536
 msgid "Can generate lists of participants of a group"
 msgstr ""
 
@@ -726,9 +734,122 @@ msgstr ""
 msgid "Mail recipient for event notifications"
 msgstr ""
 
+#: aleksis/apps/paweljong/preferences.py:32
+msgid "Name of client linked to invoices for events."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:43
+msgid "Name of invoice group used for events."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:53
+msgid "Participant help text for email step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:65
+msgid "Participant help text for account registration step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:77
+msgid "Participant help text for contact details step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:88
+msgid "Participant help text for guardians step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:100
+msgid "Participant help text for additional information step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:112
+msgid "Participant help text for financial step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:123
+msgid "Participant help text for consent step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:134
+msgid "Participant help text for confirmation step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:145
+msgid "Guardian help text for email step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:157
+msgid "Guardian help text for account registration step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:169
+msgid "Guardian help text for contact details step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:180
+msgid "Guardian help text for guardians step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:192
+msgid "Guardian help text for additional information step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:204
+msgid "Guardian help text for financial step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:215
+msgid "Guardian help text for consent step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:226
+msgid "Guardian help text for confirmation step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:61
+msgid "Retraction consent is required"
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:71
+msgid "Mail domain does not exist."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:78
+msgid "Mail address already in use."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:92
+msgid "A user with this username or e-mail already exists."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:109
+#: aleksis/apps/paweljong/schema/event_registration.py:149
+#, python-format
+msgid "A person using the e-mail address %s already exists."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:191
+msgid "The field 'Amount paid by you' is required."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:214
+msgid "The field 'Payment method' is required."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:239
+#: aleksis/apps/paweljong/views.py:718
+msgid "You registered for an event"
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:240
+#: aleksis/apps/paweljong/views.py:719
+#, python-format
+msgid "You registered for the event %s"
+msgstr ""
+
 #: aleksis/apps/paweljong/tables.py:14
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:16
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:44
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:18
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:48
 msgid "Max. participants"
 msgstr ""
 
@@ -843,8 +964,8 @@ msgid "of"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:62
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:17
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:45
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:19
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:49
 msgid "Owners"
 msgstr ""
 
@@ -873,8 +994,11 @@ msgstr ""
 msgid "Edit event"
 msgstr ""
 
+#: aleksis/apps/paweljong/templates/paweljong/event/full.html:37
+msgid "Self-determined"
+msgstr ""
+
 #: aleksis/apps/paweljong/templates/paweljong/event/full.html:58
-#: aleksis/apps/paweljong/templates/paweljong/event/full.html:60
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:109
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:119
 #: aleksis/apps/paweljong/templates/paweljong/register_start.html:57
@@ -882,7 +1006,7 @@ msgstr ""
 msgid "Register now"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event/full.html:62
+#: aleksis/apps/paweljong/templates/paweljong/event/full.html:60
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:85
 msgid "Not available"
 msgstr ""
@@ -893,7 +1017,7 @@ msgid "Events"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/list.html:10
-#: aleksis/apps/paweljong/views.py:789
+#: aleksis/apps/paweljong/views.py:798
 msgid "Upcoming events"
 msgstr ""
 
@@ -1087,24 +1211,24 @@ msgstr ""
 msgid "No checked in yet."
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:241
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:242
 msgid "Invoice details"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:247
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:248
 msgid "Billing information"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:279
-#: aleksis/apps/paweljong/views.py:456
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:280
+#: aleksis/apps/paweljong/views.py:458
 msgid "Payment"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:310
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:311
 msgid "Mark payed"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:323
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:325
 msgid "Guardians / Parents "
 msgstr ""
 
@@ -1307,8 +1431,8 @@ msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:30
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:61
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:26
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:61
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:28
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:65
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:49
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:103
 msgid "Your AlekSIS team"
@@ -1319,23 +1443,33 @@ msgid "New event"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:6
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:31
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:33
 #, python-format
 msgid " An event was created: %(new_event)s"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:10
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:38
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:40
 msgid "Published"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:15
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:43
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:45
 msgid "Cost"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:22
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:55
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:16
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:46
+msgid "Minimum cost"
+msgstr ""
+
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:17
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:47
+msgid "Maximum cost"
+msgstr ""
+
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:24
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:59
 #, python-format
 msgid ""
 "\n"
@@ -1383,123 +1517,114 @@ msgstr ""
 msgid "The registration has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:235
+#: aleksis/apps/paweljong/views.py:236
 msgid "The registration has been deleted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:247
+#: aleksis/apps/paweljong/views.py:248
 msgid "The voucher has been created."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:259
+#: aleksis/apps/paweljong/views.py:260
 msgid "The voucher has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:269
+#: aleksis/apps/paweljong/views.py:270
 msgid "The voucher has been deleted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:418
+#: aleksis/apps/paweljong/views.py:420
 msgid "Create e-mail address"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:420
+#: aleksis/apps/paweljong/views.py:422
 msgid "All participants need a personal e-mail address, which they check and read temselves. We offer the possibility to register an e-mail address on our secure servers, made for young users. For information about receiving mails, see: <a href='https://wiki.teckids.org/de/Dienste/E-Mail'>https://wiki.teckids.org/de/Dienste/E-Mail</a>."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:429
+#: aleksis/apps/paweljong/views.py:431
 msgid "First, please enter some basic information about yourself, and check whether all information is correct."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:433
+#: aleksis/apps/paweljong/views.py:435
 msgid "Contact information"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:435
+#: aleksis/apps/paweljong/views.py:437
 msgid "Tell us how we can contact you. You will receive information about the event by e-mail. Please use your personal e-mail address where you will read mails yourself, not an address of your parents. We will always send all important information to your parents as well, and you will enter their e-mail address on the next page."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:442
+#: aleksis/apps/paweljong/views.py:444
 msgid "Legal guardians / parents"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:444
+#: aleksis/apps/paweljong/views.py:446
 msgid "Tell us how we can reach your parents or other legal guardians. This should be the person who was present when you registered for the event (which is now). If you want to add another parent, please tell us later as a comment."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:450
+#: aleksis/apps/paweljong/views.py:452
 msgid "Additional registration information"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:452
+#: aleksis/apps/paweljong/views.py:454
 msgid "Please answer the following questions as precisely as you can, so we can make sure your event attendance will be organised as wel las possible."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:458
+#: aleksis/apps/paweljong/views.py:460
 msgid "Please decide with your parents how you want to pay. In this step, you only select a payment method. The real payment will be done in a separate step, after the registration is complete."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:463
+#: aleksis/apps/paweljong/views.py:465
 msgid "Consent"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:465
+#: aleksis/apps/paweljong/views.py:467
 msgid "Lastly, please read the terms and conditions carefully, together with your parents. After that, you will need to confirm that you agree with everything yourself, and that your parents also agree."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:676
+#: aleksis/apps/paweljong/views.py:685
 msgid "You entered an invalid voucher code!"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:702
+#: aleksis/apps/paweljong/views.py:711
 msgid "You have successfully registered for the event. Please give us up to two days to process your registration. You will then receive an email from us."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:709
-msgid "You registered for an event"
-msgstr ""
-
-#: aleksis/apps/paweljong/views.py:710
-#, python-format
-msgid "You registered for the event %s"
-msgstr ""
-
-#: aleksis/apps/paweljong/views.py:770 aleksis/apps/paweljong/views.py:918
+#: aleksis/apps/paweljong/views.py:779 aleksis/apps/paweljong/views.py:927
 msgid "The term has been created."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:782 aleksis/apps/paweljong/views.py:930
+#: aleksis/apps/paweljong/views.py:791 aleksis/apps/paweljong/views.py:939
 msgid "The term has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:798
+#: aleksis/apps/paweljong/views.py:807
 msgid "Announcement feed of all upcoming events"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:838
+#: aleksis/apps/paweljong/views.py:847
 msgid "The info mailing has been created."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:850
+#: aleksis/apps/paweljong/views.py:859
 msgid "The info mailing has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:860
+#: aleksis/apps/paweljong/views.py:869
 msgid "The info mailing has been deleted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:943
+#: aleksis/apps/paweljong/views.py:952
 msgid "Registration successfully retracted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:1000
+#: aleksis/apps/paweljong/views.py:1009
 msgid "Person does not exist!"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:1027
+#: aleksis/apps/paweljong/views.py:1036
 msgid "Successfully checked in."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:1047
+#: aleksis/apps/paweljong/views.py:1056
 msgid "Successfully marked as payed!"
 msgstr ""
diff --git a/aleksis/apps/paweljong/locale/uk/LC_MESSAGES/django.po b/aleksis/apps/paweljong/locale/uk/LC_MESSAGES/django.po
index 1cfe747e36290ea3e07b3293400c8767c45d7891..e241d3ba2e99157a21f7ed38830bcc65d580b1b3 100644
--- a/aleksis/apps/paweljong/locale/uk/LC_MESSAGES/django.po
+++ b/aleksis/apps/paweljong/locale/uk/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2025-02-15 18:11+0000\n"
+"POT-Creation-Date: 2025-02-15 18:23+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,10 +16,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != "
-"11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % "
-"100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || "
-"(n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"
+"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"
+
 #: aleksis/apps/paweljong/data_checks.py:8
 msgid "Sync members"
 msgstr ""
@@ -72,8 +70,8 @@ msgstr ""
 msgid "Creative Commons with attribution and distribution only under the same conditions, 4.0 or later"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:60 aleksis/apps/paweljong/forms.py:489
-#: aleksis/apps/paweljong/forms.py:613
+#: aleksis/apps/paweljong/forms.py:60 aleksis/apps/paweljong/forms.py:507
+#: aleksis/apps/paweljong/forms.py:632
 msgid "Base data"
 msgstr ""
 
@@ -81,11 +79,11 @@ msgstr ""
 msgid "Date data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:65
+#: aleksis/apps/paweljong/forms.py:66
 msgid "Event details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:66 aleksis/apps/paweljong/models.py:172
+#: aleksis/apps/paweljong/forms.py:72 aleksis/apps/paweljong/models.py:176
 #: aleksis/apps/paweljong/templates/paweljong/event/terms.html:4
 #: aleksis/apps/paweljong/templates/paweljong/event/terms.html:5
 #: aleksis/apps/paweljong/templates/paweljong/term/list.html:6
@@ -93,14 +91,14 @@ msgstr ""
 msgid "Terms"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:67 aleksis/apps/paweljong/models.py:175
+#: aleksis/apps/paweljong/forms.py:73 aleksis/apps/paweljong/models.py:179
 #: aleksis/apps/paweljong/templates/paweljong/info_mailing/list.html:6
 #: aleksis/apps/paweljong/templates/paweljong/info_mailing/list.html:7
 msgid "Info mailings"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:110 aleksis/apps/paweljong/forms.py:245
-#: aleksis/apps/paweljong/forms.py:626 aleksis/apps/paweljong/models.py:190
+#: aleksis/apps/paweljong/forms.py:118 aleksis/apps/paweljong/forms.py:259
+#: aleksis/apps/paweljong/forms.py:645 aleksis/apps/paweljong/models.py:194
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:22
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:12
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:42
@@ -109,13 +107,13 @@ msgstr ""
 msgid "Date of birth"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:111 aleksis/apps/paweljong/forms.py:250
-#: aleksis/apps/paweljong/models.py:191
+#: aleksis/apps/paweljong/forms.py:119 aleksis/apps/paweljong/forms.py:264
+#: aleksis/apps/paweljong/models.py:195
 msgid "Sex"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:112 aleksis/apps/paweljong/forms.py:266
-#: aleksis/apps/paweljong/models.py:192
+#: aleksis/apps/paweljong/forms.py:120 aleksis/apps/paweljong/forms.py:285
+#: aleksis/apps/paweljong/models.py:196
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:15
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:45
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:18
@@ -123,12 +121,12 @@ msgstr ""
 msgid "Street"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:113 aleksis/apps/paweljong/models.py:193
+#: aleksis/apps/paweljong/forms.py:121 aleksis/apps/paweljong/models.py:197
 msgid "House number"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:114 aleksis/apps/paweljong/forms.py:276
-#: aleksis/apps/paweljong/models.py:194
+#: aleksis/apps/paweljong/forms.py:122 aleksis/apps/paweljong/forms.py:295
+#: aleksis/apps/paweljong/models.py:198
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:17
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:47
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:20
@@ -136,19 +134,19 @@ msgstr ""
 msgid "Postal code"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:115 aleksis/apps/paweljong/forms.py:281
-#: aleksis/apps/paweljong/models.py:195
+#: aleksis/apps/paweljong/forms.py:123 aleksis/apps/paweljong/forms.py:300
+#: aleksis/apps/paweljong/models.py:199
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:18
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:48
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:11
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:39
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:41
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:21
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:70
 msgid "Place"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:116 aleksis/apps/paweljong/forms.py:296
-#: aleksis/apps/paweljong/models.py:196
+#: aleksis/apps/paweljong/forms.py:124 aleksis/apps/paweljong/forms.py:314
+#: aleksis/apps/paweljong/models.py:200
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:22
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:23
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:14
@@ -162,86 +160,86 @@ msgstr ""
 msgid "Mobile number"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:117 aleksis/apps/paweljong/forms.py:325
-#: aleksis/apps/paweljong/models.py:197
+#: aleksis/apps/paweljong/forms.py:125 aleksis/apps/paweljong/forms.py:343
+#: aleksis/apps/paweljong/models.py:201
 msgid "School details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:139
+#: aleksis/apps/paweljong/forms.py:148
 msgid "Event the voucher is valid for"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:140
+#: aleksis/apps/paweljong/forms.py:149
 msgid "Person the voucher is valid for"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:141
+#: aleksis/apps/paweljong/forms.py:150
 msgid "Voucher discount"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:149 aleksis/apps/paweljong/models.py:156
+#: aleksis/apps/paweljong/forms.py:158 aleksis/apps/paweljong/models.py:156
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:8
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:36
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:38
 msgid "Group"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:151
+#: aleksis/apps/paweljong/forms.py:160
 msgid "Select group to generate list"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:155
+#: aleksis/apps/paweljong/forms.py:164
 msgid "Template"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:157
+#: aleksis/apps/paweljong/forms.py:166
 msgid "Select template to generate list"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:161
+#: aleksis/apps/paweljong/forms.py:170
 msgid "Landscape"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:162
+#: aleksis/apps/paweljong/forms.py:171
 msgid "Select if output should be in landscape"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:174
+#: aleksis/apps/paweljong/forms.py:183
 msgid "Guardians personal data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:178
+#: aleksis/apps/paweljong/forms.py:187
 msgid "Guardians contact details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:184
+#: aleksis/apps/paweljong/forms.py:193
 msgid "Guardian's first name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:186
+#: aleksis/apps/paweljong/forms.py:195
 msgid "Please enter the first name of the legal guardian who will fill in the registration with you and who can be reached during the event in an emergency."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:192
+#: aleksis/apps/paweljong/forms.py:201
 msgid "Guardian's last name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:194
+#: aleksis/apps/paweljong/forms.py:203
 msgid "Please enter the last name of the legal guardian who will fill in the registration with you and who can be reached during the event in an emergency."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:200
+#: aleksis/apps/paweljong/forms.py:209
 msgid "Guardian's mobile number"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:202
+#: aleksis/apps/paweljong/forms.py:211
 msgid "We need the mobile phone number for emergencies if we urgently need to reach your parents during the event."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:208
+#: aleksis/apps/paweljong/forms.py:217
 msgid "Guardian's email address"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:220 aleksis/apps/paweljong/models.py:42
+#: aleksis/apps/paweljong/forms.py:230 aleksis/apps/paweljong/models.py:42
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:10
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:24
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:40
@@ -253,8 +251,8 @@ msgstr ""
 msgid "Name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:231 aleksis/apps/paweljong/forms.py:500
-#: aleksis/apps/paweljong/forms.py:624
+#: aleksis/apps/paweljong/forms.py:242 aleksis/apps/paweljong/forms.py:518
+#: aleksis/apps/paweljong/forms.py:643
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:20
 #: aleksis/apps/paweljong/templates/paweljong/print/list_attendance.html:20
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:21
@@ -262,8 +260,8 @@ msgstr ""
 msgid "First name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:236 aleksis/apps/paweljong/forms.py:501
-#: aleksis/apps/paweljong/forms.py:625
+#: aleksis/apps/paweljong/forms.py:247 aleksis/apps/paweljong/forms.py:519
+#: aleksis/apps/paweljong/forms.py:644
 #: aleksis/apps/paweljong/templates/paweljong/print/corona.html:19
 #: aleksis/apps/paweljong/templates/paweljong/print/list_attendance.html:19
 #: aleksis/apps/paweljong/templates/paweljong/print/list_participants.html:20
@@ -271,15 +269,15 @@ msgstr ""
 msgid "Last name"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:252
+#: aleksis/apps/paweljong/forms.py:266
 msgid "For various reasons, e.g. because we have to keep gender segregation during the night for legal reasons, we need to know if you are a boy or a girl."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:258
+#: aleksis/apps/paweljong/forms.py:272
 msgid "Personal information"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:271
+#: aleksis/apps/paweljong/forms.py:290
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:16
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:46
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:19
@@ -287,11 +285,11 @@ msgstr ""
 msgid "Housenumber"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:283
+#: aleksis/apps/paweljong/forms.py:302
 msgid "Address data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:287
+#: aleksis/apps/paweljong/forms.py:305
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:13
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:25
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:43
@@ -303,97 +301,97 @@ msgstr ""
 msgid "Email address"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:289
+#: aleksis/apps/paweljong/forms.py:307
 msgid "Please use your personal e-mail address here, which you will check personally. Important information will always be sent to your parents as well. Do not use an e-mail address owned by your parents here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:299
+#: aleksis/apps/paweljong/forms.py:317
 msgid "Your mobile number helps us to reach you in an emergency during the event, e.g. if you are alone with your group at a conference or similar. If you don't have a cell phone, you can leave the field blank."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:308
+#: aleksis/apps/paweljong/forms.py:326
 #: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:72
 msgid "Contact details"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:313
+#: aleksis/apps/paweljong/forms.py:331
 msgid "School"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:314
+#: aleksis/apps/paweljong/forms.py:332
 msgid "Please enter the name of your school."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:317
+#: aleksis/apps/paweljong/forms.py:335
 msgid "School place"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:318
+#: aleksis/apps/paweljong/forms.py:336
 msgid "Enter the place (city) where your school is located."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:321 aleksis/apps/paweljong/models.py:341
+#: aleksis/apps/paweljong/forms.py:339 aleksis/apps/paweljong/models.py:343
 msgid "School class"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:322
+#: aleksis/apps/paweljong/forms.py:340
 msgid "Please enter the class you are in (e.g. 8a)."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:332 aleksis/apps/paweljong/models.py:346
+#: aleksis/apps/paweljong/forms.py:350 aleksis/apps/paweljong/models.py:350
 msgid "Medical information / intolerances"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:336
+#: aleksis/apps/paweljong/forms.py:354
 msgid "Other remarks"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:346
+#: aleksis/apps/paweljong/forms.py:364
 msgid "If there are any medically important things we need to consider, e.g. when making food or to make sure you take prescribed medication, please enter it here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:350
+#: aleksis/apps/paweljong/forms.py:368
 msgid "You can write down any remarks you want to tell us here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:375
+#: aleksis/apps/paweljong/forms.py:393
 msgid "Financial data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:382
+#: aleksis/apps/paweljong/forms.py:400
 msgid "Voucher code"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:383
+#: aleksis/apps/paweljong/forms.py:401
 msgid "If you have a voucher code, type it in here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:388
+#: aleksis/apps/paweljong/forms.py:406
 msgid "Payment method"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:390
+#: aleksis/apps/paweljong/forms.py:408
 msgid "Please choose a payment method. The actual payment will be made after the registration."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:415
+#: aleksis/apps/paweljong/forms.py:433
 msgid "Our association would like to offer all children and young people the opportunity to participate in our events. Sometimes, however, families cannot afford the full fee. We therefore have a budget from which we can promote participation after we have carefully examined the necessity and eligibility. We rely on donations for this budget. If you would like to donate a voluntary additional amount for this budget, please indicate this here."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:447
+#: aleksis/apps/paweljong/forms.py:465
 msgid "I confirm that the retraction of the registration is not possible anymore after {}"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:493 aleksis/apps/paweljong/forms.py:617
+#: aleksis/apps/paweljong/forms.py:511 aleksis/apps/paweljong/forms.py:636
 msgid "Account data"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:507 aleksis/apps/paweljong/forms.py:632
+#: aleksis/apps/paweljong/forms.py:525 aleksis/apps/paweljong/forms.py:651
 msgid "The username must only contain lower case letters and numbers, and must begin with a letter."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:552 aleksis/apps/paweljong/forms.py:576
-#: aleksis/apps/paweljong/models.py:309 aleksis/apps/paweljong/models.py:337
+#: aleksis/apps/paweljong/forms.py:570 aleksis/apps/paweljong/forms.py:594
+#: aleksis/apps/paweljong/models.py:311 aleksis/apps/paweljong/models.py:339
 #: aleksis/apps/paweljong/tables.py:46
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:8
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:38
@@ -402,19 +400,19 @@ msgstr ""
 msgid "Person"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:554 aleksis/apps/paweljong/forms.py:577
+#: aleksis/apps/paweljong/forms.py:572 aleksis/apps/paweljong/forms.py:595
 msgid "Please enter a username."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:570 aleksis/apps/paweljong/models.py:513
+#: aleksis/apps/paweljong/forms.py:588 aleksis/apps/paweljong/models.py:522
 msgid "Comment"
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:571
+#: aleksis/apps/paweljong/forms.py:589
 msgid "Please enter a comment describing the checkpoint (e.g. Dinner)."
 msgstr ""
 
-#: aleksis/apps/paweljong/forms.py:583
+#: aleksis/apps/paweljong/forms.py:601
 msgid "Submit geolocation"
 msgstr ""
 
@@ -544,7 +542,7 @@ msgstr ""
 
 #: aleksis/apps/paweljong/models.py:158
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:9
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:37
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:39
 msgid "Description"
 msgstr ""
 
@@ -558,54 +556,62 @@ msgstr ""
 
 #: aleksis/apps/paweljong/models.py:164
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:12
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:40
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:42
 msgid "Date of event"
 msgstr ""
 
 #: aleksis/apps/paweljong/models.py:165
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:13
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:41
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:43
 msgid "Registration deadline"
 msgstr ""
 
 #: aleksis/apps/paweljong/models.py:166
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:14
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:42
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:44
 msgid "Retraction deadline"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:169 aleksis/apps/paweljong/models.py:372
+#: aleksis/apps/paweljong/models.py:169 aleksis/apps/paweljong/models.py:376
 msgid "Cost in €"
 msgstr ""
 
 #: aleksis/apps/paweljong/models.py:170
+msgid "Minimum cost in €"
+msgstr ""
+
+#: aleksis/apps/paweljong/models.py:172
+msgid "Maximum cost in €"
+msgstr ""
+
+#: aleksis/apps/paweljong/models.py:174
 msgid "Maximum participants"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:171
+#: aleksis/apps/paweljong/models.py:175
 msgid "Information about the event"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:182
+#: aleksis/apps/paweljong/models.py:186
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:80
 msgid "Additional fields"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:201
+#: aleksis/apps/paweljong/models.py:204
 msgid "Contact information fields to be shown."
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:286
+#: aleksis/apps/paweljong/models.py:288
 msgid "Sent to persons"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:295 aleksis/apps/paweljong/models.py:296
+#: aleksis/apps/paweljong/models.py:297 aleksis/apps/paweljong/models.py:298
 #: aleksis/apps/paweljong/templates/paweljong/voucher/list.html:6
 #: aleksis/apps/paweljong/templates/paweljong/voucher/list.html:7
 msgid "Vouchers"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:302 aleksis/apps/paweljong/models.py:335
+#: aleksis/apps/paweljong/models.py:304 aleksis/apps/paweljong/models.py:337
 #: aleksis/apps/paweljong/tables.py:12 aleksis/apps/paweljong/tables.py:43
 #: aleksis/apps/paweljong/templates/paweljong/event/full.html:4
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:8
@@ -615,109 +621,109 @@ msgstr ""
 msgid "Event"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:318
+#: aleksis/apps/paweljong/models.py:320
 msgid "Used by"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:338
+#: aleksis/apps/paweljong/models.py:340
 msgid "Registration date"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:340
+#: aleksis/apps/paweljong/models.py:342
 msgid "Name of school"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:342
+#: aleksis/apps/paweljong/models.py:345
 msgid "Place of the school"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:344
+#: aleksis/apps/paweljong/models.py:348
 msgid "Comment / remarks"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:351
+#: aleksis/apps/paweljong/models.py:355
 msgid "Voucher"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:355
+#: aleksis/apps/paweljong/models.py:359
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:31
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:80
 msgid "Donation"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:358
+#: aleksis/apps/paweljong/models.py:362
 msgid "Accepted terms"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:363
+#: aleksis/apps/paweljong/models.py:367
 msgid "States"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:366
+#: aleksis/apps/paweljong/models.py:370
 msgid "Retracted"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:367
+#: aleksis/apps/paweljong/models.py:371
 msgid "Retracted at"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:369
+#: aleksis/apps/paweljong/models.py:373
 msgid "Checked in"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:370
+#: aleksis/apps/paweljong/models.py:374
 msgid "Checked in at"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:380 aleksis/apps/paweljong/views.py:1029
+#: aleksis/apps/paweljong/models.py:384 aleksis/apps/paweljong/views.py:1038
 msgid "Person is already checked in!"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:417
+#: aleksis/apps/paweljong/models.py:426
 msgid "Participation of {} in event {}"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:446
+#: aleksis/apps/paweljong/models.py:455
 msgid "Social Sponsoring / Extra Donation"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:457
+#: aleksis/apps/paweljong/models.py:466
 msgid "Voucher / Granted discount"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:487 aleksis/apps/paweljong/views.py:427
+#: aleksis/apps/paweljong/models.py:496 aleksis/apps/paweljong/views.py:429
 msgid "Event registration"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:488
+#: aleksis/apps/paweljong/models.py:497
 msgid "Event registrations"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:498
+#: aleksis/apps/paweljong/models.py:507
 msgid "Related event"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:502
+#: aleksis/apps/paweljong/models.py:511
 msgid "Checked person"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:508
+#: aleksis/apps/paweljong/models.py:517
 msgid "Checked by person"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:515
+#: aleksis/apps/paweljong/models.py:524
 msgid "Date and time of check"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:517
+#: aleksis/apps/paweljong/models.py:526
 msgid "Latitude of check"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:520
+#: aleksis/apps/paweljong/models.py:529
 msgid "Longitude of check"
 msgstr ""
 
-#: aleksis/apps/paweljong/models.py:528
+#: aleksis/apps/paweljong/models.py:536
 msgid "Can generate lists of participants of a group"
 msgstr ""
 
@@ -729,9 +735,122 @@ msgstr ""
 msgid "Mail recipient for event notifications"
 msgstr ""
 
+#: aleksis/apps/paweljong/preferences.py:32
+msgid "Name of client linked to invoices for events."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:43
+msgid "Name of invoice group used for events."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:53
+msgid "Participant help text for email step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:65
+msgid "Participant help text for account registration step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:77
+msgid "Participant help text for contact details step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:88
+msgid "Participant help text for guardians step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:100
+msgid "Participant help text for additional information step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:112
+msgid "Participant help text for financial step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:123
+msgid "Participant help text for consent step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:134
+msgid "Participant help text for confirmation step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:145
+msgid "Guardian help text for email step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:157
+msgid "Guardian help text for account registration step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:169
+msgid "Guardian help text for contact details step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:180
+msgid "Guardian help text for guardians step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:192
+msgid "Guardian help text for additional information step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:204
+msgid "Guardian help text for financial step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:215
+msgid "Guardian help text for consent step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/preferences.py:226
+msgid "Guardian help text for confirmation step in event registration wizard."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:61
+msgid "Retraction consent is required"
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:71
+msgid "Mail domain does not exist."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:78
+msgid "Mail address already in use."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:92
+msgid "A user with this username or e-mail already exists."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:109
+#: aleksis/apps/paweljong/schema/event_registration.py:149
+#, python-format
+msgid "A person using the e-mail address %s already exists."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:191
+msgid "The field 'Amount paid by you' is required."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:214
+msgid "The field 'Payment method' is required."
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:239
+#: aleksis/apps/paweljong/views.py:718
+msgid "You registered for an event"
+msgstr ""
+
+#: aleksis/apps/paweljong/schema/event_registration.py:240
+#: aleksis/apps/paweljong/views.py:719
+#, python-format
+msgid "You registered for the event %s"
+msgstr ""
+
 #: aleksis/apps/paweljong/tables.py:14
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:16
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:44
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:18
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:48
 msgid "Max. participants"
 msgstr ""
 
@@ -846,8 +965,8 @@ msgid "of"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/detail.html:62
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:17
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:45
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:19
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:49
 msgid "Owners"
 msgstr ""
 
@@ -876,8 +995,11 @@ msgstr ""
 msgid "Edit event"
 msgstr ""
 
+#: aleksis/apps/paweljong/templates/paweljong/event/full.html:37
+msgid "Self-determined"
+msgstr ""
+
 #: aleksis/apps/paweljong/templates/paweljong/event/full.html:58
-#: aleksis/apps/paweljong/templates/paweljong/event/full.html:60
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:109
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:119
 #: aleksis/apps/paweljong/templates/paweljong/register_start.html:57
@@ -885,7 +1007,7 @@ msgstr ""
 msgid "Register now"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event/full.html:62
+#: aleksis/apps/paweljong/templates/paweljong/event/full.html:60
 #: aleksis/apps/paweljong/templates/paweljong/event/register_start.html:85
 msgid "Not available"
 msgstr ""
@@ -896,7 +1018,7 @@ msgid "Events"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/paweljong/event/list.html:10
-#: aleksis/apps/paweljong/views.py:789
+#: aleksis/apps/paweljong/views.py:798
 msgid "Upcoming events"
 msgstr ""
 
@@ -1090,24 +1212,24 @@ msgstr ""
 msgid "No checked in yet."
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:241
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:242
 msgid "Invoice details"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:247
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:248
 msgid "Billing information"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:279
-#: aleksis/apps/paweljong/views.py:456
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:280
+#: aleksis/apps/paweljong/views.py:458
 msgid "Payment"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:310
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:311
 msgid "Mark payed"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:323
+#: aleksis/apps/paweljong/templates/paweljong/event_registration/full.html:325
 msgid "Guardians / Parents "
 msgstr ""
 
@@ -1310,8 +1432,8 @@ msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:30
 #: aleksis/apps/paweljong/templates/templated_email/account_registered.email:61
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:26
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:61
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:28
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:65
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:49
 #: aleksis/apps/paweljong/templates/templated_email/event_registered.email:103
 msgid "Your AlekSIS team"
@@ -1322,23 +1444,33 @@ msgid "New event"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:6
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:31
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:33
 #, python-format
 msgid " An event was created: %(new_event)s"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:10
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:38
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:40
 msgid "Published"
 msgstr ""
 
 #: aleksis/apps/paweljong/templates/templated_email/event_created.email:15
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:43
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:45
 msgid "Cost"
 msgstr ""
 
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:22
-#: aleksis/apps/paweljong/templates/templated_email/event_created.email:55
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:16
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:46
+msgid "Minimum cost"
+msgstr ""
+
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:17
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:47
+msgid "Maximum cost"
+msgstr ""
+
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:24
+#: aleksis/apps/paweljong/templates/templated_email/event_created.email:59
 #, python-format
 msgid ""
 "\n"
@@ -1386,123 +1518,114 @@ msgstr ""
 msgid "The registration has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:235
+#: aleksis/apps/paweljong/views.py:236
 msgid "The registration has been deleted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:247
+#: aleksis/apps/paweljong/views.py:248
 msgid "The voucher has been created."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:259
+#: aleksis/apps/paweljong/views.py:260
 msgid "The voucher has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:269
+#: aleksis/apps/paweljong/views.py:270
 msgid "The voucher has been deleted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:418
+#: aleksis/apps/paweljong/views.py:420
 msgid "Create e-mail address"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:420
+#: aleksis/apps/paweljong/views.py:422
 msgid "All participants need a personal e-mail address, which they check and read temselves. We offer the possibility to register an e-mail address on our secure servers, made for young users. For information about receiving mails, see: <a href='https://wiki.teckids.org/de/Dienste/E-Mail'>https://wiki.teckids.org/de/Dienste/E-Mail</a>."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:429
+#: aleksis/apps/paweljong/views.py:431
 msgid "First, please enter some basic information about yourself, and check whether all information is correct."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:433
+#: aleksis/apps/paweljong/views.py:435
 msgid "Contact information"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:435
+#: aleksis/apps/paweljong/views.py:437
 msgid "Tell us how we can contact you. You will receive information about the event by e-mail. Please use your personal e-mail address where you will read mails yourself, not an address of your parents. We will always send all important information to your parents as well, and you will enter their e-mail address on the next page."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:442
+#: aleksis/apps/paweljong/views.py:444
 msgid "Legal guardians / parents"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:444
+#: aleksis/apps/paweljong/views.py:446
 msgid "Tell us how we can reach your parents or other legal guardians. This should be the person who was present when you registered for the event (which is now). If you want to add another parent, please tell us later as a comment."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:450
+#: aleksis/apps/paweljong/views.py:452
 msgid "Additional registration information"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:452
+#: aleksis/apps/paweljong/views.py:454
 msgid "Please answer the following questions as precisely as you can, so we can make sure your event attendance will be organised as wel las possible."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:458
+#: aleksis/apps/paweljong/views.py:460
 msgid "Please decide with your parents how you want to pay. In this step, you only select a payment method. The real payment will be done in a separate step, after the registration is complete."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:463
+#: aleksis/apps/paweljong/views.py:465
 msgid "Consent"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:465
+#: aleksis/apps/paweljong/views.py:467
 msgid "Lastly, please read the terms and conditions carefully, together with your parents. After that, you will need to confirm that you agree with everything yourself, and that your parents also agree."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:676
+#: aleksis/apps/paweljong/views.py:685
 msgid "You entered an invalid voucher code!"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:702
+#: aleksis/apps/paweljong/views.py:711
 msgid "You have successfully registered for the event. Please give us up to two days to process your registration. You will then receive an email from us."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:709
-msgid "You registered for an event"
-msgstr ""
-
-#: aleksis/apps/paweljong/views.py:710
-#, python-format
-msgid "You registered for the event %s"
-msgstr ""
-
-#: aleksis/apps/paweljong/views.py:770 aleksis/apps/paweljong/views.py:918
+#: aleksis/apps/paweljong/views.py:779 aleksis/apps/paweljong/views.py:927
 msgid "The term has been created."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:782 aleksis/apps/paweljong/views.py:930
+#: aleksis/apps/paweljong/views.py:791 aleksis/apps/paweljong/views.py:939
 msgid "The term has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:798
+#: aleksis/apps/paweljong/views.py:807
 msgid "Announcement feed of all upcoming events"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:838
+#: aleksis/apps/paweljong/views.py:847
 msgid "The info mailing has been created."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:850
+#: aleksis/apps/paweljong/views.py:859
 msgid "The info mailing has been saved."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:860
+#: aleksis/apps/paweljong/views.py:869
 msgid "The info mailing has been deleted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:943
+#: aleksis/apps/paweljong/views.py:952
 msgid "Registration successfully retracted."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:1000
+#: aleksis/apps/paweljong/views.py:1009
 msgid "Person does not exist!"
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:1027
+#: aleksis/apps/paweljong/views.py:1036
 msgid "Successfully checked in."
 msgstr ""
 
-#: aleksis/apps/paweljong/views.py:1047
+#: aleksis/apps/paweljong/views.py:1056
 msgid "Successfully marked as payed!"
 msgstr ""
diff --git a/aleksis/apps/paweljong/migrations/0031_event_max_cost_event_min_cost.py b/aleksis/apps/paweljong/migrations/0031_event_max_cost_event_min_cost.py
new file mode 100644
index 0000000000000000000000000000000000000000..c52e0616aae2fb1b4f9db74a443e24d2af004b8d
--- /dev/null
+++ b/aleksis/apps/paweljong/migrations/0031_event_max_cost_event_min_cost.py
@@ -0,0 +1,23 @@
+# Generated by Django 5.1.4 on 2025-02-10 14:41
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('paweljong', '0030_event_contact_information_visible_fields'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='event',
+            name='max_cost',
+            field=models.IntegerField(blank=True, default=None, null=True, verbose_name='Maximum cost in €'),
+        ),
+        migrations.AddField(
+            model_name='event',
+            name='min_cost',
+            field=models.IntegerField(default=0, verbose_name='Minimum cost in €'),
+        ),
+    ]
diff --git a/aleksis/apps/paweljong/models.py b/aleksis/apps/paweljong/models.py
index a8978132797f4e79b6348a8f7bda8d4e0517d224..a9a8a5f94e8148fc8a218feca5b248b24fa2d9e6 100644
--- a/aleksis/apps/paweljong/models.py
+++ b/aleksis/apps/paweljong/models.py
@@ -167,6 +167,10 @@ class Event(ExtensibleModel):
 
     # Other details
     cost = models.IntegerField(verbose_name=_("Cost in €"))
+    min_cost = models.IntegerField(verbose_name=_("Minimum cost in €"), default=0)
+    max_cost = models.IntegerField(
+        verbose_name=_("Maximum cost in €"), default=None, null=True, blank=True
+    )
     max_participants = models.PositiveSmallIntegerField(verbose_name=_("Maximum participants"))
     information = RichTextField(verbose_name=_("Information about the event"))
     terms = models.ManyToManyField(Terms, verbose_name=_("Terms"), related_name="event", blank=True)
@@ -197,9 +201,7 @@ class Event(ExtensibleModel):
                 ("school_details", _("School details")),
             ],
         ),
-        verbose_name=_(
-            "Contact information fields to be shown."
-        ),
+        verbose_name=_("Contact information fields to be shown."),
         blank=True,
         default=[],
     )
@@ -339,7 +341,9 @@ class EventRegistration(ExtensibleModel):
 
     school = models.CharField(verbose_name=_("Name of school"), max_length=255, blank=True)
     school_class = models.CharField(verbose_name=_("School class"), max_length=255, blank=True)
-    school_place = models.CharField(verbose_name=_("Place of the school"), max_length=255, blank=True)
+    school_place = models.CharField(
+        verbose_name=_("Place of the school"), max_length=255, blank=True
+    )
 
     comment = models.TextField(verbose_name=_("Comment / remarks"), blank=True, default="")
     medical_information = models.TextField(
@@ -395,9 +399,14 @@ class EventRegistration(ExtensibleModel):
 
     def get_invoice(self):
         # FIXME Maybe do not hard-code this
-        client, __ = Client.objects.get_or_create(name="Teckids e.V.")
+        client, __ = Client.objects.get_or_create(
+            name=get_site_preferences()["paweljong__event_invoice_client_name"],
+            defaults={
+                "pledge_enabled": True,
+            },
+        )
         group, __ = InvoiceGroup.objects.get_or_create(
-            name="Hack'n'Fun-Veranstaltungen",
+            name=get_site_preferences()["paweljong__event_invoice_group_name"],
             client=client,
             defaults={
                 "template_name": "paweljong/invoice_pdf.html",
@@ -524,6 +533,4 @@ class Checkpoint(ExtensibleModel):
 class PaweljongGlobalPermissions(GlobalPermissionModel):
     class Meta:
         managed = False
-        permissions = (
-            ("generate_lists", _("Can generate lists of participants of a group")),
-        )
+        permissions = (("generate_lists", _("Can generate lists of participants of a group")),)
diff --git a/aleksis/apps/paweljong/preferences.py b/aleksis/apps/paweljong/preferences.py
index a3a9a2c205fcf17f44c10da0902dc93e9b198a8d..bf0e572dbeace273af5c12fa1cf62d04a629d08b 100644
--- a/aleksis/apps/paweljong/preferences.py
+++ b/aleksis/apps/paweljong/preferences.py
@@ -3,7 +3,7 @@ from django.forms import EmailField
 from django.utils.translation import gettext_lazy as _
 
 from dynamic_preferences.preferences import Section
-from dynamic_preferences.types import StringPreference
+from dynamic_preferences.types import LongStringPreference, StringPreference
 
 from aleksis.core.registries import site_preferences_registry
 
@@ -20,3 +20,209 @@ class EventNotificationRecipient(StringPreference):
     verbose_name = _("Mail recipient for event notifications")
     field_class = EmailField
     required = True
+
+
+@site_preferences_registry.register
+class EventInvoiceClientName(StringPreference):
+    """Name to use for the client linked to invoices generated for events."""
+
+    section = paweljong
+    name = "event_invoice_client_name"
+    default = "Teckids e.V."
+    verbose_name = _("Name of client linked to invoices for events.")
+    required = True
+
+
+@site_preferences_registry.register
+class EventInvoiceGroupName(StringPreference):
+    """Name to use for the invoice group used for events."""
+
+    section = paweljong
+    name = "event_invoice_group_name"
+    default = "Hack'n'Fun-Veranstaltungen"
+    verbose_name = _("Name of invoice group used for events.")
+    required = True
+
+
+@site_preferences_registry.register
+class EventRegistrationEmailParticipantHelpText(LongStringPreference):
+    """Help text to be displayed to participants during the email step of the event registration wizard."""
+
+    section = paweljong
+    name = "event_registration_email_participant_help_text"
+    verbose_name = _("Participant help text for email step in event registration wizard.")
+    default = ""
+    required = False
+
+
+@site_preferences_registry.register
+class EventRegistrationRegisterParticipantHelpText(LongStringPreference):
+    """Help text to be displayed to participants during the account registration step of the event registration wizard."""
+
+    section = paweljong
+    name = "event_registration_register_participant_help_text"
+    verbose_name = _(
+        "Participant help text for account registration step in event registration wizard."
+    )
+    default = ""
+    required = False
+
+
+@site_preferences_registry.register
+class EventRegistrationContactDetailsParticipantHelpText(LongStringPreference):
+    """Help text to be displayed to participants during the contact details step of the event registration wizard."""
+
+    section = paweljong
+    name = "event_registration_contact_details_participant_help_text"
+    verbose_name = _("Participant help text for contact details step in event registration wizard.")
+    default = ""
+    required = False
+
+
+@site_preferences_registry.register
+class EventRegistrationGuardiansParticipantHelpText(LongStringPreference):
+    """Help text to be displayed to participants during the guardians step of the event registration wizard."""
+
+    section = paweljong
+    name = "event_registration_guardians_participant_help_text"
+    verbose_name = _("Participant help text for guardians step in event registration wizard.")
+    default = ""
+    required = False
+
+
+@site_preferences_registry.register
+class EventRegistrationAdditionalParticipantHelpText(LongStringPreference):
+    """Help text to be displayed to participants during the additional information step of the event registration wizard."""
+
+    section = paweljong
+    name = "event_registration_additional_participant_help_text"
+    verbose_name = _(
+        "Participant help text for additional information step in event registration wizard."
+    )
+    default = ""
+    required = False
+
+
+@site_preferences_registry.register
+class EventRegistrationFinancialParticipantHelpText(LongStringPreference):
+    """Help text to be displayed to participants during the financial step of the event registration wizard."""
+
+    section = paweljong
+    name = "event_registration_financial_participant_help_text"
+    verbose_name = _("Participant help text for financial step in event registration wizard.")
+    default = ""
+    required = False
+
+
+@site_preferences_registry.register
+class EventRegistrationConsentParticipantHelpText(LongStringPreference):
+    """Help text to be displayed to participants during the consent step of the event registration wizard."""
+
+    section = paweljong
+    name = "event_registration_consent_participant_help_text"
+    verbose_name = _("Participant help text for consent step in event registration wizard.")
+    default = ""
+    required = False
+
+
+@site_preferences_registry.register
+class EventRegistrationConfirmParticipantHelpText(LongStringPreference):
+    """Help text to be displayed to participants during the confirmation step of the event registration wizard."""
+
+    section = paweljong
+    name = "event_registration_confirm_participant_help_text"
+    verbose_name = _("Participant help text for confirmation step in event registration wizard.")
+    default = ""
+    required = False
+
+
+@site_preferences_registry.register
+class EventRegistrationEmailGuardianHelpText(LongStringPreference):
+    """Help text to be displayed to guardians during the email step of the event registration wizard."""
+
+    section = paweljong
+    name = "event_registration_email_guardian_help_text"
+    verbose_name = _("Guardian help text for email step in event registration wizard.")
+    default = ""
+    required = False
+
+
+@site_preferences_registry.register
+class EventRegistrationRegisterGuardianHelpText(LongStringPreference):
+    """Help text to be displayed to guardians during the account registration step of the event registration wizard."""
+
+    section = paweljong
+    name = "event_registration_register_guardian_help_text"
+    verbose_name = _(
+        "Guardian help text for account registration step in event registration wizard."
+    )
+    default = ""
+    required = False
+
+
+@site_preferences_registry.register
+class EventRegistrationContactDetailsGuardianHelpText(LongStringPreference):
+    """Help text to be displayed to guardians during the contact details step of the event registration wizard."""
+
+    section = paweljong
+    name = "event_registration_contact_details_guardian_help_text"
+    verbose_name = _("Guardian help text for contact details step in event registration wizard.")
+    default = ""
+    required = False
+
+
+@site_preferences_registry.register
+class EventRegistrationGuardiansGuardianHelpText(LongStringPreference):
+    """Help text to be displayed to guardians during the guardians step of the event registration wizard."""
+
+    section = paweljong
+    name = "event_registration_guardians_guardian_help_text"
+    verbose_name = _("Guardian help text for guardians step in event registration wizard.")
+    default = ""
+    required = False
+
+
+@site_preferences_registry.register
+class EventRegistrationAdditionalGuardianHelpText(LongStringPreference):
+    """Help text to be displayed to guardians during the additional information step of the event registration wizard."""
+
+    section = paweljong
+    name = "event_registration_additional_guardian_help_text"
+    verbose_name = _(
+        "Guardian help text for additional information step in event registration wizard."
+    )
+    default = ""
+    required = False
+
+
+@site_preferences_registry.register
+class EventRegistrationFinancialGuardianHelpText(LongStringPreference):
+    """Help text to be displayed to guardians during the financial step of the event registration wizard."""
+
+    section = paweljong
+    name = "event_registration_financial_guardian_help_text"
+    verbose_name = _("Guardian help text for financial step in event registration wizard.")
+    default = ""
+    required = False
+
+
+@site_preferences_registry.register
+class EventRegistrationConsentGuardianHelpText(LongStringPreference):
+    """Help text to be displayed to guardians during the consent step of the event registration wizard."""
+
+    section = paweljong
+    name = "event_registration_consent_guardian_help_text"
+    verbose_name = _("Guardian help text for consent step in event registration wizard.")
+    default = ""
+    required = False
+
+
+@site_preferences_registry.register
+class EventRegistrationConfirmGuardianHelpText(LongStringPreference):
+    """Help text to be displayed to guardians during the confirmation step of the event registration wizard."""
+
+    section = paweljong
+    name = "event_registration_confirm_guardian_help_text"
+    verbose_name = _("Guardian help text for confirmation step in event registration wizard.")
+    default = ""
+    required = False
diff --git a/aleksis/apps/paweljong/rules.py b/aleksis/apps/paweljong/rules.py
index 79fd5c13b063f8f35bea08a85a473eb2759380f5..08a3ef9dfdc8142168a6932fab36e5b905a87ae7 100644
--- a/aleksis/apps/paweljong/rules.py
+++ b/aleksis/apps/paweljong/rules.py
@@ -239,9 +239,7 @@ create_registration_states_predicate = has_person & (
 rules.add_perm("paweljong.create_registration_states_rule", create_registration_states_predicate)
 
 # Generate lists
-generate_lists_predicate = has_person & (
-    has_global_perm("paweljong.generate_lists")
-)
+generate_lists_predicate = has_person & (has_global_perm("paweljong.generate_lists"))
 rules.add_perm("paweljong.generate_lists_rule", generate_lists_predicate)
 
 # View menu
@@ -271,14 +269,18 @@ create_event_additional_field_predicate = has_person & (
     has_global_perm("paweljong.add_eventadditionalfield")
     | has_object_perm("paweljong.add_eventadditionalfield")
 )
-rules.add_perm("paweljong.create_event_additional_field_rule", create_event_additional_field_predicate)
+rules.add_perm(
+    "paweljong.create_event_additional_field_rule", create_event_additional_field_predicate
+)
 
 # Delete event additional field
 delete_event_additional_field_predicate = has_person & (
     has_global_perm("paweljong.delete_eventadditionalfield")
     | has_object_perm("paweljong.delete_eventadditionalfield")
 )
-rules.add_perm("paweljong.delete_event_additional_field_rule", delete_event_additional_field_predicate)
+rules.add_perm(
+    "paweljong.delete_event_additional_field_rule", delete_event_additional_field_predicate
+)
 
 # Edit event additional field
 edit_event_additional_fieldpredicate = has_person & (
diff --git a/aleksis/apps/paweljong/schema/__init__.py b/aleksis/apps/paweljong/schema/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..763530b16535174d64de1144a5f6117ee793c9d8
--- /dev/null
+++ b/aleksis/apps/paweljong/schema/__init__.py
@@ -0,0 +1,79 @@
+import graphene
+
+from aleksis.apps.tezor.models.base import Client
+from aleksis.apps.tezor.models.invoice import InvoiceGroup
+from aleksis.apps.tezor.schema.client import PaymentVariantChoiceType
+from aleksis.core.schema.base import FilterOrderList
+from aleksis.core.util.core_helpers import get_site_preferences
+
+from ..models import Event
+from .checkpoint import CheckpointCheckInMutation
+from .event import EventType
+from .event_additional_field import (
+    EventAdditionalFieldBatchCreateMutation,
+    EventAdditionalFieldBatchDeleteMutation,
+    EventAdditionalFieldBatchPatchMutation,
+    EventAdditionalFieldType,
+)
+from .event_registration import SendEventRegistrationMutation
+from .site_preferences import PaweljongSitePreferencesType
+from .terms import TermsType
+
+
+class Query(graphene.ObjectType):
+    event_additional_fields = FilterOrderList(EventAdditionalFieldType)
+
+    event_by_id = graphene.Field(EventType, id=graphene.ID())
+    event_by_slug = graphene.Field(EventType, slug=graphene.String())
+
+    terms = FilterOrderList(TermsType)
+
+    paweljong_payment_choices = graphene.List(PaymentVariantChoiceType)
+
+    paweljong_site_preferences = graphene.Field(PaweljongSitePreferencesType)
+
+    @staticmethod
+    def resolve_event_by_id(root, info, id):
+        event = Event.objects.get(pk=id)
+        # if not info.context.user.has_perm("paweljong.view_person_rule", event):
+        #     return None
+        return event
+
+    @staticmethod
+    def resolve_event_by_slug(root, info, slug):
+        event = Event.objects.get(slug=slug)
+        # if not info.context.user.has_perm("paweljong.view_person_rule", event):
+        #     return None
+        return event
+
+    @staticmethod
+    def resolve_paweljong_payment_choices(root, info):
+        client, __ = Client.objects.get_or_create(
+            name=get_site_preferences()["paweljong__event_invoice_client_name"],
+            defaults={
+                "pledge_enabled": True,
+            },
+        )
+        group, __ = InvoiceGroup.objects.get_or_create(
+            name=get_site_preferences()["paweljong__event_invoice_group_name"],
+            client=client,
+            defaults={
+                "template_name": "paweljong/invoice_pdf.html",
+            },
+        )
+
+        return group.get_variant_choices()
+
+    @staticmethod
+    def resolve_paweljong_site_preferences(root, info, **kwargs):
+        return get_site_preferences()
+
+
+class Mutation(graphene.ObjectType):
+    checkpoint_check_in = CheckpointCheckInMutation.Field()
+
+    create_event_additional_fields = EventAdditionalFieldBatchCreateMutation.Field()
+    delete_event_additional_fields = EventAdditionalFieldBatchDeleteMutation.Field()
+    update_event_additional_fields = EventAdditionalFieldBatchPatchMutation.Field()
+
+    send_event_registration = SendEventRegistrationMutation.Field()
diff --git a/aleksis/apps/paweljong/schema.py b/aleksis/apps/paweljong/schema/checkpoint.py
similarity index 50%
rename from aleksis/apps/paweljong/schema.py
rename to aleksis/apps/paweljong/schema/checkpoint.py
index 7db42cc294f24a114e055dba9333b26976cd1eee..7b4c091911cd986a092f60ff512f27f298fcccaa 100644
--- a/aleksis/apps/paweljong/schema.py
+++ b/aleksis/apps/paweljong/schema/checkpoint.py
@@ -3,24 +3,12 @@ from django.utils import timezone
 
 import graphene
 from graphene_django import DjangoObjectType
-from graphql import GraphQLError
 
 from aleksis.core.models import Person
-from aleksis.core.schema.base import (
-    BaseBatchCreateMutation,
-    BaseBatchDeleteMutation,
-    BaseBatchPatchMutation,
-    FilterOrderList,
-    PermissionsTypeMixin,
-)
+from aleksis.core.schema.base import PermissionsTypeMixin
 from aleksis.core.util.core_helpers import has_person
 
-from .models import Checkpoint, Event, EventAdditionalField
-
-
-class EventType(PermissionsTypeMixin, DjangoObjectType):
-    class Meta:
-        model = Event
+from ..models import Checkpoint, Event
 
 
 class CheckpointType(PermissionsTypeMixin, DjangoObjectType):
@@ -28,11 +16,6 @@ class CheckpointType(PermissionsTypeMixin, DjangoObjectType):
         model = Checkpoint
 
 
-class EventAdditionalFieldType(PermissionsTypeMixin, DjangoObjectType):
-    class Meta:
-        model = EventAdditionalField
-
-
 class CheckpointCheckInMutation(graphene.Mutation):
     class Arguments:
         event_slug = graphene.String(required=True)
@@ -84,46 +67,3 @@ class CheckpointCheckInMutation(graphene.Mutation):
         checkpoint.save()
 
         return CheckpointCheckInMutation(checkpoint=checkpoint)
-
-
-class EventAdditionalFieldBatchCreateMutation(BaseBatchCreateMutation):
-    class Meta:
-        model = EventAdditionalField
-        permissions = ("paweljong.create_event_additional_field_rule",)
-        only_fields = (
-            "title",
-            "field_type",
-            "required",
-            "help_text",
-        )
-
-
-class EventAdditionalFieldBatchDeleteMutation(BaseBatchDeleteMutation):
-    class Meta:
-        model = EventAdditionalField
-        permissions = ("paweljong.delete_event_additional_field_rule",)
-
-
-class EventAdditionalFieldBatchPatchMutation(BaseBatchPatchMutation):
-    class Meta:
-        model = EventAdditionalField
-        permissions = ("paweljong.edit_event_additional_field_rule",)
-        only_fields = (
-            "id",
-            "title",
-            "field_type",
-            "required",
-            "help_text",
-        )
-
-
-class Query(graphene.ObjectType):
-    event_additional_fields = FilterOrderList(EventAdditionalFieldType)
-
-
-class Mutation(graphene.ObjectType):
-    checkpoint_check_in = CheckpointCheckInMutation.Field()
-
-    create_event_additional_fields = EventAdditionalFieldBatchCreateMutation.Field()
-    delete_event_additional_fields = EventAdditionalFieldBatchDeleteMutation.Field()
-    update_event_additional_fields = EventAdditionalFieldBatchPatchMutation.Field()
diff --git a/aleksis/apps/paweljong/schema/event.py b/aleksis/apps/paweljong/schema/event.py
new file mode 100644
index 0000000000000000000000000000000000000000..539969c098b44d87295caa4091ee052eb2b07212
--- /dev/null
+++ b/aleksis/apps/paweljong/schema/event.py
@@ -0,0 +1,10 @@
+from graphene_django import DjangoObjectType
+
+from aleksis.core.schema.base import PermissionsTypeMixin
+
+from ..models import Event
+
+
+class EventType(PermissionsTypeMixin, DjangoObjectType):
+    class Meta:
+        model = Event
diff --git a/aleksis/apps/paweljong/schema/event_additional_field.py b/aleksis/apps/paweljong/schema/event_additional_field.py
new file mode 100644
index 0000000000000000000000000000000000000000..a01142807a10c3c48fe3ef790875a5edeb23fe5d
--- /dev/null
+++ b/aleksis/apps/paweljong/schema/event_additional_field.py
@@ -0,0 +1,46 @@
+from graphene_django import DjangoObjectType
+
+from aleksis.core.schema.base import (
+    BaseBatchCreateMutation,
+    BaseBatchDeleteMutation,
+    BaseBatchPatchMutation,
+    PermissionsTypeMixin,
+)
+
+from ..models import EventAdditionalField
+
+
+class EventAdditionalFieldType(PermissionsTypeMixin, DjangoObjectType):
+    class Meta:
+        model = EventAdditionalField
+
+
+class EventAdditionalFieldBatchCreateMutation(BaseBatchCreateMutation):
+    class Meta:
+        model = EventAdditionalField
+        permissions = ("paweljong.create_event_additional_field_rule",)
+        only_fields = (
+            "title",
+            "field_type",
+            "required",
+            "help_text",
+        )
+
+
+class EventAdditionalFieldBatchDeleteMutation(BaseBatchDeleteMutation):
+    class Meta:
+        model = EventAdditionalField
+        permissions = ("paweljong.delete_event_additional_field_rule",)
+
+
+class EventAdditionalFieldBatchPatchMutation(BaseBatchPatchMutation):
+    class Meta:
+        model = EventAdditionalField
+        permissions = ("paweljong.edit_event_additional_field_rule",)
+        only_fields = (
+            "id",
+            "title",
+            "field_type",
+            "required",
+            "help_text",
+        )
diff --git a/aleksis/apps/paweljong/schema/event_registration.py b/aleksis/apps/paweljong/schema/event_registration.py
new file mode 100644
index 0000000000000000000000000000000000000000..ef12660a4f800d980b2aad9efe63dfd14e3f7f4b
--- /dev/null
+++ b/aleksis/apps/paweljong/schema/event_registration.py
@@ -0,0 +1,245 @@
+from django.contrib.auth.models import User
+from django.core.exceptions import ValidationError
+from django.db import IntegrityError, transaction
+from django.utils.text import slugify
+from django.utils.translation import gettext as _
+
+import graphene
+from graphene_django import DjangoObjectType
+
+from aleksis.apps.postbuero.models import MailAddress, MailDomain
+from aleksis.apps.postbuero.schema import MailAddressInputType
+from aleksis.core.models import Activity, Person
+from aleksis.core.schema.base import PermissionsTypeMixin
+from aleksis.core.schema.person import PersonInputType
+from aleksis.core.schema.user import UserInputType
+
+from ..models import Event, EventRegistration, Terms, Voucher
+
+
+class EventRegistrationType(PermissionsTypeMixin, DjangoObjectType):
+    class Meta:
+        model = EventRegistration
+
+
+class PaymentInputType(graphene.InputObjectType):
+    payment_method = graphene.String(required=True)
+    voucher_code = graphene.String(required=False)
+    amount = graphene.Int(
+        required=False
+    )  # FIXME: Fix frontend to allow 0, then make field required again
+
+
+class EventRegistrationInputType(graphene.InputObjectType):
+    email = graphene.Field(MailAddressInputType, required=False)
+    person = graphene.Field(PersonInputType, required=False)
+    user = graphene.Field(UserInputType, required=False)
+    school = graphene.String(required=False)
+    school_place = graphene.String(required=False)
+    school_class = graphene.String(required=False)
+    payment = graphene.Field(PaymentInputType, required=False)
+    medical_information = graphene.String(required=False)
+    comment = graphene.String(required=False)
+    additional_fields = graphene.JSONString(required=False)
+    terms = graphene.JSONString(required=False)
+    retraction_consent = graphene.Boolean(required=True)
+
+
+class SendEventRegistrationMutation(graphene.Mutation):
+    class Arguments:
+        event = graphene.ID(required=True)
+        event_registration = EventRegistrationInputType(required=True)
+
+    ok = graphene.Boolean()
+    do_payment_token = graphene.String()
+
+    @transaction.atomic
+    def mutate(
+        self, info, event: graphene.ID, event_registration: EventRegistrationInputType, **kwargs
+    ):
+        if not event_registration["retraction_consent"]:
+            raise ValidationError(_("Retraction consent is required"))
+
+        event = Event.objects.get(pk=event)
+
+        email = None
+
+        if event_registration["email"] is not None:
+            try:
+                domain = MailDomain.objects.get(pk=event_registration["email"]["domain"])
+            except IntegrityError:
+                raise ValidationError(_("Mail domain does not exist."))
+            try:
+                _mail_address = MailAddress.objects.create(
+                    local_part=event_registration["email"]["local_part"],
+                    domain=domain,
+                )
+            except IntegrityError:
+                raise ValidationError(_("Mail address already in use."))
+
+            email = str(_mail_address)
+        elif event_registration["user"] is not None:
+            email = event_registration["user"]["email"]
+
+        # Create user
+        if event_registration["user"] is not None:
+            try:
+                user = User.objects.create(
+                    username=event_registration["user"]["username"],
+                    email=event_registration["user"]["email"],
+                )
+            except IntegrityError:
+                raise ValidationError(_("A user with this username or e-mail already exists."))
+
+            user.set_password(event_registration["user"]["password"])
+            user.save()
+        else:
+            user = info.context.user
+
+        try:
+            person, created = Person.objects.get_or_create(
+                user=user,
+                defaults={
+                    "email": email,
+                    "first_name": event_registration["person"]["first_name"],
+                    "last_name": event_registration["person"]["last_name"],
+                },
+            )
+        except IntegrityError:
+            raise ValidationError(_("A person using the e-mail address %s already exists.") % email)
+
+        # Store contact information in database
+        for field_name in ["date_of_birth", "sex", "address", "mobile_number"]:
+            if (
+                event_registration["person"] is not None
+                and event_registration["person"][field_name] is not None
+                and event_registration["person"][field_name] != ""
+            ):
+                if field_name == "address":
+                    for addr_field in ["street", "housenumber", "postal_code", "place"]:
+                        setattr(
+                            person, addr_field, event_registration["person"]["address"][addr_field]
+                        )
+                else:
+                    setattr(person, field_name, event_registration["person"][field_name])
+        person.save()
+
+        if event_registration["person"] is not None:
+            for guardian_data in event_registration["person"]["guardians"]:
+                if "id" in guardian_data:
+                    guardian = Person.objects.get(pk=guardian_data["id"])
+                    guardian.first_name = guardian_data["first_name"]
+                    guardian.last_name = guardian_data["last_name"]
+                    guardian.email = guardian_data["email"]
+                    guardian.mobile_number = guardian_data["mobile_number"]
+
+                    guardian.save()
+                else:
+                    try:
+                        guardian, created = Person.objects.get_or_create(
+                            defaults={
+                                "mobile_number": guardian_data["mobile_number"],
+                            },
+                            first_name=guardian_data["first_name"],
+                            last_name=guardian_data["last_name"],
+                            email=guardian_data["email"],
+                        )
+                    except IntegrityError:
+                        raise ValidationError(
+                            _("A person using the e-mail address %s already exists.")
+                            % guardian_data["email"]
+                        )
+
+                    person.guardians.add(guardian)
+            person.save()
+
+        if event_registration["email"] is not None:
+            _mail_address.person = person
+            _mail_address.save()
+
+        school_details = {}
+        for field_name in ["school", "school_class", "school_place"]:
+            if event_registration[field_name] is not None:
+                school_details[field_name] = event_registration[field_name]
+
+        registration = EventRegistration.objects.create(
+            managed_by_app_label="",
+            event=event,
+            person=person,
+            medical_information=event_registration["medical_information"],
+            donation=0,
+            **school_details,
+        )
+        for field in event.additional_fields.all():
+            if hasattr(event_registration["additional_fields"], str(field.id)):
+                registration.extended_data[
+                    slugify(field.title).replace("-", "_")
+                ] = event_registration["additional_fields"][str(field.id)]
+
+        for field in event_registration["terms"]:
+            pk = field
+            term = Terms.objects.get(id=pk)
+            registration.accepted_terms.add(term)
+
+        registration.cost = event.cost
+
+        invoice_token = None
+
+        if event.max_cost is None or event.max_cost > 0:
+            amount = event_registration["payment"]["amount"]
+            if amount is None:
+                raise ValidationError(_("The field 'Amount paid by you' is required."))
+
+            if amount < event.cost:
+                voucher_amount = event.cost - amount
+                discount = voucher_amount / event.cost * 100
+                voucher = Voucher.objects.create(
+                    person=person,
+                    event=event,
+                    used=True,
+                    discount=discount,
+                )
+                registration.voucher = voucher
+            elif amount > event.cost:
+                registration.donation = amount - event.cost
+
+            # TODO Implement existing voucher handling
+
+            invoice = registration.get_invoice()
+            if amount == 0:
+                invoice.variant = "pledge"
+            else:
+                invoice.variant = event_registration["payment"]["payment_method"]
+                if invoice.variant == "" or invoice.variant is None:
+                    raise ValidationError(_("The field 'Payment method' is required."))
+            invoice.save()
+            if amount != 0:
+                invoice_token = invoice.token
+
+        registration.save()
+
+        context = {}
+        context["registration"] = registration
+
+        #        send_templated_mail(
+        #            template_name="event_registered",
+        #            from_email=get_site_preferences()["mail__address"],
+        #            recipient_list=[get_site_preferences()["paweljong__event_notification_recipient"]],
+        #            headers={
+        #                "reply_to": [
+        #                    person.email,
+        #                    person.guardians.first().email,
+        #                ],
+        #                "X-Zammad-Customer-Email": person.email,
+        #            },
+        #            context=context,
+        #        )
+
+        _act = Activity(
+            title=_("You registered for an event"),
+            description=_("You registered for the event %s" % event.display_name),
+            app="Paweljong",
+            user=person,
+        )
+
+        return SendEventRegistrationMutation(ok=True, do_payment_token=invoice_token)
diff --git a/aleksis/apps/paweljong/schema/site_preferences.py b/aleksis/apps/paweljong/schema/site_preferences.py
new file mode 100644
index 0000000000000000000000000000000000000000..04f321f7c201c7f226c675588ad916bd7cbb7b50
--- /dev/null
+++ b/aleksis/apps/paweljong/schema/site_preferences.py
@@ -0,0 +1,69 @@
+import graphene
+
+
+class PaweljongSitePreferencesType(graphene.ObjectType):
+    event_registration_email_participant_help_text = graphene.String()
+    event_registration_register_participant_help_text = graphene.String()
+    event_registration_contact_details_participant_help_text = graphene.String()
+    event_registration_guardians_participant_help_text = graphene.String()
+    event_registration_additional_participant_help_text = graphene.String()
+    event_registration_financial_participant_help_text = graphene.String()
+    event_registration_consent_participant_help_text = graphene.String()
+    event_registration_confirm_participant_help_text = graphene.String()
+
+    event_registration_email_guardian_help_text = graphene.String()
+    event_registration_register_guardian_help_text = graphene.String()
+    event_registration_contact_details_guardian_help_text = graphene.String()
+    event_registration_guardians_guardian_help_text = graphene.String()
+    event_registration_additional_guardian_help_text = graphene.String()
+    event_registration_financial_guardian_help_text = graphene.String()
+    event_registration_consent_guardian_help_text = graphene.String()
+    event_registration_confirm_guardian_help_text = graphene.String()
+
+    def resolve_event_registration_email_participant_help_text(parent, info, **kwargs):
+        return parent["paweljong__event_registration_email_participant_help_text"]
+
+    def resolve_event_registration_register_participant_help_text(parent, info, **kwargs):
+        return parent["paweljong__event_registration_register_participant_help_text"]
+
+    def resolve_event_registration_contact_details_participant_help_text(parent, info, **kwargs):
+        return parent["paweljong__event_registration_contact_details_participant_help_text"]
+
+    def resolve_event_registration_guardians_participant_help_text(parent, info, **kwargs):
+        return parent["paweljong__event_registration_guardians_participant_help_text"]
+
+    def resolve_event_registration_additional_participant_help_text(parent, info, **kwargs):
+        return parent["paweljong__event_registration_additional_participant_help_text"]
+
+    def resolve_event_registration_financial_participant_help_text(parent, info, **kwargs):
+        return parent["paweljong__event_registration_financial_participant_help_text"]
+
+    def resolve_event_registration_consent_participant_help_text(parent, info, **kwargs):
+        return parent["paweljong__event_registration_consent_participant_help_text"]
+
+    def resolve_event_registration_confirm_participant_help_text(parent, info, **kwargs):
+        return parent["paweljong__event_registration_confirm_participant_help_text"]
+
+    def resolve_event_registration_email_guardian_help_text(parent, info, **kwargs):
+        return parent["paweljong__event_registration_email_guardian_help_text"]
+
+    def resolve_event_registration_register_guardian_help_text(parent, info, **kwargs):
+        return parent["paweljong__event_registration_register_guardian_help_text"]
+
+    def resolve_event_registration_contact_details_guardian_help_text(parent, info, **kwargs):
+        return parent["paweljong__event_registration_contact_details_guardian_help_text"]
+
+    def resolve_event_registration_guardians_guardian_help_text(parent, info, **kwargs):
+        return parent["paweljong__event_registration_guardians_guardian_help_text"]
+
+    def resolve_event_registration_additional_guardian_help_text(parent, info, **kwargs):
+        return parent["paweljong__event_registration_additional_guardian_help_text"]
+
+    def resolve_event_registration_financial_guardian_help_text(parent, info, **kwargs):
+        return parent["paweljong__event_registration_financial_guardian_help_text"]
+
+    def resolve_event_registration_consent_guardian_help_text(parent, info, **kwargs):
+        return parent["paweljong__event_registration_consent_guardian_help_text"]
+
+    def resolve_event_registration_confirm_guardian_help_text(parent, info, **kwargs):
+        return parent["paweljong__event_registration_confirm_guardian_help_text"]
diff --git a/aleksis/apps/paweljong/schema/terms.py b/aleksis/apps/paweljong/schema/terms.py
new file mode 100644
index 0000000000000000000000000000000000000000..0db8dc2a630535266d86b768c8a619fe9091cc48
--- /dev/null
+++ b/aleksis/apps/paweljong/schema/terms.py
@@ -0,0 +1,10 @@
+from graphene_django import DjangoObjectType
+
+from aleksis.core.schema.base import PermissionsTypeMixin
+
+from ..models import Terms
+
+
+class TermsType(PermissionsTypeMixin, DjangoObjectType):
+    class Meta:
+        model = Terms
diff --git a/aleksis/apps/paweljong/templates/paweljong/event/full.html b/aleksis/apps/paweljong/templates/paweljong/event/full.html
index 051405ea5984e456ebe595d580ba64909cb2a515..06b637b381a41d4d2418acd01d11ab6cb8d8dbe9 100644
--- a/aleksis/apps/paweljong/templates/paweljong/event/full.html
+++ b/aleksis/apps/paweljong/templates/paweljong/event/full.html
@@ -34,7 +34,7 @@
             <tr>
               <td><i class="material-icons small">money</i></td>
               <td colspan="2">{% trans "Participation fee (all inclusive)" %}</td>
-              <td>{{ individual_cost }}</td>
+              <td>{% trans "Self-determined" %}</td>
             </tr>
             <tr>
               <td><i class="material-icons small">group</i></td>
@@ -54,9 +54,7 @@
       </div>
     </div>
     <div class="card-action">
-      {% if can_register and not is_authenticated %}
-        <a href="{% url "register_event_by_slug_start" event.slug %}">{% trans "Register now" %}</a>
-      {% elif can_register and is_authenticated %}
+      {% if can_register %}
         <a href="{% url "register_event_by_slug" event.slug %}">{% trans "Register now" %}</a>
       {% else %}
         <a href="#">{% trans "Not available" %}</a>
diff --git a/aleksis/apps/paweljong/templates/paweljong/event_registration/full.html b/aleksis/apps/paweljong/templates/paweljong/event_registration/full.html
index e9090228741c1bfddc3589ecfe14b1226c38c054..881c3a1581f60bf5629d3fe2fb00f9322c2d038b 100644
--- a/aleksis/apps/paweljong/templates/paweljong/event_registration/full.html
+++ b/aleksis/apps/paweljong/templates/paweljong/event_registration/full.html
@@ -238,6 +238,7 @@
     </div>
   </div>
 
+  {% if invoice %}
   <h5>{% trans "Invoice details" %}</h5>
   <div class="col s12 m8">
     <div class="row">
@@ -318,6 +319,7 @@
       </div>
     </div>
   </div>
+  {% endif %}
 
   {% if registration.person.guardians.all %}
   <h5>{% trans "Guardians / Parents "%}</h5>
diff --git a/aleksis/apps/paweljong/templates/templated_email/event_created.email b/aleksis/apps/paweljong/templates/templated_email/event_created.email
index ff4816364cccb6f08f5cdb91b304cbfda43d3603..6e2ac2de4cb4d44add2c22282b21987be475528f 100644
--- a/aleksis/apps/paweljong/templates/templated_email/event_created.email
+++ b/aleksis/apps/paweljong/templates/templated_email/event_created.email
@@ -13,6 +13,8 @@
     * {% trans "Registration deadline" %}: {{ new_event.date_registration }}
     * {% trans "Retraction deadline" %}: {{ new_event.date_retraction }}
     * {% trans "Cost" %}: {{ new_event.cost }}
+    * {% trans "Minimum cost" %}: {{ new_event.min_cost }}
+    * {% trans "Maximum cost" %}: {{ new_event.max_cost }}
     * {% trans "Max. participants" %}: {{ new_event.max_participants }}
     * {% trans "Owners" %}:
     {% for owner in new_event.group.owners.all %}
@@ -41,6 +43,8 @@
             <li> {% trans "Registration deadline" %}: {{ new_event.date_registration }}</li>
             <li> {% trans "Retraction deadline" %}: {{ new_event.date_retraction }}</li>
             <li> {% trans "Cost" %}: {{ new_event.cost }}</li>
+            <li> {% trans "Minimum cost" %}: {{ new_event.min_cost }}</li>
+            <li> {% trans "Maximum cost" %}: {{ new_event.max_cost }}</li>
             <li> {% trans "Max. participants" %}: {{ new_event.max_participants }}</li>
             <li> {% trans "Owners" %}</li>
             <ul>
diff --git a/aleksis/apps/paweljong/urls.py b/aleksis/apps/paweljong/urls.py
index bef72e074acae23c26decc6b8713c824ece6a625..a4c66d7d02d0bbef2ec1511eb0b83e62e6280c6a 100644
--- a/aleksis/apps/paweljong/urls.py
+++ b/aleksis/apps/paweljong/urls.py
@@ -1,4 +1,5 @@
 from django.urls import path
+from django.views.generic import TemplateView
 
 from aleksis.apps.postbuero.forms import MailAddForm
 
@@ -42,7 +43,7 @@ urlpatterns = [
     path("event/<slug:slug>/terms/", views.ViewTerms.as_view(), name="view_event_terms_by_slug"),
     path(
         "event/<slug:slug>/register/",
-        views.RegisterEventWizardView.as_view(register_forms, condition_dict=condition_dict),
+        TemplateView.as_view(template_name="core/empty.html"),
         name="register_event_by_slug",
     ),
     path(
@@ -52,11 +53,6 @@ urlpatterns = [
     ),
     path("event/<slug:slug>/", views.EventFullView.as_view(), name="event_by_name"),
     path("event/<slug:slug>/detail/", views.EventDetailView.as_view(), name="event_detail_by_name"),
-    path(
-        "event/<slug:slug>/start/",
-        views.RegisterEventStart.as_view(),
-        name="register_event_by_slug_start",
-    ),
     path("misc/set_email_needed/<slug:slug>/", views.set_email_needed, name="set_email_needed"),
     path("misc/set_email_needed/", views.set_email_needed, name="set_email_needed_no_slug"),
     path(
diff --git a/aleksis/apps/paweljong/views.py b/aleksis/apps/paweljong/views.py
index 36b5399b5cf73fa3c70a4767d51dc3f68b9014f1..85605cfed8b4d158c3fbfa59a30152439e7eff90 100644
--- a/aleksis/apps/paweljong/views.py
+++ b/aleksis/apps/paweljong/views.py
@@ -219,8 +219,9 @@ class EventRegistrationDetailView(PermissionRequiredMixin, DetailView):
     def get_context_data(self, *args, **kwargs):
         context = super().get_context_data(*args, **kwargs)
 
-        invoice = self.get_object().get_invoice()
-        context["invoice"] = invoice
+        if self.get_object().event.max_cost is None or self.get_object().event.max_cost > 0:
+            invoice = self.get_object().get_invoice()
+            context["invoice"] = invoice
 
         return context
 
@@ -285,6 +286,7 @@ def set_email_needed(request, slug: Optional[str] = None):
 def is_email_needed(wizard):
     return wizard.request.session.get("email_needed", None)
 
+
 def is_financial_needed(wizard):
     return wizard.request.session.get("financial_needed", None)
 
@@ -316,7 +318,7 @@ class AccountRegisterWizardView(SessionWizardView):
         if step == "register":
             try:
                 cleaned_data_email = self.get_cleaned_data_for_step("email")
-            except KeyError: # FIXME
+            except KeyError:  # FIXME
                 cleaned_data_email = False
             if cleaned_data_email:
                 domain = cleaned_data_email["domain"]
@@ -345,7 +347,7 @@ class AccountRegisterWizardView(SessionWizardView):
         context = {}
         try:
             cleaned_data_email = self.get_cleaned_data_for_step("email")
-        except KeyError: # FIXME
+        except KeyError:  # FIXME
             cleaned_data_email = False
         cleaned_data_register = self.get_cleaned_data_for_step("register")
 
@@ -528,11 +530,7 @@ class RegisterEventWizardView(SessionWizardView):
                 )
                 for field_name in event.contact_information_visible_fields:
                     if hasattr(person, field_name):
-                        initial.update(
-                            {
-                                field_name: getattr(person, field_name)
-                            }
-                        )
+                        initial.update({field_name: getattr(person, field_name)})
 
             else:
                 cleaned_data_register = self.get_cleaned_data_for_step("register")
@@ -559,13 +557,13 @@ class RegisterEventWizardView(SessionWizardView):
         event = Event.objects.get(slug=self.kwargs["slug"])
         try:
             cleaned_data_email = self.get_cleaned_data_for_step("email")
-        except KeyError: # FIXME
+        except KeyError:  # FIXME
             cleaned_data_email = False
         cleaned_data_contact_details = self.get_cleaned_data_for_step("contact_details")
         cleaned_data_guardians = self.get_cleaned_data_for_step("guardians")
         try:
             cleaned_data_register = self.get_cleaned_data_for_step("register")
-        except KeyError: # FIXME
+        except KeyError:  # FIXME
             cleaned_data_register = False
         cleaned_data_additional = self.get_cleaned_data_for_step("additional")
 
@@ -606,7 +604,15 @@ class RegisterEventWizardView(SessionWizardView):
         )
 
         # Store contact information in database
-        for field_name in ["date_of_birth", "sex", "street", "housenumber", "postal_code", "place", "mobile_number"]:
+        for field_name in [
+            "date_of_birth",
+            "sex",
+            "street",
+            "housenumber",
+            "postal_code",
+            "place",
+            "mobile_number",
+        ]:
             if field_name in cleaned_data_contact_details:
                 setattr(person, field_name, cleaned_data_contact_details[field_name])
         person.save()
@@ -663,7 +669,10 @@ class RegisterEventWizardView(SessionWizardView):
         if is_financial_needed(self):
             if cleaned_data_financial["voucher_code"]:
                 vouchers = Voucher.objects.filter(
-                    person=person, event=event, used=False, code=cleaned_data_financial["voucher_code"]
+                    person=person,
+                    event=event,
+                    used=False,
+                    code=cleaned_data_financial["voucher_code"],
                 )
                 if vouchers:
                     voucher = vouchers.first()