{
  "intro": "In der Datenbank gespeicherte Betriebseinstellungen — sie überschreiben die Datei-/Env-Standardwerte und wirken ohne erneutes Deployment. Lass ein Feld leer (oder setze es zurück), um auf den Standard zurückzufallen.",
  "loading": "Konfiguration wird geladen…",
  "groups": {
    "access": "Zugang",
    "email": "E-Mail / SMTP",
    "youtube": "YouTube-API",
    "google": "Google-Anmeldung",
    "quota": "Kontingent",
    "backfill": "Nachladen (Backfill)",
    "shorts": "Shorts-Prüfung",
    "batch": "Stapelgrößen",
    "explore": "Kanal erkunden"
  },
  "fields": {
    "smtp_host": {
      "label": "SMTP-Host",
      "hint": "z. B. smtp.gmail.com"
    },
    "smtp_port": {
      "label": "SMTP-Port",
      "hint": "Üblicherweise 587 (STARTTLS)."
    },
    "smtp_user": {
      "label": "SMTP-Benutzername",
      "hint": "Das sendende Konto / der Login."
    },
    "smtp_from": {
      "label": "Absenderadresse",
      "hint": "z. B. Siftlode <addr@gmail.com>. Standard ist der Benutzername."
    },
    "smtp_password": {
      "label": "SMTP-Passwort",
      "hint": "App-Passwort. Verschlüsselt gespeichert; nur schreibbar — wird nie wieder angezeigt."
    },
    "quota_daily_budget": {
      "label": "Tägliches Kontingentbudget",
      "hint": "YouTube-Data-API-Einheiten pro Tag (kostenloses Limit 10.000). Standard 9000 lässt Puffer."
    },
    "backfill_quota_reserve": {
      "label": "Nachlade-Kontingentreserve",
      "hint": "Reservierte Einheiten, damit geplantes Nachladen interaktive Syncs / Anreicherung nie aushungert."
    },
    "search_daily_limit_per_user": {
      "label": "Live-Suche — Tageslimit pro Nutzer",
      "hint": "Maximale Live-YouTube-Suchen pro Nutzer und Tag. Bei der API-Quelle kostet jede Suche 100 Einheiten (das gemeinsame Budget reicht also für insgesamt nur ~80-90/Tag); bei der Scrape-Quelle ist es ein reines Missbrauchslimit. 0 = Live-Suche deaktiviert."
    },
    "search_source": {
      "label": "Quelle der Live-Suche",
      "hint": "Woher die Ergebnisse der Live-YouTube-Suche stammen. \"scrape\" nutzt YouTubes internen Endpunkt und verbraucht kein API-Kontingent (empfohlen). \"api\" nutzt das offizielle search.list (100 Einheiten/Seite). Auf \"api\" umstellen, falls das Scraping ausfällt oder blockiert wird."
    },
    "backfill_recent_max_videos": {
      "label": "Aktuelles Nachladen — max. Videos",
      "hint": "Neueste Videos pro Kanal beim ersten Durchlauf."
    },
    "backfill_recent_max_days": {
      "label": "Aktuelles Nachladen — max. Alter (Tage)",
      "hint": "Wie weit der erste Durchlauf pro Kanal zurückreicht."
    },
    "shorts_probe_max_seconds": {
      "label": "Shorts-Prüfung — max. Dauer (s)",
      "hint": "Nur Videos bis zu dieser Länge werden als mögliche Shorts geprüft."
    },
    "shorts_probe_batch": {
      "label": "Shorts-Prüfung — Stapelgröße",
      "hint": "Wie viele Videos pro Lauf klassifiziert werden."
    },
    "enrich_batch_size": {
      "label": "Anreicherungs-Stapelgröße",
      "hint": "videos.list-IDs pro Aufruf (YouTube begrenzt auf 50)."
    },
    "autotag_title_sample": {
      "label": "Auto-Tag-Titelstichprobe",
      "hint": "Pro Kanal abgetastete aktuelle Videotitel zur Spracherkennung."
    },
    "youtube_api_key": {
      "label": "YouTube-API-Schlüssel",
      "hint": "Optional. Für öffentliche Lesezugriffe (Kanäle/Videos), damit gemeinsames Nachladen nicht vom OAuth eines Nutzers abhängt. Verschlüsselt gespeichert; nur schreibbar."
    },
    "youtube_api_proxy": {
      "label": "YouTube-API-Egress-Proxy",
      "hint": "Optional. HTTP(S)-Proxy-URL für ausgehende YouTube-API-Aufrufe — über einen Host mit fester IP leiten, damit ein IP-beschränkter Schlüssel von einem Server mit dynamischer IP funktioniert. Leer = direkt."
    },
    "google_client_id": {
      "label": "Google-Client-ID",
      "hint": "OAuth-2.0-Client-ID für die Google-Anmeldung. Verschlüsselt gespeichert; nur schreibbar. Beide Google-Felder leer lassen, um die Google-Anmeldung zu deaktivieren (E-Mail+Passwort funktioniert weiter)."
    },
    "google_client_secret": {
      "label": "Google-Client-Secret",
      "hint": "OAuth-2.0-Client-Secret. Verschlüsselt gespeichert; nur schreibbar."
    },
    "allow_registration": {
      "label": "Registrierung erlauben",
      "hint": "Wenn aktiviert, kann jeder eine E-Mail+Passwort-Registrierung einreichen. Für die Anmeldung sind weiterhin E-Mail-Bestätigung und Admin-Freigabe nötig."
    },
    "explore_grace_days": {
      "label": "Erkunden — Karenzzeit (Tage)",
      "hint": "Wie lange ein erkundeter, nicht abonnierter Kanal (und seine flüchtigen Videos) behalten wird, bevor die Aufräumaufgabe ihn entfernt. Ein Abo behält ihn dauerhaft."
    },
    "search_grace_days": {
      "label": "Suchergebnisse — Karenzzeit (Tage)",
      "hint": "Wie lange ein nicht behaltenes Live-Suchergebnis-Video (niemand hat es angesehen/gespeichert/abonniert) behalten wird, bevor die Entdeckungs-Aufräumaufgabe es entfernt."
    }
  },
  "save": "Speichern",
  "saving": "Speichern…",
  "saved": "Gespeichert",
  "saveFailed": "Speichern fehlgeschlagen",
  "unsaved": "Nicht gespeicherte Änderungen",
  "discard": "Verwerfen",
  "willReset": "wird beim Speichern auf den Standard zurückgesetzt",
  "reset": "Zurücksetzen",
  "resetHint": "Diese Überschreibung entfernen und auf den Datei-/Env-Standard zurückfallen.",
  "resetDone": "Auf Standard zurückgesetzt",
  "usingDefault": "Standard wird verwendet",
  "overridden": "in der DB überschrieben",
  "secretSet": "•••••••• gespeichert",
  "secretEnv": "Env-Wert wird verwendet",
  "secretUnset": "nicht gesetzt",
  "secretsDisabled": "Setze TOKEN_ENCRYPTION_KEY, um Secrets in der Datenbank zu speichern.",
  "testEmail": "Test-E-Mail senden",
  "testEmailHint": "Sende eine Test-E-Mail an deine eigene Adresse mit den obigen Einstellungen, um zu prüfen, ob sie funktionieren.",
  "testSent": "Test-E-Mail gesendet an {{to}}",
  "testFailed": "Test-E-Mail fehlgeschlagen — prüfe die Einstellungen"
}
