diff --git a/config/config.php b/config/config.php
index a60fde5..c75a6d7 100644
--- a/config/config.php
+++ b/config/config.php
@@ -2,21 +2,22 @@
declare(strict_types=1);
-// To change settings create a config.php
+// To change or overwrite some settings, create a config.php
return [
// MySQL-Connection Settings
'database' => [
- 'host' => env('MYSQL_HOST', (env('CI', false) ? 'mariadb' : 'localhost')),
+ 'driver' => env('MYSQL_TYPE', 'mysql'), // mysql or mariadb
+ 'host' => env('MYSQL_HOST', 'localhost'),
'database' => env('MYSQL_DATABASE', 'engelsystem'),
'username' => env('MYSQL_USER', 'root'),
- 'password' => env('MYSQL_PASSWORD', ''),
+ 'password' => env_secret('MYSQL_PASSWORD', ''),
],
// For accessing /metrics (and /stats)
'api_key' => env('API_KEY', ''),
- // Enable maintenance mode (show a static page)
+ // Enable maintenance mode (show a static page to all users)
'maintenance' => (bool) env('MAINTENANCE', false),
// Application name (not the event name)
@@ -26,42 +27,49 @@ return [
'environment' => env('ENVIRONMENT', 'production'),
// Application URL and base path to use instead of the auto-detected one
- 'url' => env('APP_URL', null),
+ 'url' => env('APP_URL'),
// Header links
// Available link placeholders: %lang%
- // To disable a header_item in the config.php, you can set its value to null
+ // To disable a header_item in config.php, you can set its value to null
'header_items' => [
- // Name can be a translation string, permission is a engelsystem privilege
+ // Name can be a translation string, permission is an engelsystem privilege
// 'Name' => 'URL',
- // 'Name' => ['URL', 'permission'],
+ // 'some.key' => ['URL', 'permission'],
//'Foo' => ['https://foo.bar/batz-%lang%.html', 'logout'], // Permission: for logged-in users
],
// Footer links
- // To disable a footer item in the config.php, you can set its value to null
+ // To disable a footer item in config.php, you can set its value to null
'footer_items' => [
// Name can be a translation string, permission is a engelsystem privilege
// 'Name' => 'URL',
- // 'Name' => ['URL', 'permission'],
+ // 'some.key' => ['URL', 'permission'],
- // URL to the angel faq and job description
+ // URL to faq page
'faq.faq' => [env('FAQ_URL', '/faq'), 'faq.view'],
// Contact email address, linked on every page
// 'Contact' => env('CONTACT_EMAIL', 'mailto:ticket@c3heaven.de'),
],
- // Text displayed on the FAQ page, rendered as markdown
- 'faq_text' => env('FAQ_TEXT', null),
+ // Other ways to ask the heaven
+ // Multiple contact options / links are possible, analogue to footer_items
+ 'contact_options' => [
+ // E-mail address
+ // 'general.email' => env('CONTACT_EMAIL', 'mailto:ticket@c3heaven.de'),
+ ],
+
+ // Additional text displayed on the FAQ page, rendered as markdown
+ 'faq_text' => env('FAQ_TEXT'),
// Link to documentation/help
'documentation_url' => env('DOCUMENTATION_URL', 'https://engelsystem.de/doc/'),
// Email config
'email' => [
- // Can be mail, smtp, sendmail or log or an symfony mailer dsn string like smtps://[usr]:[pass]@smtp.foo.bar:465
+ // Can be mail, smtp, sendmail, log or an symfony mailer dsn string like smtps://[usr]:[pass]@smtp.foo.bar:465
'driver' => env('MAIL_DRIVER', 'mail'),
'from' => [
// From address of all emails
@@ -71,19 +79,23 @@ return [
'host' => env('MAIL_HOST', 'localhost'),
'port' => env('MAIL_PORT', 587),
- // If tls transport encryption should be used
- 'tls' => env('MAIL_TLS', null),
+ // If tls transport encryption should be enabled
+ 'tls' => env('MAIL_TLS'),
'username' => env('MAIL_USERNAME'),
- 'password' => env('MAIL_PASSWORD'),
+ 'password' => env_secret('MAIL_PASSWORD'),
'sendmail' => env('MAIL_SENDMAIL', '/usr/sbin/sendmail -bs'),
],
- # Your privacy@ contact address
- 'privacy_email' => env('PRIVACY_EMAIL', null),
+ // Your privacy@ contact address
+ 'privacy_email' => env('PRIVACY_EMAIL'),
+
+ // Show opt-in on user profile and registration pages to save some personal data after the event
+ 'enable_email_goodie' => (bool) env('ENABLE_EMAIL_GOODIE', false),
- // Initial admin password
- 'setup_admin_password' => env('SETUP_ADMIN_PASSWORD', null),
+ // Initial admin password, configured on first migration
+ 'setup_admin_password' => env_secret('SETUP_ADMIN_PASSWORD'),
+ // Setup external authentication providers
'oauth' => [
// '[name]' => [config]
/*
@@ -131,19 +143,24 @@ return [
'groups' => 'groups',
// Groups to team (angeltype) mapping (optional)
'teams' => [
- '/Lorem' => 4, // 4 being the ID of the angeltype
- '/Foo Mod' => ['id' => 5, 'supporter' => true], // 5 being the ID of the angeltype
+ '/Lorem' => 4, // 4 being the ID of the team (angeltype)
+ '/Foo Mod' => ['id' => 5, 'supporter' => true], // 5 being the ID of the team (angeltype)
],
],
*/
],
- // Default theme, 1=style1.css
+ // Default theme, 1 = theme1.scss etc.
'theme' => env('THEME', 17),
// Supported themes
- // To disable a theme in the config.php, you can set its value to null
+ // To disable a theme in config.php, you can set its value to null
'themes' => [
+ 18 => [
+ 'name' => 'Engelsystem 38c3 (2024) - Lila, Lachs und Kurven',
+ 'type' => 'dark',
+ 'navbar_classes' => 'navbar-dark',
+ ],
17 => [
'name' => 'Engelsystem 37c3 (2023)',
'type' => 'dark',
@@ -236,7 +253,7 @@ return [
],
],
- // Redirect to this site after logging in or when pressing the top-left button
+ // Redirect to this site after logging in or when clicking the page name
// Must be one of news, meetings, user_shifts, angeltypes, questions
'home_site' => env('HOME_SITE', 'news'),
@@ -246,6 +263,9 @@ return [
// Users are able to sign up
'registration_enabled' => (bool) env('REGISTRATION_ENABLED', true),
+ // URL to external registration page, linked from login page
+ 'external_registration_url' => env('EXTERNAL_REGISTRATION_URL'),
+
// Required user fields
'required_user_fields' => [
'pronoun' => (bool) env('PRONOUN_REQUIRED', false),
@@ -256,75 +276,83 @@ return [
'dect' => (bool) env('DECT_REQUIRED', false),
],
- // Only arrived angels can sign up for shifts
+ // Only arrived users can sign up for shifts
'signup_requires_arrival' => (bool) env('SIGNUP_REQUIRES_ARRIVAL', false),
- // Whether newly-registered user should automatically be marked as arrived
- 'autoarrive' => (bool) env('ANGEL_AUTOARRIVE', true),
+ // Whether newly-registered users should automatically be marked as arrived
+ 'autoarrive' => (bool) env('AUTOARRIVE', false),
+
+ // Supporters of a team (angeltype) can promote other users of the team (angeltype) to supporter
+ 'supporters_can_promote' => (bool) env('SUPPORTERS_CAN_PROMOTE', false),
// Only allow shift signup this number of hours in advance
// Setting this to 0 disables the feature
'signup_advance_hours' => env('SIGNUP_ADVANCE_HOURS', 0),
// Allow signup this many minutes after the start of the shift.
- // If signup_post_fraction is set, first applies that before adding the number of minutes specified by this.
+ // If signup_post_fraction is set, it's first applied before adding the number of minutes specified here.
'signup_post_minutes' => env('SIGNUP_POST_MINUTES', 0),
// Allow signup this fraction of the shift length after the start of the shift.
- // Example: If this is set to 1, signup is allowed until the end of a shift
- // If this is set to 0.5, signup is allowd for the first half of a shift
- // If signup_post_minutes is set, first applies this and then adds the signup_post_minutes on top.
+ // Example: If it is set to 1, signup is allowed until the end of a shift
+ // If it is set to 0.5, signup is allowed for the first half of a shift
+ // If signup_post_minutes is set, this is first applied and then the signup_post_minutes added on top.
'signup_post_fraction' => env('SIGNUP_POST_FRACTION', 0),
- // Number of hours that an angel has to sign out own shifts
+ // Number of hours that a user can sign out of own shifts beforehand
'last_unsubscribe' => env('LAST_UNSUBSCRIBE', 3),
// Define the algorithm to use for `password_verify()`
- // If the user uses an old algorithm the password will be converted to the new format
+ // If a user password is hashed with an old algorithm, the password will be converted to the new format on login
// See https://secure.php.net/manual/en/password.constants.php for a complete list
'password_algorithm' => env('PASSWORD_ALGORITHM', PASSWORD_DEFAULT),
// The minimum length for passwords
- 'min_password_length' => env('PASSWORD_MINIMUM_LENGTH', 8),
+ 'password_min_length' => env('PASSWORD_MIN_LENGTH', 8),
- // Whether the Password field should be enabled on registration.
- // This is useful when using oauth, disabling it also disables normal
- // registration without oauth.
+ // Whether the login and registration via password should be enabled (login will be hidden if false)
+ // This is useful when using oauth, disabling it also disables normal registration without oauth
'enable_password' => (bool) env('ENABLE_PASSWORD', true),
// Whether the DECT field should be enabled
'enable_dect' => (bool) env('ENABLE_DECT', true),
- // Whether the mobile number can be shown to other users
+ // Whether the mobile number will be shown to other users
'enable_mobile_show' => (bool) env('ENABLE_MOBILE_SHOW', false),
// Regular expression describing a FALSE username.
// Per default usernames must only contain alphanumeric chars, "-", "_" or ".".
'username_regex' => (string) env('USERNAME_REGEX', '/([^\p{L}\p{N}_.-]+)/ui'),
- // Enables first name and last name
- 'enable_user_name' => (bool) env('ENABLE_USER_NAME', false),
+ // Enable first name and last name
+ 'enable_full_name' => (bool) env('ENABLE_FULL_NAME', false),
// Show a users first name and last name instead of username
'display_full_name' => env('DISPLAY_FULL_NAME', false)
- && env('ENABLE_USER_NAME', false),
+ && env('ENABLE_FULL_NAME', false),
// Enable displaying the pronoun fields
'enable_pronoun' => (bool) env('ENABLE_PRONOUN', true),
- // Enables the planned arrival/leave date
+ // Enable the planned arrival/leave date
'enable_planned_arrival' => (bool) env('ENABLE_PLANNED_ARRIVAL', true),
+ // Whether force active should be enabled
+ 'enable_force_active' => (bool) env('ENABLE_FORCE_ACTIVE', true),
+
+ // Allow users with sufficient permission to add worklogs for themselves
+ 'enable_self_worklog' => (bool) env('ENABLE_SELF_WORKLOG', true),
+
// Resembles the Goodie Type. There are three options:
// 'none' => no goodie at all
// 'goodie' => a goodie which has no sizing options
// 'tshirt' => goodie that is called tshirt and has sizing options
'goodie_type' => env('GOODIE_TYPE', 'goodie'),
- // Enables the food voucher in the user profile
+ // Enable (food) vouchers
'enable_voucher' => (bool) env('ENABLE_VOUCHER', true),
- // Number of shifts to freeload until angel is locked for shift signup.
+ // Number of shifts to freeload until a user is locked from shift signup.
'max_freeloadable_shifts' => env('MAX_FREELOADABLE_SHIFTS', 2),
// Hide columns in backend user view. Possible values are any sortable parameters of the table.
@@ -333,11 +361,12 @@ return [
// Local timezone
'timezone' => env('TIMEZONE', 'Europe/Berlin'),
- // Multiply 'night shifts' and freeloaded shifts (start or end between 2 and 6 exclusive) by 2
+ // Multiply 'night shifts' and freeloaded shifts (start or end between 2 and 8 exclusive) by 2 in goodie score
+ // Goodies must be enabled to use this feature
'night_shifts' => [
'enabled' => (bool) env('NIGHT_SHIFTS', true), // Disable to weigh every shift the same
- 'start' => env('NIGHT_SHIFTS_START', 2),
- 'end' => env('NIGHT_SHIFTS_END', 6),
+ 'start' => env('NIGHT_SHIFTS_START', 2), // Starting from hour
+ 'end' => env('NIGHT_SHIFTS_END', 8), // Ends at (without including) hour
'multiplier' => env('NIGHT_SHIFTS_MULTIPLIER', 2),
],
@@ -347,18 +376,20 @@ return [
'shifts_per_voucher' => env('SHIFTS_PER_VOUCHER', 0),
'hours_per_voucher' => env('HOURS_PER_VOUCHER', 2),
// 'Y-m-d' formatted
- 'voucher_start' => env('VOUCHER_START', null) ?: null,
+ 'voucher_start' => env('VOUCHER_START') ?: null,
],
+ // Enable Driving License
+ 'driving_license_enabled' => (bool) env('DRIVING_LICENSE_ENABLED', true),
+
# Instruction in accordance with § 43 Para. 1 of the German Infection Protection Act (IfSG)
'ifsg_enabled' => (bool) env('IFSG_ENABLED', false),
# Instruction only onsite in accordance with § 43 Para. 1 of the German Infection Protection Act (IfSG)
- 'ifsg_light_enabled' => (bool) env('IFSG_LIGHT_ENABLED', false)
- && env('IFSG_ENABLED', false),
+ 'ifsg_light_enabled' => env('IFSG_LIGHT_ENABLED', false) && env('IFSG_ENABLED', false),
// Available locales in /resources/lang/
- // To disable a locale in the config.php, you can set its value to null
+ // To disable a locale in config.php, you can set its value to null
'locales' => [
'de_DE' => 'Deutsch',
],
@@ -367,7 +398,7 @@ return [
'default_locale' => env('DEFAULT_LOCALE', 'de_DE'),
// Available T-Shirt sizes
- // To disable a t-shirt size in the config.php, you can set its value to null
+ // To disable a t-shirt size in config.php, you can set its value to null
'tshirt_sizes' => [
'S' => 'Small Straight-Cut',
'S-F' => 'Small Fitted-Cut',
@@ -382,11 +413,14 @@ return [
'4XL' => '4XLarge Straight-Cut',
],
+ // T-shirt Size-Guide link
+ 'tshirt_link' => env('TSHIRT_LINK'),
+
// Whether to show the current day of the event (-2, -1, 0, 1, 2…) in footer and on the dashboard.
// The event start date has to be set for it to appear.
- 'enable_show_day_of_event' => false,
+ 'enable_day_of_event' => (bool) env('ENABLE_DAY_OF_EVENT', false),
// If true there will be a day 0 (-1, 0, 1…). If false there won't (-1, 1…)
- 'event_has_day0' => true,
+ 'event_has_day0' => (bool) env('EVENT_HAS_DAY0', true),
'metrics' => [
// User work buckets in seconds
@@ -417,7 +451,7 @@ return [
// Add additional headers
'add_headers' => (bool) env('ADD_HEADERS', true),
// Predefined headers
- // To disable a header in the config.php, you can set its value to null
+ // To disable a header in config.php, you can set its value to null
'headers' => [
'X-Content-Type-Options' => 'nosniff',
'X-Frame-Options' => 'sameorigin',
diff --git a/resources/lang/de_DE/additional.po b/resources/lang/de_DE/additional.po
index fb183ca..b1104d2 100644
--- a/resources/lang/de_DE/additional.po
+++ b/resources/lang/de_DE/additional.po
@@ -85,9 +85,6 @@ msgstr "Das Programm konnte nicht abgerufen werden."
msgid "schedule.import.read-error"
msgstr "Das Programm konnte nicht gelesen werden."
-msgid "schedule.import.invalid-shift-type"
-msgstr "Der Schichttyp konnte nicht gefunden werden."
-
msgid "schedule.import.success"
msgstr "Das Programm wurde erfolgreich importiert."
@@ -172,12 +169,6 @@ msgstr "Der OAuth-Provider ist aufgrund eines unerwarteten Fehlers nicht in der
msgid "oauth.temporarily_unavailable"
msgstr "Der OAuth-Provider ist aufgrund Überlastung oder Wartung temporär nicht in der Lage, die Anfrage zu erfüllen"
-msgid "profile.my-shifts"
-msgstr "Meine Schichten"
-
-msgid "settings.profile"
-msgstr "Profil"
-
msgid "settings.profile.planned_arrival_date.invalid"
msgstr "Bitte gib Dein geplantes Ankunftsdatum an. "
"Es sollte nach dem Aufbaubeginn und vor dem Abbauende liegen."
@@ -210,6 +201,15 @@ msgstr "Frage erstellt."
msgid "question.edit.success"
msgstr "Frage erfolgreich bearbeitet."
+msgid "tag.edit.duplicate"
+msgstr "Ein Tag mit dem Namen existiert bereits!"
+
+msgid "tag.edit.success"
+msgstr "Der Tag wurde erfolgreich aktualisiert."
+
+msgid "tag.delete.success"
+msgstr "Tag erfolgreich gelöscht."
+
msgid "notification.news.new"
msgstr "Neue News: %s"
@@ -226,7 +226,7 @@ msgid "notification.messages.new"
msgstr "Neue private Nachricht von %s"
msgid "notification.messages.new.text"
-msgstr "Du hast eine neue private Nachricht von %s bekommen. Du kannst sie dir unter %s anschauen."
+msgstr "Du hast eine neue private Nachricht von \"%s\" bekommen. Du kannst sie dir unter %s anschauen."
msgid "notification.angeltype.confirmed"
msgstr "Du wurdest als %s bestätigt"
@@ -296,8 +296,47 @@ msgstr "Der Name wird bereits verwendet."
msgid "registration.disabled"
msgstr "Die Registrierung ist deaktiviert."
+msgid "registration.successful.supporter"
+msgstr "Registrierung erfolgreich."
+
msgid "registration.successful"
msgstr "Registrierung erfolgreich. Du kannst dich jetzt anmelden!"
msgid "shifts.history.delete.success"
msgstr "Schichten erfolgreich gelöscht."
+
+msgid "config.event"
+msgstr "Event"
+
+msgid "config.name"
+msgstr "Event Name"
+
+msgid "config.name.info"
+msgstr "Der Event Name wird auf der Startseite angezeigt."
+
+msgid "config.welcome_msg"
+msgstr "Event Willkommens-Nachricht"
+
+msgid "config.welcome_msg.info"
+msgstr "Die Willkommens-Nachricht wird nach der Registrierung angezeigt. Du kannst Markdown benutzen."
+
+msgid "config.buildup_start"
+msgstr "Aufbau Datum"
+
+msgid "config.event_start"
+msgstr "Event Start Datum"
+
+msgid "config.event_end"
+msgstr "Event Ende Datum"
+
+msgid "config.teardown_end"
+msgstr "Abbau Ende Datum"
+
+msgid "validation.event_start.after"
+msgstr "Event Start muss nach dem Aufbau liegen."
+
+msgid "validation.event_end.after"
+msgstr "Event Ende muss nach dem Event Start liegen."
+
+msgid "validation.teardown_end.after"
+msgstr "Abbau Ende muss nach dem Event Ende liegen."
diff --git a/resources/lang/de_DE/default.po b/resources/lang/de_DE/default.po
index d38fe63..4ca022e 100644
--- a/resources/lang/de_DE/default.po
+++ b/resources/lang/de_DE/default.po
@@ -54,7 +54,7 @@ msgid "page.419.title"
msgstr "Autorisierung ist abgelaufen"
msgid "page.419.text"
-msgstr "Das angegebene CSRF Token ist ungültig oder abgelaufen"
+msgstr "Das angegebene CSRF Token ist ungültig oder abgelaufen. Bitte versuche es erneut."
msgid "general.date"
msgstr "d.m.Y"
@@ -90,7 +90,7 @@ msgid "form.submit"
msgstr "Absenden"
msgid "form.send_notification"
-msgstr "Benachrichtigungen versenden"
+msgstr "%d Benachrichtigungen versenden"
msgid "credits.source"
msgstr "Quellcode"
@@ -168,16 +168,19 @@ msgstr "Mindestlänge %d Zeichen"
msgid "form.recover"
msgstr "Wiederherstellen"
-msgid "Angeltype %s deleted."
+msgid "Angel type %s deleted."
msgstr "Elfentyp %s gelöscht."
-msgid "Delete angeltype %s"
+msgid "Delete angel type %s"
msgstr "Lösche Elfentyp %s"
msgid "Please check the name. Maybe it already exists."
msgstr "Bitte überprüfe den Namen. Vielleicht ist er bereits vergeben."
-msgid "Create angeltype"
+msgid "Angel type saved."
+msgstr "Elfentyp wurde gespeichert."
+
+msgid "Create angel type"
msgstr "Elfentyp erstellen"
msgid "Edit %s"
@@ -189,41 +192,17 @@ msgstr "Team %s"
msgid "%s (not \"%s\")"
msgstr "%s (kein \"%s\")"
-msgid "View"
+msgid "%s (already in shift)"
+msgstr "%s (bereits eingetragen)"
+
+msgid "form.view"
msgstr "Ansehen"
msgid "Leave"
msgstr "Verlassen"
msgid "Join"
-msgstr "Mitmachen"
-
-msgid "Event config"
-msgstr "Event Einstellungen"
-
-msgid "Please enter buildup start date."
-msgstr "Bitte gib das Aufbau Start Datum an."
-
-msgid "Please enter event start date."
-msgstr "Bitte gib das Event Start Datum an."
-
-msgid "Please enter event end date."
-msgstr "Bitte gib das Event Ende Datum an."
-
-msgid "Please enter teardown end date."
-msgstr "Bitte gib das Abbau Ende Datum an."
-
-msgid "The buildup start date has to be before the event start date."
-msgstr "Das Aufbau Start Datum muss vor dem Event Start Datum liegen."
-
-msgid "The event start date has to be before the event end date."
-msgstr "Das Event Start Datum muss vor dem Event End Datum liegen."
-
-msgid "The event end date has to be before the teardown end date."
-msgstr "Das Event Ende Datum muss vor dem Abbau Ende Datum liegen."
-
-msgid "The buildup start date has to be before the teardown end date."
-msgstr "Das Aufbau Start Datum muss vor dem Abbau Ende Datum liegen."
+msgstr "Beitreten"
msgid "Public Dashboard"
msgstr "Öffentliches Dashboard"
@@ -234,13 +213,13 @@ msgstr "Zufällige Schicht"
msgid "%s has been subscribed to the shift."
msgstr "%s wurde in die Schicht eingetragen."
-msgid "User is not in angeltype."
+msgid "User is not in angel type."
msgstr "User ist nicht im Elfentyp."
msgid "This shift is already occupied."
msgstr "Die Schicht ist schon voll."
-msgid "You need be accepted member of the angeltype."
+msgid "You need be accepted member of the angel type."
msgstr "Du musst bestätigtes Mitglied des Elfentyps sein."
msgid "This shift collides with one of your shifts."
@@ -279,9 +258,6 @@ msgstr ""
msgid "Please select a location."
msgstr "Bitte einen Ort auswählen."
-msgid "Please select a shifttype."
-msgstr "Bitte einen Schichttyp wählen."
-
msgid "Please enter a valid starting time for the shifts."
msgstr "Bitte gib eine korrekte Startzeit für die Schichten ein."
@@ -300,7 +276,7 @@ msgstr "Schicht aktualisiert."
msgid "This page is much more comfortable with javascript."
msgstr "Diese Seite ist mit JavaScript viel komfortabler."
-msgid "Shifttype"
+msgid "Shift type"
msgstr "Schichttyp"
msgid "title.title"
@@ -309,70 +285,64 @@ msgstr "Titel"
msgid "Location:"
msgstr "Ort:"
-msgid "Start:"
-msgstr "Start:"
-
-msgid "End:"
-msgstr "Ende:"
-
msgid "Needed angels"
msgstr "Benötigte Elfen"
msgid "Shift deleted."
msgstr "Schicht gelöscht."
-msgid "Do you want to delete the shift %s from %s to %s?"
-msgstr "Möchtest Du die Schicht %s von %s bis %s löschen?"
+msgid "Do you want to delete the shift \"%s\" from %s to %s?"
+msgstr "Möchtest Du die Schicht \"%s\" von %s bis %s löschen?"
msgid "Shift could not be found."
msgstr "Schicht konnte nicht gefunden werden."
-msgid "There is %d unconfirmed angeltype."
-msgid_plural "There are %d unconfirmed angeltypes."
-msgstr[0] "Es gibt %d nicht freigeschalteten Elfentypen!"
-msgstr[1] "Es gibt %d nicht freigeschaltete Elfentypen!"
-
-msgid "Angel types which need approvals:"
-msgstr "Elfentypen die bestätigt werden müssen:"
+msgid "There are unconfirmed angels in %d angel type. Angel type that needs approval:"
+msgid_plural "There are unconfirmed angels in %d angel types. Angel types that need approvals:"
+msgstr[0] "Es gibt nicht freigeschaltete Elfen in %d Elfentypen! Elfentyp der bestätigt werden muss:"
+msgstr[1] "Es gibt nicht freigeschaltete Elfen in %d Elfentypen! Elfentypen die bestätigt werden müssen:"
-msgid "You are not allowed to delete all users for this angeltype."
+msgid "You are not allowed to delete all users for this angel type."
msgstr "Du darfst nicht alle Benutzer von diesem Elfentyp entfernen."
-msgid "Denied all users for angeltype %s."
+msgid "Denied all users for angel type %s."
msgstr "Alle Benutzer mit Elfentyp %s abgelehnt."
msgid "Deny all users"
msgstr "Alle Benutzer ablehnen"
-msgid "You are not allowed to confirm all users for this angeltype."
+msgid "You are not allowed to confirm all users for this angel type."
msgstr "Du darfst nicht alle Benutzer für diesen Elfentyp freischalten."
-msgid "Confirmed all users for angeltype %s."
+msgid "Confirmed all users for angel type %s."
msgstr "Alle Benutzer für Elfentyp %s freigeschaltet."
msgid "Confirm all users"
msgstr "Alle Benutzer bestätigen"
-msgid "You are not allowed to confirm this users angeltype."
+msgid "You are not allowed to confirm this users angel type."
msgstr "Du darfst diesen Benutzer nicht für diesen Elfentyp freischalten."
-msgid "%s confirmed for angeltype %s."
+msgid "%s confirmed for angel type %s."
msgstr "%s für Elfentyp %s freigeschaltet."
-msgid "Confirm angeltype for user"
+msgid "Confirm angel type for user"
msgstr "Elfentyp für Benutzer bestätigen"
-msgid "You are not allowed to delete this users angeltype."
+msgid "You are not allowed to delete this users angel type."
msgstr "Du darfst diesen Benutzer nicht von diesem Elfentyp entfernen."
-msgid "User %s removed from %s."
-msgstr "Benutzer %s von %s entfernt."
+msgid "User \"%s\" removed from \"%s\"."
+msgstr "Benutzer \"%s\" von \"%s\" entfernt."
-msgid "Remove angeltype"
-msgstr "Elfentyp löschen"
+msgid "Edit certificates"
+msgstr "Zertifikate bearbeiten"
-msgid "You are not allowed to set supporter rights."
-msgstr "Du darfst keine Supporterrechte bearbeiten."
+msgid "You successfully left \"%2$s\"."
+msgstr "Du hast erfolgreich \"%2$s\" verlassen."
+
+msgid "Leave angel type"
+msgstr "Elfentyp verlassen"
msgid "No supporter update given."
msgstr "Kein Update für Supporterrechte gegeben."
@@ -392,7 +362,7 @@ msgstr "Supporterrechte entfernen"
msgid "User %s added to %s."
msgstr "Benutzer %s zu %s hinzugefügt."
-msgid "Add user to angeltype"
+msgid "Add user to angel type"
msgstr "Benutzer zu Elfentyp hinzufügen"
msgid "You are already a %s."
@@ -401,8 +371,8 @@ msgstr "Du bist bereits %s."
msgid "You joined %s."
msgstr "Du bist %s beigetreten."
-msgid "Become a %s"
-msgstr "Werde ein %s"
+msgid "Join %s"
+msgstr "%s beitreten"
msgid "You cannot delete yourself."
msgstr "Du kannst Dich nicht selber löschen."
@@ -483,7 +453,7 @@ msgid "Apply"
msgstr "Anwenden"
msgid "Angel has been marked as active."
-msgstr "Elf wurde als aktiv markiert."
+msgstr "Elfen wurde als aktiv markiert."
msgid "Angel not found."
msgstr "Elf nicht gefunden."
@@ -497,17 +467,26 @@ msgstr "Elf hat ein T-Shirt bekommen."
msgid "Angel has got no T-shirt."
msgstr "Elf hat kein T-Shirt bekommen."
-msgid "set active"
-msgstr "setze aktiv"
+msgid "Angel has no valid T-shirt size. T-shirt was not set."
+msgstr "Elf hat keine valide T-Shirt Größe. T-Shirt wurde nicht gespeichert."
-msgid "Remove active"
-msgstr "entferne aktiv"
+msgid "This Angel has no valid T-shirt size, therefore it's not possible to hand out a T-shirt."
+msgstr "Dieser Elf hat keine valide T-Shirt Größe, weswegen kein T-Shirt ausgegeben werden kann."
-msgid "Got T-shirt"
-msgstr "T-Shirt bekommen"
+msgid "Set active"
+msgstr "Setze aktiv"
+
+msgid "Remove active"
+msgstr "Entferne aktiv"
msgid "Remove T-shirt"
-msgstr "entferne T-Shirt"
+msgstr "Entferne T-Shirt"
+
+msgid "Goodie actions"
+msgstr "Goodie Aktionen"
+
+msgid "T-shirt actions"
+msgstr "T-Shirt Aktionen"
msgid "Sum"
msgstr "Summe"
@@ -518,7 +497,7 @@ msgstr "Suche Elfen:"
msgid "Show all shifts"
msgstr "Alle Schichten anzeigen"
-msgid "How much angels should be active?"
+msgid "How many angels should be active?"
msgstr "Wie viele Elfen sollten aktiv sein?"
msgid "Size"
@@ -527,20 +506,23 @@ msgstr "Größe"
msgid "No."
msgstr "Nr."
-msgid "Shifts"
+msgid "general.shifts"
msgstr "Schichten"
msgid "Length"
msgstr "Länge"
-msgid "Active?"
-msgstr "Aktiv?"
+msgid "Length (in minutes)"
+msgstr "Länge (in Minuten)"
+
+msgid "Active"
+msgstr "Aktiv"
msgid "Forced"
msgstr "Erzwungen"
-msgid "T-shirt?"
-msgstr "T-Shirt?"
+msgid "T-shirt"
+msgstr "T-Shirt"
msgid "T-shirt statistic"
msgstr "T-Shirt Statistik"
@@ -548,6 +530,9 @@ msgstr "T-Shirt Statistik"
msgid "Given T-shirts"
msgstr "Ausgegebene T-Shirts"
+msgid "Configured T-shirts"
+msgstr "Konfigurierte T-Shirts"
+
msgid "Arrive angels"
msgstr "Ankommende Elfen"
@@ -560,12 +545,12 @@ msgstr "Elf wurde als angekommen markiert."
msgid "Reset"
msgstr "Zurücksetzen"
+msgid "Reset arrival state for %s?"
+msgstr "Angekommen-Status für %s zurücksetzen?"
+
msgid "Planned arrival"
msgstr "Geplanter Ankunftstag"
-msgid "Arrived?"
-msgstr "Angekommen?"
-
msgid "Arrival date"
msgstr "Ankunftsdatum"
@@ -590,19 +575,31 @@ msgstr "Geplante Abreise-Statistik"
msgid "Free angels"
msgstr "Freie Elfen"
-msgid "Angeltype"
+msgid "Angel type"
msgstr "Elfentyp"
msgid "shift.next"
msgstr "Nächste Schicht"
+msgid "general.shift"
+msgstr "Schicht"
+
+msgid "shift.angeltype_source"
+msgstr "Benötigte Elfen von: %s"
+
+msgid "shift.angeltype_source.shift_type"
+msgstr "Programm %s via Schichttyp %s"
+
+msgid "shift.angeltype_source.location"
+msgstr "Programm %s via Ort %s"
+
msgid "Last shift"
msgstr "Letzte Schicht"
msgid "general.dect"
msgstr "DECT"
-msgid "Grouprights"
+msgid "Group rights"
msgstr "Gruppenrechte"
msgid "general.name"
@@ -629,9 +626,6 @@ msgstr "Fragen beantworten"
msgid "There are unanswered questions!"
msgstr "Es gibt unbeantwortete Fragen!"
-msgid "Locations"
-msgstr "Orte"
-
msgid "general.description"
msgstr "Beschreibung"
@@ -737,22 +731,8 @@ msgstr "User bearbeiten"
msgid "general.datetime"
msgstr "d.m.Y H:i"
-msgid "Key changed."
-msgstr "Key geändert."
-
-msgid "Reset API key"
-msgstr "API-Key zurücksetzen"
-
-msgid ""
-"If you reset the key, the url to your iCal- and JSON-export and your atom/rss "
-"feed changes! You have to update it in every application using one of these "
-"exports."
-msgstr ""
-"Wenn du den API-Key zurücksetzt, ändert sich die URL zu deinem iCal-, JSON-"
-"Export und Atom/RSS Feed! Du musst diesen überall ändern, wo er in Benutzung ist."
-
-msgid "Continue"
-msgstr "Fortfahren"
+msgid "API Settings"
+msgstr "API Einstellungen"
msgid "Please enter a freeload comment!"
msgstr "Gib bitte einen Schwänz-Kommentar ein!"
@@ -770,8 +750,8 @@ msgid "The administration has not configured any shifts yet."
msgstr "Die Administratoren haben noch keine Schichten angelegt."
msgid ""
-"The administration has not configured any angeltypes yet - or you are not "
-"subscribed to any angeltype."
+"The administration has not configured any angel types yet - or you are not "
+"subscribed to any angel type."
msgstr ""
"Die Administratoren haben noch keine Elfentypen konfiguriert - oder Du hast "
"noch keine Elfentypen ausgewählt."
@@ -789,7 +769,7 @@ msgid "Occupancy"
msgstr "Belegung"
msgid ""
-"The tasks shown here are influenced by the angeltypes you joined already!"
+"The tasks shown here are influenced by the angel types you joined already!"
msgstr ""
"Die Schichten, die hier angezeigt werden, sind von Deinen Einstellungen "
"(Elfentypen/Aufgaben) abhängig!"
@@ -822,16 +802,13 @@ msgid "iCal export and API"
msgstr "iCal Export und API"
msgid ""
-"Export your own shifts. iCal format or JSON format available (please keep secret, otherwise reset the api key)."
+"Export your own shifts formatted as iCal or "
+"JSON (please keep the link secret, otherwise you have to reset the api key "
+"in your settings)."
msgstr ""
-"Exportiere Deine Schichten. iCal Format oder JSON Format verfügbar (Link bitte geheimhalten, sonst API-Key zurücksetzen)."
-
-msgid "Show API Key"
-msgstr "API Key anzeigen"
+"Exportiere Deine Schichten im iCal oder JSON Format (Link bitte geheimhalten, sonst musst du den API-Key in "
+"deinen Einstellungen zurücksetzen)."
msgid "All"
msgstr "Alle"
@@ -845,9 +822,6 @@ msgstr "Abmelden"
msgid "Admin"
msgstr "Admin"
-msgid "Manage locations"
-msgstr "Orte verwalten"
-
msgid "No data found."
msgstr "Nichts gefunden."
@@ -860,7 +834,7 @@ msgstr "Supporter"
msgid "Member"
msgstr "Mitglied"
-msgid "Do you want to delete angeltype %s?"
+msgid "Do you want to delete angel type %s?"
msgstr "Möchtest Du den Elfentypen %s löschen?"
msgid "angeltypes.restricted"
@@ -896,18 +870,24 @@ msgstr "Kontakt"
msgid "Primary contact person/desk for user questions."
msgstr "Ansprechpartner für Fragen."
-msgid "my driving license"
+msgid "My driving license"
msgstr "Meine Führerschein-Infos"
+msgid "angeltype.ifsg.required.info.preview"
+msgstr "Dieser Elfentyp benötigt eine Gesundheitsbelehrung."
+
+msgid "angeltype.driving_license.required.info.preview"
+msgstr "Dieser Elfentyp benötigt Führerschein-Infos."
+
msgid ""
-"This angeltype requires a driver license. Please enter your driver license "
+"This angel type requires a driver license. Please enter your driver license "
"information!"
msgstr ""
"Dieser Elfentyp benötigt Führerschein-Infos. Bitte trage Deine Führerschein-"
"Infos ein!"
msgid ""
-"You are unconfirmed for this angeltype. Please go to the introduction for %s "
+"You are unconfirmed for this angel type. Please go to the introduction for %s "
"to get confirmed."
msgstr ""
"Du bist noch nicht für diesen Elfentyp bestätigt. Bitte gehe zur Einführung "
@@ -937,7 +917,7 @@ msgstr "Supporter"
msgid "Members"
msgstr "Mitglieder"
-msgid "Add"
+msgid "general.add"
msgstr "Hinzufügen"
msgid "Confirm all"
@@ -949,33 +929,6 @@ msgstr "Alle ablehnen"
msgid "Membership"
msgstr "Mitgliedschaft"
-msgid "Event Name"
-msgstr "Event Name"
-
-msgid "Event Name is shown on the start page."
-msgstr "Event Name wird auf der Startseite angezeigt."
-
-msgid "Event Welcome Message"
-msgstr "Event Willkommens-Nachricht"
-
-msgid ""
-"Welcome message is shown after successful registration. You can use markdown."
-msgstr ""
-"Die Willkommens-Nachricht wird nach einer erfolgreichen Registrierung "
-"angezeigt. Du kannst Markdown benutzen."
-
-msgid "Buildup date"
-msgstr "Aufbau Datum"
-
-msgid "Event start date"
-msgstr "Event Start Datum"
-
-msgid "Teardown end date"
-msgstr "Abbau Ende Datum"
-
-msgid "Event end date"
-msgstr "Event Ende Datum"
-
msgid "Angels needed in the next 3 hrs"
msgstr "Benötigte Elfen in den nächsten 3 Stunden"
@@ -1003,14 +956,14 @@ msgstr "Meine Schicht"
msgid "Help needed"
msgstr "Hilfe benötigt"
-msgid "Other angeltype needed / collides with my shifts"
+msgid "Other angel type needed / collides with my shifts"
msgstr "Andere Elfentypen benötigt / kollidiert mit meinen Schichten"
msgid "Shift is full"
msgstr "Schicht ist voll"
-msgid "Shift is running/ended or you have not arrived"
-msgstr "Schicht läuft/vorbei oder du bist noch nicht angekommen"
+msgid "Shift is running/has ended, you have not arrived or signup is blocked otherwise"
+msgstr "Schicht läuft/ist vorbei, du bist noch nicht angekommen oder das eintragen ist blockiert"
msgid "Add more angels"
msgstr "Mehr Elfen hinzufügen"
@@ -1027,13 +980,10 @@ msgid "ended"
msgstr "vorbei"
msgid "please arrive for signup"
-msgstr "Ankommen zum Eintragen"
+msgstr "Komme an um dich einzutragen"
-msgid "not yet"
-msgstr "noch nicht"
-
-msgid "Become %s"
-msgstr "Werde ein %s"
+msgid "not yet possible"
+msgstr "noch nicht möglich"
msgid "m-d"
msgstr "d.m."
@@ -1065,14 +1015,17 @@ msgstr "Schicht Anmeldung"
msgid "Freeloaded"
msgstr "Geschwänzt"
-msgid "Freeload comment (Only for shift coordination):"
-msgstr "Schwänzer Kommentar (Nur für die Schicht-Koordination):"
+msgid "Freeloaded by %s"
+msgstr "Geschwänzt gesetzt durch %s"
+
+msgid "Freeload comment (Only for shift coordination and supporters):"
+msgstr "Schwänzer Kommentar (Nur für Supporter und die Schicht-Koordination):"
msgid "Edit shift entry"
msgstr "Schichteintrag bearbeiten"
msgid "Angel:"
-msgstr "Elf:"
+msgstr "Elfen:"
msgid "Date, Duration:"
msgstr "Termin, Dauer:"
@@ -1092,9 +1045,8 @@ msgstr "bearbeitet am %s von %s"
msgid "History ID: %s"
msgstr "Historien-ID: %s"
-msgid "This shift is in the far future and becomes available for signup at %s."
-msgstr ""
-"Diese Schicht liegt in der fernen Zukunft und du kannst dich ab %s eintragen."
+msgid "This shift is in the far future. It becomes available for signup at %s."
+msgstr "Diese Schicht liegt in der fernen Zukunft. Du kannst dich ab %s eintragen."
msgid "Do you really want to add supporter rights for %s to %s?"
msgstr "Sollen %s %s als neuen Supporter bekommen?"
@@ -1111,14 +1063,17 @@ msgstr "Möchtest Du wirklich alle Benutzer als %s bestätigen?"
msgid "Do you really want to confirm %s for %s?"
msgstr "Möchtest Du wirklich %s für %s bestätigen?"
-msgid "Do you really want to delete %s from %s?"
-msgstr "Möchtest Du wirklich %s von %s entfernen?"
+msgid "Do you really want to remove \"%s\" from \"%s\"?"
+msgstr "Möchtest Du wirklich \"%s\" von \"%s\" entfernen?"
+
+msgid "Do you really want to leave \"%2$s\"?"
+msgstr "Möchtest Du \"%2$s\" wirklich verlassen?"
msgid "Do you really want to add %s to %s?"
msgstr "Möchtest Du wirklich %s zu %s hinzufügen?"
-msgid "Do you want to become a %2$s?"
-msgstr "Möchtest Du ein %2$s werden?"
+msgid "Do you want to join %2$s?"
+msgstr "Möchtest Du %2$s beitreten?"
msgid "Confirm user"
msgstr "Benutzer bestätigen"
@@ -1131,10 +1086,10 @@ msgstr "Zurück zum Profil"
msgid ""
"Do you really want to delete the user including all his shifts and every "
-"other piece of his data?"
+"other piece of his data? All created shifts, news, answers etc. will be reassigned to you."
msgstr ""
-"Möchtest Du wirklich den Elf inklusive aller seiner Schichten und allen "
-"anderen seiner Daten löschen?"
+"Möchtest Du wirklich den Elfen inklusive aller seiner Schichten und allen "
+"anderen seiner Daten löschen? Alle erstellten Schichten, News, Antworten usw. werden auf dich übertragen."
msgid "Your password"
msgstr "Dein Passwort"
@@ -1148,15 +1103,9 @@ msgstr "Elf kann noch %d Gutscheine bekommen und ist FA."
msgid "Number of vouchers given out"
msgstr "Anzahl Gutscheine bekommen"
-msgid "Voucher"
-msgstr "Gutschein"
-
msgid "Freeloads"
msgstr "Schwänzereien"
-msgid "T-shirt"
-msgstr "T-Shirt"
-
msgid "Last login"
msgstr "Letzter Login"
@@ -1211,8 +1160,8 @@ msgstr "iCal Export"
msgid "JSON Export"
msgstr "JSON Export"
-msgid "Your night shifts between %d and %d am count twice for the %s score."
-msgstr "Deine Nachtschichten zwischen %d und %d Uhr zählen für den %s Score doppelt."
+msgid "Night shifts between %d and %d am are multiplied by %d for the %s score."
+msgstr "Nachtschichten zwischen %d und %d Uhr werden für den %4$s Score mit %3$d multipliziert."
msgid ""
"Go to the shifts table to sign yourself up for some "
@@ -1262,13 +1211,6 @@ msgstr ""
"Bitte gib Dein geplantes Abreisedatum an, damit wir ein Gefühl für die Abbau-"
"Planung bekommen."
-msgid ""
-"You freeloaded at least %s shifts. Shift signup is locked. Please go to "
-"heavens desk to be unlocked again."
-msgstr ""
-"Du hast mindestens %s Schichten geschwänzt. Schicht-Registrierung ist "
-"gesperrt. Bitte gehe zum Himmelsschreibtisch um wieder entsperrt zu werden."
-
msgid "tshirt.required.hint"
msgstr "Bitte gib eine T-Shirt-Größe in deinen Einstellungen an."
@@ -1303,7 +1245,7 @@ msgstr ""
"dass der Elf bereits sein T-Shirt erhalten hat."
msgid "Here you can reset the password of this angel:"
-msgstr "Hier kannst du das Passwort für diesen Elf zurücksetzen:"
+msgstr "Hier kannst du das Passwort für diesen Elfen zurücksetzen:"
msgid "Here you can define the user groups of the angel:"
msgstr "Hier kannst du die Benutzergruppen des Elfs definieren:"
@@ -1354,12 +1296,6 @@ msgstr "Goodie Statistik"
msgid "Remove goodie"
msgstr "Goodie entfernen"
-msgid "Got goodie"
-msgstr "Goodie bekommen"
-
-msgid "Goodie?"
-msgstr "Goodie?"
-
msgid "Angel has got a goodie."
msgstr "Elf hat ein Goodie bekommen."
@@ -1410,6 +1346,12 @@ msgstr "Pflichtfeld"
msgid "form.user_select"
msgstr "Wähle einen User"
+msgid "form.tags"
+msgstr "Tags"
+
+msgid "form.tags.info"
+msgstr "Komma separierte Liste von Tags"
+
msgid "schedule.import"
msgstr "Programm importieren"
@@ -1535,7 +1477,7 @@ msgid "news.comments.delete.title"
msgstr "Kommentar \"%s\" löschen"
msgid "notification.news.updated.introduction"
-msgstr "Die News %1$s wurde aktualisiert"
+msgstr "Die News \"%1$s\" wurde aktualisiert"
msgid "notification.news.updated.text"
msgstr "Du kannst sie dir unter %3$s anschauen."
@@ -1606,6 +1548,13 @@ msgstr "Diese E-Mail-Adresse ist bereits vergeben."
msgid "settings.profile.email_shiftinfo"
msgstr "Das %s darf mir E-Mails senden (z.B. wenn sich meine Schichten ändern)."
+msgid "registration.email_system"
+msgstr "Das %s darf mir E-Mails senden "
+"(z.B. wenn sich meine Schichten ändern, ich neue private Nachrichten bekomme oder es neue News gibt)."
+
+msgid "registration.email_system.info"
+msgstr "Genauere Einstellungen sind in deinem Profil möglich."
+
msgid "settings.profile.email_news"
msgstr "Benachrichtige mich bei neuen News."
@@ -1615,19 +1564,41 @@ msgstr "Benachrichtige mich bei neuen privaten Nachrichten."
msgid "settings.profile.email_by_human_allowed"
msgstr "Erlaube Himmel-Elfen mich per E-Mail zu kontaktieren."
-msgid "settings.profile.email_goody"
+msgid "settings.profile.email_goodie"
+msgstr "Um gegebenenfalls Voucher für das nächste gleichartige Event zu erhalten stimme ich zu, "
+"dass mein Nick, E-Mail-Adresse und geleistete Arbeit solange gespeichert werden."
+
+msgid "settings.profile.email_tshirt"
msgstr "Um gegebenenfalls Voucher für das nächste gleichartige Event zu erhalten stimme ich zu, "
"dass mein Nick, E-Mail-Adresse, geleistete Arbeit und T-Shirt-Größe solange gespeichert werden."
msgid "settings.profile.privacy"
-msgstr "Dies kann jederzeit durch eine E-Mail an %1$s widerrufen werden."
+msgstr ""
+"Diese Zustimmung kann während des Events in den Profil-Einstellungen, sowie, auch nach dem Event, "
+"per E-Mail an %1$s, widerrufen werden."
msgid "settings.profile.shirt_size"
msgstr "T-Shirt-Größe"
+msgid "settings.profile.shirt_size.hint"
+msgstr "Ein straight-cut T-Shirt hat breite Schultern und einen fast quadratischen Körper. "
+"Ein fitted-cut (tailliertes) T-Shirt hat eine geschwungene Seitennaht, die an der Taille schmaler "
+"ist und einen größeren Brust- sowie Hüft-Umfang hat. "
+"Normalerweise fallen fitted-cut (taillierte) T-Shirts kleiner aus als straight-cut T-Shirts in der gleichen Größe, "
+"außerdem sind die Größen von Marke zu Marke unterscheiden."
+
+msgid "settings.profile.shirt.link"
+msgstr "Mehr Informationen"
+
msgid "settings.profile.angeltypes.info"
msgstr "Du kannst deine Elfentypen auf der Elfentypen-Seite verwalten."
+msgid "profile.my_shifts"
+msgstr "Meine Schichten"
+
+msgid "settings.profile"
+msgstr "Profil"
+
msgid "settings.password"
msgstr "Passwort"
@@ -1708,11 +1679,31 @@ msgstr "Gabelstapler"
msgid "settings.certificates.ifsg_light"
msgstr "Ich wurde vor Ort nach IfSG §43 (Frikadellendiplom light) belehrt."
+msgid "settings.certificates.ifsg_light_admin"
+msgstr "Wurde vor Ort nach IfSG §43 (Frikadellendiplom light) belehrt."
+
msgid "settings.certificates.ifsg"
msgstr "Ich habe eine Belehrung nach §43 IfSG (Frikadellendiplom) bei meinem Gesundheitsamt "
"erhalten und innerhalb von 3 Monaten die Zweitbelehrung durch uns oder meinen Arbeitgeber/Koch/Verein bekommen. "
"Zusätzlich ist die Zweitbelehrung nicht älter als zwei Jahre."
+msgid "settings.certificates.ifsg_admin"
+msgstr "Hat eine Belehrung nach §43 IfSG (Frikadellendiplom) vom Gesundheitsamt "
+"erhalten und innerhalb von 3 Monaten die Zweitbelehrung durch uns oder einen Arbeitgeber/Koch/Verein bekommen. "
+"Zusätzlich ist die Zweitbelehrung nicht älter als zwei Jahre."
+
+msgid "settings.certificates.confirmed"
+msgstr "Zertifikat bestätigt"
+
+msgid "settings.certificates.ifsg_confirmed.hint"
+msgstr "Deine Gesundheitsbelehrung wurde bestätigt, du kannst deine Angaben nicht mehr selber ändern."
+
+msgid "settings.certificates.drive_confirmed.hint"
+msgstr "Dein Führerschein wurde bestätigt, du kannst deine Angaben nicht mehr selber ändern."
+
+msgid "settings.certificates.confirmation.info"
+msgstr "Du hast persönlich überprüft, dass die Zertifizierung / Bescheinigung den Anforderungen genügt."
+
msgid "settings.certificates.success"
msgstr "Zertifikate wurden erfolgreich aktualisiert."
@@ -1760,9 +1751,12 @@ msgstr "API"
msgid "settings.api.about"
msgstr ""
-"Die API erlaubt es dir, über externe Programme, mit dem Elfensystem zu interagieren. "
+"Die API erlaubt es dir, über externe Programme, mit dem %s zu interagieren. "
"Sie ist noch nicht vollständig, wir arbeiten aber daran sie zu erweitern.\n"
-"Der API Einstiegspunkt befindet sich unter `%s` und ist in der [OpenAPI Spezifikation](%s) beschrieben.\n"
+"Der Einstiegspunkt der API befindet sich unter `%s` und ist in der [OpenAPI Spezifikation](%s) beschrieben."
+
+msgid "settings.api.about.warning"
+msgstr ""
"Teile deinen persönlichen API Key mit niemandem, er erlaubt es deine persönlichen Daten einzusehen "
"und Änderungen in deinem Namen durch zu führen!"
@@ -1814,18 +1808,15 @@ msgstr "FAQ Eintrag bearbeiten"
msgid "faq.add"
msgstr "FAQ Eintrag erstellen"
-msgid "faq.question"
-msgstr "Frage"
-
-msgid "faq.message"
-msgstr "Antwort"
-
msgid "faq.delete.title"
msgstr "FAQ \"%s\" löschen"
msgid "question.questions"
msgstr "Fragen"
+msgid "question.admin"
+msgstr "Fragen beantworten"
+
msgid "question.faq_link"
msgstr "Hast du eine generelle Frage? Vielleicht ist diese schon in den FAQ beantwortet."
@@ -1844,6 +1835,21 @@ msgstr "Antwort"
msgid "question.delete.title"
msgstr "Frage \"%s\" löschen"
+msgid "question.contact_options"
+msgstr "Weitere Kontaktmöglichkeiten: "
+
+msgid "tag.tags"
+msgstr "Tags"
+
+msgid "tag.edit"
+msgstr "Tag bearbeiten"
+
+msgid "tag.add"
+msgstr "Tag erstellen"
+
+msgid "tag.delete.title"
+msgstr "Tag \"%s\" löschen"
+
msgid "user.edit.shirt"
msgstr "T-Shirt bearbeiten"
@@ -1917,7 +1923,8 @@ msgid "angeltypes.about"
msgstr "Teams-/Aufgabenbeschreibung"
msgid "angeltypes.about.text"
-msgstr "Hier findest Du die Liste der Teams und ihrer Aufgaben. Wenn Du weitere Fragen hast, schaue in den FAQ nach."
+msgstr "Hier findest Du die Liste der Teams und ihrer Aufgaben. Wenn Du weitere Fragen hast, "
+"schaue in den FAQ nach."
msgid "angeltypes.restricted.hint"
msgstr "Dieser Elfentyp benötigt eine Einweisung bei einem Einführungstreffen. "
@@ -1926,9 +1933,6 @@ msgstr "Dieser Elfentyp benötigt eine Einweisung bei einem Einführungstreffen.
msgid "angeltypes.can-change-later"
msgstr "Du kannst Deine Auswahl später in den Einstellungen ändern."
-msgid "angeltypes.email"
-msgstr "E-Mail"
-
msgid "angeltypes.hide_on_shift_view"
msgstr "Auf Schicht-Ansicht ausblenden"
@@ -1975,6 +1979,12 @@ msgstr "Schichttyp \"%s\" löschen"
msgid "shifttype.required_angels"
msgstr "Benötigte Elfen (bei Fahrplan import)"
+msgid "shifttype.edit.signup_advance_hours"
+msgstr "Selbsteintragen im voraus in Stunden"
+
+msgid "shifttype.edit.signup_advance_hours.info"
+msgstr "Anzahl Stunden vor Schicht start in welchen die Eintragung möglich ist"
+
msgid "event.day"
msgstr "Tag %1$d"
@@ -1993,6 +2003,11 @@ msgstr "Eventdaten"
msgid "registration.what_todo"
msgstr "Was möchtest Du machen?"
+msgid "registration.jobs"
+msgstr ""
+"Weitere Informationen wie Du uns helfen kannst findest du in der "
+"Teams-/Aufgabenbeschreibung."
+
msgid "registration.register"
msgstr "Registrieren"
@@ -2033,7 +2048,7 @@ msgid "user.info.hint"
msgstr ""
"Wird auf der Benutzer Seite für Schichtkoordinatoren und Admins angezeigt. "
"Wenn ein Elf nicht als angekommen markiert ist, "
-"entfernt eine Benutzer Info die nicht-angekommen Nachricht im Systemmenü des Elfs."
+"entfernt eine Benutzer Info die nicht-angekommen Nachricht im Systemmenü des Elfen."
msgid "user_info.not_arrived_hint"
msgstr "Wenn du dich für Schichten eintragen willst, komm gerne im Himmel vorbei."
@@ -2064,3 +2079,50 @@ msgstr "Schicht Ort wurde von %s nach %s verschoben"
msgid "notification.shift.updated.shift"
msgstr "Die aktualisierte Schicht:"
+
+msgid "admin_shifts.no_locations"
+msgstr "Es wurde noch kein Ort erstellt. Ohne können keine Schichten erstellt werden."
+
+msgid "admin_shifts.no_shifttypes"
+msgstr "Es wurde noch kein Schichttyp erstellt. Ohne können keine Schichten erstellt werden."
+
+msgid "admin_shifts.no_angeltypes"
+msgstr "Es wurde noch kein Elfentyp erstellt. Ohne können keine Schichten erstellt werden."
+
+msgid "shift.sign_out.hint"
+msgstr "Du kannst dich bis %s Stunden vor dem Start der Schicht austragen. "
+"Wenn du nicht zu deiner Schicht kommen kannst, lass dich vom Himmel austragen."
+
+msgid "Password reset in progress"
+msgstr "Passwort zurücksetzen aktiv"
+
+msgid "freeload.info.goodie"
+msgstr "Du warst bei dieser Schicht nicht anwesend. "
+"Die doppelte Länge der Schicht wurde von deinem %s abgezogen. "
+"Bitte wende dich bei Fragen an den Himmel."
+
+msgid "freeload.info"
+msgstr "Du warst bei dieser Schicht nicht anwesend. "
+"Bitte wende dich bei Fragen an den Himmel."
+
+msgid "freeload.freeloader.info"
+msgstr ""
+"Du warst bei mindestens %s Schichten nicht anwesend. Deshalb ist die Schicht-Registrierung "
+"gesperrt. Bitte gehe zum Himmel um wieder entsperrt zu werden."
+
+msgid "freeload.freeloaded.info.goodie"
+msgstr ""
+"War ein Elf bei einer Schicht nicht anwesend, "
+"wird die doppelte Länge der Schicht von dem %s abgezogen. "
+"Bei %s geschwänzten Schichten wird die Schicht-Registration für den Elf gesperrt."
+
+msgid "freeload.freeloaded.info"
+msgstr ""
+"Der Elf war bei einer Schicht nicht anwesend. "
+"Bei %s geschwänzten Schichten wird die Schicht-Registration für den Elf gesperrt."
+
+msgid "config.config"
+msgstr "Konfiguration"
+
+msgid "config.edit.success"
+msgstr "Konfiguration erfolgreich angepasst"