# Brainwerk Security Suite — de_DE translation.
msgid ""
msgstr ""
"Project-Id-Version: Brainwerk Security Suite\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/i18n-sec\n"
"POT-Creation-Date: 2026-08-02T13:45:50+00:00\n"
"Language: de_DE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: i18n_tools.py\n"

#. Plugin Name of the plugin
#: brainwerk-security-suite.php admin/class-shieldforge-admin.php:114
#: admin/class-shieldforge-admin.php:115 admin/class-shieldforge-admin.php:126
#: admin/class-shieldforge-admin.php:127 admin/class-shieldforge-admin.php:196
#: includes/class-shieldforge-badge.php:40
msgid "Brainwerk Security Suite"
msgstr "Brainwerk Security Suite"

#. Description of the plugin
#: brainwerk-security-suite.php
msgid ""
"Privacy-first WordPress security suite, designed for EU compliance and "
"Multisite installations. Lightweight, transparent, GDPR-ready."
msgstr ""

#. Author of the plugin
#: brainwerk-security-suite.php
msgid "Stefan Kogelgruber"
msgstr ""

#. Author URI of the plugin
#: brainwerk-security-suite.php
msgid "https://brainwerk.at"
msgstr ""

#: admin/class-shieldforge-admin.php:28
msgid "Dashboard"
msgstr "Übersicht"

#: admin/class-shieldforge-admin.php:29
msgid "Login & Auth"
msgstr "Anmeldung"

#: admin/class-shieldforge-admin.php:30
#: admin/class-shieldforge-dashboard-widget.php:239
msgid "2FA"
msgstr "2FA"

#: admin/class-shieldforge-admin.php:31
#: admin/class-shieldforge-dashboard-widget.php:224
#: admin/views/page-dashboard.php:79
msgid "Hardening"
msgstr "Härtung"

#: admin/class-shieldforge-admin.php:32
msgid "Hardening+"
msgstr "Härtung+"

#: admin/class-shieldforge-admin.php:33
msgid "Firewall"
msgstr "Firewall"

#: admin/class-shieldforge-admin.php:34
#: admin/class-shieldforge-dashboard-widget.php:234
msgid "Scanner"
msgstr "Scanner"

#: admin/class-shieldforge-admin.php:35
msgid "Vulnerabilities"
msgstr "Schwachstellen"

#: admin/class-shieldforge-admin.php:36
msgid "Anomaly (beta)"
msgstr "Anomalien (Beta)"

#: admin/class-shieldforge-admin.php:37 admin/views/page-incident.php:18
msgid "Incident Response"
msgstr "Incident Response"

#: admin/class-shieldforge-admin.php:38
msgid "Audit"
msgstr "Audit-Protokoll"

#: admin/class-shieldforge-admin.php:39
msgid "Logs"
msgstr "Ereignisse"

#: admin/class-shieldforge-admin.php:40
msgid "Notifications"
msgstr "Benachrichtigungen"

#: admin/class-shieldforge-admin.php:41 admin/views/page-multisite.php:15
msgid "Multisite"
msgstr "Multisite"

#: admin/class-shieldforge-admin.php:42
msgid "Threat Network"
msgstr "Threat Network"

#: admin/class-shieldforge-admin.php:43
msgid "Privacy / GDPR"
msgstr "Datenschutz / DSGVO"

#: admin/class-shieldforge-admin.php:44
msgid "Tools"
msgstr "Werkzeuge"

#: admin/class-shieldforge-admin.php:45 admin/views/page-license.php:24
msgid "License"
msgstr "Lizenz"

#: admin/class-shieldforge-admin.php:46 admin/views/page-modules.php:30
msgid "Extra Modules"
msgstr ""

#: admin/class-shieldforge-admin.php:59
msgid "Operations"
msgstr "Betrieb"

#: admin/class-shieldforge-admin.php:63
msgid "Setup & Hardening"
msgstr "Einrichtung & Härtung"

#: admin/class-shieldforge-admin.php:67
msgid "Detection & Response"
msgstr "Erkennung & Reaktion"

#: admin/class-shieldforge-admin.php:71
msgid "Records & Alerts"
msgstr "Protokolle & Alarme"

#: admin/class-shieldforge-admin.php:75
msgid "System"
msgstr "System"

#: admin/class-shieldforge-admin.php:79
msgid "Advanced"
msgstr ""

#: admin/class-shieldforge-admin.php:169
msgid "Remove this block?"
msgstr "Diese Sperre entfernen?"

#: admin/class-shieldforge-admin.php:170
msgid "Block this IP?"
msgstr "Diese IP sperren?"

#: admin/class-shieldforge-admin.php:171
msgid "Request failed."
msgstr "Anfrage fehlgeschlagen."

#: admin/class-shieldforge-admin.php:189
msgid "You do not have permission to access this page."
msgstr "Du hast keine Berechtigung für diese Seite."

#: admin/class-shieldforge-admin.php:261
msgid "This section is coming soon."
msgstr "Dieser Bereich kommt bald."

#: admin/class-shieldforge-admin.php:347
msgid "Settings saved."
msgstr "Einstellungen gespeichert."

#: admin/class-shieldforge-dashboard-widget.php:35
msgid "Brainwerk Security Suite — Security Overview"
msgstr "Brainwerk Security Suite — Sicherheits-Übersicht"

#. translators: %d: threat score
#: admin/class-shieldforge-dashboard-widget.php:63
#, php-format
msgid "Threat level CRITICAL (%d/100) — review attacker activity."
msgstr "Bedrohungsstufe KRITISCH (%d/100) — Angreifer-Aktivität prüfen."

#: admin/class-shieldforge-dashboard-widget.php:72
#, php-format
msgid "Threat level HIGH (%d/100) — review the activity log."
msgstr "Bedrohungsstufe HOCH (%d/100) — Aktivitäts-Log prüfen."

#. translators: %d: lockout count
#: admin/class-shieldforge-dashboard-widget.php:85
#, php-format
msgid "%d brute-force lockouts in 24h — check the firewall list."
msgstr "%d Brute-Force-Sperren in 24 h — prüfe die Firewall-Liste."

#. translators: %d: failed login count
#: admin/class-shieldforge-dashboard-widget.php:98
#, php-format
msgid ""
"%d failed logins in 24h — consider tightening the brute-force threshold."
msgstr ""
"%d fehlgeschlagene Anmeldungen in 24 h — erwäge, die Brute-Force-Schwelle zu "
"verschärfen."

#. translators: %d: vulnerability count on active components
#: admin/class-shieldforge-dashboard-widget.php:115
#, php-format
msgid ""
"%d known vulnerability on an active plugin/theme/core. Update or replace "
"ASAP."
msgid_plural ""
"%d known vulnerabilities on active plugins/themes/core. Update or replace "
"ASAP."
msgstr[0] ""
"%d bekannte Schwachstelle in einem aktiven Plugin/Theme/Core. So bald wie "
"möglich aktualisieren oder ersetzen."
msgstr[1] ""
"%d bekannte Schwachstellen in aktiven Plugins/Themes/Core. So bald wie "
"möglich aktualisieren oder ersetzen."

#. translators: %d: malware-suspect hit count
#: admin/class-shieldforge-dashboard-widget.php:129
#, php-format
msgid ""
"%d suspicious code pattern detected by the scanner — investigate immediately."
msgid_plural ""
"%d suspicious code patterns detected by the scanner — investigate "
"immediately."
msgstr[0] ""
"%d verdächtiges Code-Muster vom Scanner erkannt — sofort untersuchen."
msgstr[1] ""
"%d verdächtige Code-Muster vom Scanner erkannt — sofort untersuchen."

#. translators: 1: changed count, 2: missing count
#: admin/class-shieldforge-dashboard-widget.php:142
#, php-format
msgid ""
"%1$d files changed and %2$d missing in 24h — verify against intentional "
"updates."
msgstr ""
"%1$d Dateien geändert und %2$d fehlend in 24 h — prüfe gegen beabsichtigte "
"Updates."

#. translators: %d: changed file count
#: admin/class-shieldforge-dashboard-widget.php:153
#, php-format
msgid "%d file changed since the last scan — review on the Scanner tab."
msgid_plural ""
"%d files changed since the last scan — review on the Scanner tab."
msgstr[0] "%d Datei seit dem letzten Scan geändert — im Scanner-Tab prüfen."
msgstr[1] "%d Dateien seit dem letzten Scan geändert — im Scanner-Tab prüfen."

#. translators: %d: anomaly count
#: admin/class-shieldforge-dashboard-widget.php:166
#, php-format
msgid "%d anomalous login flagged — verify it is legitimate."
msgid_plural "%d anomalous logins flagged — verify they are legitimate."
msgstr[0] "%d auffällige Anmeldung markiert — prüfe, ob sie legitim ist."
msgstr[1] "%d auffällige Anmeldungen markiert — prüfe, ob sie legitim sind."

#: admin/class-shieldforge-dashboard-widget.php:181
msgid ""
"You do not have 2FA enabled. Set it up on your profile — single biggest "
"defense against password attacks."
msgstr ""
"Du hast 2FA nicht aktiviert. Richte es in deinem Profil ein — die größte "
"Einzel-Verteidigung gegen Passwort-Angriffe."

#. translators: 1: admin username, 2: hit count
#: admin/class-shieldforge-dashboard-widget.php:197
#, php-format
msgid ""
"Your own admin username \"%1$s\" is being targeted (%2$d attempts in 24h)."
msgstr ""
"Ihr eigener Admin-Benutzername „%1$s“ wird angegriffen (%2$d Versuche in "
"24h)."

#: admin/class-shieldforge-dashboard-widget.php:214
msgid "BF"
msgstr "BF"

#: admin/class-shieldforge-dashboard-widget.php:216
msgid "Brute-force protection (IP-based)"
msgstr "Brute-Force-Schutz (IP-basiert)"

#: admin/class-shieldforge-dashboard-widget.php:219
msgid "Account-lock"
msgstr "Konto-Sperre"

#: admin/class-shieldforge-dashboard-widget.php:221
msgid "Account-based lockout"
msgstr "Konto-basierte Sperre"

#: admin/class-shieldforge-dashboard-widget.php:226
msgid "Hardening (XML-RPC, version, REST, headers)"
msgstr "Härtung (XML-RPC, Version, REST, Header)"

#: admin/class-shieldforge-dashboard-widget.php:229
msgid "Anomaly"
msgstr "Anomalie"

#: admin/class-shieldforge-dashboard-widget.php:231
#: admin/views/page-anomaly.php:65
msgid "Anomaly detection"
msgstr "Anomalie-Erkennung"

#: admin/class-shieldforge-dashboard-widget.php:236
msgid "File-integrity + malware-pattern scanner"
msgstr "Datei-Integrität + Malware-Muster-Scanner"

#: admin/class-shieldforge-dashboard-widget.php:241
msgid "Two-factor authentication module"
msgstr "Zwei-Faktor-Authentifizierungs-Modul"

#: admin/class-shieldforge-dashboard-widget.php:244
msgid "Vuln-DB"
msgstr "Schwachstellen-DB"

#: admin/class-shieldforge-dashboard-widget.php:246
msgid "Plugin/theme/core vulnerability scanner"
msgstr "Plugin-/Theme-/Core-Schwachstellen-Scanner"

#: admin/class-shieldforge-dashboard-widget.php:249
msgid "Anonymize"
msgstr "Anonymisieren"

#: admin/class-shieldforge-dashboard-widget.php:251
#: includes/class-shieldforge-sanity.php:221
#: includes/class-shieldforge-tools.php:104
msgid "IP anonymization (GDPR)"
msgstr "IP-Anonymisierung (DSGVO)"

#: admin/class-shieldforge-dashboard-widget.php:254
msgid "Digest"
msgstr "Bericht"

#: admin/class-shieldforge-dashboard-widget.php:256
#: includes/class-shieldforge-sanity.php:37
msgid "Daily digest e-mail"
msgstr "Täglicher Bericht per E-Mail"

#: admin/class-shieldforge-dashboard-widget.php:276
msgid "Calm"
msgstr "Ruhig"

#: admin/class-shieldforge-dashboard-widget.php:277
msgid "Elevated"
msgstr "Erhöht"

#: admin/class-shieldforge-dashboard-widget.php:278
msgid "High"
msgstr "Hoch"

#: admin/class-shieldforge-dashboard-widget.php:279
msgid "Critical"
msgstr "Kritisch"

#. translators: 1: anomalies in 24h, 2: distinct attacker IPs in 24h
#: admin/class-shieldforge-dashboard-widget.php:297
#, php-format
msgid "%1$d anomalies · %2$d distinct attackers (24h)"
msgstr "%1$d Anomalien · %2$d verschiedene Angreifer (24 h)"

#: admin/class-shieldforge-dashboard-widget.php:308
msgid "Action items"
msgstr "Offene Punkte"

#: admin/class-shieldforge-dashboard-widget.php:321
msgid "Logins"
msgstr "Anmeldungen"

#: admin/class-shieldforge-dashboard-widget.php:325
msgid "Failed"
msgstr "Fehlgeschlagen"

#: admin/class-shieldforge-dashboard-widget.php:329
#: admin/views/page-multisite.php:42 admin/views/page-multisite.php:58
msgid "Lockouts"
msgstr "Sperren"

#: admin/class-shieldforge-dashboard-widget.php:333
msgid "Probes"
msgstr "Prüfungen"

#: admin/class-shieldforge-dashboard-widget.php:349
msgid "Top attackers (24h)"
msgstr "Top-Angreifer (24 h)"

#: admin/class-shieldforge-dashboard-widget.php:362
msgid "Targeted users (24h)"
msgstr "Anvisierte Nutzer (24 h)"

#: admin/class-shieldforge-dashboard-widget.php:377
msgid "Recent events"
msgstr "Aktuelle Ereignisse"

#: admin/class-shieldforge-dashboard-widget.php:397
msgid "Open Brainwerk Security Suite"
msgstr "Brainwerk Security Suite öffnen"

#: admin/views/page-anomaly.php:15
msgid "Baseline cleared."
msgstr "Baseline gelöscht."

#. translators: 1: anomalies in 24h, 2: top attacker IP or "none"
#: admin/views/page-anomaly.php:54
#, php-format
msgid "%1$d anomalous logins in the last 24h. Top attacker IP: %2$s"
msgstr ""
"%1$d auffällige Anmeldungen in den letzten 24 h. Auffälligste Angreifer-IP: "
"%2$s"

#: admin/views/page-anomaly.php:56
msgid "none"
msgstr "keine"

#: admin/views/page-anomaly.php:65
msgid "beta"
msgstr "Beta"

#: admin/views/page-anomaly.php:67
msgid ""
"A lightweight, explainable Z-score model that flags logins outside a user's "
"normal pattern (hour of day, IP family, user-agent class)."
msgstr ""
"Ein leichtgewichtiges, erklärbares Z-Score-Modell, das Logins außerhalb des "
"normalen Musters eines Benutzers markiert (Tageszeit, IP-Familie, User-Agent-"
"Klasse)."

#: admin/views/page-anomaly.php:79
msgid "Enable"
msgstr "Aktivieren"

#: admin/views/page-anomaly.php:83
msgid "Record baselines on every successful login."
msgstr "Baselines bei jeder erfolgreichen Anmeldung erfassen."

#: admin/views/page-anomaly.php:88
msgid "Alert threshold"
msgstr "Warnschwelle"

#: admin/views/page-anomaly.php:91
msgid "Score 0–100. Above this value, the event is logged as severity HIGH."
msgstr ""
"Bewertung 0–100. Oberhalb dieses Wertes wird das Ereignis mit Schweregrad "
"HOCH protokolliert."

#: admin/views/page-anomaly.php:95
msgid "Block threshold (future)"
msgstr "Sperrschwelle (zukünftig)"

#: admin/views/page-anomaly.php:98
msgid "Reserved for a later release. Currently informational only."
msgstr "Reserviert für ein späteres Release. Derzeit nur informativ."

#: admin/views/page-anomaly.php:104 admin/views/page-audit.php:290
#: admin/views/page-hardening-plus.php:68
#: admin/views/page-hardening-plus.php:116
#: admin/views/page-hardening-plus.php:163
#: admin/views/page-hardening-plus.php:245 admin/views/page-scanner.php:303
#: admin/views/page-scanner.php:339 admin/views/page-threat-network.php:997
#: admin/views/page-threat-network.php:1045 admin/views/page-twofactor.php:111
#: admin/views/page-vulnerabilities.php:243
msgid "Save"
msgstr "Speichern"

#: admin/views/page-anomaly.php:110
msgid "Baseline status"
msgstr "Baseline-Status"

#: admin/views/page-anomaly.php:114
#, php-format
msgid "%1$s baseline record across %2$s user."
msgid_plural "%1$s baseline records across %2$s users."
msgstr[0] "%1$s Baseline-Eintrag bei %2$s Nutzer."
msgstr[1] "%1$s Baseline-Einträge bei %2$s Nutzern."

#: admin/views/page-anomaly.php:119
msgid "scoring becomes meaningful after ~5 logins per user."
msgstr "Bewertung wird nach ~5 Anmeldungen pro Nutzer aussagekräftig."

#: admin/views/page-anomaly.php:126 admin/views/page-anomaly.php:171
#: admin/views/page-logs.php:74 admin/views/page-twofactor.php:124
#: includes/class-shieldforge-admin-intros.php:215
msgid "User"
msgstr "Nutzer"

#: admin/views/page-anomaly.php:127
msgid "Tracked metrics"
msgstr "Verfolgte Metriken"

#: admin/views/page-anomaly.php:128
msgid "Total samples"
msgstr "Gesamt-Stichproben"

#: admin/views/page-anomaly.php:129
msgid "Last update (UTC)"
msgstr "Letztes Update (UTC)"

#: admin/views/page-anomaly.php:149
msgid ""
"Clear all baseline data? Users will need to log in a few times before "
"scoring is meaningful again."
msgstr ""
"Alle Baseline-Daten löschen? Nutzer müssen sich ein paar Mal anmelden, bevor "
"die Bewertung wieder aussagekräftig ist."

#: admin/views/page-anomaly.php:152
msgid "Reset baseline"
msgstr "Baseline zurücksetzen"

#: admin/views/page-anomaly.php:158
msgid "Recent anomalies"
msgstr "Aktuelle Anomalien"

#: admin/views/page-anomaly.php:161
msgid ""
"No anomalous logins yet. Once a user has at least 5 successful logins, "
"future logins outside their normal pattern will appear here."
msgstr ""
"Noch keine auffälligen Anmeldungen. Sobald ein Nutzer mindestens 5 "
"erfolgreiche Anmeldungen hat, erscheinen künftige Anmeldungen außerhalb des "
"üblichen Musters hier."

#: admin/views/page-anomaly.php:165
msgid ""
"Score is the maximum across all tracked metrics. The \"top metric\" column "
"shows which signal drove the score, with observed value vs. baseline mean ± "
"stddev."
msgstr ""
"Der Score ist das Maximum über alle erfassten Metriken. Die Spalte „Top-"
"Metrik“ zeigt, welches Signal den Score bestimmt hat, mit beobachtetem Wert "
"vs. Baseline-Mittelwert ± Standardabweichung."

#: admin/views/page-anomaly.php:170 admin/views/page-logs.php:70
#: admin/views/page-threat-network.php:1069
msgid "When (UTC)"
msgstr "Wann (UTC)"

#: admin/views/page-anomaly.php:172 admin/views/page-audit.php:197
#: admin/views/page-dashboard.php:191 admin/views/page-dashboard.php:233
#: admin/views/page-firewall.php:43 admin/views/page-logs.php:47
#: admin/views/page-logs.php:73 admin/views/page-modules.php:73
#: admin/views/page-modules.php:158
#: includes/class-shieldforge-admin-intros.php:112
#: includes/class-shieldforge-admin-intros.php:195
#: includes/class-shieldforge-admin-intros.php:214
msgid "IP"
msgstr "IP"

#: admin/views/page-anomaly.php:173
msgid "Score"
msgstr "Bewertung"

#: admin/views/page-anomaly.php:174
msgid "Top metric"
msgstr "Top-Metrik"

#: admin/views/page-anomaly.php:175
msgid "Observed vs. baseline"
msgstr "Beobachtet vs. Baseline"

#: admin/views/page-anomaly.php:228
msgid "Upgrade anomaly detection in Pro"
msgstr "Anomalie-Erkennung in Pro upgraden"

#: admin/views/page-anomaly.php:229
msgid ""
"The free build flags outliers using fixed Z-score thresholds. Pro adds per-"
"user adaptive thresholds, geo-velocity (\"impossible travel\"), and step-up "
"auth challenges instead of just logging."
msgstr ""
"Die kostenlose Version markiert Ausreißer mit festen Z-Score-Schwellen. Pro "
"ergänzt adaptive Schwellen pro Benutzer, Geo-Velocity („unmögliches Reisen“) "
"und Step-up-Auth-Challenges statt bloßem Protokollieren."

#: admin/views/page-anomaly.php:231
msgid "Per-user adaptive thresholds"
msgstr "Pro-Nutzer-adaptive Schwellen"

#: admin/views/page-anomaly.php:232
msgid "Geo-velocity / impossible-travel detection"
msgstr "Geo-Geschwindigkeit / Impossible-Travel-Erkennung"

#: admin/views/page-anomaly.php:233
msgid "Step-up challenge (2FA prompt) on suspicious logins"
msgstr "Step-up-Challenge (2FA-Abfrage) bei verdächtigen Anmeldungen"

#: admin/views/page-audit.php:31
msgid "Logout"
msgstr "Abmelden"

#: admin/views/page-audit.php:32
msgid "Post updated"
msgstr "Beitrag aktualisiert"

#: admin/views/page-audit.php:33
msgid "Post trashed"
msgstr "Beitrag in Papierkorb verschoben"

#: admin/views/page-audit.php:34
msgid "Post deleted"
msgstr "Beitrag gelöscht"

#: admin/views/page-audit.php:35
msgid "User registered"
msgstr "Nutzer registriert"

#: admin/views/page-audit.php:36
msgid "User deleted"
msgstr "Nutzer gelöscht"

#: admin/views/page-audit.php:37
msgid "User profile updated"
msgstr "Nutzer-Profil aktualisiert"

#: admin/views/page-audit.php:38
msgid "Role changed"
msgstr "Rolle geändert"

#: admin/views/page-audit.php:39
msgid "Admin created"
msgstr "Admin erstellt"

#: admin/views/page-audit.php:40
msgid "Plugin activated"
msgstr "Plugin aktiviert"

#: admin/views/page-audit.php:41
msgid "Plugin deactivated"
msgstr "Plugin deaktiviert"

#: admin/views/page-audit.php:42
msgid "Plugin updated"
msgstr "Plugin aktualisiert"

#: admin/views/page-audit.php:43
msgid "Theme switched"
msgstr "Theme gewechselt"

#: admin/views/page-audit.php:44
msgid "Theme updated"
msgstr "Theme aktualisiert"

#: admin/views/page-audit.php:45
msgid "Core updated"
msgstr "Core aktualisiert"

#: admin/views/page-audit.php:46
msgid "Option changed"
msgstr "Option geändert"

#: admin/views/page-audit.php:73
msgid "fields: "
msgstr "Felder: "

#: admin/views/page-audit.php:94
msgid "WordPress"
msgstr "WordPress"

#: admin/views/page-audit.php:130
msgid "system / cron"
msgstr "System / Cron"

#: admin/views/page-audit.php:141
msgid "Audit trail"
msgstr "Audit-Spur"

#: admin/views/page-audit.php:143
msgid ""
"Who changed what, when. Covers post edits, user changes, plugin/theme/core "
"updates, and security-sensitive option changes. Useful for incident response "
"and DSGVO Art. 32 compliance."
msgstr ""
"Wer hat was wann geändert. Umfasst Beitrags-Bearbeitungen, Nutzer-"
"Änderungen, Plugin-/Theme-/Core-Updates und sicherheitsrelevante Options-"
"Änderungen. Nützlich für Incident Response und DSGVO-Art.-32-Konformität."

#: admin/views/page-audit.php:155
msgid "(last 7 days)"
msgstr "(letzte 7 Tage)"

#: admin/views/page-audit.php:161
msgid "Recent audit events"
msgstr "Aktuelle Audit-Ereignisse"

#: admin/views/page-audit.php:167
msgid "Filter by type:"
msgstr "Nach Typ filtern:"

#: admin/views/page-audit.php:169
msgid "All audit events"
msgstr "Alle Audit-Ereignisse"

#: admin/views/page-audit.php:178
msgid "clear"
msgstr "leer"

#: admin/views/page-audit.php:185
msgid "No audit events yet."
msgstr "Noch keine Audit-Events."

#: admin/views/page-audit.php:186
msgid ""
"The audit trail starts recording from now. Edit a post, change a setting, "
"deactivate a plugin — anything you do shows up here. Useful for \"who "
"changed what when\" investigations."
msgstr ""
"Der Audit-Trail zeichnet ab jetzt auf. Bearbeiten Sie einen Beitrag, ändern "
"Sie eine Einstellung, deaktivieren Sie ein Plugin — alles, was Sie tun, "
"erscheint hier. Nützlich für „Wer hat wann was geändert“-Untersuchungen."

#: admin/views/page-audit.php:187
msgid "Edit my profile (test it)"
msgstr "Mein Profil bearbeiten (zum Testen)"

#: admin/views/page-audit.php:193 admin/views/page-scanner.php:190
#: includes/class-shieldforge-admin-intros.php:135
#: includes/class-shieldforge-admin-intros.php:191
#: includes/class-shieldforge-admin-intros.php:211
msgid "When"
msgstr "Wann"

#: admin/views/page-audit.php:194
#: includes/class-shieldforge-admin-intros.php:192
msgid "Who"
msgstr "Wer"

#: admin/views/page-audit.php:195 admin/views/page-logs.php:76
#: admin/views/page-scanner.php:371 admin/views/page-tools.php:111
#: includes/class-shieldforge-admin-intros.php:115
#: includes/class-shieldforge-admin-intros.php:193
msgid "Action"
msgstr "Aktion"

#: admin/views/page-audit.php:196
#: includes/class-shieldforge-admin-intros.php:194
msgid "What"
msgstr "Was"

#: admin/views/page-audit.php:217
msgid "Previous"
msgstr "Vorherige"

#: admin/views/page-audit.php:220
msgid "Next"
msgstr "Weiter"

#. translators: %d: page number
#: admin/views/page-audit.php:224
#, php-format
msgid "Page %d"
msgstr "Seite %d"

#: admin/views/page-audit.php:231
msgid "Audit settings"
msgstr "Audit-Einstellungen"

#: admin/views/page-audit.php:243
msgid "Enable audit log"
msgstr "Audit-Log aktivieren"

#: admin/views/page-audit.php:247
msgid "Master toggle. Off = no audit hooks register at all (zero overhead)."
msgstr ""
"Hauptschalter. Aus = keinerlei Audit-Hooks werden registriert (kein "
"Overhead)."

#: admin/views/page-audit.php:252
msgid "Track post changes"
msgstr "Beitrags-Änderungen verfolgen"

#: admin/views/page-audit.php:256
msgid ""
"post_updated, wp_trash_post, before_delete_post (skips revisions, auto-"
"drafts, nav-menu-items)"
msgstr ""
"post_updated, wp_trash_post, before_delete_post (überspringt Revisionen, "
"Auto-Drafts, Nav-Menu-Items)"

#: admin/views/page-audit.php:261
msgid "Track user changes"
msgstr "Benutzer-Änderungen verfolgen"

#: admin/views/page-audit.php:265
msgid "profile_update, deleted_user (logouts always logged)"
msgstr "profile_update, deleted_user (Logouts werden immer protokolliert)"

#: admin/views/page-audit.php:270
msgid "Track option changes"
msgstr "Options-Änderungen verfolgen"

#: admin/views/page-audit.php:274
msgid ""
"Whitelist of security-sensitive keys: siteurl, home, admin_email, "
"users_can_register, default_role, blogname, registration (network), "
"site_admins (network)."
msgstr ""
"Whitelist sicherheitsrelevanter Keys: siteurl, home, admin_email, "
"users_can_register, default_role, blogname, registration (Netzwerk), "
"site_admins (Netzwerk)."

#: admin/views/page-audit.php:279
msgid "Track updates"
msgstr "Updates verfolgen"

#: admin/views/page-audit.php:283
msgid "Plugin / theme / core updates via the WordPress updater."
msgstr "Plugin-/Theme-/Core-Updates über den WordPress-Updater."

#: admin/views/page-dashboard.php:29
msgid "All systems calm"
msgstr "Alles ruhig"

#: admin/views/page-dashboard.php:30
msgid "Slightly elevated activity"
msgstr "Leicht erhöhte Aktivität"

#: admin/views/page-dashboard.php:31
msgid "High threat level — review now"
msgstr "Hohes Bedrohungslevel — jetzt prüfen"

#: admin/views/page-dashboard.php:32
msgid "CRITICAL — investigate immediately"
msgstr "KRITISCH — sofort untersuchen"

#: admin/views/page-dashboard.php:77
msgid "Login Logging"
msgstr "Anmelde-Protokoll"

#: admin/views/page-dashboard.php:78 admin/views/page-login.php:36
msgid "Brute-Force Protection"
msgstr "Brute-Force-Schutz"

#: admin/views/page-dashboard.php:80
msgid "404 Probing Tracking"
msgstr "Verfolgung von 404-Prüfungen"

#: admin/views/page-dashboard.php:81
msgid "Email Notifications"
msgstr "E-Mail-Benachrichtigungen"

#: admin/views/page-dashboard.php:82
msgid "Daily Digest"
msgstr "Täglicher Bericht"

#: admin/views/page-dashboard.php:83
msgid "IP Anonymization (GDPR)"
msgstr "IP-Anonymisierung (DSGVO)"

#: admin/views/page-dashboard.php:84
msgid "Anomaly Detection"
msgstr "Anomalie-Erkennung"

#: admin/views/page-dashboard.php:95
msgid "/ 100"
msgstr "/ 100"

#. translators: 1: failed-login count 24h, 2: lockouts, 3: distinct-attacker-IPs
#: admin/views/page-dashboard.php:106
#, php-format
msgid ""
"Last 24h: %1$d failed logins, %2$d lockouts, %3$d distinct attacker IPs."
msgstr ""
"Letzte 24h: %1$d fehlgeschlagene Logins, %2$d Sperren, %3$d unterschiedliche "
"Angreifer-IPs."

#. translators: %d: action item count
#: admin/views/page-dashboard.php:122
#, php-format
msgid "%d thing needs your attention"
msgid_plural "%d things need your attention"
msgstr[0] "%d Sache braucht deine Aufmerksamkeit"
msgstr[1] "%d Sachen brauchen deine Aufmerksamkeit"

#: admin/views/page-dashboard.php:138
msgid ""
"✓ No outstanding action items. Everything that should be on is on, and no "
"recent activity is noisy enough to act on."
msgstr ""
"✓ Keine offenen Punkte. Alles was an sein sollte ist an, und keine jüngste "
"Aktivität ist auffällig genug um zu handeln."

#: admin/views/page-dashboard.php:146
msgid "Last 24 hours"
msgstr "Letzte 24 Stunden"

#: admin/views/page-dashboard.php:150
msgid "Successful logins"
msgstr "Erfolgreiche Anmeldungen"

#: admin/views/page-dashboard.php:154 admin/views/page-multisite.php:41
#: admin/views/page-multisite.php:57
msgid "Failed logins"
msgstr "Fehlanmeldungen"

#: admin/views/page-dashboard.php:161
msgid "Lockouts triggered"
msgstr "Sperren ausgelöst"

#: admin/views/page-dashboard.php:165
msgid "Probing 404s"
msgstr "Probing-404"

#: admin/views/page-dashboard.php:171
msgid "Module status"
msgstr "Modul-Status"

#: admin/views/page-dashboard.php:176
msgid "On"
msgstr "An"

#: admin/views/page-dashboard.php:176 admin/views/page-threat-network.php:911
msgid "Off"
msgstr "Aus"

#: admin/views/page-dashboard.php:185
msgid "Top attacker IPs (24h)"
msgstr "Top-Angreifer-IPs (24 h)"

#: admin/views/page-dashboard.php:187
msgid "Quiet day — nothing to flag."
msgstr "Ruhiger Tag — nichts zu melden."

#: admin/views/page-dashboard.php:192
msgid "Hits"
msgstr "Treffer"

#: admin/views/page-dashboard.php:207
msgid "Plugin language"
msgstr "Plugin-Sprache"

#: admin/views/page-dashboard.php:209
msgid ""
"Language of the Brainwerk Security Suite admin pages. \"WordPress default\" "
"follows your site / profile language; picking a language overrides it for "
"this plugin only."
msgstr ""
"Sprache der Brainwerk-Security-Suite-Adminseiten. „WordPress-Standard“ folgt "
"Ihrer Website-/Profilsprache; die Wahl einer Sprache überschreibt das nur "
"für dieses Plugin."

#: admin/views/page-dashboard.php:222
msgid "Apply"
msgstr "Anwenden"

#: admin/views/page-dashboard.php:227 admin/views/page-firewall.php:31
msgid "Active blocks"
msgstr "Aktive Sperren"

#: admin/views/page-dashboard.php:229
msgid "No IPs are currently blocked."
msgstr "Derzeit sind keine IPs gesperrt."

#: admin/views/page-dashboard.php:234 admin/views/page-firewall.php:44
#: admin/views/page-firewall.php:82
#: includes/class-shieldforge-admin-intros.php:113
msgid "Reason"
msgstr "Grund"

#: admin/views/page-dashboard.php:235
msgid "Until"
msgstr "Bis"

#: admin/views/page-firewall.php:20
#, php-format
msgid "IP %s blocked for %d minutes."
msgstr "IP %s für %d Minuten blockiert."

