{
  "app": {
    "name": "Trainingstagebuch",
    "title": "Trainingstagebuch"
  },
  "common": {
    "loading": "Lade...",
    "save": "Speichern",
    "saved": "Gespeichert",
    "cancel": "Abbrechen",
    "delete": "Löschen",
    "edit": "Bearbeiten",
    "add": "Hinzufügen",
    "close": "Schließen",
    "confirm": "Bestätigen",
    "yes": "Ja",
    "no": "Nein",
    "search": "Suchen",
    "filter": "Filter",
    "actions": "Aktionen",
    "back": "Zurück",
    "next": "Weiter",
    "previous": "Zurück",
    "submit": "Absenden",
    "reset": "Zurücksetzen",
    "all": "Alle",
    "today": "Heute",
    "time": "Zeit",
    "new": "Neu",
    "update": "Aktualisieren",
    "create": "Erstellen",
    "remove": "Entfernen",
    "select": "Auswählen",
    "download": "herunterladen",
    "choose": "Wählen",
    "apply": "Anwenden",
    "clear": "Löschen",
    "details": "Details",
    "view": "Anzeigen",
    "name": "Name",
    "date": "Datum",
    "status": "Status",
    "type": "Typ",
    "description": "Beschreibung",
    "active": "Aktiv",
    "inactive": "Inaktiv",
    "enabled": "Aktiviert",
    "disabled": "Deaktiviert",
    "required": "Erforderlich",
    "optional": "Optional",
    "in": "in",
    "min": "Min",
    "minutes": "Minuten",
    "hours": "Stunden",
    "days": "Tage",
    "weeks": "Wochen",
    "months": "Monate",
    "years": "Jahre",
    "ok": "OK"
  },
  "navigation": {
    "home": "Startseite",
    "members": "Mitglieder",
    "diary": "Tagebuch",
    "approvals": "Freigaben",
    "statistics": "Trainings-Statistik",
    "tournaments": "Turniere",
    "clubTournaments": "Vereinsturniere",
    "tournamentParticipations": "Turnierteilnahmen",
    "schedule": "Spielpläne",
    "clubSettings": "Vereinseinstellungen",
    "predefinedActivities": "Vordefinierte Aktivitäten",
    "teamManagement": "Team-Verwaltung",
    "permissions": "Berechtigungen",
    "logs": "System-Logs",
    "memberTransfer": "Mitgliederübertragung",
    "myTischtennisAccount": "myTischtennis-Account",
    "clickTtAccount": "HTTV / click-TT Account",
    "clickTtBrowser": "HTTV / click-TT",
    "personalSettings": "Persönliche Einstellungen",
    "logout": "Ausloggen",
    "login": "Einloggen",
    "register": "Registrieren",
    "dailyBusiness": "Tagesgeschäft",
    "competitions": "Wettbewerbe",
    "settings": "Einstellungen",
    "backToHome": "Zur Startseite"
  },
  "club": {
    "select": "Verein auswählen",
    "selectPlaceholder": "Verein wählen...",
    "new": "Neuer Verein",
    "load": "Laden",
    "name": "Vereinsname",
    "create": "Verein erstellen",
    "createTitle": "Verein anlegen",
    "members": "Mitglieder",
    "trainingDiary": "Trainingstagebuch",
    "noAccess": "Für diesen Verein wurde Dir noch kein Zugriff gestattet.",
    "requestAccess": "Zugriff beantragen",
    "openRequests": "Offene Anfragen auf Zugriff",
    "title": "Verein",
    "openAccessRequests": "Offene Anfragen auf Zugriff",
    "diary": "Trainingstagebuch",
    "accessDenied": "Zugriff auf den Verein nicht gestattet.",
    "errorLoadingRequests": "Fehler beim Laden der offenen Anfragen",
    "accessRequested": "Zugriff wurde angefragt.",
    "accessRequestPending": "Der Zugriff auf diesen Verein ist beantragt. Bitte haben Sie etwas Geduld.",
    "accessRequestFailed": "Zugriffsanfrage konnte nicht gestellt werden."
  },
  "auth": {
    "login": "Einloggen",
    "logout": "Ausloggen",
    "register": "Registrieren",
    "email": "E-Mail",
    "password": "Passwort",
    "forgotPassword": "Passwort vergessen?",
    "rememberMe": "Angemeldet bleiben",
    "loginSuccess": "Erfolgreich eingeloggt",
    "logoutSuccess": "Erfolgreich ausgeloggt",
    "sessionExpired": "Deine Sitzung ist abgelaufen. Du wirst abgemeldet.",
    "noAccount": "Noch kein Konto?",
    "hasAccount": "Bereits ein Konto?",
    "toLogin": "Zum Login",
    "loginFailed": "Login fehlgeschlagen. Bitte Zugangsdaten prüfen und erneut versuchen.",
    "registerSuccess": "Registrierung erfolgreich! Bitte prüfen Sie Ihre E-Mails, um den Account zu aktivieren.",
    "registerFailed": "Registrierung fehlgeschlagen. Bitte versuchen Sie es erneut.",
    "activate": "Aktivieren",
    "activateAccount": "Account aktivieren",
    "accountActivated": "Account aktiviert! Du kannst dich jetzt anmelden.",
    "activationFailed": "Aktivierung fehlgeschlagen. Bitte überprüfe den Link oder versuche es erneut.",
    "forgotPasswordDescription": "Gib deine E-Mail-Adresse ein. Du erhältst einen Link, um dein Passwort zurückzusetzen.",
    "sendResetLink": "Link senden",
    "sending": "Wird gesendet...",
    "resetEmailSent": "Falls ein Konto mit dieser E-Mail existiert, wurde ein Link zum Zurücksetzen gesendet. Bitte prüfe dein Postfach (auch den Spam-Ordner).",
    "resetRequestFailed": "Anfrage fehlgeschlagen. Bitte versuche es erneut.",
    "resetPassword": "Neues Passwort vergeben",
    "newPassword": "Neues Passwort",
    "confirmPassword": "Passwort bestätigen",
    "saveNewPassword": "Passwort speichern",
    "saving": "Wird gespeichert...",
    "passwordResetSuccess": "Dein Passwort wurde erfolgreich geändert. Du kannst dich jetzt mit deinem neuen Passwort anmelden.",
    "passwordsDoNotMatch": "Die Passwörter stimmen nicht überein.",
    "passwordTooShort": "Das Passwort muss mindestens 6 Zeichen lang sein.",
    "resetFailed": "Passwort konnte nicht geändert werden. Der Link ist möglicherweise abgelaufen."
  },
  "settings": {
    "title": "Einstellungen",
    "personalSettings": "Persönliche Einstellungen",
    "language": "Sprache",
    "languageDescription": "Wähle deine bevorzugte Sprache für die Anwendung",
    "languageChanged": "Sprache erfolgreich geändert",
    "selectLanguage": "Sprache auswählen"
  },
  "languages": {
    "de": "Deutsch",
    "en-GB": "English (Englisch (GB))",
    "en-US": "English (Englisch (US))",
    "en-AU": "English (Englisch (AU))",
    "de-CH": "Schwiizerdütsch (Schweizer Deutsch)",
    "fr": "Français (Französisch)",
    "es": "Español (Spanisch)",
    "it": "Italiano (Italienisch)",
    "pl": "Polski (Polnisch)",
    "ja": "日本語 (Japanisch)",
    "zh": "中文 (Chinesisch)",
    "tl": "Tagalog (Tagalog)",
    "th": "ไทย (Thai)",
    "fil": "Filipino (Filipino)"
  },
  "messages": {
    "success": "Erfolg",
    "error": "Fehler",
    "warning": "Warnung",
    "info": "Information",
    "confirm": "Bestätigen",
    "cancel": "Abbrechen",
    "successfullyLoaded": "Erfolgreich geladen",
    "recordsFound": "Datensätze gefunden",
    "recordsDisplayed": "angezeigt",
    "invalidFile": "Ungültige Datei",
    "pleaseSelectImageFile": "Bitte wähle eine Bilddatei aus.",
    "fileTooLarge": "Datei zu groß",
    "imageMaxSize": "Das Bild darf maximal 5 MB groß sein.",
    "note": "Hinweis"
  },
  "members": {
    "title": "Mitglieder",
    "memberInfo": "Mitglieder-Info",
    "activeMembers": "Aktive Mitglieder",
    "testMembers": "Testmitglieder",
    "inactiveMembers": "Inaktive Mitglieder",
    "generatePhoneList": "Telefonliste generieren",
    "onlyActiveMembers": "Es werden nur aktive Mitglieder ausgegeben",
    "updateRatings": "TTR/QTTR von myTischtennis aktualisieren",
    "updating": "Aktualisiere...",
    "transferMembers": "Mitglieder übertragen",
    "newMember": "Neues Mitglied",
    "editMember": "Mitglied bearbeiten",
    "createNewMember": "Neues Mitglied anlegen",
    "firstName": "Vorname",
    "lastName": "Nachname",
    "street": "Straße",
    "postalCode": "PLZ",
    "city": "Ort",
    "birthdate": "Geburtsdatum",
    "phones": "Telefonnummern",
    "emails": "E-Mail-Adressen",
    "addPhone": "Telefonnummer hinzufügen",
    "addEmail": "E-Mail-Adresse hinzufügen",
    "phoneNumber": "Telefonnummer",
    "emailAddress": "E-Mail-Adresse",
    "parent": "Elternteil",
    "parentName": "Name (z.B. Mutter, Vater)",
    "primary": "Primär",
    "gender": "Geschlecht",
    "genderUnknown": "Unbekannt",
    "genderMale": "Männlich",
    "genderFemale": "Weiblich",
    "genderDiverse": "Divers",
    "picsInInternetAllowed": "Pics in Internet erlaubt",
    "testMembership": "Testmitgliedschaft",
    "memberFormHandedOver": "Mitgliedsformular ausgehändigt",
    "trainingGroups": "Trainingsgruppen",
    "noGroupsAssigned": "Keine Gruppen zugeordnet",
    "noGroupsAvailable": "Keine Gruppen verfügbar",
    "addGroup": "Gruppe hinzufügen...",
    "remove": "Entfernen",
    "image": "Bild",
    "selectFile": "Datei auswählen",
    "camera": "Kamera",
    "imagePreview": "Vorschau des Mitgliedsbildes",
    "change": "Ändern",
    "create": "Anlegen",
    "clearFields": "Felder leeren",
    "showInactiveMembers": "Inaktive Mitglieder anzeigen",
    "ageGroup": "Altersklasse",
    "adults": "Erwachsene (20+)",
    "j19": "J19 (19 und jünger)",
    "j17": "J17 (17 und jünger)",
    "j15": "J15 (15 und jünger)",
    "j13": "J13 (13 und jünger)",
    "j11": "J11 (11 und jünger)",
    "clearFilters": "Filter zurücksetzen",
    "imageInternet": "Bild (Inet?)",
    "testMember": "Testm.",
    "name": "Name, Vorname",
    "ttrQttr": "TTR / QTTR",
    "address": "Adresse",
    "active": "Aktiv",
    "actions": "Aktionen",
    "phoneNumberShort": "Telefon-Nr.",
    "emailAddressShort": "Email-Adresse",
    "trainingParticipations": "Trainingsteilnahmen",
    "memberImage": "Mitgliedsbild",
    "inactive": "inaktiv",
    "sixOrMoreParticipations": "6 oder mehr Trainingsteilnahmen",
    "threeOrMoreParticipations": "3 oder mehr Trainingsteilnahmen",
    "noTestMembership": "Keine Testmitgliedschaft mehr",
    "formHandedOver": "Mitgliedsformular ausgehändigt",
    "deactivateMember": "Mitglied deaktivieren",
    "notes": "Notizen",
    "exercises": "Übungen",
    "memberImages": "Mitgliedsbilder",
    "testMembershipRemoved": "Testmitgliedschaft entfernt.",
    "errorRemovingTestMembership": "Fehler beim Entfernen der Testmitgliedschaft.",
    "formMarkedAsHandedOver": "Mitgliedsformular als ausgehändigt markiert.",
    "errorMarkingForm": "Fehler beim Markieren des Formulars.",
    "deactivateMemberTitle": "Mitglied deaktivieren",
    "deactivateMemberConfirm": "Möchten Sie \"{name}\" wirklich deaktivieren?",
    "memberDeactivated": "Mitglied deaktiviert",
    "errorDeactivatingMember": "Fehler beim Deaktivieren des Mitglieds",
    "errorSavingMember": "Fehler beim Speichern des Mitglieds",
    "errorAddingToGroup": "Fehler beim Hinzufügen zur Gruppe",
    "errorRemovingFromGroup": "Fehler beim Entfernen aus der Gruppe",
    "imageUpdated": "Bild wurde aktualisiert",
    "errorRotatingImage": "Fehler beim Drehen des Bildes",
    "imageDeleted": "Bild wurde gelöscht.",
    "errorDeletingImage": "Bild konnte nicht gelöscht werden",
    "primaryImageUpdated": "Hauptbild wurde aktualisiert.",
    "errorSettingPrimaryImage": "Hauptbild konnte nicht gesetzt werden",
    "errorUploadingImage": "Bild konnte nicht hochgeladen werden",
    "errorLoadingImage": "Fehler beim Laden des Bildes",
    "phoneList": "Telefonliste.pdf",
    "errorLoadingTrainingParticipations": "Fehler beim Laden der Trainingsteilnahmen",
    "errorUpdatingRatings": "Fehler beim Aktualisieren der TTR/QTTR-Werte",
    "errorTransfer": "Fehler bei der Übertragung",
    "subtitle": "Mitglieder suchen, filtern und direkt bearbeiten.",
    "closeEditor": "Editor schließen",
    "visibleMembers": "Sichtbare Mitglieder",
    "search": "Suche",
    "searchPlaceholder": "Name, Ort, Telefon oder E-Mail suchen",
    "memberScope": "Mitgliedsbereich",
    "scopeAll": "Alle",
    "scopeActive": "Aktiv",
    "scopeTest": "Probe",
    "scopeNeedsForm": "Formular ungeprüft",
    "scopeDataIncomplete": "Daten unvollständig",
    "scopeInactive": "Inaktiv",
    "resultsVisible": "Mitglieder sichtbar",
    "editHint": "Ein Klick auf eine Zeile öffnet den Editor.",
    "editorCreateHint": "Neues Mitglied anlegen und Kontaktdaten direkt erfassen.",
    "editorEditHint": "Daten von {name} bearbeiten.",
    "transferSuccessTitle": "Übertragung erfolgreich",
    "transferErrorTitle": "Fehler bei der Übertragung",
    "clickTtRequestPending": "Click-TT-Antrag läuft",
    "clickTtRequestAction": "Spielberechtigung in click-TT beantragen",
    "clickTtRequestTitle": "Click-TT-Antrag starten",
    "clickTtRequestConfirm": "Soll für {name} der automatisierte Click-TT-Antrag gestartet werden?",
    "clickTtRequestHint": "Der Antrag wird im Backend automatisiert durch den Click-TT-Workflow geführt.",
    "clickTtRequestSuccess": "Bitte loggen Sie sich noch auf click-tt ein und senden Sie den Antrag ab.",
    "clickTtRequestError": "Der Click-TT-Antrag konnte nicht eingereicht werden.",
    "clickTtRequestFailedLog": "Click-TT-Antrag fehlgeschlagen",
    "deleteImageTitle": "Bild löschen",
    "deleteImageConfirm": "Möchten Sie dieses Bild wirklich löschen?",
    "parentFallback": "Elternteil",
    "loadingMembers": "Lade Mitglieder...",
    "errorLoadingMembers": "Laden der Mitgliederliste fehlgeschlagen.",
    "scopeNotTraining": "Nicht mehr im Training",
    "notInTrainingTooltip": "Seit {weeks} Trainingswochen ohne Teilnahme",
    "status": "Status",
    "contact": "Kontakt",
    "noPhoneShort": "Kein Telefon",
    "noEmailShort": "Keine E-Mail",
    "noAddressShort": "Keine Adresse",
    "clickTtSubmitted": "Click-TT gestellt",
    "markRegular": "Als regulär markieren",
    "markFormReceived": "Formular geprüft",
    "clickTtRequestShort": "Click-TT",
    "clickTtRequestPendingShort": "Läuft ...",
    "memberDetails": "Mitgliedsdetails",
    "previewLastTraining": "Letztes Training",
    "previewNoLastTraining": "Noch keine Teilnahme",
    "phoneListForSelection": "Telefonliste für Auswahl",
    "markFormsForSelection": "Formulare für Auswahl prüfen",
    "markRegularForSelection": "Auswahl als regulär markieren",
    "phoneListSelectionFile": "Telefonliste-Auswahl.pdf",
    "batchFormsMarkedSuccess": "{count} Formular(e) als geprüft markiert.",
    "batchFormsMarkedEmpty": "In der aktuellen Auswahl gibt es keine ungeprüften Formulare.",
    "batchMarkedRegularSuccess": "{count} Probe-Mitglied(er) als regulär markiert.",
    "batchMarkedRegularEmpty": "In der aktuellen Auswahl gibt es keine Probe-Mitglieder.",
    "batchPartialFailure": "{success} erfolgreich, {failed} fehlgeschlagen.",
    "sortBy": "Sortieren nach",
    "sortLastName": "Nachname",
    "sortFirstName": "Vorname",
    "sortBirthday": "Geburtstag",
    "sortAge": "Alter",
    "age": "Alter",
    "dataQuality": "Datenqualität",
    "dataQualityComplete": "Daten vollständig",
    "dataIssueBirthdate": "Geburtsdatum fehlt",
    "dataIssuePhone": "Telefon fehlt",
    "dataIssueEmail": "E-Mail fehlt",
    "dataIssueAddress": "Adresse fehlt",
    "dataIssueGender": "Geschlecht ungeklärt",
    "openTasks": "Offene Aufgaben",
    "noOpenTasks": "Keine offenen Aufgaben",
    "taskVerifyForm": "Formular prüfen",
    "taskReviewTrialStatus": "Probe-Status prüfen",
    "taskCheckTrainingStatus": "Trainingsstatus prüfen",
    "taskCheckDataQuality": "Datenqualität prüfen",
    "taskCheckClickTt": "Click-TT-Spielberechtigung prüfen",
    "taskActionVerify": "Prüfen",
    "taskActionMarkRegular": "Regulär setzen",
    "taskActionReview": "Öffnen",
    "taskActionRequest": "Anfragen",
    "toggleSortDirection": "Sortierrichtung wechseln",
    "sortLastTraining": "Letztes Training",
    "sortOpenTasks": "Offene Aufgaben",
    "exportPreview": "Exportvorschau",
    "exportMembersSelected": "Mitglieder aktuell ausgewählt",
    "exportPhones": "Telefon",
    "exportReachableByPhone": "mit Telefonnummer",
    "exportEmails": "E-Mail",
    "exportReachableByEmail": "mit E-Mail-Adresse",
    "exportPreviewNames": "Vorschau",
    "exportPreviewEmpty": "Keine Mitglieder in der aktuellen Auswahl",
    "exportCsv": "CSV exportieren",
    "exportCsvFile": "mitglieder-auswahl.csv",
    "copyPhones": "Telefone kopieren",
    "copyEmails": "E-Mails kopieren",
    "copyPhonesSuccess": "Telefonliste in die Zwischenablage kopiert.",
    "copyPhonesEmpty": "In der aktuellen Auswahl gibt es keine Telefonnummern.",
    "copyEmailsSuccess": "E-Mail-Liste in die Zwischenablage kopiert.",
    "copyEmailsEmpty": "In der aktuellen Auswahl gibt es keine E-Mail-Adressen.",
    "composeEmail": "E-Mail vorbereiten",
    "copyContactSummary": "Kontaktübersicht kopieren",
    "copyContactSummarySuccess": "Kontaktübersicht in die Zwischenablage kopiert."
  },
  "diary": {
    "title": "Trainingstagebuch",
    "date": "Datum",
    "noEntries": "Keine Einträge",
    "deleteDate": "Datum löschen",
    "createNew": "Neu anlegen",
    "gallery": "Mitglieder-Galerie",
    "galleryCreating": "Galerie wird erstellt…",
    "selectTrainingGroup": "Trainingsgruppe auswählen",
    "selectTrainingGroupPlaceholder": "Bitte wählen...",
    "suggestion": "Vorschlag",
    "nextAppointment": "Nächster Termin",
    "applySuggestion": "Vorschlag übernehmen",
    "skipSuggestion": "Ohne Vorschlag fortfahren",
    "createNewDate": "Neues Datum anlegen",
    "activeTrainingDay": "Aktiver Trainingstag",
    "trainingDaySection": "Trainingstag",
    "trainingDayChecklist": "Abschlusscheck",
    "trainingStart": "Trainingsbeginn",
    "trainingEnd": "Trainingsende",
    "trainingWindow": "Trainingsfenster",
    "trainingWindowUnset": "Noch nicht gesetzt",
    "groupsLabel": "Gruppen",
    "groupsSection": "Gruppen",
    "createDate": "Datum anlegen",
    "editTrainingTimes": "Trainingszeiten bearbeiten",
    "updateTimes": "Zeiten aktualisieren",
    "groupManagement": "Gruppenverwaltung",
    "createGroups": "Gruppen erstellen",
    "trainingPlan": "Trainingsplan",
    "planActivitiesCount": "Plan-Aktivitäten",
    "timeblocksCount": "Zeitblöcke",
    "planEmptyState": "Im Trainingsplan ist noch nichts eingetragen.",
    "planAddHint": "Neue Plan-Elemente fügst du über die Aktionen oben hinzu.",
    "startTime": "Startzeit",
    "group": "Gruppe...",
    "timeblock": "Zeitblock",
    "assignParticipants": "Teilnehmer zuordnen",
    "addTimeblock": "Zeitblock",
    "activities": "Aktivitäten",
    "freeActivities": "Freie Aktivitäten",
    "noFreeActivitiesYet": "Noch keine freien Aktivitäten erfasst.",
    "addActivity": "Aktivität hinzufügen",
    "bookAccident": "Unfall buchen",
    "activity": "Aktivität",
    "duration": "Dauer",
    "activityImage": "Aktivitätsbild",
    "activityDrawing": "Aktivitätszeichnung",
    "today": "Heute",
    "existingGroups": "Vorhandene Gruppen",
    "leader": "Leiter",
    "deleteGroup": "Gruppe löschen",
    "numberOfGroups": "Anzahl Gruppen",
    "addGroup": "Gruppe hinzufügen",
    "activityOrTimeblock": "Aktivität / Zeitblock",
    "durationMinutes": "Dauer (Min)",
    "standardActivities": "Standard-Aktivitäten",
    "standardDurationShort": "Min",
    "standardActivityAddError": "Standard-Aktivität konnte nicht hinzugefügt werden.",
    "addGroupActivity": "Gruppen-Aktivität hinzufügen",
    "addGroupButton": "+ Gruppe",
    "all": "Alle",
    "selectGroup": "Gruppe auswählen...",
    "activityPlaceholder": "Aktivität",
    "assignShort": "Zuordnen",
    "statusReadyShort": "Bereit",
    "statusOpenShort": "Offen",
    "openPlanItemsLabel": "Plan-Status",
    "openPlanItems": "{count} offen",
    "unassignedPlanItems": "{count} offen",
    "durationExampleLong": "z.B. 2x7 oder 3*5",
    "durationExampleShort": "z.B. 2x7",
    "showImage": "Bild/Zeichnung anzeigen",
    "participants": "Teilnehmer",
    "searchParticipants": "Teilnehmer suchen",
    "filterAll": "Alle",
    "filterPresent": "Anwesend",
    "filterAbsent": "Abwesend",
    "filterExcused": "Entschuldigt",
    "filterTest": "Probe",
    "participantStatusNone": "Kein Status",
    "participantStatusExcused": "Entschuldigt",
    "participantStatusCancelled": "Abgesagt",
    "quickAdd": "+ Schnell hinzufügen",
    "selectTags": "Tags auswählen",
    "createDrawing": "Übungszeichnung erstellen",
    "overallActivity": "Gesamt-Aktivität",
    "editActivity": "Aktivität bearbeiten",
    "editGroupActivity": "Gruppen-Aktivität bearbeiten",
    "assignParticipantsForGroupActivity": "Teilnehmer für Gruppen-Aktivität zuordnen",
    "delete": "Löschen",
    "min": "Min",
    "errorLoadingPredefinedActivities": "Fehler beim Laden der vordefinierten Aktivitäten",
    "selectParticipantAndNote": "Bitte wählen Sie einen Teilnehmer aus und geben Sie einen Notiztext ein.",
    "selectGroupAndActivity": "Bitte wählen Sie eine Gruppe und geben Sie eine Aktivität ein.",
    "dateCannotBeDeleted": "Datum kann nicht gelöscht werden",
    "dateCannotBeDeletedDetails": "Es sind noch Inhalte vorhanden (Trainingplan, Teilnehmer, Aktivitäten, Unfälle oder Notizen).",
    "confirmDelete": "Löschen bestätigen",
    "confirmDeleteDate": "Möchten Sie dieses Datum wirklich löschen?",
    "confirmDeleteDateDetails": "Alle zugehörigen Daten werden ebenfalls gelöscht.",
    "noParticipants": "Keine Teilnehmer für diesen Trainingstag vorhanden.",
    "mustCreateAtLeastTwoGroups": "Beim ersten Erstellen müssen mindestens 2 Gruppen erstellt werden!",
    "oneGroupAdded": "1 Gruppe wurde erfolgreich hinzugefügt!",
    "groupsCreated": "{count} Gruppen wurden erfolgreich erstellt!",
    "errorCreatingGroups": "Fehler beim Erstellen der Gruppen",
    "confirmDeleteGroup": "Möchten Sie die Gruppe \"{name}\" wirklich löschen?",
    "groupDeletedSuccessfully": "Gruppe wurde erfolgreich gelöscht!",
    "errorDeletingGroup": "Fehler beim Löschen der Gruppe",
    "errorCreatingActivity": "Fehler beim Erstellen der Aktivität",
    "trainingPlanAsPDF": "Trainingsplan als PDF",
    "trainingPlanPdfShort": "Ablaufplan als PDF",
    "trainingDayAsPDF": "Trainingstag als PDF herunterladen",
    "trainingDayAsPDFShort": "Trainingstag als PDF",
    "trainingDaySummaryPdfShort": "Teilnehmerübersicht als PDF",
    "minutes": "Minuten",
    "formHandedOver": "Mitgliedsformular ausgehändigt",
    "errorOccurred": "Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut.",
    "trainingTimesUpdated": "Trainingszeiten erfolgreich aktualisiert.",
    "noActiveTrainingDay": "Kein Trainingstag ausgewählt.",
    "statusReady": "Zeiten und Trainingsplan sind gepflegt.",
    "statusEmpty": "Dieser Trainingstag ist noch leer.",
    "statusInProgress": "Dieser Trainingstag ist teilweise vorbereitet.",
    "formMarkedAsHandedOver": "Mitgliedsformular als ausgehändigt markiert",
    "errorMarkingForm": "Fehler beim Markieren des Mitgliedsformulars",
    "dateNoLongerCurrent": "Ausgewähltes Datum war nicht mehr aktuell. Bitte erneut versuchen.",
    "activityRequired": "Bitte geben Sie eine Aktivität ein.",
    "activityNotFound": "Aktivität nicht gefunden. Bitte wählen Sie eine aus der Liste aus."
  },
  "home": {
    "welcome": "Willkommen im TrainingsTagebuch",
    "heroTitle": "Vereinsverwaltung, Trainingsplanung und Turniere – alles an einem Ort",
    "heroSubtitle": "Das TrainingsTagebuch ist die umfassende Lösung für Vereine: Mitgliederverwaltung, Trainingsgruppen, Trainingszeiten, Trainingstagebuch, Turnierorganisation, Team-Management, MyTischtennis-Integration, Statistiken und mehr – DSGVO‑konform und einfach zu bedienen.",
    "startFree": "Kostenlos starten",
    "heroFeatures": {
      "memberManagement": "Mitglieder- und Gruppenverwaltung",
      "trainingGroups": "Trainingsgruppen & Trainingszeiten",
      "trainingDiary": "Trainingstagebuch & Dokumentation",
      "tournaments": "Turniere (intern, offen, offiziell)",
      "teamManagement": "Team-Management & Ligen",
      "myTischtennis": "MyTischtennis-Integration",
      "statistics": "Statistiken & Auswertungen"
    },
    "howItWorks": "So funktioniert es",
    "step1": {
      "title": "Registrieren",
      "description": "Lege kostenlos einen Account an und aktiviere ihn per E‑Mail."
    },
    "step2": {
      "title": "Verein anlegen",
      "description": "Erstelle deinen Verein, lade Mitglieder ein und richte Gruppen ein."
    },
    "step3": {
      "title": "Planen & dokumentieren",
      "description": "Plane Termine, dokumentiere Trainings und verfolge Fortschritte."
    },
    "forWhom": "Für wen ist das TrainingsTagebuch?",
    "forWhomText": "Das TrainingsTagebuch ist die umfassende Plattform für Vereine, Abteilungen und Trainerteams. Es vereint Mitgliederverwaltung mit Trainingsgruppen und -zeiten, detailliertes Trainingstagebuch, umfassende Turnierorganisation (interne, offene und offizielle Turniere), Team-Management mit Liga-Integration, MyTischtennis-Synchronisation, aussagekräftige Statistiken und Auswertungen sowie ein flexibles Berechtigungssystem in einer modernen Web‑Anwendung. Durch klare Rollen (Admin, Trainer, Mannschaftsführer, Mitglied) und individuelle Berechtigungen behalten Verantwortliche die Kontrolle, während Mitglieder selbstbestimmt mitwirken können. Ideal für Mannschafts‑, Racket‑ und Individualsportarten – vom Nachwuchs bis zum Leistungsbereich. DSGVO‑konform mit transparenten Freigaben und vollständigem Aktivitätsprotokoll.",
    "faq": "Häufige Fragen",
    "faqFree": {
      "question": "Ist die Nutzung kostenlos?",
      "answer": "Ja, du kannst kostenlos starten. Erweiterungen können später folgen."
    },
    "faqPrivacy": {
      "question": "Wie steht es um den Datenschutz?",
      "answer": "Wir setzen auf Datensparsamkeit, transparente Freigaben, rollenbasierte Zugriffe und vollständiges Aktivitätsprotokoll. Die Anwendung ist DSGVO‑konform."
    },
    "whatCanYouDo": "Was kannst du mit dem TrainingsTagebuch machen?",
    "rolesAndPrivacy": "Rollen, Berechtigungen & DSGVO",
    "features": {
      "manageMembers": "Mitglieder verwalten",
      "manageMembersDesc": "Erstelle Mitgliedsprofile, bilde Gruppen und halte Kontakt‑ und Freigabestände aktuell.",
      "keepDiary": "Trainingstagebuch führen",
      "keepDiaryDesc": "Dokumentiere Inhalte, Umfang und Anwesenheiten jeder Einheit – nachvollziehbar und strukturiert.",
      "organizeSchedules": "Spielpläne organisieren",
      "organizeSchedulesDesc": "Plane Spiele, Turniere und Veranstaltungen inklusive Gruppen, Runden und Ergebnissen.",
      "statistics": "Statistiken & Auswertung",
      "statisticsDesc": "Erhalte Trainings‑ und Teilnahmeübersichten, erkenne Entwicklung und plane gezielt.",
      "security": "Sicherheit & DSGVO",
      "securityDesc": "Datenschutzfreundliche Architektur, Freigaben durch Mitglieder und transparente Zugriffe.",
      "predefinedActivities": "Vordefinierte Aktivitäten",
      "predefinedActivitiesDesc": "Nutze Vorlagen für wiederkehrende Übungen und beschleunige deine Dokumentation.",
      "trainingGroups": "Trainingsgruppen & Zeiten",
      "trainingGroupsDesc": "Organisiere Trainingsgruppen, definiere Trainingszeiten und verwalte Gruppenzuordnungen.",
      "officialTournaments": "Offizielle Turniere",
      "officialTournamentsDesc": "Importiere und verwalte offizielle Turniere, verwalte Teilnahmen und Ergebnisse.",
      "teamManagement": "Team-Management",
      "teamManagementDesc": "Verwalte Mannschaften, Ligen, Spielpläne und Ergebnisse für deinen Verein.",
      "myTischtennisIntegration": "MyTischtennis-Integration",
      "myTischtennisIntegrationDesc": "Automatische Synchronisation mit MyTischtennis.de für Spielergebnisse und Statistiken.",
      "pdfExport": "PDF-Export",
      "pdfExportDesc": "Exportiere Trainingstage als PDF mit Teilnehmern, Aktivitäten und Statistiken.",
      "permissionSystem": "Berechtigungssystem",
      "permissionSystemDesc": "Rollenbasierte Zugriffe (Admin, Trainer, Mannschaftsführer, Mitglied) mit individuellen Berechtigungen.",
      "activityLog": "Aktivitätsprotokoll",
      "activityLogDesc": "Vollständiges Logging aller Aktionen für Transparenz und Nachvollziehbarkeit."
    },
    "faqInstallation": {
      "question": "Benötige ich eine Installation?",
      "answer": "Nein, es handelt sich um eine Web‑Anwendung. Du nutzt sie direkt im Browser – auf Desktop, Tablet und Smartphone."
    },
    "faqTournaments": {
      "question": "Welche Turnierarten werden unterstützt?",
      "answer": "Du kannst interne Turniere, offene Turniere und offizielle Turniere (z.B. von Verbänden) verwalten. Offizielle Turniere können importiert werden."
    },
    "faqMyTischtennis": {
      "question": "Funktioniert die MyTischtennis-Integration automatisch?",
      "answer": "Ja, nach der Einrichtung synchronisiert sich die Anwendung automatisch mit MyTischtennis.de und importiert Spielergebnisse und Statistiken."
    },
    "faqTrainingGroups": {
      "question": "Kann ich Trainingsgruppen und -zeiten verwalten?",
      "answer": "Ja, du kannst Trainingsgruppen anlegen, Trainingszeiten definieren und Mitglieder den Gruppen zuordnen. Das Trainingstagebuch schlägt automatisch passende Gruppen und Zeiten vor."
    },
    "faqPermissions": {
      "question": "Wie funktioniert das Berechtigungssystem?",
      "answer": "Es gibt vier Rollen: Admin, Trainer, Mannschaftsführer und Mitglied. Jede Rolle hat spezifische Berechtigungen, die individuell angepasst werden können."
    },
    "registerNow": "Jetzt kostenlos registrieren",
    "haveAccount": "Ich habe schon einen Account",
    "welcomeBack": "Herzlich Willkommen zurück! Du bist erfolgreich eingeloggt.",
    "authenticatedFeatures": {
      "manageMembers": "Mitglieder verwalten",
      "manageMembersDesc": "Verwalte deine Vereinsmitglieder, erstelle Trainingsgruppen und behalte den Überblick über alle Teilnehmer.",
      "keepDiary": "Trainingstagebuch führen",
      "keepDiaryDesc": "Dokumentiere Trainingsaktivitäten, Teilnehmer, Aktivitäten und Notizen für jeden Trainingstag.",
      "trainingGroups": "Trainingsgruppen & Zeiten",
      "trainingGroupsDesc": "Organisiere Trainingsgruppen, definiere Trainingszeiten und verwalte Gruppenzuordnungen.",
      "manageTournaments": "Turniere verwalten",
      "manageTournamentsDesc": "Erstelle interne und offene Turniere, importiere offizielle Turniere und verwalte Teilnahmen.",
      "teamManagement": "Team-Management",
      "teamManagementDesc": "Verwalte Mannschaften, Ligen, Spielpläne und Ergebnisse für deinen Verein.",
      "myTischtennisIntegration": "MyTischtennis-Integration",
      "myTischtennisIntegrationDesc": "Synchronisiere automatisch Spielergebnisse und Statistiken mit MyTischtennis.de.",
      "statistics": "Statistiken & Auswertungen",
      "statisticsDesc": "Erhalte detaillierte Trainings- und Teilnahmeübersichten sowie Aktivitätsstatistiken.",
      "pdfExport": "PDF-Export",
      "pdfExportDesc": "Exportiere Trainingstage als PDF mit Teilnehmern, Aktivitäten und Statistiken."
    }
  },
  "tournaments": {
    "internalTournaments": "Interne Turniere",
    "openTournaments": "Offene Turniere",
    "miniChampionships": "Minimeisterschaften",
    "newMiniChampionship": "Neue Minimeisterschaft",
    "miniChampionshipYear": "Jahr",
    "miniChampionshipYearHint": "12 = in diesem Jahr 12 oder 13 Jahre, 10 = 10 oder 11, 8 = 9 und jünger",
    "miniChampionshipLocation": "Ort",
    "tournamentParticipations": "Turnierteilnahmen",
    "date": "Datum",
    "newTournament": "Neues Turnier",
    "unknownDate": "Unbekanntes Datum",
    "name": "Name",
    "tournamentName": "Turniername",
    "winningSets": "Gewinnsätze",
    "numberOfTables": "Anzahl Tische",
    "table": "Tisch",
    "playerOne": "Spieler 1",
    "playerTwo": "Spieler 2",
    "groupsLabel": "Gruppen",
    "knockoutLabel": "KO",
    "distributeTables": "Freie Tische verteilen",
    "distributeTablesResult": "Tischverteilung",
    "noFreeTables": "Keine freien Tische verfügbar.",
    "noAssignableMatches": "Keine Spiele verfügbar, bei denen beide Spieler frei sind.",
    "tablesDistributed": "Tische wurden verteilt.",
    "errorDistributingTables": "Fehler beim Verteilen der Tische.",
    "missingDataPDF": "Fehlende Daten als PDF",
    "missingDataPDFTitle": "Fehlende Teilnehmerdaten – Minimeisterschaft",
    "missingDataPDFSubtitle": "Bitte die fehlenden Daten (markiert mit ____) bei den Teilnehmern erfragen und hier notieren.",
    "allDataComplete": "Alle Teilnehmerdaten sind vollständig.",
    "allDataCompleteTop3": "Alle Daten der Top-3-Platzierten sind vollständig.",
    "noTop3Yet": "Es stehen noch keine Top-3-Platzierungen fest.",
    "missingDataPDFTitleTop3": "Fehlende Daten – Top 3 Minimeisterschaft",
    "missingDataPDFSubtitleTop3": "Fehlende Daten der ersten 3 Plätze (markiert mit ____) bitte erfragen und hier notieren.",
    "address": "Adresse",
    "phone": "Telefon",
    "generatingPDF": "PDF wird erstellt...",
    "page": "Seite",
    "create": "Erstellen",
    "exportPDF": "PDF exportieren",
    "playInGroups": "Spielen in Gruppen",
    "classes": "Klassen",
    "save": "Speichern",
    "cancel": "Abbrechen",
    "edit": "Bearbeiten",
    "delete": "Löschen",
    "className": "Klassenname",
    "addClass": "Klasse hinzufügen",
    "noClassesYet": "Noch keine Klassen vorhanden. Fügen Sie eine neue Klasse hinzu.",
    "singles": "Einzel",
    "doubles": "Doppel",
    "genderAll": "Alle",
    "genderMixed": "Mixed",
    "minBirthYear": "Geboren im Jahr oder später",
    "selectClass": "Klasse auswählen",
    "tabConfig": "Konfiguration",
    "tabGroups": "Gruppen",
    "tabParticipants": "Teilnehmer",
    "tabResults": "Ergebnisse",
    "tabPlacements": "Platzierungen",
    "finalPlacements": "Endplatzierungen",
    "groupPlacements": "Gruppenplatzierungen",
    "noPlacementsYet": "Noch keine Platzierungen vorhanden.",
    "participants": "Teilnehmer",
    "seeded": "Gesetzt",
    "gaveUp": "Aufgegeben",
    "statusOpen": "Offen",
    "statusLive": "Live",
    "statusFinished": "Fertig",
    "gaveUpHint": "Spieler hat aufgegeben – alle Spiele zählen für den Gegner (11:0) bzw. 0:0 bei beiden aufgegeben.",
    "club": "Verein",
    "class": "Klasse",
    "group": "Gruppe",
    "action": "Aktion",
    "unknown": "Unbekannt",
    "clubMember": "(Vereinsmitglied)",
    "selectParticipant": "-- Teilnehmer auswählen --",
    "add": "Hinzufügen",
    "loadFromTraining": "Aus Trainingstag laden",
    "addExternalParticipant": "Externen Teilnehmer hinzufügen",
    "firstName": "Vorname",
    "lastName": "Nachname",
    "optional": "optional",
    "birthdate": "Geburtsdatum",
    "addClubMember": "Vereinsmitglied hinzufügen",
    "advancersPerGroup": "Aufsteiger pro Gruppe",
    "maxGroupSize": "Maximale Gruppengröße",
    "groupsPerClass": "Gruppen",
    "groupsPerClassHint": "Geben Sie für jede Klasse die Anzahl der Gruppen ein (0 = keine Gruppen für diese Klasse):",
    "showClass": "Klasse anzeigen",
    "allClasses": "Alle Klassen",
    "withoutClass": "Ohne Klasse",
    "currentClass": "Aktive Klasse",
    "selectClassPrompt": "Bitte wählen Sie oben eine Klasse aus.",
    "numberOfGroups": "Anzahl Gruppen",
    "createGroups": "Gruppen erstellen",
    "randomizeGroups": "Zufällig verteilen",
    "resetGroups": "Gruppen zurücksetzen",
    "groupsOverview": "Gruppenübersicht",
    "groupNumber": "Gruppe",
    "index": "Index",
    "position": "Platz",
    "player": "Spieler",
    "points": "Punkte",
    "sets": "Sätze",
    "diff": "Diff",
    "pointsRatio": "Spielpunkte",
    "livePosition": "Live-Platz",
    "pairings": "Doppel-Paarungen",
    "addPairing": "Paarung hinzufügen",
    "selectPlayer": "Spieler auswählen",
    "external": "Extern",
    "randomPairings": "Zufällige Doppel-Paarungen",
    "errorMoreSeededThanUnseeded": "Es gibt mehr gesetzte als nicht gesetzte Spieler. Zufällige Paarungen können nicht erstellt werden.",
    "randomPairingsCreated": "Zufällige Paarungen wurden erstellt.",
    "resetGroupMatches": "Gruppenspiele",
    "cleanupOrphanedMatches": "Verwaiste Spiele aufräumen",
    "groupMatches": "Gruppenspiele",
    "round": "Runde",
    "encounter": "Begegnung",
    "result": "Ergebnis",
    "setDiff": "Satzdifferenz",
    "createMatches": "Spiele erstellen",
    "startKORound": "K.o.-Runde starten",
    "deleteKORound": "K.o.-Runde",
    "email": "E-Mail",
    "forForwarding": "für Weitermeldung",
    "showPlayerDetails": "Spielerdetails anzeigen",
    "noPlayerDataAvailable": "Keine Spielerdaten verfügbar",
    "dataNotRecorded": "Noch nicht erfasst",
    "resultsRanking": "Rangliste",
    "newSetPlaceholder": "Neuen Satz, z. B. 11:7",
    "finishMatch": "Abschließen",
    "correctMatch": "Korrigieren",
    "markMatchLive": "Als laufend markieren",
    "unmarkMatchLive": "Laufend-Markierung entfernen",
    "stageConfigTitle": "Zwischenrunde & Endrunde",
    "stageConfigLoading": "Lade Zwischenrunden …",
    "stageConfigIntro": "Zwischenrunde ist optional. Wenn du sie aktivierst, gibt es danach immer eine Endrunde. KO-Endrunde wird als ein einziges Feld erzeugt.",
    "stageConfigCurrentSetup": "Aktuelle Struktur",
    "stageFlowWithIntermediate": "Vorrunde -> Zwischenrunde ({stage2}) -> Endrunde ({final})",
    "stageFlowDirectFinal": "Vorrunde -> Endrunde ({final})",
    "stageStep1": "Schritt 1",
    "stageStep2": "Schritt 2",
    "stageStep3": "Schritt 3",
    "stageStep1Title": "Zwischenrunde festlegen",
    "stageStep1Description": "Entscheide zuerst, ob nach der Vorrunde noch eine zusätzliche Runde gespielt werden soll.",
    "stageStep2Description": "Lege fest, wie die Zwischenrunde aussieht und wie viele Gruppen dort gebraucht werden.",
    "stageFinalDescription": "Bestimme, ob die Endrunde als Gruppenphase oder direkt als K.-o.-Feld gespielt wird.",
    "useIntermediateStage": "Zwischenrunde verwenden",
    "intermediateRound": "Zwischenrunde (Runde 2)",
    "finalRound": "Endrunde",
    "playThirdPlace": "Platz 3 ausspielen",
    "roundMode": "Modus",
    "roundGroupCount": "Anzahl Gruppen",
    "promotionRule12": "Weiterkommen: Vorrunde → Zwischenrunde (1→2)",
    "promotionRuleFinal": "Weiterkommen: Runde {from} → Runde {to}",
    "promotionRuleDescription12": "Hier legst du fest, welche Plätze aus jeder Vorrundengruppe in die Zwischenrunde kommen.",
    "promotionRuleDescriptionFinalKnockout": "Hier legst du fest, welche Plätze aus der vorherigen Runde in das K.-o.-Feld kommen.",
    "promotionRuleDescriptionFinalGroups": "Hier legst du fest, welche Plätze aus der vorherigen Runde in die Gruppen der Endrunde kommen.",
    "poolRuleLabel": "Regel {number}",
    "poolRuleSummary": "Plätze {places} gehen in {target}",
    "poolRulePreview": "Aus jeder Gruppe gehen Platz {places} weiter in {target}.",
    "poolRulePlacesLabel": "Welche Plätze kommen weiter?",
    "poolRulePlacesHelp": "Beispiel: 1 oder 1,2",
    "poolRuleTargetLabel": "Wohin gehen diese Plätze?",
    "poolRuleQuickExamples": "Schnellbeispiele:",
    "targetGroupsLabel": "{count} Gruppen",
    "poolRuleTargetKnockout": "das K.-o.-Feld",
    "poolRuleTargetGroupsDetailed": "{count} Zielgruppen",
    "addPoolRule": "Pool-Regel hinzufügen",
    "noPoolRulesYet12": "Noch keine Regeln. Beispiel: Plätze 1 und 2 -> obere Runde-2-Gruppen.",
    "noPoolRulesYetFinal": "Noch keine Regeln. Beispiel: Plätze 1 und 2 -> Endrunde.",
    "placesFromEachGroup": "Plätze aus jeder Gruppe (z. B. 1,2)",
    "target": "Ziel",
    "targetGroupCount": "Ziel-Gruppenanzahl",
    "saveRounds": "Runden speichern",
    "createFinalFromPreliminary": "Endrunde aus Vorrunde erstellen",
    "createIntermediateFromPreliminary": "Zwischenrunde aus Vorrunde erstellen",
    "createFinalFromIntermediate": "Endrunde aus Zwischenrunde erstellen",
    "transferQualifiedToFinalFromPreliminary": "Qualifizierte Spieler direkt in die Endrunde übernehmen",
    "transferQualifiedToIntermediate": "Qualifizierte Spieler in die Zwischenrunde übernehmen",
    "transferQualifiedToFinalFromIntermediate": "Qualifizierte Spieler in die Endrunde übernehmen",
    "transferQualifiedToFinalFromPreliminaryDesc": "Nutzt die Regeln Vorrunde -> Endrunde und erzeugt daraus direkt die qualifizierten Teilnehmer.",
    "transferQualifiedToIntermediateDesc": "Nutzt die Regeln Vorrunde -> Zwischenrunde und übernimmt die qualifizierten Teilnehmer.",
    "transferQualifiedToFinalFromIntermediateDesc": "Nutzt die Regeln Zwischenrunde -> Endrunde und übernimmt die qualifizierten Teilnehmer.",
    "stageActionsTitle": "Nächste Aktionen",
    "stageActionsDescription": "Diese Schritte übernehmen qualifizierte Spieler in die nächste Runde.",
    "stageActionRun": "Jetzt ausführen",
    "stageActionMissingRulesHint": "Lege zuerst mindestens eine Weiterkommens-Regel an, bevor du Spieler in die nächste Runde übernimmst.",
    "stageValidationTitle": "Konfiguration prüfen",
    "stageValidationDescription": "Diese Punkte solltest du vor dem Speichern oder Übernehmen der nächsten Runde korrigieren.",
    "stageValidationGroupCountRequired": "Bitte mindestens eine gültige Gruppenanzahl festlegen.",
    "stageValidationNoRules": "Für {stage} ist noch keine Weiterkommens-Regel angelegt.",
    "stageValidationRulePlacesRequired": "Trage mindestens einen Platz ein, der weiterkommen soll.",
    "stageValidationRulePlacesInvalid": "Die Platzangabe ist ungültig. Erlaubt sind nur positive ganze Zahlen wie 1 oder 1,2.",
    "stageValidationRulePlacesDuplicate": "Eine Regel darf denselben Platz nicht mehrfach enthalten.",
    "stageValidationRulePlacesGap": "Die Platzangabe hat Lücken. Meist ist eine zusammenhängende Reihenfolge wie 1,2 oder 1,2,3 gemeint.",
    "stageValidationRulesOverlap": "Platz {place} ist doppelt vergeben, nämlich in Regel {first} und Regel {second}.",
    "stageValidationTargetGroupsRequired": "Bitte eine gültige Anzahl von Zielgruppen angeben.",
    "stageValidationTargetGroupCountMismatch": "Die Anzahl der Zielgruppen muss zur Zielrunde passen. Erwartet: {expected}.",
    "stageValidationTargetTypeMismatch": "Das Ziel dieser Regel muss zur Zielrunde passen. Erwartet: {target}.",
    "stageValidationKnockoutTargetOnly": "Bei einer K.-o.-Endrunde ist hier nur das K.-o.-Feld als Ziel erlaubt.",
    "stageValidationKnockoutNeedsTwoPlayers": "Für ein K.-o.-Feld werden mindestens 2 Qualifizierte benötigt.",
    "stageValidationKnockoutByesLikely": "Mit voraussichtlich {count} Qualifizierten wird das K.-o.-Feld sehr wahrscheinlich Freilose enthalten.",
    "stageValidationNotEnoughQualifiersForGroups": "Mit nur {count} Qualifizierten für {groups} Zielgruppen würden leere Gruppen entstehen.",
    "stageValidationThinGroupsLikely": "Mit {count} Qualifizierten auf {groups} Zielgruppen werden die Gruppen vermutlich sehr klein.",
    "stageValidationSuggestion": "Vorschlag: {value}",
    "stageValidationApplyFix": "Übernehmen",
    "stageValidationApplyAllFixes": "{count} Schnellkorrektur(en) anwenden",
    "stageValidationApplyTargetTypeFix": "Auf {target} umstellen",
    "stageValidationApplyTargetGroupFix": "Auf {count} Zielgruppen setzen",
    "stageValidationSaveBlocked": "Bitte zuerst die markierten Konfigurationsfehler korrigieren.",
    "ruleStatusOk": "Passt",
    "ruleStatusReview": "Prüfen",
    "ruleStatusBlocked": "Blockiert",
    "ruleStatusOkDescription": "Diese Regel passt zur aktuellen Zielrunde und kann so verwendet werden.",
    "stageFlowHealthOk": "Rundenlogik passt",
    "stageFlowHealthOkDescription": "Die Übergänge zwischen den Runden sind vollständig konfiguriert und aktuell stimmig.",
    "stageFlowHealthIncomplete": "Rundenlogik unvollständig",
    "stageFlowHealthMissingRules": "Mindestens ein Übergang hat noch keine vollständige Weiterkommens-Regel.",
    "stageFlowHealthReviewDescription": "Die Rundenlogik ist grundsätzlich nutzbar, sollte aber wegen offener Hinweise noch geprüft werden.",
    "stageFlowHealthBlocked": "Rundenlogik widersprüchlich",
    "stageFlowHealthBlockedDescription": "Mindestens eine Regel passt aktuell nicht zur Zielrunde oder enthält blockierende Konfigurationsfehler.",
    "stageFlowBreakdownOk": "Konfiguration passt",
    "stageFlowBreakdownWarnings": "{count} Hinweis(e) offen",
    "stageFlowBreakdownErrors": "{count} Fehler blockieren",
    "stageFlowBreakdownMissingRule": "Noch keine vollständige Regel angelegt",
    "stageFlowBreakdownActionAddRule": "Regel anlegen",
    "stageFlowBreakdownActionReview": "Fehler prüfen",
    "stageFlowBreakdownActionOpen": "Regel öffnen",
    "stageFlowReadinessNoGroups": "Noch keine passenden Gruppen vorhanden",
    "stageFlowReadinessIncompleteGroups": "{count} Gruppe(n) sind noch nicht vollständig entschieden",
    "stageFlowReadinessReady": "Übergang ist fachlich startklar",
    "stageFlowRecommendationTitle": "Empfohlener nächster Schritt",
    "stageFlowRecommendationFixes": "Die typischen Konfigurationsprobleme können direkt automatisch bereinigt werden.",
    "stageFlowRecommendationMissingRule": "Für {label} fehlt noch eine vollständige Regel. Lege am besten damit los.",
    "stageFlowRecommendationError": "Prüfe zuerst den ersten blockierenden Fehler in der Rundenlogik.",
    "stageFlowRecommendationWarnings": "Es gibt noch Hinweise, die du vor dem Speichern prüfen solltest.",
    "stageFlowRecommendationSave": "Die Rundenlogik ist stimmig. Du kannst die Konfiguration jetzt speichern.",
    "stageFlowPreviewMissing": "Noch keine Regel konfiguriert.",
    "stageFlowPreviewRule": "Plätze {places} gehen in {target}",
    "stageFlowPreviewRuleWithCount": "{base} (voraussichtlich {count} Qualifizierte)",
    "stageFlowQualifiedPreviewTitle": "Aktuell qualifiziert",
    "stageFlowQualifiedPreviewEntry": "G{group} · Platz {position} · {name}",
    "stageConfigMissingIds": "Kann nicht speichern: Vereins- oder Turnier-ID fehlt.",
    "stageConfigLoadError": "Fehler beim Laden der Rundenkonfiguration.",
    "stageConfigBadServerResponse": "Fehlerhafte Antwort vom Server.",
    "stageCreated": "Runde {round} wurde erstellt.",
    "stageParticipantsTransferred": "Qualifizierte Spieler wurden in {round} übernommen.",
    "atLeastOnePoolRule": "Bitte mindestens eine Pool-Regel für {label} anlegen (z. B. Plätze 1,2).",
    "enterMiniLocation": "Bitte geben Sie einen Ort ein.",
    "selectTournamentFirst": "Bitte wählen Sie zuerst ein Turnier aus.",
    "errorGeneratingPdf": "Fehler beim Generieren des PDFs.",
    "orphanedMatchesRemoved": "{count} verwaiste Spiele entfernt.",
    "noOrphanedMatchesFound": "Keine verwaisten Spiele gefunden.",
    "enterClassName": "Bitte geben Sie einen Klassennamen ein.",
    "deleteClassTitle": "Klasse löschen",
    "deleteClassConfirm": "Möchten Sie die Klasse \"{name}\" wirklich löschen?",
    "deleteClassParticipantsDetached": "Alle Teilnehmer werden von dieser Klasse entfernt.",
    "enterExternalParticipantName": "Bitte geben Sie mindestens Vorname und Nachname ein.",
    "noTournamentDate": "Kein Turnierdatum vorhanden.",
    "noValidTrainingParticipants": "Keine gültigen Teilnehmer im Trainingstag für dieses Datum gefunden.",
    "noTrainingParticipants": "Keine Teilnehmer im Trainingstag für dieses Datum gefunden.",
    "noTrainingOnDate": "Kein Trainingstag für {date} gefunden.",
    "selectTwoDifferentPlayers": "Bitte wählen Sie zwei verschiedene Spieler aus.",
    "pairingAlreadyExists": "Diese Paarung existiert bereits.",
    "participantNotFound": "Teilnehmer nicht gefunden.",
    "minimumParticipantsForPairings": "Mindestens 2 Teilnehmer für Paarungen erforderlich.",
    "deleteExistingPairingsConfirm": "Bestehende Paarungen werden gelöscht. Fortfahren?",
    "pairingsCreatedWithErrors": "{successCount} Paarungen erstellt, {errorCount} Fehler.",
    "koRound": "K.-o.-Runde",
    "errorUpdatingTournament": "Fehler beim Aktualisieren des Turniers.",
    "pleaseEnterDate": "Bitte geben Sie ein Datum ein!",
    "errorCreatingTournament": "Fehler beim Erstellen des Turniers.",
    "pleaseSelectParticipant": "Bitte wählen Sie einen Teilnehmer aus!",
    "errorCreatingGroups": "Fehler beim Erstellen der Gruppen.",
    "errorResettingKORound": "Fehler beim Zurücksetzen der K.o.-Runde.",
    "mergeClasses": "Klassen zusammenlegen (gemeinsame Gruppenphase)",
    "sourceClass": "Quelle",
    "targetClass": "Ziel",
    "strategy": "Strategie",
    "mergeSingleGroup": "Alle Spieler aus A in eine Gruppe (bei B)",
    "mergeDistribute": "Spieler aus A auf alle Gruppen (von B) verteilen",
    "outOfCompetition": "Spieler aus A außer Konkurrenz",
    "errorMergingClasses": "Fehler beim Zusammenlegen der Klassen.",
    "apply": "Übernehmen",
    "participantsNeedClassAssignment": "{count} Teilnehmer sind noch keiner Klasse zugeordnet. Diese sollten zuerst zugeordnet werden.",
    "autoAssignableParticipantsHint": "{count} davon koennen automatisch zugeordnet werden.",
    "assignmentReviewTitle": "{count} Teilnehmer brauchen eine Auswahl:",
    "conflictSuggestionLabel": "Vorschläge:",
    "workspaceProblemsTitle": "{count} offene Punkte",
    "problemConfigTitle": "Konfiguration unvollständig",
    "problemConfigDescription": "Prüfe Datum, Name, Gewinnsätze und mindestens eine Klasse.",
    "problemUnassignedTitle": "{count} Teilnehmer ohne Klasse",
    "problemUnassignedDescription": "Diese Teilnehmer brauchen noch eine manuelle Klassenzuordnung.",
    "problemUnassignedAutoDescription": "{count} davon können direkt automatisch zugeordnet werden.",
    "problemConflictsTitle": "{count} Teilnehmer mit Konflikten",
    "problemConflictsDescription": "Prüfe unpassende Klassen, fehlende Daten oder unklare Zuordnungen.",
    "problemDoublesTitle": "{count} offene Doppelpartner",
    "problemDoublesDescription": "Ein oder mehrere Doppelklassen brauchen noch Partnerzuordnungen.",
    "problemDoublesAutoDescription": "Die offene Doppelklasse kann direkt automatisch gepaart werden.",
    "problemGroupsMissingTitle": "Gruppen noch nicht erstellt",
    "problemGroupsMissingDescription": "Für das Gruppenturnier müssen zuerst Gruppen angelegt werden.",
    "problemGroupMatchesTitle": "Gruppenspiele noch nicht erzeugt",
    "problemGroupMatchesDescription": "Die Gruppen sind bereit, aber die Spiele wurden noch nicht erstellt.",
    "problemKnockoutReadyTitle": "K.-o.-Runde kann gestartet werden",
    "problemKnockoutReadyDescription": "Die Gruppenphase ist abgeschlossen und die Endrunde kann jetzt erzeugt werden.",
    "autoAssignEligible": "Automatisch zuweisen",
    "autoAssignEligibleNone": "Aktuell gibt es keine Teilnehmer mit eindeutiger automatischer Klassenzuweisung.",
    "autoAssignEligibleDone": "{count} Teilnehmer wurden automatisch zugeordnet.",
    "autoAssignEligiblePartial": "{successCount} Teilnehmer wurden automatisch zugeordnet, {errorCount} nicht.",
    "doublesPairingHint": "{count} Teilnehmer in dieser Doppelklasse haben noch keinen Partner.",
    "createSuggestedPairings": "Partner bilden",
    "placementsPendingTitle": "Platzierungen noch nicht verfügbar",
    "placementsPendingSelectedClass": "Für die aktuell gewählte Klasse gibt es noch keine Platzierungen.",
    "placementsPendingNoGroups": "Sobald Gruppenspiele oder eine Endrunde vorhanden sind, erscheinen hier die Platzierungen.",
    "placementsPendingGroups": "Gruppenplatzierungen erscheinen, sobald Gruppenspiele vorhanden sind.",
    "placementsPendingFinals": "Endplatzierungen erscheinen, sobald mehrere Gruppen oder eine Endrunde vorhanden sind.",
    "showingTournamentCount": "{visible} von {total}",
    "noMatchingTournamentsTitle": "Keine passenden Turniere",
    "noTournamentsCreatedYet": "Es wurden noch keine Turniere angelegt.",
    "adjustTournamentSearch": "Passe den Suchbegriff an oder lege ein neues Turnier an.",
    "selectedTournament": "Aktives Turnier",
    "createGroupMatches": "Gruppenspiele berechnen",
    "participantConflicts": "Konflikte",
    "unpairedDoubles": "Doppel ohne Partner",
    "noEligibleClass": "Keine passende Klasse gefunden.",
    "eligibleClassesHint": "Passt zu: {classes}",
    "warningClassMissing": "Klasse nicht gefunden",
    "warningGenderMismatch": "Geschlecht passt nicht zur Klasse",
    "warningGenderMissing": "Geschlecht fehlt für diese Klasse",
    "warningBirthDateMissing": "Geburtsdatum fehlt für diese Klasse",
    "warningTooOldForClass": "Zu alt für diese Klasse",
    "warningTooYoungForClass": "Zu jung für diese Klasse",
    "warningMissingPairing": "Doppelpartner fehlt",
    "statusConfigReady": "Konfiguration bereit",
    "statusConfigIncomplete": "Konfiguration unvollständig",
    "statusParticipantsUnassigned": "{count} ohne Klasse",
    "statusParticipantsConflicts": "{count} Teilnehmer mit Konflikten",
    "statusParticipantsReady": "{count} Teilnehmer konfliktfrei",
    "statusUnpairedDoubles": "{count} Doppel ohne Partner",
    "statusGroupsMissing": "Gruppen noch nicht erstellt",
    "statusGroupsReady": "Gruppen bereit",
    "statusGroupsRunning": "Gruppenphase läuft",
    "statusKnockoutReady": "K.-o.-Runde startklar",
    "statusKnockoutRunning": "K.-o.-Runde läuft",
    "statusTournamentCompleted": "Turnier abgeschlossen",
    "statusActionAssign": "Zuweisen",
    "statusActionReview": "Prüfen",
    "statusActionPair": "Paaren",
    "statusActionCreate": "Erstellen",
    "statusActionGenerate": "Erzeugen",
    "statusActionStart": "Starten"
  },
  "myTischtennis": {
    "title": "myTischtennis-Account",
    "linkedAccount": "Verknüpfter Account",
    "passwordSaved": "Passwort gespeichert",
    "yes": "Ja",
    "no": "Nein",
    "club": "Verein (myTischtennis)",
    "lastSuccessfulLogin": "Letzter erfolgreicher Login",
    "lastLoginAttempt": "Letzter Login-Versuch",
    "lastFetch": "Letzter Abruf",
    "autoUpdates": "Automatische Updates",
    "enabled": "Aktiviert",
    "disabled": "Deaktiviert",
    "editAccount": "Account bearbeiten",
    "testLogin": "Erneut einloggen",
    "updateHistory": "Update-History",
    "deleteAccount": "Account trennen",
    "fetchStatistics": "Datenabruf-Statistiken",
    "loadingStats": "Lade Statistiken...",
    "playerRatings": "Spielerwertungen",
    "matchResults": "Spielergebnisse",
    "leagueTables": "Ligatabellen",
    "neverFetched": "Noch nie abgerufen",
    "refreshStats": "Statistiken aktualisieren",
    "noAccount": "Kein myTischtennis-Account verknüpft.",
    "linkAccount": "Account verknüpfen",
    "about": "Über myTischtennis",
    "aboutText": "Durch die Verknüpfung Ihres myTischtennis-Accounts können Sie:",
    "aboutFeatures": {
      "import": "Automatisch Turnierdaten importieren",
      "sync": "Spielerergebnisse synchronisieren",
      "fetch": "Wettkampfdaten direkt abrufen"
    },
    "passwordNote": "Hinweis: Das Speichern des Passworts ist optional. Wenn Sie es nicht speichern, werden Sie bei jeder Synchronisation nach dem Passwort gefragt.",
    "passwordsEncrypted": "Passwörter werden verschlüsselt gespeichert"
  },
  "imprint": {
    "title": "Impressum",
    "serviceProvider": "Diensteanbieter",
    "contact": "Kontakt"
  },
  "privacy": {
    "title": "Datenschutzerklärung",
    "responsible": "Verantwortlicher",
    "purposes": "Zwecke und Rechtsgrundlagen der Verarbeitung",
    "website": "Bereitstellung der Website",
    "usage": "Nutzung des TrainingsTagebuchs",
    "consent": "Einwilligungsbasierte Vorgänge",
    "dataCategories": "Kategorien personenbezogener Daten",
    "usageData": "Nutzungsdaten",
    "registrationData": "Registrierungs-/Profildaten",
    "clubData": "Vereins-/Aktivitätsdaten",
    "memberData": "Mitgliederdaten",
    "trainingData": "Trainingsdaten",
    "tournamentData": "Turnierdaten",
    "myTischtennisData": "MyTischtennis-Daten",
    "cookies": "Cookies/Local Storage",
    "logData": "Logdaten",
    "recipients": "Empfänger"
  },
  "trainingStats": {
    "title": "Trainings-Statistik",
    "activeMembers": "Aktive Mitglieder",
    "averageParticipationCurrentMonth": "Durchschnittliche Teilnahme (aktueller Monat)",
    "averageParticipationLastMonth": "Durchschnittliche Teilnahme (letzter Monat)",
    "averageParticipationQuarter": "Durchschnittliche Teilnahme (Quartal)",
    "averageParticipationHalfYear": "Durchschnittliche Teilnahme (Halbjahr)",
    "averageParticipationYear": "Durchschnittliche Teilnahme (Jahr)",
    "trainingDays": "Trainingstage (letzte 12 Monate)",
    "memberParticipations": "Mitglieder-Teilnahmen",
    "date": "Datum",
    "weekday": "Wochentag",
    "participants": "Teilnehmer",
    "name": "Name",
    "ttr": "TTR",
    "qttr": "QTTR",
    "birthdate": "Geburtsdatum",
    "participations12Months": "Teilnahmen (12 Monate)",
    "participations3Months": "Teilnahmen (3 Monate)",
    "participationsTotal": "Teilnahmen (Gesamt)",
    "lastTraining": "Letztes Training",
    "actions": "Aktionen",
    "showDetails": "Details anzeigen"
  },
  "tournament": {
    "apply": "Übernehmen"
  },
  "clubSettings": {
    "title": "Vereins-Einstellungen",
    "settings": "Einstellungen",
    "trainingGroups": "Trainingsgruppen",
    "trainingTimes": "Trainingszeiten",
    "greetingText": "Begrüßungstext",
    "greetingPlaceholder": "Begrüßungstext für Heimspiele...",
    "placeholders": "Platzhalter",
    "homeTeam": "Name Heimmannschaft",
    "guestTeam": "Name Gastmannschaft",
    "homePlayers": "Spieler und Doppel Heimmannschaft",
    "guestPlayers": "Spieler und Doppel Gastmannschaft",
    "greetingHint": "Dieser Text erscheint im Reiter \"Begrüßung\" des Spielberichtsbogens.",
    "associationMemberNumber": "Verbands-Mitgliedsnummer",
    "associationMemberNumberPlaceholder": "z. B. 12-3456",
    "save": "Speichern",
    "saved": "Gespeichert",
    "saveFailed": "Speichern fehlgeschlagen",
    "loadFailed": "Einstellungen konnten nicht geladen werden",
    "noClubSelected": "Bitte wählen Sie zuerst einen Verein aus.",
    "myTischtennisRankings": "myTischtennis TTR/QTTR-Ranglisten",
    "myTischtennisRankingsHint": "Automatischer Abruf der Vereins-Rangliste für TTR- und QTTR-Updates der Mitglieder.",
    "autoFetchRankings": "Ranglisten automatisch abrufen",
    "myTischtennisFedNickname": "Verbandskürzel",
    "myTischtennisFedNicknamePlaceholder": "z. B. HeTTV",
    "rankingsUsesAssociationNumber": "Die Vereinsnummer für den Ranglisten-Abruf entspricht der Verbands-Mitgliedsnummer oben."
  },
  "predefinedActivities": {
    "title": "Vordefinierte Aktivitäten",
    "new": "Neu",
    "reload": "Neu laden",
    "filterAll": "Alle",
    "filterStandard": "Standard-Aktivitäten",
    "filterCustom": "Selbstdefiniert",
    "searchPlaceholder": "Kürzel suchen (z.B. 'as vh us' oder 'vh as us')...",
    "deduplicate": "Doppelungen zusammenführen",
    "selectSource": "Quelle wählen…",
    "selectTarget": "Ziel wählen…",
    "merge": "Zusammenführen",
    "editActivity": "Aktivität bearbeiten",
    "newActivity": "Neue Aktivität",
    "editDrawing": "Übungszeichnung bearbeiten",
    "createDrawing": "Übungszeichnung erstellen",
    "name": "Name",
    "code": "Kürzel",
    "duration": "Dauer (Minuten)",
    "durationText": "Dauer (Text)",
    "durationTextPlaceholder": "z.B. 2x7",
    "excludeFromStats": "Nicht in Statistik berücksichtigen",
    "description": "Beschreibung",
    "addImage": "Bild hinzufügen",
    "imageHelp": "Du kannst entweder einen Link zu einem Bild eingeben oder ein Bild hochladen:",
    "imageLink": "Bild-Link (optional)",
    "imageLinkPlaceholder": "z.B. https://example.com/bild.jpg oder /api/predefined-activities/:id/image/:imageId",
    "orUploadImage": "Oder Bild hochladen:",
    "upload": "Hochladen",
    "uploadAfterSave": "Nach Speichern hochladen",
    "uploadNote": "Hinweis: Das Bild wird erst nach dem Speichern der Aktivität hochgeladen.",
    "uploadedImages": "Hochgeladene Bilder:",
    "delete": "Löschen",
    "cancel": "Abbrechen",
    "min": "min"
  },
  "accident": {
    "reportAccident": "Unfall melden",
    "member": "Mitglied",
    "pleaseSelect": "Bitte wählen",
    "accident": "Unfall",
    "accidentDescription": "Beschreibung des Unfalls...",
    "reportedAccidents": "Gemeldete Unfälle",
    "close": "Schließen",
    "submit": "Eintragen"
  },
  "schedule": {
    "title": "Spielpläne",
    "subtitle": "Teams auswählen, Spieltage prüfen und Ligatabellen im Blick behalten.",
    "importSchedule": "Spielplanimport",
    "galleryLoading": "Galerie wird geladen…",
    "gallery": "Mitglieder-Galerie",
    "overallSchedule": "Gesamtspielplan",
    "adultSchedule": "Spielplan Erwachsene",
    "noTeamsFound": "Keine Teams für diese Saison gefunden",
    "noMatchingTeams": "Keine Teams passen zur aktuellen Suche.",
    "searchTeams": "Team oder Liga suchen",
    "selection": "Auswahl",
    "activeSelection": "Aktive Auswahl",
    "noSelectionTitle": "Noch keine Auswahl aktiv",
    "noSelectionMessage": "Wählen Sie links einen Gesamtspielplan, den Erwachsenenspielplan oder ein Team aus.",
    "scheduleTab": "Spielplan",
    "tableTab": "Tabelle",
    "downloadPDF": "Download PDF",
    "refreshTable": "Tabelle aktualisieren",
    "tableLoading": "Tabelle wird geladen…",
    "fetchTeamData": "Spielplan & Ergebnisse abrufen",
    "fetchingTeamData": "Abruf läuft…",
    "fetchStartFailed": "Abruf konnte nicht gestartet werden.",
    "fetchDataFailed": "Teamdaten konnten nicht abgerufen werden.",
    "fetchTimedOut": "Zeitüberschreitung beim Abruf.",
    "teamDataFetched": "Teamdaten erfolgreich aktualisiert.",
    "teamDataFetchedDetails": "Mannschaft: {team}\nVerarbeitete Datensätze: {count}",
    "gamesFor": "Spiele für",
    "date": "Datum",
    "time": "Uhrzeit",
    "homeTeam": "Heimmannschaft",
    "guestTeam": "Gastmannschaft",
    "result": "Ergebnis",
    "ageClass": "Altersklasse",
    "code": "Code",
    "homePin": "Heim-PIN",
    "guestPin": "Gast-PIN",
    "noGames": "Keine Spiele vorhanden",
    "leagueTable": "Ligatabelle",
    "position": "Platz",
    "team": "Team",
    "teams": "Teams",
    "matches": "Matches",
    "completedShort": "Abgeschlossen",
    "pendingShort": "Offen",
    "nextMatch": "Nächstes Spiel",
    "workspaceScheduleDescription": "{matches} Spiele, davon {completed} abgeschlossen und {pending} offen.",
    "workspaceTableDescription": "{count} Tabellenzeilen aktuell geladen.",
    "matchOverviewTitle": "Spielübersicht",
    "matchOverviewDescription": "Steuert, welche Spiele aus der aktuell gewählten Liga im Spielplan angezeigt werden.",
    "ownTeamMatches": "Eigene Mannschaft",
    "allLeagueMatches": "Alle Spiele",
    "otherTeamMatches": "Andere Mannschaft",
    "selectOtherTeam": "Andere Mannschaft wählen",
    "sets": "Sätze",
    "points": "Pkt.",
    "balls": "Bälle",
    "noTableData": "Keine Tabellendaten verfügbar",
    "galleryTitle": "Mitglieder-Galerie - Klicken Sie auf ein Bild, um als 'Bereit' zu markieren",
    "imageSize": "Bildgröße",
    "noMembersWithImages": "Keine Mitglieder mit Bildern gefunden.",
    "playerSelection": "Spielerauswahl",
    "vs": "vs",
    "loadingMembers": "Lade Mitglieder...",
    "player": "Spieler",
    "ready": "Bereit",
    "planned": "Vorgesehen",
    "played": "Gespielt",
    "noActiveMembers": "Keine aktiven Mitglieder gefunden",
    "save": "Speichern",
    "cancel": "Abbrechen",
    "openMatchReport": "Spielberichtsbogen öffnen",
    "copyCode": "Code kopieren",
    "copyHomePin": "Heim-PIN kopieren",
    "copyGuestPin": "Gast-PIN kopieren",
    "errorLoadingMembers": "Laden der Mitgliederliste fehlgeschlagen.",
    "playerSelectionSaved": "Spielerauswahl gespeichert",
    "errorSavingPlayerSelection": "Fehler beim Speichern der Spielerauswahl",
    "pleaseSelectGame": "Bitte wählen Sie zuerst ein Spiel aus",
    "errorLoadingGallery": "Galerie konnte nicht geladen werden.",
    "errorLoadingTeams": "Fehler beim Laden der Teams",
    "noLeagueForTeam": "Für dieses Team ist keine Liga hinterlegt. Bitte zuerst eine Liga zuordnen.",
    "errorLoadingMatches": "Fehler beim Laden der Matches",
    "errorLoadingOverallSchedule": "Fehler beim Laden des Gesamtspielplans",
    "errorLoadingAdultSchedule": "Fehler beim Laden des Erwachsenenspielplans",
    "noMatchesForPDF": "Keine Matches gefunden, um PDF zu generieren.",
    "errorCopying": "Fehler beim Kopieren",
    "schedulePDF": "Spielpläne.pdf",
    "selectSpecificLeague": "Bitte wählen Sie eine spezifische Liga aus, um die Tabelle zu laden.",
    "tableDataLoaded": "Tabellendaten erfolgreich von MyTischtennis geladen!",
    "errorLoadingTable": "Fehler beim Laden der Tabellendaten von MyTischtennis",
    "scheduleImportSuccess": "Spielplan erfolgreich importiert!",
    "errorImportingCSV": "Fehler beim Importieren der CSV-Datei"
  },
  "teamManagement": {
    "title": "Team-Verwaltung",
    "subtitle": "Teams auswählen, Konfiguration prüfen und Liga-Daten an einem Ort pflegen.",
    "ratingUpdates": "Rating-Updates",
    "lastRun": "Zuletzt",
    "updated": "aktualisiert",
    "error": "Fehler",
    "matchResults": "Spielergebnisse",
    "fetched": "abgerufen",
    "newTeam": "Neues Team",
    "basicSettings": "Grundeinstellungen",
    "basicSettingsIntro": "Teamname und Liga in einem ruhigen Formular prüfen und anpassen.",
    "editTeam": "Team bearbeiten",
    "createNewTeam": "Neues Team anlegen",
    "teamName": "Team-Name",
    "teamNamePlaceholder": "z.B. Herren 1, Damen 2",
    "league": "Spielklasse",
    "team": "Team",
    "teamId": "Team-ID",
    "groupId": "Gruppen-ID",
    "association": "Verband",
    "groupName": "Gruppenname",
    "noLeague": "Keine Spielklasse",
    "change": "Ändern",
    "createAndEdit": "Anlegen & Bearbeiten",
    "clearFields": "Felder leeren",
    "playerStats": "Spieleinsätze",
    "playerStatsIntro": "Schneller Überblick über Einsätze der Mannschaft in dieser Saison.",
    "refreshStats": "Aktualisieren",
    "loadingStats": "Lade Statistiken...",
    "noPlayerStats": "Keine Spieleinsätze erfasst.",
    "player": "Spieler",
    "qttr": "(Q)TTR-Wert",
    "season": "Saison",
    "seasonFull": "Gesamte Saison (ab 1. Juli)",
    "firstHalf": "Vorrunde",
    "firstHalfFull": "Vorrunde (Juli - Dezember)",
    "secondHalf": "Rückrunde",
    "secondHalfFull": "Rückrunde (ab 1. Januar)",
    "documents": "Dokumente",
    "documentsIntro": "Code- und PIN-Listen hochladen, prüfen und bei Bedarf erneut parsen.",
    "documentAvailable": "Vorhanden",
    "documentMissing": "Fehlt",
    "latestUpload": "Zuletzt hochgeladen: {date}",
    "noDocumentUploadYet": "Noch kein Dokument hochgeladen.",
    "uploadNewVersion": "Neue Version hochladen",
    "openDocument": "Anzeigen",
    "parseDocument": "Neu parsen",
    "codeList": "Code-Liste",
    "pinList": "Pin-Liste",
    "automaticJobs": "Automatische Jobs",
    "lastUpdated": "Zuletzt aktualisiert",
    "status": "Status",
    "successful": "Erfolgreich",
    "noAutomaticUpdate": "Noch keine automatische Aktualisierung",
    "myTischtennis": "MyTischtennis",
    "myTischtennisIntro": "URL einfügen, Konfiguration prüfen und bei Bedarf Daten manuell abrufen.",
    "configurationStatus": "Konfigurationsstatus",
    "manualFetch": "Abrufen",
    "noIssues": "Keine offenen Konfigurationsprobleme.",
    "parseUrlAction": "URL prüfen",
    "myTischtennisUrlPlaceholder": "MyTischtennis URL...",
    "teams": "Teams",
    "activeTeam": "Aktives Team",
    "searchTeams": "Team suchen",
    "openInWorkspace": "Zum Bearbeiten öffnen",
    "filterAll": "Alle",
    "filterConfigured": "Konfiguriert",
    "filterNeedsAttention": "Prüfen",
    "filterNoLeague": "Ohne Liga",
    "seasonUnknown": "unbekannt",
    "noTeamsYet": "Noch keine Teams vorhanden. Erstellen Sie Ihr erstes Team!",
    "noMatchingTeams": "Keine Teams passen zur aktuellen Suche oder Filterung.",
    "edit": "Bearbeiten",
    "delete": "Löschen",
    "noAssignment": "Keine Zuordnung",
    "created": "Erstellt",
    "unknown": "Unbekannt",
    "fullyConfigured": "Vollständig konfiguriert",
    "partiallyConfigured": "Teilweise konfiguriert",
    "notConfigured": "Nicht konfiguriert",
    "never": "Nie",
    "showCodeList": "Code-Liste anzeigen",
    "showPinList": "Pin-Liste anzeigen",
    "deleteTeamTitle": "Club-Team löschen",
    "deleteTeamConfirm": "Möchten Sie das Club-Team \"{name}\" wirklich löschen?",
    "errorDeletingTeam": "Fehler beim Löschen des Club-Teams.",
    "teamHasNoLeague": "Dieses Team ist keiner Liga zugeordnet.",
    "assignLeagueBeforeDocuments": "Bitte ordnen Sie dem Team zuerst eine Liga zu, damit Dokumente verarbeitet werden können.",
    "assignLeagueBeforeParsing": "Bitte ordnen Sie dem Team zuerst eine Liga zu, um PDF-Dateien zu parsen.",
    "documentParsedSummary": "{label} erfolgreich hochgeladen und geparst!\n\nGefundene Spiele: {matchesFound}\nNeue Spiele erstellt: {created}\nSpiele aktualisiert: {updated}",
    "errorsCount": "Fehler: {count}",
    "moreErrors": "... und {count} weitere",
    "noMatchesFoundTitle": "Keine Spiele gefunden",
    "noMatchesFoundDetails": "Hinweis: Keine Spiele erkannt.\nZeilen im Dokument: {lines}",
    "documentUploaded": "{label} \"{fileName}\" wurde erfolgreich hochgeladen!",
    "errorUploadingDocument": "Fehler beim Hochladen und Parsen der Datei.",
    "matchesSummary": "Gefundene Spiele: {matchesFound}\nNeue Spiele erstellt: {created}\nSpiele aktualisiert: {updated}",
    "errorParsingPdf": "Fehler beim Parsen der PDF-Datei",
    "documentNotFound": "Das ausgewählte Dokument wurde nicht gefunden.",
    "missingLeagueForTeam": "Für das ausgewählte Team wurde keine Liga übermittelt.",
    "pdfFileNotFound": "Die PDF-Datei konnte nicht gefunden werden.",
    "reuploadFile": "Bitte laden Sie die Datei erneut hoch und versuchen Sie es noch einmal.",
    "errorLoadingPdf": "Fehler beim Laden des PDFs.",
    "errorParsingUrl": "URL konnte nicht geparst werden. Bitte überprüfen Sie das Format.",
    "configureLeagueTitle": "Liga konfigurieren?",
    "tableUrlDetected": "Tabellen-URL erkannt",
    "configureLeagueDetails": "Verband: {association}\nSaison: {season}\nLiga: {league}\nGruppen-ID: {groupId}\n\nMöchten Sie diese Liga in der Datenbank konfigurieren? Dies ermöglicht es, Tabellendaten automatisch abzurufen.",
    "selectTeamTitle": "Team auswählen",
    "selectTeamFirst": "Bitte wählen Sie zuerst ein Team aus",
    "selectTeamForConfiguration": "Um die MyTischtennis-Konfiguration zu aktivieren, müssen Sie zuerst ein Team aus der Liste auswählen.",
    "teamConfiguredSuccess": "Team erfolgreich konfiguriert! Automatischer Datenabruf ist jetzt aktiv.",
    "teamConfiguredDetails": "Liga: {league}\nSaison: {season}\nAutomatischer Datenabruf ist jetzt aktiv.",
    "errorConfiguringTeam": "Team konnte nicht konfiguriert werden.",
    "leagueConfiguredSuccess": "Liga erfolgreich konfiguriert! Tabellendaten können jetzt automatisch abgerufen werden.",
    "leagueConfiguredDetails": "Liga: {league}\nSaison: {season}\nVerband: {association}\nGruppen-ID: {groupId}\n\nTabellendaten können jetzt automatisch abgerufen werden.",
    "errorConfiguringLeague": "Liga konnte nicht konfiguriert werden.",
    "notCreated": "Nicht erstellt",
    "autoFetchEnabled": "Automatischer Datenabruf ist aktiviert",
    "missingItems": "Fehlend: {items}",
    "enterUrlForAutoConfig": "MyTischtennis-URL eingeben für automatische Konfiguration",
    "errorLoadingStats": "Statistiken konnten nicht geladen werden.",
    "asyncJobStartFailed": "Async-Job konnte nicht gestartet werden.",
    "dataFetchFailed": "Daten konnten nicht abgerufen werden.",
    "fetchTimedOut": "Zeitüberschreitung beim Abruf (Async-Job läuft zu lange).",
    "teamDataFetched": "Teamdaten erfolgreich abgerufen.",
    "unknownTeam": "Unbekanntes Team",
    "teamDataFetchedDetails": "Team: {team}\nAbgerufene Datensätze: {count}",
    "tableUpdateLabel": "Tabellenaktualisierung:",
    "mytischtennisLoginRequired": "Login bei myTischtennis erforderlich",
    "fetchTimeoutShort": "Zeitüberschreitung beim Abruf (Timeout).",
    "invalidFileTypeTitle": "Ungültiger Dateityp",
    "invalidFileExtension": "{label} muss eine der folgenden Endungen haben: {extensions}.",
    "invalidMimeType": "{label} weist einen unerwarteten MIME-Typ auf: {type}.",
    "fileTooLargeTitle": "Datei zu groß",
    "fileTooLarge": "{label} darf maximal 10 MB groß sein."
  },
  "pendingApprovals": {
    "title": "Ausstehende Benutzeranfragen",
    "firstName": "Vorname",
    "lastName": "Nachname",
    "email": "Email",
    "actions": "Aktionen",
    "approve": "Genehmigen",
    "reject": "Ablehnen",
    "noPendingRequests": "Keine ausstehenden Benutzeranfragen.",
    "noPermission": "Keine Berechtigung",
    "noPermissionMessage": "Sie haben keine Berechtigung, Freigaben zu verwalten.",
    "noPermissionDetails": "Nur Administratoren können Mitgliedsanfragen bearbeiten.",
    "errorLoadingRequests": "Fehler beim Laden der ausstehenden Anfragen",
    "errorApproving": "Fehler beim Genehmigen des Benutzers",
    "errorRejecting": "Fehler beim Ablehnen des Benutzers"
  },
  "permissions": {
    "title": "Berechtigungsverwaltung",
    "subtitle": "Verwalten Sie die Zugriffsrechte für Clubmitglieder",
    "loadingMembers": "Lade Mitglieder...",
    "availableRoles": "Verfügbare Rollen",
    "clubMembers": "Clubmitglieder",
    "email": "Email",
    "role": "Rolle",
    "status": "Status",
    "actions": "Aktionen",
    "active": "Aktiv",
    "inactive": "Deaktiviert",
    "clickToDeactivate": "Klicken zum Deaktivieren",
    "clickToActivate": "Klicken zum Aktivieren",
    "customize": "Anpassen",
    "creator": "Ersteller",
    "permissionsFor": "Berechtigungen für",
    "baseRole": "Basis-Rolle",
    "customizeInfo": "Hier können Sie individuelle Anpassungen vornehmen.",
    "reset": "Zurücksetzen",
    "resetAll": "Alle zurücksetzen",
    "cancel": "Abbrechen",
    "save": "Speichern",
    "errorLoadingData": "Fehler beim Laden der Daten",
    "errorUpdatingRole": "Fehler beim Aktualisieren der Rolle",
    "errorSavingPermissions": "Fehler beim Speichern der Berechtigungen"
  },
  "memberTransfer": {
    "title": "Mitgliederübertragung - Einstellungen",
    "loadingConfig": "Konfiguration wird geladen...",
    "transferConfiguration": "Übertragungskonfiguration",
    "configInfo": "Konfigurieren Sie hier die Einstellungen für die Übertragung von Mitgliedern an externe Systeme. Diese Einstellungen werden vereinsspezifisch gespeichert.",
    "serverConfiguration": "Server-Konfiguration",
    "serverBaseUrl": "Server-Basis-URL",
    "serverBaseUrlPlaceholder": "https://example.com",
    "serverBaseUrlHint": "Basis-URL des Servers (z.B. https://example.com)",
    "loginConfiguration": "Login-Konfiguration",
    "loginEndpointPath": "Login-Endpoint Pfad",
    "loginEndpointPlaceholder": "/api/auth/login",
    "loginEndpointHint": "Optional: Relativer Pfad zum Login-Endpoint (z.B. /api/auth/login)",
    "loginFormat": "Login-Format",
    "loginData": "Login-Daten",
    "usernameEmail": "Benutzername / Email",
    "password": "Passwort",
    "additionalField": "Zusätzliches Feld",
    "additionalFieldExample1": "Zusätzliches Feld (z.B. client_id)",
    "additionalFieldExample2": "Zusätzliches Feld (z.B. client_secret)",
    "passwordEncrypted": "Passwörter werden verschlüsselt gespeichert",
    "transferConfigurationTitle": "Übertragungs-Konfiguration",
    "transferEndpointPath": "Übertragungs-Endpoint Pfad",
    "transferEndpointPlaceholder": "/api/members/bulk",
    "transferEndpointHint": "Relativer Pfad zum Übertragungs-Endpoint (z.B. /api/members/bulk)",
    "httpMethod": "HTTP-Methode",
    "transferFormat": "Übertragungs-Format",
    "bulkMode": "Bulk-Import-Modus (alle Mitglieder auf einmal übertragen)",
    "bulkModeHint": "Wenn aktiviert, werden alle Mitglieder in einem Request als Array übertragen.",
    "importTemplate": "Template aus vollständigem Beispiel importieren",
    "importTemplatePlaceholder": "Fügen Sie hier ein vollständiges Beispiel-Template ein, z.B.:\nLBRACE\n  DQUOTEmembersDQUOTE: [\n    LBRACE\n      DQUOTEfirstNameDQUOTE: DQUOTEMaxDQUOTE,\n      DQUOTElastNameDQUOTE: DQUOTEMustermannDQUOTE,\n      DQUOTEemailDQUOTE: DQUOTEmaxATexample.comDQUOTE\n    RBRACE\n  ]\nRBRACE",
    "analyzeAndImport": "Template analysieren und importieren",
    "importTemplateHint": "Fügen Sie ein vollständiges Beispiel-Template (mit Beispiel-Mitgliedern) ein. Das System erkennt automatisch das Mitglied-Template und das Bulk-Wrapper-Template.",
    "bulkWrapperTemplate": "Bulk-Wrapper-Template (optional)",
    "bulkWrapperWhat": "Was ist ein Bulk-Wrapper-Template?",
    "bulkWrapperDescription": "Optional können Sie die äußere Struktur definieren, in die die Mitglieder-Array eingefügt wird. Verwenden Sie PLACEHOLDER_MEMBERS als Platzhalter für das Array der Mitglieder.",
    "example": "Beispiel",
    "bulkWrapperNote": "Hinweis: Wenn kein Wrapper-Template angegeben wird, wird automatisch ein members-Array verwendet.",
    "availablePlaceholders": "Verfügbare Platzhalter",
    "membersArray": "Mitglieder-Array",
    "transferTemplate": "Übertragungs-Template",
    "templateWhat": "Was ist ein Template?",
    "templateDescription": "Das Template definiert das Format, in dem die Mitgliederdaten an das externe System übertragen werden. Verwenden Sie Platzhalter wie PLACEHOLDER_FIRSTNAME, um die Daten automatisch zu ersetzen.",
    "exampleJson": "Beispiel für JSON-Format (empfohlen)",
    "exampleXml": "Beispiel für XML-Format",
    "exampleFormData": "Beispiel für Form-Data Format",
    "formDataHint": "Für Form-Data verwenden Sie ein einfaches Text-Template mit Zeilen im Format feldname=platzhalter:",
    "bulkModeActive": "Bulk-Modus aktiv",
    "bulkModeActiveDescription": "Das Template definiert das Format für ein einzelnes Mitglied. Die Mitglieder werden automatisch in ein Array gewrappt. Die äußere Struktur können Sie optional im \"Bulk-Wrapper-Template\" definieren (siehe unten).",
    "placeholderHint": "Klicken Sie auf einen Platzhalter, um ihn an der aktuellen Cursor-Position einzufügen:",
    "templateTip": "Tipp: Setzen Sie den Cursor an die gewünschte Stelle im Template und klicken Sie auf einen Platzhalter, um ihn einzufügen. Platzhalter werden beim Übertragen automatisch durch die tatsächlichen Mitgliederdaten ersetzt.",
    "saving": "Speichere...",
    "save": "Speichern",
    "deleting": "Lösche...",
    "deleteConfig": "Konfiguration löschen",
    "errorLoading": "Fehler beim Laden der Konfiguration",
    "configSaved": "Konfiguration erfolgreich gespeichert!",
    "errorSaving": "Fehler beim Speichern",
    "confirmDelete": "Konfiguration löschen",
    "confirmDeleteMessage": "Möchten Sie die Konfiguration wirklich löschen?",
    "configDeleted": "Konfiguration erfolgreich gelöscht!",
    "errorDeleting": "Fehler beim Löschen",
    "templateImported": "Template erfolgreich importiert!",
    "templateImportedDetails": "Mitglied- und Bulk-Wrapper-Template wurden erkannt und ausgefüllt.",
    "templateImportedSingle": "Einzelnes Mitglied-Template erkannt.",
    "templateImportedBulk": "Mitglied-Template erkannt, Bulk-Modus aktiviert.",
    "errorParsingTemplate": "Fehler beim Parsen des Templates",
    "invalidTemplateFormat": "Ungültiges Template-Format",
    "invalidJson": "Bitte stellen Sie sicher, dass gültiges JSON verwendet wird.",
    "placeholders": {
      "firstName": "Vorname",
      "firstNameDesc": "Vorname des Mitglieds",
      "lastName": "Nachname",
      "lastNameDesc": "Nachname des Mitglieds",
      "fullName": "Vollständiger Name",
      "fullNameDesc": "Vorname und Nachname kombiniert",
      "email": "E-Mail-Adresse",
      "emailDesc": "E-Mail-Adresse des Mitglieds",
      "phone": "Telefonnummer",
      "phoneDesc": "Telefonnummer des Mitglieds",
      "street": "Straße",
      "streetDesc": "Straße und Hausnummer",
      "city": "Ort",
      "cityDesc": "Wohnort",
      "birthDate": "Geburtsdatum",
      "birthDateDesc": "Geburtsdatum im Format YYYY-MM-DD",
      "birthDateAlt": "Geburtsdatum (alt)",
      "birthDateAltDesc": "Geburtsdatum im Format YYYY-MM-DD (alternative Bezeichnung)",
      "address": "Kombinierte Adresse",
      "addressDesc": "Straße und Ort kombiniert",
      "ttr": "TTR-Wert",
      "ttrDesc": "TTR-Wert des Mitglieds",
      "qttr": "QTTR-Wert",
      "qttrDesc": "QTTR-Wert des Mitglieds",
      "gender": "Geschlecht",
      "genderDesc": "Geschlecht des Mitglieds"
    }
  },
  "logs": {
    "title": "System-Logs",
    "subtitle": "Übersicht über alle API-Requests, Responses und Ausführungen",
    "backend": "Backend",
    "all": "Alle",
    "mytischtennis": "myTischtennis",
    "ownBackend": "Eigenes Backend",
    "logType": "Log-Typ",
    "apiRequests": "API-Requests",
    "scheduler": "Scheduler",
    "cronJobs": "Cron-Jobs",
    "manual": "Manuelle Ausführungen",
    "httpMethod": "HTTP-Methode",
    "status": "Status",
    "path": "Pfad",
    "pathPlaceholder": "z.B. /api/diary",
    "from": "Von",
    "to": "Bis",
    "applyFilters": "Filter anwenden",
    "clearFilters": "Zurücksetzen",
    "loadingLogs": "Lade Logs...",
    "successfullyLoaded": "Erfolgreich geladen",
    "recordsFound": "Datensätze gefunden",
    "displayed": "angezeigt",
    "error": "Fehler",
    "total": "Gesamt",
    "displayedLabel": "Angezeigt",
    "time": "Zeit",
    "type": "Typ",
    "method": "Methode",
    "executionTime": "Ausführungszeit",
    "errorLabel": "Fehler",
    "actions": "Aktionen",
    "details": "Details",
    "previous": "Vorherige",
    "next": "Nächste",
    "page": "Seite",
    "of": "von",
    "logDetails": "Log-Details",
    "errorLoading": "Fehler beim Laden der Logs",
    "justNow": "gerade eben",
    "secondsAgo": "vor {n} Sekunden",
    "minutesAgo": "vor {n} Minuten",
    "logTypeLabels": {
      "api_request": "API-Request",
      "scheduler": "Scheduler",
      "cron_job": "Cron-Job",
      "manual": "Manuell"
    },
    "logDetailsLabels": {
      "time": "Zeit",
      "type": "Typ",
      "method": "Methode",
      "path": "Pfad",
      "status": "Status",
      "executionTime": "Ausführungszeit",
      "ip": "IP",
      "schedulerJob": "Scheduler-Job",
      "error": "Fehler",
      "requestBody": "Request Body",
      "responseBody": "Response Body"
    }
  },
  "csvImport": {
    "title": "Spielplan importieren",
    "uploadCsvFile": "CSV-Datei hochladen",
    "cancel": "Abbrechen",
    "import": "Importieren"
  },
  "quickAddMember": {
    "title": "Neues Mitglied hinzufügen",
    "firstName": "Vorname",
    "lastName": "Nachname (optional)",
    "birthDate": "Geburtsdatum (optional)",
    "gender": "Geschlecht",
    "pleaseSelect": "Bitte wählen",
    "cancel": "Abbrechen",
    "createAndAdd": "Erstellen & Hinzufügen"
  },
  "dialogs": {
    "info": {
      "title": "Information",
      "ok": "OK"
    },
    "confirm": {
      "title": "Bestätigung",
      "ok": "OK",
      "cancel": "Abbrechen"
    }
  },
  "memberSelection": {
    "title": "Mitglieder auswählen",
    "selectAll": "Alle auswählen",
    "deselectAll": "Alle abwählen",
    "members": "Mitglieder",
    "recommendations": "Empfehlungen",
    "noRecommendations": "Keine passenden Empfehlungen gefunden.",
    "close": "Schließen",
    "generatePdf": "PDF erzeugen"
  },
  "memberTransferDialog": {
    "title": "Mitglieder übertragen",
    "loadingConfig": "Gespeicherte Konfiguration wird geladen...",
    "noConfigFound": "Keine Konfiguration gefunden",
    "noConfigMessage": "Bitte konfigurieren Sie zuerst die Mitgliederübertragung in den Einstellungen.",
    "goToSettings": "Zu den Einstellungen",
    "transferConfiguration": "Übertragungskonfiguration",
    "server": "Server",
    "endpoint": "Endpoint",
    "method": "Methode",
    "format": "Format",
    "mode": "Modus",
    "bulkImport": "Bulk-Import",
    "single": "Einzeln",
    "editConfig": "Konfiguration bearbeiten",
    "loginDataOverride": "Login-Daten (optional überschreiben)",
    "loginDataHint": "Die Login-Daten werden aus den Einstellungen verwendet. Sie können sie hier überschreiben, falls nötig.",
    "loginData": "Login-Daten",
    "usernameEmail": "Benutzername / Email",
    "passwordPlaceholder": "Passwort (leer lassen für gespeichertes)",
    "additionalFieldPlaceholder": "Zusätzliches Feld (z.B. client_id)",
    "additionalFieldPlaceholderForm": "Feldname: Wert (z.B. client_id: abc123)",
    "loginDataOverrideHint": "Nur ausfüllen, wenn Sie die gespeicherten Login-Daten überschreiben möchten. Leere Felder verwenden die gespeicherten Werte.",
    "cancel": "Abbrechen",
    "transferring": "Übertrage...",
    "transfer": "Übertragen",
    "transferSuccess": "{transferred} von {total} Mitgliedern erfolgreich übertragen.",
    "excludedMembers": "Ausgeschlossene Mitglieder (fehlende Pflichtfelder)",
    "additionalErrors": "Weitere Fehler",
    "transferFailed": "Übertragung fehlgeschlagen",
    "transferError": "Fehler bei der Übertragung"
  },
  "myTischtennisAccount": {
    "title": "myTischtennis-Account",
    "loading": "Lade...",
    "linkedAccount": "Verknüpfter Account",
    "email": "E-Mail:",
    "passwordSaved": "Passwort gespeichert:",
    "club": "Verein (myTischtennis):",
    "lastSuccessfulLogin": "Letzter erfolgreicher Login:",
    "lastLoginAttempt": "Letzter Login-Versuch:",
    "lastFetch": "Letzter Abruf:",
    "autoUpdates": "Automatische Updates:",
    "enabled": "Aktiviert",
    "disabled": "Deaktiviert",
    "yes": "Ja",
    "no": "Nein",
    "editAccount": "Account bearbeiten",
    "loginAgain": "Erneut einloggen",
    "updateHistory": "Update-History",
    "unlinkAccount": "Account trennen",
    "noAccountLinked": "Kein myTischtennis-Account verknüpft.",
    "linkAccount": "Account verknüpfen",
    "aboutMyTischtennis": "Über myTischtennis",
    "aboutDescription": "Durch die Verknüpfung Ihres myTischtennis-Accounts können Sie:",
    "aboutFeature1": "Automatisch Turnierdaten importieren",
    "aboutFeature2": "Spielerergebnisse synchronisieren",
    "aboutFeature3": "Wettkampfdaten direkt abrufen",
    "aboutHint": "Das Speichern des Passworts ist optional. Wenn Sie es nicht speichern, werden Sie bei jeder Synchronisation nach dem Passwort gefragt.",
    "fetchStatistics": "Datenabruf-Statistiken",
    "loadingStatistics": "Lade Statistiken...",
    "playerRatings": "Spielerwertungen",
    "matchResults": "Spielergebnisse",
    "leagueTables": "Ligatabellen",
    "playersUpdated": "Spieler aktualisiert",
    "results": "Ergebnisse",
    "teams": "Teams",
    "neverFetched": "Noch nie abgerufen",
    "refreshStatistics": "Statistiken aktualisieren",
    "errorLoadingAccount": "Fehler beim Laden des myTischtennis-Accounts",
    "accountSaved": "myTischtennis-Account erfolgreich gespeichert",
    "loginSuccessful": "Login erfolgreich! Verbindungsdaten aktualisiert.",
    "loginFailed": "Login fehlgeschlagen",
    "passwordRequired": "Passwort benötigt",
    "unlinkAccountTitle": "Account trennen",
    "unlinkAccountConfirm": "Möchten Sie die Verknüpfung zum myTischtennis-Account wirklich trennen?",
    "accountUnlinked": "myTischtennis-Account erfolgreich getrennt",
    "errorUnlinking": "Fehler beim Trennen des Accounts",
    "errorLoadingStatistics": "Fehler beim Laden der Fetch-Statistiken",
    "justNow": "Gerade eben",
    "minutesAgo": "vor {count} Min.",
    "hoursAgo": "vor {count} Std.",
    "yesterday": "Gestern",
    "daysAgo": "vor {count} Tagen",
    "never": "Nie"
  },
  "myTischtennisDialog": {
    "editAccount": "myTischtennis-Account bearbeiten",
    "linkAccount": "myTischtennis-Account verknüpfen",
    "email": "myTischtennis-E-Mail",
    "emailPlaceholder": "Ihre myTischtennis-E-Mail-Adresse",
    "password": "myTischtennis-Passwort",
    "passwordPlaceholder": "Ihr myTischtennis-Passwort",
    "passwordPlaceholderKeep": "Leer lassen um beizubehalten",
    "savePassword": "myTischtennis-Passwort speichern",
    "savePasswordHint": "Wenn aktiviert, wird Ihr myTischtennis-Passwort verschlüsselt gespeichert, sodass automatische Synchronisationen möglich sind.",
    "autoUpdateRatings": "Automatische Update-Ratings aktivieren",
    "autoUpdateRatingsHint": "Täglich um 6:00 Uhr werden automatisch die neuesten Ratings von myTischtennis abgerufen. Erfordert gespeichertes Passwort.",
    "autoUpdateWarning": "Für automatische Updates muss das myTischtennis-Passwort gespeichert werden.",
    "appPassword": "Ihr App-Passwort zur Bestätigung",
    "appPasswordPlaceholder": "Ihr Passwort für diese App",
    "appPasswordHint": "Aus Sicherheitsgründen benötigen wir Ihr App-Passwort, um das myTischtennis-Passwort zu speichern.",
    "cancel": "Abbrechen",
    "saving": "Speichere...",
    "save": "Speichern",
    "errorSaving": "Fehler beim Speichern des Accounts",
    "login": "Einloggen",
    "loggingIn": "Logge ein...",
    "errorLogin": "Fehler beim Einloggen",
    "loadingLoginForm": "Lade Login-Formular..."
  },
  "trainingDetails": {
    "title": "Trainings-Details",
    "birthdate": "Geburtsdatum",
    "birthYear": "Geburtsjahr",
    "maxBirthYear": "Geboren ≤ Jahr",
    "last12Months": "Letzte 12 Monate",
    "last3Months": "Letzte 3 Monate",
    "total": "Gesamt",
    "trainingParticipations": "Trainingsteilnahmen (absteigend sortiert)",
    "noTrainings": "Keine Trainingsteilnahmen vorhanden"
  },
  "memberNotes": {
    "title": "Notizen für",
    "phone": "Telefon-Nr.",
    "memberImage": "Mitgliedsbild",
    "tags": "Tags",
    "selectTags": "Tags auswählen",
    "newNote": "Neue Notiz",
    "add": "Hinzufügen",
    "notes": "Notizen"
  },
  "matchReport": {
    "hideAnalyzer": "Analyzer verstecken",
    "analyzeNuscore": "nuscore analysieren",
    "createLocalCopy": "Lokale Kopie erstellen"
  },
  "matchReportApi": {
    "loading": "Lade Spielberichtsdaten...",
    "errorLoading": "Fehler beim Laden der Daten",
    "retry": "Erneut versuchen",
    "general": "Allgemein",
    "homeLineup": "Aufstellung Heim",
    "guestLineup": "Aufstellung Gast",
    "greeting": "Begrüßung",
    "result": "Ergebniserfassung",
    "completion": "Abschluss",
    "vs": "vs",
    "startTime": "Startzeit",
    "endTime": "Endzeit",
    "setCurrentTime": "Aktuelle Zeit setzen",
    "status": "Status",
    "completed": "Abgeschlossen",
    "pending": "Ausstehend",
    "notAppeared": "Nicht angetreten",
    "bothTeamsAppeared": "Beide Mannschaften angetreten",
    "homeTeamNotAppeared": "Heimmannschaft {team} nicht angetreten",
    "guestTeamNotAppeared": "Gastmannschaft {team} nicht angetreten",
    "playSystem": "Spielsystem",
    "pinInput": "PIN-Eingabe",
    "homePin": "PIN Heimverein",
    "guestPin": "PIN Gastverein",
    "signLineup": "Aufstellung signieren",
    "selectedPlayers": "Ausgewählte Spieler",
    "availablePlayers": "Verfügbare Spieler",
    "noLineupData": "Keine Aufstellungsdaten verfügbar",
    "clickToRemove": "Klicken zum Entfernen",
    "rank": "Rang"
  },
  "activityStats": {
    "title": "Übungs-Statistiken",
    "last3Participations": "Letzte 3 Teilnahmen",
    "activityStatistics": "Statistik der Übungen",
    "noParticipations": "Keine Teilnahmen vorhanden",
    "noStatistics": "Keine Statistiken vorhanden"
  },
  "tagHistory": {
    "title": "Tag-Historie",
    "selectTags": "Tags auswählen",
    "noHistory": "Keine Tag-Historie vorhanden"
  },
  "imageViewer": {
    "previousImage": "Vorheriges Bild",
    "nextImage": "Nächstes Bild",
    "noImageAvailable": "Kein Bild verfügbar",
    "rotateLeft": "90° links drehen",
    "rotateRight": "90° rechts drehen",
    "setAsPrimary": "Als Hauptbild festlegen",
    "setAsPrimaryButton": "Als Hauptbild setzen",
    "deleteImage": "Bild löschen",
    "delete": "Löschen",
    "selectFiles": "Dateien auswählen",
    "camera": "Kamera"
  },
  "memberActivities": {
    "title": "Übungen von",
    "period": "Zeitraum",
    "last4Weeks": "Letzte 4 Wochen",
    "last3Months": "Letzte 3 Monate",
    "last6Months": "Letztes halbes Jahr",
    "lastYear": "Letztes Jahr",
    "all": "Alle",
    "loading": "Lade Übungen...",
    "noActivities": "Keine Übungen im gewählten Zeitraum gefunden.",
    "activity": "Übung",
    "frequency": "Häufigkeit",
    "dates": "Daten",
    "more": "weitere",
    "showLess": "weniger anzeigen",
    "close": "Schließen"
  },
  "memberGallery": {
    "title": "Mitglieder-Galerie",
    "titleWithDate": "Mitglieder-Galerie - Klicken Sie auf ein Bild, um als Teilnehmer hinzuzufügen",
    "imageSize": "Bildgröße",
    "loading": "Galerie wird geladen…",
    "noImage": "Kein Bild",
    "noMembersWithImages": "Keine Mitglieder mit Bildern gefunden."
  },
  "myTischtennisHistory": {
    "title": "Update-Ratings History",
    "loading": "Lade History...",
    "noHistory": "Noch keine automatischen Updates durchgeführt.",
    "successful": "Erfolgreich",
    "failed": "Fehlgeschlagen",
    "ratingsUpdated": "Ratings aktualisiert",
    "close": "Schließen"
  },
  "courtDrawing": {
    "title": "Tischtennis-Übung konfigurieren",
    "cancel": "Abbrechen",
    "ok": "OK",
    "durationMinutes": "Dauer (Minuten)",
    "durationText": "Dauer (Text)",
    "durationTextPlaceholder": "z.B. 2x5",
    "group": "Gruppe",
    "selectGroup": "Gruppe auswählen..."
  },
  "imageDialog": {
    "title": "Bild",
    "noImageAvailable": "Kein Bild verfügbar",
    "close": "Schließen"
  },
  "seasonSelector": {
    "label": "Saison:",
    "loading": "Lade...",
    "selectSeason": "Saison wählen...",
    "addSeason": "Neue Saison hinzufügen",
    "newSeason": "Neue Saison:",
    "placeholder": "z.B. 2023/2024",
    "create": "Erstellen",
    "cancel": "Abbrechen",
    "errorLoading": "Fehler beim Laden der Saisons",
    "errorCreating": "Fehler beim Erstellen der Saison",
    "alreadyExists": "Diese Saison existiert bereits!",
    "hint": "Hinweis"
  },
  "officialTournaments": {
    "uploadPdf": "PDF hochladen",
    "events": "Veranstaltungen",
    "showEvents": "Gespeicherte Veranstaltungen anzeigen",
    "participations": "Turnierbeteiligungen",
    "showParticipations": "Turnierbeteiligungen anzeigen",
    "savedEvents": "Gespeicherte Veranstaltungen",
    "tournament": "Turnier",
    "editTitle": "Titel bearbeiten",
    "updateTitleError": "Titel konnte nicht gespeichert werden.",
    "delete": "Löschen",
    "timeRange": "Zeitraum:",
    "last3Months": "Letzte 3 Monate",
    "last6Months": "Letzte 6 Monate",
    "last12Months": "Letzte 12 Monate",
    "last2Years": "Letzte 2 Jahre",
    "previousSeason": "Vorherige Saison",
    "all": "Alle",
    "member": "Mitglied",
    "competition": "Konkurrenz",
    "date": "Datum",
    "placement": "Platzierung",
    "noEvents": "Noch keine Veranstaltungen vorhanden. Laden Sie ein PDF hoch, um zu beginnen.",
    "title": "Titel:",
    "dateTime": "Termin:",
    "venues": "Austragungsorte:",
    "competitionTypes": "Konkurrenztypen:",
    "deadlines": "Meldeschlüsse:",
    "ageClasses": "Altersklassen:",
    "startTimes": "Startzeiten:",
    "deadlinesByAgeClass": "Meldeschlüsse je AK:",
    "entryFees": "Teilnahmegebühren:",
    "selectMembers": "Mitglieder auswählen",
    "pdfForSelectedMembers": "PDF für markierte Mitglieder",
    "showCompetitions": "Konkurrenzen anzeigen",
    "showParticipants": "Teilnehmer anzeigen",
    "showResults": "Ergebnisse anzeigen",
    "competitions": "Konkurrenzen",
    "ageClassCompetition": "Altersklasse/Wettbewerb",
    "startTime": "Startzeit",
    "entryFee": "Startgeld",
    "deadlineDate": "Meldeschluss (Datum):",
    "deadlineOnline": "Meldeschluss (Online):",
    "cutoffDate": "Stichtag:",
    "openTo": "Offen für:",
    "preliminaryRound": "Vorrunde:",
    "finalRound": "Endrunde:",
    "eligible": "Teilnahmeberechtigt",
    "name": "Name",
    "birthDate": "Geburtsdatum",
    "age": "Alter",
    "status": "Status",
    "action": "Aktion",
    "hasPlayed": "Hat gespielt",
    "registered": "Angemeldet",
    "wantsToParticipate": "Möchte teilnehmen",
    "notInterested": "Nicht interessiert",
    "markAsRegistered": "Als angemeldet markieren",
    "markAsParticipated": "Als teilgenommen markieren",
    "resetStatus": "Status zurücksetzen",
    "checkBoxToActivate": "Checkbox aktivieren",
    "participants": "Teilnehmer",
    "participantsPdf": "Teilnehmer-PDF",
    "results": "Ergebnisse",
    "participated": "Teilgenommen",
    "uploadError": "Fehler beim Hochladen der PDF.",
    "updatePlacementError": "Fehler beim Aktualisieren der Platzierung",
    "updateStatusError": "Fehler beim Aktualisieren des Status"
  },
  "baseDialog": {
    "minimize": "Minimieren",
    "close": "Schließen"
  },
  "dialogManager": {
    "noMinimizedDialogs": "Keine minimierten Dialoge",
    "minimize": "Minimieren",
    "close": "Schließen"
  },
  "matchReportHeaderActions": {
    "insertPin": "PIN einfügen",
    "insertPinTitle": "PIN automatisch einfügen",
    "copyPin": "PIN kopieren",
    "copyPinTitle": "PIN in Zwischenablage kopieren",
    "noPinAvailable": "Keine PIN verfügbar",
    "copied": "Kopiert!",
    "copyError": "Fehler beim Kopieren der PIN"
  },
  "dialogExamples": {
    "title": "Dialog-Beispiele",
    "modalDialogs": "Modale Dialoge",
    "simpleModal": "Einfacher Modal",
    "largeModal": "Großer Modal",
    "fullscreenModal": "Fullscreen Modal",
    "nonModalDialogs": "Nicht-modale Dialoge",
    "nonModalDialog": "Nicht-modaler Dialog",
    "multipleDialogs": "Mehrere Dialoge",
    "infoDialogs": "Informations-Dialoge",
    "info": "Info",
    "success": "Erfolg",
    "warning": "Warnung",
    "error": "Fehler",
    "confirmDialogs": "Bestätigungs-Dialoge",
    "composableUsage": "Composable-Verwendung",
    "useDialogExample": "useDialog Beispiel",
    "useConfirmExample": "useConfirm Beispiel",
    "simpleModalTitle": "Einfacher Modal Dialog",
    "simpleModalText": "Dies ist ein einfacher modaler Dialog mit mittlerer Größe.",
    "simpleModalText2": "Klicken Sie außerhalb oder auf das X, um zu schließen.",
    "largeModalTitle": "Großer Modal Dialog",
    "largeModalText": "Dies ist ein großer modaler Dialog.",
    "largeModalText2": "Er bietet mehr Platz für Inhalte.",
    "scrollArea": "Scroll-Bereich für viel Inhalt...",
    "fullscreenModalTitle": "Fullscreen Modal Dialog",
    "fullscreenModalText": "Dies ist ein Fullscreen-Dialog.",
    "fullscreenModalText2": "Er nimmt fast den gesamten Bildschirm ein (90vw x 90vh).",
    "nonModalTitle": "Nicht-modaler Dialog",
    "nonModalText": "Dies ist ein nicht-modaler Dialog.",
    "nonModalText2": "Sie können ihn verschieben und mehrere gleichzeitig öffnen!",
    "secondNonModalTitle": "Zweiter nicht-modaler Dialog",
    "secondNonModalText": "Noch ein nicht-modaler Dialog!",
    "information": "Information",
    "infoMessage": "Dies ist eine Informationsmeldung.",
    "successMessage": "Der Vorgang wurde erfolgreich abgeschlossen!",
    "successDetails": "Alle Änderungen wurden gespeichert.",
    "warningMessage": "Bitte beachten Sie folgende Hinweise.",
    "warningDetails": "Einige Felder sind möglicherweise nicht vollständig ausgefüllt.",
    "errorMessage": "Ein Fehler ist aufgetreten.",
    "errorDetails": "Bitte versuchen Sie es später erneut.",
    "confirmDeleteTitle": "Löschen bestätigen",
    "confirmDeleteMessage": "Möchten Sie diesen Eintrag wirklich löschen?",
    "confirmWarningMessage": "Sind Sie sicher, dass Sie fortfahren möchten?",
    "confirmWarningDetails": "Diese Aktion kann nicht rückgängig gemacht werden.",
    "composableDialogTitle": "Dialog mit useDialog Composable",
    "composableDialogText": "Dieser Dialog verwendet das useDialog Composable.",
    "composableDialogText2": "Das macht die Verwaltung einfacher!",
    "composableConfirmTitle": "useConfirm Beispiel",
    "composableConfirmMessage": "Möchten Sie fortfahren?",
    "composableConfirmDetails": "Dies ist ein Beispiel für das useConfirm Composable.",
    "minimizedDialogs": "Minimierte Dialoge:"
  },
  "courtDrawingTool": {
    "title": "Tischtennis-Übungszeichnung",
    "configureExercise": "Übung konfigurieren",
    "service": "Aufschlag:",
    "forehand": "Vorhand",
    "backhand": "Rückhand",
    "spin": "Schnitt:",
    "underspin": "Unterschnitt",
    "topspin": "Überschnitt",
    "sidespin": "Seitschnitt",
    "sideUnderspin": "Seitunterschnitt",
    "counterSpin": "Gegenläufer",
    "targetPosition": "Zielposition:"
  },
  "courtDrawingRender": {
    "startAnimation": "Animation starten",
    "animationRunning": "Animation läuft..."
  },
  "nuscoreAnalyzer": {
    "title": "🔍 nuscore Analyzer",
    "description": "Analysiert und lädt nuscore-Ressourcen für lokale Nutzung herunter",
    "analyze": "🔍 nuscore analysieren",
    "analyzing": "🔄 Analysiere...",
    "downloadResources": "Ressourcen herunterladen",
    "downloading": "⬇️ Lade herunter...",
    "createLocalCopy": "🏗️ Lokale Kopie erstellen",
    "creating": "🏗️ Erstelle...",
    "foundResources": "📋 Gefundene Ressourcen:",
    "log": "📝 Log:",
    "startAnalysis": "🔍 Starte nuscore-Analyse...",
    "pageLoaded": "✅ nuscore-Seite geladen",
    "analysisComplete": "✅ Analyse abgeschlossen: {count} Ressourcen gefunden"
  },
  "trainingTimesTab": {
    "loading": "Lade Trainingszeiten...",
    "addTime": "+ Zeit hinzufügen",
    "weekday": "Wochentag:",
    "from": "Von:",
    "to": "Bis:",
    "create": "Erstellen",
    "cancel": "Abbrechen",
    "sunday": "Sonntag",
    "monday": "Montag",
    "tuesday": "Dienstag",
    "wednesday": "Mittwoch",
    "thursday": "Donnerstag",
    "friday": "Freitag",
    "saturday": "Samstag",
    "edit": "Bearbeiten",
    "delete": "Löschen",
    "noTimes": "Keine Trainingszeiten definiert",
    "editTime": "Trainingszeit bearbeiten",
    "save": "Speichern",
    "saveError": "Fehler beim Speichern der Trainingszeit"
  },
  "trainingGroupsTab": {
    "groups": "Gruppen",
    "newGroup": "+ Neue Gruppe",
    "groupName": "Gruppenname",
    "create": "Erstellen",
    "cancel": "Abbrechen",
    "edit": "Bearbeiten",
    "delete": "Löschen",
    "members": "Mitglieder",
    "remove": "Entfernen",
    "addMember": "Mitglied hinzufügen...",
    "noMembersAvailable": "Keine Mitglieder verfügbar",
    "editGroup": "Gruppe bearbeiten"
  },
  "createClub": {
    "title": "Verein anlegen",
    "clubName": "Name des Vereins:",
    "create": "Verein anlegen",
    "nameRequired": "Bitte gib dem Verein einen aussagekräftigen Namen.",
    "clubExists": "Der Verein existiert bereits.",
    "unknownError": "Ein unbekannter Fehler ist aufgetreten. Bitte versuchen Sie es erneut."
  },
  "legal": {
    "backToHome": "Zur Startseite",
    "privacyPolicy": "Datenschutzerklärung",
    "imprint": "Impressum"
  },
  "errors": {
    "ERROR_INTERNAL_SERVER_ERROR": "Ein interner Serverfehler ist aufgetreten.",
    "ERROR_UNKNOWN_ERROR": "Ein unbekannter Fehler ist aufgetreten.",
    "ERROR_VALIDATION_FAILED": "Validierung fehlgeschlagen.",
    "ERROR_NOT_FOUND": "Nicht gefunden.",
    "ERROR_UNAUTHORIZED": "Nicht autorisiert.",
    "ERROR_FORBIDDEN": "Zugriff verweigert.",
    "ERROR_BAD_REQUEST": "Ungültige Anfrage.",
    "ERROR_USER_NOT_FOUND": "Benutzer nicht gefunden.",
    "ERROR_INVALID_PASSWORD": "Ungültiges Passwort.",
    "ERROR_LOGIN_FAILED": "Login fehlgeschlagen.",
    "ERROR_SESSION_EXPIRED": "Sitzung abgelaufen.",
    "ERROR_MYTISCHTENNIS_USER_NOT_FOUND": "myTischtennis-Benutzer nicht gefunden.",
    "ERROR_MYTISCHTENNIS_INVALID_PASSWORD": "Ungültiges myTischtennis-Passwort.",
    "ERROR_MYTISCHTENNIS_LOGIN_FAILED": "myTischtennis-Login fehlgeschlagen. Bitte überprüfen Sie Ihre Zugangsdaten.",
    "ERROR_MYTISCHTENNIS_ACCOUNT_NOT_LINKED": "Kein myTischtennis-Account verknüpft.",
    "ERROR_MYTISCHTENNIS_PASSWORD_NOT_SAVED": "Kein Passwort gespeichert. Bitte geben Sie Ihr Passwort ein.",
    "ERROR_MYTISCHTENNIS_SESSION_EXPIRED": "Session abgelaufen. Bitte erneut einloggen.",
    "ERROR_MYTISCHTENNIS_NO_PASSWORD_SAVED": "Kein Passwort gespeichert und Session abgelaufen. Bitte Passwort eingeben.",
    "ERROR_MYTISCHTENNIS_CAPTCHA_REQUIRED": "CAPTCHA erforderlich. MyTischtennis verwendet jetzt ein CAPTCHA beim Login. Bitte loggen Sie sich einmal direkt auf mytischtennis.de ein, um das CAPTCHA zu lösen, oder kontaktieren Sie den Support.",
    "ERROR_MEMBER_NOT_FOUND": "Mitglied nicht gefunden.",
    "ERROR_MEMBER_ALREADY_EXISTS": "Mitglied existiert bereits.",
    "ERROR_MEMBER_FIRSTNAME_REQUIRED": "Vorname ist erforderlich.",
    "ERROR_MEMBER_LASTNAME_REQUIRED": "Nachname ist erforderlich.",
    "ERROR_GROUP_NOT_FOUND": "Gruppe nicht gefunden.",
    "ERROR_GROUP_NAME_REQUIRED": "Bitte geben Sie einen Gruppennamen ein.",
    "ERROR_GROUP_ALREADY_EXISTS": "Eine Gruppe mit diesem Namen existiert bereits.",
    "ERROR_GROUP_INVALID_PRESET_TYPE": "Ungültiger Preset-Typ.",
    "ERROR_GROUP_CANNOT_RENAME_PRESET": "Vorgaben-Gruppen können nicht umbenannt werden.",
    "ERROR_TOURNAMENT_NOT_FOUND": "Turnier nicht gefunden.",
    "ERROR_TOURNAMENT_NO_DATE": "Kein Turnierdatum vorhanden!",
    "ERROR_TOURNAMENT_CLASS_NAME_REQUIRED": "Bitte geben Sie einen Klassennamen ein!",
    "ERROR_TOURNAMENT_NO_PARTICIPANTS": "Keine Teilnehmer im Trainingstag für dieses Datum gefunden!",
    "ERROR_TOURNAMENT_NO_VALID_PARTICIPANTS": "Keine gültigen Teilnehmer im Trainingstag für dieses Datum gefunden!",
    "ERROR_TOURNAMENT_NO_TRAINING_DAY": "Kein Trainingstag für {date} gefunden!",
    "ERROR_TOURNAMENT_PDF_GENERATION_FAILED": "Fehler beim Generieren des PDFs",
    "ERROR_TOURNAMENT_SELECT_FIRST": "Bitte wählen Sie zuerst ein Turnier aus.",
    "ERROR_DIARY_DATE_NOT_FOUND": "Datum nicht gefunden.",
    "ERROR_DIARY_DATE_UPDATED": "Datum war nicht (mehr) vorhanden. Die Datums-Auswahl wurde aktualisiert. Bitte erneut versuchen.",
    "ERROR_DIARY_NO_PARTICIPANTS": "Keine Teilnehmer für diesen Trainingstag vorhanden.",
    "ERROR_DIARY_PDF_GENERATION_FAILED": "Fehler beim Generieren des PDFs.",
    "ERROR_DIARY_IMAGE_LOAD_FAILED": "Bild konnte nicht geladen werden.",
    "ERROR_DIARY_STATS_LOAD_FAILED": "Fehler beim Laden der Statistiken.",
    "ERROR_DIARY_NO_EXERCISE_DATA": "Keine Übungsdaten erhalten",
    "ERROR_DIARY_ACTIVITY_PARTICIPANTS_UPDATE_FAILED": "Fehler beim Aktualisieren der Aktivitäts-Teilnehmer",
    "SUCCESS_DIARY_GROUP_ASSIGNMENT_UPDATED": "Gruppenzuordnung aktualisiert",
    "ERROR_DIARY_GROUP_ASSIGNMENT_UPDATE_FAILED": "Fehler beim Aktualisieren der Gruppenzuordnung",
    "ERROR_DIARY_ASSIGN_ALL_PARTICIPANTS_FAILED": "Fehler beim Zuordnen aller Teilnehmer",
    "ERROR_DIARY_ASSIGN_GROUP_FAILED": "Fehler beim Zuordnen der Gruppe",
    "ERROR_DIARY_PARTICIPANT_ASSIGN_FAILED": "Teilnehmer konnte nicht zugeordnet werden.",
    "ERROR_DIARY_PARTICIPANT_GROUP_ASSIGNMENT_UPDATE_FAILED": "Fehler beim Aktualisieren der Teilnehmer-Gruppenzuordnung",
    "SUCCESS_DIARY_MEMBER_CREATED": "Mitglied \"{name}\" wurde erfolgreich erstellt und hinzugefügt!",
    "ERROR_DIARY_MEMBER_CREATE_FAILED": "Fehler beim Erstellen des Mitglieds",
    "ERROR_TEAM_NOT_LINKED_TO_LEAGUE": "Dieses Team ist keiner Liga zugeordnet.",
    "ERROR_TEAM_LINK_TO_LEAGUE_REQUIRED": "Bitte ordnen Sie dem Team zuerst eine Liga zu, damit Dokumente verarbeitet werden können.",
    "ERROR_TEAM_PDF_LOAD_FAILED": "Fehler beim Laden des PDFs",
    "ERROR_TEAM_STATS_LOAD_FAILED": "Statistiken konnten nicht geladen werden.",
    "ERROR_ACTIVITY_IMAGE_DELETE_FAILED": "Fehler beim Löschen des Bildes",
    "SUCCESS_OFFICIAL_TOURNAMENT_PDF_UPLOAD": "PDF erfolgreich hochgeladen.",
    "ERROR_OFFICIAL_TOURNAMENT_PDF_UPLOAD": "Fehler beim Hochladen der PDF.",
    "ERROR_CLUB_NOT_FOUND": "Verein nicht gefunden.",
    "ERROR_CLUB_ALREADY_EXISTS": "Der Verein existiert bereits.",
    "ERROR_CLUB_NAME_REQUIRED": "Bitte gib dem Verein einen aussagekräftigen Namen.",
    "ERROR_CLUB_NAME_TOO_SHORT": "Bitte gib dem Verein einen aussagekräftigen Namen.",
    "ERROR_MEMBER_TRANSFER_BULK_FAILED": "Fehler bei der Bulk-Übertragung: {message}",
    "ERROR_TRAINING_STATS_LOAD_FAILED": "Fehler beim Laden der Trainings-Statistik",
    "ERROR_LOG_NOT_FOUND": "Log-Eintrag nicht gefunden."
  },
  "pdfGenerator": {
    "trainingPlan": "Trainingsplan",
    "date": "Datum:",
    "time": "Uhrzeit:",
    "startTime": "Startzeit",
    "activityTimeBlock": "Aktivität / Zeitblock",
    "group": "Gruppe",
    "duration": "Dauer (Min)",
    "timeBlock": "Zeitblock",
    "phoneList": "Telefonliste - Aktive Mitglieder",
    "nameFirstName": "Name, Vorname",
    "birthDate": "Geburtsdatum",
    "phoneNumber": "Telefon-Nr.",
    "officialTournament": "Offizielles Turnier",
    "member": "Mitglied:",
    "hints": "Hinweise:",
    "tournament": "Turnier",
    "place": "Platz",
    "player": "Spieler",
    "points": "Punkte",
    "sets": "Sätze",
    "diff": "Diff",
    "groupMatrices": "Gruppen-Matrizen",
    "allGames": "Alle Spiele",
    "noActivities": "Keine Aktivitäten für diesen Trainingstag erfasst.",
    "groupLabel": "Gruppe",
    "oneHourBefore": "Eine Stunde vor Beginn der Konkurrenz in der Halle sein",
    "hallShoes": "Hallenschuhe (dürfen auf Boden nicht abfärben)",
    "informTrainer": "Da der Verein die Meldung übernehmen möchte, die Trainer mind. eine Woche vor dem Turnier über die Teilnahme informieren",
    "trainersPresent": "Die Trainer probieren bei allen Turnieren anwesend zu sein.",
    "recommendations": "Empfehlungen",
    "competition": "Wettbewerb",
    "fee": "Gebühr",
    "alsoPlayable": "Ebenfalls spielbar",
    "venue": "Austragungsort",
    "venues": "Austragungsorte",
    "noWhiteJersey": "Kein weißes Trikot",
    "sportShorts": "Sportshorts (oder Sportröckchen), am besten auch nicht weiß",
    "waterBottle": "Eine Flasche Wasser dabei haben",
    "overallRanking": "Gesamt-Ranking (K.O.-Runden)",
    "round": "Runde",
    "player1": "Spieler 1",
    "player2": "Spieler 2",
    "result": "Ergebnis",
    "status": "Status",
    "placement": "Platzierung",
    "competitionName": "Konkurrenz"
  }
}
