{
  "@@locale": "de",
  "nav.home": "Status",
  "status.title": "Status",
  "status.sip.connected": "Angemeldet",
  "status.sip.connecting": "Verbinde…",
  "status.sip.not_configured": "Nicht eingerichtet",
  "status.sip.since": "seit {duration}",
  "duration.seconds": "{n} s",
  "duration.minutes": "{n} min",
  "duration.hours": "{n} h",
  "duration.days": "{n} d",
  "status.sip.at": "bei {host} als {user}",
  "status.sip.ext": "Interne Nummer {n}",
  "status.sip.public_ip": "öffentliche IP {ip}",
  "status.sip.nat_symmetric": "⚠️ symmetrisches NAT — Audio braucht eine portgleiche RTP-Port-Weiterleitung",
  "status.sip.stun": "STUN {server} · NAT: {nat}",
  "status.sip.setup_cta": "Telefonie einrichten",
  "status.sip.redo_cta": "Telefonie neu einrichten",
  "status.token.set": "PhoneBlock-Token gesetzt",
  "status.token.missing": "Kein PhoneBlock-Token",
  "status.token.rejected": "Token abgelehnt",
  "status.token.rejected.msg": "PhoneBlock hat das Token zurückgewiesen. Bitte über „Neu anfordern\" ein neues Token erzeugen.",
  "status.token.cta": "Token anlegen",
  "status.token.test": "Testen",
  "status.token.renew": "Neu anfordern",
  "status.token.testing": "Prüfe Token…",
  "status.token.test.ok": "Token gültig — PhoneBlock erreichbar.",
  "status.token.test.fail": "Token wurde abgelehnt. Bitte neu anfordern.",
  "status.token.test.none": "Kein Token gesetzt.",
  "status.counters.total": "Gesamt",
  "status.counters.spam": "Spam geblockt",
  "status.counters.legit": "Legitim",
  "status.counters.errors": "Fehler",
  "status.counters.reset": "Alle Zähler zurücksetzen",
  "status.info": "Firmware {fw} · IP {ip} · Uptime {uptime} · API-Latenz {api}",
  "status.api.failed": "Der letzte Aufruf des PhoneBlock-Servers ({when}) ist fehlgeschlagen: {reason}.",
  "status.api.fail.dns": "Servername nicht auflösbar (DNS)",
  "status.api.fail.connect": "keine Verbindung zum Server",
  "status.api.fail.tls": "sichere Verbindung (TLS) fehlgeschlagen",
  "status.api.fail.timeout": "keine Antwort innerhalb der Wartezeit",
  "status.api.fail.http": "Server antwortet mit HTTP {status}",
  "status.api.fail.other": "Übertragungsfehler",
  "status.api.fail.hint": "Prüfe die Internetverbindung des Routers und die Netzwerkeinstellungen (Gateway, DNS) des Dongles.",
  "status.calls.title": "Letzte Anrufe",
  "status.calls.empty": "noch keine Anrufe",
  "status.calls.col.when": "Wann",
  "status.calls.col.number": "Nummer",
  "status.calls.col.name": "Name",
  "status.calls.col.verdict": "Urteil",
  "status.calls.show_all": "Alle anzeigen ({count})",
  "status.calls.show_less": "Weniger anzeigen",
  "status.calls.time_unknown": "unbekannt",
  "status.calls.clear": "Liste leeren",
  "status.calls.log_known": "Bekannte Anrufer protokollieren",
  "status.calls.log_known.help": "Wenn deaktiviert, erscheinen Anrufe von Nummern aus dem Telefonbuch und interne Codes (**, *…) nicht in der Liste — die Zähler oben werden trotzdem aktualisiert.",
  "status.calls.verdict.spam": "SPAM ({direct} direkt, {range} Range)",
  "status.calls.verdict.spam_plain": "SPAM",
  "status.calls.verdict.spam_list": "SPAM (Blockliste, {scope})",
  "status.calls.verdict.suspect": "SPAM-VERDACHT ({direct} direkt, {range} Range)",
  "status.calls.verdict.blacklist": "SPAM (Blacklist, {scope})",
  "status.calls.verdict.name_pattern": "SPAM (Namensmuster)",
  "status.calls.verdict.legitimate": "legitim",
  "status.calls.verdict.unknown": "unbekannt",
  "status.calls.verdict.test": "Test",
  "status.calls.verdict.error": "Fehler",
  "status.calls.verdict.scope.number": "Nummer",
  "status.calls.verdict.scope.range": "Bereich",
  "region.title": "Sprache und Land",
  "region.lang": "Sprache",
  "region.country": "Land",
  "region.country.hint": "Rufnummern ohne Ländervorwahl werden mit diesem Land ergänzt. Steht hier das falsche Land, findet PhoneBlock zu keinem Anruf einen Eintrag. Die Sprache gilt auch für die Ansage des Anrufbeantworters und die Status-Mail.",
  "status.thresholds.title": "Block-Schwellen",
  "status.thresholds.intro": "Ab wie vielen PhoneBlock-Stimmen der Dongle einen Anruf wegnimmt. Direkt-Stimmen wiegen schwerer als Range-Stimmen, deshalb getrennte Werte.",
  "status.thresholds.direct": "Direkt-Stimmen",
  "status.thresholds.direct.help": "Stimmen direkt gegen die anrufende Nummer. Default 4 — gleicher Wert wie die öffentliche PhoneBlock-Sperrliste.",
  "status.thresholds.range": "Range-Stimmen",
  "status.thresholds.range.help": "Stimmen gegen Nachbarn im selben 10er- oder 100er-Block. Default 10. „Aus\" schaltet Range-Block ab — dann zählen nur Direkt-Treffer.",
  "status.thresholds.range.off": "Aus",
  "status.thresholds.saved": "Gespeichert.",
  "status.thresholds.invalid": "Ungültiger Wert.",
  "status.system.title": "System",
  "status.system.heap": "Freier Speicher: {free} (Minimum: {min}, größter Block: {largest})",
  "status.system.fs": "Datenpartition: {free} frei von {total} ({used} belegt)",
  "status.system.temp": "Chiptemperatur: {temp} °C",
  "status.system.wifi": "WLAN-Signal: {rssi} dBm ({quality})",
  "status.system.wifi.good": "gut",
  "status.system.wifi.ok": "ausreichend",
  "status.system.wifi.weak": "schwach",
  "status.system.wifi_tx": "Sendeleistung: {tx} dBm",
  "status.system.wifi_link": "WLAN „{ssid}“ über Access Point {bssid}, Kanal {channel}, verbunden seit {since}",
  "status.system.wifi_drops": "{drops} Verbindungsabbrüche seit dem Start",
  "status.system.wifi.weak_hint": "Schwaches WLAN-Signal: Stelle den Dongle näher an die Fritz!Box oder einen Repeater. Im Mesh zeigt die Mesh-Übersicht der Fritz!Box, an welcher Box er angemeldet ist.",
  "status.system.col.task": "Task",
  "status.system.col.cpu": "CPU",
  "status.system.col.stack": "Stack frei",
  "status.system.led_quiet": "LED nur bei Problemen leuchten lassen",
  "status.system.led_quiet.hint": "Normalerweise leuchtet die LED dauerhaft, wenn alles in Ordnung ist. Mit dieser Option bleibt sie im Normalbetrieb aus und leuchtet oder blinkt nur, wenn ein Problem vorliegt (Einrichtung nötig, keine Registrierung, Token ungültig, keine Verbindung). Praktisch im Wohnzimmer.",
  "status.system.lcd_flip": "Display auf dem Kopf (180° drehen)",
  "status.system.lcd_flip.hint": "Je nachdem, wie der USB-Anschluss Deiner Fritz!Box liegt, steht der Stick andersherum. Dreht die Anzeige um 180°.",
  "status.system.hostname": "Hostname im Heimnetz",
  "status.system.hostname.help": "Unter diesem Namen ist der Dongle im Heimnetz erreichbar. Mit mehreren Dongles braucht jeder einen eigenen Namen. Erlaubt sind a–z, 0–9 und -, höchstens 32 Zeichen. Leer lassen für „answerbot“.",
  "status.system.hostname.save": "Speichern",
  "status.system.hostname.saved": "Gespeichert. {name}.local ist ab sofort erreichbar. In der Fritz!Box (Geräteliste und http://{name}/) erscheint der neue Name nach einem Neustart des Dongles.",
  "status.system.hostname.unchanged": "Der Name ist unverändert.",
  "status.system.hostname.err": "Ungültiger Name: nur a–z, 0–9 und -, 1 bis 32 Zeichen, kein - am Anfang oder Ende. Nichts wurde gespeichert.",
  "status.system.hostname.failed": "Speichern fehlgeschlagen.",
  "status.clock.now": "Uhrzeit: {time}",
  "status.clock.pending": "Uhrzeit: wird synchronisiert …",
  "status.time.today": "heute {time}",
  "status.time.yesterday": "gestern {time}",
  "status.tz.current": "Zeitzone: {tz}",
  "status.tz.apply": "Auf {zone} umstellen",
  "status.tz.saved": "Zeitzone gespeichert.",
  "status.errors.title": "Protokoll",
  "status.errors.note": "Das Protokoll dient der Fehleranalyse — nicht jeder angezeigte Eintrag ist ein echtes Problem; viele Fehler sind vorübergehend und verschwinden von selbst.",
  "status.errors.empty": "keine Einträge",
  "status.errors.clear": "Protokoll leeren",
  "status.errors.capture_info": "Auch Infos protokollieren",
  "status.errors.capture_info.hint": "Für die Fehlersuche: zeigt zusätzlich Info-Meldungen (z. B. versuchter Server:Port). Füllt das Protokoll schnell — danach wieder ausschalten.",
  "status.auth.title": "Zugangsschutz",
  "status.auth.intro": "Schützt die Konfigurationsoberfläche im laufenden Betrieb. Aktivierst Du den Schutz, fragt diese Seite ab dann nach einer Anmeldung über Deinen PhoneBlock-Account, bevor sie Anrufdaten zeigt oder Einstellungen entgegennimmt.",
  "status.auth.disabled": "Zugangsschutz aus — jeder im LAN erreicht das Dashboard ohne Anmeldung.",
  "status.auth.enabled": "Zugangsschutz aktiv — angemeldet als PhoneBlock-Nutzer.",
  "status.auth.enabled.user": "Zugangsschutz aktiv — angemeldet als {user}.",
  "status.auth.no_token": "Zugangsschutz benötigt einen konfigurierten PhoneBlock-Token (siehe Schritt 2 oben). Erst dann kann der Dongle Deine Identität gegen den Server prüfen.",
  "status.auth.enable": "Zugangsschutz einschalten",
  "status.auth.disable": "Zugangsschutz ausschalten",
  "status.auth.logout": "Abmelden",
  "status.auth.activate.intro": "Vor dem Einschalten wirst Du zu phoneblock.net umgeleitet, um Dich anzumelden — erst nach erfolgreicher Anmeldung wird der Schutz aktiviert. So kannst Du Dich nicht aussperren.",
  "login.title": "Anmeldung erforderlich",
  "login.intro": "Der Zugangsschutz für diesen Dongle ist aktiv. Klicke unten, um Dich über Deinen PhoneBlock-Account anzumelden — Du wirst kurz zu phoneblock.net umgeleitet und automatisch zurückgeschickt.",
  "login.button": "Mit PhoneBlock anmelden",
  "login.remember": "Angemeldet bleiben",
  "login.remember.help": "Setzt einen Cookie auf diesem Gerät, damit der Dongle Dich beim nächsten Mal ohne Umweg über phoneblock.net wiedererkennt. Es wird nur ein Browser gleichzeitig „gemerkt“.",
  "login.error.mismatch": "Anmeldung fehlgeschlagen — dieser PhoneBlock-Account ist nicht der Eigentümer dieses Dongles.",
  "login.error.mismatch_named": "Anmeldung fehlgeschlagen — dieser Dongle gehört zum Account {expected}, Du bist aber als anderer Nutzer angemeldet.",
  "login.error.rejected": "Anmeldung fehlgeschlagen — der PhoneBlock-Server hat die Identität nicht bestätigt.",
  "login.error.expired": "Die Anmeldung ist abgelaufen oder ungültig. Bitte erneut versuchen.",
  "login.error.persist": "Aktivierung konnte nicht gespeichert werden. Bitte erneut versuchen.",
  "login.error.missing": "Die Antwort von phoneblock.net war unvollständig. Bitte erneut versuchen.",
  "login.error.generic": "Anmeldung fehlgeschlagen. Bitte erneut versuchen.",
  "status.reset.title": "Werkseinstellungen",
  "status.reset.intro": "Löscht alle Einstellungen im Dongle (SIP-Zugangsdaten, PhoneBlock-Token, Fehlerverlauf) und startet neu.",
  "status.reset.button": "Konfiguration zurücksetzen",
  "status.reset.confirm": "Alle Dongle-Einstellungen wirklich löschen und neu starten?",
  "status.reset.running": "Wird zurückgesetzt — der Dongle startet gleich neu.",
  "status.reset.error": "Zurücksetzen fehlgeschlagen: {msg}",
  "status.fw.title": "Firmware aktualisieren",
  "status.fw.intro": "Neue Firmware-Datei hochladen oder direkt gegen die PhoneBlock-CDN prüfen. In beiden Fällen landet die neue Version im inaktiven Flash-Slot; nach dem Neustart bootet der Dongle die neue Version und rollt bei Fehlern automatisch zurück.",
  "status.fw.current": "Aktive Partition: {partition} · Version {version}",
  "status.fw.pick": "Firmware wählen (.bin)",
  "status.fw.submit": "Hochladen & neu starten",
  "status.fw.confirm": "Neue Firmware installieren und Dongle neu starten?",
  "status.fw.uploading": "Übertrage… {pct} %",
  "status.fw.done": "Firmware übertragen — Dongle startet neu. Bitte einen Moment warten und dann die Seite neu laden.",
  "status.fw.error": "Fehler: {msg}",
  "status.fw.check": "Auf Aktualisierung prüfen",
  "status.fw.checking": "Prüfe auf Aktualisierung…",
  "status.fw.check.none": "Keine neue Version verfügbar (aktuell {version}).",
  "status.fw.check.found": "Neue Version {version} wird installiert…",
  "status.fw.check.older": "Auf diesem Kanal gibt es nur die ältere Version {version} (installiert ist {current}). Der Dongle bleibt auf {current}, bis eine neuere Version erscheint.",
  "status.fw.downgrade": "Trotzdem {version} installieren",
  "status.fw.downgrade.confirm": "Wirklich auf die ältere Version {version} zurückgehen? Funktionen der neueren Version gehen dabei verloren.",
  "status.fw.check.installed": "Version {version} installiert — Dongle startet neu. Bitte einen Moment warten und dann die Seite neu laden.",
  "status.fw.check.error": "Prüfung fehlgeschlagen: {msg}",
  "status.fw.failed": "Letztes Update auf Version {version} hat den Boot nicht überstanden — automatisch zurückgerollt. Auto-Update überspringt diese Version. Klick auf „Auf Aktualisierung prüfen\", um es erneut zu versuchen.",
  "status.fw.auto_update": "Tägliche Auto-Aktualisierung",
  "status.fw.auto_update.help": "Wenn aktiv, prüft der Dongle einmal pro Tag, ob auf der PhoneBlock-CDN eine neuere Version liegt, und installiert sie automatisch. Beim manuellen Hochladen einer Firmware wird diese Option automatisch ausgeschaltet, damit der Daily-Check Deinen handgewählten Build nicht überschreibt — schalte sie hier wieder ein, wenn Du dem Release-Strom folgen willst.",
  "status.fw.channel": "Update-Kanal",
  "status.fw.channel.help": "Wähle „Beta\", wenn Du Testversionen vorab erhalten möchtest — etwa um einen gemeldeten Fehler gegenzuprüfen. „Stabil\" liefert nur freigegebene Versionen. Sobald eine getestete Version final freigegeben wird, wechselst Du automatisch wieder auf diese.",
  "status.fw.channel.stable": "Stabil",
  "status.fw.channel.beta": "Beta (Testversionen)",
  "status.fw.crash_report": "Fehlerberichte an phoneblock.net senden",
  "status.fw.crash_report.help": "Wenn der Dongle wegen eines Programmfehlers neu startet, wird ein Speicherauszug auf einer dafür reservierten Flash-Partition abgelegt. Ist diese Option aktiv, lädt der Dongle den Auszug beim nächsten Start an phoneblock.net hoch — das hilft uns, Felddefekte zu finden und zu fixen. Schalte die Option aus, wenn der Dongle solche Berichte nicht senden soll; gespeicherte Auszüge werden dann lokal gelöscht statt verschickt.",
  "status.mail.title": "Status-E-Mails",
  "status.mail.intro": "Der Dongle kann dir Statusmeldungen direkt per E-Mail schicken — über dein eigenes E-Mail-Konto. Trage die Zugangsdaten deines Mail-Anbieters ein; der Dongle versendet darüber höchstens eine Meldung pro Tag.",
  "status.mail.host": "SMTP-Server",
  "status.mail.port": "Port (leer = automatisch)",
  "status.mail.security": "Verschlüsselung",
  "status.mail.security.tls": "TLS (Port 465)",
  "status.mail.security.starttls": "STARTTLS (Port 587)",
  "status.mail.user": "Benutzername (SMTP-Login)",
  "status.mail.pass": "Passwort",
  "status.mail.pass.keep": "gespeichert — leer lassen, um es zu behalten",
  "status.mail.from": "Absender (E-Mail, leer = Benutzername)",
  "status.mail.to": "Empfänger (E-Mail, mehrere mit „;\" trennen)",
  "status.mail.help": "Tipp: Bei Gmail oder Outlook brauchst du meist ein „App-Passwort\" (bei aktivierter Zwei-Faktor-Anmeldung), nicht dein normales Kontopasswort. Klassische Anbieter wie GMX, web.de oder mailbox.org funktionieren mit Benutzername und Passwort.",
  "status.mail.on_error": "E-Mail bei Fehlern und Abstürzen",
  "status.mail.on_error.help": "Sendet einmal täglich eine E-Mail, wenn seit der letzten Meldung ein Fehler im Protokoll aufgetreten ist — dazu zählt auch ein Neustart nach einem Absturz.",
  "status.mail.on_spam": "Anrufe per E-Mail melden",
  "status.mail.on_spam.help": "Sendet einmal täglich eine E-Mail mit den Anrufen seit der letzten Meldung – blockierte und durchgelassene.",
  "status.mail.spam_only": "Nur abgewehrte SPAM-Anrufe melden",
  "status.mail.spam_only.help": "Die Anruf-E-Mail listet nur Anrufe, die der Dongle als SPAM abgewehrt hat. Legitime und unbekannte Anrufer fehlen, und kommen nur solche Anrufe, wird keine E-Mail verschickt.",
  "status.mail.on_update": "E-Mail bei Firmware-Aktualisierung",
  "status.mail.on_update.help": "Sendet eine E-Mail, nachdem sich der Dongle auf eine neue Firmware-Version aktualisiert hat — mit einem Link zum Änderungsprotokoll.",
  "status.mail.save": "Speichern",
  "status.mail.saved": "Gespeichert.",
  "status.mail.test": "Test-E-Mail senden",
  "status.mail.testing": "Sende Test-E-Mail…",
  "status.mail.test.sent": "Test-E-Mail wird gesendet — das Ergebnis steht im Protokoll.",
  "status.mail.test.fail": "Versand fehlgeschlagen — bitte Einstellungen und Protokoll prüfen.",
  "status.mail.err.host": "SMTP-Server fehlt",
  "status.mail.err.user": "Benutzername fehlt",
  "status.mail.err.pass": "Passwort fehlt",
  "status.mail.err.to": "Empfänger ungültig",
  "status.mail.err.to_many": "Höchstens {max} Empfänger möglich",
  "status.mail.err.from": "Absender ungültig",
  "status.mail.err.from_user": "Absender nötig — der Benutzername ist keine E-Mail-Adresse",
  "status.sync.title": "Sperrlisten-Sync",
  "status.sync.intro": "Am Mobilteil gesperrte Nummern („Nummer sperren\") werden einmal pro Tag zur PhoneBlock-Datenbank übertragen und danach aus der Fritz!Box entfernt. Der Answerbot fängt die Anrufer dann für alle PhoneBlock-Nutzer ab.",
  "status.sync.unavailable": "Nicht verfügbar — nur mit Fritz!Box-Einrichtung nutzbar.",
  "status.sync.never": "Noch nicht gelaufen.",
  "status.sync.last_ok": "Letzter Lauf vor {ago}: {n} übertragen.",
  "status.sync.last_partial": "Letzter Lauf vor {ago}: {n} übertragen, {f} Fehler.",
  "status.sync.last_fail": "Letzter Lauf vor {ago} fehlgeschlagen: {err}",
  "status.sync.running": "Sync läuft gerade…",
  "status.sync.run_now": "Jetzt synchronisieren",
  "status.sync.triggered": "Sync gestartet.",
  "status.sync.busy": "Sync läuft bereits.",
  "status.sync.enable": "Sperrlisten-Sync aktivieren",
  "status.sync.disabled": "Automatischer Sync deaktiviert — manuell weiterhin möglich.",
  "status.localcache.title": "Blocklist-Cache",
  "status.localcache.intro": "Einmal pro Tag lädt der Dongle die aktuelle Sperrliste und Deine persönliche Black-/White-List herunter und legt sie auf dem internen Flash ab. Eingehende Anrufe werden so überwiegend ohne Server-Anfrage entschieden — schneller und auch bei Netzproblemen verlässlich.",
  "status.localcache.enable": "Blocklist-Cache verwenden",
  "status.localcache.enable.help": "Lädt die Sperrliste auf den Dongle und entscheidet Anrufe lokal. Aus: Jeder Anruf wird direkt beim Server geprüft — langsamer und nur bei funktionierender Internetverbindung möglich.",
  "status.localcache.disabled": "Deaktiviert — Anrufe werden direkt beim Server geprüft.",
  "status.localcache.never": "Noch nicht heruntergeladen.",
  "status.localcache.have": "{community} Einträge in der Gemeinschaftsliste, {personal} persönlich. Aktualisiert vor {ago}.",
  "status.localcache.last_fail": "Letzter Download vor {ago} fehlgeschlagen: {err}",
  "status.localcache.running": "Download läuft gerade…",
  "status.localcache.wildcards": "Wildcard-Sperren auswerten",
  "status.localcache.wildcards.help": "Sperrt nicht nur exakte Nummern, sondern auch Rufnummern-Bereiche (z.B. „030 12 34 56*\"), wenn die Gemeinschaft sie als Spam meldet. Aus, wenn Du nur exakte Treffer sperren willst.",
  "status.localcache.run_now": "Jetzt herunterladen",
  "status.localcache.triggered": "Download gestartet.",
  "status.localcache.busy": "Download läuft bereits.",
  "status.names.title": "Namensfilter",
  "status.names.intro": "Wenn Deine FRITZ!Box den Anrufer in einem Telefonbuch findet, meldet sie seinen Namen mit. Verwendest Du dort eine fremde Spam-Liste (z.B. von Tellows), tragen alle Einträge einen verräterischen Namen — den kannst Du hier als Spam markieren. Das gilt genauso für ein eigenes Telefonbuch, in dem Du unerwünschte Anrufer alle gleich benennst.",
  "status.names.patterns": "Namen, die Spam bedeuten (mit | trennen)",
  "status.names.help": "Ein Anruf gilt als Spam, sobald der gemeldete Name einen dieser Texte enthält; Groß- und Kleinschreibung ist dabei egal. Beispiel: „tellows|Score|SPAM\". Den Namen eines Anrufers findest Du in der Liste der letzten Anrufe. Leer lassen schaltet den Namensfilter aus.",
  "status.names.save": "Namensfilter speichern",
  "status.names.saved": "Namensfilter gespeichert.",
  "status.names.failed": "Speichern fehlgeschlagen.",
  "status.names.err.many": "Höchstens {max} Namen möglich.",
  "status.names.err.long": "Ein Name darf höchstens {max} Zeichen lang sein.",
  "status.webhook.title": "Webhook bei Anrufen",
  "status.webhook.intro": "Bei jedem Anruf, der in der Anrufliste erscheint, schickt der Dongle die Anrufdaten per HTTP POST an diese Adresse, z.B. an Home Assistant, ioBroker oder Node-RED. Der Inhalt ist ein Eintrag der Anrufliste als JSON, mit denselben Feldern wie /api/calls.",
  "status.webhook.url": "Webhook-Adresse",
  "status.webhook.help": "Nur http:// und nur an Adressen in Deinem Heimnetz, z.B. http://homeassistant.local:8123/api/webhook/phoneblock. Leer lassen schaltet den Webhook aus.",
  "status.webhook.save": "Webhook speichern",
  "status.webhook.saved": "Webhook gespeichert.",
  "status.webhook.failed": "Speichern fehlgeschlagen.",
  "status.webhook.err.https": "https wird nicht unterstützt: Der Dongle sendet nur per http, und nur im Heimnetz.",
  "status.webhook.err.url": "Bitte eine gültige http-Adresse eingeben, z.B. http://homeassistant.local:8123/api/webhook/phoneblock.",
  "status.webhook.err.long": "Die Adresse darf höchstens {max} Zeichen lang sein.",
  "status.ann.title": "Spam-Ansage",
  "status.ann.default": "Eingebaute Standard-Ansage ({kb} KB).",
  "status.ann.custom": "Eigene Ansage ({kb} KB).",
  "status.ann.play": "Aktuelle Ansage anhören",
  "status.ann.stop": "Stopp",
  "status.ann.upload.label": "Eigene Ansage hochladen (WAV/MP3/OGG, max. {s} s)",
  "status.ann.upload.pick": "Datei wählen",
  "status.ann.upload.submit": "Hochladen",
  "status.ann.upload.converting": "Konvertiere…",
  "status.ann.upload.uploading": "Übertrage…",
  "status.ann.upload.done": "Gespeichert ({kb} KB).",
  "status.ann.upload.error": "Fehler: {msg}",
  "status.ann.upload.toolong": "Zu lang — maximal {s} Sekunden.",
  "status.ann.upload.decode_fail": "Datei konnte nicht dekodiert werden.",
  "status.ann.reset.button": "Auf Standard zurücksetzen",
  "status.ann.reset.confirm": "Eigene Ansage wirklich verwerfen?",
  "status.ann.accept_test": "Lokale Testanrufe annehmen",
  "status.ann.accept_test.help": "Wenn aktiviert, beantwortet der Dongle Anrufe auf interne Fritz!Box-Codes (**622, *21#, …) wie Spam — also mit Ansage und Auflegen. So lässt sich der Anruf-Ablauf von einem internen Telefon aus testen, ohne eine echte Nummer auf PhoneBlock zu melden.",
  "status.dialog.mode": "Bei Spam-Anrufen",
  "status.dialog.mode.announcement": "Ansage abspielen und auflegen",
  "status.dialog.mode.dialog": "Mit dem Anrufer sprechen (Dialog)",
  "status.dialog.help": "Im Dialog nimmt der Dongle den Spam-Anruf an und hält den Anrufer mit kurzen Sätzen hin, die auf seine Antworten reagieren, bis er auflegt – ohne Zeitlimit. Im Dialog gibt es keine Ansage: Eine eigene Aufnahme wird beim Umschalten gelöscht und kann erst im Ansage-Modus wieder hochgeladen werden.",
  "status.dialog.clips.present": "Dialog-Sätze geladen ({lang}).",
  "status.dialog.clips.missing": "Dialog-Sätze noch nicht geladen – bis dahin legt der Dongle Spam-Anrufe ohne Ansage auf.",
  "status.dialog.clips.pending": "Dialog-Sätze werden gleich geladen …",
  "status.dialog.clips.downloading": "Dialog-Sätze werden geladen ({kb} KB) …",
  "status.dialog.clips.failed": "Laden der Dialog-Sätze fehlgeschlagen ({error}) – der Dongle versucht es beim nächsten Abgleich erneut. Bis dahin legt er Spam-Anrufe ohne Ansage auf.",
  "status.dialog.clips.unavailable": "Für diese Sprache und dieses Gerät sind keine Dialog-Sätze veröffentlicht – der Dongle legt Spam-Anrufe ohne Ansage auf.",
  "status.dialog.confirm_delete_own": "Deine eigene Ansage wird gelöscht, wenn du auf den Dialog umschaltest. Du kannst sie im Ansage-Modus wieder hochladen. Fortfahren?",
  "status.dialog.vad_silence_db": "Stille-Schwelle (dBFS)",
  "status.dialog.vad_silence_db.help": "Leiser als dieser Pegel gilt der Anrufer als still. Höher (z.B. -30) bei Rauschen in der Leitung, tiefer (z.B. -45) für leise Anrufer. Standard: -35.",
  "status.dialog.vad_min_silence_ms": "Antwortzeit (ms)",
  "status.dialog.vad_min_silence_ms.help": "So lange muss der Anrufer schweigen, bevor der Dongle antwortet. Standard: 500.",
  "status.dialog.comfort_noise": "Leitungsrauschen (dBFS)",
  "status.dialog.comfort_noise.help": "Leises Rauschen unter und zwischen den Sätzen, damit die Leitung nicht tot klingt. -90 ist praktisch aus. Standard: -60.",
  "status.dialog.saved": "Gespeichert.",
  "status.dialog.tuning": "Feineinstellungen: Pausenerkennung und Hintergrundrauschen",
  "status.dialog.failed": "Speichern fehlgeschlagen.",
  "status.dialog.err.range": "Bitte eine ganze Zahl von {min} bis {max} eingeben.",
  "status.ann.upload.silent": "Die Aufnahme ist stumm – nichts darin ist lauter als -45 dBFS.",
  "status.dialog.clips.own": "Eigener Dialog aktiv.",
  "status.dialog.speaker": "Stimme",
  "status.dialog.speaker.use": "Verwenden",
  "status.dialog.speaker.active": "aktiv",
  "status.dialog.speaker.none": "Noch keine Stimmen geladen – der Dongle lädt sie bei der nächsten Synchronisation.",
  "status.dialog.own": "Eigener Dialog",
  "status.dialog.own.replace_confirm": "Dein eigener Dialog wird durch die Sätze von {name} ersetzt – auf den Dongle passt nur ein Dialog. Lade ihn vorher unter „Eigenen Dialog zusammenstellen“ herunter, wenn du ihn behalten willst. Fortfahren?",
  "status.dialog.own.leave_confirm": "Beim Wechsel in den Ansage-Modus wird dein eigener Dialog gelöscht. Fortfahren?",
  "status.dialog.own.leave_download": "Möchtest du deinen Dialog vorher als Datei herunterladen?",
  "status.dialog.edit.title": "Eigenen Dialog zusammenstellen",
  "status.dialog.edit.intro": "Du startest mit den Sätzen, die auf dem Dongle sind. Lösche Aufnahmen oder füge neue hinzu (WAV/MP3/OGG); jede wird auf gleiche Lautstärke gebracht und Stille an den Enden entfernt. Jede Phase braucht mindestens einen Satz, der Dongle wählt daraus zufällig.",
  "status.dialog.edit.yes_hint": "Nimm niemals „Ja“ auf: Ein aufgezeichnetes Ja kann als Zustimmung missbraucht werden.",
  "status.dialog.phase.hello": "Begrüßung",
  "status.dialog.phase.who-is-there": "Anrufer schweigt nach der Begrüßung („Wer ist da?“)",
  "status.dialog.phase.am-aparat": "Anrufer meldet sich",
  "status.dialog.phase.question": "Rückfragen",
  "status.dialog.phase.cant-hear-you": "Anrufer schweigt im Gespräch („Ich höre nichts“)",
  "status.dialog.edit.add": "+ Aufnahme hinzufügen",
  "status.dialog.edit.delete": "Löschen",
  "status.dialog.edit.gauge": "{kb} von {max} KB",
  "status.dialog.edit.upload": "Auf den Dongle laden",
  "status.dialog.edit.download": "Dialog-Datei herunterladen",
  "status.dialog.edit.load_file": "Dialog-Datei laden",
  "status.dialog.edit.reason.empty": "Die Phase „{phase}“ hat noch keine Aufnahme.",
  "status.dialog.edit.reason.many": "Die Phase „{phase}“ hat mehr als {max} Aufnahmen.",
  "status.dialog.edit.reason.size": "Die Aufnahmen sind zusammen größer als der Platz auf dem Dongle – lösche oder kürze Aufnahmen.",
  "status.dialog.edit.bad_file": "Das ist keine gültige Dialog-Datei.",
  "status.dialog.edit.no_set": "Auf dem Dongle ist noch kein Dialog – füge für jede Phase Aufnahmen hinzu.",
  "status.dialog.edit.changed": "Auf dem Dongle liegen jetzt andere Aufnahmen (Sprache oder Stimme gewechselt). Deine Bearbeitung im Editor ist noch nicht hochgeladen.",
  "status.dialog.edit.reload": "Verwerfen und neu laden",
  "status.dialog.edit.done": "Eigener Dialog gespeichert ({kb} KB).",
  "hero.title": "Einrichtung",
  "hero.intro": "Zwei Schritte, dann blockt dein Dongle Spam-Anrufe automatisch. Beide abhaken, erst dann ist das Gerät einsatzbereit.",
  "hero.step1.todo": "Den Dongle bei deiner Telefonanlage anmelden",
  "hero.step1.done": "Telefonie eingerichtet",
  "hero.step2.todo": "Mit PhoneBlock verbinden — damit der Dongle weiß, was Spam ist",
  "hero.step2.done": "Mit PhoneBlock verbunden",
  "hero.cta.sip": "Telefonie einrichten",
  "hero.cta.token": "PhoneBlock verbinden",
  "sip.entry.title": "Telefonie einrichten",
  "sip.entry.intro": "Wähle, wie der Dongle sich bei deiner Telefonanlage anmeldet.",
  "sip.entry.fritzbox": "Fritz!Box (empfohlen)",
  "sip.entry.fritzbox.desc": "Automatische Einrichtung. Der Dongle legt sich selbst als IP-Telefon an.",
  "sip.entry.provider": "Anderer Anbieter",
  "sip.entry.provider.desc": "Direkt bei Telekom, Vodafone, 1&1, sipgate oder easybell anmelden.",
  "sip.entry.manual": "Manuell (Experte)",
  "sip.entry.manual.desc": "Alle SIP-Felder selbst ausfüllen.",
  "sip.fb.title": "Fritz!Box-Einrichtung",
  "sip.fb.intro": "Einmalig das Fritz!Box-Admin-Passwort eingeben. Es wird nicht gespeichert.",
  "sip.fb.host": "Fritz!Box (Host oder IP)",
  "sip.fb.user": "Benutzer",
  "sip.fb.user.hint": "(leer lassen → Standard-Benutzer der Fritz!Box)",
  "sip.fb.pass": "Passwort",
  "sip.fb.submit": "Nebenstelle einrichten",
  "sip.fb.working": "Richte Nebenstelle ein (~2–5 s)…",
  "sip.fb.done": "Nebenstelle angelegt — Anmeldung startet.",
  "sip.fb.done.withnum": "Nebenstelle angelegt (interne Nummer {n}) — Anmeldung startet.",
  "sip.fb.error": "Fehler: {msg}",
  "sip.fb.2fa.title": "Zwei-Faktor-Bestätigung",
  "sip.fb.2fa.button": "beliebigen Knopf an der Fritz!Box drücken",
  "sip.fb.2fa.dtmf": "Folge {seq} an einem angeschlossenen Telefon wählen",
  "sip.fb.2fa.instructions": "Bitte jetzt {hints}.",
  "sip.fb.2fa.cancelled": "2FA abgebrochen.",
  "sip.fb.2fa.timeout": "Zeitüberschreitung. Bitte erneut versuchen.",
  "sip.fb.conflict.one": "In der Fritz!Box ist bereits ein PhoneBlock-Dongle eingetragen:",
  "sip.fb.conflict.many": "In der Fritz!Box sind bereits mehrere PhoneBlock-Dongles eingetragen:",
  "sip.fb.conflict.replace": "„{entry}“ ersetzen – z. B. nach dem Zurücksetzen dieses Dongles",
  "sip.fb.conflict.add": "Als weiteres Gerät hinzufügen → „{name}“",
  "sip.fb.conflict.submit": "Weiter",
  "sip.fb.conflict.choose": "Bitte eine der Möglichkeiten auswählen.",
  "sip.prov.title": "Anbieter wählen",
  "sip.prov.intro": "Wähle deinen Anbieter; die Zugangsdaten bekommst du aus dem jeweiligen Kundenportal. Ist dein Anbieter nicht gelistet, nutze die manuelle Konfiguration.",
  "sip.prov.provider": "Anbieter",
  "sip.prov.user": "SIP-Benutzer / Rufnummer",
  "sip.prov.pass": "Passwort",
  "sip.prov.submit": "Zugangsdaten speichern",
  "sip.prov.done": "Gespeichert. Anmeldung startet.",
  "sip.prov.error": "Fehler: {msg}",
  "sip.manual.title": "Manuelle Konfiguration",
  "sip.manual.intro": "Vollständige SIP-Felder. Passwort leer lassen heißt „unverändert\".",
  "sip.manual.host": "SIP-Registrar",
  "sip.manual.port": "SIP-Port",
  "sip.manual.port.hint": "Leer lassen = automatisch via DNS-SRV bzw. Transport-Default (5060 UDP/TCP, 5061 TLS).",
  "sip.manual.user": "SIP-Benutzer",
  "sip.manual.pass": "SIP-Passwort",
  "sip.manual.pass.hint": "Leer lassen = gespeichertes Passwort behalten.",
  "sip.manual.anon": "Ohne Passwort anmelden (anonym)",
  "sip.manual.anon.hint": "Entfernt ein gespeichertes Passwort und meldet sich ohne an — z. B. anonymous@t-online.de bei der Telekom.",
  "sip.manual.submit": "Speichern",
  "sip.manual.done": "Gespeichert.",
  "sip.manual.error": "Fehler: {msg}",
  "sip.manual.advanced": "Erweiterte Parameter",
  "sip.manual.transport": "Transport",
  "sip.manual.transport.hint": "UDP, TCP und TLS sind wählbar. TLS verschlüsselt die Verbindung und wird empfohlen, sofern der Anbieter es unterstützt. Die Sprachübertragung selbst ist derzeit noch unverschlüsselt.",
  "sip.manual.auth_user": "Auth-Benutzer",
  "sip.manual.auth_user.hint": "Leer lassen = SIP-Benutzer auch als Auth. Bei Telekom: E-Mail.",
  "sip.manual.outbound": "Outbound-Proxy",
  "sip.manual.outbound.hint": "Optional, Format host[:port]. Leer = direkt zum Registrar.",
  "sip.manual.realm": "Realm",
  "sip.manual.realm.hint": "Leer = aus Challenge übernehmen.",
  "sip.manual.stun": "STUN-Server",
  "sip.manual.stun.hint": "Optional, Format host[:port]. Ermittelt bei direkter Provider-Anmeldung den öffentlichen RTP-Port. Leer = aus. Wird vom Provider-Preset gesetzt (Telekom: stun.t-online.de:3478).",
  "sip.manual.srtp": "SRTP",
  "sip.manual.srtp.hint": "SRTP wird automatisch ausgehandelt: Sprache wird verschlüsselt, sobald der Anbieter es anbietet (z. B. Telekom), sonst unverschlüsseltes RTP (z. B. Fritz!Box im LAN).",
  "sip.manual.local_port": "Lokaler SIP-Port",
  "sip.manual.local_port.hint": "Port, auf dem der Dongle SIP empfängt (Standard 15060). Leer = Standard.",
  "sip.manual.rtp_port": "RTP-Port (Audio)",
  "sip.manual.rtp_port.hint": "Port für den Sprachkanal (Standard 16000). Leer = Standard.",
  "sip.manual.fwd.title": "Port-Weiterleitung bei direkter Provider-Anmeldung",
  "sip.manual.fwd.body": "Meldet sich der Dongle direkt beim Provider an (statt über einen VoIP-Router) und der Anbieter unterstützt nur UDP, richte im Router je eine UDP-Weiterleitung auf den Dongle ein — portgleich (externer Port = interner Port): {sip} (SIP) und {rtp} (RTP). Die öffentliche IP ermittelt der Dongle automatisch (oben im Status sichtbar); sie muss nicht eingetragen werden. Das funktioniert nur mit einer echten (eigenen) öffentlichen IPv4 — nicht bei DS-Lite/CGNAT (geteilte IPv4), wo keine Weiterleitung möglich ist; dann hilft nur TCP/TLS, falls der Anbieter es unterstützt.",
  "sip.manual.srtp.off": "aus",
  "sip.manual.srtp.optional": "optional",
  "sip.manual.srtp.mandatory": "Pflicht",
  "token.title": "PhoneBlock verbinden",
  "token.intro": "Der Dongle fragt für jeden eingehenden Anruf die PhoneBlock-Datenbank ab. Dafür brauchst du einen Token.",
  "token.how": "Ein Klick auf den Knopf unten leitet dich zu phoneblock.net, wo du dich einmalig anmelden kannst (Google, Facebook oder Account). Anschließend landest du zurück hier — der Token ist dann gesetzt.",
  "token.current.set": "Ein Token ist bereits eingerichtet. Eine erneute Anmeldung erzeugt einen neuen.",
  "token.current.missing": "Noch kein Token eingerichtet.",
  "token.submit": "Bei PhoneBlock anmelden",
  "link.submit": "PhoneBlock-Account verknüpfen",
  "link.how": "Ein Klick auf den Knopf zeigt hier einen Code an. Öffne dann phoneblock.net, melde dich an und gib den Code dort ein. Der Dienst holt den Token danach selbst ab.",
  "link.starting": "Verknüpfung wird vorbereitet…",
  "link.compare": "Gib diesen Code auf phoneblock.net ein, um den Dienst mit deinem Account zu verknüpfen.",
  "link.copy": "Code kopieren",
  "link.copied": "Code kopiert",
  "link.copy_failed": "Kopieren nicht möglich – der Code ist markiert, kopiere ihn mit Strg+C.",
  "link.open": "phoneblock.net öffnen",
  "link.manual": "Die Seite ist {url} – du kannst den Code dort auch auf einem anderen Gerät eingeben, z. B. auf dem Handy.",
  "link.waiting": "Warten auf die Eingabe des Codes auf phoneblock.net…",
  "link.approved": "PhoneBlock-Account verknüpft — der Token ist gesetzt.",
  "link.denied": "Die Verknüpfung wurde auf phoneblock.net abgelehnt.",
  "link.expired": "Der Code ist abgelaufen. Fordere einen neuen Code an.",
  "link.error": "Die Verknüpfung ist fehlgeschlagen: {msg}",
  "link.retry": "Erneut versuchen",
  "back.status": "← zurück zum Status",
  "back.sip": "← zurück zur Auswahl",
  "i18n.loading": "Übersetzung wird geladen …",
  "i18n.unavailable": "Übersetzung nicht verfügbar – Standardsprache wird angezeigt.",
  "status.calls.add_contact": "Kontakt",
  "status.phonebook.title": "Telefonbuch für neue Kontakte",
  "status.phonebook.intro": "Anrufer, die die Fritz!Box nicht kennt, erscheinen in der Anrufliste ohne Namen. Mit dem +-Knopf daneben legst du sie als Kontakt in der Fritz!Box an — danach zeigt das Telefon den Namen an, und der Dongle fragt PhoneBlock nicht mehr nach dieser Nummer.",
  "status.phonebook.current": "Neue Kontakte landen in „{name}“.",
  "status.phonebook.unset": "Noch nicht festgelegt — wird beim ersten Anlegen gefragt.",
  "status.phonebook.change": "Ändern",
  "status.phonebook.unavailable": "Nicht verfügbar — nur mit Fritz!Box-Einrichtung nutzbar.",
  "status.phonebook.saved": "Gespeichert.",
  "pb.dialog.title": "Kontakt in der Fritz!Box anlegen",
  "pb.dialog.intro": "Beim nächsten Anruf zeigt das Telefon den Namen statt der Nummer. Der Kontakt bleibt in deiner Fritz!Box — er wird nicht an PhoneBlock übertragen.",
  "pb.dialog.name": "Name",
  "pb.dialog.type": "Art der Nummer",
  "pb.dialog.type.home": "Privat",
  "pb.dialog.type.mobile": "Mobil",
  "pb.dialog.type.work": "Geschäftlich",
  "pb.dialog.type.fax_home": "Fax privat",
  "pb.dialog.type.fax_work": "Fax geschäftlich",
  "pb.dialog.vip": "Wichtige Person (VIP)",
  "pb.dialog.book": "Telefonbuch",
  "pb.dialog.book.readonly": "{name} (synchronisiert — nicht beschreibbar)",
  "pb.dialog.pick": "In welchem Telefonbuch soll der Kontakt angelegt werden?",
  "pb.dialog.none_writable": "Kein beschreibbares Telefonbuch gefunden.",
  "pb.dialog.save": "Anlegen",
  "pb.dialog.cancel": "Abbrechen",
  "pb.dialog.working": "Wird angelegt…",
  "pb.dialog.done": "Kontakt angelegt.",
  "pb.dialog.error.name": "Bitte einen Namen eingeben.",
  "pb.dialog.error.number": "Diese Nummer lässt sich nicht als Kontakt speichern.",
  "pb.dialog.error.not_writable": "Dieses Telefonbuch wird synchronisiert und kann nicht beschrieben werden. Bitte ein anderes wählen.",
  "pb.dialog.error.no_fritzbox": "Nur mit Fritz!Box-Einrichtung möglich.",
  "pb.dialog.error.unreachable": "Fritz!Box antwortet nicht.",
  "pb.dialog.error.generic": "Fehlgeschlagen: {msg}",
  "status.calls.add_contact.help": "Anrufer als Kontakt im Telefonbuch der Fritz!Box anlegen",
  "status.calls.report_spam": "Spam",
  "status.calls.report_spam.help": "Diese Nummer bei PhoneBlock als Spam melden",
  "status.calls.whitelist": "Whitelist",
  "status.calls.whitelist.help": "Diese Nummer nicht mehr blockieren",
  "whitelist.dialog.title": "Nummer auf die Whitelist setzen",
  "whitelist.dialog.intro": "Anrufe von dieser Nummer werden nicht mehr blockiert. Du bewertest die Nummer damit bei PhoneBlock als legitim; die Bewertung wird deinem Konto zugeordnet.",
  "whitelist.dialog.submit": "Nicht mehr blockieren",
  "whitelist.dialog.working": "Wird übertragen…",
  "whitelist.dialog.done": "Erledigt — die Nummer steht auf deiner Whitelist.",
  "spam.dialog.title": "Nummer als Spam melden",
  "spam.dialog.intro": "Deine Bewertung zählt für alle PhoneBlock-Nutzer und wird deinem Konto zugeordnet. Über den Dongle lässt sie sich nicht zurücknehmen — das geht nur auf phoneblock.net.",
  "spam.dialog.rating": "Art des Anrufs",
  "spam.dialog.rating.B_MISSED": "Unbekannt",
  "spam.dialog.rating.C_PING": "Ping-Anruf",
  "spam.dialog.rating.D_POLL": "Umfrage",
  "spam.dialog.rating.E_ADVERTISING": "Werbung",
  "spam.dialog.rating.F_GAMBLE": "Gewinnspiel",
  "spam.dialog.rating.G_FRAUD": "Betrug",
  "spam.dialog.submit": "Melden",
  "spam.dialog.working": "Wird gemeldet…",
  "spam.dialog.done": "Danke — Bewertung übertragen.",
  "spam.dialog.error.no_token": "Zum Bewerten wird ein PhoneBlock-Konto benötigt.",
  "pb.dialog.error.moved": "Das gewählte Telefonbuch gibt es nicht mehr. Bitte ein anderes wählen.",
  "spam.dialog.comment": "Grund",
  "spam.dialog.comment.hint": "(optional, wird öffentlich sichtbar)",
  "spam.dialog.error.is_contact": "Dieser Anrufer steht in deinem Telefonbuch. Ein Telefonbuch-Eintrag hat auf dem Dongle immer Vorrang, deshalb ist eine Spam-Meldung hier nicht möglich.",
  "status.rec.enable": "Gespräche im Dialog-Modus aufzeichnen",
  "status.rec.help": "Der Dongle zeichnet die Gespräche auf, die er im Dialog-Modus mit Spam-Anrufern führt – beide Seiten, höchstens {min} Minuten je Anruf. Abspielen, herunterladen und löschen kannst du sie in der Anrufliste; fällt ein Anruf aus der Liste, wird seine Aufnahme gelöscht.",
  "status.rec.legal": "Das Aufzeichnen von Telefongesprächen liegt in deiner Verantwortung (§ 201 StGB, DSGVO).",
  "status.rec.usage": "{count} Aufnahmen, {used} von {cap} MB belegt.",
  "status.rec.play": "Aufnahme abspielen",
  "status.rec.stop": "Wiedergabe anhalten",
  "status.rec.download": "Aufnahme herunterladen (WAV)",
  "status.rec.delete": "Aufnahme löschen",
  "status.rec.delete.confirm": "Diese Aufnahme löschen? Der Anruf bleibt in der Liste.",
  "status.rec.failed": "Die Aufnahme konnte nicht geladen werden."
}