#: admin/views/page-firewall.php:35
msgid "No active IP blocks."
msgstr "Keine aktiven IP-Sperren."

#: admin/views/page-firewall.php:36
msgid ""
"Either nobody has tripped your brute-force threshold, or every block has "
"expired. The Logs tab shows historic blocks with one-click \"Block this IP "
"again\" actions if you need them."
msgstr ""
"Entweder hat noch niemand Ihre Brute-Force-Schwelle ausgelöst, oder alle "
"Sperren sind abgelaufen. Der Logs-Tab zeigt historische Sperren mit Ein-"
"Klick-Aktionen „Diese IP erneut blockieren“, falls Sie sie brauchen."

#: admin/views/page-firewall.php:37
msgid "Open Logs"
msgstr "Ereignisse öffnen"

#: admin/views/page-firewall.php:45
msgid "Until (UTC)"
msgstr "Bis (UTC)"

#: admin/views/page-firewall.php:46 admin/views/page-scanner.php:194
#: includes/class-shieldforge-admin-intros.php:139
#: includes/class-shieldforge-admin-intros.php:217
msgid "Actions"
msgstr "Aktionen"

#: admin/views/page-firewall.php:57
msgid "Unblock"
msgstr "Entsperren"

#: admin/views/page-firewall.php:68
msgid "Add manual block"
msgstr "Manuelle Sperre hinzufügen"

#: admin/views/page-firewall.php:74
msgid "IP address"
msgstr "IP-Adresse"

#: admin/views/page-firewall.php:78
msgid "Minutes"
msgstr "Minuten"

#: admin/views/page-firewall.php:87
msgid "Block IP"
msgstr "IP sperren"

#: admin/views/page-firewall.php:93
msgid "Crawler & traffic rate limiting"
msgstr "Crawler- & Traffic-Rate-Limiting"

#: admin/views/page-firewall.php:95
msgid ""
"Throttles anonymous clients that exceed a requests-per-minute budget (HTTP "
"429; repeated offenders are banned). Genuine search engines (Google, Bing, "
"Apple, Yandex, Baidu) are verified via reverse DNS and never throttled — "
"clients faking a search-engine identity can be blocked outright. Logged-in "
"users and whitelisted IPs are always exempt."
msgstr ""
"Drosselt anonyme Clients, die ein Requests-pro-Minute-Budget überschreiten "
"(HTTP 429; Wiederholungstäter werden gesperrt). Echte Suchmaschinen (Google, "
"Bing, Apple, Yandex, Baidu) werden per Reverse-DNS verifiziert und nie "
"gedrosselt — Clients, die eine Suchmaschinen-Identität vortäuschen, können "
"direkt blockiert werden. Eingeloggte Benutzer und IPs auf der Whitelist sind "
"immer ausgenommen."

#: admin/views/page-firewall.php:105
msgid "Enable rate limiting"
msgstr "Rate-Limiting aktivieren"

#: admin/views/page-firewall.php:109
msgid ""
"Count anonymous front-end requests per IP and throttle clients above the "
"limits"
msgstr ""
"Anonyme Frontend-Requests pro IP zählen und Clients oberhalb der Limits "
"drosseln"

#: admin/views/page-firewall.php:111
msgid ""
"Counters live in short-lived transients keyed by an IP hash — no plain-text "
"IPs, no extra tables. On high-traffic sites a persistent object cache is "
"recommended."
msgstr ""
"Die Zähler liegen in kurzlebigen Transients, indiziert über einen IP-Hash — "
"keine Klartext-IPs, keine zusätzlichen Tabellen. Auf Websites mit viel "
"Traffic wird ein persistenter Object-Cache empfohlen."

#: admin/views/page-firewall.php:115
msgid "Limit for visitors (requests/min)"
msgstr "Limit für Besucher (Requests/Min)"

#: admin/views/page-firewall.php:118
msgid ""
"A human barely exceeds 60 page views per minute; 240 leaves generous "
"headroom for prefetching and asset-generating plugins."
msgstr ""
"Ein Mensch überschreitet kaum 60 Seitenaufrufe pro Minute; 240 lässt "
"großzügigen Spielraum für Prefetching und Asset-generierende Plugins."

#: admin/views/page-firewall.php:122
msgid "Limit for crawlers (requests/min)"
msgstr "Limit für Crawler (Requests/Min)"

#: admin/views/page-firewall.php:125
msgid ""
"Applies to clients whose user agent identifies as a bot/crawler/script. "
"Verified search engines are exempt."
msgstr ""
"Gilt für Clients, deren User-Agent sich als Bot/Crawler/Script ausweist. "
"Verifizierte Suchmaschinen sind ausgenommen."

#: admin/views/page-firewall.php:129
msgid "Ban duration (minutes)"
msgstr "Sperrdauer (Minuten)"

#: admin/views/page-firewall.php:132
msgid ""
"Applied after 3 limit violations within 15 minutes. The ban also appears "
"under \"Active blocks\" above."
msgstr ""
"Wird nach 3 Limit-Verstößen innerhalb von 15 Minuten verhängt. Die Sperre "
"erscheint auch oben unter „Aktive Sperren“."

#: admin/views/page-firewall.php:136
msgid "Search-engine verification"
msgstr "Suchmaschinen-Verifizierung"

#: admin/views/page-firewall.php:140
msgid ""
"Verify claimed search-engine crawlers via reverse DNS (result cached for a "
"week)"
msgstr ""
"Angeblich von Suchmaschinen stammende Crawler per Reverse-DNS verifizieren "
"(Ergebnis eine Woche gecacht)"

#: admin/views/page-firewall.php:145
msgid "Block clients that fake a search-engine identity (403 + IP block)"
msgstr ""
"Clients blockieren, die eine Suchmaschinen-Identität vortäuschen (403 + IP-"
"Sperre)"

#: admin/views/page-firewall.php:151
msgid "Save rate limiting"
msgstr "Rate-Limiting speichern"

#: admin/views/page-firewall.php:157
msgid "Whitelist (CIDR or single IP, one per line)"
msgstr "Whitelist (CIDR oder einzelne IP, eine pro Zeile)"

#: admin/views/page-firewall.php:166
msgid "Save whitelist"
msgstr "Whitelist speichern"

#: admin/views/page-hardening-plus.php:38
msgid "\"Secured by\" footer badge"
msgstr "„Geschützt durch“-Badge im Footer"

#: admin/views/page-hardening-plus.php:40
msgid ""
"Shows a small trust badge in your site footer that signals visitors the site "
"is protected. Off by default — turn it on if you want to display it."
msgstr ""
"Zeigt ein kleines Vertrauens-Badge im Footer Ihrer Website, das Besuchern "
"signalisiert, dass die Website geschützt ist. Standardmäßig aus — aktivieren "
"Sie es, wenn Sie es anzeigen möchten."

#: admin/views/page-hardening-plus.php:48
msgid "Show footer badge"
msgstr "Footer-Badge anzeigen"

#: admin/views/page-hardening-plus.php:52
msgid "Display the badge in the front-end footer"
msgstr "Badge im Frontend-Footer anzeigen"

#: admin/views/page-hardening-plus.php:55
#: admin/views/page-hardening-plus.php:110
msgid "Preview:"
msgstr "Vorschau:"

#. translators: %s: product/brand name, e.g. "Brainwerk Security Suite"
#: admin/views/page-hardening-plus.php:59
#: includes/class-shieldforge-badge.php:48
#, php-format
msgid "Secured by %s"
msgstr "Geschützt durch %s"

#: admin/views/page-hardening-plus.php:62
msgid ""
"The badge links to brainwerk.at and shows \"… Pro\" automatically on Pro "
"installs. With Pro whitelabel active, the brand name follows your custom "
"brand."
msgstr ""
"Das Badge verlinkt auf brainwerk.at und zeigt auf Pro-Installationen "
"automatisch „… Pro“. Mit aktivem Pro-Whitelabel folgt der Markenname Ihrer "
"eigenen Marke."

#: admin/views/page-hardening-plus.php:74
#: includes/class-shieldforge-admin-intros.php:89
msgid "Custom login URL"
msgstr "Eigene Login-URL"

#: admin/views/page-hardening-plus.php:76
msgid ""
"Rewrite wp-login.php to a custom path. Cuts ~90% of brute-force bot traffic "
"at the door — they all hit /wp-login.php blindly. Direct access to /wp-login."
"php returns a 404 instead."
msgstr ""
"Schreibt wp-login.php auf einen eigenen Pfad um. Schneidet ~90 % des Brute-"
"Force-Bot-Traffics direkt an der Tür ab — alle treffen blind /wp-login.php. "
"Direkter Zugriff auf /wp-login.php liefert stattdessen 404."

#: admin/views/page-hardening-plus.php:79
msgid "Lockout-recovery:"
msgstr "Sperr-Wiederherstellung:"

#: admin/views/page-hardening-plus.php:80
msgid ""
"If you forget your slug, add this to wp-config.php and visit /wp-login.php?"
"shieldforge_rescue=YOUR_TOKEN to bypass:"
msgstr ""
"Falls du deinen Slug vergisst, füge dies zu wp-config.php hinzu und rufe /wp-"
"login.php?shieldforge_rescue=DEIN_TOKEN auf, um den Schutz zu umgehen:"

#: admin/views/page-hardening-plus.php:92
msgid "Enable custom login URL"
msgstr "Eigene Login-URL aktivieren"

#: admin/views/page-hardening-plus.php:96
msgid "Off by default — set the slug below first, then enable."
msgstr "Standardmäßig aus — zuerst den Slug unten setzen, dann aktivieren."

#: admin/views/page-hardening-plus.php:101
msgid "Slug"
msgstr "Slug"

#: admin/views/page-hardening-plus.php:107
msgid ""
"Letters, numbers, dash, underscore. Avoid common words (admin, login, "
"secure). Example: kogi-portal, schul-zugang."
msgstr ""
"Buchstaben, Ziffern, Bindestrich, Unterstrich. Vermeide gebräuchliche Wörter "
"(admin, login, secure). Beispiel: kogi-portal, schul-zugang."

#: admin/views/page-hardening-plus.php:122
#: includes/class-shieldforge-admin-intros.php:91
msgid "Honeypot anti-bot"
msgstr "Honeypot Anti-Bot"

#: admin/views/page-hardening-plus.php:124
msgid ""
"Adds a hidden field to login/register/comment forms. Bots fill every visible "
"field — submissions with the hidden field non-empty are blocked. 100% local, "
"no reCAPTCHA, no Google data transfer."
msgstr ""
"Fügt ein verstecktes Feld zu Login-/Registrier-/Kommentar-Formularen hinzu. "
"Bots füllen jedes sichtbare Feld — Übermittlungen mit nicht-leerem Hidden-"
"Feld werden blockiert. 100 % lokal, kein reCAPTCHA, keine Datenübertragung "
"an Google."

#: admin/views/page-hardening-plus.php:136
msgid "Master toggle"
msgstr "Hauptschalter"

#: admin/views/page-hardening-plus.php:140
msgid "Enable honeypot anti-bot."
msgstr "Honeypot-Anti-Bot aktivieren."

#: admin/views/page-hardening-plus.php:145
msgid "Surfaces"
msgstr "Oberflächen"

#: admin/views/page-hardening-plus.php:149
msgid "Login + lost-password form"
msgstr "Login- + Passwort-vergessen-Formular"

#: admin/views/page-hardening-plus.php:153
msgid "Registration form"
msgstr "Registrier-Formular"

#: admin/views/page-hardening-plus.php:157
msgid "Comment form"
msgstr "Kommentarformular"

#: admin/views/page-hardening-plus.php:169
msgid "Security HTTP headers"
msgstr "Security-HTTP-Header"

#: admin/views/page-hardening-plus.php:171
msgid ""
"Per-header toggles. Each header is set only if your server (nginx/Apache) "
"doesn't already send it — we never override a stricter policy."
msgstr ""
"Schalter pro Header. Jeder Header wird nur gesetzt, wenn Ihr Server (nginx/"
"Apache) ihn nicht bereits sendet — eine strengere Policy wird nie "
"überschrieben."

#: admin/views/page-hardening-plus.php:189
msgid "block MIME-sniff attacks"
msgstr "MIME-Sniff-Angriffe blockieren"

#: admin/views/page-hardening-plus.php:197
msgid "block clickjacking"
msgstr "Clickjacking blockieren"

#: admin/views/page-hardening-plus.php:213
msgid "disable geolocation, microphone, camera by default"
msgstr "Geolocation, Mikrofon, Kamera standardmäßig deaktivieren"

#: admin/views/page-hardening-plus.php:221
msgid "force HTTPS for 1 year (HTTPS-only)"
msgstr "HTTPS für 1 Jahr erzwingen (nur HTTPS)"

#: admin/views/page-hardening-plus.php:229
msgid "Enable CSP (off by default — wrong policy can break a site)"
msgstr ""
"CSP aktivieren (standardmäßig aus — falsche Policy kann eine Site "
"beschädigen)"

#: admin/views/page-hardening-plus.php:234
msgid ""
"Report-Only mode (logs violations but does not enforce — recommended for "
"testing)"
msgstr ""
"Report-Only-Modus (protokolliert Verstöße, erzwingt aber nichts — empfohlen "
"für Tests)"

#: admin/views/page-hardening-plus.php:239
msgid ""
"Default policy is permissive enough for most WordPress + page-builder sites. "
"Tighten gradually with Report-Only mode on, watching browser-console "
"violations."
msgstr ""
"Die Standard-Policy ist für die meisten WordPress- + Page-Builder-Sites "
"permissiv genug. Verschärfe schrittweise mit aktivem Report-Only-Modus und "
"beobachte Verstöße in der Browser-Konsole."

#: admin/views/page-hardening.php:14
msgid "Disable XML-RPC"
msgstr "XML-RPC deaktivieren"

#: admin/views/page-hardening.php:15
msgid ""
"Closes a common attack surface used by amplification and brute-force bots. "
"Disable only if Jetpack/legacy app login is required."
msgstr ""
"Schließt eine häufige Angriffsfläche, die von Amplification- und Brute-Force-"
"Bots genutzt wird. Nur deaktivieren, wenn Jetpack-/Legacy-App-Login benötigt "
"wird."

#: admin/views/page-hardening.php:18
msgid "Disable file editor in admin"
msgstr "Datei-Editor im Admin deaktivieren"

#: admin/views/page-hardening.php:19
msgid ""
"Sets DISALLOW_FILE_EDIT — prevents attackers with a stolen admin account "
"from injecting code via the theme/plugin editor."
msgstr ""
"Setzt DISALLOW_FILE_EDIT — verhindert, dass Angreifer mit einem gestohlenen "
"Admin-Konto Code über den Theme-/Plugin-Editor einschleusen."

#: admin/views/page-hardening.php:22
msgid "Hide WordPress version"
msgstr "WordPress-Version verbergen"

#: admin/views/page-hardening.php:23
msgid ""
"Removes the generator meta tag and version from RSS to make automated CVE "
"scans harder."
msgstr ""
"Entfernt den Generator-Meta-Tag und die Version aus RSS, um automatisierte "
"CVE-Scans zu erschweren."

#: admin/views/page-hardening.php:26
msgid "Block author enumeration"
msgstr "Autor-Enumeration blockieren"

#: admin/views/page-hardening.php:27
msgid ""
"Stops \"?author=1\" tricks and removes /wp-json/wp/v2/users for anonymous "
"users — both leak usernames."
msgstr ""
"Stoppt „?author=1“-Tricks und entfernt /wp-json/wp/v2/users für anonyme "
"Benutzer — beide leaken Benutzernamen."

#: admin/views/page-hardening.php:30
msgid "Send security headers"
msgstr "Security-Header senden"

#: admin/views/page-hardening.php:31
msgid ""
"Adds X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-"
"Policy, and HSTS (when on HTTPS)."
msgstr ""
"Fügt X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-"
"Policy und HSTS (bei HTTPS) hinzu."

#: admin/views/page-hardening.php:34
msgid "Restrict REST API for anonymous users"
msgstr "REST-API für anonyme Nutzer einschränken"

#: admin/views/page-hardening.php:35
msgid ""
"Blocks anonymous access to /wp-json/wp/v2/users, which often leaks usernames."
msgstr ""
"Blockiert anonymen Zugriff auf /wp-json/wp/v2/users, was oft Benutzernamen "
"leakt."

#: admin/views/page-hardening.php:47
msgid "Hardening Toggles"
msgstr "Härtungs-Schalter"

#: admin/views/page-hardening.php:62 admin/views/page-incident.php:50
#: admin/views/page-login.php:119 admin/views/page-notifications.php:62
#: admin/views/page-privacy.php:63
msgid "Save changes"
msgstr "Änderungen speichern"

#: admin/views/page-incident.php:20
msgid ""
"Forensische Triage, Beweissicherung, gestufter Lockdown und "
"deutschsprachiger Vorfalls-Report nach Anzeichen einer Kompromittierung. Das "
"Modul erkennt, sichert, sperrt und meldet — es bereinigt NICHT selbsttätig "
"(human-gated)."
msgstr ""
"Forensische Triage, Beweissicherung, gestufter Lockdown und "
"deutschsprachiger Vorfalls-Report nach Anzeichen einer Kompromittierung. Das "
"Modul erkennt, sichert, sperrt und meldet — es bereinigt NICHT selbsttätig "
"(human-gated)."

#: admin/views/page-incident.php:23
msgid "Status:"
msgstr "Status:"

#: admin/views/page-incident.php:24
msgid ""
"Modul-Gerüst aktiv (Phase 0). Automatische Auslöser, Engine und Lockdown "
"folgen in den nächsten Phasen."
msgstr ""
"Modul-Gerüst aktiv (Phase 0). Automatische Auslöser, Engine und Lockdown "
"folgen in den nächsten Phasen."

#: admin/views/page-incident.php:27
msgid "Offene Vorfälle:"
msgstr "Offene Vorfälle:"

#: admin/views/page-incident.php:40
msgid "Automatische Reaktion"
msgstr "Automatische Reaktion"

#: admin/views/page-incident.php:43
msgid "Incident-Erkennung &amp; automatische Reaktion aktivieren"
msgstr "Incident-Erkennung &amp; automatische Reaktion aktivieren"

#: admin/views/page-incident.php:46
msgid ""
"Default AUS. Wenn aktiviert, korreliert ShieldForge Kompromittierungs-"
"Indikatoren und kann (in späteren Phasen) gestuft in einen gesicherten "
"Zustand fallen — immer mit garantiertem Recovery-Pfad. Der manuelle Audit "
"unten funktioniert unabhängig von dieser Einstellung."
msgstr ""
"Default AUS. Wenn aktiviert, korreliert ShieldForge Kompromittierungs-"
"Indikatoren und kann (in späteren Phasen) gestuft in einen gesicherten "
"Zustand fallen — immer mit garantiertem Recovery-Pfad. Der manuelle Audit "
"unten funktioniert unabhängig von dieser Einstellung."

#: admin/views/page-incident.php:54
msgid "Manueller Notfall-Audit"
msgstr "Manueller Notfall-Audit"

#: admin/views/page-incident.php:56
msgid ""
"Startet eine read-only forensische Triage der Instanz (Datei-/DB-Integrität, "
"Persistenz-Orte, Korrelation mit den Angriffs-Logs). In Phase 0 ist dies ein "
"Gerüst-Button — es wird nichts gescannt oder verändert."
msgstr ""
"Startet eine read-only forensische Triage der Instanz (Datei-/DB-Integrität, "
"Persistenz-Orte, Korrelation mit den Angriffs-Logs). In Phase 0 ist dies ein "
"Gerüst-Button — es wird nichts gescannt oder verändert."

#: admin/views/page-incident.php:63
msgid "Notfall-Audit starten"
msgstr "Notfall-Audit starten"

#: admin/views/page-incident.php:69
msgid "Vorfälle"
msgstr "Vorfälle"

#: admin/views/page-incident.php:71
msgid "Keine Vorfälle erfasst."
msgstr "Keine Vorfälle erfasst."

#: admin/views/page-incident.php:76 admin/views/page-modules.php:73
#: admin/views/page-modules.php:158
msgid "Zeit"
msgstr "Zeit"

#: admin/views/page-incident.php:77
msgid "Konfidenz"
msgstr "Konfidenz"

#: admin/views/page-incident.php:78 admin/views/page-modules.php:73
#: admin/views/page-tools.php:55 admin/views/page-twofactor.php:125
msgid "Status"
msgstr "Status"

#: admin/views/page-incident.php:79
msgid "Auslöser"
msgstr "Auslöser"

#: admin/views/page-incident.php:80
msgid "Zusammenfassung"
msgstr "Zusammenfassung"

#: admin/views/page-license.php:26 admin/views/partials/upgrade-hint.php:28
msgid "Pro"
msgstr "Pro"

#: admin/views/page-license.php:28
msgid "Free"
msgstr "Free"

#: admin/views/page-license.php:34
msgid "SHIELDFORGE_FORCE_PRO override is active."
msgstr "SHIELDFORGE_FORCE_PRO-Override ist aktiv."

#: admin/views/page-license.php:35
msgid ""
"Pro features are unlocked locally without a license check. Remove the "
"constant from wp-config.php to switch back to the standard licensing flow."
msgstr ""
"Pro-Features sind lokal ohne Lizenzprüfung freigeschaltet. Entfernen Sie die "
"Konstante aus der wp-config.php, um zum normalen Lizenzierungsablauf "
"zurückzukehren."

#: admin/views/page-license.php:39
msgid "Brainwerk Security Suite Pro is active on this site."
msgstr "Brainwerk Security Suite Pro ist auf dieser Website aktiv."

#: admin/views/page-license.php:42
#, php-format
msgid "Manage your subscription and download future updates at %s."
msgstr ""
"Verwalten Sie Ihr Abonnement und laden Sie künftige Updates unter %s "
"herunter."

#: admin/views/page-license.php:49
msgid ""
"Brainwerk Security Suite is fully functional on the free tier. Upgrade to "
"Pro to unlock 2FA-Passkeys, Geo-Blocking, Cloud Threat Intel, multisite "
"aggregate dashboards, AI-assisted incident analysis (BYOK or self-hosted), "
"Slack/Discord/Telegram/Teams notifications, and white-label mode."
msgstr ""
"Brainwerk Security Suite ist in der kostenlosen Version voll funktionsfähig. "
"Mit dem Upgrade auf Pro erhalten Sie 2FA-Passkeys, Geo-Blocking, Cloud "
"Threat Intel, Multisite-Aggregat-Dashboards, KI-gestützte Vorfallsanalyse "
"(BYOK oder selbst gehostet), Slack-/Discord-/Telegram-/Teams-"
"Benachrichtigungen und White-Label-Modus."

#: admin/views/page-license.php:53
msgid "View Pro plans →"
msgstr "Pro-Tarife ansehen →"

#: admin/views/page-license.php:56
msgid "Documentation"
msgstr "Dokumentation"

#: admin/views/page-license.php:60
msgid ""
"After purchase you will receive the Brainwerk Security Suite Pro plugin (."
"zip) plus a license key. Install the Pro plugin alongside this free one — "
"activation happens inside the Pro plugin."
msgstr ""
"Nach dem Kauf erhalten Sie das Plugin Brainwerk Security Suite Pro (.zip) "
"sowie einen Lizenzschlüssel. Installieren Sie das Pro-Plugin neben diesem "
"kostenlosen — die Aktivierung erfolgt im Pro-Plugin."

#: admin/views/page-license.php:66
msgid "Pro features"
msgstr "Pro-Features"

#: admin/views/page-license.php:68
msgid "WebAuthn / Passkeys"
msgstr "WebAuthn / Passkeys"

#: admin/views/page-license.php:68
msgid ""
"phishing-resistant login with hardware keys, Face ID, Touch ID, Windows "
"Hello."
msgstr ""
"Phishing-resistenter Login mit Hardware-Keys, Face ID, Touch ID, Windows "
"Hello."

#: admin/views/page-license.php:69
msgid "Geo-IP blocking"
msgstr "Geo-IP-Blocking"

#: admin/views/page-license.php:69
msgid "country allow/deny lists on login, register, comment, REST."
msgstr "Länder-Allow-/Deny-Listen für Login, Registrierung, Kommentare, REST."

#: admin/views/page-license.php:70
msgid "Cloud Threat Intel"
msgstr "Cloud Threat Intel"

#: admin/views/page-license.php:70
msgid "Spamhaus DROP synced daily, EU-hosted relay."
msgstr "Spamhaus DROP, täglich synchronisiert, EU-gehostetes Relay."

#: admin/views/page-license.php:71
msgid "AI Backend (BYOK or self-hosted)"
msgstr "KI-Backend (BYOK oder selbst gehostet)"

#: admin/views/page-license.php:71
msgid ""
"Mistral (EU) or local Ollama analyse flagged security events on demand. No "
"data leaves your stack unless you opt in."
msgstr ""
"Mistral (EU) oder lokales Ollama analysieren markierte Sicherheitsereignisse "
"auf Abruf. Keine Daten verlassen Ihren Stack, sofern Sie nicht ausdrücklich "
"zustimmen."

#: admin/views/page-license.php:72
msgid "Slack / Discord / Telegram / Teams"
msgstr "Slack / Discord / Telegram / Teams"

#: admin/views/page-license.php:72
msgid "real-time channel notifications for incidents and digest reports."
msgstr "Echtzeit-Kanalbenachrichtigungen für Vorfälle und Digest-Reports."

#: admin/views/page-license.php:73
msgid "Multisite aggregate dashboard"
msgstr "Multisite-Aggregat-Dashboard"

#: admin/views/page-license.php:73
msgid ""
"cross-site attacker view, per-site threat scores, network-wide 2FA coverage."
msgstr ""
"Website-übergreifende Angreifer-Ansicht, Bedrohungs-Scores pro Website, "
"netzwerkweite 2FA-Abdeckung."

#: admin/views/page-license.php:74
msgid "White-label mode"
msgstr "White-Label-Modus"

#: admin/views/page-license.php:74
msgid "rebrand the plugin in admin for client installs."
msgstr "Plugin im Admin für Kunden-Installationen umbenennen."

#: admin/views/page-login.php:26
msgid "Login Activity Logging"
msgstr "Anmelde-Aktivitäts-Protokoll"

#: admin/views/page-login.php:30
msgid "Log every login attempt (success and failure)"
msgstr "Jeden Anmeldeversuch protokollieren (Erfolg und Fehler)"

#: admin/views/page-login.php:32
msgid ""
"Stored in the database, respects the IP-anonymization setting under Privacy."
msgstr ""
"In der Datenbank gespeichert, berücksichtigt die IP-Anonymisierungs-"
"Einstellung unter Datenschutz."

#: admin/views/page-login.php:40
msgid "Block IPs after too many failed logins"
msgstr "IPs nach zu vielen Fehlanmeldungen sperren"

#: admin/views/page-login.php:45
msgid "Failure threshold"
msgstr "Fehlerschwelle"

#: admin/views/page-login.php:50
msgid "Number of failed logins from the same IP that triggers a block."
msgstr ""
"Anzahl fehlgeschlagener Anmeldungen von derselben IP, die eine Sperre "
"auslöst."

#: admin/views/page-login.php:54 admin/views/page-login.php:101
msgid "Window (minutes)"
msgstr "Zeitfenster (Minuten)"

#: admin/views/page-login.php:62 admin/views/page-login.php:109
msgid "Lockout duration (minutes)"
msgstr "Sperrdauer (Minuten)"

#: admin/views/page-login.php:70
msgid "IP whitelist"
msgstr "IP-Whitelist"

#: admin/views/page-login.php:75
msgid "One IP or CIDR per line. These addresses are never blocked."
msgstr "Eine IP oder CIDR pro Zeile. Diese Adressen werden nie gesperrt."

#: admin/views/page-login.php:82
msgid "Account-based Lockout"
msgstr "Konto-basierte Sperre"

#: admin/views/page-login.php:83
msgid ""
"IP-based protection above blocks one source. This rule blocks one ACCOUNT "
"regardless of source IP — defense against credential-stuffing botnets that "
"rotate addresses."
msgstr ""
"Der IP-basierte Schutz oben blockiert eine Quelle. Diese Regel blockiert ein "
"KONTO unabhängig von der Quell-IP — Schutz gegen Credential-Stuffing-"
"Botnets, die Adressen rotieren."

#: admin/views/page-login.php:87
msgid "Lock individual accounts after too many failed logins"
msgstr "Einzelne Konten nach zu vielen Fehlanmeldungen sperren"

#: admin/views/page-login.php:92
msgid "Failure threshold (per account)"
msgstr "Fehlerschwelle (pro Konto)"

#: admin/views/page-login.php:97
msgid ""
"Total failed attempts on the same username (across all IPs) before the "
"account is locked."
msgstr ""
"Gesamt-Fehlversuche auf denselben Benutzernamen (über alle IPs) bevor das "
"Konto gesperrt wird."

#: admin/views/page-logs.php:37
msgid "Event log"
msgstr "Ereignis-Protokoll"

#: admin/views/page-logs.php:43
msgid "Event type"
msgstr "Ereignistyp"

#: admin/views/page-logs.php:50
msgid "Filter"
msgstr "Filter"

#: admin/views/page-logs.php:51
msgid "Reset"
msgstr "Zurücksetzen"

#: admin/views/page-logs.php:55
#, php-format
msgid "%1$s entries · page %2$s of %3$s"
msgstr "%1$s Einträge · Seite %2$s von %3$s"

#: admin/views/page-logs.php:65
msgid "No events match the current filters."
msgstr "Keine Ereignisse passen zu den aktuellen Filtern."

#: admin/views/page-logs.php:71 includes/class-shieldforge-admin-intros.php:212
msgid "Event"
msgstr "Ereignis"

#: admin/views/page-logs.php:72
msgid "Sev."
msgstr "Schw."

#: admin/views/page-logs.php:75
msgid "Request"
msgstr "Anfrage"

#: admin/views/page-logs.php:93
msgid "Block 60m"
msgstr "60 Min sperren"

#: admin/views/page-logs.php:112
msgid "« Prev"
msgstr "« Zurück"

#: admin/views/page-logs.php:113
msgid "Next »"
msgstr "Weiter »"

#: admin/views/page-modules.php:13
msgid "Einstellungen gespeichert."
msgstr "Einstellungen gespeichert."

#: admin/views/page-modules.php:17
msgid ""
"Export-Anfrage versendet — User bekommt Bestätigungsmail mit Download-Link."
msgstr ""
"Export-Anfrage versendet — User bekommt Bestätigungsmail mit Download-Link."

#: admin/views/page-modules.php:17
msgid "Lösch-Anfrage versendet — User bekommt Bestätigungsmail."
msgstr "Lösch-Anfrage versendet — User bekommt Bestätigungsmail."

#: admin/views/page-modules.php:31
msgid ""
"9 zusätzliche Module für Defense-in-Depth. Alle standardmäßig OFF. Per "
"Toggle einzeln scharf schalten."
msgstr ""

#: admin/views/page-modules.php:37
msgid "HTTP-Security-Headers"
msgstr "HTTP-Security-Headers"

#: admin/views/page-modules.php:37 admin/views/page-modules.php:51
#: admin/views/page-modules.php:58 admin/views/page-modules.php:65
#: admin/views/page-modules.php:102 admin/views/page-modules.php:118
#: admin/views/page-modules.php:125
msgid "AN"
msgstr "AN"

#: admin/views/page-modules.php:37 admin/views/page-modules.php:51
#: admin/views/page-modules.php:58 admin/views/page-modules.php:65
#: admin/views/page-modules.php:102 admin/views/page-modules.php:118
#: admin/views/page-modules.php:125
msgid "AUS"
msgstr "AUS"

#: admin/views/page-modules.php:38
msgid ""
"Sendet OWASP-empfohlene Response-Header: X-Frame-Options, X-Content-Type-"
"Options, Referrer-Policy, Permissions-Policy, HSTS, COOP, CORP. Empfohlen: "
"alle an."
msgstr ""
"Sendet OWASP-empfohlene Response-Header: X-Frame-Options, X-Content-Type-"
"Options, Referrer-Policy, Permissions-Policy, HSTS, COOP, CORP. Empfohlen: "
"alle an."

#: admin/views/page-modules.php:39 admin/views/page-modules.php:60
#: admin/views/page-modules.php:67 admin/views/page-modules.php:104
msgid "Modul aktiv"
msgstr "Modul aktiv"

#: admin/views/page-modules.php:40
msgid "X-Frame-Options: SAMEORIGIN (Clickjacking-Schutz)"
msgstr "X-Frame-Options: SAMEORIGIN (Clickjacking-Schutz)"

#: admin/views/page-modules.php:41
msgid "X-Content-Type-Options: nosniff (MIME-Sniffing)"
msgstr "X-Content-Type-Options: nosniff (MIME-Sniffing)"

#: admin/views/page-modules.php:42
msgid "Referrer-Policy: strict-origin-when-cross-origin"
msgstr "Referrer-Policy: strict-origin-when-cross-origin"

#: admin/views/page-modules.php:43
msgid "Permissions-Policy (Kamera/Mikro/GPS deny)"
msgstr "Permissions-Policy (Kamera/Mikro/GPS deny)"

#: admin/views/page-modules.php:44
msgid "Strict-Transport-Security (nur HTTPS)"
msgstr "Strict-Transport-Security (nur HTTPS)"

#: admin/views/page-modules.php:45
msgid "Cross-Origin-Opener-Policy: same-origin"
msgstr "Cross-Origin-Opener-Policy: same-origin"

#: admin/views/page-modules.php:46
msgid "Cross-Origin-Resource-Policy: same-site"
msgstr "Cross-Origin-Resource-Policy: same-site"

#: admin/views/page-modules.php:51
msgid "HaveIBeenPwned-Passwort-Check"
msgstr "HaveIBeenPwned-Passwort-Check"

