Files
OPNexus/frontend/lib/i18n/de.json
T
Julian Boldt 4379a17b15
Release / verify (push) Canceled after 0s
CI / checks (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
CI / backend (push) Canceled after 0s
Release / test (push) Canceled after 0s
Release / publish (backend) (push) Canceled after 0s
Release / publish (frontend) (push) Canceled after 0s
Release / publish (proxy) (push) Canceled after 0s
Release / publish (updater) (push) Canceled after 0s
Release v1.23.9
- Update-Karte: Der Hinweis für Installationen ohne Release-Images nennt jetzt die tatsächliche Ursache („OPNEXUS_IMAGE_REPO ist nicht gesetzt“)
  statt „baut aus dem Quellcode“.
- `cosign.pub`: öffentlicher Schlüssel für die Signaturen der Release-Images (das Release-Skript kann Images jetzt signieren).
2026-10-20 15:16:51 +02:00

2691 lines
145 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"common": {
"save": "Speichern",
"actions": "Aktionen",
"statusOnline": "Online",
"statusOffline": "Offline",
"statusDisabled": "Deaktiviert",
"skipToContent": "Zum Inhalt springen",
"cancel": "Abbrechen",
"close": "Schließen",
"requestFailed": "Anfrage fehlgeschlagen",
"loading": "Lädt…",
"refresh": "Aktualisieren",
"saveFailed": "Speichern fehlgeschlagen",
"saving": "Speichern…",
"deleteFailed": "Löschen fehlgeschlagen",
"description": "Beschreibung",
"versionLabel": "OPNexus {version} „{codename}“"
},
"settings": {
"language": {
"label": "Sprache",
"de": "Deutsch",
"en": "Englisch",
"saved": "Sprache gespeichert."
},
"notify": {
"saved": "Benachrichtigungseinstellungen gespeichert.",
"testSent": "Testbenachrichtigung per {channel} gesendet.",
"channelWebhook": "Webhook",
"channelEmail": "E-Mail",
"testFailed": "Test fehlgeschlagen",
"title": "Benachrichtigungen",
"intro": "Host offline, Zertifikat läuft ab, Regel-Drift im Cluster und fehlgeschlagene Rollbacks werden regelmäßig geprüft (alle {seconds}s) und über die aktivierten Kanäle gemeldet.",
"webhook": "Webhook",
"webhookUrl": "Webhook-URL",
"signingSecret": "Signatur-Secret {state}",
"isSet": "(gesetzt)",
"notSet": "(nicht gesetzt)",
"keepUnchanged": "unverändert lassen…",
"optional": "optional",
"removeSecret": "Secret entfernen",
"sending": "Sende…",
"testWebhook": "Webhook testen",
"email": "E-Mail (SMTP)",
"smtpHost": "SMTP-Host",
"port": "Port",
"security": "Verschlüsselung",
"securityNone": "Keine",
"username": "Benutzername",
"password": "Passwort {state}",
"removePassword": "Passwort entfernen",
"from": "Absenderadresse",
"to": "Empfänger (kommagetrennt)",
"testEmail": "E-Mail testen",
"events": "Ereignisse",
"event": {
"hostOffline": "Host nicht erreichbar",
"certExpiring": "Zertifikat läuft ab",
"ruleDrift": "Regel-Drift im Cluster",
"revertFailed": "Fehlgeschlagener Rollback",
"maintenanceUnknown": "Wartungsergebnis unklar",
"carpHealth": "CARP-Zustand kritisch (Split-Brain / kein Master)",
"natDrift": "NAT-Drift im Cluster",
"carpAutoRevertFailed": "CARP-Auto-Revert fehlgeschlagen",
"scheduledFailed": "Geplante Wartung nicht ausgeführt",
"backupFailed": "Kein aktuelles Backup / Offsite-Kopie fehlgeschlagen",
"complianceAlerts": "Kritischer oder hoher Sicherheitsbefund (standardmäßig aus)",
"networkDrift": "Netzwerk-Abweichung im Cluster"
},
"pollInterval": "Prüfintervall (Sekunden)",
"pollHint": "Mindestens 60s, um die Firewalls nicht unnötig zu belasten."
},
"logs": {
"saved": "Log-Ingest-Einstellungen gespeichert.",
"title": "Log-Erfassung",
"intro": "OPNexus holt Firewall-Logs regelmäßig von allen Hosts ab und speichert sie in der eigenen Datenbank (siehe „Log-Suche“). Höhere Aufbewahrung bedeutet mehr Speicherplatzbedarf, abhängig vom Traffic-Volumen der angebundenen Firewalls — bei stark frequentierten Hosts können schon wenige Tage mehrere Gigabyte belegen.",
"enabled": "Log-Erfassung aktiv",
"pollInterval": "Abrufintervall (Sekunden)",
"retention": "Aufbewahrung (Tage)",
"maxSize": "Max. Speicher (GB)",
"maxSizeHint": "0 = unbegrenzt. Ist die Grenze erreicht, werden die ältesten Einträge gelöscht. Der Wert wird aus der Tabellengröße geschätzt; Postgres gibt freien Platz nicht ans Dateisystem zurück, nutzt ihn aber für neue Logs wieder.",
"usage": "Belegt: {used} von {limit}",
"unlimited": "unbegrenzt",
"usageAria": "Belegter Log-Speicher",
"stored": "{count} Einträge gespeichert",
"storedSince": "{count} Einträge gespeichert (seit {date})"
},
"title": "Einstellungen",
"appearance": "Darstellung",
"appearanceSaved": "Darstellung gespeichert.",
"appearanceHint": "Die Auswahl wird für dein Konto gespeichert. „System“ folgt den Anzeigeeinstellungen deines Geräts.",
"colorScheme": "Farbschema",
"theme": {
"light": "Hell",
"dark": "Dunkel",
"system": "System"
},
"passwordMismatch": "Neue Passwörter stimmen nicht überein.",
"passwordChanged": "Passwort geändert.",
"passwordFailed": "Passwortänderung fehlgeschlagen",
"account": "Konto",
"currentPassword": "Aktuelles Passwort",
"newPassword": "Neues Passwort",
"repeatPassword": "Neues Passwort wiederholen",
"changePassword": "Passwort ändern",
"operational": "Betriebseinstellungen",
"deployWindow": "Deploy-Bestätigungsfrist",
"seconds": "{n} Sekunden",
"sessionLifetime": "Sitzungslaufzeit",
"days": "{n} Tage",
"serverManaged": "Diese Werte werden zentral durch die Serverkonfiguration vorgegeben.",
"about": "Über OPNexus",
"version": "Version",
"development": "Entwicklung",
"changelogNote": "Änderungsverlauf und Versionsschema stehen in {file}.",
"update": {
"title": "OPNexus aktualisieren",
"hint": "Lädt die neuen Images, wechselt die Dienste und prüft, ob alles gesund ist. Schlägt das fehl, wird automatisch auf die vorherige Version zurückgerollt.",
"installed": "Installiert",
"latest": "Neueste Version",
"upToDate": "OPNexus ist auf dem neuesten Stand.",
"notes": "Release-Notes",
"checked": "Zuletzt geprüft: {time}",
"feedOff": "Die Versionsprüfung ist aus. Schalte sie oben ein, damit OPNexus neue Versionen erkennt.",
"feedTitle": "Auf neue Versionen prüfen",
"feedHint": "Fragt regelmäßig den Release-Feed ab, ob eine neuere Version erschienen ist. Gesendet wird nur eine einfache Anfrage (GET) mit der eigenen Versionsnummer, nichts sonst. Standardmäßig aus.",
"feedToggle": "Versionsprüfung aktivieren",
"feedUrl": "Feed-Adresse",
"feedSave": "Speichern",
"feedSaved": "Gespeichert.",
"feedManaged": "Die Versionsprüfung ist durch UPDATE_CHECK_URL in der .env des Servers festgelegt und lässt sich hier nicht ändern.",
"feedError": "Der Release-Feed ist gerade nicht erreichbar.",
"notEnabledTitle": "Updates aus dem Webinterface sind nicht aktiviert.",
"notEnabledBody": "Dafür läuft ein eigener kleiner Dienst (Updater) mit Zugriff auf Docker — er ist bewusst optional. Aktivieren:",
"notEnabledStep1": "In der .env auf dem Server eintragen:",
"notEnabledStep2": "Dann ausführen:",
"notEnabledImages": "Das geht nur mit Release-Images (Release-Bundle oder OPNEXUS_IMAGE_REPO in der .env). Wer OPNexus selbst aus dem Quellcode baut, aktualisiert mit „git pull“ und „docker compose up -d --build“.",
"notEnabledCli": "Bis dahin geht das Update auf dem Server mit „opnexus update“.",
"unreachable": "Der Updater antwortet nicht. Auf dem Server prüfen: docker compose ps updater",
"localMode": "Diese Installation nutzt keine Release-Images (OPNEXUS_IMAGE_REPO ist in der .env nicht gesetzt). Aktualisieren auf dem Server mit „git pull“ und „docker compose up -d --build“.",
"majorChange": "Version {latest} ist ein Hauptversions-Sprung. Bitte erst die Release-Notes lesen und dann auf dem Server mit „opnexus update {latest}“ aktualisieren.",
"button": "Auf {latest} aktualisieren",
"confirmTitle": "Auf {latest} aktualisieren?",
"confirmBody": "OPNexus lädt die neuen Images und startet sich neu. Die Oberfläche ist dabei etwa ein bis zwei Minuten nicht erreichbar; die verwalteten Firewalls sind nicht betroffen.",
"confirmSafety": "Vor einer Datenbank-Migration wird automatisch ein Backup angelegt. Wird die neue Version nicht gesund, setzt OPNexus selbst auf die vorherige Version zurück.",
"confirm": "Jetzt aktualisieren",
"startFailed": "Update konnte nicht gestartet werden",
"running": "Update auf {target} läuft …",
"rollingBack": "Rollback läuft …",
"reconnecting": "Verbindung wird neu aufgebaut — beim Neustart der Dienste ist das normal.",
"phase": {
"pulling": "Neue Images laden",
"switching": "Dienste wechseln",
"waiting": "Auf gesunde Dienste warten",
"stopping": "Dienste anhalten",
"restoring": "Datenbank zurückspielen",
"rolled_back": "Zurückgerollt",
"done": "Fertig"
},
"result": {
"succeededUpdate": "OPNexus läuft jetzt auf {version}. Die Seite wird neu geladen …",
"succeededRollback": "OPNexus wurde auf {version} zurückgesetzt. Die Seite wird neu geladen …",
"rolledBack": "Das Update auf {target} ist fehlgeschlagen. OPNexus wurde automatisch auf die vorherige Version zurückgesetzt.",
"failed": "Der Vorgang ist fehlgeschlagen. Protokoll und Serverzustand prüfen (auf dem Server: opnexus status)."
},
"showLog": "Protokoll",
"rollback": {
"button": "Auf Vorversion zurücksetzen",
"hint": "Macht das letzte Update rückgängig (zurück auf {version}).",
"confirmTitle": "Auf {version} zurücksetzen?",
"dataLoss": "Das Update hat die Datenbank migriert. Beim Zurücksetzen wird der Stand vor dem Update wiederhergestellt: Änderungen seit dem Update und die Log-Historie gehen verloren.",
"noDataLoss": "Die Datenbank wurde nicht migriert — es gehen keine Daten verloren.",
"confirm": "Zurücksetzen"
},
"badge": "Update verfügbar",
"resultTime": "Ergebnis vom {time}"
},
"setup": {
"title": "Einrichtungsassistent",
"intro": "Führt Schritt für Schritt durch Passwort, Zwei-Faktor-Anmeldung und das Verbinden einer Firewall.",
"open": "Assistent öffnen"
}
},
"nav": {
"aboutTitle": "Über OPNexus — Fleet-Status & Versionen",
"mainNavigation": "Hauptnavigation",
"subNavigation": "Bereichsnavigation",
"readOnly": "Nur-Lesen",
"readOnlyDescription": "Diese Rolle kann alles ansehen, aber keine Änderungen speichern oder Aktionen ausführen.",
"search": "Suche (Strg/⌘+K)",
"logout": "Abmelden",
"groups": {
"overview": "Übersicht",
"policy": "Regelwerk",
"network": "Netzwerk",
"vpn": "VPN",
"certificates": "Zertifikate",
"monitoring": "Monitoring",
"system": "System",
"hostsystem": "Host-System"
},
"items": {
"dashboard": "Dashboard",
"hosts": "Hosts",
"cluster": "Cluster",
"rules": "Regeln",
"policy-hierarchy": "Policy-Hierarchie",
"groups": "Gruppen",
"aliases": "Aliase",
"nat": "NAT",
"network-interfaces": "Schnittstellen",
"network-vlans": "VLANs",
"network-vips": "Virtuelle IPs",
"network-gateways": "Gateways",
"network-routes": "Routen",
"network-dns": "DNS",
"network-dhcp": "DHCP",
"ipsec": "IPsec-VPN",
"openvpn": "OpenVPN",
"wireguard": "WireGuard",
"certificates": "Zertifikate",
"logs": "Logs",
"audit": "Audit",
"security": "Sicherheitslage",
"updates": "Update Center",
"settings": "Einstellungen",
"users": "Benutzer",
"overlay": "Management-Tunnel",
"tokens": "API-Tokens",
"network-devices": "Geräte",
"network-compare": "Abgleich",
"hostsystem-tunables": "Tunables",
"hostsystem-cron": "Cron",
"hostsystem-syslog": "Syslog",
"hostsystem-snapshots": "Snapshots",
"hostsystem-diagnostics": "Diagnose",
"setup": "Einrichtung"
}
},
"dashboard": {
"securityPosture": "Sicherheitslage",
"postureNone": "Es wurde noch keine Sicherheitsprüfung durchgeführt.",
"postureOpen": "Öffnen",
"subtitle": "Fleet-Status, offene Aktionen und Sicherheitswarnungen auf einen Blick.",
"managedHosts": "Verwaltete Hosts",
"online": "Online",
"pendingActions": "Offene Aktionen",
"securityWarnings": "Sicherheitswarnungen",
"fleetHealth": "Fleet-/CARP-Gesundheit",
"noHosts": "Noch keine Hosts angelegt",
"toHosts": "Zu den Hosts",
"startSetup": "Einrichtungsassistent starten",
"nothingPending": "Nichts offen",
"nothingPendingDescription": "Keine ausstehenden Bestätigungen, Fehler oder unklaren Wartungsvorgänge.",
"securityAndExpiryWarnings": "Sicherheits- & Ablauf-Warnungen",
"noWarnings": "Keine Warnungen",
"noWarningsDescription": "Keine Hosts offline, keine ablaufenden Zertifikate, kein Regel-Drift, keine ausstehenden Updates.",
"activity": "Aktivität",
"noActivity": "Noch keine Aktivität",
"viewAudit": "Vollständigen Audit-Verlauf ansehen",
"justNow": "gerade eben",
"minutesAgo": "vor {count} Min.",
"hoursAgo": "vor {count} Std.",
"certificate": "Zertifikat",
"certExpired": "{name} — abgelaufen",
"certExpiresIn": "{name} — läuft in {count} Tagen ab",
"certExpiresSoon": "{name} — läuft bald ab",
"expired": "Abgelaufen",
"expires": "Läuft ab",
"kinds": {
"rule": "Firewall-Regel",
"port_forward": "Port Forward",
"one_to_one": "1:1 NAT",
"outbound_nat": "Outbound NAT",
"policyHierarchy": "Policy-Hierarchie",
"alias": "Alias",
"ipsec": "IPsec-Tunnel",
"openvpn": "OpenVPN-Instanz",
"wireguard": "WireGuard-Tunnel",
"hostMaintenance": "Host-Wartung",
"carpAutoRevert": "CARP-Auto-Revert"
},
"statuses": {
"pending": "Bestätigung ausstehend",
"error": "Fehler",
"revertFailed": "Rollback fehlgeschlagen",
"starting": "Wird übergeben",
"submitted": "An Firewall übergeben",
"unknown": "Ausgang unklar",
"active": "Zeitfenster läuft"
},
"hostIsOffline": "{name} ist offline",
"hostOffline": "Host offline",
"driftLine": "{cluster}: {count} Regel(n) driften zwischen den Knoten",
"driftBadge": "Drift",
"majorAvailable": "Major-Upgrade verfügbar",
"stableAvailable": "Stabiles Update verfügbar",
"updateBadge": "Update",
"loadFailed": "Dashboard konnte nicht geladen werden"
},
"hosts": {
"add": "Host hinzufügen",
"name": "Name",
"address": "Adresse",
"status": "Status",
"cluster": "Cluster",
"policyHierarchy": "Policy-Hierarchie",
"empty": "Noch keine Hosts angelegt.",
"loadFailed": "Hosts konnten nicht geladen werden",
"createFailed": "Host konnte nicht angelegt werden",
"created": "Host „{name}“ angelegt",
"saved": "Host „{name}“ gespeichert",
"deleted": "Host „{name}“ gelöscht",
"deleteConfirm": "Diesen Host wirklich löschen? Regeln oder Aliase, die noch auf ihm aktiv sind, müssen vorher entfernt werden.",
"openInOpnsense": "In OPNsense öffnen",
"edit": "Bearbeiten",
"delete": "Löschen",
"baseUrl": "Basis-URL",
"clusterOptional": "Cluster (optional)",
"clusterPlaceholder": "z.B. ha-pair-1 — Hosts mit gleichem Namen erscheinen zusammen in der Clusteransicht",
"clusterShortPlaceholder": "z.B. ha-pair-1",
"policyGroupOptional": "Policy-Hierarchie-Gruppe (optional)",
"none": "(keine)",
"verifyTls": "TLS-Zertifikat prüfen",
"saving": "Speichern…",
"create": "Host anlegen",
"editTitle": "Host bearbeiten: {name}",
"active": "Aktiv",
"baseUrlEditHint": "Neue Adresse eintragen, wenn die Firewall eine andere IP bekommen hat (z. B. nach einer Änderung der Verwaltungs-Schnittstelle). Verlauf und Zuordnungen bleiben erhalten."
},
"rules": {
"title": "Firewall-Regeln",
"groupTitle": "Regeln · {name}",
"new": "Neue Regel",
"managed": "Zentral verwaltet",
"live": "Live über alle Hosts",
"retry": "Erneut laden",
"loading": "Regeln werden geladen…",
"loadFailed": "Regeln konnten nicht geladen werden",
"searchLabel": "Regeln durchsuchen",
"searchPlaceholder": "Name, Quelle, Ziel, Port …",
"groupFilter": "Nach Gerätegruppe filtern",
"allGroups": "Alle Gerätegruppen und Einzelregeln",
"stateFilter": "Nach Regelzustand filtern",
"allStates": "Alle Zustände",
"subtitle": "Zentrale Policies als Entwurf pflegen, Änderungen prüfen und gezielt auf Hosts oder Gerätegruppen ausrollen.",
"groupSummary": "{members} Gruppenmitglieder · {rules} zugewiesene Regeln · ",
"manageMembers": "Mitgliedschaften verwalten",
"showAllInGroup": "Alle Regeln dieser Gruppe",
"showAll": "Alle Regeln anzeigen",
"countDraft": "{count} mit ausstehenden Änderungen",
"countReview": "{count} zu prüfen",
"countSynced": "{count} ausgerollt",
"groupGone": "Diese Gerätegruppe existiert nicht mehr.",
"groupEmpty": "Dieser Gruppe ist noch keine Regel zugewiesen.",
"none": "Noch keine zentralen Regeln angelegt.",
"noMatch": "Keine Regeln passen zu dieser Auswahl.",
"createFirst": "Erste Regel anlegen",
"createFirstForGroup": "Erste Regel für diese Gruppe anlegen",
"resetSelection": "Auswahl zurücksetzen",
"targets": "{active} aktive Ziel-Hosts von {total}",
"retainedTargets": " · {count} frühere Ziele",
"disabledSuffix": " · Regel deaktiviert",
"hierarchyTag": "Hierarchie: {name}",
"groupTag": "Gruppe: {name}",
"confirm": "Bestätigen",
"confirming": "Bestätigen…",
"edit": "Bearbeiten",
"reviewPush": "Prüfen & Push",
"historyTitle": "Regelhistorie",
"history": "Historie",
"duplicateTitle": "Regel duplizieren",
"duplicate": "Duplizieren",
"delete": "Löschen",
"deployResult": "Deploy-Ergebnis",
"expiresIn": "— läuft ab in {seconds}s, falls nicht bestätigt",
"revertedNote": "— nicht bestätigt, automatisch zurückgerollt",
"revertFailed": "— Rollback fehlgeschlagen: {message}",
"confirmed": "Deployment bestätigt",
"confirmFailed": "Bestätigen fehlgeschlagen",
"deleteConfirm": "Diese Regel wirklich löschen? Sie wird auch von allen Ziel-Hosts entfernt.",
"deletedNamed": "Regel „{name}“ gelöscht",
"deleted": "Regel gelöscht",
"createFailed": "Regel konnte nicht angelegt werden",
"interfacesUnavailable": "Interfaces von {failed} von {total} Host(s) nicht abrufbar — Liste ggf. unvollständig.",
"copySuffix": " (Kopie)",
"staleTargets": "Nicht mehr vorhandene Ziele wurden aus dem Entwurf entfernt. Bitte Zielauswahl vor dem Speichern prüfen.",
"editDraft": "Regelentwurf bearbeiten",
"pickFromList": "Aus Liste wählen",
"enterManually": "Manuell eingeben",
"interfaceMismatch": "Bedeutet nicht auf allen Firewalls dasselbe Netz ({label}) — Push wird blockiert, bis Regel oder Ziele angepasst werden.",
"netPlaceholder": "any, IP/CIDR oder Alias",
"active": "Regel aktiv",
"deviceGroups": "Gerätegruppen",
"createGroupsHint": "Gruppen unter „Gruppen“ anlegen.",
"groupHosts": "{name} ({count} Hosts)",
"hierarchyOptional": "Policy-Hierarchie (optional)",
"noInheritance": "Keine Vererbung",
"andSubgroups": "{name} und Untergruppen",
"additionalTargets": "Zusätzliche Ziel-Hosts",
"noHosts": "Keine Hosts vorhanden.",
"coveredBy": "(bereits über {groups} abgedeckt — hier zusätzlich nur nötig, damit die Regel diesen Host behält, falls er später aus der Gruppe entfernt wird)",
"saveDraft": "Entwurf speichern",
"actionPass": "erlauben",
"actionBlock": "blockieren",
"actionReject": "ablehnen",
"dirIn": "eingehend",
"dirOut": "ausgehend",
"adopt": {
"button": "Von Firewall übernehmen",
"title": "Regeln von der Firewall übernehmen",
"intro": "Hier stehen Regeln, die direkt in OPNsense angelegt wurden. Nach der Übernahme kannst du sie in OPNexus bearbeiten und ausrollen. Die Übernahme selbst ändert nichts auf der Firewall.",
"host": "Firewall",
"none": "Keine nicht verwalteten Regeln gefunden.",
"action": "Übernehmen",
"adopted": "„{name}“ übernommen.",
"failed": "Übernahme fehlgeschlagen",
"loadFailed": "Regeln konnten nicht geladen werden.",
"notPossible": "Nicht übernehmbar",
"reasons": {
"automatic": "Systemregel",
"already_managed": "Wird bereits verwaltet",
"interface_not_single": "Mehrere oder keine Schnittstelle (Floating-Regel)",
"negated_interface": "Schnittstelle ist invertiert",
"negated_source": "Quelle ist invertiert (NOT)",
"negated_destination": "Ziel ist invertiert (NOT)",
"received_on": "Nutzt „Empfangen auf“",
"not_quick": "Keine Quick-Regel (letzter Treffer gewinnt)",
"direction_unsupported": "Richtung ist weder ein noch aus",
"action_unsupported": "Aktion nicht unterstützt",
"ipprotocol_unsupported": "IPv4 und IPv6 in einer Regel",
"no_description": "Beschreibung fehlt – bitte in OPNsense setzen"
}
},
"logPackets": "Protokollieren"
},
"login": {
"prompt": "Bitte anmelden",
"username": "Benutzername",
"password": "Passwort",
"signIn": "Anmelden",
"signingIn": "Anmelden…",
"failed": "Login fehlgeschlagen",
"developedBy": "Eigenentwicklung von {maintainer}",
"code": "Zwei-Faktor-Code",
"codeHint": "6-stelliger Code aus der Authenticator-App oder ein Wiederherstellungscode.",
"back": "Zurück zur Anmeldung",
"sso": {
"button": "Mit {name} anmelden",
"errors": {
"no_role": "Dein Konto ist in keiner Gruppe, die OPNexus nutzen darf.",
"state": "Die Anmeldung ist abgelaufen oder wurde schon benutzt. Bitte erneut versuchen.",
"token": "Die Antwort des Identitätsanbieters ließ sich nicht verifizieren.",
"provider": "Der Identitätsanbieter war nicht erreichbar oder hat abgelehnt.",
"throttled": "Zu viele Fehlversuche. Bitte einige Minuten warten.",
"disabled": "Single Sign-on ist nicht verfügbar.",
"failed": "Single Sign-on ist fehlgeschlagen."
}
}
},
"errors": {
"BACKUP_EMPTY": "Die Sicherungsdatei ist leer.",
"BACKUP_INVALID_XML": "Die Sicherungsdatei ist kein gültiges XML.",
"BACKUP_TOO_LARGE": "Die Sicherungsdatei ist größer als das Limit von {limit} MiB.",
"BACKUP_WRONG_ROOT": "Unerwartetes Wurzelelement „{root}“ — keine OPNsense-Konfigurationssicherung.",
"ACCOUNT_MUSS_ZUERST_AUF_DIE_FIREWALL_GESCHRIEBEN_WERDEN_EEEA04A9": "Account muss zuerst auf die Firewall geschrieben werden (Push)",
"ACCOUNT_NICHT_GEFUNDEN": "Account nicht gefunden",
"ACCOUNT_WIRD_NOCH_VON_MINDESTENS_EINER_ZERTIFIKATSANFRAGE_REFERENZIERT": "Account wird noch von mindestens einer Zertifikatsanfrage referenziert",
"ACME_ACCOUNT_GEHOERT_ZU_EINEM_ANDEREN_HOST": "ACME-Account gehört zu einem anderen Host",
"ACME_ACCOUNT_NICHT_GEFUNDEN": "ACME-Account nicht gefunden",
"ACTION_NOT_ALLOWED": "Aktion nicht erlaubt: {reason}",
"AKTUELLES_PASSWORT_IST_FALSCH": "Aktuelles Passwort ist falsch",
"ALIAS_CONTENT_DIFFERS": "{field_label}-Alias „{alias}“ hat nicht auf allen Zielen denselben Inhalt ({detail}). Regel korrigieren oder Ziele einschränken, bevor gepusht wird.",
"ALIAS_HAT_KEINE_ZIEL_HOSTS": "Alias hat keine Ziel-Hosts",
"ALIAS_MIT_DIESEM_NAMEN_EXISTIERT_BEREITS": "Alias mit diesem Namen existiert bereits",
"ALIAS_NICHT_GEFUNDEN": "Alias nicht gefunden",
"ALIAS_NOCH_NICHT_BESTAETIGT": "Das Alias „{alias}“ ist auf {hosts} noch nicht bestätigt. Erst das Alias bestätigen, dann diese Regel ausrollen – sonst schlägt der automatische Rollback des Alias fehl, sobald die Regel es verwendet.",
"ALIAS_WURDE_INZWISCHEN_GEAENDERT_NEU_LADEN_UND_AENDERUNGEN_5A2C1888": "Alias wurde inzwischen geändert. Neu laden und Änderungen erneut prüfen.",
"BACKUP_NICHT_GEFUNDEN": "Backup nicht gefunden",
"BENUTZERNAME_BEREITS_VERGEBEN": "Benutzername bereits vergeben",
"BENUTZER_NICHT_GEFUNDEN": "Benutzer nicht gefunden",
"CARP_VORSCHAU_NICHT_GEFUNDEN": "CARP-Vorschau nicht gefunden",
"CARP_ZUSTAND_WURDE_VERAENDERT_VORSCHAU_ERNEUT_OEFFNEN": "CARP-Zustand wurde verändert. Vorschau erneut öffnen.",
"DAS_NEUE_PASSWORT_MUSS_SICH_VOM_AKTUELLEN_UNTERSCHEIDEN": "Das neue Passwort muss sich vom aktuellen unterscheiden",
"DEPLOYMENT_NICHT_GEFUNDEN": "Deployment nicht gefunden",
"DEPLOYMENT_WURDE_GEAENDERT_VORSCHAU_AKTUALISIEREN": "Deployment wurde geändert. Vorschau aktualisieren.",
"DER_EIGENE_ACCOUNT_KANN_NICHT_GELOESCHT_WERDEN": "Der eigene Account kann nicht gelöscht werden",
"EINE_REGEL_DARF_IN_DER_REIHENFOLGE_NUR_EINMAL_F05DF47C": "Eine Regel darf in der Reihenfolge nur einmal vorkommen",
"EINTRAG_WURDE_INZWISCHEN_GEAENDERT_NEU_LADEN_UND_AENDERUNGEN_B5A5CE87": "Eintrag wurde inzwischen geändert. Neu laden und Änderungen erneut prüfen.",
"EIN_ODER_MEHRERE_ZIELE_WURDEN_NICHT_GEFUNDEN": "Ein oder mehrere Ziele wurden nicht gefunden",
"ENTFERNEN_FEHLGESCHLAGEN_DIE_ZUORDNUNG_BLEIBT_FUER_EINEN_NEUEN_4CF90E4C": "Entfernen fehlgeschlagen. Die Zuordnung bleibt für einen neuen Versuch erhalten.",
"ENTWURF_ODER_ZIELE_WURDEN_GEAENDERT_VORSCHAU_ERNEUT_OEFFNEN": "Entwurf oder Ziele wurden geändert. Vorschau erneut öffnen.",
"ERROR_1_1_NAT_REGEL_NICHT_GEFUNDEN": "1:1 NAT-Regel nicht gefunden",
"FIRMWARE_AUFTRAG_LAEUFT_BEREITS_ODER_ZUSTAND_IST_UNBEKANNT": "Firmware-Auftrag läuft bereits oder Zustand ist unbekannt",
"FUER_DIESEN_TUNNEL_IST_NOCH_KEIN_PRE_SHARED_4AE1FC63": "Für diesen Tunnel ist noch kein Pre-Shared-Key hinterlegt",
"FUER_DIESEN_TUNNEL_IST_NOCH_KEIN_SERVER_PRIVATSCHLUESSEL_D7527998": "Für diesen Tunnel ist noch kein Server-Privatschlüssel hinterlegt",
"FUER_DIESES_ZIEL_LIEGT_KEIN_WIEDERHOLBARER_ROLLBACK_VOR": "Für dieses Ziel liegt kein wiederholbarer Rollback vor",
"GEPLANTE_WARTUNG_NICHT_GEFUNDEN": "Geplante Wartung nicht gefunden",
"GEPLANTE_WARTUNG_NUR_AUF_DEM_CARP_BACKUP_MOEGLICH": "Geplante Wartung ist nur auf dem CARP-BACKUP möglich. Diese Firewall ist gerade MASTER – zuerst den CARP-Wartungsmodus aktivieren oder den Partner-Knoten einplanen",
"CARP_UEBERGABE_BRAUCHT_EINEN_CLUSTER": "Die automatische CARP-Umschaltung gibt es nur für Hosts in einem Cluster",
"GROUP_HAS_ASSIGNED_ITEMS": "Gruppe hat noch zugeordnete {label}. Diese zuerst verschieben oder löschen.",
"GRUPPENMITGLIEDER_ODER_REGELN_WURDEN_GEAENDERT_AUSWIRKUNGEN_ERNEUT_PRUEFEN": "Gruppenmitglieder oder Regeln wurden geändert. Auswirkungen erneut prüfen.",
"GRUPPENNAME_BEREITS_VERGEBEN": "Gruppenname bereits vergeben",
"GRUPPE_HAT_NOCH_UNTERGRUPPEN_DIESE_ZUERST_VERSCHIEBEN_ODER_9FFFD853": "Gruppe hat noch Untergruppen. Diese zuerst verschieben oder löschen.",
"GRUPPE_HAT_NOCH_ZUGEORDNETE_REGELN_DIESE_ZUERST_VERSCHIEBEN_2CCBC48B": "Gruppe hat noch zugeordnete Regeln. Diese zuerst verschieben oder löschen.",
"GRUPPE_NICHT_GEFUNDEN": "Gruppe nicht gefunden",
"GRUPPE_WIRD_NOCH_VON_ALIASEN_VERWENDET": "Gruppe wird noch von Aliasen verwendet",
"GRUPPE_WIRD_NOCH_VON_NAT_REGELN_VERWENDET": "Gruppe wird noch von NAT-Regeln verwendet",
"GRUPPE_WIRD_NOCH_VON_REGELN_VERWENDET": "Gruppe wird noch von Regeln verwendet",
"HOSTNAMEN_EXAKT_EINGEBEN": "Hostnamen exakt eingeben",
"HOSTZUSTAND_WURDE_VERAENDERT_VORSCHAU_ERNEUT_OEFFNEN": "Hostzustand wurde verändert. Vorschau erneut öffnen.",
"HOST_HAT_EINE_OFFENE_WARTUNGSAKTION_ZUERST_PRUEFEN_UND_8CC5FBE0": "Host hat eine offene Wartungsaktion. Zuerst prüfen und abschließen.",
"HOST_HAT_NOCH_AKTIVE_ALIAS_DEPLOYMENTS_DIESE_ZUERST_F4A3ED46": "Host hat noch aktive Alias-Deployments. Diese zuerst entfernen, sonst bleiben die Aliase unverfolgt auf der Firewall aktiv.",
"HOST_HAT_NOCH_AKTIVE_POLICY_HIERARCHIE_DEPLOYMENTS_DIESE_ADD78845": "Host hat noch aktive Policy-Hierarchie-Deployments. Diese zuerst entfernen, sonst bleiben die Regeln unverfolgt auf der Firewall aktiv.",
"HOST_HAT_NOCH_AKTIVE_REGEL_DEPLOYMENTS_DIESE_ZUERST_0BF41721": "Host hat noch aktive Regel-Deployments. Diese zuerst entfernen, sonst bleiben die Regeln unverfolgt auf der Firewall aktiv.",
"HOST_HAT_NOCH_NAT_DEPLOYMENTS_DIESE_ZUERST_GEZIELT_0C2A9E85": "Host hat noch NAT-Deployments. Diese zuerst gezielt entfernen.",
"HOST_HAT_NOCH_VPN_ODER_ZERTIFIKATS_OBJEKTE_DIESE_ZUERST_ENTFERNEN": "Host hat noch VPN-, Zertifikats- oder ACME-Objekte auf der Firewall. Diese zuerst entfernen, sonst bleiben sie aktiv und unverwaltet.",
"HOST_IST_DEAKTIVIERT": "Host ist deaktiviert",
"HOST_MIT_DIESEM_NAMEN_EXISTIERT_BEREITS": "Host mit diesem Namen existiert bereits",
"HOST_MUSS_ERREICHBAR_SEIN_UND_FIRMWARE_AUFTRAG_BEENDET_BCE1390B": "Host muss erreichbar sein und Firmware-Auftrag beendet sein",
"HOST_NICHT_GEFUNDEN": "Host nicht gefunden",
"HOST_REQUEST_FAILED": "Anfrage an Host „{host}“ fehlgeschlagen",
"INSTANZ_HAT_KEINE_ZIEL_HOSTS": "Instanz hat keine Ziel-Hosts",
"INSTANZ_NICHT_GEFUNDEN": "Instanz nicht gefunden",
"INSTANZ_WURDE_INZWISCHEN_GEAENDERT_NEU_LADEN_UND_AENDERUNGEN_DB923B59": "Instanz wurde inzwischen geändert. Neu laden und Änderungen erneut prüfen.",
"INTERFACE_MEANING_DIFFERS": "Interface „{interface}“ bedeutet nicht auf allen Zielen dasselbe Netz ({detail}). Regel korrigieren oder Ziele einschränken, bevor gepusht wird.",
"KEINE_OFFENE_WARTUNGSAKTION": "Keine offene Wartungsaktion",
"KEIN_OFFENER_RESTORE_VORSCHAU_VORGANG": "Kein offener Restore-Vorschau-Vorgang",
"KEIN_OFFENER_UEBERGEBENER_RESTORE_VORGANG": "Kein offener, übergebener Restore-Vorgang",
"MAINTENANCE_WAIT_REQUIRED": "Wartungsauftrag wurde gerade übergeben. Mindestens {seconds} Sekunden warten.",
"MINDESTENS_EINE_REGEL_WURDE_INZWISCHEN_GEAENDERT_NEU_LADEN_932925BD": "Mindestens eine Regel wurde inzwischen geändert. Neu laden und erneut sortieren.",
"MINDESTENS_EIN_ADMIN_ACCOUNT_MUSS_BESTEHEN_BLEIBEN": "Mindestens ein Admin-Account muss bestehen bleiben",
"NICHT_AUTHENTIFIZIERT": "Nicht authentifiziert",
"NORMALBETRIEB_NOCH_NICHT_BESTAETIGT_WARTUNGSMODUS_MUSS_AUS_UND_8AF9290B": "Normalbetrieb noch nicht bestätigt: Wartungsmodus muss aus und MASTER/BACKUP müssen gesund sein",
"NUR_AUSSTEHENDE_GEPLANTE_WARTUNGEN_KOENNEN_ABGEBROCHEN_WERDEN": "Nur ausstehende geplante Wartungen können abgebrochen werden",
"NUR_FRUEHERE_AKTIVE_ZIELE_KOENNEN_BEREINIGT_WERDEN": "Nur frühere, aktive Ziele können bereinigt werden",
"NUR_FRUEHERE_AKTIVE_ZIELE_OHNE_OFFENEN_ROLLBACK_KOENNEN_06DE0ADB": "Nur frühere, aktive Ziele ohne offenen Rollback können bereinigt werden",
"OFFENES_DEPLOYMENT_ZUERST_BESTAETIGEN_ODER_ROLLBACK_KLAEREN": "Offenes Deployment zuerst bestätigen oder Rollback klären",
"OFFENES_DEPLOYMENT_ZUERST_KLAEREN": "Offenes Deployment zuerst klären",
"ORDERING_FAILED": "Reihenfolge konnte nicht überall hergestellt werden: {reason}",
"OUTBOUND_NAT_REGEL_NICHT_GEFUNDEN": "Outbound NAT-Regel nicht gefunden",
"PEER_PRE_SHARED_KEY_IST_AKTIVIERT_ABER_ES_FCFAC129": "Peer-Pre-Shared-Key ist aktiviert, aber es wurde noch kein Schlüsselmaterial hinterlegt",
"POLICY_HIERARCHIE_GRUPPE_NICHT_GEFUNDEN": "Policy-Hierarchie-Gruppe nicht gefunden",
"PORT_FORWARD_REGEL_NICHT_GEFUNDEN": "Port-Forward-Regel nicht gefunden",
"REGELLISTE_WURDE_INZWISCHEN_GEAENDERT_NEU_LADEN_UND_ERNEUT_529D7203": "Regelliste wurde inzwischen geändert. Neu laden und erneut sortieren.",
"REGEL_HAT_KEINE_ZIEL_HOSTS": "Regel hat keine Ziel-Hosts",
"REGEL_NICHT_GEFUNDEN": "Regel nicht gefunden",
"REGEL_WURDE_INZWISCHEN_GEAENDERT_NEU_LADEN_UND_AENDERUNGEN_BF51B6B0": "Regel wurde inzwischen geändert. Neu laden und Änderungen erneut prüfen.",
"RESTORE_VORGANG_NICHT_GEFUNDEN": "Restore-Vorgang nicht gefunden",
"ROLLBACK_ERNEUT_FEHLGESCHLAGEN_PRUEFE_DIE_ERREICHBARKEIT_DER_FIREWALL": "Rollback erneut fehlgeschlagen. Prüfe die Erreichbarkeit der Firewall.",
"ROLLENWECHSEL_NOCH_NICHT_BESTAETIGT_DIESER_HOST_MUSS_IM_4676309B": "Rollenwechsel noch nicht bestätigt: dieser Host muss im Wartungsmodus BACKUP und der Partner MASTER sein",
"RULEBASE_NICHT_GEFUNDEN": "Rulebase nicht gefunden",
"SICHERUNG_NICHT_GEFUNDEN": "Sicherung nicht gefunden",
"SICHERUNG_WURDE_SEIT_DER_VORSCHAU_VERAENDERT_ODER_IST_2732C4DD": "Sicherung wurde seit der Vorschau verändert oder ist verschwunden. Vorschau erneut öffnen.",
"TLS_HARDENING_IST_AKTIVIERT_ABER_ES_WURDE_NOCH_F53C81DD": "TLS-Hardening ist aktiviert, aber es wurde noch kein Schlüsselmaterial hinterlegt",
"TOO_MANY_LOGIN_ATTEMPTS": "Zu viele Fehlversuche. Bitte in {wait} Sekunden erneut versuchen.",
"TUNNEL_HAT_KEINE_ZIEL_HOSTS": "Tunnel hat keine Ziel-Hosts",
"TUNNEL_NICHT_GEFUNDEN": "Tunnel nicht gefunden",
"TUNNEL_WURDE_INZWISCHEN_GEAENDERT_NEU_LADEN_UND_AENDERUNGEN_50830F70": "Tunnel wurde inzwischen geändert. Neu laden und Änderungen erneut prüfen.",
"UEBERGEORDNETE_GRUPPE_NICHT_GEFUNDEN": "Übergeordnete Gruppe nicht gefunden",
"UNGUELTIGER_BENUTZERNAME_ODER_PASSWORT": "Ungültiger Benutzername oder Passwort",
"UPSTREAM_REQUEST_FAILED": "Anfrage an den Zielservice fehlgeschlagen",
"VERKNUEPFTER_ACME_ACCOUNT_NICHT_GEFUNDEN": "Verknüpfter ACME-Account nicht gefunden",
"VORGANG_KANN_NICHT_MEHR_ABGEBROCHEN_WERDEN": "Vorgang kann nicht mehr abgebrochen werden",
"VORSCHAU_ABGELAUFEN_BITTE_ERNEUT_OEFFNEN": "Vorschau abgelaufen. Bitte erneut öffnen.",
"VORSCHAU_ABGELAUFEN_ODER_BEREITS_VERWENDET": "Vorschau abgelaufen oder bereits verwendet",
"WARTUNGSAKTION_NICHT_GEFUNDEN": "Wartungsaktion nicht gefunden",
"WARTUNGSVORSCHAU_NICHT_GEFUNDEN": "Wartungsvorschau nicht gefunden",
"ZEITPUNKT_MUSS_IN_DER_ZUKUNFT_LIEGEN": "Zeitpunkt muss in der Zukunft liegen",
"ZERTIFIKATSANFRAGE_MUSS_ZUERST_AUF_DIE_FIREWALL_GESCHRIEBEN_WERDEN_F684C449": "Zertifikatsanfrage muss zuerst auf die Firewall geschrieben werden (Push)",
"ZERTIFIKATSANFRAGE_NICHT_GEFUNDEN": "Zertifikatsanfrage nicht gefunden",
"ZERTIFIKATSANFRAGE_WURDE_NOCH_NICHT_AUF_DIE_FIREWALL_GESCHRIEBEN": "Zertifikatsanfrage wurde noch nicht auf die Firewall geschrieben",
"ZERTIFIKAT_NICHT_GEFUNDEN": "Zertifikat nicht gefunden",
"ZIELE_ODER_DEPLOYMENT_WURDEN_GEAENDERT_VORSCHAU_AKTUALISIEREN": "Ziele oder Deployment wurden geändert. Vorschau aktualisieren.",
"ZIEL_HOST_NICHT_GEFUNDEN": "Ziel-Host nicht gefunden",
"OUTBOUND_MODE_UNREADABLE": "Outbound-Modus auf {host} nicht lesbar: {reason}",
"INVALID_CHARACTERS": "Die Eingabe enthält ein nicht speicherbares Zeichen (z. B. ein NUL-Zeichen)",
"UPSTREAM_REJECTED": "Die Firewall hat die Anfrage abgelehnt: {reason}",
"SERVICE_NOT_FOUND": "{service}: Dienst auf dieser Firewall nicht gefunden",
"SERVICE_LOCKED": "{service}: Dienst ist gesperrt und kann nicht per API gesteuert werden",
"OUTBOUND_MODE_BLOCKS_PUSH": "{host}: Outbound-NAT-Modus „{mode}“ erlaubt keinen Push. Modus in OPNsense selbst auf Hybrid/Manuell umstellen. OPNexus ändert diesen Modus nicht.",
"GROUP_CANNOT_BE_OWN_PARENT": "Eine Gruppe kann nicht ihr eigener Parent sein",
"GROUP_HIERARCHY_CYCLE": "Diese Zuordnung würde einen Zyklus in der Gruppenhierarchie erzeugen",
"OPEN_DEPLOYMENT_DRAFT_UNCHANGED": "Offene Bestätigung oder fehlgeschlagenen Rollback zuerst klären; Entwurf bleibt unverändert",
"OPEN_HOST_MAINTENANCE_BLOCKS_DEPLOY": "Offene Host-Wartung zuerst prüfen und abschließen, bevor Regeln ausgerollt werden.",
"OPEN_RESTORE_BLOCKS_DEPLOY": "Eine Wiederherstellung ist für diesen Host offen. Bitte zuerst bestätigen oder abbrechen.",
"READ_ONLY_ACCESS": "Nur-Lese-Zugriff: Diese Aktion erfordert die Rolle „Admin“.",
"CROSS_ORIGIN_BLOCKED": "Anfrage von einer fremden Herkunft blockiert",
"TLS_PROBE_FAILED": "Das Zertifikat der Firewall konnte nicht abgerufen werden",
"TLS_PEM_INVALID": "Kein gültiges PEM-Zertifikat",
"TLS_PIN_MISMATCH": "Die Firewall präsentiert ein anderes Zertifikat als das festgesetzte",
"TOTP_REQUIRED": "Zwei-Faktor-Code erforderlich",
"TOTP_INVALID": "Ungültiger Zwei-Faktor-Code",
"TOTP_ALREADY_ENABLED": "Zwei-Faktor-Anmeldung ist bereits aktiv",
"TOTP_NOT_ENABLED": "Zwei-Faktor-Anmeldung ist nicht aktiv",
"TOTP_SETUP_MISSING": "Es wurde keine Einrichtung gestartet",
"RULE_NOT_ADOPTABLE": "Diese Regel kann nicht übernommen werden ({reasons})",
"NETWORK_ACK_REQUIRED": "Diese Änderung kann die Verbindung zur Firewall trennen und muss ausdrücklich bestätigt werden ({reasons})",
"NETWORK_APPLY_UNCERTAIN": "Die Änderung wurde geschrieben, das Anwenden auf „{host}“ ist aber fehlgeschlagen oder unklar. Stand auf der Firewall prüfen; Backup: {backup_id}",
"NETWORK_BACKUP_FAILED": "Backup von „{host}“ vor der Änderung fehlgeschlagen – es wurde nichts geändert",
"NETWORK_CHANGE_BLOCKED": "Die Änderung ist nicht möglich ({reasons})",
"NETWORK_FIELD_INVALID": "Ungültiges Feld: {field}",
"NETWORK_ITEM_NOT_FOUND": "Das Objekt existiert auf der Firewall nicht (mehr)",
"UPDATER_UNAVAILABLE": "Der Updater ist nicht aktiviert oder nicht erreichbar.",
"UPDATER_BUSY": "Es läuft bereits ein Update oder Rollback.",
"UPDATER_REJECTED": "Der Updater hat die Anfrage abgelehnt ({reason}).",
"UPDATE_NOT_OFFERED": "Diese Version wird nicht zur Installation angeboten — nur die neueste stabile Version.",
"UPDATE_MAJOR_CHANGE": "Hauptversions-Sprünge bitte bewusst auf dem Server mit „opnexus update“ ausführen.",
"UPDATE_CHECK_MANAGED_BY_SERVER": "Die Versionsprüfung ist durch UPDATE_CHECK_URL in der .env des Servers festgelegt und lässt sich hier nicht ändern.",
"UPDATE_CHECK_URL_INVALID": "Die Feed-Adresse muss mit http:// oder https:// beginnen und darf keine Leerzeichen enthalten.",
"ADMIN_REQUIRED": "Diese Funktion erfordert die Rolle „Admin“.",
"API_TOKEN_LIMIT_REACHED": "Es sind höchstens {limit} API-Tokens pro Benutzer möglich. Widerrufe zuerst nicht mehr benötigte Tokens.",
"BACKUP_UNLESBAR": "Das Backup lässt sich nicht lesen: {reason}",
"DEPLOY_NEEDS_ADMIN": "Ausrollen darf hier nur ein Administrator (Aufgabentrennung). Bereite die Änderung vor und lass sie freigeben.",
"OVERLAY_INVALID": "Ungültige Angabe: {reason}",
"OVERLAY_SUBNET_LOCKED": "Das Overlay-Netz lässt sich nicht ändern, solange Firewalls eingetragen sind. Erst die Einträge löschen.",
"OVERLAY_NAME_TAKEN": "Dieser Name ist schon vergeben.",
"OVERLAY_PEER_NOT_FOUND": "Overlay-Eintrag nicht gefunden",
"VARIABLES_MISSING": "Es fehlen Werte für Variablen: {details}. Trage sie auf der Host-Seite unter „Variablen“ ein.",
"VARIABLE_INVALID": "Ungültige Variable: {reason}",
"OIDC_TEST_FAILED": "Der Test des Identitätsanbieters ist fehlgeschlagen: {reason}",
"OIDC_MANAGED_USER": "Dieses Konto wird vom Single Sign-on verwaltet: Rolle und Passwort ändern sich beim Identitätsanbieter.",
"OFFSITE_TEST_FAILED": "Der Test des Offsite-Ziels ist fehlgeschlagen: {reason}",
"API_TOKEN_NOT_FOUND": "API-Token nicht gefunden",
"API_TOKEN_SCOPE_FORBIDDEN": "Dieses API-Token (Bereich „{scope}“) darf diese Aktion nicht ausführen.",
"API_TOKEN_SCOPE_TOO_HIGH": "Mit deiner Rolle ist dieser Token-Bereich nicht möglich (Nur-Lesen: „Lesen“, Operator: bis „Ausrollen“)."
},
"workflow": {
"attention": "Fehler prüfen",
"pending": "Bestätigung offen",
"cleanup": "Frühere Ziele prüfen",
"unassigned": "Ziele fehlen",
"disabled": "Ziel-Hosts deaktiviert",
"draft": "Änderungen ausstehend",
"synced": "Ausgerollt",
"tooltip": "Stand der von OPNexus gespeicherten Deployments; kein Live-Abgleich"
},
"certStatus": {
"expired": "Abgelaufen",
"expiring_soon": "Läuft bald ab",
"valid": "Gültig",
"unknown": "Unbekannt"
},
"outboundModes": {
"title": "Outbound-Modus der Firewalls",
"refresh": "Modus aktualisieren",
"unavailable": "Nicht abrufbar",
"pushBlocked": " · Push gesperrt",
"hint": "Manuelle Regeln wirken nur in Hybrid/Manuell. Den Modus kannst du ausschließlich in OPNsense ändern; vor jedem Push wird er erneut geprüft."
},
"liveNat": {
"firewallSelect": "Firewall für NAT-Live-Ansicht",
"description": "Aktueller Firewall-Stand, ausschließlich lesend. Automatische OPNsense-Regeln werden separat angezeigt.",
"noEntries": "Keine Einträge.",
"configured": "Konfigurierte Regeln ({count})",
"automatic": "Automatische Regeln · nur lesend ({count})",
"noDescription": "(ohne Beschreibung)"
},
"hostResource": {
"loadFailed": "Auslastungsdaten konnten nicht geladen werden",
"title": "Systemauslastung (24h)",
"empty": "Noch keine Messwerte. Die Aufzeichnung läuft im Hintergrund alle 60 Sekunden.",
"cpu": "CPU-Last (1 Min.)",
"memory": "Speicher",
"disk": "Festplatte (/)"
},
"loginBanner": {
"failedOne": "{count} fehlgeschlagener Login-Versuch seit deiner letzten Anmeldung.",
"failedMany": "{count} fehlgeschlagene Login-Versuche seit deiner letzten Anmeldung.",
"lastLogin": "Letzte Anmeldung: {time}",
"fromIp": " von {ip}",
"welcome": "Willkommen, {username}.",
"sessionUntil": "Sitzung gültig bis {time}."
},
"updateBanner": {
"title": "OPNexus {latest} ist verfügbar (installiert: {current}).",
"notes": "Release-Notes",
"how": "Aktualisieren in den Einstellungen oder auf dem Server mit „opnexus update“.",
"dismiss": "Hinweis für diese Version ausblenden",
"settings": "Zu den Einstellungen"
},
"acme": {
"externalCaWarning": "Kontaktiert die echte Zertifizierungsstelle (z. B. Let's Encrypt) über das Internet — keine rein lokale Änderung. Zählt gegen deren Rate-Limits (z. B. Ausstellungen pro Domain und Woche). Für Tests eine *_test-CA (z. B. letsencrypt_test) verwenden.",
"actionFailed": "Aktion fehlgeschlagen",
"warningUnderstood": "Warnung verstanden — fortfahren",
"areYouSure": "Bist du sicher? „{action}“ wird jetzt ausgeführt.",
"yes": "Ja, {action}"
},
"hostServices": {
"loadFailed": "Dienste konnten nicht geladen werden",
"actionFailed": "Aktion fehlgeschlagen",
"confirm": "Dienst „{name}“ wirklich {verb}? Das kann die Konnektivität oder andere Funktionen dieses Hosts kurzzeitig beeinträchtigen.",
"verb": {
"start": "starten",
"stop": "stoppen",
"restart": "neustarten"
},
"done": "Dienst „{name}“ {result}",
"result": {
"start": "gestartet",
"stop": "gestoppt",
"restart": "neugestartet"
},
"title": "Dienste",
"empty": "Keine Dienste gemeldet.",
"service": "Dienst",
"description": "Beschreibung",
"status": "Status",
"running": "läuft",
"stopped": "gestoppt",
"locked": "Von OPNsense gesperrt",
"startTitle": "Starten",
"stopTitle": "Stoppen",
"restartTitle": "Neustarten"
},
"acmeAccount": {
"caCustom": "Eigene CA-URL",
"edit": "ACME-Account bearbeiten",
"new": "Neuer ACME-Account",
"localNote": "Anlegen und Speichern ist eine rein lokale Konfigurationsänderung ohne Außenkontakt. Erst die separate „Registrieren“-Aktion kontaktiert die Zertifizierungsstelle.",
"host": "Host",
"name": "Name",
"description": "Beschreibung",
"email": "E-Mail",
"ca": "Zertifizierungsstelle",
"customCaUrl": "Custom-CA-URL",
"eabKid": "EAB Key-ID (optional)",
"eabHmacKeep": "EAB HMAC — leer lassen = unverändert",
"eabHmac": "EAB HMAC (optional)",
"active": "Account aktiv"
},
"review": {
"actions": {
"create": "Neu anlegen",
"update": "Ändern",
"unchanged": "Unverändert",
"disabled": "Deaktiviert · übersprungen",
"retained": "Früheres Ziel · bleibt bestehen",
"missing_variable": "Variable fehlt · übersprungen",
"missing_cert": "Kein Zertifikat/CA ausgewählt · wird übersprungen"
},
"loadFailed": "Laden fehlgeschlagen",
"pushFailed": "Push fehlgeschlagen",
"actionFailed": "Aktion fehlgeschlagen",
"previewTitle": "Änderungen prüfen & ausrollen",
"reload": "Neu laden",
"removeFromHost": "Von diesem Host entfernen",
"retryRollback": "Rollback erneut versuchen",
"actionsRequireHost": "Für Aktionen muss der Host aktiviert und ein offenes Deployment geklärt sein.",
"viewHost": "Host ansehen",
"colField": "Feld",
"colBefore": "Vorher",
"colDraft": "Entwurf",
"pushInfo": "Push wendet die Änderungen an. Anschließend musst du sie innerhalb der angezeigten Frist bestätigen, sonst versucht OPNexus den vorherigen Stand wiederherzustellen.",
"allInSync": "Alle aktiven Ziele entsprechen dem gespeicherten Entwurf. Kein Push notwendig.",
"pushing": "Push läuft…",
"deployNow": "Jetzt ausrollen",
"version": "Version {n}",
"adoptAsDraft": "Als Entwurf übernehmen",
"assignTargets": "Ziele zuweisen",
"rollbackDone": "Rollback auf {host} erfolgreich.",
"historyHint": "Eine frühere Version wird ins Bearbeitungsformular übernommen. Erst speichern, dann Änderungen prüfen und ausrollen.",
"rule": {
"deployed": "Regel „{name}“ ausgerollt",
"removeConfirm": "Regel „{name}“ ausschließlich von „{host}“ entfernen? Die Änderung wird sofort angewendet und hat keinen automatischen Rollback.",
"rollbackConfirm": "Den vorherigen Regelstand auf „{host}“ erneut wiederherstellen?",
"removed": "Regel von {host} entfernt.",
"historyTitle": "Regelhistorie",
"noTargets": "Keine Ziel-Hosts. Weise der Regel Hosts oder eine Gerätegruppe zu.",
"noHistory": "Für diese bestehende Regel wird die Historie ab der ersten Bearbeitung erfasst."
},
"alias": {
"deployed": "Alias „{name}“ ausgerollt",
"removeConfirm": "Alias „{name}“ ausschließlich von „{host}“ entfernen? Die Änderung wird sofort angewendet und hat keinen automatischen Rollback.",
"rollbackConfirm": "Den vorherigen Alias-Stand auf „{host}“ erneut wiederherstellen?",
"removed": "Alias von {host} entfernt.",
"historyTitle": "Alias-Historie",
"noTargets": "Keine Ziel-Hosts. Weise dem Alias Hosts oder eine Gerätegruppe zu.",
"noHistory": "Für diesen bestehenden Alias wird die Historie ab der ersten Bearbeitung erfasst.",
"pushInfo": "Push wendet die Änderungen an. Anschließend musst du sie innerhalb der angezeigten Frist bestätigen, sonst versucht OPNexus den vorherigen Stand wiederherzustellen — jede Regel, die diesen Alias verwendet, ist bis dahin bereits betroffen."
},
"tunnel": {
"deployed": "Tunnel „{name}“ ausgerollt",
"removeConfirm": "Tunnel „{name}“ ausschließlich von „{host}“ entfernen? Die Änderung wird sofort angewendet und hat keinen automatischen Rollback.",
"removed": "Tunnel von {host} entfernt.",
"historyTitle": "Tunnel-Historie",
"noTargets": "Keine Ziel-Hosts. Weise dem Tunnel Hosts oder eine Gerätegruppe zu.",
"noHistory": "Für diesen bestehenden Tunnel wird die Historie ab der ersten Bearbeitung erfasst."
},
"instance": {
"deployed": "Instanz „{name}“ ausgerollt",
"removeConfirm": "Instanz „{name}“ ausschließlich von „{host}“ entfernen? Die Änderung wird sofort angewendet und hat keinen automatischen Rollback.",
"removed": "Instanz von {host} entfernt.",
"historyTitle": "Instanz-Historie",
"noTargets": "Keine Ziel-Hosts. Weise der Instanz Hosts oder eine Gerätegruppe zu.",
"noHistory": "Für diese bestehende Instanz wird die Historie ab der ersten Bearbeitung erfasst."
},
"historyHintGroups": "Eine frühere Version wird ins Bearbeitungsformular übernommen. Erst speichern, dann Änderungen prüfen und ausrollen. Gruppenmitgliedschaften werden beim Push aktuell aufgelöst.",
"armWarning": "Warnung verstanden — Push vorbereiten",
"armSure": "Bist du sicher? Config-Schreiben und Dienst-Reload laufen in einem Schritt, ohne die Möglichkeit eines automatischen Rollbacks.",
"yesDeploy": "Ja, jetzt ausrollen",
"hierarchy": {
"noTargets": "Keine Ziel-Hosts. Weise der Gruppe dieser Regel Hosts zu (direkt oder über eine Untergruppe).",
"editRule": "Regel bearbeiten",
"pushInfo": "Push wendet die Änderungen an und stellt anschließend die Pre-/Post-Reihenfolge auf jedem betroffenen Host wieder her. Danach musst du innerhalb der angezeigten Frist bestätigen, sonst versucht OPNexus den vorherigen Stand wiederherzustellen."
},
"historyHintPsk": "Eine frühere Version wird ins Bearbeitungsformular übernommen (der Pre-Shared-Key selbst ist nie Teil der Historie — nur ob einer gesetzt war). Erst speichern, dann Änderungen prüfen und ausrollen.",
"historyHintStaticKey": "Eine frühere Version wird ins Bearbeitungsformular übernommen (das Static-Key-Material selbst ist nie Teil der Historie — nur ob eines gesetzt war). Erst speichern, dann Änderungen prüfen und ausrollen.",
"historyHintKeys": "Eine frühere Version wird ins Bearbeitungsformular übernommen (Schlüsselmaterial selbst ist nie Teil der Historie — nur ob es gesetzt war). Erst speichern, dann Änderungen prüfen und ausrollen.",
"originalPort": "Originalport",
"outboundMode": "{host}: Outbound-Modus {mode}",
"outboundBlocked": " – Push gesperrt. In OPNsense auf Hybrid/Manuell umstellen.",
"historyTitle": "Versionsverlauf",
"pushShort": "Nach dem Push innerhalb der Frist bestätigen, sonst folgt ein automatischer Rollback."
},
"fields": {
"description": "Beschreibung",
"enabled": "Aktiv",
"action": "Aktion",
"interface": "Interface",
"direction": "Richtung",
"ipprotocol": "IP-Version",
"protocol": "Protokoll",
"source_net": "Quelle",
"source_port": "Quellport",
"destination_net": "Ziel",
"destination_port": "Zielport",
"quick": "Quick",
"log": "Logging",
"name": "Name",
"type": "Typ",
"content": "Inhalt"
},
"carp": {
"peerInMaintenance": "{peer} steht bereits im CARP-Wartungsmodus. Zuerst dort „CARP-Normalbetrieb herstellen“ klicken, nicht hier erneut umschalten.",
"previewFailed": "CARP-Vorschau fehlgeschlagen",
"outcomeUnclear": "CARP-Ausgang unklar. Rollen prüfen und nicht erneut klicken.",
"switchToPartner": "CARP auf Partner umschalten",
"restoreNormal": "CARP-Normalbetrieb herstellen",
"trafficHandover": "Verkehrsübergabe",
"leaveMaintenance": "Wartungsmodus verlassen",
"enterDescription": "{host} wird persistent demotiert. Der erreichbare BACKUP-Partner soll die virtuellen IPs als MASTER übernehmen.",
"leaveDescription": "{host} verlässt den persistenten CARP-Wartungsmodus. Die normale CARP-Wahl kann die Rollen und damit den aktiven Verkehr erneut verschieben.",
"previewValid": "Vorschau gültig bis {time}. Bei Timeout niemals blind wiederholen: zuerst beide CARP-Rollen prüfen.",
"autoRevertRunning": "Läuft bereits mit automatischem Rückschalt-Zeitpunkt um {time}.",
"autoRevertAfter": "Automatisch zurückschalten nach",
"minutes": "{n} Minuten",
"never": "Nie (permanent, wie bisher)",
"autoRevertHint": "Sicherheitsnetz gegen einen vergessenen Wartungsmodus — schaltet automatisch in den Normalbetrieb zurück, falls nicht vorher manuell beendet.",
"confirmHostname": "Hostnamen zur Bestätigung eingeben",
"confirmHostnameAria": "Hostnamen für CARP bestätigen",
"ackEnter": "Der BACKUP-Partner ist aktualisiert und getestet. ",
"ackLeave": "Beide Knoten sind aktualisiert und getestet. ",
"ackCommon": "Ich habe Erreichbarkeit, Konsolenzugang und den erwarteten Ziel-MASTER geprüft; eine kurze Verkehrsunterbrechung ist berücksichtigt.",
"executeEnter": "Rollenwechsel jetzt ausführen",
"executeLeave": "Normalbetrieb jetzt herstellen",
"handoverShort": "{host} gibt MASTER an den Partner ab",
"leaveShort": "Die normale CARP-Wahl bestimmt die Rollen neu",
"expectedRole": "erwartete Rolle",
"previewValidShort": "Vorschau gültig bis {time}",
"previewValidTip": "Bei einem Timeout niemals blind wiederholen: zuerst beide CARP-Rollen prüfen.",
"ackEnterShort": "Partner ist aktualisiert und getestet; Konsolenzugang und kurze Unterbrechung sind eingeplant.",
"ackLeaveShort": "Beide Knoten sind aktualisiert und getestet; Konsolenzugang und kurze Unterbrechung sind eingeplant."
},
"maint": {
"action": {
"reboot": "Neustart",
"update": "Firmware-Update",
"major_update": "Major-Upgrade",
"carp_enter": "CARP-Übergabe",
"carp_leave": "CARP-Normalbetrieb"
},
"reason": {
"haOrder": "HA-Reihenfolge: Dieser Host ist MASTER. Zuerst den BACKUP aktualisieren, dann mit „CARP auf Partner umschalten“ die Rollen wechseln.",
"backupRequired": "Backup erforderlich: Vor der Installation ein lokales Backup erstellen, das höchstens 24 Stunden alt ist.",
"noStableUpdate": "Kein stabiles Paketupdate gemeldet. Update-Suche ausführen.",
"noMajorUpgrade": "Kein Major-Upgrade gemeldet. Update-Suche ausführen.",
"haPartnerNotReady": "HA-Partner nicht bereit: Der andere Knoten muss online und CARP MASTER sein."
},
"loadFailed": "Laden fehlgeschlagen",
"scheduleFailed": "Planen fehlgeschlagen",
"cancelFailed": "Abbrechen fehlgeschlagen",
"previewFailed": "Vorschau fehlgeschlagen",
"outcomeUnclear": "Ausgang unklar. Wartungsstatus prüfen.",
"finishFailed": "Abschluss fehlgeschlagen",
"checkFailed": "Update-Suche fehlgeschlagen",
"logFailed": "Protokoll nicht lesbar",
"jobSubmitted": "Auftrag übergeben.",
"checkRequested": "Update-Suche angefordert. Nach kurzer Zeit den Status aktualisieren.",
"title": "Host-Wartung",
"close": "Wartung schließen",
"open": "Wartung öffnen",
"intro": "Neustart und stabiles Firmware-Update gelten für diesen Host. In Clustern wird zuerst der CARP-BACKUP aktualisiert; der abgesicherte Rollenwechsel kann danach direkt hier ausgeführt werden.",
"installed": "Installiert: {version}",
"firmwareJob": "Firmware-Auftrag: {state}",
"lastCheck": "Letzte Update-Suche: {value}",
"unknown": "unbekannt",
"backup": "Backup: {value}",
"noBackup": "nicht vorhanden",
"checkUpdates": "Nach Updates suchen",
"previewReboot": "Neustart prüfen",
"previewUpdate": "Update prüfen",
"previewMajor": "Major-Upgrade prüfen",
"scheduleLater": "Später ausführen…",
"refreshStatus": "Status aktualisieren",
"hints": "Hinweise",
"scheduled": "Geplante Wartungen",
"scheduleStatus": {
"pending": "ausstehend",
"running": "läuft",
"succeeded": "übergeben",
"cancelled": "abgebrochen",
"failed": "fehlgeschlagen",
"completed": "abgeschlossen"
},
"history": "Verlauf",
"opStatus": {
"acknowledged": "manuell abgeschlossen",
"cancelled": "abgebrochen",
"unknown": "Ausgang unklar",
"starting": "Übergabe begonnen",
"submitted": "An Firewall übergeben"
},
"confirmFinish": "Abschluss bestätigen",
"cancelOperation": "Vorgang abbrechen",
"readLog": "Update-Protokoll lesen",
"confirmTitle": "{action} bestätigen",
"majorWarning": "Major-Upgrade: Wechsel auf eine neue Hauptversion. Länger dauernd und riskanter als ein reines Paketupdate, ggf. mit größeren Verhaltensänderungen. Frisches Backup und Konsolenzugang bereithalten.",
"downtimeNote": "Der Host wird zeitweise nicht erreichbar sein. Laufende Verbindungen können abbrechen{reboot}. Es gibt keinen automatischen Rollback für diese Wartungsaktion.",
"andReboot": " und das Update erfordert einen Neustart",
"previewValid": "Vorschau gültig bis {time}.",
"confirmHostname": "Hostnamen zur Bestätigung eingeben",
"confirmHostnameAria": "Hostnamen bestätigen",
"windowReady": "Wartungsfenster und Konsolenzugang sind bereit; ich bestätige die Unterbrechung.",
"submitting": "Wird übergeben…",
"executeNow": "{action} jetzt ausführen",
"finishCarpTitle": "CARP-Rollenwechsel abschließen",
"finishTitle": "Wartung abschließen",
"finishCarpCheck": "Prüfe die CARP-Rollen und Erreichbarkeit beider Cluster-Knoten. ",
"finishCheckPre": "Prüfe Erreichbarkeit, Version und Dienste auf ",
"finishNote": "Diese Bestätigung dokumentiert deine Prüfung; sie löst keine Firewall-Aktion aus.",
"finishHostnameAria": "Hostnamen für Abschluss bestätigen",
"finishChecked": "Ich habe den Abschluss auf der Firewall geprüft.",
"saveFinish": "Geprüften Abschluss speichern",
"cancelWarnPre": "Das bestätigt ",
"cancelWarnStrong": "keinen",
"cancelWarnPost": " erfolgreichen Abschluss — es schließt den Datensatz nur, damit Host/Cluster nicht weiter gesperrt bleiben. Nutze das nur, wenn der erwartete Zustand nachweislich nie eingetreten ist (z. B. CARP-Rollenwechsel hängt fest).",
"cancelHostnameAria": "Hostnamen zum Abbrechen bestätigen",
"reasonLabel": "Grund (für das Audit-Log)",
"reasonPlaceholder": "z. B. CARP-Rollenwechsel hat nach mehreren Minuten nicht stattgefunden",
"closeWithoutConfirm": "Vorgang ohne Bestätigung schließen",
"scheduleTitle": "Wartung später ausführen",
"actionLabel": "Aktion",
"timeLabel": "Zeitpunkt",
"unattendedWarning": "Läuft unbeaufsichtigt zum gewählten Zeitpunkt. Für Updates erstellt OPNexus unmittelbar davor selbst ein Konfigurationsbackup. Die übrigen Voraussetzungen werden erst dann erneut geprüft — ist eine nicht erfüllt, wird die Aktion nicht ausgeführt und als fehlgeschlagen markiert, ohne erneuten Versuch.",
"unattendedAck": "Mir ist bewusst, dass niemand anwesend sein wird, wenn die Aktion ausgeführt wird.",
"scheduling": "Wird geplant…",
"scheduleIt": "Wartung einplanen",
"unattendedShort": "Läuft unbeaufsichtigt zum gewählten Zeitpunkt",
"scheduleMasterBlocked": "Diese Firewall ist gerade CARP-MASTER. Geplante Wartung läuft nur auf dem BACKUP-Knoten, weil sonst der Verkehr ausfällt. Plane stattdessen den Partner-Knoten ein, oder aktiviere zuerst den CARP-Wartungsmodus an diesem Host.",
"handoverOption": "Vorher automatisch auf den Partner umschalten und danach zurückschalten (CARP)",
"handoverHint": "Ablauf: Wartungsmodus auf diesem Host, Partner wird MASTER (wird geprüft), dann läuft die Aktion, nach Rückkehr des Hosts wird der Wartungsmodus wieder verlassen. Bei Problemen bleibt der Partner MASTER und es kommt eine Benachrichtigung. Beim Zurückschalten kann der Host je nach CARP-Einstellung die MASTER-Rolle zurückholen (kurzer zweiter Wechsel).",
"handoverBadge": "mit CARP-Umschaltung",
"phase": {"handover_wait": "wartet auf Übernahme durch den Partner", "job_wait": "Auftrag läuft", "leave": "schaltet zurück", "leave_wait": "prüft den Normalbetrieb"}
},
"restore": {
"handoffWarning": "OPNexus führt die Wiederherstellung NICHT selbst aus. Nach der Übergabe musst du die Sicherung manuell im OPNsense-Webinterface importieren. Solange dieser Vorgang offen ist, sind Regel-/Alias-/NAT-Pushes und Host-Wartung für diesen Host gesperrt.",
"previewFailed": "Vorschau fehlgeschlagen",
"handoffFailed": "Übergabe fehlgeschlagen",
"confirmFailed": "Bestätigung fehlgeschlagen",
"cancelFailed": "Abbrechen fehlgeschlagen",
"title": "Wiederherstellung",
"hostBackup": "{host} · Sicherung {backup}",
"checking": "Sicherung wird geprüft…",
"hostname": "Hostname",
"domain": "Domain",
"unknown": "unbekannt",
"haSync": "HA-Sync",
"active": "aktiv",
"inactive": "nicht aktiv",
"secretFields": "Geheime Felder",
"secretsFound": "{count} gefunden, nicht angezeigt",
"understood": "Warnung verstanden — Übergabe vorbereiten",
"typeHostname": "Hostnamen „{host}“ zur Bestätigung eingeben",
"back": "Zurück",
"handingOff": "Übergabe läuft…",
"yesHandoff": "Ja, jetzt übergeben",
"noteOptional": "Notiz (optional)",
"cancel": "Wiederherstellung abbrechen",
"confirming": "Wird bestätigt…",
"confirm": "Wiederherstellung bestätigen",
"cancelled": "Wiederherstellung abgebrochen.",
"typeHostnameAria": "Hostnamen zur Bestätigung eingeben"
},
"certAction": {
"import": "Importieren (Zertifikat + optional Schlüssel)",
"internal": "Intern erzeugen (selbstsigniert oder CA-signiert)",
"external": "CSR erzeugen (extern signieren lassen)",
"sign_csr": "CSR mit vorhandener interner CA signieren",
"import_csr": "Signiertes Zertifikat importieren",
"reissue": "Neu ausstellen (kein Service-Restart)",
"manual": "Manuell (nur Text einfügen)"
},
"certForm": {
"edit": "Zertifikat bearbeiten",
"new": "Neues Trust-Store-Zertifikat",
"host": "Host",
"action": "Aktion",
"description": "Beschreibung",
"commonName": "Common Name",
"country": "Land (ISO-Code)",
"state": "Bundesland / Provinz",
"city": "Stadt",
"organization": "Organisation",
"email": "E-Mail",
"keyType": "Schlüsseltyp",
"digest": "Digest",
"lifetime": "Gültigkeit (Tage)",
"carefRequired": "CA-Referenz (caref) — Pflicht",
"carefOptional": "CA-Referenz (caref) — leer = selbstsigniert",
"carefPlaceholder": "Refid einer bereits vorhandenen internen CA auf diesem Host",
"carefChoose": "Bitte wählen",
"carefSelfSigned": "Selbstsigniert (keine CA)",
"csr": "CSR (PEM)",
"certificate": "Zertifikat (PEM)",
"privateKeyKeep": "Privater Schlüssel (PEM) — leer lassen = unverändert",
"privateKeyOptional": "Privater Schlüssel (PEM, optional)",
"privateKeyAria": "Privater Schlüssel (PEM)",
"privateKeyNote": "Wird nie in der Datenbank gespeichert, nur als Datei auf dem OPNexus-Server (Zugriff nur für den Serverprozess, Modus 0600)."
},
"acmeRequest": {
"edit": "ACME-Zertifikatsanfrage bearbeiten",
"new": "Neue ACME-Zertifikatsanfrage",
"localNote": "Anlegen und Speichern ist eine rein lokale Konfigurationsänderung. Erst die separate „Jetzt ausstellen“-Aktion kontaktiert die Zertifizierungsstelle.",
"account": "ACME-Account",
"chooseAccount": "Account wählen…",
"noAccount": "Für diesen Host existiert noch kein ACME-Account — zuerst einen anlegen.",
"commonName": "Common Name / FQDN",
"altNames": "Alternative Namen (Komma-getrennt, optional)",
"validation": "Validierungsmethode (UUID — in OPNsense selbst unter ACME Client > Validation konfiguriert)",
"validationPlaceholder": "UUID der Validierungsmethode auf diesem Host",
"keyLength": "Schlüssellänge",
"renewInterval": "Erneuerung nach (Tage seit letzter Ausstellung)",
"renewWarning": "Achtung: Tage SEIT der letzten Ausstellung, nicht Tage VOR Ablauf.",
"ocsp": "OCSP Must-Staple",
"autoRenewal": "Automatische Erneuerung (OPNsense-eigenes Cron)",
"active": "Aktiv"
},
"drift": {
"loadRulesFailed": "Live-Regeln konnten nicht geladen werden",
"noHosts": "Noch keine Hosts angelegt.",
"onlyDiffs": "Nur Abweichungen anzeigen",
"comparingRules": "Regeln werden von {count} Hosts abgeglichen…",
"rulesTotal": "{count} Regeln insgesamt",
"someDiffer": ", {count} weichen ab",
"allIdentical": ", alle auf allen Hosts identisch",
"noDiffs": "Keine Abweichungen gefunden.",
"noRules": "Keine Regeln gefunden.",
"colDescription": "Beschreibung",
"colInterface": "Interface",
"colSourceDest": "Quelle → Ziel",
"colAction": "Aktion",
"automatic": "(automatisch)",
"noCluster": "Ohne Cluster",
"noClusterHint": "Keine Drift-Erkennung ohne Vergleichs-Host — Regeln einzeln einsehen:",
"loadAliasesFailed": "Live-Aliase konnten nicht geladen werden",
"comparingAliases": "Aliase werden von {count} Hosts abgeglichen…",
"aliasesIdentical": "{same} von {total} Aliasen auf allen Hosts identisch",
"noAliases": "Keine Aliase gefunden.",
"colName": "Name",
"colType": "Typ",
"empty": "(leer)",
"noClusterAliasesHint": "Keine Drift-Erkennung ohne Vergleichs-Host — Aliase einzeln einsehen:",
"loadNatFailed": "Live-NAT konnte nicht geladen werden",
"comparing": "wird abgeglichen…",
"natIdentical": "{same} von {total} identisch auf allen Hosts",
"noClusterNatHint": "Keine Drift-Erkennung ohne Vergleichs-Host — NAT-Regeln einzeln einsehen:"
},
"palette": {
"category": {
"navigation": "Seiten",
"hosts": "Hosts",
"rules": "Regeln",
"aliases": "Aliase",
"nat": "NAT",
"vpn": "VPN",
"certificates": "Zertifikate",
"groups": "Gruppen",
"policy-hierarchy": "Policy-Hierarchie"
},
"dialog": "Suche",
"placeholder": "Seiten, Hosts, Regeln, Aliase, NAT, VPN … durchsuchen",
"noResults": "Keine Treffer"
},
"nat": {
"liveTab": "Live auf Firewall",
"externalNet": "Externes Netz (IP/CIDR)",
"reflectionDefault": "Systemstandard",
"reflectionEnabled": "Aktiviert",
"reflectionDisabled": "Deaktiviert",
"invertSource": " Quelle invertieren",
"invertDestination": " Ziel invertieren",
"type": "NAT-Typ",
"binat": "BINAT · bidirektional",
"natOutbound": "NAT · ausgehend",
"hierarchyHint": "Die NAT-Regel gilt zusätzlich für alle aktuellen und zukünftigen Hosts im Teilbaum.",
"protocol": "Protokoll",
"sourcePortOptional": "Source-Port (optional)",
"destinationPortOptional": "Destination-Port (optional)",
"ipVersion": "IP-Version",
"translationTarget": "Übersetzungsziel (IP oder Alias)",
"translationTargetOptional": "Übersetzungsziel (leer = Interface-Adresse)",
"translatedPort": "Übersetzter Port",
"filterRuleNote": "Eine passende Filterregel muss separat vorhanden sein. Port Forward legt sie nicht automatisch an.",
"loading": "NAT wird geladen…",
"liveDrift": "Live-Drift",
"filterRuleShort": "Filterregel separat anlegen"
},
"groups": {
"loading": "Gruppen werden geladen…",
"loadFailed": "Gruppen konnten nicht geladen werden",
"deleteConfirm": "Gerätegruppe „{name}“ löschen? Die Hosts bleiben erhalten.",
"deleted": "Gerätegruppe „{name}“ gelöscht",
"title": "Gerätegruppen",
"titleNamed": "Gerätegruppen · {name}",
"new": "Neue Gruppe",
"subtitle": "Gemeinsame Policies für Standorte, Umgebungen oder Funktionen. Ein Host kann mehreren Gruppen angehören. HA-Cluster bleiben davon unabhängig.",
"statGroups": "Gerätegruppen",
"statHosts": "Zugeordnete Hosts",
"statRules": "Regeln mit Gruppenzielen",
"statAliases": "Aliase mit Gruppenzielen",
"savedNote": "Gruppe „{name}“ gespeichert. ",
"checkRules": "Zugehörige Regeln prüfen oder anlegen →",
"showAll": "Alle Gruppen anzeigen",
"searchLabel": "Gruppen durchsuchen",
"searchPlaceholder": "Gruppen suchen …",
"emptyTitle": "Gemeinsame Regeln beginnen mit einer Gruppe",
"emptyText": "Lege zum Beispiel „Standorte“ oder „Rechenzentrum“ an und wähle die zugehörigen Firewalls.",
"createFirst": "Erste Gruppe anlegen",
"noMatch": "Keine Gruppe passt zu deiner Suche.",
"resetSearch": "Suche zurücksetzen",
"editAria": "{name} bearbeiten",
"deleteAria": "{name} löschen",
"deleteInUse": "Zuerst die Regel-/Alias-Zuweisungen entfernen",
"deleteTitle": "Gruppe löschen",
"assignHosts": "Hosts zuordnen",
"centralRules": "{count} zentrale Regeln →",
"onlyHosts": "Die Gruppe bündelt bisher nur Hosts. Weise ihr jetzt eine zentrale Regel zu.",
"createRule": "Regel für diese Gruppe anlegen",
"centralAliases": "{count} zentrale Aliase →",
"createAlias": "Alias für diese Gruppe anlegen",
"editTitle": "Gerätegruppe bearbeiten",
"newTitle": "Neue Gerätegruppe",
"namePlaceholder": "z. B. Niederlassungen",
"descPlaceholder": "Gemeinsame Basisregeln für alle Standorte",
"members": "Mitglieder",
"disabled": "(deaktiviert)",
"createHostsFirst": "Zuerst Hosts anlegen.",
"membershipNote": "Mitgliedschaften gelten beim nächsten Push. Speichern verändert keine Firewall. Bereits ausgerollte Regeln bleiben auf entfernten Mitgliedern erhalten.",
"impactTitle": "Auswirkungen auf zentrale Regeln",
"added": "Hinzu: {names}",
"removed": "Entfernt: {names}",
"noMembers": "keine Mitglieder",
"impactEmpty": "Der Gruppe sind noch keine Regeln oder Aliase zugewiesen. Die Änderung betrifft nur ihre Mitglieder und Beschreibung.",
"newRuleTargets": "{added} neue Regelziele · {removed} entfernte Regelziele",
"retainedCopies": "{count} bereits ausgerollte Kopien bleiben bestehen. Nach dem Speichern unter „Prüfen & Push“ gezielt bereinigen.",
"aliasPrefix": "Alias: {name}",
"newTargets": "{added} neue Ziele · {removed} entfernte Ziele",
"natPrefix": "NAT: {name}",
"natRetained": "{count} ausgerollte Kopien bleiben bestehen. Unter NAT gezielt bereinigen.",
"otherGroupNote": "Hosts, die über eine andere Gruppe oder direkt Ziel derselben Regel bleiben, werden nicht als entfernte Regelziele gezählt.",
"changeSelection": "Auswahl ändern",
"wait": "Bitte warten…",
"checkImpact": "Auswirkungen prüfen",
"save": "Gruppe speichern"
},
"aliases": {
"loading": "Aliase werden geladen…",
"loadFailed": "Aliase konnten nicht geladen werden",
"createFailed": "Alias konnte nicht angelegt werden",
"deleteConfirm": "Diesen Alias wirklich löschen? Er wird auch von allen Ziel-Hosts entfernt.",
"deletedNamed": "Alias „{name}“ gelöscht",
"deleted": "Alias gelöscht",
"title": "Firewall-Aliase",
"titleNamed": "Aliase · {name}",
"showAll": "Alle Aliase anzeigen",
"new": "Neuer Alias",
"subtitle": "Zentral verwaltete Objekte (Hosts, Netzwerke, Ports) — einmal pflegen, auf mehrere Firewalls ausrollen, statt sie auf jeder einzeln synchron zu halten.",
"searchLabel": "Aliase durchsuchen",
"searchPlaceholder": "Name, Beschreibung, Inhalt …",
"none": "Noch keine zentralen Aliase angelegt.",
"noMatch": "Keine Aliase passen zu dieser Auswahl.",
"createFirst": "Ersten Alias anlegen",
"empty": "(leer)",
"disabledSuffix": " · Alias deaktiviert",
"historyTitle": "Alias-Historie",
"duplicateTitle": "Alias duplizieren",
"editDraft": "Alias-Entwurf bearbeiten",
"nameHint": "Nur Buchstaben, Ziffern und Unterstriche",
"typeLabel": "Typ",
"content": "Inhalt",
"active": "Alias aktiv",
"hierarchyHint": "Der Alias wird zusätzlich auf alle aktuellen und zukünftigen Hosts im Teilbaum ausgerollt.",
"coveredBy": "(bereits über {groups} abgedeckt)",
"type": {
"host": "Host(s)",
"network": "Netzwerk(e)",
"port": "Port(s)",
"networkgroup": "Netzwerkgruppe",
"mac": "MAC-Adresse(n)",
"asn": "BGP-ASN(s)"
},
"hint": {
"host": "Eine IP oder ein Hostname pro Zeile",
"network": "Eine CIDR pro Zeile, z. B. 10.10.120.0/24",
"port": "Eine Portnummer oder ein Bereich pro Zeile, z. B. 8080 oder 8000:8100",
"networkgroup": "Ein Alias-Name pro Zeile (fasst andere Aliase zusammen)",
"mac": "Eine MAC-Adresse pro Zeile, z. B. 00:11:22:33:44:55",
"asn": "Eine AS-Nummer pro Zeile, z. B. 64512"
}
},
"ph": {
"loading": "Wird geladen…",
"loadFailed": "Daten konnten nicht geladen werden",
"groupSaveFailed": "Gruppe konnte nicht gespeichert werden",
"deleteGroupConfirm": "Gruppe „{name}“ löschen?",
"ruleSaveFailed": "Regel konnte nicht gespeichert werden",
"deleteRuleConfirm": "Regel „{name}“ wirklich löschen? Sie wird auch von allen Ziel-Hosts entfernt.",
"moveFailed": "Verschieben fehlgeschlagen",
"orderSaved": "Reihenfolge gespeichert. Bereits ausgerollte Regeln mit „Reihenfolge neu herstellen“ anwenden.",
"orderSaveFailed": "Reihenfolge konnte nicht gespeichert werden",
"reassertFailed": "Reassert fehlgeschlagen",
"reassertDone": "Reihenfolge für „{name}“ und alle Untergruppen wurde neu hergestellt.",
"title": "Hierarchische Policies",
"subtitle": "Pre-/Post-Regeln auf übergeordneten Gruppen definieren — sie werden automatisch, in korrekter Reihenfolge, auf alle Hosts der Gruppe und ihrer Untergruppen ausgerollt.",
"groupTree": "Gruppenbaum",
"noGroups": "Noch keine Gruppen angelegt.",
"selectGroup": "Eine Gruppe auswählen oder anlegen",
"selectGroupHint": "Regeln werden auf einer Gruppe definiert und erreichen automatisch alle Hosts dieser Gruppe und ihrer Untergruppen.",
"directHosts": "{count} direkt zugeordnete Host(s) · ",
"assignHosts": "Hosts zuweisen",
"reassertTitle": "Wendet die gespeicherte Reihenfolge auf allen Hosts dieser Gruppe und ihrer Untergruppen an. Nach anderen OPNexus-Deployments wird sie zusätzlich automatisch geprüft.",
"reasserting": "Reassert läuft…",
"reassert": "Reihenfolge neu herstellen",
"preRules": "Pre-Regeln",
"preHint": "Ausgewertet, bevor die Post-Regeln greifen. Über mehrere Ebenen: root-most Gruppe zuerst.",
"postRules": "Post-Regeln",
"postHint": "Ausgewertet nach den Pre-Regeln. Über mehrere Ebenen: leaf-most (spezifischste) Gruppe zuerst.",
"editGroup": "Gruppe bearbeiten",
"parentGroup": "Übergeordnete Gruppe (optional)",
"rootGroup": "(keine — Wurzelgruppe)",
"editRule": "Regel bearbeiten",
"newPreRule": "Neue Pre-Regel",
"newPostRule": "Neue Post-Regel",
"addRule": "Regel hinzufügen",
"noRulesInCategory": "Noch keine Regeln in dieser Kategorie.",
"targetHosts": "{count} Ziel-Host(s) · {names}",
"none": "keine",
"dragTitle": "Ziehen, um die Reihenfolge zu ändern",
"moveUp": "Nach oben",
"moveDown": "Nach unten"
},
"certs": {
"deploy": {
"draft": "Entwurf (noch nicht gepusht)",
"success": "Erfolgreich gepusht",
"error": "Fehler"
},
"loading": "Zertifikate werden geladen…",
"hostFailed": "Fehler",
"hostsLoadFailed": "Hosts konnten nicht geladen werden",
"loadFailed": "Zertifikate konnten nicht geladen werden",
"acmeLoadFailed": "ACME-Daten konnten nicht geladen werden",
"pushFailed": "Push fehlgeschlagen",
"certPushed": "Zertifikat „{name}“ gepusht",
"certDeleteConfirm": "Zertifikat „{name}“ wirklich löschen? Falls es bereits auf die Firewall gepusht wurde, wird es dort ebenfalls entfernt (sofern nicht in Verwendung).",
"certDeleted": "Zertifikat „{name}“ gelöscht",
"accountPushed": "Account „{name}“ gepusht",
"accountDeleteConfirm": "ACME-Account „{name}“ wirklich löschen?",
"accountDeleted": "Account „{name}“ gelöscht",
"requestPushed": "Anfrage „{name}“ gepusht",
"pollFailed": "Status konnte nicht aktualisiert werden",
"requestDeleteConfirm": "Zertifikatsanfrage „{name}“ wirklich löschen?",
"requestDeleted": "Anfrage „{name}“ gelöscht",
"title": "Zertifikate",
"subtitle": "Live-Fleet-Überblick sowie zentrale Verwaltung von Trust-Store-Zertifikaten und ACME/Let's-Encrypt-Ausstellung.",
"tabLive": "Live-Übersicht",
"tabTrust": "Trust-Store verwalten",
"tabAcme": "ACME / Let's Encrypt",
"hostsPending": "{pending} von {total} Hosts noch offen…",
"attentionOne": "{count} Zertifikat läuft in den nächsten 30 Tagen ab oder ist bereits abgelaufen.",
"attentionMany": "{count} Zertifikate laufen in den nächsten 30 Tagen ab oder sind bereits abgelaufen.",
"colHost": "Host",
"colName": "Name / CN",
"colIssuer": "Aussteller",
"colValidTo": "Gültig bis",
"colStatus": "Status",
"noneFound": "Keine Zertifikate gefunden.",
"hostUnavailable": "{host}: Zertifikate nicht abrufbar",
"trustIntro": "OPNsense-Core-Trust-Store (import/intern erzeugen/CSR/CA-signieren/manuell) — pro Host verwaltet, da interne-CA-Referenzen und Zertifikat-UUIDs hostlokal sind. Ein Push ist ein einzelner, sofort wirksamer API-Call ohne Dienst-Neustart — kein Warn-Hinweis nötig, da kein Lockout-Risiko besteht.",
"newCert": "Neues Zertifikat",
"createHostFirst": "Zuerst mindestens einen Host anlegen.",
"showAll": "Alle Zertifikate anzeigen",
"noManaged": "Noch keine verwalteten Zertifikate.",
"actionAndCn": "{host} · Aktion: {action}",
"edit": "Bearbeiten",
"push": "Push",
"delete": "Löschen",
"certSaved": "Zertifikat gespeichert",
"certCreated": "Zertifikat angelegt",
"acmeIntro": "ACME-Plugin (os-acme-client) — Accounts und Zertifikatsanfragen pro Host verwaltet (hostlokale UUIDs). Anlegen/Ändern ist eine rein lokale Konfigurationsänderung; „Registrieren“ und „Jetzt ausstellen“ kontaktieren die echte Zertifizierungsstelle und sind deshalb hinter einer expliziten Warnung versteckt.",
"accounts": "ACME-Accounts",
"newAccount": "Neuer Account",
"noAccounts": "Noch keine ACME-Accounts.",
"registration": "Registrierung: {state}",
"registrationOk": "erfolgreich",
"registrationFailed": "fehlgeschlagen",
"pushFirst": "Zuerst pushen",
"register": "Registrieren",
"requests": "ACME-Zertifikatsanfragen",
"newRequest": "Neue Anfrage",
"createAccountFirst": "Zuerst mindestens einen ACME-Account anlegen.",
"noRequests": "Noch keine Zertifikatsanfragen.",
"issuance": "Ausstellung: {state}",
"issuanceTriggered": "angestoßen (Ergebnis per „Status“ prüfen)",
"issuanceError": "Fehler beim Auslösen",
"requestMeta": "{host} · Account: {account} · Erneuerung alle {days} Tage (seit letzter Ausstellung)",
"firewallStatusCode": "Firewall-Status-Code: {code}",
"lastIssuance": " · letzte Ausstellung: {time}",
"issueNow": "Jetzt ausstellen",
"status": "Status",
"accountSaved": "Account gespeichert",
"accountCreated": "Account angelegt",
"requestSaved": "Anfrage gespeichert",
"requestCreated": "Anfrage angelegt",
"registerTitle": "ACME-Account „{name}“ registrieren",
"registering": "Registrierung läuft…",
"accountRegistered": "Account „{name}“ registriert",
"issueTitle": "Zertifikat „{name}“ jetzt ausstellen",
"triggering": "Wird angestoßen…",
"issuanceTriggeredToast": "Ausstellung für „{name}“ angestoßen"
},
"ipsec": {
"loading": "Tunnel werden geladen…",
"loadFailed": "Tunnel konnten nicht geladen werden",
"saved": "Tunnel „{name}“ gespeichert",
"created": "Tunnel „{name}“ angelegt",
"pskRequired": "Pre-Shared-Key ist beim Anlegen erforderlich",
"saveFailed": "Tunnel konnte nicht gespeichert werden",
"deleteConfirm": "Diesen Tunnel wirklich löschen? Er wird auch von allen Ziel-Hosts entfernt (Connection, Identitäten, Phase 2, Pre-Shared-Key) und der IPsec-Dienst neu geladen.",
"tunnelFallback": "Tunnel",
"deleted": "Tunnel „{name}“ gelöscht",
"title": "IPsec-VPN (Site-to-Site)",
"new": "Neuer Tunnel",
"intro": "Site-to-Site-Tunnel mit Pre-Shared-Key-Authentifizierung, zentral gepflegt und auf Ziel-Hosts oder Gerätegruppen ausgerollt — analog zu den Firewall-Regeln, aber ohne deren automatisches Rollback-Sicherheitsnetz: ein fehlgeschlagener Dienst-Reload kann genau die Verbindung kappen, über die OPNexus den Host erreicht. v1 unterstützt nur PSK-Auth, ein Phase-2 (Child) pro Tunnel und einfache 1:1-Netz-zu-Netz-Tunnel — kein OpenVPN/WireGuard, keine Zertifikate/EAP, keine Pools.",
"showAll": "Alle Tunnel anzeigen",
"none": "Noch keine IPsec-Tunnel angelegt.",
"createFirst": "Ersten Tunnel anlegen",
"noPsk": "Kein PSK hinterlegt",
"disabledSuffix": " · Tunnel deaktiviert",
"historyTitle": "Tunnel-Historie",
"editTitle": "Tunnel bearbeiten",
"newTitle": "Neuer IPsec-Tunnel",
"descPlaceholder": "S2S nach Zweigstelle Nord",
"localAddress": "Lokale Adresse",
"localAddressPlaceholder": "203.0.113.1 oder %any",
"remoteAddress": "Remote-Adresse",
"ikeVersion": "IKE-Version",
"proposal": "Proposal (Phase 1)",
"espProposal": "ESP-Proposal (Phase 2)",
"localIdentity": "Lokale Identität",
"localIdentityPlaceholder": "z. B. lokale IP",
"remoteIdentity": "Remote-Identität (optional)",
"remoteIdentityPlaceholder": "z. B. Remote-IP",
"localNetwork": "Lokales Netz (CIDR)",
"remoteNetwork": "Remotes Netz (CIDR)",
"pskEditing": "Pre-Shared-Key ({state})",
"pskSet": "gesetzt — leer lassen, um ihn zu behalten",
"pskNotSet": "noch nicht gesetzt",
"psk": "Pre-Shared-Key",
"pskKeep": "Leer lassen = unverändert",
"pskPlaceholder": "Gemeinsames Geheimnis",
"active": "Tunnel aktiv"
},
"ovpn": {
"loading": "Instanzen werden geladen…",
"trustLoadFailed": "Trust-Store konnte nicht geladen werden",
"loadFailed": "Instanzen konnten nicht geladen werden",
"saved": "Instanz „{name}“ gespeichert",
"created": "Instanz „{name}“ angelegt",
"saveFailed": "Instanz konnte nicht gespeichert werden",
"deleteConfirm": "Diese OpenVPN-Instanz wirklich löschen? Sie wird auch von allen Ziel-Hosts entfernt (Instance, ggf. Static-Key) und der OpenVPN-Dienst neu geladen.",
"instanceFallback": "Instanz",
"deleted": "Instanz „{name}“ gelöscht",
"title": "OpenVPN-Instanzen",
"new": "Neue Instanz",
"intro": "OpenVPN-Instanzen (Server- oder Client-Rolle), zentral gepflegt und auf Ziel-Hosts oder Gerätegruppen ausgerollt — analog zum IPsec-Feature, aber ohne dessen automatisches Rollback-Sicherheitsnetz: ein fehlgeschlagener Dienst-Reload kann genau die Verbindung kappen, über die OPNexus den Host erreicht. v1 benötigt ein bereits auf jedem Ziel-Host vorhandenes Zertifikat/CA — auswählbar per Picker aus dem jeweiligen Host-Trust-Store, da eine Zertifikat-UUID host-lokal ist —, unterstützt optionales TLS-Hardening (tls-auth/tls-crypt) über ein Static-Key, aber keine zertifikatsfreie „Shared-Key“-Instanz (im modernen OPNsense-Modell nicht vorgesehen).",
"showAll": "Alle Instanzen anzeigen",
"none": "Noch keine OpenVPN-Instanzen angelegt.",
"createFirst": "Erste Instanz anlegen",
"tlsKeyMissing": "TLS-Key aktiviert, aber nicht hinterlegt",
"roleServer": "Server",
"roleClient": "Client",
"tlsHardening": " · TLS-Hardening ({mode})",
"disabledSuffix": " · Instanz deaktiviert",
"historyTitle": "Instanz-Historie",
"editTitle": "Instanz bearbeiten",
"newTitle": "Neue OpenVPN-Instanz",
"descPlaceholder": "Road-Warrior-Server",
"role": "Rolle",
"bindAddress": "Bind-Adresse (optional)",
"bindPlaceholder": "leer = alle Interfaces",
"tunnelNetwork": "Tunnelnetz (CIDR)",
"remoteTarget": "Remote-Ziel (Host oder Host:Port)",
"tlsHardeningLabel": "TLS-Hardening (tls-auth/tls-crypt) über zusätzlichen Static-Key",
"staticKeyMode": "Static-Key-Modus",
"modeCrypt": "crypt (verschlüsselt + authentifiziert)",
"modeAuth": "auth (nur authentifiziert)",
"staticKeyEditing": "Static-Key ({state})",
"staticKey": "Static-Key",
"keyPlaceholder": "Schlüsselmaterial einfügen",
"active": "Instanz aktiv",
"certCaPerHost": "Zertifikat / CA je Ziel-Host",
"noTargets": "Keine Ziel-Hosts gewählt — oben Hosts oder eine Gerätegruppe auswählen, die Auswahl erscheint dann hier, pro Host aus dessen eigenem Trust-Store.",
"trustLoading": "Trust-Store wird geladen…",
"certificate": "Zertifikat",
"noCerts": "Keine Zertifikate auf diesem Host gefunden.",
"pleaseChoose": "Bitte wählen…",
"ca": "CA",
"noCas": "Keine CAs auf diesem Host gefunden."
},
"wg": {
"saved": "Tunnel „{name}“ gespeichert",
"created": "Tunnel „{name}“ angelegt",
"deleteConfirm": "Diesen WireGuard-Tunnel wirklich löschen? Er wird auch von allen Ziel-Hosts entfernt (Peer, dann Server) und der WireGuard-Dienst neu geladen.",
"title": "WireGuard-Tunnel",
"intro": "WireGuard-Interconnects (ein Server-Interface + genau ein Peer pro Tunnel), zentral gepflegt und auf Ziel-Hosts oder Gerätegruppen ausgerollt — analog zu IPsec/OpenVPN, ohne deren automatisches Rollback-Sicherheitsnetz: ein fehlgeschlagener Dienst-Reload kann genau die Verbindung kappen, über die OPNexus den Host erreicht. v1 verlangt Server-Privatschlüssel UND -Public-Key sowie den Peer-Public-Key manuell vom Betreiber (kein Schlüsselpaar-Generator), unterstützt optional WireGuards eigenen Pre-Shared-Key pro Peer, und bildet genau eine Server↔Peer-Verbindung ab (kein Multi-Peer-Hub).",
"none": "Noch keine WireGuard-Tunnel angelegt.",
"noPrivateKey": "Kein Privatschlüssel hinterlegt",
"pskMissing": "PSK aktiviert, aber nicht hinterlegt",
"summary": "{address} · Port {port} · Peer-Allowed-IPs {ips}",
"peerPskActive": " · Peer-PSK aktiv",
"newTitle": "Neuer WireGuard-Tunnel",
"serverSection": "Server (lokales Interface)",
"interfaceName": "Interface-Name",
"listenPort": "Listen-Port",
"dns": "DNS (optional)",
"dnsPlaceholder": "leer = keine",
"mtu": "MTU (optional)",
"mtuPlaceholder": "leer = OPNsense-Default",
"serverPublicKey": "Server-Public-Key",
"serverPublicKeyPlaceholder": "Public Key des Servers",
"serverPrivateKeyEditing": "Server-Privatschlüssel ({state})",
"serverPrivateKey": "Server-Privatschlüssel",
"privateKeyPlaceholder": "Privatschlüssel einfügen",
"keyNote": "OPNexus generiert keine Schlüsselpaare (kein automatischer Aufruf von OPNsenses eigenem „gen_keypair“). Beide Schlüssel selbst erzeugen (z. B. via {cmd}) und hier eintragen.",
"peerSection": "Peer",
"peerName": "Peer-Name",
"allowedIps": "Allowed-IPs (CIDR)",
"peerPublicKey": "Peer-Public-Key",
"peerPublicKeyPlaceholder": "Public Key des Peers",
"endpointAddress": "Endpoint-Adresse (optional)",
"endpointAddressPlaceholder": "leer = Peer verbindet sich nur eingehend",
"endpointPort": "Endpoint-Port (nötig, falls Adresse gesetzt)",
"keepalive": "Keepalive in Sekunden (optional)",
"keepalivePlaceholder": "leer = kein Keepalive",
"pskLabel": "Zusätzlicher Pre-Shared-Key für diesen Peer (WireGuards eigener PSK, nicht IPsecs PSK)",
"peerPskEditing": "Peer-PSK ({state})",
"peerPsk": "Peer-PSK",
"pskPlaceholder": "PSK einfügen"
},
"auditExport": {
"title": "Audit-Export",
"intro": "Leitet das Audit (wer hat was mit welchem Ergebnis geändert) an einen Syslog-Server und/oder einen Webhook weiter, damit es auch außerhalb von OPNexus vorliegt. Gesendet werden nur neue Ereignisse ab dem Einschalten; Inhalte von Firewall-Objekten sind nie dabei. Die Zustellung ist mindestens einmal: jedes Ereignis trägt seine ID.",
"saved": "Audit-Export gespeichert",
"testSent": "Testnachricht gesendet",
"testFailed": "Die Testnachricht konnte nicht zugestellt werden",
"syslog": "Syslog (RFC 5424)",
"host": "Host",
"port": "Port",
"protocol": "Protokoll",
"webhook": "Webhook",
"webhookUrl": "Webhook-URL",
"secret": "Signaturschlüssel ({state})",
"isSet": "gesetzt",
"notSet": "nicht gesetzt",
"keep": "leer lassen zum Behalten",
"optional": "optional",
"removeSecret": "Signaturschlüssel entfernen",
"test": "Testnachricht senden",
"lastError": "Letzte Zustellung fehlgeschlagen {when}: {message}",
"lastSuccess": "Letzte Zustellung {when}"
},
"backupSettings": {
"title": "Backups",
"intro": "Sichert die Konfiguration jeder Firewall nach Zeitplan und behält die neuesten. Optional wird eine Kopie hier mit deiner Passphrase verschlüsselt und auf S3-kompatiblen Speicher hochgeladen (AWS S3, MinIO, Backblaze B2, Wasabi, Cloudflare R2, Hetzner …), damit ein verlorener OPNexus-Server oder eine verlorene Firewall nicht das Ende deiner Konfiguration ist. Alte Offsite-Kopien löschst du über die Lifecycle-Regeln des Buckets.",
"saved": "Backup-Einstellungen gespeichert",
"scheduled": "Alle Firewalls nach Zeitplan sichern",
"interval": "Wie oft",
"everyHours": "alle {n} Stunden",
"keep": "Die neuesten behalten (je Firewall)",
"offsite": "Backups auf S3-kompatiblen Speicher kopieren (verschlüsselt)",
"endpoint": "Endpunkt",
"region": "Region",
"bucket": "Bucket",
"prefix": "Ordner im Bucket",
"accessKey": "Zugriffsschlüssel",
"secretKey": "Geheimer Schlüssel ({state})",
"pathStyle": "Path-Style-Adressierung (funktioniert überall; nur abschalten, wenn der Anbieter bucket.host verlangt)",
"passphrase": "Passphrase zur Verschlüsselung ({state})",
"passphraseNew": "mindestens 12 Zeichen",
"passphraseHint": "Backups werden verschlüsselt, bevor sie diesen Server verlassen. Ohne die Passphrase ist eine Offsite-Kopie nicht lesbar — bewahre sie außer in OPNexus noch an einem sicheren Ort auf. Eine Änderung gilt nur für neue Uploads.",
"offsiteError": "Offsite-Kopie fehlgeschlagen: {message}",
"offsiteOk": "Letzte Offsite-Kopie {when}",
"lastRun": "Letzter geplanter Lauf {when}",
"test": "Ziel testen",
"testOk": "Das Ziel funktioniert (geschrieben, zurückgelesen, gelöscht)",
"testFailed": "Der Test des Ziels ist fehlgeschlagen",
"runNow": "Jetzt sichern",
"ran": "{taken} gesichert, {failed} fehlgeschlagen, {uploaded} hochgeladen"
},
"backupDiff": {
"title": "Änderungen seit dem vorherigen Backup",
"hint": "Geheimnisse (Passwörter, Schlüssel, Tokens, Zertifikate) erscheinen nur als Hash: ein geändertes Geheimnis zeigt sich als geänderter Hash.",
"identical": "Keine Unterschiede.",
"summary": "{added} Zeilen hinzugefügt, {removed} entfernt",
"truncated": "Die Liste ist abgeschnitten; den Rest in OPNsense vergleichen.",
"failed": "Der Vergleich ist fehlgeschlagen"
},
"overlay": {
"title": "Management-Tunnel",
"intro": "Lässt OPNexus Firewalls verwalten, die keine öffentliche Adresse haben (hinter NAT, CGNAT, Mobilfunk). Jede Firewall wählt sich per WireGuard NACH AUSSEN bei einem Hub auf diesem Server ein; OPNexus erreicht ihre API dann durch den Tunnel. An der Firewall muss nichts aus dem Internet erreichbar sein. Braucht den Hub-Container (COMPOSE_PROFILES=overlay) und einen aus dem Internet erreichbaren UDP-Port.",
"loadFailed": "Der Management-Tunnel konnte nicht geladen werden",
"saved": "Gespeichert",
"enable": "Management-Tunnel einschalten",
"hub": {
"running": "Hub läuft",
"stale": "Hub meldet sich nicht",
"absent": "Hub läuft nicht"
},
"hubAbsent": "Der Hub-Container läuft nicht. Trage COMPOSE_PROFILES=overlay in .env ein und starte mit docker compose up -d.",
"endpoint": "Adresse dieses Servers (wie die Firewalls sie sehen)",
"endpointHint": "Öffentlicher DNS-Name oder öffentliche IP dieses Servers. Mit :Port, wenn der veröffentlichte UDP-Port abweicht.",
"port": "UDP-Port",
"subnet": "Tunnel-Netz",
"subnetHint": "Ein privates Netz nur für diese Tunnel. Lässt sich nicht ändern, solange Firewalls eingetragen sind.",
"hubKey": "Öffentlicher Schlüssel des Hubs",
"hubAddress": "Hub-Adresse",
"addPeer": "Firewall hinzufügen",
"nameHint": "Ein Name für diese Firewall oder den Standort.",
"create": "Anlegen",
"colName": "Firewall",
"colAddress": "Tunnel-Adresse",
"colStatus": "Status",
"colHost": "Verwalteter Host",
"needsKey": "wartet auf den Schlüssel der Firewall",
"connected": "verbunden",
"waiting": "noch nicht verbunden",
"empty": "Noch keine Firewalls.",
"instructions": "Anleitung",
"link": "Schlüssel / Host",
"delete": "Löschen",
"deleteConfirm": "„{name}“ aus dem Management-Tunnel entfernen? Die Firewall ist dann nicht mehr darüber erreichbar.",
"deleted": "„{name}“ entfernt",
"howTitle": "„{name}“ verbinden",
"howIntro": "Einmalig in der Weboberfläche der Firewall (OPNsense: VPN › WireGuard) einrichten. Die Werte lassen sich mit den Knöpfen kopieren.",
"step1": "1. Lokale Instanz",
"step1Hint": "Neue Instanz anlegen: OPNsense erzeugt das Schlüsselpaar selbst, ein Listen-Port ist nicht nötig; diese Tunnel-Adresse eintragen:",
"fieldAddress": "Tunnel-Adresse",
"step2": "2. Gegenstelle (der Hub)",
"fieldPublicKey": "Öffentlicher Schlüssel",
"fieldPsk": "Pre-Shared Key",
"fieldEndpoint": "Endpunkt-Adresse und Port",
"fieldAllowed": "Erlaubte IPs",
"fieldKeepalive": "Keepalive (Sekunden)",
"step3": "3. Den Hub hereinlassen",
"step3Text": "Eine Firewall-Regel auf der WireGuard-Schnittstellengruppe anlegen: TCP von {hub} zu „Diese Firewall“, Port 443 (oder der Port der Weboberfläche).",
"step4": "4. OPNexus den Schlüssel der Firewall geben",
"step4Text": "Den öffentlichen Schlüssel der neuen lokalen Instanz aus OPNsense kopieren, dieses Fenster schließen und bei dieser Firewall „Schlüssel / Host“ wählen.",
"step5": "5. Die Firewall als Host eintragen",
"step5Text": "Den Host mit dieser Adresse und dem üblichen API-Schlüssel anlegen oder ändern. Danach erscheint er hier als verbunden.",
"fieldUrl": "Host-Adresse",
"linkTitle": "Schlüssel und Host von „{name}“",
"firewallKey": "Öffentlicher Schlüssel der WireGuard-Instanz der Firewall",
"firewallKeyHint": "Aus OPNsense: VPN › WireGuard › Instanzen. Leer lassen, um ihn zu entfernen.",
"hostHint": "Optional: welcher verwaltete Host über diesen Tunnel erreicht wird."
},
"variables": {
"title": "Standort-Variablen",
"intro": "Regeln, Aliase und NAT-Einträge können Platzhalter wie {{LAN_NET}} enthalten. Jede Firewall setzt dafür ihren eigenen Wert ein, ein Objekt bedient so viele Standorte mit unterschiedlichen Netzen. Eine Firewall ohne Wert für einen Platzhalter wird nie beschickt: die Vorschau zeigt es und das Ausrollen wird abgelehnt. Werte dürfen Buchstaben, Ziffern und . : / , @ + - _ sowie Leerzeichen enthalten.",
"loadFailed": "Die Variablen konnten nicht geladen werden",
"saved": "Variablen gespeichert",
"saveFailed": "Die Variablen konnten nicht gespeichert werden",
"empty": "Keine Platzhalter in Benutzung. Schreibe {{NAME}} (Großbuchstaben, Ziffern, _) in eine Regel, einen Alias oder NAT-Eintrag und lege den Wert hier fest.",
"missing": "{n} Wert(e) fehlen",
"required": "erforderlich",
"usedBy": "Verwendet von: {list}",
"newName": "Name der neuen Variable",
"add": "Hinzufügen"
},
"sso": {
"title": "Single Sign-on (OIDC)",
"intro": "Lässt Personen sich mit deinem Identitätsanbieter anmelden (Authentik, Keycloak, Entra ID, Google, …), statt mit einem hier gespeicherten Passwort. Die Rolle kommt bei jeder Anmeldung aus den Gruppen des Anbieters; ohne zugeordnete Gruppe kommt niemand hinein. Lokale Konten funktionieren weiter, du kommst also bei einem Ausfall des Anbieters immer mit dem Admin-Passwort hinein.",
"saved": "SSO-Einstellungen gespeichert",
"testOk": "Der Anbieter antwortet (Discovery und Signaturschlüssel sind in Ordnung)",
"testFailed": "Der Test des Anbieters ist fehlgeschlagen",
"enable": "Single Sign-on auf der Anmeldeseite anbieten",
"redirectHint": "Diese Weiterleitungs-URI beim Anbieter eintragen:",
"name": "Text des Knopfes",
"issuer": "Aussteller-URL",
"clientId": "Client-ID",
"clientSecret": "Client-Geheimnis ({state})",
"scopes": "Scopes",
"claim": "Gruppen-Claim",
"mapping": "Welche Gruppe welche Rolle bekommt",
"mappingHint": "Gruppennamen so eintragen, wie der Anbieter sie sendet. Die höchste passende Rolle gilt; wer in keiner Gruppe ist, kann sich nicht anmelden. Die Rolle von SSO-Konten wird beim Anbieter gepflegt und bei jeder Anmeldung aktualisiert. Anbieter, die Gruppen nur auf Anfrage senden (z. B. Okta), brauchen zusätzlich den Scope „groups“ in den Scopes.",
"test": "Anbieter testen",
"dutiesTitle": "Aufgabentrennung",
"dutiesIntro": "Ist es ausgeschaltet, können Operatoren Änderungen vorbereiten (bearbeiten, Vorschau), aber nur ein Administrator rollt sie aus: ausrollen, ein Deployment entfernen oder zurückrollen, Wartung ausführen oder planen und Netzwerkänderungen anwenden. Die Ablehnung steht im Audit.",
"operatorsDeploy": "Operatoren dürfen Änderungen selbst ausrollen",
"dutiesSaved": "Gespeichert"
},
"report": {
"title": "Sicherheitsbericht",
"generated": "Erstellt {when} · OPNexus {version}",
"back": "Zurück",
"print": "Drucken / als PDF speichern",
"score": "Wert",
"open": "Offene Befunde",
"checked": "Geprüft",
"open_report": "Bericht"
},
"security": {
"title": "Sicherheitslage",
"intro": "Prüft die Konfiguration jeder Firewall auf typische Schwachstellen (offene Regeln, schwaches SSH/SNMP, fehlende Backups …) und vergibt einen Wert von 0 bis 100. Nur lesend: an den Firewalls wird nichts geändert. Automatisch alle 6 Stunden geprüft.",
"loadFailed": "Sicherheitslage konnte nicht geladen werden",
"checkFailed": "Die Prüfung ist fehlgeschlagen",
"checked": "Prüfung abgeschlossen",
"checkAll": "Alle prüfen",
"checkHost": "Erneut prüfen",
"noHosts": "Noch keine Firewalls",
"noHostsHint": "Verbinde eine Firewall, um ihre Sicherheitslage zu sehen.",
"notChecked": "Nicht geprüft",
"neverChecked": "Noch nicht geprüft",
"checkedAt": "Geprüft {when}",
"allGood": "Keine offenen Befunde",
"andMore": "… und {n} weitere",
"unknown": "unbekannt",
"failed": "nicht bestanden",
"passed": "bestanden",
"severity": {
"critical": "kritisch",
"high": "hoch",
"medium": "mittel",
"low": "niedrig",
"info": "Hinweis"
},
"error": {
"unreachable": "nicht erreichbar",
"invalid_config": "nicht lesbar"
},
"errorHint": {
"unreachable": "Die Firewall war nicht erreichbar und konnte deshalb nicht geprüft werden.",
"invalid_config": "Die Konfiguration konnte nicht gelesen werden."
},
"reason": {
"root_password": "root darf sich per Passwort über SSH anmelden",
"password": "SSH erlaubt die Anmeldung per Passwort"
},
"checks": {
"webgui_https": {
"title": "Web-Oberfläche nur über HTTPS",
"ok": "Die Verwaltungsoberfläche läuft über HTTPS.",
"fail": "Die Verwaltungsoberfläche läuft über unverschlüsseltes HTTP. Zugangsdaten sind im Netz mitlesbar.",
"fix": "System › Einstellungen › Administration: Protokoll auf HTTPS stellen."
},
"ssh_hardened": {
"title": "SSH abgesichert",
"ok": "SSH ist aus oder erlaubt nur Schlüssel.",
"fail": "{reason}.",
"fix": "SSH ausschalten, oder unter System › Einstellungen › Administration Root-Login und Passwort-Anmeldung abschalten und Schlüssel nutzen."
},
"snmp_community": {
"title": "SNMP-Community ist nicht „public“",
"ok": "SNMP nutzt eine eigene Community.",
"fail": "SNMP nutzt die voreingestellte Community „public“. Jeder im Netz kann Systemdaten lesen.",
"fix": "Eine eigene, lange Community setzen oder SNMP ausschalten."
},
"wan_any_any": {
"title": "Keine Allow-all-Regel am WAN",
"ok": "Am WAN erlaubt keine Regel allen Verkehr überallhin.",
"fail": "{count} Regel(n) am WAN erlauben jeden Verkehr zu jedem Ziel — die Firewall schützt dort nichts.",
"fix": "Regel auf die nötigen Quellen, Ziele und Ports beschränken oder löschen."
},
"internal_any_any": {
"title": "Keine Allow-all-Regel mit beliebiger Quelle (intern)",
"ok": "Keine interne Regel erlaubt beliebige Quellen zu beliebigen Zielen.",
"fail": "{count} Regel(n) erlauben beliebige Quellen zu beliebigen Zielen.",
"fix": "Die Quelle auf das jeweilige Netz beschränken."
},
"rules_shadowed": {
"title": "Keine verdeckten Regeln",
"ok": "Jede Regel wird erreicht.",
"fail": "{count} Regel(n) werden nie erreicht, weil eine frühere Regel sie schon abdeckt.",
"fix": "Reihenfolge prüfen; die überflüssige Regel entfernen oder davor einsortieren."
},
"rules_duplicate": {
"title": "Keine doppelten Regeln",
"ok": "Keine Regel kommt doppelt vor.",
"fail": "{count} Regel(n) sind identisch zu einer früheren.",
"fix": "Die doppelte Regel löschen."
},
"rules_documented": {
"title": "Regeln sind beschriftet",
"ok": "Alle aktiven Regeln haben eine Beschreibung.",
"fail": "{count} aktive Regel(n) haben keine Beschreibung.",
"fix": "Beschreibung ergänzen, damit später klar bleibt, wofür die Regel da ist."
},
"ntp_configured": {
"title": "Zeitserver gesetzt",
"ok": "Zeitserver sind eingetragen.",
"fail": "Kein Zeitserver konfiguriert. Logs und Zertifikate brauchen die richtige Uhrzeit.",
"fix": "Zeitserver in den Zeiteinstellungen eintragen."
},
"remote_logging": {
"title": "Logs liegen auch woanders",
"ok": "Ein externes Syslog-Ziel ist eingetragen.",
"fail": "Logs liegen nur auf der Firewall. Nach einem Einbruch oder Ausfall fehlen sie.",
"fix": "Unter System › Einstellungen › Logging einen Syslog-Server eintragen."
},
"ids_enabled": {
"title": "Einbruchserkennung aktiv",
"ok": "Die Einbruchserkennung ist an.",
"fail": "Die Einbruchserkennung (IDS/IPS) ist nicht eingeschaltet.",
"fix": "Optional: Dienste › Intrusion Detection aktivieren."
},
"firmware_current": {
"title": "Firmware aktuell",
"ok": "Keine Updates offen.",
"fail": "Es stehen Updates bereit.",
"fix": "Im Update Center einspielen.",
"unknown": "Der Updatestatus konnte nicht geprüft werden."
},
"backup_recent": {
"title": "Aktuelles Backup",
"ok": "Das neueste Backup ist {days} Tag(e) alt.",
"fail": "Es gibt kein Backup aus den letzten 7 Tagen.",
"fix": "Auf der Host-Seite „Jetzt sichern“ ausführen oder eine Wartung planen."
},
"rules_unused": {
"title": "Regeln in Benutzung",
"ok": "Jede Regel hat in den letzten 30 Tagen Verkehr getroffen.",
"fail": "{count} Regel(n) haben seit mindestens 30 Tagen nichts getroffen.",
"unknown": "Noch in der Datensammlung: eine Regel gilt erst nach 30 Tagen ohne Treffer als ungenutzt.",
"fix": "Prüfen, ob die Regel noch gebraucht wird, und sie deaktivieren oder löschen."
}
},
"hits": {
"title": "Regelnutzung",
"intro": "Wann jede Regel zuletzt Verkehr getroffen hat, wie OPNexus es beobachtet. Die Zähler der Firewall beginnen bei jeder Änderung und jedem Neustart von vorn, deshalb merkt sich OPNexus, wann ein Zähler zuletzt gewachsen ist. Nach 30 Tagen ohne Treffer gilt eine Regel als ungenutzt.",
"rule": "Regel",
"state": "Status",
"lastHit": "Letzter beobachteter Treffer",
"packets": "Pakete seit Neuladen",
"states": {
"used": "in Benutzung",
"unused": "ungenutzt",
"collecting": "Daten werden gesammelt",
"disabled": "deaktiviert"
}
}
},
"tokens": {
"title": "API-Tokens",
"new": "Neues Token",
"intro": "Mit Tokens nutzen Skripte, CI-Jobs, Prometheus und KI-Assistenten die OPNexus-API ohne Anmeldung. Jedes Token gehört dir, hat einen Bereich und lässt sich jederzeit widerrufen. Es bekommt nie mehr Rechte als dein Konto.",
"loadFailed": "API-Tokens konnten nicht geladen werden",
"createFailed": "Token konnte nicht erstellt werden",
"empty": "Noch keine Tokens.",
"colName": "Name",
"colScope": "Bereich",
"colOwner": "Besitzer",
"colExpires": "Läuft ab",
"colLastUsed": "Zuletzt benutzt",
"never": "Nie",
"neverUsed": "Noch nicht benutzt",
"days": "{n} Tage",
"nameHint": "Wofür das Token gedacht ist, z. B. „Grafana“ oder „CI-Deploy“.",
"scope": {
"read": "Lesen",
"deploy": "Ausrollen",
"admin": "Admin"
},
"scopeHint": {
"read": "Nur lesen: alles ansehen, nichts ändern. Für Dashboards, Prometheus und KI-Assistenten.",
"deploy": "Lesen plus Regeln, Aliase, NAT, VPN und Wartung ausrollen. Kann keine Benutzer, Einstellungen oder Hosts verwalten.",
"admin": "Alles, was dein Konto darf, außer Tokens und dein eigenes Konto zu verwalten."
},
"password": "Dein Passwort",
"passwordHint": "Zum Erstellen eines Tokens ist dein aktuelles Passwort nötig.",
"create": "Token erstellen",
"revoke": "Widerrufen",
"revokeConfirm": "Token „{name}“ widerrufen? Alles, was es nutzt, funktioniert sofort nicht mehr.",
"revoked": "Token „{name}“ widerrufen",
"createdTitle": "Token „{name}“ erstellt",
"shownOnce": "Kopiere das Token jetzt. Es wird nur einmal angezeigt und lässt sich nicht erneut anzeigen.",
"copy": "Kopieren",
"copied": "Kopiert",
"example": "Beispiel",
"done": "Fertig"
},
"users": {
"ssoTip": "Wird per Single Sign-on verwaltet: Rolle und Passwort ändern sich beim Identitätsanbieter.",
"roleOperator": "Operator",
"roleAdmin": "Admin",
"roleReadOnly": "Nur-Lesen",
"loadFailed": "Benutzer konnten nicht geladen werden",
"deleteConfirm": "Benutzer „{name}“ wirklich löschen?",
"deleted": "Benutzer „{name}“ gelöscht",
"title": "Benutzer",
"new": "Neuer Benutzer",
"intro": "„Admin“ darf alles. „Operator“ rollt aus und betreibt (Regeln, NAT, VPN, Wartung), verwaltet aber keine Benutzer, Einstellungen oder Hosts. „Nur-Lesen“ sieht alle Seiten und Daten, kann aber nichts speichern — nur das eigene Passwort lässt sich immer ändern.",
"colUsername": "Benutzername",
"colRole": "Rolle",
"colCreated": "Angelegt",
"colLastLogin": "Letzte Anmeldung",
"you": "(du)",
"cannotDeleteSelf": "Der eigene Account kann nicht gelöscht werden",
"created": "Benutzer angelegt",
"updated": "Benutzer „{name}“ aktualisiert",
"createFailed": "Benutzer konnte nicht angelegt werden",
"password": "Passwort",
"createUser": "Benutzer anlegen",
"editTitle": "Benutzer bearbeiten: {name}",
"newPassword": "Neues Passwort (optional)",
"keepPassword": "leer lassen, um unverändert zu bleiben"
},
"logs": {
"preset": {
"1h": "Letzte Stunde",
"24h": "Letzte 24 Stunden",
"7d": "Letzte 7 Tage",
"all": "Gesamter Zeitraum",
"custom": "Benutzerdefiniert"
},
"loadFailed": "Logs konnten nicht geladen werden",
"title": "Firewall-Logs",
"hostOrCluster": "Host oder Cluster",
"allHosts": "Alle Hosts",
"clusterOption": "Cluster: {name} (alle Hosts)",
"statsLoading": "Statistik wird geladen…",
"byAction": "Nach Aktion",
"noData": "Keine Daten im Zeitraum.",
"byInterface": "Nach Interface",
"topBlocked": "Top geblockte Quellen",
"noBlocked": "Keine geblockten Verbindungen im Zeitraum.",
"topPorts": "Top Zielports",
"searchLabel": "Logs durchsuchen",
"searchPlaceholder": "Label, Quelle, Ziel…",
"action": "Aktion",
"allActions": "Alle Aktionen",
"interface": "Interface",
"allInterfaces": "Alle Interfaces",
"protocol": "Protokoll",
"allProtocols": "Alle Protokolle",
"period": "Zeitraum",
"from": "Von",
"to": "Bis",
"colTime": "Zeit",
"colHost": "Host",
"colSource": "Quelle",
"colDestination": "Ziel",
"noEntries": "Keine Log-Einträge für diese Auswahl.",
"range": "{from}–{to} von {total} Treffern",
"back": "Zurück",
"page": "Seite {page} / {pages}",
"next": "Weiter"
},
"cluster": {
"error": "Fehler",
"loadFailed": "Cluster-Ansicht konnte nicht geladen werden",
"comparing": "Regeln werden abgeglichen…",
"countDiffers": "Regelanzahl weicht ab — Details ansehen",
"synced": "Synchron",
"ungrouped": "Nicht gruppiert",
"ungroupedHint": "Diesen Hosts fehlt ein Cluster-Name — unter Hosts ▸ Bearbeiten zuweisen, um sie hier gruppiert zu sehen.",
"rulesCount": "{count} Regeln",
"rulesUnavailable": "Regeln nicht abrufbar",
"carpHistoryFailed": "CARP-Historie konnte nicht geladen werden",
"carpHistory": "CARP-Rollenverlauf ({count})",
"noRoleChanges": "Noch keine Rollenwechsel erfasst.",
"unknown": "unbekannt"
},
"about": {
"tagline": "Zentrale Verwaltung mehrerer OPNsense-Firewalls.",
"version": "OPNexus {version} „{codename}“ · Eigenentwicklung von {maintainer}",
"fleetStatus": "Fleet-Status",
"colAddress": "Adresse",
"colVersion": "OPNsense-Version",
"colLiveRules": "Live-Regeln",
"unavailable": "nicht abrufbar"
},
"audit": {
"kind": {
"rule": "Regeln",
"alias": "Aliase",
"port_forward": "Port Forward",
"one_to_one": "1:1 NAT",
"outbound_nat": "Outbound NAT",
"host": "Host-Wartung",
"user": "Benutzer",
"auth": "Kontosicherheit",
"backup": "Backup-Export",
"ipsec_tunnel": "IPsec-Tunnel",
"openvpn_instance": "OpenVPN",
"wireguard_tunnel": "WireGuard",
"certificate": "Zertifikate",
"acme": "ACME",
"notification": "Benachrichtigungen",
"system": "OPNexus-System"
},
"action": {
"deploy": "Push",
"confirm": "Bestätigung",
"rollback": "Rollback",
"remove": "Ziel entfernen",
"retry-rollback": "Rollback wiederholen",
"delete": "Löschen",
"create": "Anlegen",
"edit": "Bearbeiten",
"reboot": "Neustart",
"update": "Update",
"acknowledge": "Abschluss bestätigt",
"backups": "Backup",
"cancel": "Abgebrochen",
"carp-execute": "CARP-Rollenwechsel",
"carp_enter": "CARP-Übergabe",
"carp_leave": "CARP-Normalbetrieb",
"check-updates": "Update-Suche",
"execute": "Ausgeführt",
"handoff": "Übergabe",
"preview": "Vorschau",
"schedule": "Eingeplant",
"major_update": "Major-Upgrade",
"changes": "Änderungen",
"download": "Download",
"push": "Übertragen",
"register": "Registrieren",
"sign": "Signieren",
"poll": "Status abfragen",
"test": "Test",
"change-password": "Passwort ändern",
"2fa/setup": "2FA einrichten",
"2fa/enable": "2FA aktivieren",
"2fa/disable": "2FA deaktivieren",
"reset-password": "Passwort zurücksetzen",
"reset-2fa": "2FA zurücksetzen"
},
"status": {
"requested": "Angefordert",
"accepted": "Anfrage verarbeitet",
"rejected": "Abgelehnt",
"interrupted": "Unterbrochen · prüfen",
"success": "Bestätigt",
"pending": "Bestätigung offen",
"error": "Fehler",
"reverted": "Zurückgerollt",
"revert_failed": "Rollback fehlgeschlagen",
"removed": "Entfernt",
"submitted": "An Firewall übergeben",
"acknowledged": "Manuell abgeschlossen",
"starting": "Übergabe begonnen",
"unknown": "Ausgang unklar",
"denied": "Abgelehnt (keine Berechtigung)"
},
"exportFailed": "Export fehlgeschlagen",
"title": "Deploy-Audit-Historie",
"refresh": "Aktualisieren",
"exporting": "Exportiert…",
"exportJson": "JSON exportieren",
"intro": "Anfragen und Deployment-Ergebnisse werden ab Aktivierung dauerhaft gespeichert, auch nach dem Löschen einer Regel oder eines Hosts. „Anfrage verarbeitet“ beschreibt die HTTP-Anfrage; der separate Host-Eintrag zeigt das Deploy-Ergebnis. Frühere Aktionen werden nicht nachträglich rekonstruiert.",
"searchLabel": "Audit durchsuchen",
"searchPlaceholder": "Benutzer, Host, Beschreibung…",
"typeLabel": "Audit-Typ",
"allTypes": "Alle Typen",
"resultLabel": "Audit-Ergebnis",
"allResults": "Alle Ergebnisse",
"events": "{total} Ereignisse · {from}–{to}",
"noEvents": "Keine Ereignisse in dieser Auswahl."
},
"hostDetail": {
"notFound": "Host nicht gefunden",
"liveRulesFailed": "Live-Regeln konnten nicht geladen werden",
"liveAliasesFailed": "Live-Aliase konnten nicht geladen werden",
"backupsFailed": "Sicherungen konnten nicht geladen werden",
"backupFailed": "Sicherung fehlgeschlagen",
"downloadFailed": "Download fehlgeschlagen",
"backToHosts": "Zurück zu Hosts",
"managedRules": "Von OPNexus verwaltete Regeln",
"noManagedRules": "Keine zentral verwalteten Regeln für diesen Host.",
"colRule": "Regel",
"colStatusOnHost": "Status auf diesem Host",
"notDeployed": "nicht deployed",
"liveRulesTitle": "Tatsächlich konfigurierte Regeln (live von der Firewall)",
"fetchingRules": "Regeln werden von der Firewall abgerufen…",
"colOrigin": "Herkunft",
"automatic": "automatisch",
"custom": "benutzerdefiniert",
"managedAliases": "Von OPNexus verwaltete Aliase",
"noManagedAliases": "Keine zentral verwalteten Aliase für diesen Host.",
"liveAliasesTitle": "Tatsächlich konfigurierte Aliase (live von der Firewall)",
"fetchingAliases": "Aliase werden von der Firewall abgerufen…",
"backups": "Backups",
"backupNow": "Jetzt sichern",
"noBackups": "Noch keine Sicherung vorhanden.",
"colTime": "Zeitpunkt",
"colSize": "Größe",
"changes": "Änderungen",
"download": "Herunterladen",
"restore": "Wiederherstellen",
"restoreHistory": "Restore-Historie",
"colBackup": "Sicherung",
"restoreVerified": "Bestätigt",
"restoreHandedOff": "Übergeben — offen",
"restoreCancelled": "Abgebrochen"
},
"updates": {
"notChecked": "Noch nicht geprüft",
"fw": {
"running": "Auftrag läuft",
"update": "Update verfügbar",
"upgrade": "Major-Upgrade",
"error": "Prüfung fehlerhaft",
"none": "Prüfung erforderlich",
"current": "Aktuell"
},
"blocker": {
"haOrder": {
"title": "HA-Reihenfolge",
"master": "Dieser Knoten ist aktuell MASTER. Zuerst den BACKUP-Knoten aktualisieren. Danach die CARP-Rollen in OPNsense wechseln und zu diesem Knoten zurückkehren.",
"backup": "Updates werden im HA-Verbund nur auf dem aktuellen BACKUP-Knoten gestartet."
},
"partner": {
"title": "HA-Partner nicht bereit",
"text": "Der andere Cluster-Knoten muss online und CARP MASTER sein, bevor dieser Knoten aktualisiert werden kann."
},
"backup": {
"title": "Frisches Backup erforderlich",
"text": "Vor der Installation braucht OPNexus ein lokales Konfigurationsbackup, das höchstens 24 Stunden alt ist."
},
"noUpdate": {
"title": "Kein installierbares Update",
"text": "Die letzte Prüfung meldet kein stabiles Paketupdate."
},
"noMajor": {
"title": "Kein installierbares Major-Upgrade",
"text": "Die letzte Prüfung meldet kein verfügbares Major-Upgrade."
},
"pending": {
"title": "Wartung noch offen",
"text": "Eine frühere Wartung muss nach der technischen Prüfung zuerst abgeschlossen werden."
},
"change": {
"title": "Änderung noch offen",
"text": "Ein Deployment oder Rollback im Cluster ist noch nicht abgeschlossen."
},
"locked": "Update gesperrt"
},
"pkg": {
"upgrade": "Aktualisieren",
"new": "Neu installieren",
"reinstall": "Neu installieren",
"downgrade": "Zurückstufen",
"obsolete": "Entfernen"
},
"statusFailed": "Status konnte nicht geladen werden",
"hostsFailed": "Hosts konnten nicht geladen werden",
"checkStarted": "Update-Suche auf {host} wurde gestartet.",
"checkFailed": "Update-Suche fehlgeschlagen",
"autoRunning": "Automatische Update-Suche auf {count} Hosts läuft…",
"checkedSummary": "{prefix}{done} von {total} geeigneten Hosts wurden geprüft.",
"autoDone": "Automatische Prüfung abgeschlossen: ",
"backupSaved": "Frisches Konfigurationsbackup für {host} wurde gespeichert.",
"backupFailed": "Backup konnte nicht erstellt werden",
"previewFailed": "Update-Vorschau fehlgeschlagen",
"handedOver": "{label} wurde an {host} übergeben.",
"labelMajor": "Major-Upgrade",
"labelUpdate": "Update",
"outcomeUnclear": "Ausgang unklar. Wartungsstatus prüfen.",
"finishDocumented": "Wartungsabschluss für {host} wurde dokumentiert.",
"finishFailed": "Abschluss konnte nicht gespeichert werden",
"cancelledNote": "Vorgang auf {host} wurde ohne bestätigten Abschluss geschlossen.",
"cancelFailed": "Abbrechen fehlgeschlagen",
"logFailed": "Update-Protokoll konnte nicht geladen werden",
"title": "Update Center",
"intro": "Beim Öffnen wird automatisch auf allen geeigneten Hosts nach Updates gesucht. Major-Upgrades und HA-Rollenwechsel bleiben bewusste manuelle Schritte.",
"checkAgain": "Erneut nach Updates suchen",
"refreshView": "Anzeige aktualisieren",
"readOnlyNote": "Nur-Lese-Zugriff: Status, Paketänderungen und Protokolle sind sichtbar; Prüfungen und Updates sind gesperrt.",
"sumHosts": "Verwaltete Hosts",
"sumStable": "Stabile Updates",
"sumMajor": "Major-Upgrades",
"sumUnavailable": "Nicht auswertbar",
"fleetLoading": "Fleet-Status wird geladen…",
"disabled": "Deaktiviert",
"clusterSuffix": " · Cluster {name}",
"check": "Prüfen",
"prepareUpdate": "Update vorbereiten",
"prepareMajor": "Major-Upgrade vorbereiten",
"reviewFinish": "Abschluss prüfen",
"cancelOperation": "Vorgang abbrechen",
"view": "Anzeige",
"readingStatus": "Status wird gelesen…",
"installed": "Installiert",
"available": "Verfügbar",
"packageUpdates": "Paketupdates",
"lastCheck": "Letzte Prüfung",
"localBackup": "Lokales Backup",
"backupFresh": " · frisch",
"backupOld": " · älter als 24 h",
"backupMissing": "Fehlt",
"backupNow": "Backup jetzt erstellen",
"rebootRequired": "Neustart erforderlich",
"carpMode": "CARP-Wartungsmodus",
"whyUpdateBlocked": "Warum „Update vorbereiten“ noch gesperrt ist",
"whyMajorBlocked": "Warum „Major-Upgrade vorbereiten“ noch gesperrt ist",
"packageChanges": "{count} Paketänderungen",
"majorTargets": " · {count} Major-Upgrade-Ziel(e)",
"updateLog": "Update-Protokoll",
"majorTargetsTitle": "Verfügbare Major-Upgrade-Ziele",
"colTarget": "Ziel",
"colInstalled": "Installiert",
"colNew": "Neu",
"colRepository": "Repository",
"stablePackageChanges": "Stabile Paketänderungen",
"noPackageChanges": "Keine stabilen Paketänderungen im gecachten Prüfergebnis.",
"colPackage": "Paket",
"colAction": "Aktion",
"previewTitleMajor": "Major-Upgrade auf {host}",
"previewTitleUpdate": "Firmware-Update auf {host}",
"majorWarnTitle": "Major-Upgrade: Wechsel auf eine neue Hauptversion",
"majorWarnText": "Länger dauernd und riskanter als ein reines Paketupdate, ggf. mit größeren Verhaltensänderungen an Diensten und Konfiguration. Frisches Backup und Konsolenzugang bereithalten, bevor fortgefahren wird.",
"plannedDowntime": "Geplante Unterbrechung",
"plannedDowntimeText": "Der Host kann während der Installation nicht erreichbar sein. Verbindungen können abbrechen; es gibt keinen automatischen Rollback.",
"carpRole": "CARP-Rolle",
"standalone": "Standalone",
"previewValidUntil": "Vorschau gültig bis",
"runMajorNow": "Major-Upgrade jetzt ausführen",
"runUpdateNow": "Update jetzt ausführen",
"finishTitleCarp": "CARP-Rollenwechsel auf {host} abschließen",
"finishTitle": "Wartung auf {host} abschließen",
"finishCheckCarp": "Prüfe die CARP-Rollen und Erreichbarkeit beider Cluster-Knoten. ",
"finishCheck": "Prüfe Erreichbarkeit, installierte Version und Dienste. ",
"finishNote": "Diese Bestätigung dokumentiert die Prüfung und löst keine weitere Firewall-Aktion aus.",
"cancelTitle": "Vorgang auf {host} abbrechen",
"cancelWarnPre": "Das bestätigt ",
"cancelWarnStrong": "keinen",
"cancelWarnPost": " erfolgreichen Abschluss — es schließt den Datensatz nur, damit dieser Host/Cluster nicht weiter gesperrt bleibt. Nur nutzen, wenn der erwartete Zustand nachweislich nie eingetreten ist (z. B. CARP-Rollenwechsel hängt fest).",
"logTitle": "Update-Protokoll · {host}",
"logEmpty": "Kein Protokoll vorhanden. OPNsense leert es beim Neustart – nach einem erfolgreichen Update ist das normal. Maßgeblich ist der angezeigte Status der Firewall.",
"readOnlyBadge": "Nur Lesen",
"lockedPrefix": "Gesperrt",
"tipCheckAll": "Fragt alle geeigneten Firewalls nach neuen Updates. Es wird nichts installiert.",
"tipRefreshView": "Lädt den zuletzt bekannten Status aller Hosts neu, ohne die Firewalls zu fragen.",
"tipCheck": "Fragt diese Firewall nach verfügbaren Updates. Es wird nichts installiert.",
"tipPrepare": "Zeigt zuerst eine Vorschau. Installiert wird erst nach Ihrer ausdrücklichen Bestätigung.",
"tipPrepareMajor": "Wechsel auf eine neue Hauptversion: dauert länger und ist riskanter. Zuerst folgt eine Vorschau.",
"tipView": "Status dieses Hosts neu laden",
"tipFinish": "Prüfen Sie das Ergebnis auf der Firewall und dokumentieren Sie den Abschluss.",
"tipCancel": "Schließt einen hängenden Vorgang, ohne einen Erfolg zu bestätigen. Nur wenn der erwartete Zustand nie eingetreten ist.",
"tipPackages": "Pakete, die beim nächsten Update geändert werden",
"tipLog": "Zeigt das Protokoll der letzten Update-Aktion auf der Firewall",
"tipBackup": "Vor jedem Update ist ein lokales Konfigurationsbackup nötig, das höchstens 24 Stunden alt ist.",
"tipInstalled": "Aktuell auf der Firewall installierte Version",
"tipAvailable": "Neueste Version, die laut letzter Prüfung installiert werden kann",
"tipRebootRequired": "Nach dem Update ist ein Neustart der Firewall nötig. Dabei ist sie kurz nicht erreichbar.",
"tipCarpWarn": "CARP-Wartungsmodus",
"majorWarnShort": "Wechsel auf eine neue Hauptversion",
"majorWarnTip": "Länger dauernd und riskanter als ein Paketupdate, ggf. mit Verhaltensänderungen an Diensten und Konfiguration. Halten Sie ein frisches Backup und Konsolenzugang bereit.",
"downtimeShort": "Der Host ist während der Installation zeitweise nicht erreichbar",
"downtimeTip": "Verbindungen können abbrechen. Es gibt keinen automatischen Rollback.",
"tipConfirmName": "Die Eingabe des Hostnamens verhindert, dass versehentlich der falsche Host aktualisiert wird.",
"confirmRunDisabledName": "Hostnamen exakt eingeben, um fortzufahren",
"confirmRunDisabledAck": "Bestätigen Sie zuerst das Wartungsfenster",
"cancelWarnShort": "Bestätigt keinen erfolgreichen Abschluss",
"cancelWarnTip": "Der Vorgang wird nur geschlossen, damit Host oder Cluster nicht gesperrt bleiben. Nur nutzen, wenn der erwartete Zustand nachweislich nie eingetreten ist (z. B. hängender CARP-Rollenwechsel).",
"finishNoteTip": "Diese Bestätigung dokumentiert Ihre Prüfung und löst keine Firewall-Aktion aus.",
"reasonMinHint": "Mindestens 3 Zeichen",
"validUntilShort": "Vorschau gültig bis {time}"
},
"sparkline": {
"noData": "Keine Daten"
},
"tls": {
"title": "TLS-Zertifikat der Firewall",
"intro": "Die Verbindung zur Firewall wird nur dann als sicher akzeptiert, wenn sie genau dieses Zertifikat vorzeigt. Das funktioniert für IP-Adressen und Namen gleichermaßen und schützt vor Abhören und Umleiten.",
"pinned": "Festgesetzt",
"notPinned": "Nicht festgesetzt",
"insecure": "Nicht geprüft (unsicher)",
"fetch": "Zertifikat abrufen",
"refetch": "Zertifikat neu abrufen",
"needsHttps": "Benötigt eine https-Adresse.",
"subject": "Name",
"issuer": "Aussteller",
"selfSigned": "selbstsigniert",
"validUntil": "Gültig bis",
"expired": "abgelaufen",
"confirmMatch": "Der Fingerprint stimmt mit dem Zertifikat der Firewall überein.",
"confirmHelp": "Vergleiche ihn in OPNsense unter System → Vertrauen → Zertifikate (Web-GUI-Zertifikat) oder im Browser-Zertifikatsdialog der Firewall. Nur bestätigen, wenn er exakt übereinstimmt.",
"skipVerify": "Zertifikat nicht prüfen (unsicher)",
"skipVerifyHelp": "Die Verbindung bleibt verschlüsselt, aber OPNexus kann nicht erkennen, ob wirklich die Firewall antwortet. Nur für Tests.",
"probeFailed": "Zertifikat konnte nicht abgerufen werden",
"pinnedTip": "Zertifikat festgesetzt · SHA-256 {fp}…",
"systemTip": "Standard-Zertifikatsprüfung. Für selbstsignierte Firewalls das Zertifikat festsetzen.",
"insecureTip": "Zertifikat wird nicht geprüft. Im Host bearbeiten festsetzen."
},
"twofa": {
"title": "Zwei-Faktor-Anmeldung",
"intro": "Zusätzlich zum Passwort wird bei der Anmeldung ein 6-stelliger Code aus einer Authenticator-App (z. B. Aegis, Google Authenticator, 1Password) verlangt. Schützt das Konto, auch wenn das Passwort bekannt wird.",
"on": "Aktiv",
"off": "Aus",
"enable": "Zwei-Faktor einrichten",
"disable": "Deaktivieren",
"codesLeft": "{count} Wiederherstellungscodes übrig",
"confirmPassword": "Aktuelles Passwort",
"confirmPasswordHelp": "Zur Sicherheit wird das Passwort erneut abgefragt, damit eine gestohlene Sitzung allein keinen fremden Authenticator hinterlegen kann.",
"continue": "Weiter",
"scan": "Scanne den QR-Code mit deiner Authenticator-App und gib danach den angezeigten Code ein.",
"qrAlt": "QR-Code für die Authenticator-App",
"manualKey": "Oder den Schlüssel manuell eingeben:",
"enterCode": "6-stelliger Code",
"activate": "Aktivieren",
"codesTitle": "Wiederherstellungscodes – jetzt sichern",
"codesHelp": "Jeder Code funktioniert genau einmal, falls du dein Gerät verlierst. Sie werden nur jetzt angezeigt.",
"copy": "Kopieren",
"download": "Als Datei speichern",
"savedAck": "Ich habe die Codes an einem sicheren Ort gespeichert.",
"done": "Fertig",
"enterCodeOrRecovery": "Code aus der App oder Wiederherstellungscode",
"userOnTip": "Zwei-Faktor-Anmeldung aktiv",
"reset": "2FA zurücksetzen",
"resetTip": "Entfernt die Zwei-Faktor-Anmeldung dieses Benutzers, z. B. wenn das Gerät verloren ging.",
"resetConfirm": "Zwei-Faktor-Anmeldung für {name} zurücksetzen?",
"resetDone": "Zwei-Faktor für {name} zurückgesetzt."
},
"network": {
"host": "Firewall",
"loadFailed": "Netzwerkdaten konnten nicht geladen werden.",
"empty": "Keine Einträge.",
"unassigned": "nicht zugewiesen",
"management": "Verwaltung",
"default": "Standard",
"active": "Aktiv",
"managementNote": "OPNexus erreicht diese Firewall über {device}. Änderungen an dieser Schnittstelle können die Verbindung trennen und werden später besonders abgesichert.",
"managementUnknown": "Über welche Schnittstelle OPNexus diese Firewall erreicht, lässt sich nicht bestimmen (z. B. über NAT oder eine CARP-Adresse).",
"unavailable": "Nicht abrufbar von dieser Firewall: {sections}.",
"cannotConfigure": "Diese Firewall ist zu alt, um Schnittstellen-IPs per API zu ändern (möglich ab OPNsense 26.7.6). Ändere die IP direkt in OPNsense oder aktualisiere die Firewall.",
"sections": {
"assignments": "Schnittstellen-Zuweisung",
"vlans": "VLANs",
"vips": "Virtuelle IPs",
"gateways": "Gateways",
"routes": "Routen",
"dns_hosts": "DNS-Einträge",
"dhcp_hosts": "DHCP-Hosts",
"kea_subnets": "DHCP-Subnetze",
"kea_reservations": "DHCP-Reservierungen"
},
"col": {
"device": "Gerät",
"name": "Name",
"status": "Status",
"addresses": "Adressen",
"type": "Typ",
"vlan": "VLAN",
"parent": "Eltern-Gerät",
"tag": "Tag",
"pcp": "Priorität (PCP)",
"address": "Adresse",
"interface": "Schnittstelle",
"mode": "Modus",
"advskew": "Advskew",
"priority": "Priorität",
"network": "Netzwerk",
"gateway": "Gateway"
},
"kinds": {
"vlan": "VLAN",
"vip": "Virtuelle IP",
"gateway": "Gateway",
"route": "Route",
"interface": "Schnittstelle",
"dns_host": "DNS-Eintrag",
"dhcp_host": "DHCP-Host (dnsmasq)",
"kea_subnet": "DHCP-Subnetz (Kea)",
"kea_reservation": "DHCP-Reservierung (Kea)",
"tunable": "Tunable",
"cron_job": "Cron-Job",
"syslog_destination": "Syslog-Ziel",
"gateway_group": "Gateway-Gruppen",
"lagg": "LAGG",
"bridge": "Bridge",
"loopback": "Loopback",
"gre": "GRE-Tunnel",
"dns_forward": "DNS-Weiterleitungen",
"dhcp_range": "DHCP-Bereiche (dnsmasq)",
"gif": "GIF-Tunnel",
"vxlan": "VXLAN"
},
"field": {
"if": "Eltern-Schnittstelle",
"tag": "VLAN-Tag",
"pcp": "Priorität (PCP)",
"descr": "Beschreibung",
"interface": "Schnittstelle",
"mode": "Modus",
"network": "Adresse / Präfix (z. B. 192.168.1.50/24)",
"vhid": "VHID",
"advbase": "Advbase",
"advskew": "Advskew",
"password": "CARP-Passwort",
"name": "Name",
"ipprotocol": "IP-Version",
"gateway": "Gateway",
"defaultgw": "Standard-Gateway",
"defaultgwHint": "Als Standard-Gateway verwenden",
"monitor_disable": "Überwachung",
"monitor_disableHint": "Gateway-Überwachung deaktivieren",
"priority": "Priorität",
"disabled": "Deaktiviert",
"disabledHint": "Gateway deaktivieren",
"enabled": "Aktiv",
"enabledHint": "Route aktiv",
"fargw": "Fernes Gateway",
"force_down": "Als ausgefallen markieren",
"monitor": "Monitor-IP",
"weight": "Gewicht",
"nosync": "Nicht synchronisieren",
"peer": "Peer",
"peer6": "Peer (IPv6)",
"proto": "Protokoll",
"enable": "Aktiviert",
"enableHint": "Schnittstelle aktivieren",
"type4": "IPv4-Typ",
"ipaddr": "IPv4-Adresse / Präfix",
"type6": "IPv6-Typ",
"ipaddrv6": "IPv6-Adresse / Präfix",
"gatewayv6": "IPv6-Gateway",
"mtu": "MTU",
"blockpriv": "Private Netze sperren",
"blockprivHint": "Private Netzwerke blockieren",
"blockbogons": "Bogon-Netze sperren",
"blockbogonsHint": "Bogon-Netzwerke blockieren",
"lock": "Sperre",
"lockHint": "Löschen verhindern (Schnittstelle sperren)",
"hostname": "Hostname",
"domain": "Domain",
"rr": "Eintragstyp",
"server": "Ziel-Adresse",
"mx": "Mail-Server (MX)",
"mxprio": "MX-Priorität",
"addptr": "PTR-Eintrag",
"addptrHint": "Passenden PTR-Eintrag anlegen",
"description": "Beschreibung",
"host": "Host",
"ip": "IP-Adresse(n)",
"hwaddr": "MAC-Adresse(n)",
"client_id": "Client-ID",
"lease_time": "Lease-Dauer (Sekunden)",
"local": "Lokal",
"localHint": "Nur lokal auflösen",
"ignore": "Ignorieren",
"ignoreHint": "Anfragen dieses Geräts ignorieren",
"subnet": "Subnetz",
"pools": "Adress-Pool (z. B. 192.168.1.100-192.168.1.200)",
"valid_lifetime": "Gültigkeit der Leases (Sekunden)",
"next_server": "Next-Server (TFTP)",
"ip_address": "IP-Adresse",
"hw_address": "MAC-Adresse",
"option_data": {
"routers": "Gateway (Router)",
"domain_name_servers": "DNS-Server",
"domain_name": "Domain-Name",
"ntp_servers": "NTP-Server"
},
"tunable": "Tunable",
"value": "Wert",
"default_value": "Standardwert",
"minutes": "Minute",
"hours": "Stunde",
"days": "Tag",
"months": "Monat",
"weekdays": "Wochentag",
"who": "Benutzer",
"command": "Befehl",
"parameters": "Parameter",
"transport": "Transport",
"program": "Programme",
"level": "Level",
"facility": "Facility",
"rfc5424": "RFC 5424",
"rfc5424Hint": "RFC-5424-Format verwenden",
"item": "Gateways (Stufe 1)",
"item2": "Gateways (Stufe 2)",
"item3": "Gateways (Stufe 3)",
"item4": "Gateways (Stufe 4)",
"item5": "Gateways (Stufe 5)",
"trigger": "Auslöser",
"poolopts": "Pool-Optionen",
"members": "Mitglieder",
"primary_member": "Primäres Mitglied",
"lacp_fast_timeout": "LACP Fast-Timeout",
"lagghash": "Hash-Verfahren",
"laggif": "Gerät",
"bridgeif": "Gerät",
"linklocal": "Link-Local",
"linklocalHint": "Link-Local-Adresse automatisch vergeben",
"enablestp": "STP",
"enablestpHint": "Spanning Tree aktivieren",
"deviceId": "Geräte-Nr.",
"local-addr": "Lokale Adresse",
"remote-addr": "Gegenstelle",
"tunnel-local-addr": "Tunnel-Adresse lokal",
"tunnel-remote-addr": "Tunnel-Adresse Gegenstelle",
"tunnel-remote-net": "Tunnel-Präfix",
"greif": "Gerät",
"type": "Typ",
"verify": "Zertifikat prüfen",
"forward_tcp_upstream": "TCP zum Upstream",
"forward_tcp_upstreamHint": "Anfragen per TCP weiterleiten",
"forward_first": "Zuerst weiterleiten",
"forward_firstHint": "Erst weiterleiten, danach selbst auflösen",
"start_addr": "Von",
"end_addr": "Bis",
"subnet_mask": "Subnetzmaske",
"domain_type": "Domain-Art",
"vxlanid": "VNI",
"vxlanlocal": "Lokale Adresse",
"vxlanlocalport": "Lokaler Port",
"vxlanremote": "Gegenstelle",
"vxlanremoteport": "Port der Gegenstelle",
"vxlangroup": "Multicast-Gruppe",
"vxlandev": "Gerät",
"gifif": "Gerät"
},
"risks": {
"management_interface": "Diese Änderung betrifft {device}, die Schnittstelle, über die OPNexus die Firewall erreicht. Die Verbindung kann abbrechen.",
"management_address": "Die Adresse {address} ist die, unter der OPNexus die Firewall erreicht.",
"management_unknown": "Über welche Schnittstelle OPNexus diese Firewall erreicht, ist nicht bestimmbar (NAT oder CARP-Adresse). Die Auswirkung kann nicht eingeschätzt werden.",
"default_gateway": "{name} ist das Standard-Gateway. Ohne es kann der Verkehr ins Netz ausfallen.",
"default_gateway_change": "Das Standard-Gateway wird gewechselt oder gesetzt. Der gesamte ausgehende Verkehr nimmt danach einen anderen Weg.",
"management_gateway": "{name} hängt an der Schnittstelle, über die OPNexus die Firewall erreicht.",
"default_route": "Eine Standardroute ({network}) verändert den Weg für fast den gesamten Verkehr.",
"route_covers_management": "Die Route {network} deckt die Adresse der Firewall ab. Die Antworten an OPNexus können einen anderen Weg nehmen.",
"interface_rules_removed": "Beim Entfernen löscht OPNsense selbst {count} Regel(n), die diese Schnittstelle nutzen: {names}",
"management_member": "{device} ist die Schnittstelle, über die OPNexus die Firewall erreicht, und gehört zu diesem Gerät. Die Verbindung kann abbrechen.",
"tunable_change": "Tunables ändern das Verhalten des gesamten Systems; manche greifen erst nach einem Neustart und manche können die Firewall unbrauchbar machen."
},
"warnings": {
"carp_change": "CARP-Änderungen können einen Wechsel zwischen Master und Backup auslösen.",
"cluster_peers": "Diese Firewall gehört zu einem Cluster. Dieselbe Änderung muss ggf. auch auf {hosts} erfolgen. VIPs und Gateways werden nicht automatisch synchronisiert.",
"core_interface": "{name} ist eine Kern-Schnittstelle der Firewall. Änderungen wirken sich auf alle Regeln und Dienste darauf aus.",
"gateway_group_in_use": "Regeln, die diese Gateway-Gruppe nutzen, verlieren ihr Ziel."
},
"blocks": {
"api_unavailable": "Diese Firewall stellt dafür keine API bereit ({section}).",
"nothing_to_change": "Es gibt nichts zu ändern.",
"interface_api_unavailable": "Diese Firewall ist zu alt, um Schnittstellen per API zu konfigurieren (möglich ab OPNsense 26.7.6). Bitte direkt in OPNsense ändern oder aktualisieren.",
"interface_changes_pending": "Auf der Firewall warten bereits vorgemerkte Schnittstellen-Änderungen auf das Anwenden. Zuerst dort prüfen und anwenden oder verwerfen.",
"interface_locked": "Die Schnittstelle ist gesperrt. Zuerst die Sperre aufheben, dann löschen.",
"tunable_default_row": "Das ist eine Vorgabe der Firewall. Zum Ändern einen eigenen Eintrag mit „Überschreiben“ anlegen."
},
"change": {
"title": {
"add": "{kind} hinzufügen",
"set": "{kind} bearbeiten",
"del": "{kind} löschen"
},
"loadFailed": "Das Formular konnte nicht geladen werden.",
"previewFailed": "Die Vorschau konnte nicht erstellt werden.",
"applyFailed": "Die Änderung konnte nicht angewendet werden.",
"keepUnchanged": "unverändert lassen…",
"toPreview": "Weiter zur Vorschau",
"back": "Zurück",
"apply": "Jetzt anwenden",
"riskTitle": "Achtung, diese Änderung kann die Verbindung kappen",
"noChanges": "Keine Änderungen.",
"backupNote": "Vor dem Anwenden wird ein Backup der Firewall-Konfiguration gespeichert. Ein automatisches Zurückrollen gibt es nicht: Wenn die Verbindung abbricht, kann OPNexus die Änderung nicht selbst rückgängig machen.",
"ack": "Ich habe verstanden, dass diese Änderung die Verbindung zu {host} trennen kann und nicht automatisch zurückgerollt wird.",
"typeHost": "Zur Bestätigung den Namen der Firewall eingeben: {host}",
"applied": "Änderung angewendet.",
"verified": "Angewendet und geprüft",
"notVerified": "Angewendet, Prüfung weicht ab",
"carpInactive": "Die Änderung ist gespeichert, aber das CARP-VIP ist auf der Firewall nicht aktiv (Status nicht MASTER/BACKUP). Sofort unter Hosts › Status prüfen und die VIPs neu anwenden.",
"mismatch": "Die Firewall meldet abweichende Werte: {fields}",
"backupId": "Backup vor der Änderung: {id}",
"col": {
"field": "Feld",
"before": "Vorher",
"after": "Nachher"
},
"invalidValue": "Ungültiger Wert.",
"unreachable": "Die Änderung wurde angewendet, aber „{host}“ antwortet unter der bisherigen Adresse nicht mehr. Wurde die Verwaltungs-Adresse geändert, die neue Adresse unter Hosts › Bearbeiten eintragen. Das Backup vor der Änderung bleibt gespeichert.",
"transferHint": "Dieselbe Änderung auch auf den Partner im Cluster anwenden? Zuerst den Backup-Knoten, dann den Master.",
"transfer": "Auf {host} übertragen"
},
"rowAdd": "Hinzufügen",
"rowEdit": "Bearbeiten",
"rowDelete": "Löschen",
"hint": {
"interfaceDescr": "Nur Buchstaben, Ziffern und Unterstriche (keine Leerzeichen oder Bindestriche)."
},
"dhcp": {
"dnsmasq": "Hosts (dnsmasq: statisches DHCP und DNS)",
"keaSubnets": "Subnetze (Kea)",
"keaReservations": "Reservierungen (Kea)"
},
"objectsUnavailable": "Diese OPNsense-Version bietet dafür keine API.",
"override": "Überschreiben",
"compare": {
"loadFailed": "Der Abgleich konnte nicht geladen werden.",
"noClusters": "Kein Cluster mit mindestens zwei Hosts vorhanden.",
"intro": "Vergleicht die Netzwerk-Konfiguration der Knoten eines Clusters. Adressen, CARP-Advskew und das aktive Standard-Gateway dürfen sich unterscheiden und werden nicht verglichen.",
"unreachable": "Nicht erreichbar: {hosts}",
"same": "Identisch",
"count": "{count} Abweichung(en)",
"category": "Bereich",
"object": "Objekt",
"state": "Zustand",
"missing": "Fehlt",
"different": "Weicht ab",
"absent": "fehlt",
"categories": {
"interfaces": "Schnittstelle",
"vlans": "VLAN",
"vips": "Virtuelle IP",
"gateways": "Gateway",
"routes": "Route",
"dns_hosts": "DNS-Eintrag",
"dhcp_hosts": "DHCP-Host",
"kea_subnets": "DHCP-Subnetz",
"kea_reservations": "DHCP-Reservierung"
}
}
},
"hostsystem": {
"intro": {
"tunables": "Systemparameter der Firewall (sysctl). Die Werte der Firewall selbst bleiben unberührt, eigene Einträge überschreiben sie.",
"cron": "Zeitgesteuerte Aufgaben, die die Firewall selbst ausführt.",
"syslog": "Entfernte Log-Ziele, an die die Firewall ihre Meldungen schickt.",
"snapshots": "ZFS-Snapshots der Firewall als zusätzliches Sicherheitsnetz vor größeren Änderungen. Aktivieren (mit Neustart) geschieht bewusst nur in OPNsense selbst.",
"diagnostics": "Netzwerk-Abfragen, die die ausgewählte Firewall selbst ausführt (Erreichbarkeit, Wege, Ports, Namensauflösung). Ergebnisse werden nur angezeigt; jeder Lauf steht mit Ziel im Audit-Log."
},
"snapshots": {
"create": "Snapshot anlegen",
"createHint": "Der Snapshot hält den aktuellen Systemzustand fest. Er ersetzt kein Konfigurations-Backup.",
"name": "Name",
"nameHint": "Buchstaben, Ziffern, Punkt, Unterstrich und Bindestrich.",
"note": "Notiz",
"state": "Zustand",
"size": "Größe",
"createdAt": "Erstellt",
"activeNow": "aktiv",
"activeNext": "aktiv nach Neustart",
"unsupported": "Diese Firewall unterstützt keine Snapshots (kein ZFS).",
"created": "Snapshot „{name}“ angelegt.",
"createFailed": "Snapshot konnte nicht angelegt werden.",
"deleted": "Snapshot „{name}“ gelöscht.",
"deleteFailed": "Snapshot konnte nicht gelöscht werden.",
"deleteConfirm": "Snapshot „{name}“ wirklich löschen?"
},
"diag": {
"tools": {
"ping": "Ping",
"traceroute": "Traceroute",
"portprobe": "Port prüfen",
"dns": "DNS-Abfrage"
},
"target": "Ziel (Host oder IP)",
"name": "Name",
"ipproto": "IP-Version",
"source": "Quelladresse (optional)",
"sourceHint": "Eigene Adresse der Firewall, von der aus abgefragt wird. Leer = automatisch.",
"count": "Anzahl (1–10)",
"packetsize": "Paketgröße (optional)",
"protocol": "Protokoll",
"port": "Port",
"server": "DNS-Server (optional)",
"serverHint": "Leer = die Resolver der Firewall.",
"run": "Ausführen",
"running": "Läuft…",
"auditNote": "Wird im Audit-Log festgehalten.",
"failed": "Die Abfrage ist fehlgeschlagen.",
"reachable": "Erreichbar",
"unreachable": "Nicht erreichbar",
"pingSummary": "{sent} gesendet, {received} empfangen, {loss} Verlust",
"hop": "Hop",
"hostname": "Name",
"time": "Zeit",
"open": "Port {port} offen",
"closed": "Port {port} nicht erreichbar",
"noRecords": "Keine Antwort für „{name}“."
}
},
"setup": {
"title": "Einrichtungsassistent",
"skip": "Assistent überspringen",
"stepsLabel": "Einrichtungsschritte",
"stepOf": "Schritt {current} von {total}",
"back": "Zurück",
"next": "Weiter",
"finish": "Einrichtung abschließen",
"readOnly": "Der Assistent richtet Konto und Firewalls ein und ist deshalb Administratoren vorbehalten.",
"toDashboard": "Zum Dashboard",
"steps": {
"welcome": "Willkommen",
"account": "Konto",
"firewall": "Firewall",
"done": "Fertig"
},
"welcome": {
"title": "Willkommen bei OPNexus",
"intro": "OPNexus verwaltet deine OPNsense-Firewalls zentral: Regeln, NAT, VPN, Zertifikate, Updates und HA-Cluster an einem Ort. Dieser Assistent richtet das Nötigste in wenigen Minuten ein. Du kannst ihn jederzeit überspringen und später unter System › Einrichtung wieder öffnen.",
"points": {
"account": "Konto absichern: eigenes Passwort und Zwei-Faktor-Anmeldung.",
"firewall": "Erste Firewall verbinden: API-Key anlegen, Zertifikat prüfen, fertig.",
"done": "Überblick, was als Nächstes sinnvoll ist."
},
"readOnlyNote": "Der Assistent liest nur von deiner Firewall. Geändert wird dort erst, wenn du später selbst etwas ausrollst."
},
"account": {
"title": "Konto absichern",
"passwordTitle": "Eigenes Passwort",
"passwordDone": "Geändert",
"passwordIntro": "Hast du beim Start kein ADMIN_PASSWORD gesetzt, hat OPNexus ein Zufallspasswort erzeugt. Setze jetzt ein eigenes. Dieser Schritt ist optional.",
"currentHint": "Das Passwort, mit dem du dich gerade angemeldet hast. Verloren? Auf dem Server: ./opnexus password",
"newHint": "Mindestens 10 Zeichen. Ein Passwortmanager ist am bequemsten.",
"twofaTitle": "Zwei-Faktor-Anmeldung (empfohlen)",
"twofaIntro": "OPNexus kann Firewalls verändern. Ein zweiter Faktor aus einer Authenticator-App schützt das Konto auch dann, wenn das Passwort bekannt wird."
},
"firewall": {
"title": "Erste Firewall verbinden",
"intro": "OPNexus spricht über die REST-API mit deiner OPNsense. Dafür braucht es einen API-Key. Das Anlegen dauert eine Minute.",
"connected": "Verbundene Firewalls",
"recheck": "Erneut prüfen",
"offlineHelp": "Prüfe Adresse und API-Key und ob die Firewall den Zugriff auf die Weboberfläche von diesem Server aus erlaubt.",
"keyTitle": "So legst du den API-Key in OPNsense an",
"keySteps": {
"menu": "In OPNsense System › Access › Users öffnen.",
"user": "Einen eigenen Benutzer (z. B. „opnexus“) anlegen oder einen vorhandenen bearbeiten.",
"key": "Beim Benutzer unter „API keys“ auf das Plus klicken. Der Browser lädt eine Datei apikey.txt herunter.",
"rights": "Dem Benutzer ausreichende Rechte geben, am einfachsten die Gruppe „admin“. Mit weniger Rechten schlagen einzelne Funktionen fehl."
},
"keyFileNote": "In apikey.txt steht der Key hinter key=, das Secret hinter secret=. Das Secret gibt es nur in dieser Datei.",
"addFirst": "Firewall eintragen",
"addAnother": "Weitere Firewall eintragen",
"nameHint": "Frei wählbar, nur zur Anzeige. Bei einem HA-Paar z. B. fw-a und fw-b.",
"urlHint": "Adresse der OPNsense-Weboberfläche, mit https:// und gegebenenfalls Port, z. B. https://192.168.1.1:8443.",
"clusterHint": "Besteht die Firewall aus einem HA-Paar? Trage beide Knoten als eigene Firewall ein und gib bei beiden denselben Cluster-Namen an.",
"connect": "Verbinden",
"connectNote": "OPNexus prüft sofort, ob die Firewall antwortet."
},
"done": {
"title": "Fertig",
"hostsOnline": "{online} von {total} Firewalls erreichbar",
"noHosts": "Noch keine Firewall verbunden",
"twofaOn": "Zwei-Faktor aktiv",
"twofaOff": "Zwei-Faktor nicht aktiv",
"nextTitle": "Das kannst du als Nächstes tun",
"next": {
"rules": {
"title": "Regeln anlegen",
"text": "Neue Regeln rollst du mit Bestätigung aus: Bestätigst du nicht innerhalb von {seconds} Sekunden, rollt OPNexus automatisch zurück."
},
"notify": {
"title": "Benachrichtigungen",
"text": "Per Webhook oder E-Mail melden lassen, wenn eine Firewall ausfällt oder ein Zertifikat abläuft."
},
"update": {
"title": "Updates",
"text": "Hinweis auf neue OPNexus-Versionen und Updates per Klick einrichten."
}
},
"backupBefore": "Eine Sicherung der OPNexus-Datenbank erstellst du auf dem Server mit",
"backupHelp": "Sichert die Datenbank (Regeln, Hosts, Verlauf). API-Secrets und Schlüssel liegen in eigenen Docker-Volumes und sind nicht im Dump. Details im Handbuch.",
"docs": "Dokumentation zum Kommandozeilen-Werkzeug"
}
}
}