'Control Plane', 'login_heading' => 'Anmelden', 'login_subtitle' => 'Zugang zum Clusev-Panel.', 'email' => 'E-Mail', 'password' => 'Passwort', 'remember_me' => 'Angemeldet bleiben', 'login_submit' => 'Anmelden', 'checking' => 'Prüfe…', 'secured' => 'Gesichert', 'security_note' => 'Verbindung über SSH · 2FA erforderlich · jede Aktion landet im Audit-Log.', // ── Password change ────────────────────────────────────────────────── 'security' => 'Sicherheit', 'password_change_heading' => 'Passwort ändern', 'password_change_subtitle' => 'Lege ein eigenes Passwort fest (min. 12 Zeichen, Groß-/Kleinschreibung + Zahl).', 'current_password' => 'Aktuelles Passwort', 'new_password' => 'Neues Passwort', 'confirm_new_password' => 'Neues Passwort bestätigen', 'save_and_continue' => 'Speichern & weiter', 'saving' => 'Speichere…', // ── Two-factor (shared label) ──────────────────────────────────────── 'two_factor' => 'Zwei-Faktor', // ── 2FA challenge ──────────────────────────────────────────────────── 'challenge_heading' => 'Bestätigung', 'challenge_subtitle' => '6-stelliger Code aus deiner Authenticator-App.', 'code' => 'Code', 'back_to_login' => 'Zurück zur Anmeldung', // ── 2FA setup ──────────────────────────────────────────────────────── 'setup_heading' => 'Einrichten', 'setup_subtitle' => 'Scanne den Code mit einer Authenticator-App (Aegis, Google Authenticator, …) und bestätige mit einem Code.', 'qr_alt' => '2FA-QR-Code', 'secret_manual' => 'Geheimnis (manuell)', 'confirmation_code' => 'Bestätigungs-Code', 'activate' => 'Aktivieren', // ── Brand panel (auth layout) ──────────────────────────────────────── 'brand_headline_lead' => 'Eine Konsole für deine', 'brand_headline_accent' => 'gesamte Flotte', 'brand_tagline' => 'Agentenlos über SSH. Metriken, Dienste, Dateien und ein lückenloses Audit-Log — sicher aus einem Panel gesteuert.', 'terminal_title' => 'clusev · sicherheitsmodell', 'terminal_ssh' => 'agentenlos · exec + SFTP über phpseclib', 'terminal_key' => 'Host-Keys via TOFU gepinnt', 'terminal_2fa' => 'erzwungen für jeden Login', 'terminal_log' => 'jede Aktion im Audit-Log', 'terminal_core' => 'Open Core · AGPL-lizenziert', 'footer_copyright' => '© :year Clusev · Fleet Control', 'footer_operational' => 'betriebsbereit', // ── Page titles ────────────────────────────────────────────────────── 'title_login' => 'Anmelden — Clusev', 'title_password_change' => 'Passwort ändern — Clusev', 'title_challenge' => 'Bestätigung — Clusev', 'title_setup' => '2FA einrichten — Clusev', // ── Validation / error messages ────────────────────────────────────── 'too_many_attempts' => 'Zu viele Versuche. Bitte in :seconds Sekunden erneut versuchen.', 'invalid_credentials' => 'Diese Zugangsdaten passen nicht.', 'session_expired' => 'Sitzung abgelaufen. Bitte erneut anmelden.', 'invalid_code' => 'Ungültiger Code.', 'code_mismatch' => 'Code stimmt nicht — prüfe die Uhrzeit der Authenticator-App.', // ── Validation attribute names ─────────────────────────────────────── 'attr_current_password' => 'aktuelles Passwort', 'attr_new_password' => 'neues Passwort', // ── 2FA backup (recovery) codes ────────────────────────────────────── 'challenge_recovery_hint' => 'Authenticator verloren? Gib einen deiner Backup-Codes ein.', 'challenge_key_subtitle' => 'Bestätige mit deinem Security-Key oder einem Backup-Code.', 'challenge_backup_label' => 'Backup-Code', 'challenge_backup_placeholder' => 'xxxxxxxxxx-xxxxxxxxxx', 'challenge_backup_only_hint' => 'Kein Authenticator nötig — Security-Key oder ein Backup-Code.', 'recovery_heading' => 'Backup-Codes', 'recovery_subtitle' => 'Mit diesen Einmal-Codes meldest du dich an, wenn du keinen Authenticator hast.', 'recovery_warning' => 'Speichere diese Codes jetzt sicher ab — jeder Code funktioniert genau einmal. Lade sie herunter, solange sie angezeigt werden.', 'recovery_download' => 'Als Datei herunterladen', 'recovery_regenerate' => 'Neu erzeugen', 'recovery_regenerate_confirm' => 'Neue Codes erzeugen? Die alten werden ungültig.', 'recovery_regenerated' => 'Neue Backup-Codes erzeugt.', 'recovery_done' => 'Gespeichert — weiter', 'recovery_manage' => 'Backup-Codes verwalten', // ── Forgot / reset password ────────────────────────────────────────── 'title_forgot' => 'Passwort vergessen — Clusev', 'forgot_link' => 'Passwort vergessen?', 'forgot_heading' => 'Passwort zurücksetzen', 'forgot_subtitle' => 'Setze dein Passwort mit deinem 2FA-Code oder einem Backup-Code zurück.', 'forgot_code' => '2FA-Code oder Backup-Code', 'forgot_code_hint' => '6-stelliger Authenticator-Code oder einer deiner Backup-Codes.', 'forgot_submit' => 'Passwort zurücksetzen', 'forgot_send_email' => 'Reset-Link per E-Mail senden', 'reset_invalid' => 'E-Mail oder Code ungültig.', 'reset_done' => 'Passwort geändert. Bitte neu anmelden.', 'reset_link_sent' => 'Falls die E-Mail existiert, wurde ein Reset-Link versendet.', 'reset_token_invalid' => 'Reset-Link ungültig oder abgelaufen.', 'reset_no_2fa_note' => 'Ohne 2FA ist die Wiederherstellung nur per E-Mail-Link (falls SMTP konfiguriert) oder über den Befehl clusev:reset-admin möglich.', // ── WebAuthn / Security-Keys ───────────────────────────────────────── 'webauthn_login' => 'Mit Security-Key anmelden', 'webauthn_failed' => 'Security-Key konnte nicht bestätigt werden.', 'webauthn_title' => 'Security-Keys', 'webauthn_subtitle' => 'Hardware-Schlüssel (z. B. YubiKey) als zweiten Faktor beim Login.', 'webauthn_unavailable' => 'Security-Keys sind nur verfügbar, wenn das Panel unter einer Domain mit HTTPS läuft.', 'webauthn_name' => 'Bezeichnung', 'webauthn_name_placeholder' => 'z. B. YubiKey 5C', 'webauthn_add' => 'Security-Key hinzufügen', 'webauthn_added' => 'Security-Key hinzugefügt.', 'webauthn_removed' => 'Security-Key entfernt.', 'webauthn_none' => 'Noch kein Security-Key registriert.', 'webauthn_added_on' => 'Hinzugefügt :date', 'webauthn_last_used' => 'Zuletzt verwendet :date', 'webauthn_never_used' => 'Noch nicht verwendet', 'webauthn_remove_confirm' => 'Diesen Security-Key entfernen?', ];