#: admin/views/page-modules.php:52
msgid ""
"Prüft neue Passwörter gegen ~12 Mrd. geleakte Passwörter. <strong>Privacy "
"via k-Anonymity</strong>: nur SHA1-Präfix wird gesendet — HIBP sieht NIE das "
"echte Passwort."
msgstr ""
"Prüft neue Passwörter gegen ~12 Mrd. geleakte Passwörter. <strong>Privacy "
"via k-Anonymity</strong>: nur SHA1-Präfix wird gesendet — HIBP sieht NIE das "
"echte Passwort."

#: admin/views/page-modules.php:53
msgid ""
"<strong>Modul aktiv</strong> — User mit kompromittiertem Passwort werden zur "
"Änderung gezwungen"
msgstr ""
"<strong>Modul aktiv</strong> — User mit kompromittiertem Passwort werden zur "
"Änderung gezwungen"

#: admin/views/page-modules.php:58
msgid "Trusted Devices"
msgstr "Trusted Devices"

#: admin/views/page-modules.php:59
msgid ""
"Fingerprint = SHA256(UA + IP-Subnet + Accept-Language). Bei Login von "
"<strong>neuem Gerät</strong>: Mail-Benachrichtigung an User (Account-"
"Takeover-Frühwarnung). Max 20 Devices/User."
msgstr ""
"Fingerprint = SHA256(UA + IP-Subnet + Accept-Language). Bei Login von "
"<strong>neuem Gerät</strong>: Mail-Benachrichtigung an User (Account-"
"Takeover-Frühwarnung). Max 20 Devices/User."

#: admin/views/page-modules.php:65
msgid "Live Traffic Monitor"
msgstr "Live Traffic Monitor"

#: admin/views/page-modules.php:66
msgid ""
"Speichert letzte 1000 „interessante\" Requests (Login, POST, Admin, AJAX, "
"XML-RPC) für Forensik. Ring-Buffer — auto-cleanup."
msgstr ""
"Speichert letzte 1000 „interessante\" Requests (Login, POST, Admin, AJAX, "
"XML-RPC) für Forensik. Ring-Buffer — auto-cleanup."

#: admin/views/page-modules.php:71
msgid "Letzte 10 Requests anzeigen"
msgstr "Letzte 10 Requests anzeigen"

#: admin/views/page-modules.php:73
msgid "Method"
msgstr "Methode"

#: admin/views/page-modules.php:73 admin/views/page-modules.php:158
msgid "Pfad"
msgstr "Pfad"

#: admin/views/page-modules.php:92
msgid "Core-File-Compare"
msgstr "Core-File-Compare"

#: admin/views/page-modules.php:92
msgid "aktiv (manual)"
msgstr "aktiv (manuell)"

#: admin/views/page-modules.php:93
msgid ""
"Vergleicht alle WordPress-Core-Files (wp-admin/, wp-includes/) gegen das "
"offizielle MD5-Manifest von wordpress.org. Findet modifizierte / fehlende / "
"extra Files. <strong>Datenschutz</strong>: kein Upload, alles lokal."
msgstr ""
"Vergleicht alle WordPress-Core-Files (wp-admin/, wp-includes/) gegen das "
"offizielle MD5-Manifest von wordpress.org. Findet modifizierte / fehlende / "
"extra Files. <strong>Datenschutz</strong>: kein Upload, alles lokal."

#: admin/views/page-modules.php:95
msgid "Jetzt Core-Files prüfen"
msgstr "Jetzt Core-Files prüfen"

#: admin/views/page-modules.php:102
msgid "CAPTCHA (hCaptcha / Turnstile)"
msgstr "CAPTCHA (hCaptcha / Turnstile)"

#: admin/views/page-modules.php:103
msgid ""
"<strong>Privacy-First:</strong> hCaptcha (EU-friendly) ODER Cloudflare "
"Turnstile (kein Cookie) statt Google reCAPTCHA. Auf Login/Register/Lost-"
"Password."
msgstr ""
"<strong>Privacy-First:</strong> hCaptcha (EU-friendly) ODER Cloudflare "
"Turnstile (kein Cookie) statt Google reCAPTCHA. Auf Login/Register/Lost-"
"Password."

#: admin/views/page-modules.php:105
msgid "Provider:"
msgstr "Provider:"

#: admin/views/page-modules.php:107
msgid "hCaptcha (Empfehlung — EU)"
msgstr "hCaptcha (Empfehlung — EU)"

#: admin/views/page-modules.php:108
msgid "Cloudflare Turnstile"
msgstr "Cloudflare Turnstile"

#: admin/views/page-modules.php:111
msgid "Site-Key:"
msgstr "Site-Key:"

#: admin/views/page-modules.php:112
msgid "Secret-Key:"
msgstr "Secret-Key:"

#: admin/views/page-modules.php:113
msgid ""
"Site-Key + Secret-Key holen: <a href=\"https://www.hcaptcha.com/\" "
"target=\"_blank\" rel=\"noopener\">hCaptcha.com</a> (gratis) oder <a "
"href=\"https://www.cloudflare.com/products/turnstile/\" target=\"_blank\" "
"rel=\"noopener\">Cloudflare Turnstile</a>."
msgstr ""
"Site-Key + Secret-Key holen: <a href=\"https://www.hcaptcha.com/\" "
"target=\"_blank\" rel=\"noopener\">hCaptcha.com</a> (gratis) oder <a "
"href=\"https://www.cloudflare.com/products/turnstile/\" target=\"_blank\" "
"rel=\"noopener\">Cloudflare Turnstile</a>."

#: admin/views/page-modules.php:118
msgid "Magic Login Links"
msgstr "Magic Login Links"

#: admin/views/page-modules.php:119
msgid ""
"Passwordless Login via E-Mail. User klickt „Magic-Link\" am wp-login.php → "
"bekommt 15-Min-gültigen Single-Use-Link per Mail. Rate-Limit: 3 "
"Anforderungen/h. User-Enumeration-Schutz."
msgstr ""
"Passwordless Login via E-Mail. User klickt „Magic-Link\" am wp-login.php → "
"bekommt 15-Min-gültigen Single-Use-Link per Mail. Rate-Limit: 3 "
"Anforderungen/h. User-Enumeration-Schutz."

#: admin/views/page-modules.php:120
msgid "<strong>Modul aktiv</strong> (Mail-Versand muss funktionieren!)"
msgstr "<strong>Modul aktiv</strong> (Mail-Versand muss funktionieren!)"

#: admin/views/page-modules.php:125
msgid "WAF — Web Application Firewall"
msgstr "WAF — Web Application Firewall"

#: admin/views/page-modules.php:126
msgid ""
"40+ kuratierte Regex-Signaturen für SQLi, XSS, LFI, RCE, SSRF, XXE, Cmdi, WP-"
"User-Enum, Scanner-UAs. Blockiert mit 403. <strong>Kann False-Positives "
"erzeugen</strong> — mit Level 1 starten, Whitelist pflegen."
msgstr ""
"40+ kuratierte Regex-Signaturen für SQLi, XSS, LFI, RCE, SSRF, XXE, Cmdi, WP-"
"User-Enum, Scanner-UAs. Blockiert mit 403. <strong>Kann False-Positives "
"erzeugen</strong> — mit Level 1 starten, Whitelist pflegen."

#: admin/views/page-modules.php:127
msgid "WAF aktiv"
msgstr "WAF aktiv"

#: admin/views/page-modules.php:128
msgid "Paranoia-Level:"
msgstr "Paranoia-Level:"

#: admin/views/page-modules.php:130
msgid "1 — Low (sicher, ~95 % Treffer, <0.1 % FP) ← Empfehlung"
msgstr "1 — Low (sicher, ~95 % Treffer, <0.1 % FP) ← Empfehlung"

#: admin/views/page-modules.php:131
msgid "2 — Medium (zusätzliche Heuristik)"
msgstr "2 — Medium (zusätzliche Heuristik)"

#: admin/views/page-modules.php:132
msgid "3 — High (aggressiv, FP-Whitelist nötig)"
msgstr "3 — High (aggressiv, FP-Whitelist nötig)"

#: admin/views/page-modules.php:135
msgid "Admins (manage_options) von WAF ausnehmen"
msgstr "Admins (manage_options) von WAF ausnehmen"

#: admin/views/page-modules.php:136
msgid "IP bei WAF-Treffer 24h sperren (sehr aggressiv!)"
msgstr "IP bei WAF-Treffer 24h sperren (sehr aggressiv!)"

#: admin/views/page-modules.php:137
msgid "Pfad-Whitelist (eine Zeile pro Pfad — z. B. <code>/anmeldung/</code>):"
msgstr "Pfad-Whitelist (eine Zeile pro Pfad — z. B. <code>/anmeldung/</code>):"

#: admin/views/page-modules.php:144
msgid "WAF — letzte Blocks & False-Positive-Whitelist"
msgstr "WAF — letzte Blocks & False-Positive-Whitelist"

#: admin/views/page-modules.php:145
msgid ""
"Hier siehst du die letzten 30 WAF-Blocks. Wenn ein eigener legitimer Pfad "
"fälschlich geblockt wurde, klicke „Whitelisten\" — der Pfad wird in "
"<code>waf_path_whitelist</code> aufgenommen und beim nächsten Aufruf nicht "
"mehr geprüft."
msgstr ""
"Hier siehst du die letzten 30 WAF-Blocks. Wenn ein eigener legitimer Pfad "
"fälschlich geblockt wurde, klicke „Whitelisten\" — der Pfad wird in "
"<code>waf_path_whitelist</code> aufgenommen und beim nächsten Aufruf nicht "
"mehr geprüft."

#: admin/views/page-modules.php:155
msgid ""
"Keine WAF-Blocks bisher — entweder keine Angriffe oder WAF nicht lange genug "
"aktiv."
msgstr ""
"Keine WAF-Blocks bisher — entweder keine Angriffe oder WAF nicht lange genug "
"aktiv."

#: admin/views/page-modules.php:158
msgid "Regel"
msgstr "Regel"

#: admin/views/page-modules.php:158
msgid "Aktion"
msgstr "Aktion"

#: admin/views/page-modules.php:173
msgid "schon whitelisted"
msgstr "schon whitelisted"

#: admin/views/page-modules.php:179
msgid "Diesen Pfad zur WAF-Whitelist hinzufügen"
msgstr "Diesen Pfad zur WAF-Whitelist hinzufügen"

#: admin/views/page-modules.php:179
msgid "Whitelisten"
msgstr "Whitelisten"

#: admin/views/page-modules.php:188
msgid "Aktuelle Whitelist:"
msgstr "Aktuelle Whitelist:"

#: admin/views/page-modules.php:195
msgid "DSGVO-Privacy-Dashboard"
msgstr "DSGVO-Privacy-Dashboard"

#: admin/views/page-modules.php:195
msgid "immer aktiv"
msgstr "immer aktiv"

#: admin/views/page-modules.php:196
msgid "Datenkarte + DSGVO-Art.-15-Auskunft + Art.-17-Löschung in einem Klick."
msgstr ""

#: admin/views/page-modules.php:200
msgid "Datenkarte — wo werden welche personenbezogenen Daten gespeichert?"
msgstr "Datenkarte — wo werden welche personenbezogenen Daten gespeichert?"

#: admin/views/page-modules.php:202
msgid "Kategorie"
msgstr "Kategorie"

#: admin/views/page-modules.php:202
msgid "Tabelle"
msgstr "Tabelle"

#: admin/views/page-modules.php:202
msgid "Felder"
msgstr "Felder"

#: admin/views/page-modules.php:202
msgid "Zeilen"
msgstr "Zeilen"

#: admin/views/page-modules.php:202
msgid "Rechtsgrundlage"
msgstr "Rechtsgrundlage"

#: admin/views/page-modules.php:220
msgid "DSGVO Art. 15 — Auskunft"
msgstr "DSGVO Art. 15 — Auskunft"

#: admin/views/page-modules.php:221
msgid ""
"Schickt eine Bestätigungsmail an die angegebene Adresse. Nach Bestätigung "
"kann der User alle zu ihm gespeicherten Daten herunterladen (WP-Core-"
"Mechanik)."
msgstr ""
"Schickt eine Bestätigungsmail an die angegebene Adresse. Nach Bestätigung "
"kann der User alle zu ihm gespeicherten Daten herunterladen (WP-Core-"
"Mechanik)."

#: admin/views/page-modules.php:225 admin/views/page-modules.php:235
msgid "user@example.com"
msgstr "user@example.com"

#: admin/views/page-modules.php:226
msgid "Anfrage starten"
msgstr "Anfrage starten"

#: admin/views/page-modules.php:230
msgid "DSGVO Art. 17 — Löschung"
msgstr "DSGVO Art. 17 — Löschung"

#: admin/views/page-modules.php:231
msgid ""
"Startet Lösch-Workflow für alle Daten dieser E-Mail. User bekommt "
"Bestätigungsmail zur Authorisierung."
msgstr ""
"Startet Lösch-Workflow für alle Daten dieser E-Mail. User bekommt "
"Bestätigungsmail zur Authorisierung."

#: admin/views/page-modules.php:236
msgid "Löschen starten"
msgstr "Löschen starten"

#: admin/views/page-modules.php:245
msgid "Alle Modul-Einstellungen speichern"
msgstr "Alle Modul-Einstellungen speichern"

#: admin/views/page-modules.php:256
msgid "Läuft… (kann 10-30 Sekunden dauern)"
msgstr "Läuft… (kann 10-30 Sekunden dauern)"

#: admin/views/page-modules.php:257
msgid "Fehler:"
msgstr "Fehler:"

#: admin/views/page-modules.php:258
msgid "unbekannt"
msgstr "unbekannt"

#: admin/views/page-modules.php:259
#, php-format
msgid "✓ Alle %d Core-Files unverändert"
msgstr "✓ Alle %d Core-Files unverändert"

#: admin/views/page-modules.php:260
#, php-format
msgid "⚠ %d Auffälligkeiten:"
msgstr "⚠ %d Auffälligkeiten:"

#: admin/views/page-modules.php:261
#, php-format
msgid "%d modifizierte Files"
msgstr "%d modifizierte Files"

#: admin/views/page-modules.php:262
#, php-format
msgid "%d fehlende Files"
msgstr "%d fehlende Files"

#: admin/views/page-modules.php:263
#, php-format
msgid "%d extra Files (verdächtig!)"
msgstr "%d extra Files (verdächtig!)"

#: admin/views/page-multisite.php:17
msgid ""
"This installation is not a Multisite network. The Multisite features (per-"
"site stats, network-wide blocks, per-site overrides) are unavailable."
msgstr ""
"Diese Installation ist kein Multisite-Netzwerk. Die Multisite-Funktionen "
"(pro-Site-Statistik, netzwerkweite Sperren, pro-Site-Overrides) sind nicht "
"verfügbar."

#: admin/views/page-multisite.php:29
#, php-format
msgid "Override cleared for site #%d."
msgstr "Override für Site #%d entfernt."

#: admin/views/page-multisite.php:38
msgid "Network totals (last 24 h)"
msgstr "Netzwerk-Summen (letzte 24 h)"

#: admin/views/page-multisite.php:40
msgid "Sites"
msgstr "Sites"

#: admin/views/page-multisite.php:43 admin/views/page-multisite.php:59
msgid "404 probes"
msgstr "404-Prüfungen"

#: admin/views/page-multisite.php:48
msgid "Per-site activity"
msgstr "Pro-Site-Aktivität"

#: admin/views/page-multisite.php:50
msgid "No sites found."
msgstr "Keine Sites gefunden."

#: admin/views/page-multisite.php:56
msgid "Site"
msgstr "Site"

#: admin/views/page-multisite.php:60
msgid "Override"
msgstr "Überschreiben"

#: admin/views/page-multisite.php:76
msgid "Clear override and revert to network defaults?"
msgstr "Override löschen und auf Netzwerk-Standards zurücksetzen?"

#: admin/views/page-multisite.php:80
msgid "Clear"
msgstr "Leeren"

#: admin/views/page-notifications.php:26
msgid "Email notifications"
msgstr "E-Mail-Benachrichtigungen"

#: admin/views/page-notifications.php:30
msgid "Send email alerts on critical events"
msgstr "E-Mail-Warnungen bei kritischen Ereignissen senden"

#: admin/views/page-notifications.php:35
msgid "Recipient"
msgstr "Empfänger"

#: admin/views/page-notifications.php:42
msgid "Quiet hours"
msgstr "Ruhige Stunden"

#: admin/views/page-notifications.php:47
msgid ""
"During these hours only critical alerts are sent. Daily digest is unaffected."
msgstr ""
"Während dieser Stunden werden nur kritische Warnungen gesendet. Der tägliche "
"Bericht ist nicht betroffen."

#: admin/views/page-notifications.php:54
#: includes/class-shieldforge-admin-intros.php:227
msgid "Daily digest"
msgstr "Tägliche Zusammenfassung"

#: admin/views/page-notifications.php:58
msgid "Send a daily summary email at 07:00"
msgstr "Tägliche Zusammenfassungs-E-Mail um 07:00 senden"

#: admin/views/page-privacy.php:24
msgid "Privacy controls (GDPR)"
msgstr "Datenschutz-Steuerung (DSGVO)"

#: admin/views/page-privacy.php:29
msgid "Anonymize IP addresses in stored logs"
msgstr "IP-Adressen in gespeicherten Logs anonymisieren"

#: admin/views/page-privacy.php:31
msgid ""
"IPv4: last octet zeroed. IPv6: kept to /64. Original IPs are never written "
"when this is on."
msgstr ""
"IPv4: letztes Oktett auf 0. IPv6: auf /64 begrenzt. Original-IPs werden nie "
"geschrieben, wenn aktiv."

#: admin/views/page-privacy.php:36
msgid "Pseudonymize usernames in logs"
msgstr "Benutzernamen in Logs pseudonymisieren"

#: admin/views/page-privacy.php:38
msgid ""
"Stores a salted HMAC instead of the username — useful for shared "
"environments."
msgstr ""
"Speichert einen gesalzenen HMAC statt des Benutzernamens — nützlich in "
"geteilten Umgebungen."

#: admin/views/page-privacy.php:42
msgid "Log retention (days)"
msgstr "Log-Aufbewahrung (Tage)"

#: admin/views/page-privacy.php:47
msgid "Older events are deleted automatically by a daily cron job."
msgstr ""
"Ältere Ereignisse werden automatisch von einem täglichen Cron-Job gelöscht."

#: admin/views/page-privacy.php:54
msgid "Data map"
msgstr "Datenkarte"

#: admin/views/page-privacy.php:55
msgid ""
"Brainwerk Security Suite stores the following data locally — nothing is "
"transmitted to any third-party service in the free version."
msgstr ""
"Brainwerk Security Suite speichert die folgenden Daten lokal — in der Free-"
"Version wird nichts an Dritt-Anbieter übertragen."

#: admin/views/page-privacy.php:57
msgid ""
"Login attempts, hardening blocks, probing 404s, role changes. IPs anonymized "
"when enabled. Auto-deleted after retention period."
msgstr ""
"Anmeldeversuche, Härtungs-Blocks, Probing-404, Rollenänderungen. IPs "
"anonymisiert wenn aktiv. Automatisch nach Aufbewahrungszeit gelöscht."

#: admin/views/page-privacy.php:58
msgid ""
"Currently blocked IPs (raw IP required to enforce blocking). Auto-removed "
"when block expires."
msgstr ""
"Derzeit gesperrte IPs (Roh-IP erforderlich, um die Sperre durchzusetzen). "
"Wird automatisch entfernt, wenn die Sperre abläuft."

#: admin/views/page-privacy.php:59
msgid ""
"Per-user statistical baseline for anomaly detection (login times, network "
"ranges)."
msgstr ""
"Pro-Nutzer-statistische Baseline für Anomalie-Erkennung (Anmelde-Zeiten, "
"Netzwerk-Bereiche)."

#: admin/views/page-privacy.php:73
msgid "Privacy-policy snippet"
msgstr "Datenschutz-Textbaustein"

#: admin/views/page-privacy.php:75
msgid ""
"Copy this snippet into your privacy policy. It reflects the current "
"Brainwerk Security Suite settings."
msgstr ""
"Kopiere diesen Textbaustein in deine Datenschutzerklärung. Er spiegelt die "
"aktuellen Brainwerk Security Suite-Einstellungen wider."

#: admin/views/page-privacy.php:80
msgid "Copy"
msgstr "Kopieren"

#: admin/views/page-privacy.php:84
msgid "Rendered preview"
msgstr "Gerenderte Vorschau"

#: admin/views/page-scanner.php:17
msgid "critical"
msgstr "kritisch"

#: admin/views/page-scanner.php:18
msgid "high"
msgstr "hoch"

#: admin/views/page-scanner.php:19
msgid "warn"
msgstr "warn"

#: admin/views/page-scanner.php:20
msgid "info"
msgstr "info"

#: admin/views/page-scanner.php:33
msgid "Baseline cleared. The next scheduled scan will rebuild it."
msgstr "Baseline gelöscht. Der nächste geplante Scan baut sie neu auf."

#. translators: 1: hashed files this run, 2: errors, 3: finished bool
#: admin/views/page-scanner.php:40
#, php-format
msgid "Baseline run: %1$d files hashed, %2$d errors, finished: %3$s."
msgstr "Baseline-Lauf: %1$d Dateien gehasht, %2$d Fehler, fertig: %3$s."

#: admin/views/page-scanner.php:43
msgid "yes"
msgstr "ja"

#: admin/views/page-scanner.php:43
msgid "no (continues next cron tick)"
msgstr "nein (läuft beim nächsten Cron-Tick weiter)"

#. translators: %1$d scanned, %2$d added, %3$d changed, %4$d missing, %5$d malware suspects
#: admin/views/page-scanner.php:50
#, php-format
msgid ""
"Scan run: %1$d files scanned, %2$d added, %3$d changed, %4$d missing, %5$d "
"suspicious-pattern hits."
msgstr ""
"Scan-Lauf: %1$d Dateien geprüft, %2$d hinzugefügt, %3$d geändert, %4$d "
"fehlend, %5$d verdächtige Muster-Treffer."

#. translators: %s: path
#: admin/views/page-scanner.php:64
#, php-format
msgid "Path whitelisted: %s"
msgstr "Pfad auf Whitelist: %s"

#. translators: %s: path
#: admin/views/page-scanner.php:75
#, php-format
msgid "Re-baselined: %s"
msgstr "Neu-Baseline: %s"

#: admin/views/page-scanner.php:98 admin/views/page-vulnerabilities.php:43
msgid "not scheduled"
msgstr "nicht geplant"

#: admin/views/page-scanner.php:99 admin/views/page-scanner.php:100
#: admin/views/page-twofactor.php:139 admin/views/page-vulnerabilities.php:40
msgid "never"
msgstr "nie"

#. translators: 1: changed, 2: added, 3: missing, 4: malware-suspect (24h)
#: admin/views/page-scanner.php:110
#, php-format
msgid ""
"Last 24h: %1$d changed, %2$d added, %3$d missing, %4$d suspicious patterns."
msgstr ""
"Letzte 24 h: %1$d geändert, %2$d hinzugefügt, %3$d fehlend, %4$d verdächtige "
"Muster."

#: admin/views/page-scanner.php:123
msgid "File-Integrity Monitor"
msgstr "Datei-Integritäts-Monitor"

#: admin/views/page-scanner.php:125
msgid ""
"Hashes every PHP file under WordPress core, plugins, mu-plugins and themes, "
"then re-checks them daily. Detects added, modified or deleted files and runs "
"a suspicious-pattern scan against new and modified files."
msgstr ""
"Hasht jede PHP-Datei unter WordPress-Core, Plugins, MU-Plugins und Themes "
"und prüft sie täglich erneut. Erkennt hinzugefügte, geänderte oder gelöschte "
"Dateien und führt eine Verdächtigen-Muster-Prüfung gegen neue und geänderte "
"Dateien durch."

#: admin/views/page-scanner.php:126
msgid "All scanning is local — no file contents leave your server."
msgstr ""
"Sämtliche Prüfungen laufen lokal — keine Dateiinhalte verlassen deinen "
"Server."

#: admin/views/page-scanner.php:131
msgid "Tracked files"
msgstr "Verfolgte Dateien"

#: admin/views/page-scanner.php:132
msgid "Phase"
msgstr "Phase"

#: admin/views/page-scanner.php:132
#, php-format
msgid "cursor at file #%d"
msgstr "Cursor bei Datei #%d"

#: admin/views/page-scanner.php:133 admin/views/page-vulnerabilities.php:63
msgid "Last scan"
msgstr "Letzter Scan"

#: admin/views/page-scanner.php:134
msgid "Last baseline build"
msgstr "Letzter Baseline-Build"

#: admin/views/page-scanner.php:135 admin/views/page-vulnerabilities.php:78
msgid "Next scheduled run"
msgstr "Nächste geplante Ausführung"

#: admin/views/page-scanner.php:141
msgid "Run scan now"
msgstr "Scan jetzt starten"

#: admin/views/page-scanner.php:142
msgid "Rebuild baseline"
msgstr "Baseline neu aufbauen"

#: admin/views/page-scanner.php:143
msgid "Clear the entire baseline?"
msgstr "Die gesamte Baseline löschen?"

#: admin/views/page-scanner.php:143
msgid "Clear baseline"
msgstr "Baseline löschen"

#: admin/views/page-scanner.php:146
msgid ""
"Manual runs are time-budgeted to ~45s. Long sites resume on the next cron "
"tick."
msgstr ""
"Manuelle Läufe sind auf ~45 s begrenzt. Lange Sites laufen beim nächsten "
"Cron-Tick weiter."

#: admin/views/page-scanner.php:151
msgid "Findings (last 7 days)"
msgstr "Funde (letzte 7 Tage)"

#. translators: 1: changed, 2: added, 3: missing, 4: malware-suspect
#: admin/views/page-scanner.php:156
#, php-format
msgid "%1$d changed · %2$d added · %3$d missing · %4$d suspicious patterns."
msgstr ""
"%1$d geändert · %2$d hinzugefügt · %3$d fehlend · %4$d verdächtige Muster."

#: admin/views/page-scanner.php:168
msgid "No file-integrity findings yet — that's good news."
msgstr "Noch keine Datei-Integritäts-Funde — das ist eine gute Nachricht."

#: admin/views/page-scanner.php:170
msgid ""
"No baseline has been built yet. The scanner needs to fingerprint every PHP "
"file once before it can detect changes. The first scheduled scan runs at "
"03:30, or you can build it on demand."
msgstr ""
"Es wurde noch keine Baseline aufgebaut. Der Scanner muss jede PHP-Datei "
"einmal fingerprinten bevor er Änderungen erkennen kann. Der erste geplante "
"Scan läuft um 03:30, oder du baust ihn jetzt manuell auf."

#: admin/views/page-scanner.php:173
msgid "Rebuild baseline now"
msgstr "Baseline jetzt neu aufbauen"

#. translators: %s: tracked files count
#: admin/views/page-scanner.php:178
#, php-format
msgid ""
"The baseline is in place (%s files tracked) and the daily scan has nothing "
"unusual to report."
msgstr ""
"Die Baseline steht (%s Dateien getrackt) und der tägliche Scan hat nichts "
"Auffälliges zu melden."

#: admin/views/page-scanner.php:182
msgid "Re-scan now anyway"
msgstr "Trotzdem jetzt scannen"

#: admin/views/page-scanner.php:191
#: includes/class-shieldforge-admin-intros.php:136
msgid "Type"
msgstr "Typ"

#: admin/views/page-scanner.php:192
#: includes/class-shieldforge-admin-intros.php:137
msgid "Path / Detail"
msgstr "Pfad / Detail"

#: admin/views/page-scanner.php:193
#: includes/class-shieldforge-admin-intros.php:138
#: includes/class-shieldforge-admin-intros.php:213
msgid "Severity"
msgstr "Schweregrad"

#. translators: 1: rule id, 2: line number
#: admin/views/page-scanner.php:214
#, php-format
msgid "rule: %1$s · line %2$d"
msgstr "Regel: %1$s · Zeile %2$d"

#: admin/views/page-scanner.php:225
#, php-format
msgid "size: %1$d → %2$d bytes"
msgstr "Größe: %1$d → %2$d Bytes"

#: admin/views/page-scanner.php:235
msgid "Accept current state as the new baseline"
msgstr "Aktuellen Zustand als neue Baseline übernehmen"

#: admin/views/page-scanner.php:235
msgid "Re-baseline"
msgstr "Neu kalibrieren"

#: admin/views/page-scanner.php:241
msgid "Stop alerting for this path"
msgstr "Keine Warnungen mehr für diesen Pfad"

#: admin/views/page-scanner.php:241
msgid "Whitelist"
msgstr "Auf Whitelist setzen"

#: admin/views/page-scanner.php:253
msgid "Scanner settings"
msgstr "Scanner-Einstellungen"

#: admin/views/page-scanner.php:262 admin/views/page-vulnerabilities.php:207
msgid "Enable scanner"
msgstr "Scanner aktivieren"

#: admin/views/page-scanner.php:266
msgid "Run the daily integrity scan via wp-cron."
msgstr "Den täglichen Integritäts-Scan via wp-cron ausführen."

#: admin/views/page-scanner.php:271
msgid "Pattern scanner"
msgstr "Muster-Scanner"

#: admin/views/page-scanner.php:275
msgid "Also run suspicious-code pattern checks against new and modified files."
msgstr ""
"Zusätzlich verdächtige Code-Muster gegen neue und geänderte Dateien prüfen."

#: admin/views/page-scanner.php:280
msgid "Max file size (KB)"
msgstr "Max. Dateigröße (KB)"

#: admin/views/page-scanner.php:283
msgid ""
"Files larger than this are skipped (cheap defense against accidental "
"scanning of huge data dumps)."
msgstr ""
"Dateien größer als dies werden übersprungen (günstige Absicherung gegen "
"versehentliches Scannen großer Daten-Dumps)."

#: admin/views/page-scanner.php:287
msgid "Extra skip directories"
msgstr "Zusätzliche Skip-Verzeichnisse"

#: admin/views/page-scanner.php:290
msgid ""
"One path segment per line, relative to the WordPress root. Sensible defaults "
"already cover uploads/, cache/, .git, node_modules and the like."
msgstr ""
"Ein Pfad-Segment pro Zeile, relativ zum WordPress-Root. Sinnvolle Standards "
"decken bereits uploads/, cache/, .git, node_modules und Ähnliches ab."

#: admin/views/page-scanner.php:294
msgid "Tracked extensions"
msgstr "Verfolgte Erweiterungen"

#: admin/views/page-scanner.php:297
msgid ""
"One extension per line. Default: php, phtml, phar, inc. .htaccess and wp-"
"config.php are always tracked."
msgstr ""
"Eine Erweiterung pro Zeile. Standard: php, phtml, phar, inc. .htaccess und "
"wp-config.php werden immer verfolgt."

#: admin/views/page-scanner.php:316
msgid "Repo integrity — plugins & themes vs. wordpress.org"
msgstr "Repo-Integrität — Plugins & Themes vs. wordpress.org"

#: admin/views/page-scanner.php:318
msgid ""
"Compares every installed plugin (official checksums API) and theme (original "
"release ZIP) against the wordpress.org distribution. Modified, missing or "
"extra files are reported so you can react. Packages that are not hosted on "
"wordpress.org are listed as \"unverifiable\" and never touched."
msgstr ""

#: admin/views/page-scanner.php:321
msgid ""
"To restore a tampered package, reinstall it the standard WordPress way — "
"deactivate & delete it, then install the clean copy from wordpress.org (your "
"settings are kept in the database)."
msgstr ""

#: admin/views/page-scanner.php:322
msgid "Add / reinstall plugins"
msgstr ""

#: admin/views/page-scanner.php:326 admin/views/page-vulnerabilities.php:84
#: admin/views/page-vulnerabilities.php:181
msgid "Scan now"
msgstr "Jetzt scannen"

#: admin/views/page-scanner.php:337
msgid "Run automatically every night (daily cron, 03:40)"
msgstr "Automatisch jede Nacht ausführen (täglicher Cron, 03:40)"

#: admin/views/page-scanner.php:346
msgid "Last scan:"
msgstr "Letzter Scan:"

#. translators: 1: ok count, 2: mismatch count, 3: unverifiable count, 4: flagged file count
#: admin/views/page-scanner.php:351
#, php-format
msgid ""
"%1$d packages clean, %2$d with deviations (%4$d files), %3$d unverifiable."
msgstr ""
"%1$d Pakete sauber, %2$d mit Abweichungen (%4$d Dateien), %3$d nicht "
"verifizierbar."

#: admin/views/page-scanner.php:363
msgid "All verifiable packages match the official wordpress.org distribution."
msgstr ""
"Alle verifizierbaren Pakete stimmen mit der offiziellen wordpress.org-"
"Distribution überein."

#: admin/views/page-scanner.php:368
msgid "Package"
msgstr "Paket"

#: admin/views/page-scanner.php:369
msgid "File"
msgstr "Datei"

#: admin/views/page-scanner.php:370
msgid "Finding"
msgstr "Fund"

#: admin/views/page-scanner.php:377
msgid "modified"
msgstr "modifiziert"

#: admin/views/page-scanner.php:378
msgid "missing"
msgstr "fehlt"

#: admin/views/page-scanner.php:379
msgid "extra file (not in official package — inspect!)"
msgstr "zusätzliche Datei (nicht im offiziellen Paket — prüfen!)"

#: admin/views/page-scanner.php:387
msgid "reinstall package"
msgstr ""

#: admin/views/page-scanner.php:389
msgid "manual review"
msgstr "manuelle Prüfung"

