# German translation of Basic Firewall (2.0.0-beta8)
# Copyright (c) 2026 by the German translation team
#
msgid ""
msgstr ""
"Project-Id-Version: Basic Firewall (2.0.0-beta8)\n"
"POT-Creation-Date: 2026-09-15 20:52+0000\n"
"PO-Revision-Date: YYYY-mm-DD HH:MM+ZZZZ\n"
"Language-Team: German\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"

msgid "Disabled"
msgstr "Deaktiviert"
msgid "unknown"
msgstr "unbekannt"
msgid "File"
msgstr "Datei"
msgid "Out of date"
msgstr "Veraltet"
msgid "Missing"
msgstr "Fehlt"
msgid "Exception"
msgstr "Exception"
msgid "Not configured"
msgstr "Nicht konfiguriert"
msgid "Log only"
msgstr "Nur Protokollieren"
msgid "unnamed"
msgstr "Unbenannt"
msgid "Not writable"
msgstr "Nicht beschreibbar"
msgid ""
"Evaluation happens before Drupal's own page cache, but <em>after</em> "
"any cache in front of Drupal. A reverse proxy or CDN serving a "
"response from its own store answers without reaching PHP, so no rule "
"is evaluated for that request at all. Responses earned by solving a "
"challenge are marked private so a shared cache will not keep them, but "
"a rule added to a path that is already cached at the edge does not "
"take effect there until that copy expires or is purged."
msgstr ""
"Die Auswertung erfolgt vor dem Drupal-eigenen Seiten-Cache, aber "
"<em>nach</em> jedem Cache, der vor Drupal liegt. Ein Reverse-Proxy "
"oder ein CDN, das eine Antwort aus seinem eigenen Speicher "
"bereitstellt, antwortet, ohne PHP zu erreichen, sodass für diese "
"Anfrage überhaupt keine Regel ausgewertet wird. Antworten, die durch "
"das Lösen einer Herausforderung gewonnen wurden, werden als "
"„privat“ gekennzeichnet, sodass ein gemeinsam genutzter Cache sie "
"nicht speichert; eine Regel, die einem Pfad hinzugefügt wird, der am "
"Edge bereits zwischengespeichert ist, wird dort jedoch erst wirksam, "
"wenn diese Kopie abläuft oder gelöscht wird."
msgid ""
"Matches are raised as exceptions for the host application to answer, "
"which is what a framework or a test suite wants rather than a live "
"site. A matching rule is refused with 403. <strong>Challenge rules "
"cannot be served in this mode</strong> — the library reports that an "
"interstitial is required without producing one, so those rules refuse "
"the visitor instead of offering the puzzle. Switch to \"Block\" for "
"challenges to work."
msgstr ""
"Übereinstimmungen werden als Ausnahmen ausgelöst, auf die die "
"Host-Anwendung reagieren muss – was eher den Anforderungen eines "
"Frameworks oder einer Testsuite entspricht als denen einer "
"Live-Website. Eine übereinstimmende Regel wird mit dem Status 403 "
"abgelehnt. <strong>Challenge-Regeln können in diesem Modus nicht "
"ausgeführt werden</strong> – die Bibliothek meldet, dass ein "
"Interstitial erforderlich ist, ohne jedoch eines zu erzeugen, sodass "
"diese Regeln den Besucher ablehnen, anstatt ihm das Rätsel "
"anzubieten. Wechseln Sie zu „Blockieren“, damit die Challenges "
"funktionieren."
msgid ""
"Matches are raised as exceptions for the host application to answer, "
"which is what a framework or a test suite wants rather than a live "
"site. A matching rule is refused with 403. Switch the operating mode "
"to \"Block\" to have the firewall serve its own rejection."
msgstr ""
"Übereinstimmungen werden als Ausnahmen ausgelöst, auf die die "
"Host-Anwendung reagieren muss – was eher den Anforderungen eines "
"Frameworks oder einer Testsuite entspricht als denen einer "
"Live-Website. Eine übereinstimmende Regel wird mit dem Statuscode 403 "
"abgelehnt. Wechseln Sie in den Betriebsmodus „Blockieren“, damit "
"die Firewall die Ablehnung selbst durchführt."
msgid ""
"A rule can take its entries from a list published somewhere else — a "
"threat feed, a cloud provider's address ranges, a file your team keeps "
"in the repository — instead of having them typed in and kept up to "
"date by hand. Add one by editing a rule and expanding <em>Imported "
"lists</em>."
msgstr ""
"Eine Regel kann ihre Einträge einer an anderer Stelle "
"veröffentlichten Liste entnehmen – einem Bedrohungs-Feed, den "
"Adressbereichen eines Cloud-Anbieters, einer Datei, die Ihr Team im "
"Repository speichert –, anstatt sie manuell eintippen und auf dem "
"neuesten Stand halten zu müssen. Fügen Sie eine hinzu, indem Sie "
"eine Regel bearbeiten und <em>Importierte Listen</em> erweitern."
msgid ""
"The firewall never fetches a list while serving a request. Doing so "
"would make a visitor wait on somebody else's HTTP server, inside the "
"firewall, before Drupal's page cache has even been consulted — and "
"when a list expired under load, every concurrent request would go "
"after the same URL at once. Copies are refreshed on cron instead, or "
"by running <code>drush basic-firewall:sources</code> from a deploy "
"step. The consequence is worth knowing: <strong>a list that has never "
"been fetched contributes nothing</strong>, and the rule importing it "
"matches nothing, until the first refresh has run."
msgstr ""
"Die Firewall ruft während der Bearbeitung einer Anfrage niemals eine "
"Liste ab. Dies würde dazu führen, dass ein Besucher auf dem "
"HTTP-Server einer anderen Person innerhalb der Firewall wartet, bevor "
"der Seitencache von Drupal überhaupt abgefragt wurde – und wenn "
"eine Liste unter Last abläuft, würde jede gleichzeitige Anfrage "
"gleichzeitig dieselbe URL ansprechen. Kopien werden stattdessen auf "
"cron oder durch Ausführen von <code>drush "
"basic-firewall:sources</code> in einem Bereitstellungsschritt "
"aktualisiert. Die Konsequenz ist wissenswert: <strong>Eine Liste, die "
"noch nie abgerufen wurde, trägt nichts bei</strong> und die Regel, "
"die sie importiert, stimmt mit nichts überein, bis die erste "
"Aktualisierung ausgeführt wurde."
msgid ""
"To accept the latency instead and let the firewall fetch during a "
"request, set <code>$settings['basic_firewall_sources_offline'] = "
"FALSE;</code> in settings.php."
msgstr ""
"Um stattdessen die Latenz zu akzeptieren und die Firewall während "
"einer Anfrage abholen zu lassen, legen Sie in der Datei "
"„settings.php“ <code>$settings['basic_firewall_sources_offline'] = "
"FALSE;</code> fest."
msgid ""
"Every record here names the rule that produced it, so this is where "
"\"which rule is blocking that client\" gets answered. Records are "
"written by the database log handler on the Logging tab; a file handler "
"produces the same events, but only this one can be grouped and "
"filtered."
msgstr ""
"Jeder Datensatz hier benennt die Regel, die ihn erstellt hat. Daher "
"wird hier die Frage beantwortet, welche Regel diesen Client blockiert. "
"Datensätze werden vom Datenbankprotokollhandler auf der Registerkarte "
"„Protokollierung“ geschrieben. Ein Dateihandler erzeugt dieselben "
"Ereignisse, aber nur dieses kann gruppiert und gefiltert werden."
msgid ""
"Levels decide what appears. Blocks and challenges are recorded at "
"warning and above; <em>debug</em> records a row for every allowed "
"request too, which is worth switching on while working out why a rule "
"does not match and worth switching off afterwards."
msgstr ""
"Die Ebenen entscheiden darüber, was angezeigt wird. Blockaden und "
"Herausforderungen werden bei Warnung und darüber aufgezeichnet; "
"<em>debug</em> zeichnet auch eine Zeile für jede zulässige Anfrage "
"auf. Es lohnt sich, diese Option einzuschalten, während man "
"herausfindet, warum eine Regel nicht übereinstimmt, und es lohnt "
"sich, sie anschließend auszuschalten."
msgid "Removed @count expired firewall log record(s)."
msgstr "@count abgelaufene Firewall-Protokolleinträge entfernt."
msgid "Basic Firewall edge geolocation"
msgstr "Grundlegende Geolokalisierung des Firewall-Edges"
msgid "Not trusted"
msgstr "Nicht vertrauenswürdig"
msgid ""
"These rules read the visitor's country from a CDN header, but Drupal's "
"reverse proxy settings are not configured, so the firewall will not "
"believe the header and the rules match nothing: @rules. Set "
"<code>$settings['reverse_proxy']</code> and "
"<code>$settings['reverse_proxy_addresses']</code> to your CDN's "
"ranges."
msgstr ""
"Diese Regeln lesen das Land des Besuchers aus einem CDN-Header, aber "
"die Reverse-Proxy-Einstellungen von Drupal sind nicht konfiguriert, "
"sodass die Firewall den Header nicht glaubt und die Regeln mit nichts "
"übereinstimmen: @rules. Legen Sie "
"<code>$settings['reverse_proxy']</code> und "
"<code>$settings['reverse_proxy_addresses']</code> auf die Bereiche "
"Ihres CDN fest."
msgid "Basic Firewall imported lists"
msgstr "Importierte Listen der Basic Firewall"
msgid "@missing of @total never fetched"
msgstr "@missing von @total wurde nie abgerufen"
msgid ""
"These lists have no cached copy, so the rules importing them are "
"contributing nothing: @names. Run <code>drush "
"basic-firewall:sources</code>, wait for cron, or <a "
"href=\":url\">refresh them now</a>."
msgstr ""
"Diese Listen haben keine zwischengespeicherte Kopie, daher tragen die "
"Regeln, die sie importieren, nichts bei: @names. Führen Sie "
"<code>drush basic-firewall:sources</code> aus, warten Sie auf Cron "
"oder <a href=\":url\">aktualisieren Sie sie jetzt</a>."
msgid "@count list(s), @entries entries"
msgstr "@count Liste(n), @entries Einträge"
msgid "Basic Firewall compiled mode"
msgstr "Kompilierter Basis-Firewall-Modus"
msgid "Compiled as @compiled, configured as @configured"
msgstr "Kompiliert als @compiled, konfiguriert als @configured"
msgid ""
"The compiled configuration the firewall actually reads is in "
"<strong>@compiled</strong> mode, but this site is configured for "
"<strong>@configured</strong>. Something is overriding it — most "
"likely the Advanced tab, a preset, or an imported document. The "
"compiled value is the one in force."
msgstr ""
"Die kompilierte Konfiguration, die die Firewall tatsächlich liest, "
"befindet sich im Modus <strong>@compiled</strong>, diese Site ist "
"jedoch für <strong>@configured</strong> konfiguriert. Etwas "
"überschreibt es – höchstwahrscheinlich die Registerkarte "
"„Erweitert“, eine Voreinstellung oder ein importiertes Dokument. "
"Der kompilierte Wert ist der gültige."
msgid "Basic Firewall storage backend"
msgstr "Grundlegendes Firewall-Speicher-Backend"
msgid ""
"File storage costs more the longer the block list gets, so it slows "
"down exactly when the firewall is busiest, and it cannot be shared "
"between web nodes. Measured per storage call: an empty list reads in "
"0.003 ms against the database's 0.035 ms, and 2,000 blocked clients "
"read in 0.817 ms against 0.069 ms — so file is faster while the list "
"is small and loses once it passes roughly a hundred clients, which an "
"attack reaches in seconds. Consider the database on the <a "
"href=\":url\">Storage</a> tab if this site runs more than one web node "
"or expects to block at that scale. Two things to know first: the block "
"list does not move with the change, so anything currently blocked is "
"forgotten, and database storage does not work on the optional "
"settings.php evaluation path."
msgstr ""
"Die Dateispeicherung kostet umso mehr, je länger die Sperrliste wird. "
"Daher wird sie genau dann langsamer, wenn die Firewall am stärksten "
"ausgelastet ist, und sie kann nicht von Webknoten gemeinsam genutzt "
"werden. Gemessen pro Speicheraufruf: Eine leere Liste liest 0,003 ms "
"im Vergleich zu 0,035 ms in der Datenbank und 2.000 blockierte Clients "
"lesen in 0,817 ms im Vergleich zu 0,069 ms – die Datei ist also "
"schneller, während die Liste klein ist, und verliert, sobald sie "
"ungefähr hundert Clients passiert, die ein Angriff in Sekunden "
"erreicht. Ziehen Sie die Datenbank auf der Registerkarte <a "
"href=\":url\">Speicher</a> in Betracht, wenn auf dieser Site mehr als "
"ein Webknoten ausgeführt wird oder eine Blockierung in dieser "
"Größenordnung erwartet wird. Zwei Dinge, die Sie zunächst wissen "
"sollten: Die Sperrliste wird mit der Änderung nicht verschoben, "
"sodass alles, was derzeit blockiert ist, vergessen wird und die "
"Datenbankspeicherung auf dem optionalen Auswertungspfad "
"„settings.php“ nicht funktioniert."
msgid "Basic Firewall rules not running"
msgstr "Grundlegende Firewallregeln werden nicht ausgeführt"
msgid ""
"The compiled configuration is valid and these rules are in it, but the "
"library could not start them or cannot reach what they depend on. "
"Traffic they were meant to handle is not being handled."
msgstr ""
"Die kompilierte Konfiguration ist gültig und diese Regeln sind darin "
"enthalten, aber die Bibliothek konnte sie nicht starten oder kann "
"nicht erreichen, wovon sie abhängen. Der Verkehr, den sie bewältigen "
"sollten, wird nicht abgewickelt."
msgid "Basic Firewall rate limit scope"
msgstr "Bereich der grundlegenden Firewall-Ratenbegrenzung"
msgid "@count rule(s) limit every path"
msgstr "@count-Regel(n) begrenzen jeden Pfad"
msgid ""
"These rules list particular paths and also apply their fallback limit "
"to every other path on the site, per address. Every request to every "
"URL therefore reads and writes the counter store. Untick \"Apply this "
"limit to every other path too\" on the rule to limit only what it "
"lists."
msgstr ""
"Diese Regeln listen bestimmte Pfade auf und wenden ihr Fallback-Limit "
"auch auf jeden anderen Pfad auf der Site pro Adresse an. Jede Anfrage "
"an jede URL liest und schreibt daher den Zählerspeicher. Deaktivieren "
"Sie in der Regel das Kontrollkästchen „Diese Beschränkung auch auf "
"alle anderen Pfade anwenden“, um nur die darin aufgeführten Pfade "
"einzuschränken."