#. translators: %d: package count
#: admin/views/page-scanner.php:405
#, php-format
msgid "%d packages not verifiable (not on wordpress.org)"
msgstr "%d Pakete nicht verifizierbar (nicht auf wordpress.org)"

#: admin/views/page-scanner.php:414
msgid "No scan yet — click \"Scan now\" for the first run."
msgstr "Noch kein Scan — klicken Sie für den ersten Lauf auf „Jetzt scannen“."

#: admin/views/page-scanner.php:424
msgid ""
"Scanning… themes are downloaded once for comparison, this can take a minute."
msgstr ""
"Scanne… Themes werden für den Vergleich einmalig heruntergeladen, das kann "
"eine Minute dauern."

#: admin/views/page-scanner.php:425
msgid "Scan failed."
msgstr "Scan fehlgeschlagen."

#: admin/views/page-threat-network.php:61
msgid "NIEDRIG"
msgstr ""

#: admin/views/page-threat-network.php:62
msgid "MITTEL"
msgstr ""

#: admin/views/page-threat-network.php:63
#: admin/views/page-threat-network.php:64
msgid "HOCH"
msgstr ""

#: admin/views/page-threat-network.php:81
#, php-format
msgid "aktualisiert vor %s"
msgstr ""

#: admin/views/page-threat-network.php:99
msgid ""
"Netz-Gesamtbild derzeit nicht erreichbar — es werden lokale Daten angezeigt."
msgstr ""

#: admin/views/page-threat-network.php:102
msgid ""
"Netz-Gesamtbild ist nur mit aktiver Teilnahme am Threat-Network verfügbar."
msgstr ""

#: admin/views/page-threat-network.php:202
msgid "steigend"
msgstr ""

#: admin/views/page-threat-network.php:203
msgid "fallend"
msgstr ""

#: admin/views/page-threat-network.php:204
msgid "stabil"
msgstr ""

#: admin/views/page-threat-network.php:222
#: admin/views/page-threat-network.php:584
#: admin/views/page-threat-network.php:749
msgid "Netz-Gesamtbild"
msgstr ""

#: admin/views/page-threat-network.php:225
#: admin/views/page-threat-network.php:583
#: admin/views/page-threat-network.php:748
msgid "Meine Site"
msgstr ""

#: admin/views/page-threat-network.php:237
msgid "SQL-Injection"
msgstr ""

#: admin/views/page-threat-network.php:238
msgid "Cross-Site-Scripting (XSS)"
msgstr ""

#: admin/views/page-threat-network.php:239
msgid "Local File Inclusion (LFI)"
msgstr ""

#: admin/views/page-threat-network.php:240
msgid "Remote Code Execution (RCE)"
msgstr ""

#: admin/views/page-threat-network.php:241
msgid "Path Traversal"
msgstr ""

#: admin/views/page-threat-network.php:242
msgid "Auth-Bypass"
msgstr ""

#: admin/views/page-threat-network.php:243
msgid "Server-Side Request Forgery (SSRF)"
msgstr ""

#: admin/views/page-threat-network.php:244
msgid "Object-Injection"
msgstr ""

#: admin/views/page-threat-network.php:245
msgid "File-Upload-Exploit"
msgstr ""

#: admin/views/page-threat-network.php:248
msgid "WPScan"
msgstr ""

#: admin/views/page-threat-network.php:249
msgid "sqlmap"
msgstr ""

#: admin/views/page-threat-network.php:250
msgid "Nuclei"
msgstr ""

#: admin/views/page-threat-network.php:251
msgid "Nikto"
msgstr ""

#: admin/views/page-threat-network.php:252
msgid "curl"
msgstr ""

#: admin/views/page-threat-network.php:253
msgid "wget"
msgstr ""

#: admin/views/page-threat-network.php:254
msgid "python-requests"
msgstr ""

#: admin/views/page-threat-network.php:255
msgid "Go-http"
msgstr ""

#: admin/views/page-threat-network.php:256
msgid "libwww"
msgstr ""

#: admin/views/page-threat-network.php:257
msgid "Headless-Chrome"
msgstr ""

#: admin/views/page-threat-network.php:258
msgid "generischer Bot"
msgstr ""

#: admin/views/page-threat-network.php:259
msgid "sonstiges Werkzeug"
msgstr ""

#. translators: 1: CVE id, 2: events in the last hour, 3: number of sites, 4: ratio over baseline
#: admin/views/page-threat-network.php:294
#, php-format
msgid ""
"⚠ Frühwarnung: Aktive Ausnutzung von %1$s — %2$d Angriffe in der letzten "
"Stunde über %3$d Sites (Faktor %4$s× über Normal). Jetzt aktualisieren."
msgstr ""

#. translators: 1: attack class label, 2: events in the last hour, 3: number of sites, 4: ratio over baseline
#: admin/views/page-threat-network.php:301
#, php-format
msgid ""
"⚠ Frühwarnung: Anstieg von %1$s-Angriffen — %2$d Angriffe in der letzten "
"Stunde über %3$d Sites (Faktor %4$s× über Normal). Jetzt aktualisieren."
msgstr ""

#. translators: 1: plugin/theme slug, 2: events in the last hour, 3: number of sites, 4: ratio over baseline
#: admin/views/page-threat-network.php:307
#, php-format
msgid ""
"⚠ Frühwarnung: Aktive Angriffswelle auf Plugin »%1$s« — %2$d Angriffe in der "
"letzten Stunde über %3$d Sites (Faktor %4$s× über Normal). Jetzt "
"aktualisieren."
msgstr ""

#: admin/views/page-threat-network.php:324
msgid "Schatten"
msgstr ""

#: admin/views/page-threat-network.php:325
msgid "Canary"
msgstr ""

#: admin/views/page-threat-network.php:326
#: admin/views/page-threat-network.php:439
msgid "Aktiv"
msgstr ""

#: admin/views/page-threat-network.php:367
msgid "Threat Intelligence — Kommandozentrale"
msgstr ""

#: admin/views/page-threat-network.php:368
msgid "Brainwerk Security Suite · Privacy-first · EU-gehostet"
msgstr ""

#: admin/views/page-threat-network.php:377
msgid "Netzwerk verbunden"
msgstr ""

#: admin/views/page-threat-network.php:378
msgid "Netzwerk getrennt"
msgstr ""

#: admin/views/page-threat-network.php:393
#, php-format
msgid "+%d weitere Frühwarnungen"
msgstr ""

#: admin/views/page-threat-network.php:402
msgid "Angriffe (24h)"
msgstr ""

#: admin/views/page-threat-network.php:406
msgid "Blockiert"
msgstr ""

#: admin/views/page-threat-network.php:410
msgid "Eindeutige Angreifer"
msgstr ""

#: admin/views/page-threat-network.php:414
msgid "Bedrohungs-Score"
msgstr ""

#: admin/views/page-threat-network.php:419
msgid "Feed-Indikatoren aktiv"
msgstr ""

#: admin/views/page-threat-network.php:427
msgid "Angriffs-Aktivität"
msgstr ""

#: admin/views/page-threat-network.php:428
msgid "24 Stunden, stündlich (WARN und höher)"
msgstr ""

#: admin/views/page-threat-network.php:432
#: admin/views/page-threat-network.php:519
#: admin/views/page-threat-network.php:537
#: admin/views/page-threat-network.php:555
#: admin/views/page-threat-network.php:576
#: admin/views/page-threat-network.php:622
#: admin/views/page-threat-network.php:645
#: admin/views/page-threat-network.php:668
#: admin/views/page-threat-network.php:697
#: admin/views/page-threat-network.php:714
#: admin/views/page-threat-network.php:788
msgid "Noch keine Daten — der Sensor sammelt."
msgstr ""

#: admin/views/page-threat-network.php:436
msgid "Threat-Netzwerk"
msgstr ""

#: admin/views/page-threat-network.php:438
msgid "Teilnahme"
msgstr ""

#: admin/views/page-threat-network.php:439
msgid "Aus"
msgstr ""

#: admin/views/page-threat-network.php:440
msgid "Feed-Version"
msgstr ""

#: admin/views/page-threat-network.php:442
msgid "Aktualisiert"
msgstr ""

#: admin/views/page-threat-network.php:444
msgid "Virtual-Patch-Regeln"
msgstr ""

#: admin/views/page-threat-network.php:446
msgid "Sensoren im Netz"
msgstr ""

#: admin/views/page-threat-network.php:451
msgid "Ed25519-Signatur verifiziert"
msgstr ""

#: admin/views/page-threat-network.php:452
msgid "ja"
msgstr ""

#: admin/views/page-threat-network.php:452
msgid "nein"
msgstr ""

#: admin/views/page-threat-network.php:460
msgid "Frühwarnungen (Netz)"
msgstr ""

#: admin/views/page-threat-network.php:461
msgid "Netzweite Angriffswellen mit auffälliger Rate gegenüber dem Normalwert"
msgstr ""

#. translators: 1: events in the last hour, 2: ratio over baseline, 3: number of sites
#: admin/views/page-threat-network.php:477
#, php-format
msgid "%1$d× / Faktor %2$s× / %3$d Sites"
msgstr ""

#: admin/views/page-threat-network.php:485
msgid "Keine aktiven Frühwarnungen — alles ruhig."
msgstr ""

#: admin/views/page-threat-network.php:493
msgid "Angriffsarten"
msgstr ""

#: admin/views/page-threat-network.php:496
#: admin/views/page-threat-network.php:797
msgid "Brute-Force"
msgstr ""

#: admin/views/page-threat-network.php:497
#: admin/views/page-threat-network.php:802
msgid "Honeypot"
msgstr ""

#: admin/views/page-threat-network.php:498
msgid "Probing"
msgstr ""

#: admin/views/page-threat-network.php:499
msgid "WAF"
msgstr ""

#: admin/views/page-threat-network.php:500
msgid "Malware"
msgstr ""

#: admin/views/page-threat-network.php:501
#: admin/views/page-threat-network.php:822
msgid "Anomalie"
msgstr ""

#: admin/views/page-threat-network.php:524
msgid "Top-Angreifer-IPs"
msgstr ""

#: admin/views/page-threat-network.php:542
msgid "Angegriffene Benutzernamen"
msgstr ""

#: admin/views/page-threat-network.php:562
msgid "Herkunft der Angriffe"
msgstr ""

#: admin/views/page-threat-network.php:563
msgid "Angreifer-Länder, 24h, lokal aufgelöst (keine externen Abfragen)"
msgstr ""

#: admin/views/page-threat-network.php:604
msgid "Meistangegriffene Plugins/Themes"
msgstr ""

#: admin/views/page-threat-network.php:606
#: admin/views/page-threat-network.php:629
#: admin/views/page-threat-network.php:652
#: admin/views/page-threat-network.php:678
msgid "7 Tage, Netz-Gesamtbild"
msgstr ""

#: admin/views/page-threat-network.php:607
#: admin/views/page-threat-network.php:630
msgid "7 Tage, lokal erkannt"
msgstr ""

#: admin/views/page-threat-network.php:627
msgid "Angriffsklassen"
msgstr ""

#: admin/views/page-threat-network.php:650
msgid "Angreifer-Werkzeuge"
msgstr ""

#: admin/views/page-threat-network.php:653
msgid "7 Tage, lokal erkannt (User-Agent)"
msgstr ""

#: admin/views/page-threat-network.php:676
msgid "Angreifer-Netze (Provider)"
msgstr ""

#: admin/views/page-threat-network.php:679
msgid "7 Tage, lokal aufgelöst (keine externen Abfragen)"
msgstr ""

#: admin/views/page-threat-network.php:702
msgid "Tageszeit-Muster"
msgstr ""

#: admin/views/page-threat-network.php:704
msgid "24 Stunden, Netz-Gesamtbild (UTC)"
msgstr ""

#: admin/views/page-threat-network.php:705
msgid "24 Stunden, lokal (UTC)"
msgstr ""

#: admin/views/page-threat-network.php:711
#, php-format
msgid "Spitze um %02d:00 UTC"
msgstr ""

#: admin/views/page-threat-network.php:719
msgid "Angriffs-Tempo"
msgstr ""

#: admin/views/page-threat-network.php:721
msgid "Netz-Gesamtbild, letzte Stunde vs. vorherige"
msgstr ""

#: admin/views/page-threat-network.php:722
msgid "Meine Site, letzte Stunde vs. vorherige"
msgstr ""

#. translators: 1: events in the last hour, 2: events in the previous hour
#: admin/views/page-threat-network.php:733
#, php-format
msgid "%1$d letzte Stunde · %2$d Stunde davor"
msgstr ""

#: admin/views/page-threat-network.php:744
msgid "Angriffs-Korridore"
msgstr ""

#: admin/views/page-threat-network.php:745
msgid ""
"Herkunfts- zu Ziel-Länder, letzte 7 Tage. Keine Kartenkacheln — ein "
"datenbasiertes Chord-Diagramm."
msgstr ""

#: admin/views/page-threat-network.php:762
msgid "Herkunft → Ziel"
msgstr ""

#: admin/views/page-threat-network.php:763
msgid "Ereignisse"
msgstr ""

#: admin/views/page-threat-network.php:764
msgid "Top-CVE"
msgstr ""

#: admin/views/page-threat-network.php:765
msgid "Top-Endpunktklasse"
msgstr ""

#: admin/views/page-threat-network.php:794
msgid "Angriffsarten — kurz erklärt"
msgstr ""

#: admin/views/page-threat-network.php:798
msgid "Automatisiertes Durchprobieren von Passwörtern gegen den Login."
msgstr ""

#: admin/views/page-threat-network.php:799
msgid "Schutz: Sperren nach Fehlversuchen, 2FA."
msgstr ""

#: admin/views/page-threat-network.php:803
msgid "Ein unsichtbares Köder-Feld — nur Bots füllen es aus."
msgstr ""

#: admin/views/page-threat-network.php:804
msgid "Schutz: Einreichung wird stumm verworfen."
msgstr ""

#: admin/views/page-threat-network.php:807
msgid "Probing/404"
msgstr ""

#: admin/views/page-threat-network.php:808
msgid "Scanner suchen nach bekannten Pfaden und Sicherheitslücken."
msgstr ""

#: admin/views/page-threat-network.php:809
msgid "Schutz: Muster-Erkennung, Rate-Limiting."
msgstr ""

#: admin/views/page-threat-network.php:812
msgid "WAF-Block"
msgstr ""

#: admin/views/page-threat-network.php:813
msgid ""
"Eine Anfrage passte zu einer bekannten Angriffssignatur und wurde geblockt."
msgstr ""

#: admin/views/page-threat-network.php:814
msgid "Schutz: Signierte Virtual-Patch-Regeln aus dem Netzwerk."
msgstr ""

#: admin/views/page-threat-network.php:817
msgid "Malware-Fund"
msgstr ""

#: admin/views/page-threat-network.php:818
msgid ""
"Verdächtiger Code-Fund im Dateisystem — möglicher Kompromittierungshinweis."
msgstr ""

#: admin/views/page-threat-network.php:819
msgid "Schutz: Datei-Integritätsscan, Scanner-Tab prüfen."
msgstr ""

#: admin/views/page-threat-network.php:823
msgid "Ein Login weicht stark vom gewohnten Verhalten des Kontos ab."
msgstr ""

#: admin/views/page-threat-network.php:824
msgid "Schutz: Statistische Verhaltensanalyse, Benachrichtigung."
msgstr ""

#: admin/views/page-threat-network.php:831
msgid "Immunisierungen"
msgstr ""

#: admin/views/page-threat-network.php:832
msgid ""
"Netzweit reifende Schutzregeln — vom stillen Mitlesen bis zur aktiven "
"Blockade."
msgstr ""

#. translators: %s: plain-language explanation of the newly active immun rule
#: admin/views/page-threat-network.php:840
#, php-format
msgid "✓ Neue Immunisierung aktiv: %s"
msgstr ""

#: admin/views/page-threat-network.php:849
msgid "Netz-Immunisierungen sind deaktiviert (Einstellung „intel_immunize“)."
msgstr ""

#: admin/views/page-threat-network.php:851
msgid ""
"Nur mit aktiver Teilnahme am Threat-Network verfügbar — siehe „Teilnahme & "
"Datenschutz“ unten."
msgstr ""

#: admin/views/page-threat-network.php:853
msgid "Derzeit keine Netz-Immunisierungen aktiv."
msgstr ""

#: admin/views/page-threat-network.php:858
msgid "Stufe"
msgstr ""

#: admin/views/page-threat-network.php:859
msgid "Warum bin ich davon geschützt?"
msgstr ""

#: admin/views/page-threat-network.php:860
msgid "Ziel / Muster"
msgstr ""

#: admin/views/page-threat-network.php:861
msgid "Reife (lokal)"
msgstr ""

#. translators: 1: shadow hit count, 2: canary hit count, 3: false-positive-suspected count
#: admin/views/page-threat-network.php:886
#, php-format
msgid "Schatten-Treffer: %1$d · Canary-Treffer: %2$d · FP-Verdacht: %3$d"
msgstr ""

#: admin/views/page-threat-network.php:902
msgid "Teilnahme & Datenschutz"
msgstr ""

#: admin/views/page-threat-network.php:906
msgid "Participation"
msgstr "Teilnahme"

#: admin/views/page-threat-network.php:909
msgid "Opted in"
msgstr "Opt-in aktiv"

#: admin/views/page-threat-network.php:916
msgid "Registration"
msgstr "Registrierung"

#: admin/views/page-threat-network.php:919
msgid "Registered"
msgstr "Registriert"

#: admin/views/page-threat-network.php:922
msgid "Not registered"
msgstr "Nicht registriert"

#: admin/views/page-threat-network.php:927
msgid "Correlation salt"
msgstr "Korrelations-Salt"

#: admin/views/page-threat-network.php:930
msgid "Current"
msgstr "Aktuell"

#: admin/views/page-threat-network.php:931
#, php-format
msgid "epoch %s"
msgstr "Epoche %s"

#: admin/views/page-threat-network.php:933
msgid "Stale — refresh below"
msgstr "Veraltet — unten erneuern"

#: admin/views/page-threat-network.php:935
msgid "Local placeholder (no cross-site correlation until registered)"
msgstr ""
"Lokaler Platzhalter (keine Website-übergreifende Korrelation bis zur "
"Registrierung)"

#: admin/views/page-threat-network.php:940
msgid "Queue"
msgstr "Warteschlange"

#: admin/views/page-threat-network.php:944
#, php-format
msgid "%1$d pending · %2$d sent total · %3$d dropped"
msgstr "%1$d ausstehend · %2$d insgesamt gesendet · %3$d verworfen"

#: admin/views/page-threat-network.php:956
msgid "Send queued now"
msgstr "Warteschlange jetzt senden"

#: admin/views/page-threat-network.php:961
msgid "Refresh salt"
msgstr "Salt erneuern"

#: admin/views/page-threat-network.php:963
msgid "Unregister this site? No further data will be sent."
msgstr ""
"Registrierung dieser Website aufheben? Es werden keine weiteren Daten "
"gesendet."

#: admin/views/page-threat-network.php:966
msgid "Unregister"
msgstr "Registrierung aufheben"

#: admin/views/page-threat-network.php:976
msgid "Serverstandort-Ländercode"
msgstr ""

#: admin/views/page-threat-network.php:982
msgid ""
"Manuelle Vorgabe (2-stelliger Ländercode) für die \"Ziel\"-Achse der "
"Angriffs-Korridore. Hat Vorrang vor der automatischen Erkennung. Leer lassen "
"zum Deaktivieren."
msgstr ""

#: admin/views/page-threat-network.php:986
msgid "Automatische Erkennung"
msgstr ""

#: admin/views/page-threat-network.php:991
msgid ""
"Serverstandort automatisch erkennen (einmaliger Abruf der eigenen Server-IP "
"über api.ipify.org)"
msgstr ""

#: admin/views/page-threat-network.php:993
msgid ""
"Standardmäßig aus — ohne Ländercode-Vorgabe und ohne automatische Erkennung "
"macht das Plugin keinen ausgehenden Aufruf und zeigt den Serverstandort als "
"\"Unbekannt\"."
msgstr ""

#: admin/views/page-threat-network.php:1008
msgid "Participation (opt-in)"
msgstr "Teilnahme (Opt-in)"

#: admin/views/page-threat-network.php:1011
msgid "Contribute privacy-preserving threat telemetry to the network"
msgstr "Datenschutzfreundliche Bedrohungs-Telemetrie zum Netzwerk beitragen"

#: admin/views/page-threat-network.php:1014
msgid ""
"When on, attack indicators (never raw IPs or personal data) are queued and "
"sent to the EU-hosted central network so every participating site is "
"protected by what the others see. Default off."
msgstr ""
"Wenn aktiv, werden Angriffs-Indikatoren (nie Roh-IPs oder personenbezogene "
"Daten) in die Warteschlange gestellt und an das EU-gehostete zentrale "
"Netzwerk gesendet, sodass jede teilnehmende Website von dem geschützt wird, "
"was die anderen sehen. Standardmäßig aus."

#: admin/views/page-threat-network.php:1018
msgid "Also allow my indicators in the shared redistribution feed"
msgstr "Meine Indikatoren auch im geteilten Redistributions-Feed erlauben"

#: admin/views/page-threat-network.php:1023
msgid "Connection"
msgstr "Verbindung"

#: admin/views/page-threat-network.php:1026
#: admin/views/page-vulnerabilities.php:234
msgid "API endpoint"
msgstr "API-Endpunkt"

#: admin/views/page-threat-network.php:1030
msgid "EU-hosted central network. Change only if you run your own instance."
msgstr ""
"EU-gehostetes zentrales Netzwerk. Nur ändern, wenn Sie eine eigene Instanz "
"betreiben."

#: admin/views/page-threat-network.php:1034
msgid "Register token"
msgstr "Registrierungs-Token"

#: admin/views/page-threat-network.php:1038
msgid ""
"One-time bootstrap token from the network operator. Needed once to register "
"this site."
msgstr ""
"Einmaliges Bootstrap-Token vom Netzwerk-Betreiber. Wird einmalig benötigt, "
"um diese Website zu registrieren."

#: admin/views/page-threat-network.php:1051
msgid "Register this site"
msgstr "Diese Website registrieren"

#: admin/views/page-threat-network.php:1052
msgid ""
"Save the API endpoint + register token above first, then register. "
"Registration exchanges the token for a pseudonymous site identity and secret."
msgstr ""
"Speichern Sie zuerst oben API-Endpoint + Registrierungs-Token, dann "
"registrieren. Die Registrierung tauscht das Token gegen eine pseudonyme "
"Website-Identität samt Secret."

#: admin/views/page-threat-network.php:1056
msgid "Register now"
msgstr "Jetzt registrieren"

#: admin/views/page-threat-network.php:1062
msgid "Transparency — what gets sent"
msgstr "Transparenz — was gesendet wird"

#: admin/views/page-threat-network.php:1063
msgid ""
"The most recent items queued for the network. Only the fields listed leave "
"your site; identifiers are salted hashes, never raw values."
msgstr ""
"Die neuesten Einträge in der Warteschlange für das Netzwerk. Nur die "
"aufgeführten Felder verlassen Ihre Website; Identifikatoren sind gesalzene "
"Hashes, nie Rohwerte."

#: admin/views/page-threat-network.php:1065
msgid "Nothing queued yet."
msgstr "Noch nichts in der Warteschlange."

#: admin/views/page-threat-network.php:1070
msgid "Category"
msgstr "Kategorie"

#: admin/views/page-threat-network.php:1071
msgid "Fields sent"
msgstr "Gesendete Felder"

#: admin/views/page-threat-network.php:1072
msgid "IP indicator"
msgstr "IP-Indikator"

#: admin/views/page-tools.php:21
msgid "Test mail sent."
msgstr "Test-Mail gesendet."

#: admin/views/page-tools.php:24
#, php-format
msgid "Removed %d log entries."
msgstr "%d Log-Einträge entfernt."

#: admin/views/page-tools.php:27
msgid "Settings reset to defaults."
msgstr "Einstellungen auf Standardwerte zurückgesetzt."

#: admin/views/page-tools.php:40
msgid "Settings imported."
msgstr "Einstellungen importiert."

#: admin/views/page-tools.php:51
msgid "Health check"
msgstr "Funktions-Check"

#: admin/views/page-tools.php:54 admin/views/page-tools.php:109
msgid "Check"
msgstr "Prüfung"

#: admin/views/page-tools.php:56 admin/views/page-tools.php:110
msgid "Detail"
msgstr "Detail"

#: admin/views/page-tools.php:83
msgid "Pre-launch sanity check"
msgstr "Sanity-Check vor dem Go-Live"

#: admin/views/page-tools.php:85
msgid ""
"Walks through every module and reports misconfigurations or hygiene issues "
"that would embarrass a reviewer or trip up a customer. Read-only — runs no "
"actions on its own."
msgstr ""
"Geht jedes Modul durch und meldet Fehlkonfigurationen oder Hygiene-Probleme, "
"die einen Reviewer beschämen oder einen Kunden ausbremsen würden. Nur lesend "
"— führt von sich aus keine Aktionen aus."

#: admin/views/page-tools.php:89
msgid "OK"
msgstr "OK"

#: admin/views/page-tools.php:90
msgid "Warnings"
msgstr "Warnungen"

#: admin/views/page-tools.php:91
msgid "Failures"
msgstr "Fehler"

#: admin/views/page-tools.php:95
msgid "✓ Ready to ship."
msgstr "✓ Bereit zum Veröffentlichen."

#: admin/views/page-tools.php:97
msgid "Only soft warnings — review before going live."
msgstr "Nur leichte Warnungen — vor dem Go-Live prüfen."

#: admin/views/page-tools.php:99
msgid "Critical issues — fix before going live."
msgstr "Kritische Probleme — vor dem Go-Live beheben."

#: admin/views/page-tools.php:124
msgid "Fix →"
msgstr "Beheben →"

#: admin/views/page-tools.php:134
msgid "Send test mail"
msgstr "Test-Mail senden"

#: admin/views/page-tools.php:140
msgid "Send"
msgstr "Senden"

#: admin/views/page-tools.php:146
msgid "Settings export / import"
msgstr "Einstellungen exportieren / importieren"

#: admin/views/page-tools.php:150
msgid "Download settings.json"
msgstr "settings.json herunterladen"

#: admin/views/page-tools.php:159
msgid "Import settings"
msgstr "Einstellungen importieren"

#: admin/views/page-tools.php:165
msgid "Maintenance"
msgstr "Wartung"

#: admin/views/page-tools.php:169
msgid "Run log cleanup now"
msgstr "Log-Bereinigung jetzt ausführen"

#: admin/views/page-tools.php:171
msgid "Reset all settings to defaults?"
msgstr "Alle Einstellungen auf Standardwerte zurücksetzen?"

#: admin/views/page-tools.php:174
msgid "Reset to defaults"
msgstr "Auf Standardwerte zurücksetzen"

#. translators: %s: username
#: admin/views/page-twofactor.php:20
#, php-format
msgid "2FA disabled (rescue) for user: %s"
msgstr "2FA für Nutzer deaktiviert (Notfall): %s"

#: admin/views/page-twofactor.php:59
msgid "Your account does not have 2FA enabled yet."
msgstr "Dein Konto hat 2FA noch nicht aktiviert."

#: admin/views/page-twofactor.php:60
msgid ""
"This tab is the admin overview — the actual setup form is on your user "
"profile."
msgstr ""
"Dieser Tab ist die Admin-Übersicht — das eigentliche Einrichtungs-Formular "
"ist auf deinem Benutzer-Profil."

#: admin/views/page-twofactor.php:63
msgid "Set up 2FA on my profile →"
msgstr "2FA in meinem Profil einrichten →"

#: admin/views/page-twofactor.php:70
#: includes/class-shieldforge-twofactor.php:424
msgid "Two-factor authentication"
msgstr "Zwei-Faktor-Authentifizierung"

#: admin/views/page-twofactor.php:72
msgid ""
"Standard TOTP (RFC 6238): works with Google Authenticator, Authy, Microsoft "
"Authenticator, 2FAS, FreeOTP, Aegis. Each user enrolls themselves on their "
"own profile page."
msgstr ""
"Standard-TOTP (RFC 6238): funktioniert mit Google Authenticator, Authy, "
"Microsoft Authenticator, 2FAS, FreeOTP, Aegis. Jeder Nutzer registriert sich "
"selbst auf seiner Profilseite."

#: admin/views/page-twofactor.php:73
msgid ""
"No external services involved — secrets and recovery codes never leave your "
"database."
msgstr ""
"Keine externen Dienste beteiligt — Geheimnisse und Wiederherstellungscodes "
"verlassen nie deine Datenbank."

#: admin/views/page-twofactor.php:83
msgid "Enable 2FA module"
msgstr "2FA-Modul aktivieren"

#: admin/views/page-twofactor.php:87
msgid "Allow users to enable two-factor authentication on their profile."
msgstr ""
"Nutzern erlauben, Zwei-Faktor-Authentifizierung in ihrem Profil zu "
"aktivieren."

#: admin/views/page-twofactor.php:92
msgid "Force 2FA for these roles"
msgstr "2FA für diese Rollen erzwingen"

#: admin/views/page-twofactor.php:104
msgid ""
"Users in these roles see a warning on their profile until they complete "
"setup. Setup is still self-service — admins cannot enroll on someone's "
"behalf."
msgstr ""
"Benutzer in diesen Rollen sehen eine Warnung in ihrem Profil, bis sie die "
"Einrichtung abschließen. Die Einrichtung bleibt Self-Service — Admins können "
"sie nicht stellvertretend für jemanden durchführen."

#: admin/views/page-twofactor.php:117
msgid "Users with 2FA configured"
msgstr "Nutzer mit konfiguriertem 2FA"

#: admin/views/page-twofactor.php:119
msgid ""
"No users have set up 2FA yet. Each user enables it from their own profile "
"page (Users → Profile → Two-factor authentication)."
msgstr ""
"Noch keine Nutzer haben 2FA eingerichtet. Jeder Nutzer aktiviert es auf "
"seiner eigenen Profilseite (Nutzer → Profil → Zwei-Faktor-Authentifizierung)."

#: admin/views/page-twofactor.php:126
msgid "Recovery codes"
msgstr "Wiederherstellungscodes"

#: admin/views/page-twofactor.php:127
msgid "Last used"
msgstr "Zuletzt verwendet"

#: admin/views/page-twofactor.php:128
msgid "Rescue action"
msgstr "Notfall-Aktion"

#: admin/views/page-twofactor.php:139 admin/views/page-vulnerabilities.php:39
msgid "ago"
msgstr "her"

#: admin/views/page-twofactor.php:150 admin/views/page-vulnerabilities.php:126
msgid "active"
msgstr "aktiv"

#: admin/views/page-twofactor.php:152
msgid "pending setup"
msgstr "Einrichtung ausstehend"

#: admin/views/page-twofactor.php:163
#, php-format
msgid ""
"Disable 2FA for %s? Use only when the user lost both their authenticator and "
"recovery codes."
msgstr ""
"2FA für %s deaktivieren? Nur verwenden, wenn der Nutzer sowohl Authenticator "
"als auch Wiederherstellungscodes verloren hat."

#: admin/views/page-twofactor.php:163
msgid "Rescue: disable"
msgstr "Notfall: deaktivieren"

#: admin/views/page-twofactor.php:171
msgid ""
"Capped at 100 rows. Use the user-edit screen for individual user management."
msgstr ""
"Auf 100 Zeilen begrenzt. Nutze die Benutzer-Bearbeitungsseite für einzelne "
"Nutzerverwaltung."

#. translators: 1: queries, 2: errors, 3: plugins-affected, 4: themes-affected, 5: core-affected
#: admin/views/page-vulnerabilities.php:18
#, php-format
msgid ""
"Vulnerability scan complete: %1$d queries, %2$d errors, %3$d plugins / %4$d "
"themes / %5$d core hits."
msgstr ""
"Schwachstellen-Scan abgeschlossen: %1$d Abfragen, %2$d Fehler, %3$d "
"Plugin- / %4$d Theme- / %5$d Core-Treffer."

#: admin/views/page-vulnerabilities.php:27
msgid "Vulnerability cache cleared."
msgstr "Schwachstellen-Cache geleert."

#: admin/views/page-vulnerabilities.php:47
msgid "Plugin / Theme / Core vulnerabilities"
msgstr "Plugin-/Theme-/Core-Schwachstellen"

#: admin/views/page-vulnerabilities.php:49
msgid ""
"Daily check against an EU-hosted vulnerability API (default: shieldforge-"
"intel.brainwerk.at — no API key, self-hostable). Each scan sends only the "
"slug + version of installed components. No site URL, no admin email, no IPs."
msgstr ""

#: admin/views/page-vulnerabilities.php:55
msgid "The vulnerability scanner is off by default."
msgstr ""

#: admin/views/page-vulnerabilities.php:56
msgid ""
"It is the only feature that automatically contacts an external service. "
"Enable it below to consent to the daily lookup (slug + version only). You "
"can also run a one-off check with “Scan now” without turning on the daily "
"schedule."
msgstr ""

#: admin/views/page-vulnerabilities.php:64
msgid "Queries last run"
msgstr "Abfragen letzter Lauf"

#: admin/views/page-vulnerabilities.php:65
msgid "Findings (cached)"
msgstr "Funde (zwischengespeichert)"

#. translators: 1: plugins-affected, 2: themes-affected, 3: core-affected
#: admin/views/page-vulnerabilities.php:70
#, php-format
msgid "%1$d plugins, %2$d themes, %3$d core"
msgstr "%1$d Plugins, %2$d Themes, %3$d Core"

#: admin/views/page-vulnerabilities.php:85
msgid "Clear cached vulnerability data and dedup state?"
msgstr "Zwischengespeicherte Schwachstellen-Daten und Dedup-Status löschen?"

#: admin/views/page-vulnerabilities.php:85
msgid "Clear cache"
msgstr "Cache leeren"

#: admin/views/page-vulnerabilities.php:88
msgid ""
"Manual scans hit the API in real time and may take ~10–60s depending on how "
"many plugins are installed."
msgstr ""
"Manuelle Scans rufen die API in Echtzeit ab und können je nach Anzahl "
"installierter Plugins ~10–60 s dauern."

#: admin/views/page-vulnerabilities.php:103
#: includes/class-shieldforge-admin-intros.php:157
msgid "Component"
msgstr "Komponente"

#: admin/views/page-vulnerabilities.php:104
#: includes/class-shieldforge-admin-intros.php:158
msgid "Version"
msgstr "Version"

#: admin/views/page-vulnerabilities.php:105
#: includes/class-shieldforge-admin-intros.php:159
msgid "Active"
msgstr "Aktiv"

#: admin/views/page-vulnerabilities.php:106
#: includes/class-shieldforge-admin-intros.php:160
msgid "Vulnerability"
msgstr "Schwachstelle"

#: admin/views/page-vulnerabilities.php:107
#: includes/class-shieldforge-admin-intros.php:161
msgid "Fixed in"
msgstr "Behoben in"

#: admin/views/page-vulnerabilities.php:108
#: includes/class-shieldforge-admin-intros.php:162
msgid "Sources"
msgstr "Quellen"

#: admin/views/page-vulnerabilities.php:128
msgid "inactive"
msgstr "inaktiv"

#: admin/views/page-vulnerabilities.php:138
msgid "No patch available"
msgstr "Kein Patch verfügbar"

#: admin/views/page-vulnerabilities.php:177
msgid "No vulnerability scan has run yet."
msgstr "Es wurde noch kein Schwachstellen-Scan durchgeführt."

#: admin/views/page-vulnerabilities.php:178
msgid ""
"The scanner queries a public CVE database for every plugin/theme/core "
"component on your site. The next scheduled run is at 04:30, but you can run "
"it on demand."
msgstr ""
"Der Scanner fragt eine öffentliche CVE-Datenbank für jedes Plugin/Theme/Core "
"auf deiner Seite ab. Der nächste geplante Lauf ist um 04:30, du kannst aber "
"jederzeit manuell starten."

#: admin/views/page-vulnerabilities.php:186
msgid "Vulnerable plugins"
msgstr "Verwundbare Plugins"

#: admin/views/page-vulnerabilities.php:187
msgid "Vulnerable themes"
msgstr "Verwundbare Themes"

#: admin/views/page-vulnerabilities.php:188
msgid "Vulnerable WordPress core"
msgstr "Verwundbarer WordPress-Core"

#: admin/views/page-vulnerabilities.php:191
msgid "No known vulnerabilities found in the installed components. ✓"
msgstr ""
"Keine bekannten Schwachstellen in den installierten Komponenten gefunden. ✓"

#: admin/views/page-vulnerabilities.php:197
msgid "Settings"
msgstr "Einstellungen"

#: admin/views/page-vulnerabilities.php:211
msgid "Run the daily vulnerability check."
msgstr "Die tägliche Schwachstellen-Prüfung ausführen."

#: admin/views/page-vulnerabilities.php:216
msgid "Check themes"
msgstr "Themes prüfen"

#: admin/views/page-vulnerabilities.php:220
msgid "Also query the API for installed themes."
msgstr "Auch die API nach installierten Themes abfragen."

#: admin/views/page-vulnerabilities.php:225
msgid "Check WordPress core"
msgstr "WordPress-Core prüfen"

#: admin/views/page-vulnerabilities.php:229
msgid "Also check the running WordPress core version."
msgstr "Auch die laufende WordPress-Core-Version prüfen."

#: admin/views/page-vulnerabilities.php:237
msgid ""
"Override only if you mirror the API privately. Empty uses wpvulnerability."
"net."
msgstr ""
"Nur überschreiben, wenn du die API privat spiegelst. Leer = wpvulnerability."
"net wird verwendet."

#: admin/views/partials/upgrade-hint.php:20
msgid "Unlock more in Brainwerk Security Suite Pro"
msgstr "Mehr freischalten mit Brainwerk Security Suite Pro"

#: admin/views/partials/upgrade-hint.php:21
msgid ""
"The free build covers logging, brute-force protection, hardening, and basic "
"anomaly detection. Pro adds adaptive thresholds, geo blocking, 2FA / "
"WebAuthn, chat-app alerts and a multisite aggregate dashboard."
msgstr ""
"Die Free-Version umfasst Protokollierung, Brute-Force-Schutz, Härtung und "
"einfache Anomalie-Erkennung. Pro ergänzt adaptive Schwellen, Geo-Blocking, "
"2FA / WebAuthn, Chat-App-Warnungen und ein Multisite-Aggregat-Dashboard."

#: admin/views/partials/upgrade-hint.php:40
msgid "See license options"
msgstr "Lizenz-Optionen ansehen"

#: includes/class-shieldforge-admin-intros.php:35
msgid ""
"<strong>The \"is anything on fire?\" overview.</strong> Live security status "
"of your site at a glance — threat level, recent attacker activity, and what "
"(if anything) needs your attention."
msgstr ""
"<strong>Die „Brennt irgendwo etwas?“-Übersicht.</strong> Der Live-"
"Sicherheitsstatus Ihrer Website auf einen Blick — Bedrohungslevel, aktuelle "
"Angreifer-Aktivität und was (falls überhaupt) Ihre Aufmerksamkeit braucht."

#: includes/class-shieldforge-admin-intros.php:37
msgid "What you see here"
msgstr "Was du hier siehst"

#: includes/class-shieldforge-admin-intros.php:38
msgid ""
"A threat-score from 0 to 100 (calm / elevated / high / critical), action "
"items pulled from the last 24 hours, brute-force lockouts, anomalous logins, "
"top attacker IPs and which usernames they are guessing. The same overview "
"also appears as a widget on your main WordPress dashboard."
msgstr ""
"Eine Bedrohungs-Punktzahl von 0 bis 100 (ruhig / erhöht / hoch / kritisch), "
"Handlungsempfehlungen aus den letzten 24 Stunden, Brute-Force-Sperren, "
"ungewöhnliche Anmeldungen, Top-Angreifer-IPs und welche Benutzernamen sie "
"probieren. Die gleiche Übersicht erscheint auch als Widget auf deinem "
"WordPress-Dashboard."

#: includes/class-shieldforge-admin-intros.php:39
msgid "Should I do anything?"
msgstr "Muss ich etwas tun?"

#: includes/class-shieldforge-admin-intros.php:40
msgid ""
"On a calm day: nothing. The score stays low, no action items, and you can "
"close the tab. On a busy day, the action items are clickable shortcuts that "
"take you to the relevant tool — no detective work required."
msgstr ""
"An ruhigen Tagen: nichts. Die Punktzahl bleibt niedrig, keine "
"Handlungsempfehlungen, du kannst den Tab schließen. An hektischen Tagen sind "
"die Handlungsempfehlungen klickbare Verknüpfungen die dich zum richtigen "
"Werkzeug bringen — keine Detektivarbeit nötig."

#: includes/class-shieldforge-admin-intros.php:41
msgid "How the score is calculated"
msgstr "Wie die Punktzahl berechnet wird"

#: includes/class-shieldforge-admin-intros.php:42
msgid ""
"Four signal groups, each capped at 25 points so no single noisy signal can "
"push the score on its own: failed-login volume, distinct attacker IPs, "
"probing density (bots scanning your site for known files), and escalation "
"signals (lockouts + anomalies + file changes + malware hits). The breakdown "
"is shown in the daily digest email."
msgstr ""
"Vier Signalgruppen, jede auf maximal 25 Punkte gedeckelt damit kein "
"einzelnes lautes Signal den Score allein hochtreiben kann: Anzahl "
"fehlgeschlagener Logins, unterschiedliche Angreifer-IPs, Probing-Dichte "
"(Bots die deine Seite nach bekannten Dateien absuchen) und Eskalations-"
"Signale (Sperren + Anomalien + Datei-Änderungen + Malware-Treffer). Die "
"Aufschlüsselung steht in der täglichen Zusammenfassungs-E-Mail."

#: includes/class-shieldforge-admin-intros.php:48
msgid ""
"<strong>Stops password-guessing attacks.</strong> When someone (or a bot) "
"tries to log in too often with the wrong password, Brainwerk Security Suite "
"locks them out — by IP and by account."
msgstr ""
"<strong>Stoppt Passwort-Rate-Angriffe.</strong> Wenn jemand (oder ein Bot) "
"zu oft mit falschem Passwort anmelden will, sperrt Brainwerk Security Suite "
"— pro IP UND pro Konto."

#: includes/class-shieldforge-admin-intros.php:50
msgid "Why two kinds of lockout?"
msgstr "Warum zwei Arten von Sperre?"

#: includes/class-shieldforge-admin-intros.php:51
msgid ""
"IP-based lockout works against a single attacker hammering your site from "
"one IP. But modern botnets rotate through hundreds of IPs to avoid that — so "
"we ALSO lock the targeted account itself. After a configurable number of "
"failed attempts, that username is locked for a configurable window. "
"Attackers can't bypass it just by changing IP."
msgstr ""
"Eine IP-basierte Sperre wirkt gegen einen einzelnen Angreifer, der Ihre "
"Website von einer IP aus bombardiert. Moderne Botnets rotieren aber durch "
"Hunderte IPs, um genau das zu umgehen — deshalb sperren wir ZUSÄTZLICH das "
"angegriffene Konto selbst. Nach einer konfigurierbaren Zahl fehlgeschlagener "
"Versuche wird dieser Benutzername für ein konfigurierbares Zeitfenster "
"gesperrt. Angreifer können das nicht durch bloßes Wechseln der IP umgehen."

#: includes/class-shieldforge-admin-intros.php:52
msgid "Safe defaults"
msgstr "Sichere Voreinstellungen"

#: includes/class-shieldforge-admin-intros.php:53
msgid ""
"5 wrong tries within 5 minutes locks the IP for 30 minutes. 8 wrong tries "
"within 15 minutes locks the account for 15 minutes. These defaults catch "
"automated attacks without locking out real users who fat-fingered their "
"password."
msgstr ""
"5 Fehlversuche binnen 5 Minuten sperren die IP für 30 Minuten. 8 "
"Fehlversuche binnen 15 Minuten sperren das Konto für 15 Minuten. Diese "
"Voreinstellungen fangen automatisierte Angriffe ab, ohne echte Benutzer "
"auszusperren die sich vertippt haben."

#: includes/class-shieldforge-admin-intros.php:54
msgid "I'm on a CDN — will it see real IPs?"
msgstr "Ich nutze ein CDN — sieht es echte IPs?"

#: includes/class-shieldforge-admin-intros.php:55
msgid ""
"If your nginx/Apache forwards the original client IP via PROXY-protocol or X-"
"Forwarded-For, yes. The \"Healthcheck\" banner at the top warns you if all "
"visitors arrive as 127.0.0.1 — that means the chain is hiding the real IP "
"and brute-force protection would be useless without fixing the proxy first."
msgstr ""
"Wenn Ihr nginx/Apache die ursprüngliche Client-IP per PROXY-Protokoll oder X-"
"Forwarded-For weiterreicht: ja. Das „Healthcheck“-Banner oben warnt Sie, "
"wenn alle Besucher als 127.0.0.1 ankommen — das heißt, die Kette versteckt "
"die echte IP, und der Brute-Force-Schutz wäre nutzlos, ohne zuerst den Proxy "
"zu reparieren."

#: includes/class-shieldforge-admin-intros.php:61
msgid ""
"<strong>Two-factor authentication (2FA) — the single biggest defense against "
"stolen passwords.</strong> Even if someone gets your password, they still "
"need a 6-digit code from your phone to log in."
msgstr ""
"<strong>Zwei-Faktor-Authentifizierung (2FA) — die wichtigste einzelne "
"Verteidigung gegen gestohlene Passwörter.</strong> Selbst wenn jemand dein "
"Passwort hat, braucht er trotzdem einen 6-stelligen Code von deinem Handy um "
"sich anzumelden."

#: includes/class-shieldforge-admin-intros.php:63
msgid "How does it work?"
msgstr "Wie funktioniert das?"

#: includes/class-shieldforge-admin-intros.php:64
msgid ""
"You install a free authenticator app on your phone (Google Authenticator, "
"Microsoft Authenticator, Authy, 2FAS — any of them). It generates a 6-digit "
"code that changes every 30 seconds. When you log in, you enter your password "
"as usual, then the current code from the app. Without the phone in hand, "
"your password is useless to an attacker."
msgstr ""
"Du installierst eine kostenlose Authenticator-App auf deinem Handy (Google "
"Authenticator, Microsoft Authenticator, Authy, 2FAS — alle funktionieren). "
"Sie erzeugt einen 6-stelligen Code, der sich alle 30 Sekunden ändert. Beim "
"Anmelden gibst du wie gewohnt das Passwort ein, dann den aktuellen Code aus "
"der App. Ohne das Handy in der Hand ist dein Passwort für einen Angreifer "
"wertlos."

#: includes/class-shieldforge-admin-intros.php:65
msgid "What if I lose my phone?"
msgstr "Was, wenn ich mein Handy verliere?"

#: includes/class-shieldforge-admin-intros.php:66
msgid ""
"When you set up 2FA, you get 8 single-use recovery codes. Save them in your "
"password manager or print them out. Each one can be used exactly once "
"instead of an authenticator code. If you lose all 8 recovery codes too, an "
"admin (with manage_network_options capability) can disable 2FA for any user "
"from this tab."
msgstr ""
"Beim Einrichten von 2FA bekommst du 8 Wiederherstellungs-Codes für den "
"Einmalgebrauch. Speichere sie in deinem Passwort-Manager oder druck sie aus. "
"Jeder Code kann genau einmal anstatt eines Authenticator-Codes verwendet "
"werden. Wenn du auch alle 8 verlierst, kann ein Administrator (mit "
"manage_network_options-Berechtigung) 2FA für jeden Benutzer von diesem Tab "
"aus deaktivieren."

#: includes/class-shieldforge-admin-intros.php:67
msgid "Setting it up"
msgstr "Einrichten"

#: includes/class-shieldforge-admin-intros.php:68
msgid ""
"This tab is the admin overview. The actual setup form is on each user's own "
"profile page — only you have the device, only you can enroll it. If \"Force "
"2FA for these roles\" is enabled, users in those roles see a warning until "
"they finish setup."
msgstr ""
"Dieser Tab ist die Admin-Übersicht. Das eigentliche Einrichtungsformular ist "
"auf der Profilseite jedes Benutzers — nur Sie haben das Gerät, nur Sie "
"können es registrieren. Wenn „2FA für diese Rollen erzwingen“ aktiv ist, "
"sehen Benutzer in diesen Rollen eine Warnung, bis sie die Einrichtung "
"abschließen."

#: includes/class-shieldforge-admin-intros.php:74
msgid ""
"<strong>Closes off WordPress's \"default doors\" that attackers always try "
"first.</strong> Each toggle here disables a feature that 99% of sites don't "
"use but that 100% of bots probe for."
msgstr ""
"<strong>Schließt die „Standard-Türen“ von WordPress, die Angreifer immer "
"zuerst probieren.</strong> Jeder Schalter hier deaktiviert eine Funktion, "
"die 99 % der Websites nicht nutzen, nach der aber 100 % der Bots suchen."

#: includes/class-shieldforge-admin-intros.php:76
msgid "What gets turned off?"
msgstr "Was wird abgeschaltet?"

#: includes/class-shieldforge-admin-intros.php:77
msgid ""
"XML-RPC (a legacy API used by very old mobile apps — modern apps use REST). "
"The in-admin file editor (lets a logged-in admin edit theme/plugin files "
"directly — usable as a one-click backdoor if your account is hijacked). "
"Author enumeration (visiting /?author=1 reveals usernames). The WordPress "
"version string in the page source (lets bots match against vulnerability "
"databases). REST API access for anonymous visitors to sensitive endpoints "
"(users, comments, search)."
msgstr ""
"XML-RPC (eine alte API für sehr alte Mobile-Apps — moderne nutzen REST). Der "
"Datei-Editor im Admin-Bereich (erlaubt einem eingeloggten Admin, Theme/"
"Plugin-Dateien direkt zu editieren — nutzbar als Ein-Klick-Backdoor wenn "
"dein Konto gekapert wird). Author-Enumeration (Aufruf von /?author=1 verrät "
"Benutzernamen). Den WordPress-Versions-String im Seiten-Quellcode (lässt "
"Bots gegen Schwachstellen-Datenbanken matchen). REST-API-Zugriff für anonyme "
"Besucher auf sensible Endpoints (Benutzer, Kommentare, Suche)."

#: includes/class-shieldforge-admin-intros.php:78
msgid "Will this break my site?"
msgstr "Beschädigt das meine Seite?"

#: includes/class-shieldforge-admin-intros.php:79
msgid ""
"Almost never. None of these are used by normal visitors or modern themes/"
"plugins. The few cases where it matters: if you use Jetpack with the "
"WordPress mobile app or a third-party scheduler that POSTs via XML-RPC, you "
"may need to leave XML-RPC on. Test after enabling each toggle if you have a "
"complex setup."
msgstr ""
"Fast nie. Keine dieser Funktionen wird von normalen Besuchern oder modernen "
"Themes/Plugins genutzt. Die wenigen Fälle wo es zählt: wenn du Jetpack mit "
"der WordPress-Mobile-App nutzt oder einen Dritt-Scheduler der via XML-RPC "
"POSTed, lass XML-RPC eventuell an. Teste nach jedem Schalter, wenn dein "
"Setup komplex ist."

#: includes/class-shieldforge-admin-intros.php:80
msgid "What about more advanced hardening?"
msgstr "Und was ist mit fortgeschrittener Härtung?"

#: includes/class-shieldforge-admin-intros.php:81
msgid ""
"See the \"Hardening+\" tab for custom login URL, honeypot anti-bot, and "
"Content-Security-Policy headers — those are riskier (lockout potential) so "
"they live separately and ship default-OFF."
msgstr ""
"Im Tab „Härtung+“ finden Sie eine eigene Login-URL, Honeypot-Anti-Bot und "
"Content-Security-Policy-Header — diese sind riskanter (Aussperr-Potenzial), "
"deshalb stehen sie separat und sind standardmäßig AUS."

#: includes/class-shieldforge-admin-intros.php:87
msgid ""
"<strong>Three layered defenses for sites that want more than the basics.</"
"strong> Each can lock you out if misconfigured — read carefully before "
"enabling."
msgstr ""
"<strong>Drei zusätzliche Verteidigungsschichten für Seiten die mehr als das "
"Grundlegende wollen.</strong> Jede kann dich aussperren wenn falsch "
"konfiguriert — lies sorgfältig bevor du aktivierst."

#: includes/class-shieldforge-admin-intros.php:90
msgid ""
"Move /wp-login.php to a path of your choosing. Bots blindly hammer /wp-login."
"php — they'll get a 404 and move on. Crucial lockout-recovery: add a "
"SHIELDFORGE_LOGIN_RESCUE constant to wp-config.php BEFORE enabling this. If "
"you forget your slug, the rescue token brings you back."
msgstr ""
"Verlegt /wp-login.php auf einen Pfad Ihrer Wahl. Bots hämmern blind auf /wp-"
"login.php — sie bekommen einen 404 und ziehen weiter. Wichtige Aussperr-"
"Absicherung: Fügen Sie VOR dem Aktivieren eine SHIELDFORGE_LOGIN_RESCUE-"
"Konstante in die wp-config.php ein. Wenn Sie Ihren Slug vergessen, bringt "
"Sie das Rescue-Token zurück."

#: includes/class-shieldforge-admin-intros.php:92
msgid ""
"A hidden field is added to login / register / comment forms. Real users "
"never see it. Bots fill every visible field — submissions with the hidden "
"field non-empty are blocked. 100% local, no Google reCAPTCHA, no third-party "
"data transfer. Stops the dumb mass-bot 90% with zero user friction."
msgstr ""
"Ein verstecktes Feld wird zu Login-/Registrierungs-/Kommentar-Formularen "
"hinzugefügt. Echte Benutzer sehen es nie. Bots füllen jedes sichtbare Feld "
"aus — Einsendungen mit gefülltem versteckten Feld werden geblockt. 100% "
"lokal, kein Google reCAPTCHA, keine Drittanbieter-Datenübertragung. Stoppt "
"90% der dummen Massen-Bots ohne User-Friktion."

#: includes/class-shieldforge-admin-intros.php:93
msgid "Security HTTP headers (incl. CSP)"
msgstr "Sicherheits-HTTP-Header (inkl. CSP)"

#: includes/class-shieldforge-admin-intros.php:94
msgid ""
"Each header is set ONLY if your nginx/Apache doesn't already send it. CSP "
"(Content-Security-Policy) is off by default because a wrong policy can blank "
"out your site — turn it on in Report-Only mode first, watch the browser "
"console for violations, then enforce."
msgstr ""
"Jeder Header wird NUR gesetzt, wenn Ihr nginx/Apache ihn nicht bereits "
"sendet. CSP (Content-Security-Policy) ist standardmäßig aus, weil eine "
"falsche Policy Ihre Website leeren kann — aktivieren Sie sie zuerst im "
"Report-Only-Modus, beobachten Sie die Browser-Konsole auf Verstöße und "
"erzwingen Sie sie erst dann."

#: includes/class-shieldforge-admin-intros.php:100
msgid ""
"<strong>Currently-blocked IPs and how long they stay blocked.</strong> This "
"is the live consequence of the brute-force protection on the Login tab."
msgstr ""
"<strong>Aktuell gesperrte IPs und wie lange sie gesperrt bleiben.</strong> "
"Das ist die Live-Konsequenz aus dem Brute-Force-Schutz auf dem Anmeldungs-"
"Tab."

#: includes/class-shieldforge-admin-intros.php:102
msgid "How does an IP get on this list?"
msgstr "Wie kommt eine IP auf diese Liste?"

#: includes/class-shieldforge-admin-intros.php:103
msgid ""
"Either automatically (it tripped the brute-force threshold and got auto-"
"blocked for the configured lockout duration) or manually (you clicked "
"\"Block this IP\" on the Logs tab)."
msgstr ""
"Entweder automatisch (die IP hat die Brute-Force-Schwelle ausgelöst und "
"wurde für die konfigurierte Sperrdauer automatisch blockiert) oder manuell "
"(Sie haben im Logs-Tab auf „IP blockieren“ geklickt)."

#: includes/class-shieldforge-admin-intros.php:104
msgid "Can I unblock someone?"
msgstr "Kann ich jemanden entsperren?"

#: includes/class-shieldforge-admin-intros.php:105
msgid ""
"Yes — every row has an \"Unblock\" link. Useful when you locked yourself out "
"by typing your own password wrong too many times."
msgstr ""
"Ja — jede Zeile hat einen „Entsperren“-Link. Nützlich, wenn Sie sich selbst "
"ausgesperrt haben, weil Sie Ihr eigenes Passwort zu oft falsch eingetippt "
"haben."

#: includes/class-shieldforge-admin-intros.php:106
msgid "Does this stop ALL traffic from the IP?"
msgstr "Stoppt das ALLEN Traffic von der IP?"

#: includes/class-shieldforge-admin-intros.php:107
msgid ""
"No — only login attempts. The block prevents further password guessing but "
"doesn't stop the IP from reading public pages. For full IP-blocking, use a "
"Pro feature like Geo-blocking or Cloud Threat Intel, or block at the "
"firewall/CDN layer."
msgstr ""
"Nein — nur Login-Versuche. Die Sperre verhindert weiteres Passwort-Raten, "
"hindert die IP aber nicht daran, öffentliche Seiten zu lesen. Für "
"vollständiges IP-Blocking nutzen Sie ein Pro-Feature wie Geo-Blocking oder "
"Cloud Threat Intel, oder blockieren Sie auf Firewall-/CDN-Ebene."

#: includes/class-shieldforge-admin-intros.php:108
msgid "Crawler rate-limiting (further down this page)"
msgstr "Crawler-Rate-Limiting (weiter unten auf dieser Seite)"

#: includes/class-shieldforge-admin-intros.php:109
msgid ""
"Caps how many requests per minute a single IP may make — with separate, "
"stricter budgets for crawlers. Genuine search engines (Google, Bing, Apple, "
"Yandex, Baidu) are verified via reverse-DNS and never throttled; bots FAKING "
"a Googlebot user-agent are blocked outright. Logged-in users and whitelisted "
"IPs are always exempt. Off by default."
msgstr ""
"Begrenzt, wie viele Requests pro Minute eine einzelne IP stellen darf — mit "
"separaten, strengeren Budgets für Crawler. Echte Suchmaschinen (Google, "
"Bing, Apple, Yandex, Baidu) werden per Reverse-DNS verifiziert und nie "
"gedrosselt; Bots, die einen Googlebot-User-Agent VORTÄUSCHEN, werden direkt "
"blockiert. Eingeloggte Benutzer und IPs auf der Whitelist sind immer "
"ausgenommen. Standardmäßig aus."

#: includes/class-shieldforge-admin-intros.php:112
msgid "The blocked source IP (or anonymized /24 if IP anonymization is on)."
msgstr ""
"Die gesperrte Quell-IP (oder anonymisiert /24, wenn IP-Anonymisierung aktiv "
"ist)."

#: includes/class-shieldforge-admin-intros.php:113
msgid ""
"Why the block was created — typically `bf_threshold` (brute-force) or "
"`admin_quick_block` (you blocked manually)."
msgstr ""
"Warum die Sperre erstellt wurde — typisch `bf_threshold` (Brute-Force) oder "
"`admin_quick_block` (manuell gesperrt)."

#: includes/class-shieldforge-admin-intros.php:114
msgid "Blocked until"
msgstr "Gesperrt bis"

#: includes/class-shieldforge-admin-intros.php:114
msgid ""
"When the block expires automatically. After this time the IP can attempt "
"logins again."
msgstr ""
"Wann die Sperre automatisch ausläuft. Danach kann die IP wieder "
"Anmeldeversuche unternehmen."

#: includes/class-shieldforge-admin-intros.php:115
msgid ""
"\"Unblock\" removes the entry immediately — useful if you locked yourself "
"out."
msgstr ""
"„Entsperren“ entfernt den Eintrag sofort — nützlich, wenn Sie sich selbst "
"ausgesperrt haben."

#: includes/class-shieldforge-admin-intros.php:121
msgid ""
"<strong>Knows what every PHP file on your site SHOULD look like, and tells "
"you when one suddenly changes.</strong> The earliest warning that something "
"compromised your site."
msgstr ""
"<strong>Weiß, wie jede PHP-Datei auf deiner Seite AUSSEHEN SOLLTE, und sagt "
"dir, wenn sich plötzlich eine ändert.</strong> Die früheste Warnung, dass "
"etwas deine Seite kompromittiert hat."

#: includes/class-shieldforge-admin-intros.php:123
msgid "How does it know what is \"normal\"?"
msgstr "Woher weiß es, was „normal“ ist?"

#: includes/class-shieldforge-admin-intros.php:124
msgid ""
"On the first run, it computes a SHA-256 hash of every PHP file under "
"WordPress core, your plugins, your themes, and mu-plugins. That's your "
"\"baseline\" — typically 5,000 to 15,000 files. After that, the daily scan "
"re-hashes everything and tells you about anything that was added, modified, "
"or deleted."
msgstr ""
"Beim ersten Lauf berechnet es einen SHA-256-Hash jeder PHP-Datei in "
"WordPress-Core, Ihren Plugins, Ihren Themes und mu-plugins. Das ist Ihre "
"„Baseline“ — typischerweise 5.000 bis 15.000 Dateien. Danach hasht der "
"tägliche Scan alles erneut und meldet alles, was hinzugefügt, geändert oder "
"gelöscht wurde."

#: includes/class-shieldforge-admin-intros.php:125
msgid "But files change all the time when I update plugins!"
msgstr "Aber Dateien ändern sich ständig, wenn ich Plugins aktualisiere!"

#: includes/class-shieldforge-admin-intros.php:126
msgid ""
"Right — every time WordPress installs an update, hundreds of files change. "
"The scanner picks those up too, but they appear bunched up at the time of "
"the update — you'll recognize them. The dangerous ones are the changes that "
"happen WITHOUT an update — those are the ones to investigate."
msgstr ""
"Richtig — bei jedem WordPress-Update ändern sich Hunderte Dateien. Der "
"Scanner erfasst auch diese, aber sie erscheinen gebündelt zum Zeitpunkt des "
"Updates — Sie werden sie erkennen. Gefährlich sind die Änderungen, die OHNE "
"Update passieren — denen sollten Sie nachgehen."

#: includes/class-shieldforge-admin-intros.php:127
msgid "And the malware-pattern checks?"
msgstr "Und die Malware-Muster-Prüfungen?"

#: includes/class-shieldforge-admin-intros.php:128
msgid ""
"For every new or changed file, Brainwerk Security Suite runs 16 regex rules "
"looking for hostile patterns: eval(base64_decode(...)), known web shells "
"(c99/r57/WSO), inline admin-user-creation, password-cookie hijacks. Findings "
"show the exact line and code snippet. False-positive rate is very low."
msgstr ""
"Für jede neue oder geänderte Datei lässt Brainwerk Security Suite 16 Regex-"
"Regeln nach feindlichen Mustern suchen: eval(base64_decode(...)), bekannte "
"WebShells (c99/r57/WSO), inline angelegte Admin-Benutzer, Passwort-Cookie-"
"Übernahmen. Treffer zeigen die exakte Zeile und das Code-Schnipsel. Die "
"False-Positive-Rate ist sehr niedrig."

#: includes/class-shieldforge-admin-intros.php:129
msgid "Privacy"
msgstr "Datenschutz"

#: includes/class-shieldforge-admin-intros.php:130
msgid ""
"100% local. No file contents leave your server. The scan results stay in "
"your own database."
msgstr ""
"100% lokal. Keine Datei-Inhalte verlassen deinen Server. Die Scan-Ergebnisse "
"bleiben in deiner eigenen Datenbank."

#: includes/class-shieldforge-admin-intros.php:131
msgid "Repository integrity check (further down this page)"
msgstr "Repository-Integritätsprüfung (weiter unten auf dieser Seite)"

#: includes/class-shieldforge-admin-intros.php:132
msgid ""
"Compares every wp.org-hosted plugin and theme file against the official "
"checksums from wordpress.org. A modified, missing or extra file means "
"someone may have tampered with the package — it is reported here so you can "
"inspect it and reinstall the clean copy from wordpress.org the standard way. "
"Plugins/themes NOT from wp.org are listed as \"unverifiable\" and never "
"touched."
msgstr ""

#: includes/class-shieldforge-admin-intros.php:135
msgid "UTC timestamp of when the scanner found the change."
msgstr "UTC-Zeitstempel, wann der Scanner die Änderung gefunden hat."

#: includes/class-shieldforge-admin-intros.php:136
msgid ""
"What changed: <code>file added</code> (new file appeared), <code>file "
"changed</code> (existing file modified), <code>file missing</code> (file "
"deleted), <code>malware suspect</code> (suspicious code pattern detected)."
msgstr ""
"Was sich geändert hat: <code>file added</code> (neue Datei erschien), "
"<code>file changed</code> (bestehende Datei geändert), <code>file missing</"
"code> (Datei gelöscht), <code>malware suspect</code> (verdächtiges Code-"
"Muster erkannt)."

#: includes/class-shieldforge-admin-intros.php:137
msgid ""
"Path of the affected file relative to your WordPress root. For malware hits "
"the rule ID and a code snippet are shown below the path."
msgstr ""
"Pfad der betroffenen Datei relativ zum WordPress-Root. Bei Malware-Treffern "
"werden die Regel-ID und ein Code-Snippet unter dem Pfad gezeigt."

#: includes/class-shieldforge-admin-intros.php:138
msgid ""
"<code>info</code> = informational, <code>warn</code> = worth checking, "
"<code>high</code> = file in WP core or admin (very suspicious), "
"<code>critical</code> = known web shell signature."
msgstr ""
"<code>info</code> = informativ, <code>warn</code> = anschauenswert, "
"<code>high</code> = Datei in WP-Core oder Admin (sehr verdächtig), "
"<code>critical</code> = bekannte Web-Shell-Signatur."

#: includes/class-shieldforge-admin-intros.php:139
msgid ""
"\"Re-baseline\" accepts the current state as the new normal (the change "
"won't be reported again). \"Whitelist\" suppresses all future alerts for "
"this exact path."
msgstr ""
"„Re-Baseline“ akzeptiert den aktuellen Zustand als neue Normalität (die "
"Änderung wird nicht erneut gemeldet). „Whitelist“ unterdrückt alle künftigen "
"Alarme für genau diesen Pfad."

#: includes/class-shieldforge-admin-intros.php:145
msgid ""
"<strong>Tells you which of your installed plugins/themes have known security "
"holes — and which version fixes them.</strong> Most WordPress hacks happen "
"via outdated plugins; this tab tells you which ones to update first."
msgstr ""
"<strong>Zeigt dir, welche deiner installierten Plugins/Themes bekannte "
"Sicherheitslücken haben — und welche Version sie fixt.</strong> Die meisten "
"WordPress-Hacks passieren über veraltete Plugins; dieser Tab sagt dir, "
"welche zuerst zu aktualisieren sind."

#: includes/class-shieldforge-admin-intros.php:147
msgid "Where does the data come from?"
msgstr "Woher kommen die Daten?"

#: includes/class-shieldforge-admin-intros.php:148
msgid ""
"A daily check against the wpvulnerability.net public database (free, EU-"
"hosted, no API key). For every plugin and theme installed on your site, "
"Brainwerk Security Suite sends ONLY the slug + version (e.g. \"contact-"
"form-7 / 5.3.1\") — no site URL, no admin email, no IP. The response is a "
"list of CVE-IDs that affect your version, with the version that fixes them."
msgstr ""
"Ein täglicher Abgleich mit der öffentlichen Datenbank von wpvulnerability."
"net (kostenlos, EU-gehostet, kein API-Key). Für jedes installierte Plugin "
"und Theme sendet Brainwerk Security Suite NUR den Slug + die Version (z. B. "
"„contact-form-7 / 5.3.1“) — keine Website-URL, keine Admin-E-Mail, keine IP. "
"Die Antwort ist eine Liste von CVE-IDs, die Ihre Version betreffen, samt der "
"Version, die sie behebt."

#: includes/class-shieldforge-admin-intros.php:149
msgid "Active vs inactive plugins"
msgstr "Aktive vs. inaktive Plugins"

#: includes/class-shieldforge-admin-intros.php:150
msgid ""
"Vulnerabilities on ACTIVE components are dangerous — fix immediately. "
"Vulnerabilities on INACTIVE plugins are usually unreachable but still worth "
"removing (less attack surface, fewer files to maintain). The dashboard "
"widget only nags about active critical ones to avoid alert fatigue."
msgstr ""
"Schwachstellen auf AKTIVEN Komponenten sind gefährlich — sofort patchen. "
"Schwachstellen auf INAKTIVEN Plugins sind meist unerreichbar, aber trotzdem "
"zu entfernen (weniger Angriffsfläche, weniger zu pflegen). Das Dashboard-"
"Widget mahnt nur bei aktiven kritischen, um Alarm-Müdigkeit zu vermeiden."

#: includes/class-shieldforge-admin-intros.php:151
msgid "CVSS scores explained"
msgstr "CVSS-Werte erklärt"

#: includes/class-shieldforge-admin-intros.php:152
msgid ""
"CVSS is a 0-10 severity score. 9.0+ = critical (often remote code "
"execution), 7.0-8.9 = high, 4.0-6.9 = medium, below 4.0 = low. Anything 7.0+ "
"on an active plugin should be patched this week, not \"soon\"."
msgstr ""
"CVSS ist ein Schweregrad-Score von 0–10. 9.0+ = kritisch (oft Remote Code "
"Execution), 7.0–8.9 = hoch, 4.0–6.9 = mittel, unter 4.0 = niedrig. Alles ab "
"7.0 bei einem aktiven Plugin sollte diese Woche gepatcht werden, nicht "
"„demnächst“."

#: includes/class-shieldforge-admin-intros.php:153
msgid "Disable the scan"
msgstr "Scan deaktivieren"

#: includes/class-shieldforge-admin-intros.php:154
msgid ""
"If you want fully air-gapped operation, untick \"Enable scanner\" below — no "
"outbound calls at all. Brainwerk Security Suite stays useful but you lose "
"the early-warning on plugin CVEs."
msgstr ""
"Wenn Sie einen komplett abgeschotteten Betrieb wollen, deaktivieren Sie "
"unten „Scanner aktivieren“ — dann gibt es überhaupt keine ausgehenden "
"Aufrufe. Brainwerk Security Suite bleibt nützlich, aber Sie verlieren die "
"Frühwarnung bei Plugin-CVEs."

#: includes/class-shieldforge-admin-intros.php:157
msgid ""
"Plugin / theme name with its slug below (the slug is what we send to the "
"vulnerability API)."
msgstr ""
"Plugin-/Theme-Name mit seinem Slug darunter (den Slug senden wir an die "
"Schwachstellen-API)."

#: includes/class-shieldforge-admin-intros.php:158
msgid ""
"The version installed on your site right now. Compare to \"Fixed in\" below "
"to see if you need to update."
msgstr ""
"Die aktuell auf Ihrer Website installierte Version. Vergleichen Sie mit "
"„Behoben in“ unten, um zu sehen, ob Sie aktualisieren müssen."

#: includes/class-shieldforge-admin-intros.php:159
msgid ""
"<code>active</code> (red dot) = currently in use — patch THIS WEEK. "
"<code>inactive</code> = installed but not running — not exploitable but "
"still worth removing."
msgstr ""
"<code>aktiv</code> (roter Punkt) = derzeit in Verwendung — DIESE WOCHE "
"patchen. <code>inaktiv</code> = installiert, aber nicht aktiv — nicht "
"ausnutzbar, sollte aber trotzdem entfernt werden."

#: includes/class-shieldforge-admin-intros.php:160
msgid ""
"Short name of the CVE. The badge next to it is the CVSS score (0–10): 9.0+ "
"critical, 7.0–8.9 high, 4.0–6.9 medium. \"No patch available\" means the "
"vendor has not released a fix yet."
msgstr ""
"Kurzname der CVE. Das Badge daneben ist der CVSS-Score (0–10): 9.0+ "
"kritisch, 7.0–8.9 hoch, 4.0–6.9 mittel. „Kein Patch verfügbar“ heißt, der "
"Hersteller hat noch keinen Fix veröffentlicht."

#: includes/class-shieldforge-admin-intros.php:161
msgid ""
"The plugin/theme version that fixes this CVE. Update to this version (or "
"newer) to close the hole."
msgstr ""
"Die Plugin-/Theme-Version, die diesen CVE behebt. Aktualisiere auf diese "
"Version (oder neuer), um die Lücke zu schließen."

#: includes/class-shieldforge-admin-intros.php:162
msgid ""
"Public CVE-IDs (clickable, opens the official advisory). EUVD = EU "
"Vulnerability Database mirror."
msgstr ""
"Öffentliche CVE-IDs (klickbar, öffnet die offizielle Meldung). EUVD = EU-"
"Schwachstellen-Datenbank-Mirror."

#: includes/class-shieldforge-admin-intros.php:168
msgid ""
"<strong>Spots logins that look unusual for a given user — without sending "
"data to any cloud.</strong> \"You normally log in from Vienna at 9am — this "
"3am attempt from Russia looks weird.\""
msgstr ""
"<strong>Erkennt Logins, die für einen bestimmten Benutzer ungewöhnlich "
"aussehen — ohne Daten an irgendeine Cloud zu senden.</strong> „Sie melden "
"sich normalerweise um 9 Uhr aus Wien an — dieser Versuch um 3 Uhr nachts aus "
"Russland sieht merkwürdig aus.“"

#: includes/class-shieldforge-admin-intros.php:170
msgid "How does it learn what's \"normal\"?"
msgstr "Wie lernt es, was „normal“ ist?"

#: includes/class-shieldforge-admin-intros.php:171
msgid ""
"After each successful login, Brainwerk Security Suite updates a small per-"
"user statistical baseline: which hours of the day you usually log in, which "
"IP family (residential / datacenter / mobile / unknown), and which type of "
"browser (modern / legacy / bot-like). The baseline becomes meaningful after "
"about 5 logins per user."
msgstr ""
"Nach jeder erfolgreichen Anmeldung aktualisiert Brainwerk Security Suite "
"eine kleine statistische Baseline pro Benutzer: zu welchen Tageszeiten du "
"dich normalerweise anmeldest, aus welcher IP-Familie (Privatanschluss / "
"Rechenzentrum / Mobil / unbekannt), und mit welchem Browser-Typ (modern / "
"alt / bot-artig). Die Baseline wird nach ca. 5 Anmeldungen pro Benutzer "
"aussagekräftig."

#: includes/class-shieldforge-admin-intros.php:172
msgid "How does scoring work?"
msgstr "Wie funktioniert das Scoring?"

#: includes/class-shieldforge-admin-intros.php:173
msgid ""
"Each new login is compared to the baseline using a Z-score (how far is this "
"from your normal pattern). A score of 0-100 is computed; above the alert "
"threshold the event is logged as severity HIGH and shown in the digest with "
"an explanation (\"logged in at 3am from a datacenter IP — your usual is "
"daytime from a residential IP\")."
msgstr ""
"Jeder neue Login wird per Z-Score mit der Baseline verglichen (wie weit "
"liegt das von Ihrem normalen Muster entfernt). Ein Score von 0–100 wird "
"berechnet; oberhalb der Alarmschwelle wird das Ereignis mit Schweregrad HIGH "
"protokolliert und im Digest mit einer Erklärung angezeigt („Login um 3 Uhr "
"nachts von einer Rechenzentrums-IP — üblich ist tagsüber von einer "
"Privatanschluss-IP“)."

#: includes/class-shieldforge-admin-intros.php:174
msgid "No cloud, no AI"
msgstr "Keine Cloud, keine KI"

#: includes/class-shieldforge-admin-intros.php:175
msgid ""
"This is pure local statistics. No machine learning, no model server, no data "
"leaves the site. Explainable: every flagged event tells you which signal "
"triggered it."
msgstr ""
"Reine lokale Statistik. Kein Machine Learning, kein Modellserver, keine "
"Daten verlassen die Seite. Erklärbar: jedes markierte Event sagt dir, "
"welches Signal es ausgelöst hat."

#: includes/class-shieldforge-admin-intros.php:181
msgid ""
"<strong>Who changed what, when.</strong> A complete trail of post edits, "
"user changes, plugin/theme updates, and security-relevant setting changes. "
"Useful for incident response and DSGVO Art. 32 compliance."
msgstr ""
"<strong>Wer hat was wann geändert.</strong> Eine vollständige Spur von "
"Beitrags-Änderungen, Benutzer-Änderungen, Plugin/Theme/Core-Updates und "
"sicherheitsrelevanten Einstellungs-Änderungen. Nützlich für Incident "
"Response und DSGVO Art. 32 Compliance."

#: includes/class-shieldforge-admin-intros.php:183
msgid "What gets recorded?"
msgstr "Was wird aufgezeichnet?"

#: includes/class-shieldforge-admin-intros.php:184
msgid ""
"Post edits (who edited which post, what fields changed — but NOT the post "
"body, for privacy + log size). User changes (someone updated their email, "
"role, password). Plugin/theme/core updates. Security-sensitive options "
"(siteurl, admin_email, \"anyone can register\", default-role-for-new-users, "
"network site_admins)."
msgstr ""
"Beitragsbearbeitungen (wer welchen Beitrag bearbeitet hat und welche Felder "
"sich geändert haben — aber NICHT der Beitragsinhalt, aus Datenschutz- und "
"Log-Größen-Gründen). Benutzeränderungen (jemand hat E-Mail, Rolle oder "
"Passwort geändert). Plugin-/Theme-/Core-Updates. Sicherheitsrelevante "
"Optionen (siteurl, admin_email, „Jeder kann sich registrieren“, "
"Standardrolle für neue Benutzer, Netzwerk-site_admins)."

#: includes/class-shieldforge-admin-intros.php:185
msgid "What does NOT get recorded?"
msgstr "Was wird NICHT aufgezeichnet?"

#: includes/class-shieldforge-admin-intros.php:186
msgid ""
"The actual content of post edits (avoid leaking drafts into logs). Password "
"values (only \"[changed]\" markers). Hundreds of harmless WordPress option-"
"write spam (transients, cache markers). Auto-drafts and revisions and nav-"
"menu items (skipped by default — too noisy)."
msgstr ""
"Den eigentlichen Inhalt von Beitragsbearbeitungen (damit keine Entwürfe in "
"die Logs gelangen). Passwortwerte (nur „[changed]“-Markierungen). Hunderte "
"harmlose WordPress-Options-Schreibvorgänge (Transients, Cache-Marker). Auto-"
"Drafts, Revisionen und Nav-Menü-Einträge (standardmäßig übersprungen — zu "
"viel Rauschen)."

#: includes/class-shieldforge-admin-intros.php:187
msgid "When is this useful?"
msgstr "Wann ist das nützlich?"

#: includes/class-shieldforge-admin-intros.php:188
msgid ""
"Three scenarios: (1) Something broke yesterday — the audit log shows what "
"was changed. (2) Compliance — DSGVO Art. 32 requires \"measures for security "
"of processing\" and a paper trail is one. (3) Incident response after a hack "
"— see exactly what the attacker touched after they got in."
msgstr ""
"Drei Szenarien: (1) Gestern ist etwas kaputtgegangen — das Audit-Log zeigt, "
"was geändert wurde. (2) Compliance — DSGVO Art. 32 verlangt „Maßnahmen zur "
"Sicherheit der Verarbeitung“, und ein Nachweisprotokoll ist eine davon. (3) "
"Incident Response nach einem Hack — sehen Sie genau, was der Angreifer nach "
"dem Eindringen angefasst hat."

#: includes/class-shieldforge-admin-intros.php:191
msgid "UTC timestamp of when the change happened."
msgstr "UTC-Zeitstempel, wann die Änderung passiert ist."

#: includes/class-shieldforge-admin-intros.php:192
msgid ""
"The user who made the change (clickable — links to the user-edit screen). "
"\"system / cron\" means it was an automated WP process, not a person."
msgstr ""
"Der Benutzer, der die Änderung vorgenommen hat (klickbar — verlinkt auf die "
"Benutzer-Bearbeitungsseite). „system / cron“ bedeutet: ein automatisierter "
"WP-Prozess, keine Person."

#: includes/class-shieldforge-admin-intros.php:193
msgid ""
"Type of change: <code>post updated</code>, <code>user profile updated</"
"code>, <code>option changed</code>, <code>plugin activated</code>, etc."
msgstr ""
"Art der Änderung: <code>post updated</code>, <code>user profile updated</"
"code>, <code>option changed</code>, <code>plugin activated</code> usw."

#: includes/class-shieldforge-admin-intros.php:194
msgid ""
"The specific object changed: post title and ID, plugin file, option name "
"with old→new values. For password and similar sensitive fields you only see "
"\"[changed]\"."
msgstr ""
"Das konkret geänderte Objekt: Beitragstitel und ID, Plugin-Datei, Options-"
"Name mit alt→neu-Werten. Bei Passwörtern und ähnlich sensiblen Feldern sehen "
"Sie nur „[changed]“."

#: includes/class-shieldforge-admin-intros.php:195
msgid ""
"Source IP of the change (anonymized to /24 by default). Useful when "
"investigating \"who did this from where\"."
msgstr ""
"Quell-IP der Änderung (standardmäßig auf /24 anonymisiert). Nützlich bei der "
"Frage „wer hat das von wo aus gemacht“."

#: includes/class-shieldforge-admin-intros.php:201
msgid ""
"<strong>The raw event stream — every login, block, anomaly, file change, "
"vulnerability finding.</strong> Where you go when you need to dig into "
"\"what happened at 03:47 last Tuesday\"."
msgstr ""
"<strong>Der rohe Ereignis-Stream — jeder Login, jede Sperre, jede Anomalie, "
"jede Dateiänderung, jeder Schwachstellen-Fund.</strong> Hierhin gehen Sie, "
"wenn Sie herausfinden müssen, „was letzten Dienstag um 03:47 passiert ist“."

#: includes/class-shieldforge-admin-intros.php:203
msgid "Filter and search"
msgstr "Filtern und suchen"

#: includes/class-shieldforge-admin-intros.php:204
msgid ""
"You can narrow the list by event type, severity, IP, username, or date "
"range. Click \"Block this IP\" or \"Unblock\" inline — no need to switch "
"tabs. The default view is the latest 50; pagination shows older entries."
msgstr ""
"Sie können die Liste nach Ereignistyp, Schweregrad, IP, Benutzername oder "
"Zeitraum eingrenzen. Klicken Sie direkt in der Zeile auf „IP blockieren“ "
"oder „Entsperren“ — kein Tab-Wechsel nötig. Die Standardansicht zeigt die "
"letzten 50; ältere Einträge erreichen Sie über die Seitennavigation."

#: includes/class-shieldforge-admin-intros.php:205
msgid "How long are logs kept?"
msgstr "Wie lange werden Logs aufbewahrt?"

#: includes/class-shieldforge-admin-intros.php:206
msgid ""
"Configurable retention, default 30 days. A daily cleanup cron drops anything "
"older. If you want to keep them longer for compliance, increase the "
"retention setting on the Privacy / GDPR tab."
msgstr ""
"Konfigurierbare Aufbewahrungszeit, Standard 30 Tage. Ein täglicher Cleanup-"
"Cron löscht alles Ältere. Wenn du sie für Compliance länger behalten willst, "
"erhöhe die Aufbewahrung im Datenschutz/DSGVO-Tab."

#: includes/class-shieldforge-admin-intros.php:207
msgid "Audit-only view?"
msgstr "Nur-Audit-Ansicht?"

#: includes/class-shieldforge-admin-intros.php:208
msgid ""
"For who-changed-what queries (post edits, user changes, plugin updates), use "
"the Audit tab — it shows the same data filtered to just the audit-trail "
"events with prettier per-event-type rendering."
msgstr ""
"Für „wer-änderte-was\\\\\\\"-Abfragen (Beitrags-/Benutzer-/Plugin-"
"Änderungen) nutze den Audit-Tab — der zeigt die gleichen Daten gefiltert auf "
"nur die Audit-Trail-Events, mit hübscherem Rendering pro Event-Typ."

#: includes/class-shieldforge-admin-intros.php:211
msgid ""
"Server timestamp in UTC. Note: NOT in your local timezone — this avoids "
"ambiguity when investigating across time zones / daylight savings."
msgstr ""
"Server-Zeitstempel in UTC. Hinweis: NICHT in deiner lokalen Zeitzone — das "
"vermeidet Mehrdeutigkeit beim Untersuchen über Zeitzonen / Sommerzeit hinweg."

#: includes/class-shieldforge-admin-intros.php:212
msgid ""
"What happened. Common ones: <code>login_success</code>, <code>login_failure</"
"code>, <code>login_blocked</code> (BF lockout active), "
"<code>bruteforce_lockout</code> (a new IP just got blocked), "
"<code>probing_404</code> (bot tried a known sensitive URL), "
"<code>anomaly_detected</code> (login that doesn't match the user's usual "
"pattern), <code>hardening_block</code> (REST/honeypot/geo-block fired), "
"<code>file_added/changed/missing</code>, <code>malware_suspect</code>, "
"<code>vulnerability_found</code>, <code>2fa_required/passed/failed</code>."
msgstr ""
"Was passiert ist. Häufige Typen: <code>login_success</code>, "
"<code>login_failure</code>, <code>login_blocked</code> (BF-Sperre aktiv), "
"<code>bruteforce_lockout</code> (eine neue IP wurde gerade blockiert), "
"<code>probing_404</code> (Bot hat eine bekannte sensible URL probiert), "
"<code>anomaly_detected</code> (Login passt nicht zum üblichen Muster des "
"Benutzers), <code>hardening_block</code> (REST/Honeypot/Geo-Block "
"ausgelöst), <code>file_added/changed/missing</code>, <code>malware_suspect</"
"code>, <code>vulnerability_found</code>, <code>2fa_required/passed/failed</"
"code>."

#: includes/class-shieldforge-admin-intros.php:213
msgid ""
"<code>info</code> = normal activity, <code>warn</code> = worth a glance, "
"<code>high</code> = important investigate, <code>critical</code> = fire-on-"
"the-roof. Severity decides which events trigger real-time email and "
"dashboard nags."
msgstr ""
"<code>info</code> = normale Aktivität, <code>warn</code> = einen Blick wert, "
"<code>high</code> = sollte untersucht werden, <code>critical</code> = Feuer "
"am Dach. Der Schweregrad entscheidet, welche Ereignisse Echtzeit-Mails und "
"Dashboard-Hinweise auslösen."

#: includes/class-shieldforge-admin-intros.php:214
msgid ""
"Source IP of the request. Anonymized to /24 (IPv4) or /64 (IPv6) by default "
"— turn that off in Privacy / GDPR if you need full IPs for forensics."
msgstr ""
"Quell-IP der Anfrage. Standardmäßig auf /24 (IPv4) oder /64 (IPv6) "
"anonymisiert — bei Bedarf für vollständige IPs in der Forensik unter "
"Datenschutz / DSGVO ausschalten."

#: includes/class-shieldforge-admin-intros.php:215
msgid ""
"Username being attempted (for login events) or the user who triggered the "
"event. May be hashed if pseudonymization is enabled."
msgstr ""
"Versuchter Benutzername (bei Login-Ereignissen) oder der Nutzer, der das "
"Ereignis ausgelöst hat. Kann gehasht sein, wenn Pseudonymisierung aktiv ist."

#: includes/class-shieldforge-admin-intros.php:216
msgid "Context"
msgstr "Kontext"

#: includes/class-shieldforge-admin-intros.php:216
msgid ""
"JSON blob with event-specific extras: paths for file events, CVE IDs for "
"vulnerability events, the rule that matched for malware, the score breakdown "
"for anomalies. The \"_v\" field is the plugin version that wrote the event — "
"useful when triaging post-update bugs."
msgstr ""
"JSON-Blob mit ereignisspezifischen Extras: Pfade bei Datei-Ereignissen, CVE-"
"IDs bei Schwachstellen-Ereignissen, die getroffene Regel bei Malware, die "
"Score-Aufschlüsselung bei Anomalien. Das Feld „_v“ ist die Plugin-Version, "
"die das Ereignis geschrieben hat — nützlich beim Triagieren von Bugs nach "
"Updates."

#: includes/class-shieldforge-admin-intros.php:217
msgid ""
"\"Block this IP\" creates a manual firewall block on the IP for the "
"configured lockout duration. \"Unblock\" removes an existing block. No "
"\"delete event\" — events stay until the retention cutoff."
msgstr ""
"„IP blockieren“ erstellt eine manuelle Firewall-Sperre für die IP für die "
"konfigurierte Sperrdauer. „Entsperren“ entfernt eine bestehende Sperre. Kein "
"„Ereignis löschen“ — Ereignisse bleiben bis zum Ablauf der "
"Aufbewahrungsfrist."

#: includes/class-shieldforge-admin-intros.php:223
msgid ""
"<strong>Email alerts on critical events + a daily summary.</strong> The "
"daily digest is the single most important email — pure ASCII, works with "
"every mail provider, and tells you in 30 seconds if something needs "
"attention."
msgstr ""
"<strong>E-Mail-Benachrichtigungen bei kritischen Events + tägliche "
"Zusammenfassung.</strong> Die tägliche Zusammenfassung ist die wichtigste "
"einzelne E-Mail — reines ASCII, funktioniert mit jedem Mail-Anbieter, und "
"sagt dir in 30 Sekunden ob etwas Aufmerksamkeit braucht."

#: includes/class-shieldforge-admin-intros.php:225
msgid "Real-time alerts"
msgstr "Echtzeit-Alarme"

#: includes/class-shieldforge-admin-intros.php:226
msgid ""
"Sent immediately when critical events fire: brute-force lockouts, new admin "
"users, anomalous logins, malware-pattern hits. Quiet hours can suppress non-"
"critical alerts overnight, with critical ones overriding the silence."
msgstr ""
"Sofort gesendet wenn kritische Events feuern: Brute-Force-Sperren, neue "
"Admin-Benutzer, anomale Logins, Malware-Muster-Treffer. Ruhezeiten können "
"nicht-kritische Alarme nachts unterdrücken, kritische überstimmen die "
"Ruhezeit."

#: includes/class-shieldforge-admin-intros.php:228
msgid ""
"One email per day with the threat score, 24h-vs-7d trend, top attacker IPs, "
"top targeted usernames, top probing patterns, vulnerable active components, "
"and an ASCII heatmap of the last 24 hours. Pure-ASCII so it survives every "
"mail pipeline (php mail / classic SMTP / OAuth-SMTP / Microsoft Graph) "
"without character corruption."
msgstr ""
"Eine E-Mail pro Tag mit Threat-Score, 24h-vs-7d-Trend, Top-Angreifer-IPs, "
"Top-angegriffenen Benutzernamen, Top-Probing-Mustern, verwundbaren aktiven "
"Komponenten und einer ASCII-Heatmap der letzten 24 Stunden. Reines ASCII "
"damit sie jede Mail-Pipeline (php mail / klassisches SMTP / OAuth-SMTP / "
"Microsoft Graph) ohne Zeichen-Korruption übersteht."

#: includes/class-shieldforge-admin-intros.php:229
msgid "Where is this digest from?"
msgstr "Woher kommt diese Zusammenfassung?"

#: includes/class-shieldforge-admin-intros.php:230
msgid ""
"Same data the dashboard widget shows, formatted for inbox consumption. The "
"bottom of every email tells the recipient how to disable it — important so "
"you don't train people to ignore them."
msgstr ""
"Dieselben Daten wie im Dashboard-Widget, formatiert für das Postfach. Am "
"Ende jeder E-Mail steht, wie der Empfänger sie deaktivieren kann — wichtig, "
"damit Sie den Leuten nicht antrainieren, sie zu ignorieren."

#: includes/class-shieldforge-admin-intros.php:236
msgid ""
"<strong>Network-wide settings + per-site overrides for WordPress Multisite "
"installations.</strong> Configure once at the network level, override only "
"where needed."
msgstr ""
"<strong>Netzwerk-weite Einstellungen + pro-Site-Überschreibungen für "
"WordPress-Multisite-Installationen.</strong> Einmal auf Netzwerk-Ebene "
"konfigurieren, nur wo nötig überschreiben."

#: includes/class-shieldforge-admin-intros.php:238
msgid "How configuration cascades"
msgstr "Wie die Konfiguration kaskadiert"

#: includes/class-shieldforge-admin-intros.php:239
msgid ""
"On Multisite, Brainwerk Security Suite stores defaults in network-options "
"(sitemeta), and any setting saved at a single-site level overrides them just "
"for that site. Most network admins set strict defaults and let nothing "
"override; agencies that host clients on subsites can give each client their "
"own thresholds."
msgstr ""
"Auf Multisite speichert Brainwerk Security Suite Defaults in den Netzwerk-"
"Optionen (sitemeta); jede Einstellung die auf Einzel-Site-Ebene gespeichert "
"wird, überschreibt sie nur für diese Site. Die meisten Netzwerk-Admins "
"setzen strenge Defaults ohne Override; Agenturen die Kunden auf Subsites "
"hosten können jedem Kunden eigene Schwellwerte geben."

#: includes/class-shieldforge-admin-intros.php:240
msgid "Aggregate dashboard"
msgstr "Aggregat-Dashboard"

#: includes/class-shieldforge-admin-intros.php:241
msgid ""
"The cross-site stats appear in the network-admin dashboard widget — you see "
"\"12 lockouts across 7 sites in the last 24h\" instead of 12 separate single-"
"site widgets."
msgstr ""
"Die Website-übergreifenden Statistiken erscheinen im Dashboard-Widget der "
"Netzwerkverwaltung — Sie sehen „12 Sperren über 7 Websites in den letzten "
"24h“ statt 12 separater Einzel-Widgets."

#: includes/class-shieldforge-admin-intros.php:242
msgid "Single-site install?"
msgstr "Einzel-Site-Installation?"

#: includes/class-shieldforge-admin-intros.php:243
msgid ""
"This tab is only meaningful on Multisite. On a single-site install you can "
"ignore it — every setting saves to that one site's options."
msgstr ""
"Dieser Tab ist nur auf Multisite relevant. Auf einer Einzel-Site-"
"Installation können Sie ihn ignorieren — jede Einstellung wird in den "
"Optionen dieser einen Website gespeichert."

#: includes/class-shieldforge-admin-intros.php:249
msgid ""
"<strong>What data Brainwerk Security Suite stores about your visitors, and "
"your DSGVO/GDPR controls for it.</strong> This is the page you copy-paste "
"from when updating your site's privacy policy."
msgstr ""
"<strong>Welche Daten Brainwerk Security Suite über Ihre Besucher speichert — "
"und Ihre DSGVO-Kontrollen dafür.</strong> Das ist die Seite, von der Sie "
"kopieren, wenn Sie die Datenschutzerklärung Ihrer Website aktualisieren."

#: includes/class-shieldforge-admin-intros.php:251
msgid "Default-on privacy"
msgstr "Datenschutz von Anfang an"

#: includes/class-shieldforge-admin-intros.php:252
msgid ""
"IP anonymization is on by default — IPv4 addresses are stored as /24 (e.g. "
"1.2.3.0), IPv6 as /64. Username pseudonymization is off by default but can "
"be turned on if you want only hashed usernames in the log. Log retention is "
"30 days; older entries are auto-deleted."
msgstr ""
"IP-Anonymisierung ist standardmäßig aktiv — IPv4-Adressen werden als /24 "
"gespeichert (z.B. 1.2.3.0), IPv6 als /64. Benutzernamen-Pseudonymisierung "
"ist standardmäßig aus, kann aber aktiviert werden wenn du nur gehashte "
"Benutzernamen im Log willst. Log-Aufbewahrung 30 Tage; ältere Einträge "
"werden auto-gelöscht."

#: includes/class-shieldforge-admin-intros.php:253
msgid "Privacy-policy snippet generator"
msgstr "Datenschutz-Text-Generator"

#: includes/class-shieldforge-admin-intros.php:254
msgid ""
"The generator produces ready-to-paste DE/EN text describing what Brainwerk "
"Security Suite stores and for how long. Copy it into your "
"\"Datenschutzerklärung\" / \"Privacy Policy\" page so you have an honest, "
"accurate disclosure."
msgstr ""
"Der Generator erzeugt fertigen DE/EN-Text, der beschreibt, was Brainwerk "
"Security Suite speichert und wie lange. Kopieren Sie ihn in Ihre Seite "
"„Datenschutzerklärung“ / „Privacy Policy“, damit Sie eine ehrliche, korrekte "
"Auskunft haben."

#: includes/class-shieldforge-admin-intros.php:255
msgid "External services"
msgstr "Externe Dienste"

#: includes/class-shieldforge-admin-intros.php:256
msgid ""
"The free plugin makes ONE outbound call: the daily vulnerability check sends "
"slug+version of installed plugins/themes to wpvulnerability.net. Nothing "
"else leaves your server. You can disable the scanner under \"Vulnerabilities "
"→ Settings\" if you prefer fully air-gapped operation."
msgstr ""
"Das kostenlose Plugin macht EINEN ausgehenden Aufruf: Die tägliche "
"Schwachstellenprüfung sendet Slug+Version der installierten Plugins/Themes "
"an wpvulnerability.net. Sonst verlässt nichts Ihren Server. Sie können den "
"Scanner unter „Schwachstellen → Einstellungen“ deaktivieren, wenn Sie einen "
"komplett abgeschotteten Betrieb bevorzugen."

#: includes/class-shieldforge-admin-intros.php:262
msgid ""
"<strong>Manual one-shot actions.</strong> Send a test email, force a log "
"cleanup, retroactively anonymize old log entries — things you do once or "
"twice, not in daily operation."
msgstr ""
"<strong>Manuelle Einmal-Aktionen.</strong> Test-E-Mail senden, Log-Cleanup "
"erzwingen, alte Log-Einträge nachträglich anonymisieren — Dinge die du ein- "
"oder zweimal machst, nicht täglich."

#: includes/class-shieldforge-admin-intros.php:264
msgid "Test the alert email"
msgstr "Alarm-E-Mail testen"

#: includes/class-shieldforge-admin-intros.php:265
msgid ""
"Sends a sample notification to the address configured under Notifications. "
"Use this to verify the email pipeline works (SMTP, Office 365 Graph, "
"whatever you use) BEFORE a real attack — better to find out the email goes "
"to spam now than during an incident."
msgstr ""
"Sendet eine Beispiel-Benachrichtigung an die unter Benachrichtigungen "
"konfigurierte Adresse. Nutze das um zu prüfen ob deine E-Mail-Pipeline "
"(SMTP, Office 365 Graph, was auch immer) funktioniert — BEVOR ein echter "
"Angriff kommt. Besser jetzt herausfinden dass die Mail im Spam landet als "
"während eines Vorfalls."

#: includes/class-shieldforge-admin-intros.php:266
msgid "Cleanup logs now"
msgstr "Logs jetzt aufräumen"

#: includes/class-shieldforge-admin-intros.php:267
msgid ""
"Manually trigger the daily retention-cleanup. Useful right after you reduced "
"the retention setting and want the older entries gone immediately."
msgstr ""
"Löse das tägliche Retention-Cleanup manuell aus. Nützlich gleich nachdem du "
"die Retention reduziert hast und ältere Einträge sofort weg sollen."

#: includes/class-shieldforge-admin-intros.php:268
msgid "Retroactive IP anonymization"
msgstr "Rückwirkende IP-Anonymisierung"

#: includes/class-shieldforge-admin-intros.php:269
msgid ""
"If you turned anonymization ON after the plugin had already been collecting "
"raw IPs, this rewrites the historical entries to the anonymized form. One-"
"time operation — safe to run, irreversible."
msgstr ""
"Wenn du Anonymisierung erst aktiviert hast nachdem das Plugin schon rohe IPs "
"sammelte, schreibt das die historischen Einträge auf die anonymisierte Form "
"um. Einmalige Operation — sicher auszuführen, unwiderruflich."

#: includes/class-shieldforge-admin-intros.php:275
msgid ""
"<strong>The \"we think we've been hacked — now what?\" module.</strong> "
"Forensic triage, evidence preservation, staged lockdown and a written "
"incident report. It detects, preserves and reports — it never auto-deletes "
"anything."
msgstr ""
"<strong>Das „Wir glauben, wir wurden gehackt — was jetzt?“-Modul.</strong> "
"Forensische Triage, Beweissicherung, gestufter Lockdown und ein "
"schriftlicher Vorfalls-Report. Es erkennt, sichert und meldet — es löscht "
"niemals automatisch etwas."

#: includes/class-shieldforge-admin-intros.php:277
msgid "What is an \"incident\" here?"
msgstr "Was ist hier ein „Vorfall“?"

#: includes/class-shieldforge-admin-intros.php:278
msgid ""
"A suspected compromise: a web shell finding, an unexplained admin user, "
"files changing without an update. Instead of panicking, you start a "
"structured response from this tab: collect the facts, secure the evidence, "
"optionally restrict the site, and get a report you can hand to your host, "
"your boss, or the data-protection officer."
msgstr ""
"Ein vermuteter Einbruch: ein Web-Shell-Fund, ein unerklärlicher Admin-"
"Benutzer, Dateien, die sich ohne Update ändern. Statt in Panik zu geraten, "
"starten Sie von diesem Tab aus eine strukturierte Reaktion: Fakten sammeln, "
"Beweise sichern, die Website optional einschränken — und einen Report "
"erhalten, den Sie Ihrem Hoster, Ihrem Chef oder dem Datenschutzbeauftragten "
"übergeben können."

#: includes/class-shieldforge-admin-intros.php:279
msgid "Why no automatic cleanup?"
msgstr "Warum keine automatische Bereinigung?"

#: includes/class-shieldforge-admin-intros.php:280
msgid ""
"Deliberate design decision: every destructive action is human-gated. "
"Automated \"cleaners\" routinely delete the evidence you need to understand "
"HOW the attacker got in — and if you don't know that, they'll be back "
"through the same door. This module preserves first, and lets YOU decide what "
"to remove."
msgstr ""
"Bewusste Design-Entscheidung: Jede destruktive Aktion erfordert menschliche "
"Freigabe. Automatische „Cleaner“ löschen regelmäßig genau die Beweise, die "
"Sie brauchen, um zu verstehen, WIE der Angreifer hereingekommen ist — und "
"wenn Sie das nicht wissen, kommt er durch dieselbe Tür wieder. Dieses Modul "
"sichert zuerst und lässt SIE entscheiden, was entfernt wird."

#: includes/class-shieldforge-admin-intros.php:281
msgid "Current status of the module"
msgstr "Aktueller Status des Moduls"

#: includes/class-shieldforge-admin-intros.php:282
msgid ""
"The foundation is live: incident records, the opt-in toggle and the manual "
"audit trigger. Automated triggers, the forensic engine and the staged "
"lockdown ship in upcoming phases — each one opt-in. Until then the tab is "
"safe to leave disabled."
msgstr ""
"Das Fundament ist live: Vorfalls-Datensätze, der Opt-in-Schalter und der "
"manuelle Audit-Trigger. Automatische Auslöser, die Forensik-Engine und der "
"gestufte Lockdown folgen in kommenden Phasen — jeweils als Opt-in. Bis dahin "
"kann der Tab gefahrlos deaktiviert bleiben."

#: includes/class-shieldforge-admin-intros.php:288
msgid ""
"<strong>Optional, privacy-preserving attack-data sharing between Brainwerk "
"Security Suite sites.</strong> Your site reports anonymized attacker "
"indicators; in return it receives a signed feed of threats seen across the "
"network — including virtual-patch firewall rules."
msgstr ""
"<strong>Optionaler, datenschutzfreundlicher Austausch von Angriffsdaten "
"zwischen Brainwerk-Security-Suite-Websites.</strong> Ihre Website meldet "
"anonymisierte Angreifer-Indikatoren; im Gegenzug erhält sie einen signierten "
"Feed mit Bedrohungen, die im gesamten Netzwerk beobachtet wurden — inklusive "
"Virtual-Patch-Firewall-Regeln."

#: includes/class-shieldforge-admin-intros.php:290
msgid "What exactly leaves my server?"
msgstr "Was genau verlässt meinen Server?"

#: includes/class-shieldforge-admin-intros.php:291
msgid ""
"Only verified facts about blocked attacks: an irreversibly hashed IP "
"indicator (rotating weekly salt — no raw IPs, not even reversible by us), "
"the attack category, the matched rule, HTTP method and status. No URLs with "
"visitor data, no usernames, no e-mail addresses. The \"What was sent\" audit "
"list on this tab shows every single event, so you can verify this claim "
"yourself."
msgstr ""
"Nur verifizierte Fakten über blockierte Angriffe: ein irreversibel gehashter "
"IP-Indikator (wöchentlich rotierender Salt — keine Roh-IPs, nicht einmal für "
"uns umkehrbar), die Angriffskategorie, die getroffene Regel, HTTP-Methode "
"und Status. Keine URLs mit Besucherdaten, keine Benutzernamen, keine E-Mail-"
"Adressen. Die Audit-Liste „Was gesendet wurde“ auf diesem Tab zeigt jedes "
"einzelne Ereignis — Sie können diese Aussage also selbst überprüfen."

#: includes/class-shieldforge-admin-intros.php:292
msgid "What do I get back?"
msgstr "Was bekomme ich zurück?"

#: includes/class-shieldforge-admin-intros.php:293
msgid ""
"A cryptographically signed (Ed25519) intel feed: attacker indicators "
"observed on multiple sites, and curated firewall rules (\"virtual patches\") "
"for actively exploited vulnerabilities. The plugin verifies the signature "
"against a pinned public key before applying anything — a tampered or spoofed "
"feed is rejected outright (fail-closed)."
msgstr ""
"Ein kryptographisch signierter (Ed25519) Intel-Feed: Angreifer-Indikatoren, "
"die auf mehreren Websites beobachtet wurden, sowie kuratierte Firewall-"
"Regeln („Virtual Patches“) für aktiv ausgenutzte Schwachstellen. Das Plugin "
"verifiziert die Signatur gegen einen gepinnten öffentlichen Schlüssel, bevor "
"es irgendetwas anwendet — ein manipulierter oder gefälschter Feed wird "
"kategorisch abgelehnt (fail-closed)."

#: includes/class-shieldforge-admin-intros.php:294
msgid "Is this on by default?"
msgstr "Ist das standardmäßig an?"

#: includes/class-shieldforge-admin-intros.php:295
msgid ""
"No. Everything here is opt-in: sharing is off until you enable it, and IP-"
"blocking based on the received feed is a second, separate opt-in. Applying "
"the virtual-patch rules is on once you join, because that's the main benefit "
"and carries no privacy cost."
msgstr ""
"Nein. Alles hier ist Opt-in: Das Teilen ist aus, bis Sie es aktivieren, und "
"IP-Blocking auf Basis des empfangenen Feeds ist ein zweites, separates Opt-"
"in. Das Anwenden der Virtual-Patch-Regeln ist nach dem Beitritt an, weil das "
"der Hauptnutzen ist und keine Datenschutz-Kosten verursacht."

#: includes/class-shieldforge-admin-intros.php:296
msgid "EU hosting"
msgstr "EU-Hosting"

#: includes/class-shieldforge-admin-intros.php:297
msgid ""
"The central endpoint is operated on EU infrastructure under GDPR. Retention "
"on the server is time-limited; indicators age out automatically."
msgstr ""
"Der zentrale Endpoint wird auf EU-Infrastruktur unter der DSGVO betrieben. "
"Die Aufbewahrung auf dem Server ist zeitlich begrenzt; Indikatoren laufen "
"automatisch ab."

#: includes/class-shieldforge-admin-intros.php:303
msgid ""
"<strong>Nine self-contained extra modules, each with its own toggle — all "
"OFF by default.</strong> Pwned-password check, extra security headers, local "
"CAPTCHA, live traffic view, core file compare, privacy dashboard, trusted "
"devices, magic login links, and the Web Application Firewall."
msgstr ""
"<strong>Neun eigenständige Zusatz-Module, jedes mit eigenem Schalter — alle "
"standardmäßig AUS.</strong> Pwned-Passwort-Check, zusätzliche Security-"
"Header, lokales CAPTCHA, Live-Traffic-Ansicht, Core-Datei-Vergleich, "
"Datenschutz-Dashboard, vertrauenswürdige Geräte, Magic-Login-Links und die "
"Web Application Firewall."

#: includes/class-shieldforge-admin-intros.php:305
msgid "Why a separate page?"
msgstr "Warum eine eigene Seite?"

#: includes/class-shieldforge-admin-intros.php:306
msgid ""
"These optional modules add extra layers of protection — each is off by "
"default. Each card on this page is one module — a toggle, its settings, and "
"where applicable a small data view. Enable only what you need; every module "
"you leave off costs zero performance."
msgstr ""

#: includes/class-shieldforge-admin-intros.php:307
msgid "Which ones are worth turning on first?"
msgstr "Welche lohnt es sich zuerst zu aktivieren?"

#: includes/class-shieldforge-admin-intros.php:308
msgid ""
"For most sites: the WAF (blocks SQL-injection, XSS and traversal patterns "
"before WordPress processes them — start with paranoia level 1), the Pwned-"
"password check (rejects passwords that appeared in public breaches, checked "
"via k-anonymity — the password itself never leaves your server), and the "
"local CAPTCHA (pure-PHP arithmetic puzzle, no Google services, no consent "
"banner needed)."
msgstr ""
"Für die meisten Websites: die WAF (blockiert SQL-Injection-, XSS- und "
"Traversal-Muster, bevor WordPress sie verarbeitet — mit Paranoia-Level 1 "
"starten), der Pwned-Passwort-Check (lehnt Passwörter ab, die in öffentlichen "
"Leaks aufgetaucht sind, geprüft per k-Anonymity — das Passwort selbst "
"verlässt Ihren Server nie) und das lokale CAPTCHA (reines PHP-Rechenrätsel, "
"keine Google-Dienste, kein Consent-Banner nötig)."

#: includes/class-shieldforge-admin-intros.php:309
msgid "Anything with lockout potential?"
msgstr "Gibt es etwas mit Aussperr-Potenzial?"

#: includes/class-shieldforge-admin-intros.php:310
msgid ""
"The WAF on a high paranoia level can block legitimate requests of unusual "
"plugins — watch the Firewall tab after enabling and lower the level if you "
"see false positives. Magic login links replace passwords with e-mailed one-"
"time links; make sure your site can reliably send mail before relying on "
"them."
msgstr ""
"Die WAF kann auf einem hohen Paranoia-Level legitime Requests ungewöhnlicher "
"Plugins blockieren — beobachten Sie nach dem Aktivieren den Firewall-Tab und "
"senken Sie das Level, wenn Sie False Positives sehen. Magic-Login-Links "
"ersetzen Passwörter durch per E-Mail versandte Einmal-Links; stellen Sie "
"sicher, dass Ihre Website zuverlässig Mails versenden kann, bevor Sie sich "
"darauf verlassen."

#: includes/class-shieldforge-admin-intros.php:316
msgid ""
"<strong>Upgrade to Brainwerk Security Suite Pro.</strong> The free plugin "
"works on its own — Pro adds WebAuthn / Passkeys, geo-blocking, EU-hosted "
"cloud threat intel, AI-assisted incident analysis (BYOK Mistral or self-"
"hosted Ollama), Slack/Discord/Telegram/Teams notifications, multisite "
"aggregate dashboard, and white-label mode."
msgstr ""
"<strong>Upgrade auf Brainwerk Security Suite Pro.</strong> Das kostenlose "
"Plugin funktioniert eigenständig — Pro ergänzt WebAuthn / Passkeys, Geo-"
"Blocking, EU-gehostete Cloud Threat Intel, KI-gestützte Vorfallsanalyse "
"(BYOK Mistral oder selbst gehostetes Ollama), Slack-/Discord-/Telegram-/"
"Teams-Benachrichtigungen, Multisite-Aggregat-Dashboard und White-Label-Modus."

#: includes/class-shieldforge-admin-intros.php:318
msgid "Where do I get Pro?"
msgstr "Wo bekomme ich Pro?"

#: includes/class-shieldforge-admin-intros.php:319
msgid ""
"From security-suite.brainwerk.at. Brainwerk Security Suite Pro is a separate "
"plugin (.zip) that you install alongside this free one — license activation "
"happens inside the Pro plugin, no key has to be entered here."
msgstr ""

#: includes/class-shieldforge-admin-intros.php:320
msgid "Pricing model"
msgstr "Preismodell"

#: includes/class-shieldforge-admin-intros.php:321
msgid ""
"Per-installation tiers (1 site / 5 sites / unlimited). Annual subscription "
"with continued updates and priority support. Sold through Freemius — EU-"
"friendly checkout, full GDPR documentation."
msgstr ""
"Staffeln pro Installation (1 Website / 5 Websites / unbegrenzt). "
"Jahresabonnement mit fortlaufenden Updates und Priority-Support. Verkauf "
"über Freemius — EU-freundlicher Checkout, vollständige DSGVO-Dokumentation."

#: includes/class-shieldforge-admin-intros.php:360
msgid "Read more about what this tool is for"
msgstr "Mehr darüber, wofür dieses Werkzeug da ist"

#: includes/class-shieldforge-admin-intros.php:384
msgid "Columns explained"
msgstr "Spalten erklärt"

#: includes/class-shieldforge-ajax.php:27
msgid "Invalid nonce."
msgstr "Ungültige Nonce."

#: includes/class-shieldforge-ajax.php:30
#: includes/class-shieldforge-twofactor-profile.php:204
#: includes/class-shieldforge-twofactor-profile.php:227
#: includes/class-shieldforge-twofactor-profile.php:240
msgid "Insufficient permissions."
msgstr "Unzureichende Berechtigungen."

#: includes/class-shieldforge-ajax.php:39
#: includes/class-shieldforge-ajax.php:57
msgid "Invalid IP."
msgstr "Ungültige IP."

#. translators: 1: z-score, 2: classification label
#: includes/class-shieldforge-anomaly.php:154
#, php-format
msgid "Z-score %1$s (%2$s)"
msgstr "Z-Score %1$s (%2$s)"

#: includes/class-shieldforge-anomaly.php:294
#: includes/class-shieldforge-anomaly.php:299
#: includes/class-shieldforge-anomaly.php:302
msgid "unknown"
msgstr "unbekannt"

#: includes/class-shieldforge-anomaly.php:295
msgid "desktop browser"
msgstr "Desktop-Browser"

#: includes/class-shieldforge-anomaly.php:296
msgid "mobile browser"
msgstr "Mobil-Browser"

#: includes/class-shieldforge-anomaly.php:297
msgid "CLI / script"
msgstr "CLI / Skript"

#: includes/class-shieldforge-anomaly.php:298
msgid "bot / crawler"
msgstr "Bot / Crawler"

#: includes/class-shieldforge-anomaly.php:307
msgid "login hour (UTC)"
msgstr "Anmelde-Stunde (UTC)"

#: includes/class-shieldforge-anomaly.php:308
msgid "IP family (4 / 6)"
msgstr "IP-Familie (4 / 6)"

#: includes/class-shieldforge-anomaly.php:309
msgid "user-agent class"
msgstr "User-Agent-Klasse"

#: includes/class-shieldforge-anomaly.php:323
msgid "no IP"
msgstr "keine IP"

#: includes/class-shieldforge-badge.php:38
msgid "Brainwerk Security Suite Pro"
msgstr "Brainwerk Security Suite Pro"

#: includes/class-shieldforge-bruteforce.php:43
msgid ""
"<strong>Access denied.</strong> Too many failed login attempts. Try again "
"later."
msgstr ""
"<strong>Zugriff verweigert.</strong> Zu viele fehlgeschlagene "
"Anmeldeversuche. Versuche es später erneut."

#: includes/class-shieldforge-bruteforce.php:56
msgid ""
"<strong>Access denied.</strong> This account has been temporarily locked due "
"to repeated failed sign-ins. Try again later."
msgstr ""
"<strong>Zugriff verweigert.</strong> Dieses Konto wurde wegen wiederholter "
"fehlgeschlagener Anmeldungen vorübergehend gesperrt. Versuche es später "
"erneut."

#: includes/class-shieldforge-captcha.php:94
msgid ""
"<strong>Sicherheits-Check fehlgeschlagen.</strong> Bitte CAPTCHA erneut "
"bestätigen."
msgstr ""
"<strong>Sicherheits-Check fehlgeschlagen.</strong> Bitte CAPTCHA erneut "
"bestätigen."

#: includes/class-shieldforge-captcha.php:103
msgid "CAPTCHA-Check fehlgeschlagen. Bitte erneut versuchen."
msgstr "CAPTCHA-Check fehlgeschlagen. Bitte erneut versuchen."

#: includes/class-shieldforge-captcha.php:113
#: includes/class-shieldforge-captcha.php:115
msgid "CAPTCHA-Check fehlgeschlagen."
msgstr "CAPTCHA-Check fehlgeschlagen."

#: includes/class-shieldforge-hardening.php:148
msgid "REST API access for anonymous users is restricted."
msgstr "REST-API-Zugriff für anonyme Nutzer ist eingeschränkt."

#: includes/class-shieldforge-healthcheck.php:162
msgid "Server sees every visitor as 127.0.0.1 — IP-based protection is broken."
msgstr ""
"Server sieht jeden Besucher als 127.0.0.1 — IP-basierter Schutz ist defekt."

#: includes/class-shieldforge-healthcheck.php:163
msgid ""
"Your web server is running behind a proxy or multiplexer (typical: sslh, "
"Cloudflare Tunnel, nginx-stream, Apache mod_proxy) that does not forward the "
"original client IP. Brainwerk Security Suite therefore counts every brute-"
"force attempt against the same bucket — five failed logins from any visitor "
"will lock out 127.0.0.1, which silently blocks every user including "
"yourself. Probing detection, anomaly scoring and threat intel are equally "
"affected."
msgstr ""
"Dein Webserver läuft hinter einem Proxy oder Multiplexer (typisch: sslh, "
"Cloudflare Tunnel, nginx-stream, Apache mod_proxy), der die ursprüngliche "
"Client-IP nicht weiterreicht. Brainwerk Security Suite zählt deshalb jeden "
"Brute-Force-Versuch in denselben Bucket — fünf fehlgeschlagene Anmeldungen "
"von beliebigen Besuchern sperren 127.0.0.1, was leise jeden Nutzer "
"einschließlich dich selbst blockiert. Probing-Erkennung, Anomalie-Bewertung "
"und Threat-Intel sind gleichermaßen betroffen."

#: includes/class-shieldforge-healthcheck.php:164
msgid ""
"Either (a) configure your proxy to forward the real client IP via PROXY-"
"protocol or X-Forwarded-For header AND set "
"<code>define('SHIELDFORGE_TRUSTED_PROXIES', array('127.0.0.1'));</code> in "
"wp-config.php, or (b) keep brute-force protection disabled until the proxy "
"is fixed."
msgstr ""
"Entweder (a) konfigurieren Sie Ihren Proxy so, dass er die echte Client-IP "
"per PROXY-Protokoll oder X-Forwarded-For-Header weiterreicht, UND setzen Sie "
"<code>define('SHIELDFORGE_TRUSTED_PROXIES', array('127.0.0.1'));</code> in "
"der wp-config.php, oder (b) lassen Sie den Brute-Force-Schutz deaktiviert, "
"bis der Proxy korrigiert ist."

#: includes/class-shieldforge-healthcheck.php:175
msgid "Privacy: IP anonymization is OFF."
msgstr "Datenschutz: IP-Anonymisierung ist AUS."

#: includes/class-shieldforge-healthcheck.php:176
msgid ""
"Full IP addresses are stored in the Brainwerk Security Suite log. In the EU "
"this is personal data under GDPR and requires either a documented lawful "
"basis or anonymization. Brainwerk Security Suite ships with anonymization on "
"by default for this reason."
msgstr ""
"Vollständige IP-Adressen werden im Brainwerk Security Suite-Log gespeichert. "
"In der EU sind das personenbezogene Daten nach DSGVO und erfordern entweder "
"eine dokumentierte Rechtsgrundlage oder Anonymisierung. Brainwerk Security "
"Suite wird daher standardmäßig mit aktiver Anonymisierung ausgeliefert."

#: includes/class-shieldforge-healthcheck.php:177
msgid ""
"Enable \"Anonymize IP addresses\" in the Privacy / GDPR tab unless you have "
"a documented legal basis to keep full IPs."
msgstr ""
"Aktivieren Sie „IP-Adressen anonymisieren“ im Tab Datenschutz / DSGVO, "
"sofern Sie keine dokumentierte Rechtsgrundlage haben, vollständige IPs zu "
"speichern."

#: includes/class-shieldforge-healthcheck.php:188
msgid "Brute-force protection is currently disabled."
msgstr "Der Brute-Force-Schutz ist derzeit deaktiviert."

#: includes/class-shieldforge-healthcheck.php:189
msgid ""
"Failed login events are still being logged for visibility, but no IP will be "
"locked out after repeated failures. Re-enable this only after verifying the "
"server passes the IP-masking check above."
msgstr ""
"Fehlanmeldungen werden zur Übersicht weiterhin protokolliert, aber keine IP "
"wird nach wiederholten Fehlern gesperrt. Reaktiviere erst, wenn der Server "
"die obige IP-Masking-Prüfung besteht."

#: includes/class-shieldforge-healthcheck.php:190
msgid "Re-enable in the Login & Auth tab."
msgstr "Im Login & Auth-Tab reaktivieren."

#: includes/class-shieldforge-healthcheck.php:234
msgid "Dismiss this notice"
msgstr ""

#: includes/class-shieldforge-honeypot.php:69
msgid "Leave this field empty"
msgstr "Dieses Feld leer lassen"

#: includes/class-shieldforge-honeypot.php:94
#: includes/class-shieldforge-honeypot.php:104
msgid "Submission blocked: bot heuristic triggered."
msgstr "Übermittlung blockiert: Bot-Heuristik ausgelöst."

#: includes/class-shieldforge-honeypot.php:118
msgid "Submission blocked."
msgstr "Übermittlung blockiert."

#: includes/class-shieldforge-honeypot.php:119
msgid "Blocked"
msgstr "Gesperrt"

#: includes/class-shieldforge-i18n.php:129
msgid "WordPress default (automatic)"
msgstr "WordPress-Standard (automatisch)"

#: includes/class-shieldforge-incident.php:107
msgid "You do not have permission to do this."
msgstr "Sie haben keine Berechtigung dafür."

#: includes/class-shieldforge-incident.php:127
msgid ""
"Notfall-Audit angefordert. Das Modul-Gerüst ist aktiv — die Forensik-/Triage-"
"Engine wird in einer späteren Phase ergänzt (es wurde nichts gescannt oder "
"verändert)."
msgstr ""
"Notfall-Audit angefordert. Das Modul-Gerüst ist aktiv — die Forensik-/Triage-"
"Engine wird in einer späteren Phase ergänzt (es wurde nichts gescannt oder "
"verändert)."

#: includes/class-shieldforge-login-url.php:149
msgid "The requested page could not be found."
msgstr ""

#: includes/class-shieldforge-magic-link.php:43
msgid "🔗 Stattdessen per Magic-Link einloggen (passwortlos)"
msgstr "🔗 Stattdessen per Magic-Link einloggen (passwortlos)"

#: includes/class-shieldforge-magic-link.php:55
msgid "Magic-Link anfordern"
msgstr "Magic-Link anfordern"

#: includes/class-shieldforge-magic-link.php:58
msgid "Benutzername oder E-Mail-Adresse"
msgstr "Benutzername oder E-Mail-Adresse"

#: includes/class-shieldforge-magic-link.php:59
msgid "Magic-Link senden"
msgstr "Magic-Link senden"

#: includes/class-shieldforge-magic-link.php:60
msgid ""
"Wir schicken einen einmaligen Anmelde-Link an die hinterlegte E-Mail-"
"Adresse. Der Link ist 15 Minuten gültig."
msgstr ""
"Wir schicken einen einmaligen Anmelde-Link an die hinterlegte E-Mail-"
"Adresse. Der Link ist 15 Minuten gültig."

#: includes/class-shieldforge-magic-link.php:61
msgid "← Zurück zum normalen Login"
msgstr "← Zurück zum normalen Login"

#: includes/class-shieldforge-magic-link.php:86
#, php-format
msgid "[%s] Ihr Magic-Login-Link"
msgstr "[%s] Ihr Magic-Login-Link"

#: includes/class-shieldforge-magic-link.php:87
#: includes/class-shieldforge-trusted-devices.php:90
#, php-format
msgid "Hallo %s,"
msgstr "Hallo %s,"

#: includes/class-shieldforge-magic-link.php:88
msgid ""
"Klicken Sie innerhalb der nächsten 15 Minuten auf folgenden Link, um sich "
"einzuloggen — kein Passwort nötig:"
msgstr ""
"Klicken Sie innerhalb der nächsten 15 Minuten auf folgenden Link, um sich "
"einzuloggen — kein Passwort nötig:"

#: includes/class-shieldforge-magic-link.php:89
msgid "Jetzt einloggen"
msgstr "Jetzt einloggen"

#: includes/class-shieldforge-magic-link.php:90
msgid ""
"Sie haben diesen Link nicht angefordert? Dann ignorieren Sie diese Mail — "
"niemand kann mit Ihrem Account einloggen ohne diesen Link UND Ihren ggf. "
"konfigurierten 2FA-Code."
msgstr ""
"Sie haben diesen Link nicht angefordert? Dann ignorieren Sie diese Mail — "
"niemand kann mit Ihrem Account einloggen ohne diesen Link UND Ihren ggf. "
"konfigurierten 2FA-Code."

#: includes/class-shieldforge-magic-link.php:99
msgid "Magic-Link versandt"
msgstr "Magic-Link versandt"

#: includes/class-shieldforge-magic-link.php:101
msgid ""
"✓ Falls dieser Account existiert, ist eine Mail mit Login-Link unterwegs."
msgstr ""
"✓ Falls dieser Account existiert, ist eine Mail mit Login-Link unterwegs."

#: includes/class-shieldforge-magic-link.php:102
msgid ""
"Prüfen Sie Ihren Posteingang (auch Spam-Ordner). Der Link ist 15 Minuten "
"gültig."
msgstr ""
"Prüfen Sie Ihren Posteingang (auch Spam-Ordner). Der Link ist 15 Minuten "
"gültig."

#: includes/class-shieldforge-magic-link.php:104
msgid "← Zurück zum Login"
msgstr "← Zurück zum Login"

#: includes/class-shieldforge-magic-link.php:111
msgid "Ungültiger Magic-Link."
msgstr "Ungültiger Magic-Link."

#: includes/class-shieldforge-magic-link.php:115
msgid "Link bereits verwendet oder abgelaufen."
msgstr "Link bereits verwendet oder abgelaufen."

#: includes/class-shieldforge-magic-link.php:119
msgid "Magic-Link abgelaufen. Bitte erneut anfordern."
msgstr "Magic-Link abgelaufen. Bitte erneut anfordern."

#: includes/class-shieldforge-magic-link.php:123
msgid "Ungültiger Token."
msgstr "Ungültiger Token."

#: includes/class-shieldforge-magic-link.php:128
msgid "User nicht gefunden."
msgstr "User nicht gefunden."

#. translators: %s: site name
#: includes/class-shieldforge-notifications.php:27
#, php-format
msgid "[%s] Brainwerk Security Suite: brute-force lockout triggered"
msgstr "[%s] Brainwerk Security Suite: Brute-Force-Sperre ausgelöst"

#. translators: 1: IP, 2: failure count, 3: username
#: includes/class-shieldforge-notifications.php:32
#, php-format
msgid ""
"A brute-force lockout was triggered.\\n\\nIP: %1$s\\nFailed attempts: "
"%2$d\\nLast tried username: %3$s\\n"
msgstr ""
"Eine Brute-Force-Sperre wurde ausgelöst.\\n\\nIP: %1$s\\nFehlgeschlagene "
"Versuche: %2$d\\nZuletzt versuchter Benutzername: %3$s\\n"

#: includes/class-shieldforge-notifications.php:42
#, php-format
msgid "[%s] Brainwerk Security Suite: new administrator created"
msgstr "[%s] Brainwerk Security Suite: neuer Administrator erstellt"

#: includes/class-shieldforge-notifications.php:44
#, php-format
msgid ""
"A new user with role '%1$s' was created.\n"
"\n"
"User: %2$s (ID %3$d)\n"
"Email: %4$s\n"
"Created by: %5$s\n"
msgstr ""
"Ein neuer Benutzer mit der Rolle '%1$s' wurde erstellt.\n"
"\n"
"Benutzer: %2$s (ID %3$d)\n"
"E-Mail: %4$s\n"
"Erstellt von: %5$s\n"

#: includes/class-shieldforge-notifications.php:55
#, php-format
msgid "[%s] Brainwerk Security Suite: probing burst detected"
msgstr "[%s] Brainwerk Security Suite: Probing-Burst erkannt"

#: includes/class-shieldforge-notifications.php:57
#, php-format
msgid ""
"An IP triggered the probing alert threshold.\n"
"\n"
"IP: %1$s\n"
"Probing 404s in last hour: %2$d\n"
msgstr ""
"Eine IP hat die Probing-Alarmschwelle ausgelöst.\n"
"\n"
"IP: %1$s\n"
"Probing-404s in der letzten Stunde: %2$d\n"

#. translators: 1: site name, 2: threat label, 3: numeric score
#: includes/class-shieldforge-notifications.php:115
#, php-format
msgid "[%1$s] Brainwerk Security Suite digest - %2$s threat (%3$d/100)"
msgstr "[%1$s] Brainwerk Security Suite-Bericht – Bedrohung %2$s (%3$d/100)"

#: includes/class-shieldforge-onboarding.php:97
msgid "Welcome to Brainwerk Security Suite."
msgstr "Willkommen bei Brainwerk Security Suite."

#: includes/class-shieldforge-onboarding.php:98
msgid ""
"A short setup wizard will help you tune the privacy, login, and notification "
"defaults."
msgstr ""
"Ein kurzer Einrichtungs-Assistent hilft dir, die Standard-Werte für "
"Datenschutz, Anmeldung und Benachrichtigungen anzupassen."

#: includes/class-shieldforge-onboarding.php:101
msgid "Start setup"
msgstr "Einrichtung starten"

#: includes/class-shieldforge-onboarding.php:102
msgid "Skip"
msgstr "Überspringen"

#: includes/class-shieldforge-privacy-dashboard.php:39
msgid "Vertrag (Schul-Anmeldung) bzw. berechtigtes Interesse (Admin-Konten)"
msgstr "Vertrag (Schul-Anmeldung) bzw. berechtigtes Interesse (Admin-Konten)"

#: includes/class-shieldforge-privacy-dashboard.php:40
msgid "Vertrag"
msgstr "Vertrag"

#: includes/class-shieldforge-privacy-dashboard.php:41
msgid "Einwilligung des Kommentierenden"
msgstr "Einwilligung des Kommentierenden"

#: includes/class-shieldforge-privacy-dashboard.php:43
msgid "Berechtigtes Interesse (Brute-Force-Schutz, Art. 6 Abs. 1 lit. f DSGVO)"
msgstr ""
"Berechtigtes Interesse (Brute-Force-Schutz, Art. 6 Abs. 1 lit. f DSGVO)"

#: includes/class-shieldforge-privacy-dashboard.php:44
msgid "Berechtigtes Interesse"
msgstr "Berechtigtes Interesse"

#: includes/class-shieldforge-privacy-dashboard.php:45
msgid "Rechtliche Verpflichtung (Nachvollziehbarkeit Admin-Aktionen)"
msgstr "Rechtliche Verpflichtung (Nachvollziehbarkeit Admin-Aktionen)"

#: includes/class-shieldforge-privacy-dashboard.php:47
msgid "Berechtigtes Interesse (Reichweitenmessung, anonymisiert)"
msgstr "Berechtigtes Interesse (Reichweitenmessung, anonymisiert)"

#: includes/class-shieldforge-privacy-dashboard.php:49
msgid "Vertrag (Schulanmeldung)"
msgstr "Vertrag (Schulanmeldung)"

#: includes/class-shieldforge-privacy-dashboard.php:80
#: includes/class-shieldforge-privacy-dashboard.php:96
msgid "Bitte gültige E-Mail-Adresse angeben."
msgstr "Bitte gültige E-Mail-Adresse angeben."

#. translators: %s: number of times leaked
#: includes/class-shieldforge-pwned.php:43
#, php-format
msgid ""
"<strong>Sicherheitswarnung:</strong> Dieses Passwort taucht <strong>%s mal</"
"strong> in bekannten Daten-Leaks auf (Quelle: HaveIBeenPwned). Bitte wählen "
"Sie ein anderes Passwort."
msgstr ""
"<strong>Sicherheitswarnung:</strong> Dieses Passwort taucht <strong>%s mal</"
"strong> in bekannten Daten-Leaks auf (Quelle: HaveIBeenPwned). Bitte wählen "
"Sie ein anderes Passwort."

#: includes/class-shieldforge-pwned.php:58
#, php-format
msgid ""
"Dieses Passwort taucht %s mal in bekannten Daten-Leaks auf. Bitte ein "
"anderes wählen."
msgstr ""
"Dieses Passwort taucht %s mal in bekannten Daten-Leaks auf. Bitte ein "
"anderes wählen."

#: includes/class-shieldforge-pwned.php:71
#, php-format
msgid "Dieses Passwort wurde %s mal geleakt. Bitte ein anderes wählen."
msgstr "Dieses Passwort wurde %s mal geleakt. Bitte ein anderes wählen."

#: includes/class-shieldforge-quick-setup.php:33
msgid "School / Education"
msgstr "Schule / Bildungseinrichtung"

#: includes/class-shieldforge-quick-setup.php:35
msgid ""
"Multiple staff accounts, occasional content edits, low e-commerce surface. "
"Forced 2FA for admins + editors, audit log on, vuln scanner on."
msgstr ""
"Mehrere Mitarbeiter-Konten, gelegentliche Content-Edits, kein E-Commerce. "
"2FA-Pflicht für Admins + Redakteure, Audit-Log an, Schwachstellen-Scanner an."

#: includes/class-shieldforge-quick-setup.php:67
msgid "Agency / Multi-client"
msgstr "Agentur / Mehrere Kunden"

#: includes/class-shieldforge-quick-setup.php:69
msgid ""
"You manage many client sites. Maximum hardening, mandatory 2FA for ALL "
"roles, every detection module on, audit-log retention longer."
msgstr ""
"Du managst viele Kunden-Sites. Maximale Härtung, 2FA-Pflicht für ALLE "
"Rollen, jedes Erkennungs-Modul an, längere Audit-Log-Aufbewahrung."

#: includes/class-shieldforge-quick-setup.php:103
msgid "E-commerce / Shop"
msgstr "E-Commerce / Shop"

#: includes/class-shieldforge-quick-setup.php:105
msgid ""
"Customer accounts, payment processing. Honeypot on every form, anomaly "
"detection on, force 2FA for shop managers."
msgstr ""
"Kunden-Konten, Zahlungsabwicklung. Honeypot auf jedem Formular, Anomalie-"
"Erkennung an, 2FA-Pflicht für Shop-Manager."

#: includes/class-shieldforge-quick-setup.php:134
msgid "Personal blog / Portfolio"
msgstr "Persönlicher Blog / Portfolio"

#: includes/class-shieldforge-quick-setup.php:136
msgid ""
"One-or-two-person setup, comment spam is the main worry. Lighter defaults, "
"honeypot on comments, no forced 2FA for casual contributors."
msgstr ""
"1-2-Personen-Setup, Kommentar-Spam ist die Hauptsorge. Leichtere Defaults, "
"Honeypot auf Kommentare, keine 2FA-Pflicht für Gelegenheits-Beitragende."

#. translators: %s: profile label
#: includes/class-shieldforge-quick-setup.php:203
#, php-format
msgid ""
"Quick-setup profile applied: %s. You can fine-tune any individual setting "
"from here."
msgstr ""
"Schnellstart-Profil angewendet: %s. Jede einzelne Einstellung kannst du von "
"hier aus feinjustieren."

#: includes/class-shieldforge-quick-setup.php:235
msgid "Quick start: pick a site profile"
msgstr "Schnellstart: wähle ein Site-Profil"

#: includes/class-shieldforge-quick-setup.php:236
msgid ""
"One click sets sensible defaults for your site type. You can fine-tune any "
"individual setting later."
msgstr ""
"Ein Klick setzt sinnvolle Voreinstellungen für deinen Site-Typ. Jede "
"einzelne Einstellung kannst du später feinjustieren."

#: includes/class-shieldforge-quick-setup.php:241
msgid "Hide this banner — you can re-open it from the Tools tab"
msgstr ""
"Banner verbergen — kann unter „Werkzeuge\\\\\\\" wieder eingeblendet werden"

#: includes/class-shieldforge-quick-setup.php:254
msgid "Apply this profile →"
msgstr "Dieses Profil anwenden →"

#: includes/class-shieldforge-sanity.php:38
msgid "Daily log cleanup"
msgstr "Tägliche Log-Bereinigung"

#: includes/class-shieldforge-sanity.php:39
msgid "Daily file-integrity scan"
msgstr "Täglicher Datei-Integritäts-Scan"

#: includes/class-shieldforge-sanity.php:40
msgid "Daily vulnerability scan"
msgstr "Täglicher Schwachstellen-Scan"

#: includes/class-shieldforge-sanity.php:61
msgid "Healthcheck finding"
msgstr "Funktions-Befund"

#: includes/class-shieldforge-sanity.php:102
#: includes/class-shieldforge-sanity.php:114
msgid "Plugin-header version vs. SHIELDFORGE_VERSION constant"
msgstr "Plugin-Header-Version vs. SHIELDFORGE_VERSION-Konstante"

#. translators: 1: header version, 2: constant version
#: includes/class-shieldforge-sanity.php:106
#, php-format
msgid ""
"Header says %1$s but constant is %2$s. Re-run bin/bump-version to re-sync."
msgstr ""
"Header sagt %1$s, aber Konstante ist %2$s. bin/bump-version erneut laufen "
"lassen, um zu synchronisieren."

#: includes/class-shieldforge-sanity.php:116
#, php-format
msgid "Both at %s."
msgstr "Beide bei %s."

#: includes/class-shieldforge-sanity.php:130
msgid "Database schema migration pending"
msgstr "Datenbank-Schema-Migration ausstehend"

#: includes/class-shieldforge-sanity.php:132
#, php-format
msgid ""
"DB at v%1$s, code expects v%2$s. Visit any wp-admin page to trigger "
"admin_init migration."
msgstr ""
"DB bei v%1$s, Code erwartet v%2$s. Beliebige wp-admin-Seite aufrufen, um die "
"admin_init-Migration auszulösen."

#: includes/class-shieldforge-sanity.php:138
msgid "Database schema migration"
msgstr "Datenbank-Schema-Migration"

#: includes/class-shieldforge-sanity.php:140
#, php-format
msgid "DB schema at v%s — current."
msgstr "DB-Schema bei v%s — aktuell."

#: includes/class-shieldforge-sanity.php:152
#, php-format
msgid "Next run in %s."
msgstr "Nächste Ausführung in %s."

#: includes/class-shieldforge-sanity.php:160
msgid "Cron hook not scheduled. Deactivate + reactivate plugin to repair."
msgstr ""
"Cron-Hook nicht geplant. Plugin deaktivieren + reaktivieren zum Reparieren."

#: includes/class-shieldforge-sanity.php:183
#: includes/class-shieldforge-sanity.php:191
msgid "Required database tables"
msgstr "Benötigte Datenbank-Tabellen"

#: includes/class-shieldforge-sanity.php:185
#, php-format
msgid "Missing: %s. Reactivate plugin to recreate."
msgstr "Fehlend: %s. Plugin reaktivieren, um neu zu erstellen."

#: includes/class-shieldforge-sanity.php:193
#, php-format
msgid "All %d core tables present."
msgstr "Alle %d Kerntabellen vorhanden."

#: includes/class-shieldforge-sanity.php:202
#: includes/class-shieldforge-sanity.php:210
msgid "SHIELDFORGE_FORCE_PRO override"
msgstr "SHIELDFORGE_FORCE_PRO-Override"

#: includes/class-shieldforge-sanity.php:204
msgid ""
"Constant is set in wp-config.php — Pro features are unlocked WITHOUT a real "
"licence. Fine for testing, remove for production."
msgstr ""
"Konstante ist in wp-config.php gesetzt — Pro-Features sind OHNE echte Lizenz "
"freigeschaltet. Okay für Tests, für Produktiv-Betrieb entfernen."

#: includes/class-shieldforge-sanity.php:212
msgid "Not set — Pro features gate on real licence as intended."
msgstr ""
"Nicht gesetzt — Pro-Features sind wie vorgesehen an eine echte Lizenz "
"geknüpft."

#: includes/class-shieldforge-sanity.php:224
msgid "On — IPv4 anonymized to /24, IPv6 to /64."
msgstr "An — IPv4 anonymisiert auf /24, IPv6 auf /64."

#: includes/class-shieldforge-sanity.php:225
msgid ""
"Off — full IPs are stored. Verify your privacy policy reflects this; you may "
"need explicit user consent under GDPR."
msgstr ""
"Aus — volle IPs werden gespeichert. Prüfe, ob deine Datenschutzerklärung das "
"widerspiegelt; unter DSGVO brauchst du eventuell explizite Nutzer-"
"Einwilligung."

#: includes/class-shieldforge-sanity.php:235
#: includes/class-shieldforge-sanity.php:244
#: includes/class-shieldforge-sanity.php:252
msgid "Log retention window"
msgstr "Aufbewahrungs-Fenster Log"

#: includes/class-shieldforge-sanity.php:237
#, php-format
msgid "Only %d days — may be too short for incident-response forensics."
msgstr "Nur %d Tage — könnte zu kurz für Incident-Response-Forensik sein."

#: includes/class-shieldforge-sanity.php:246
#, php-format
msgid ""
"%d days is unusually long. GDPR data-minimization principles suggest the "
"shortest period that still meets your business need."
msgstr ""
"%d Tage sind ungewöhnlich lange. Der DSGVO-Grundsatz der Datenminimierung "
"legt den kürzesten Zeitraum nahe, der den Geschäftszweck noch erfüllt."

#: includes/class-shieldforge-sanity.php:254
#, php-format
msgid "%d days — sensible default."
msgstr "%d Tage — sinnvoller Standardwert."

#: includes/class-shieldforge-sanity.php:265
msgid "Brute-force protection"
msgstr "Brute-Force-Schutz"

#: includes/class-shieldforge-sanity.php:267
msgid ""
"OFF — site is wide open to password-guessing. Turn on under Anmeldung tab."
msgstr ""
"AUS — die Site ist offen für Passwort-Raten. Im Anmeldung-Tab einschalten."

#: includes/class-shieldforge-sanity.php:274
msgid "Core hardening (XML-RPC etc.)"
msgstr "Core-Härtung (XML-RPC etc.)"

#: includes/class-shieldforge-sanity.php:276
msgid ""
"XML-RPC is on. Most sites don't need it; it's a common brute-force vector. "
"Turn off under Härtung tab unless you use Jetpack mobile / mobile WordPress "
"apps."
msgstr ""
"XML-RPC ist an. Die meisten Websites brauchen es nicht; es ist ein häufiger "
"Brute-Force-Vektor. Schalten Sie es im Tab Härtung aus, sofern Sie nicht "
"Jetpack mobile / die mobilen WordPress-Apps nutzen."

#: includes/class-shieldforge-sanity.php:282
msgid "Critical security modules"
msgstr "Kritische Sicherheitsmodule"

#: includes/class-shieldforge-sanity.php:284
msgid "Brute-force + XML-RPC hardening both active."
msgstr "Brute-Force-Schutz + XML-RPC-Härtung beide aktiv."

#: includes/class-shieldforge-sanity.php:303
msgid "2FA users with no recovery codes"
msgstr "2FA-Nutzer ohne Wiederherstellungscodes"

#. translators: 1: count, 2: usernames
#: includes/class-shieldforge-sanity.php:307
#, php-format
msgid ""
"%1$d user (%2$s) has 2FA enabled but no recovery codes — they will be locked "
"out if they lose their authenticator."
msgid_plural ""
"%1$d users (%2$s) have 2FA enabled but no recovery codes — they will be "
"locked out if they lose their authenticator."
msgstr[0] ""
"%1$d Nutzer (%2$s) hat 2FA aktiviert, aber keine Wiederherstellungscodes — "
"wird ausgesperrt, wenn der Authenticator verloren geht."
msgstr[1] ""
"%1$d Nutzer (%2$s) haben 2FA aktiviert, aber keine Wiederherstellungscodes — "
"werden ausgesperrt, wenn der Authenticator verloren geht."

#: includes/class-shieldforge-sanity.php:316
msgid "2FA recovery codes"
msgstr "2FA-Wiederherstellungscodes"

#: includes/class-shieldforge-sanity.php:318
msgid "Every 2FA-enrolled user has recovery codes on file."
msgstr "Jeder 2FA-Nutzer hat hinterlegte Wiederherstellungscodes."

#: includes/class-shieldforge-sanity.php:348
msgid "Administrators without a second factor"
msgstr "Administratoren ohne zweiten Faktor"

#: includes/class-shieldforge-sanity.php:351
#, php-format
msgid ""
"%d admin without 2FA / Passkey: %s. Highest-leverage account on the site — "
"should be protected."
msgid_plural ""
"%d admins without 2FA / Passkey: %s. Highest-leverage accounts on the site — "
"should be protected."
msgstr[0] ""
"%d Admin ohne 2FA / Passkey: %s. Das Konto mit dem größten Hebel auf der "
"Website — sollte geschützt sein."
msgstr[1] ""
"%d Admins ohne 2FA / Passkey: %s. Die Konten mit dem größten Hebel auf der "
"Website — sollten geschützt sein."

#: includes/class-shieldforge-sanity.php:360
msgid "Administrators with a second factor"
msgstr "Administratoren mit zweitem Faktor"

#: includes/class-shieldforge-sanity.php:362
msgid "Every administrator has 2FA or a Passkey enabled."
msgstr "Jeder Administrator hat 2FA oder einen Passkey aktiviert."

#: includes/class-shieldforge-sanity.php:381
msgid "Test fixtures in plugins directory"
msgstr "Test-Fixtures im Plugin-Verzeichnis"

#: includes/class-shieldforge-sanity.php:383
#, php-format
msgid "Found: %s. Delete before going live."
msgstr "Gefunden: %s. Vor dem Go-Live löschen."

#: includes/class-shieldforge-sanity.php:389
msgid "Test fixtures"
msgstr "Test-Fixtures"

#: includes/class-shieldforge-sanity.php:391
msgid "No leftover test files in the plugins directory."
msgstr "Keine übrig gebliebenen Test-Dateien im Plugin-Verzeichnis."

#: includes/class-shieldforge-sanity.php:401
msgid "wp.org readme.txt"
msgstr "wp.org readme.txt"

#: includes/class-shieldforge-sanity.php:403
msgid "readme.txt is missing — wp.org requires it."
msgstr "readme.txt fehlt — wp.org erfordert sie."

#: includes/class-shieldforge-sanity.php:413
#: includes/class-shieldforge-sanity.php:421
#: includes/class-shieldforge-sanity.php:429
msgid "readme.txt Stable tag"
msgstr "readme.txt Stable Tag"

#: includes/class-shieldforge-sanity.php:415
#, php-format
msgid ""
"Stable tag is %1$s but plugin is %2$s. Bump readme before tagging the wp.org "
"release."
msgstr ""
"Stable Tag ist %1$s, aber Plugin ist %2$s. Vor dem wp.org-Release das readme "
"anheben."

#: includes/class-shieldforge-sanity.php:423
#, php-format
msgid "Matches plugin version (%s)."
msgstr "Stimmt mit Plugin-Version (%s) überein."

#: includes/class-shieldforge-sanity.php:431
msgid "No \"Stable tag:\" line found in readme.txt."
msgstr "Keine „Stable tag:“-Zeile in der readme.txt gefunden."

#: includes/class-shieldforge-sanity.php:448
#: includes/class-shieldforge-sanity.php:456
msgid "Translation files"
msgstr "Übersetzungs-Dateien"

#: includes/class-shieldforge-sanity.php:450
#, php-format
msgid "Missing: %s."
msgstr "Fehlend: %s."

#: includes/class-shieldforge-sanity.php:458
msgid "POT + DE PO/MO files all present in languages/."
msgstr "POT + DE-PO/MO-Dateien alle vorhanden in languages/."

#: includes/class-shieldforge-threat-intel.php:146
msgid "Failed-login volume"
msgstr "Fehlanmeldungs-Volumen"

#: includes/class-shieldforge-threat-intel.php:152
msgid "Distinct attacker IPs"
msgstr "Verschiedene Angreifer-IPs"

#: includes/class-shieldforge-threat-intel.php:158
msgid "Probing 404 density"
msgstr "Probing-404-Dichte"

#: includes/class-shieldforge-threat-intel.php:174
msgid ""
"Escalation signals (lockouts, anomalies, blocks, file changes, malware "
"suspects)"
msgstr ""
"Eskalations-Signale (Sperren, Anomalien, Blocks, Dateiänderungen, Malware-"
"Verdacht)"

#: includes/class-shieldforge-threat-intel.php:466
msgid "24-Stunden-Angriffsaktivität"
msgstr ""

#: includes/class-shieldforge-threat-intel.php:830
msgid "Angriffs-Korridore: Herkunfts- zu Ziel-Ländern"
msgstr ""

#: includes/class-shieldforge-tools.php:24
msgid "No valid recipient address."
msgstr "Keine gültige Empfänger-Adresse."

#: includes/class-shieldforge-tools.php:26
#, php-format
msgid "[%s] Brainwerk Security Suite test mail"
msgstr "[%s] Brainwerk Security Suite-Test-Mail"

#: includes/class-shieldforge-tools.php:27
msgid ""
"This is a Brainwerk Security Suite test message.\n"
"\n"
"If you received this, alert delivery is working."
msgstr ""
"Dies ist eine Testnachricht der Brainwerk Security Suite.\n"
"\n"
"Wenn Sie diese erhalten haben, funktioniert die Alarm-Zustellung."

#: includes/class-shieldforge-tools.php:29
msgid "wp_mail() returned false."
msgstr "wp_mail() lieferte false."

#: includes/class-shieldforge-tools.php:44
msgid "Invalid import payload."
msgstr "Ungültige Import-Daten."

#: includes/class-shieldforge-tools.php:47
msgid "Payload is not from Brainwerk Security Suite."
msgstr "Payload stammt nicht von Brainwerk Security Suite."

#: includes/class-shieldforge-tools.php:75
msgid "Database tables present"
msgstr "Datenbank-Tabellen vorhanden"

#: includes/class-shieldforge-tools.php:77
msgid "shieldforge_log not found — re-activate the plugin."
msgstr "shieldforge_log nicht gefunden — Plugin reaktivieren."

#: includes/class-shieldforge-tools.php:81
msgid "Daily digest cron scheduled"
msgstr "Cron für täglichen Bericht geplant"

#: includes/class-shieldforge-tools.php:85
#: includes/class-shieldforge-tools.php:93
msgid "Not scheduled"
msgstr "Nicht geplant"

#: includes/class-shieldforge-tools.php:89
msgid "Cleanup cron scheduled"
msgstr "Cleanup-Cron geplant"

#: includes/class-shieldforge-tools.php:98
msgid "Notification address set"
msgstr "Benachrichtigungs-Adresse gesetzt"

#: includes/class-shieldforge-tools.php:100
msgid "No address configured"
msgstr "Keine Adresse konfiguriert"

#: includes/class-shieldforge-tools.php:107
msgid "Enabled"
msgstr "Aktiviert"

#: includes/class-shieldforge-tools.php:108
msgid "Disabled — full IPs will be stored"
msgstr "Deaktiviert — volle IPs werden gespeichert"

#: includes/class-shieldforge-trusted-devices.php:89
#, php-format
msgid "[%s] Neuer Login von unbekanntem Gerät"
msgstr "[%s] Neuer Login von unbekanntem Gerät"

#: includes/class-shieldforge-trusted-devices.php:91
msgid ""
"Es hat sich jemand mit Ihrem Account eingeloggt — von einem Gerät, das wir "
"bisher nicht gesehen haben."
msgstr ""
"Es hat sich jemand mit Ihrem Account eingeloggt — von einem Gerät, das wir "
"bisher nicht gesehen haben."

#: includes/class-shieldforge-trusted-devices.php:92
msgid "Details:"
msgstr "Details:"

#: includes/class-shieldforge-trusted-devices.php:93
msgid "Zeit:"
msgstr "Zeit:"

#: includes/class-shieldforge-trusted-devices.php:94
msgid "IP (anonymisiert):"
msgstr "IP (anonymisiert):"

#: includes/class-shieldforge-trusted-devices.php:95
msgid "Gerät:"
msgstr "Gerät:"

#: includes/class-shieldforge-trusted-devices.php:97
msgid ""
"<strong>Waren Sie das?</strong> Dann ist alles in Ordnung. Sie können diese "
"Mail ignorieren."
msgstr ""
"<strong>Waren Sie das?</strong> Dann ist alles in Ordnung. Sie können diese "
"Mail ignorieren."

#: includes/class-shieldforge-trusted-devices.php:98
msgid ""
"<strong>Waren Sie das nicht?</strong> Ändern Sie sofort Ihr Passwort und "
"aktivieren Sie Zwei-Faktor-Authentifizierung (2FA). Verständigen Sie ggf. "
"die Administration."
msgstr ""
"<strong>Waren Sie das nicht?</strong> Ändern Sie sofort Ihr Passwort und "
"aktivieren Sie Zwei-Faktor-Authentifizierung (2FA). Verständigen Sie ggf. "
"die Administration."

#: includes/class-shieldforge-twofactor-profile.php:85
msgid "Two-factor authentication (Brainwerk Security Suite)"
msgstr "Zwei-Faktor-Authentifizierung (Brainwerk Security Suite)"

#: includes/class-shieldforge-twofactor-profile.php:89
msgid ""
"Site policy requires two-factor authentication for your role. Set it up "
"below."
msgstr ""
"Die Site-Richtlinie verlangt Zwei-Faktor-Authentifizierung für deine Rolle. "
"Richte sie unten ein."

#: includes/class-shieldforge-twofactor-profile.php:95
msgid "2FA is active."
msgstr "2FA ist aktiv."

#. translators: %d: remaining recovery codes
#: includes/class-shieldforge-twofactor-profile.php:99
#, php-format
msgid "%d recovery code left."
msgid_plural "%d recovery codes left."
msgstr[0] "%d Wiederherstellungscode übrig."
msgstr[1] "%d Wiederherstellungscodes übrig."

#: includes/class-shieldforge-twofactor-profile.php:105
msgid ""
"You are running low on recovery codes. Generate a fresh batch to avoid being "
"locked out."
msgstr ""
"Deine Wiederherstellungscodes werden knapp. Erzeuge einen neuen Satz, um "
"nicht ausgesperrt zu werden."

#: includes/class-shieldforge-twofactor-profile.php:113
msgid ""
"Generate fresh recovery codes? Existing codes will stop working immediately."
msgstr ""
"Neue Wiederherstellungscodes erzeugen? Bestehende Codes funktionieren sofort "
"nicht mehr."

#: includes/class-shieldforge-twofactor-profile.php:114
msgid ""
"Really disable 2FA for this account? You will lose phishing-resistant login."
msgstr ""
"2FA für dieses Konto wirklich deaktivieren? Du verlierst phishing-resistente "
"Anmeldung."

#: includes/class-shieldforge-twofactor-profile.php:125
msgid "Regenerate recovery codes"
msgstr "Wiederherstellungs-Codes neu erzeugen"

#: includes/class-shieldforge-twofactor-profile.php:134
msgid "Disable two-factor"
msgstr "Zwei-Faktor deaktivieren"

#: includes/class-shieldforge-twofactor-profile.php:140
msgid ""
"This user has not set up 2FA yet. Only the user themselves can enable it."
msgstr ""
"Dieser Nutzer hat 2FA noch nicht eingerichtet. Nur der Nutzer selbst kann es "
"aktivieren."

#: includes/class-shieldforge-twofactor-profile.php:150
msgid "Step 1."
msgstr "Schritt 1."

#: includes/class-shieldforge-twofactor-profile.php:150
msgid ""
"Open your authenticator app (Google Authenticator, Microsoft Authenticator, "
"Authy, 2FAS, Aegis, FreeOTP) and add a new account using the secret below."
msgstr ""
"Öffne deine Authenticator-App (Google Authenticator, Microsoft "
"Authenticator, Authy, 2FAS, Aegis, FreeOTP) und füge ein neues Konto mit dem "
"Geheimnis unten hinzu."

#: includes/class-shieldforge-twofactor-profile.php:152
msgid "Setup secret (case-insensitive, spaces ignored):"
msgstr ""
"Einrichtungs-Geheimnis (Groß-/Kleinschreibung egal, Leerzeichen ignoriert):"

#: includes/class-shieldforge-twofactor-profile.php:157
msgid "Algorithm: SHA-1 · Digits: 6 · Period: 30s"
msgstr "Algorithmus: SHA-1 · Stellen: 6 · Periode: 30 s"

#: includes/class-shieldforge-twofactor-profile.php:159
msgid "Open in app (mobile only)"
msgstr "In App öffnen (nur mobil)"

#: includes/class-shieldforge-twofactor-profile.php:170
msgid "Step 2."
msgstr "Schritt 2."

#: includes/class-shieldforge-twofactor-profile.php:170
msgid "Enter the 6-digit code your app shows right now."
msgstr "Gib den 6-stelligen Code ein, den deine App gerade zeigt."

#: includes/class-shieldforge-twofactor-profile.php:186
msgid "Confirm and enable 2FA"
msgstr "Bestätigen und 2FA aktivieren"

#: includes/class-shieldforge-twofactor-profile.php:209
msgid "Only the user can complete their own 2FA setup."
msgstr "Nur der Nutzer selbst kann seine 2FA-Einrichtung abschließen."

#: includes/class-shieldforge-twofactor-profile.php:243
msgid "Only the user can regenerate their own recovery codes."
msgstr "Nur der Nutzer selbst kann seine Wiederherstellungscodes neu erzeugen."

#: includes/class-shieldforge-twofactor-profile.php:270
msgid "Two-factor authentication disabled."
msgstr "Zwei-Faktor-Authentifizierung deaktiviert."

#: includes/class-shieldforge-twofactor-profile.php:273
msgid "That code did not match. Check your device clock and try again."
msgstr "Der Code stimmt nicht. Prüfe die Geräte-Uhr und versuche es erneut."

#: includes/class-shieldforge-twofactor-profile.php:281
msgid "Save these recovery codes now — they are shown only once."
msgstr ""
"Speichere diese Wiederherstellungscodes jetzt — sie werden nur einmal "
"angezeigt."

#: includes/class-shieldforge-twofactor-profile.php:282
msgid ""
"Each code works exactly once. Store them somewhere safe (password manager, "
"printed copy in a drawer). Without them, losing your authenticator means "
"losing access."
msgstr ""
"Jeder Code funktioniert genau einmal. Bewahre sie sicher auf (Passwort-"
"Manager, Ausdruck in einer Schublade). Ohne sie bedeutet der Verlust des "
"Authenticators Verlust des Zugangs."

#: includes/class-shieldforge-twofactor.php:373
msgid "Too many invalid codes. Please wait a few minutes and try again."
msgstr ""
"Zu viele ungültige Codes. Bitte warten Sie ein paar Minuten und versuchen "
"Sie es erneut."

#: includes/class-shieldforge-twofactor.php:398
msgid "Invalid 2FA code. Try again or use a recovery code."
msgstr ""
"Ungültiger 2FA-Code. Versuche es erneut oder nutze einen "
"Wiederherstellungscode."

#: includes/class-shieldforge-twofactor.php:422
msgid "Unable to render 2FA form (login subsystem unavailable)."
msgstr ""
"2FA-Formular konnte nicht gerendert werden (Login-Subsystem nicht verfügbar)."

#: includes/class-shieldforge-twofactor.php:428
msgid "Authentication code"
msgstr "Authentifizierungs-Code"

#: includes/class-shieldforge-twofactor.php:440
msgid ""
"Enter the 6-digit code from your authenticator app, or one of your recovery "
"codes (e.g. ABCD-EFGH)."
msgstr ""
"Gib den 6-stelligen Code aus deiner Authenticator-App oder einen deiner "
"Wiederherstellungscodes ein (z. B. ABCD-EFGH)."

#: includes/class-shieldforge-twofactor.php:444
msgid "Verify"
msgstr "Bestätigen"

#: includes/class-shieldforge-twofactor.php:448
msgid "Back to login"
msgstr "Zurück zur Anmeldung"

#: includes/sensor/class-shieldforge-sensor.php:61
msgid "Every 5 minutes (ShieldForge sensor)"
msgstr "Alle 5 Minuten (ShieldForge-Sensor)"

#: includes/sensor/class-shieldforge-sensor.php:102
msgid "Site registered with the Threat Network."
msgstr "Website beim Threat Network registriert."

#: includes/sensor/class-shieldforge-sensor.php:103
#, php-format
msgid "Registration failed: %s"
msgstr "Registrierung fehlgeschlagen: %s"

#: includes/sensor/class-shieldforge-sensor.php:107
msgid "This site is no longer registered. No further data will be sent."
msgstr ""
"Diese Website ist nicht mehr registriert. Es werden keine weiteren Daten "
"gesendet."

#: includes/sensor/class-shieldforge-sensor.php:112
msgid "Network salt refreshed."
msgstr "Netzwerk-Salt erneuert."

#: includes/sensor/class-shieldforge-sensor.php:113
#, php-format
msgid "Salt refresh failed: %s"
msgstr "Salt-Erneuerung fehlgeschlagen: %s"

#: includes/sensor/class-shieldforge-sensor.php:118
#, php-format
msgid "Sent %d event(s) to the Threat Network."
msgstr "%d Ereignis(se) an das Threat Network gesendet."

#: includes/sensor/class-shieldforge-sensor.php:119
#, php-format
msgid "Send failed: %s"
msgstr "Senden fehlgeschlagen: %s"

#~ msgid "Module v0.12 ✨"
#~ msgstr "Module v0.12 ✨"

#~ msgid "v0.12 (neu)"
#~ msgstr "v0.12 (neu)"

#~ msgid ""
#~ "USP gegen US-Konkurrenz: Datenkarte + DSGVO-Art.-15-Auskunft + Art.-17-"
#~ "Löschung in einem Klick."
#~ msgstr ""
#~ "USP gegen US-Konkurrenz: Datenkarte + DSGVO-Art.-15-Auskunft + Art.-17-"
#~ "Löschung in einem Klick."

#~ msgid "Brainwerk Security Suite v0.12 — Neue Module"
#~ msgstr "Brainwerk Security Suite v0.12 — Neue Module"

#~ msgid ""
#~ "9 neue Module, die Brainwerk Security Suite auf Konkurrenz-Niveau "
#~ "(Wordfence/Sucuri/Solid) bringen. Alle standardmäßig OFF. Per Toggle "
#~ "einzeln scharf schalten."
#~ msgstr ""
#~ "9 neue Module, die Brainwerk Security Suite auf Konkurrenz-Niveau "
#~ "(Wordfence/Sucuri/Solid) bringen. Alle standardmäßig OFF. Per Toggle "
#~ "einzeln scharf schalten."

#~ msgid ""
#~ "File restored from the official wordpress.org package: %s (previous "
#~ "version saved to quarantine)."
#~ msgstr ""
#~ "Datei aus dem offiziellen wordpress.org-Paket wiederhergestellt: %s "
#~ "(vorherige Version in die Quarantäne gesichert)."

#~ msgid "Repair failed: %s"
#~ msgstr "Reparatur fehlgeschlagen: %s"

#~ msgid ""
#~ "Compares every installed plugin (official checksums API) and theme "
#~ "(original release ZIP) against the wordpress.org distribution. Modified "
#~ "or missing files can be restored from the original with one click — the "
#~ "tampered version is kept in quarantine. Packages that are not hosted on "
#~ "wordpress.org are reported as \"unverifiable\" and never touched."
#~ msgstr ""
#~ "Vergleicht jedes installierte Plugin (offizielle Checksums-API) und Theme "
#~ "(Original-Release-ZIP) mit der wordpress.org-Distribution. Modifizierte "
#~ "oder fehlende Dateien können mit einem Klick aus dem Original "
#~ "wiederhergestellt werden — die manipulierte Version wandert in die "
#~ "Quarantäne. Pakete, die nicht auf wordpress.org gehostet sind, werden als "
#~ "„nicht verifizierbar“ gemeldet und nie angefasst."

#~ msgid ""
#~ "Replace this file with the official wordpress.org original? The current "
#~ "version is saved to quarantine first."
#~ msgstr ""
#~ "Diese Datei durch das offizielle wordpress.org-Original ersetzen? Die "
#~ "aktuelle Version wird zuerst in die Quarantäne gesichert."

#~ msgid "Restore original"
#~ msgstr "Original wiederherstellen"

#~ msgid ""
#~ "Daily check against a public vulnerability database (default: "
#~ "wpvulnerability.net — free, no API key, EU-hosted). Each scan sends only "
#~ "the slug + version of installed components. No site URL, no admin email, "
#~ "no IPs."
#~ msgstr ""
#~ "Tägliche Prüfung gegen eine öffentliche Schwachstellen-Datenbank "
#~ "(Standard: wpvulnerability.net — kostenlos, kein API-Key, EU-gehostet). "
#~ "Jeder Scan sendet nur den Slug + die Version installierter Komponenten. "
#~ "Keine Site-URL, keine Admin-E-Mail, keine IPs."

#~ msgid ""
#~ "Compares every wp.org-hosted plugin and theme file against the official "
#~ "checksums from wordpress.org. A modified file means someone tampered with "
#~ "it — the one-click \"Repair\" fetches the pristine original, quarantines "
#~ "the modified copy (nothing is deleted), and swaps it in. Plugins/themes "
#~ "NOT from wp.org are listed as \"unverifiable\" and never touched."
#~ msgstr ""
#~ "Vergleicht jede von wp.org gehostete Plugin- und Theme-Datei mit den "
#~ "offiziellen Prüfsummen von wordpress.org. Eine modifizierte Datei "
#~ "bedeutet, dass jemand sie manipuliert hat — das Ein-Klick-„Reparieren“ "
#~ "holt das unveränderte Original, stellt die modifizierte Kopie in "
#~ "Quarantäne (nichts wird gelöscht) und tauscht sie aus. Plugins/Themes, "
#~ "die NICHT von wp.org stammen, werden als „nicht verifizierbar“ gelistet "
#~ "und nie angefasst."

#~ msgid ""
#~ "These modules arrived together in v0.12 and follow one rule: nothing "
#~ "activates itself. Each card on this page is one module — a toggle, its "
#~ "settings, and where applicable a small data view. Enable only what you "
#~ "need; every module you leave off costs zero performance."
#~ msgstr ""
#~ "Diese Module kamen gemeinsam mit v0.12 und folgen einer Regel: Nichts "
#~ "aktiviert sich selbst. Jede Karte auf dieser Seite ist ein Modul — ein "
#~ "Schalter, seine Einstellungen und, wo sinnvoll, eine kleine Datenansicht. "
#~ "Aktivieren Sie nur, was Sie brauchen; jedes Modul, das aus bleibt, kostet "
#~ "null Performance."

#~ msgid ""
#~ "From shieldforge.brainwerk.at. Brainwerk Security Suite Pro is a separate "
#~ "plugin (.zip) that you install alongside this free one — license "
#~ "activation happens inside the Pro plugin, no key has to be entered here."
#~ msgstr ""
#~ "Von shieldforge.brainwerk.at. Brainwerk Security Suite Pro ist ein "
#~ "separates Plugin (.zip), das Sie neben diesem kostenlosen installieren — "
#~ "die Lizenzaktivierung erfolgt im Pro-Plugin, hier muss kein Schlüssel "
#~ "eingegeben werden."
