Files
RouterOS/RouterOSAssistant/Core/Localization/L10n.swift
T
KayandClaude Sonnet 5 9de9311bee M26+M27: Seriennummer bei Bekannte Router, Schlüsselbund-Trennung, terse-Fallback verallgemeinert
M26: SavedRouter bekommt ein optionales serialNumber-Feld. Zwei
physisch verschiedene Router mit identischem Host+Benutzername
(Werks-Adresse) blieben bisher ein gemeinsamer "Bekannte Router"-
Eintrag; recordSuccessfulConnection matcht jetzt zusätzlich nach
Seriennummer, mit sauberer Migration bestehender Einträge ohne
Seriennummer. Drei neue Tests.

M27, beim Live-Test von M26 gefunden:
- Passwort-Anzeige-Button (Augen-Symbol) im Verbinden-Tab
- Bug 35: KeychainService speicherte Passwörter nur nach
  "username@host" — beide Router teilten sich denselben
  Schlüsselbund-Eintrag trotz getrennter SavedRouter-Einträge. Fix:
  optionaler serialNumber-Parameter qualifiziert den Account-Key,
  mit Fallback auf den alten Key für bereits gespeicherte Passwörter.
- Bug 36: neuer Router zeigte keine Routerboard-Infos/Seriennummer —
  derselbe Root Cause wie der zuvor gemeldete "Jetzt prüfen"-Fehler:
  /system routerboard und /system package update scheitern auf diesem
  Router mit "expected end of command" statt dem bisher einzig
  abgefangenen "bad parameter terse". SSHTransport.fetchMenuItems
  erkennt jetzt beide Formulierungen.

Alles live bestätigt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 14:02:27 +02:00

938 lines
83 KiB
Swift
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.
import Foundation
/// Manual in-app language switch. Not built on `.environment(\.locale)` + a String Catalog:
/// that combination only redirects Calendar/DateFormatter-style locale-aware APIs — confirmed
/// live that toggling the environment override had no effect on `Text(LocalizedStringKey)`
/// content, which resolves against the bundle's own preferred-localizations negotiation fixed
/// at launch, not a runtime environment value. This does the substitution directly: `L10n.t`
/// looks up an English string in a plain dictionary keyed by the German source text, returning
/// the German text itself when untranslated or when `language == "de"`. Every call site passes
/// its own observed `appLanguage` so SwiftUI's diffing sees the dependency and re-renders on toggle.
enum L10n {
static func t(_ german: String, _ language: String) -> String {
guard language == "en" else { return german }
return translations[german] ?? german
}
private static let translations: [String: String] = [
"Verbinden": "Connect",
"Einrichten": "Setup",
"Übersicht": "Topology",
"LAN-Scanner": "LAN Scanner",
"Experte": "Expert",
"Sicherungen": "Backups",
"Firewall: Filter-Regeln": "Firewall: Filter Rules",
"Firewall: NAT (Portweiterleitung etc.)": "Firewall: NAT (port forwarding etc.)",
"Firewall: Mangle (Markierung/QoS-Vorbereitung)": "Firewall: Mangle (marking/QoS prep)",
"Firewall: Raw (vor Connection-Tracking)": "Firewall: Raw (before connection tracking)",
"Firewall: Adress-Listen": "Firewall: Address Lists",
"Interfaces (Bridge, VLAN, VPN-Tunnel...)": "Interfaces (bridge, VLAN, VPN tunnel...)",
"IP-Adressierung & Dienste": "IP Addressing & Services",
"Routing": "Routing",
"VPN-Server/Clients": "VPN Servers/Clients",
"WLAN / CAPsMAN": "Wi-Fi / CAPsMAN",
"Queues / Bandbreiten-Steuerung": "Queues / Bandwidth Control",
"System": "System",
"Werkzeuge & Überwachung": "Tools & Monitoring",
"Nicht verbunden": "Not connected",
"Verbinde dich zuerst im Tab \"Verbinden\" mit deinem Router.": "Connect to your router first in the \"Connect\" tab.",
"Eigener Menüpfad": "Custom Menu Path",
"Jeder RouterOS-Menüpfad ist erreichbar, auch wenn er oben nicht gelistet ist — die Felder erscheinen dann generisch (Schlüssel/Wert), ohne kuratierte Erklärung.":
"Any RouterOS menu path is reachable, even if it's not listed above — fields then appear generically (key/value), without a curated explanation.",
"Menüpfad, z.B. /ip firewall filter": "Menu path, e.g. /ip firewall filter",
"Der RouterOS-CLI-Pfad, z.B. \"/interface wireguard\" oder \"/routing ospf instance\".":
"The RouterOS CLI path, e.g. \"/interface wireguard\" or \"/routing ospf instance\".",
"REST-Pfad, z.B. ip/firewall/filter": "REST path, e.g. ip/firewall/filter",
"Derselbe Pfad in REST-API-Schreibweise: führende \"/\" weg, Leerzeichen zu \"/\".":
"The same path in REST API notation: drop the leading \"/\", turn spaces into \"/\".",
"Öffnen": "Open",
"Kein Menü ausgewählt": "No menu selected",
"Wähle links einen RouterOS-Bereich aus.": "Select a RouterOS area on the left.",
"Eintrag löschen": "Delete entry",
"Einstellungen": "Settings",
"Einträge": "Entries",
"Neu hinzufügen": "Add new",
"Eintrag wirklich löschen?": "Really delete this entry?",
"Löschen": "Delete",
"Abbrechen": "Cancel",
"Weitere Parameter (frei)": "Additional Parameters (free-form)",
"Für alles, was oben nicht als eigenes Feld aufgeführt ist — RouterOS-Parametername genau wie in der Dokumentation.":
"For anything not listed as its own field above — use the exact RouterOS parameter name as in the documentation.",
"Parameter": "Parameter",
"Wert": "Value",
"Parameter hinzufügen": "Add parameter",
"Wird ausgeführt": "About to run",
"Anlegen": "Create",
"Speichern": "Save",
"Jetzt am Router anwenden?": "Apply on the router now?",
"Keine Einträge unter": "No entries under",
// MARK: - Firewall family (menu category detail: displayName, explanation, warning, field labels/help)
"Filter-Regeln": "Filter Rules",
"Entscheidet, ob Pakete durchgelassen (accept), verworfen (drop/reject) oder weiter geprüft werden.":
"Decides whether packets are let through (accept), dropped (drop/reject), or checked further.",
"input = Zugriffe auf den Router selbst, forward = Verkehr, der durch den Router hindurchgeht (z.B. LAN↔Internet oder zwischen zwei Netzen), output = vom Router ausgehender Verkehr. Regeln werden von oben nach unten geprüft; die erste passende Regel entscheidet.":
"input = access to the router itself, forward = traffic passing through the router (e.g. LAN↔internet or between two networks), output = traffic leaving the router. Rules are checked top to bottom; the first match decides.",
"Reihenfolge zählt. Neue Regeln landen am Ende der Liste — eine bereits vorhandene, weiter oben stehende Regel kann eine neue Regel unerreichbar machen. Position danach mit \"/ip firewall filter print\" kontrollieren, notfalls mit \"move\" verschieben.":
"Order matters. New rules land at the end of the list — an existing rule higher up can make a new rule unreachable. Check the position afterwards with \"/ip firewall filter print\", and use \"move\" if needed.",
"Chain": "Chain",
"input = an den Router, forward = durch den Router, output = vom Router aus. Eigene Chains (Sprungziele über \"jump\") sind ebenfalls möglich. Beispiel: forward":
"input = to the router, forward = through the router, output = from the router. Custom chains (jump targets via \"jump\") are also possible. Example: forward",
"Aktion": "Action",
"Was mit passenden Paketen geschieht. reject schickt zusätzlich eine Fehlermeldung zurück, drop verwirft stillschweigend.":
"What happens to matching packets. reject also sends back an error message, drop discards silently.",
"Quell-Adresse": "Source Address",
"Einzel-IP oder Netz mit Präfix, z.B. 192.168.88.5 oder 192.168.88.0/24. Leer = beliebig.":
"Single IP or network with prefix, e.g. 192.168.88.5 or 192.168.88.0/24. Empty = any.",
"Ziel-Adresse": "Destination Address",
"Quelle in Adress-Liste": "Source in Address List",
"Nur Pakete, deren Absender in dieser zuvor angelegten Adress-Liste steht.":
"Only packets whose sender is in this previously created address list.",
"Ziel in Adress-Liste": "Destination in Address List",
"Nur Pakete, deren Ziel in dieser zuvor angelegten Adress-Liste steht.":
"Only packets whose destination is in this previously created address list.",
"Eingangs-Interface": "Incoming Interface",
"Nur Pakete, die über dieses Interface hereinkommen, z.B. ether1 oder bridge.":
"Only packets arriving on this interface, e.g. ether1 or bridge.",
"Ausgangs-Interface": "Outgoing Interface",
"Nur Pakete, die über dieses Interface hinausgehen, z.B. ether1 oder bridge.":
"Only packets leaving via this interface, e.g. ether1 or bridge.",
"Protokoll": "Protocol",
"IP-Protokoll. Leer = alle.": "IP protocol. Empty = all.",
"Ziel-Port(s)": "Destination Port(s)",
"Nur bei tcp/udp sinnvoll. Einzelner Port (z.B. 80) oder Bereich (z.B. 8000-8100).":
"Only meaningful for tcp/udp. A single port (e.g. 80) or a range (e.g. 8000-8100).",
"Verbindungsstatus": "Connection State",
"Status laut Connection-Tracking. \"established,related\" ist die übliche \"schon erlaubte Verbindung\"-Regel.":
"Status according to connection tracking. \"established,related\" is the usual \"already-allowed connection\" rule.",
"Layer7-Protokoll": "Layer 7 Protocol",
"Name eines vorher unter \"/ip firewall layer7-protocol\" angelegten Musters (z.B. Erkennung bestimmter Apps). Kostet spürbar CPU, mit Bedacht einsetzen.":
"Name of a pattern previously created under \"/ip firewall layer7-protocol\" (e.g. detecting specific apps). Noticeably CPU-intensive, use with care.",
"Kommentar": "Comment",
"Nur zur eigenen Wiedererkennung, ohne technische Wirkung.": "For your own reference only, no technical effect.",
"Deaktiviert": "Disabled",
"Regel inaktiv schalten, ohne sie zu löschen.": "Turn the rule off without deleting it.",
"NAT-Regeln": "NAT Rules",
"Übersetzt Adressen — Internetfreigabe (srcnat/masquerade) und Portweiterleitung (dstnat).":
"Translates addresses — internet sharing (srcnat/masquerade) and port forwarding (dstnat).",
"srcnat ändert die Absenderadresse ausgehender Pakete (z.B. private LAN-IP → öffentliche WAN-IP). dstnat ändert die Zieladresse eingehender Pakete (z.B. Anfrage an die WAN-IP auf Port 80 → internen Server auf 192.168.88.10:80 umleiten).":
"srcnat changes the sender address of outgoing packets (e.g. private LAN IP → public WAN IP). dstnat changes the destination address of incoming packets (e.g. a request to the WAN IP on port 80 → redirected to an internal server at 192.168.88.10:80).",
"Eine dstnat-Regel (Portweiterleitung) macht ein internes Gerät direkt aus dem Internet erreichbar — nur für Dienste einrichten, die das wirklich sein sollen, und danach den entsprechenden Port in der Filter-Tabelle nicht blockieren.":
"A dstnat rule (port forwarding) makes an internal device directly reachable from the internet — only set this up for services that should really be exposed, and don't block the corresponding port in the filter table afterwards.",
"srcnat = Absenderadresse ändern (Internetfreigabe). dstnat = Zieladresse ändern (Portweiterleitung).":
"srcnat = change sender address (internet sharing). dstnat = change destination address (port forwarding).",
"masquerade = automatisches NAT über die aktuelle WAN-IP (empfohlen bei wechselnder IP). src-nat = feste NAT-Adresse. dst-nat = Ziel umschreiben (Portweiterleitung). redirect = auf den Router selbst umlenken.":
"masquerade = automatic NAT via the current WAN IP (recommended for a changing IP). src-nat = fixed NAT address. dst-nat = rewrite the destination (port forwarding). redirect = redirect to the router itself.",
"Einzel-IP oder Netz mit Präfix, z.B. 192.168.88.0/24. Leer = beliebig.":
"Single IP or network with prefix, e.g. 192.168.88.0/24. Empty = any.",
"Bei dstnat meist der WAN-Port (woher die Anfrage aus dem Internet kommt), z.B. ether1.":
"For dstnat, usually the WAN port (where the request from the internet comes in), e.g. ether1.",
"Bei srcnat/masquerade meist der WAN-Port, z.B. ether1.": "For srcnat/masquerade, usually the WAN port, e.g. ether1.",
"Nötig, damit Ports geprüft werden können.": "Needed so ports can be checked.",
"Ziel-Port der Anfrage": "Request's Destination Port",
"Der Port, auf den die Anfrage von außen ankommt, z.B. 8080.": "The port the request from outside arrives on, e.g. 8080.",
"Weiterleiten an (interne IP)": "Forward to (Internal IP)",
"Nur bei dst-nat: die interne IP-Adresse, an die weitergeleitet wird, z.B. 192.168.88.10.":
"Only for dst-nat: the internal IP address to forward to, e.g. 192.168.88.10.",
"Weiterleiten an (interner Port)": "Forward to (Internal Port)",
"Nur bei dst-nat: interner Port, falls abweichend vom Ziel-Port (z.B. extern 8080 → intern 80).":
"Only for dst-nat: internal port, if different from the destination port (e.g. external 8080 → internal 80).",
"Nur zur Wiedererkennung.": "For reference only.",
"Mangle-Regeln": "Mangle Rules",
"Markiert Verbindungen/Pakete zur späteren Weiterverarbeitung (z.B. durch Queues).":
"Marks connections/packets for later processing (e.g. by queues).",
"Mangle selbst verändert nicht, wie ein Paket behandelt wird — es klebt nur eine Markierung darauf. Erst eine andere Regel (typischerweise eine Queue oder eine Routing-Regel), die genau diese Markierung als Bedingung abfragt, wird dadurch wirksam.":
"Mangle itself doesn't change how a packet is treated — it just sticks a mark on it. Only another rule (typically a queue or a routing rule) that checks for exactly this mark actually acts on it.",
"Eine Markierung ohne etwas, das sie auswertet (z.B. keine passende Queue), hat keinerlei sichtbaren Effekt — das ist der häufigste Verwirrungspunkt bei Mangle.":
"A mark with nothing evaluating it (e.g. no matching queue) has no visible effect at all — this is the most common source of confusion with Mangle.",
"Verarbeitungspunkt im Router-internen Paketfluss.": "Processing point in the router's internal packet flow.",
"mark-connection markiert die ganze Verbindung (wirkt auf alle ihre Pakete), mark-packet nur einzelne Pakete.":
"mark-connection marks the whole connection (affects all its packets), mark-packet marks only individual packets.",
"Name der Verbindungsmarkierung": "Connection Mark Name",
"Frei wählbarer Name, den z.B. eine Queue später wiedererkennt.": "A name of your choosing that, e.g., a queue later recognizes.",
"Name der Paketmarkierung": "Packet Mark Name",
"Frei wählbarer Name für die Paketmarkierung.": "A name of your choosing for the packet mark.",
"Weitere Mangle-Regeln noch prüfen": "Still Check Further Mangle Rules",
"Ja (Standard) lässt nachfolgende Mangle-Regeln diese Verbindung noch zusätzlich prüfen.":
"Yes (default) lets subsequent Mangle rules also check this connection.",
"Raw-Regeln": "Raw Rules",
"Läuft vor jeder Connection-Tracking-Verarbeitung — meist zur Entlastung oder für DDoS-Grobfilter.":
"Runs before any connection-tracking processing — mostly for load relief or coarse DDoS filtering.",
"Regeln hier greifen, bevor RouterOS eine Verbindung überhaupt \"kennt\" (Connection-Tracking). Damit lässt sich z.B. bekannt uninteressanter Verkehr sehr günstig verwerfen, oder gezielt vom Tracking ausnehmen (notrack).":
"Rules here apply before RouterOS even \"knows\" about a connection (connection tracking). This lets you, e.g., very cheaply drop known-uninteresting traffic, or deliberately exempt it from tracking (notrack).",
"notrack nimmt den betroffenen Verkehr aus dem Connection-Tracking heraus — danach greifen dafür keine Filter-/NAT-Regeln mehr, die sich auf connection-state oder NAT verlassen. Nur gezielt einsetzen.":
"notrack removes the affected traffic from connection tracking — after that, no filter/NAT rules relying on connection-state or NAT apply to it anymore. Use only deliberately.",
"prerouting = eingehende Pakete, bevor der Router sie verarbeitet. output = vom Router selbst erzeugte Pakete.":
"prerouting = incoming packets, before the router processes them. output = packets generated by the router itself.",
"notrack = von der Connection-Tracking-Verfolgung ausnehmen (siehe Warnhinweis oben).":
"notrack = exempt from connection tracking (see warning above).",
"Nur zur eigenen Wiedererkennung.": "For your own reference only.",
"Adress-Listen": "Address Lists",
"Benannte Gruppen von IP-Adressen/Netzen, die Filter/NAT/Mangle-Regeln als Bedingung referenzieren können.":
"Named groups of IP addresses/networks that filter/NAT/Mangle rules can reference as a condition.",
"Statt in jeder Regel einzelne IPs aufzuzählen, legst du hier eine benannte Liste an (z.B. \"gesperrt\" oder \"vertraut\") und verweist in Filter-/NAT-/Mangle-Regeln per \"src-address-list\"/\"dst-address-list\" darauf. Einträge können dauerhaft oder mit Ablaufzeit (timeout) sein.":
"Instead of listing individual IPs in every rule, create a named list here (e.g. \"blocked\" or \"trusted\") and reference it in filter/NAT/Mangle rules via \"src-address-list\"/\"dst-address-list\". Entries can be permanent or have an expiry (timeout).",
"Listen-Name": "List Name",
"Frei wählbarer Name, wird in anderen Regeln referenziert, z.B. gesperrt.":
"A name of your choosing, referenced in other rules, e.g. blocked.",
"Adresse": "Address",
"Einzel-IP oder Netz mit Präfix, z.B. 192.168.88.5 oder 10.0.0.0/24.":
"Single IP or network with prefix, e.g. 192.168.88.5 or 10.0.0.0/24.",
"Ablaufzeit": "Expiry",
"Optional. Nach dieser Zeit wird der Eintrag automatisch entfernt. Alles auf 0 lassen = bleibt dauerhaft, bis manuell entfernt.":
"Optional. The entry is removed automatically after this time. Leave everything at 0 = stays permanently until removed manually.",
// MARK: - Interfaces family
"Alle Interfaces (generisch)": "All Interfaces (generic)",
"RouterOS listet hier alle Interfaces zusammen. Typ-spezifische Felder (z.B. die VLAN-ID eines VLAN-Interfaces) liegen in den jeweils eigenen Menüs (z.B. \"VLAN-Interfaces\") — hier nur das, was für jeden Interface-Typ gleich funktioniert.":
"RouterOS lists every interface here together. Type-specific fields (e.g. a VLAN interface's VLAN ID) live in their own menus (e.g. \"VLAN Interfaces\") — this only covers what works the same for every interface type.",
"RouterOS liefert hier zusätzlich einen \"default-name\" (Werksname des Ports) mit — der erscheint unten bei \"Weitere Parameter\", ist aber nicht änderbar (\"bad parameter default-name\", live bestätigt). Zum Umbenennen nur das Feld \"Name\" oben verwenden.":
"RouterOS also reports a \"default-name\" here (the port's factory name) — it shows up below under \"Additional Parameters\", but can't be changed (\"bad parameter default-name\", confirmed live). To rename, only use the \"Name\" field above.",
"Der aktuelle Name dieses Interfaces, z.B. ether5 oder vlan20 — nicht zu verwechseln mit \"default-name\" (Werksname, weiter unten bei \"Weitere Parameter\", nicht änderbar).":
"This interface's current name, e.g. ether5 or vlan20 — not to be confused with \"default-name\" (the factory name, further below under \"Additional Parameters\", not changeable).",
"Interface inaktiv schalten, ohne es zu löschen.": "Turn the interface off without deleting it.",
"Geräte an gebrückten Ports verhalten sich, als hingen sie am selben Netzwerk-Kabel. Eine IP-Adresse wird meist auf die Bridge selbst gelegt, nicht auf die einzelnen Ports.":
"Devices on bridged ports behave as if they hung off the same network cable. An IP address usually goes on the bridge itself, not on the individual ports.",
"Frei wählbar, z.B. bridge-lan.": "Your choice, e.g. bridge-lan.",
"VLAN-Filterung (802.1Q)": "VLAN Filtering (802.1Q)",
"Aktiviert echte VLAN-Trennung über diese Bridge — nötig, wenn mehrere VLANs über dieselben Bridge-Ports laufen sollen.":
"Enables real VLAN separation across this bridge — needed when several VLANs share the same bridge ports.",
"Bridge inaktiv schalten, ohne sie zu löschen.": "Turn the bridge off without deleting it.",
"Bridge-Ports": "Bridge Ports",
"Erst danach ist der Port Teil des Bridge-Netzwerks.": "Only after this is the port part of the bridge network.",
"Bridge": "Bridge",
"Name der Bridge, z.B. bridge-lan.": "The bridge's name, e.g. bridge-lan.",
"Physischer Port": "Physical Port",
"Der Port, der der Bridge hinzugefügt wird, z.B. ether2.": "The port being added to the bridge, e.g. ether2.",
"Port-VLAN-ID (PVID)": "Port VLAN ID (PVID)",
"Nur mit aktivierter VLAN-Filterung relevant: VLAN, dem untagged ankommender Verkehr an diesem Port zugeordnet wird, z.B. 20.":
"Only relevant with VLAN filtering enabled: the VLAN that untagged incoming traffic on this port is assigned to, e.g. 20.",
"VLAN-Interfaces": "VLAN Interfaces",
"Ein eigenes logisches Netzwerk auf demselben Kabel, unterschieden durch eine VLAN-Kennung im Ethernet-Rahmen.":
"Its own logical network on the same cable, distinguished by a VLAN tag in the Ethernet frame.",
"Frei wählbar, z.B. vlan20-gaeste.": "Your choice, e.g. vlan20-guests.",
"VLAN-ID": "VLAN ID",
"Eindeutige Kennung, 24094, z.B. 20.": "Unique identifier, 24094, e.g. 20.",
"Basis-Interface": "Base Interface",
"Physischer Port oder Bridge, auf dem dieses VLAN aufsetzt, z.B. bridge.":
"The physical port or bridge this VLAN sits on top of, e.g. bridge.",
"VLAN-Interface inaktiv schalten, ohne es zu löschen.": "Turn the VLAN interface off without deleting it.",
"WireGuard-Interfaces": "WireGuard Interfaces",
"Ein WireGuard-Interface allein stellt noch keine Verbindung her — dazu gehören Gegenstellen (siehe \"WireGuard-Peers\") mit öffentlichem Schlüssel und erlaubten Adressen.":
"A WireGuard interface alone doesn't establish a connection yet — that needs peers (see \"WireGuard Peers\") with a public key and allowed addresses.",
"Erst hier das Interface anlegen (mit Listen-Port), danach unter WireGuard-Peers die Gegenstellen eintragen. Der private Schlüssel wird beim Anlegen automatisch erzeugt, falls nicht angegeben.":
"Create the interface here first (with a listen port), then add the peers under WireGuard Peers. The private key is generated automatically on creation if not specified.",
"Frei wählbar, z.B. wg-heim.": "Your choice, e.g. wg-home.",
"Listen-Port (UDP)": "Listen Port (UDP)",
"Port, auf dem dieser Tunnel auf eingehende Verbindungen lauscht, z.B. 51820.":
"The port this tunnel listens for incoming connections on, e.g. 51820.",
"Privater Schlüssel": "Private Key",
"Geheim halten. Leer lassen, damit RouterOS automatisch einen erzeugt.": "Keep secret. Leave empty to have RouterOS generate one automatically.",
"WireGuard-Peers": "WireGuard Peers",
"Jede Gegenstelle braucht ihren eigenen öffentlichen Schlüssel und eine Angabe, welche Adressen über sie geroutet werden.":
"Each peer needs its own public key and a statement of which addresses are routed through it.",
"WireGuard-Interface": "WireGuard Interface",
"Name des zuvor angelegten WireGuard-Interfaces.": "Name of the previously created WireGuard interface.",
"Öffentlicher Schlüssel der Gegenstelle": "Peer's Public Key",
"Vom Gerät der Gegenstelle kopieren (z.B. per \"wg show <interface> public-key\").":
"Copy from the peer's device (e.g. via \"wg show <interface> public-key\").",
"Erlaubte Adressen": "Allowed Addresses",
"Welche IP-Adressen/Netze über diesen Peer laufen dürfen, mit Präfix, z.B. 10.10.10.2/32.":
"Which IP addresses/networks are allowed to go through this peer, with prefix, e.g. 10.10.10.2/32.",
"Feste Adresse der Gegenstelle": "Peer's Fixed Address",
"Nur nötig, wenn diese Gegenstelle selbst erreichbar sein muss (Site-to-Site), z.B. eine feste öffentliche IP oder ein DNS-Name. Bei Roadwarrior-Clients, die sich selbst melden, leer lassen.":
"Only needed when this peer itself must be reachable (site-to-site), e.g. a fixed public IP or a DNS name. Leave empty for roadwarrior clients that connect in on their own.",
"Port der Gegenstelle": "Peer's Port",
"Meist derselbe Port wie der Listen-Port der Gegenstelle, z.B. 51820.":
"Usually the same as the peer's listen port, e.g. 51820.",
"Keepalive": "Keepalive",
"Hält die Verbindung durch NAT/Firewalls am Leben. Wichtig bei Clients hinter NAT.":
"Keeps the connection alive through NAT/firewalls. Important for clients behind NAT.",
"PPPoE-Client": "PPPoE Client",
"Ersetzt eine feste/DHCP-WAN-Adresse durch eine PPPoE-Einwahl beim Provider.":
"Replaces a static/DHCP WAN address with a PPPoE dial-in to the provider.",
"Frei wählbar, z.B. pppoe-wan.": "Your choice, e.g. pppoe-wan.",
"Der Port, über den die Einwahl läuft, meist der WAN-Port, z.B. ether1.":
"The port the dial-in runs over, usually the WAN port, e.g. ether1.",
"Benutzername": "Username",
"Zugangsdaten des Providers.": "Credentials from the provider.",
"Einwahl inaktiv schalten, ohne sie zu löschen.": "Turn the dial-in off without deleting it.",
"Bonding": "Bonding",
"Frei wählbar, z.B. bond1.": "Your choice, e.g. bond1.",
"Gebündelte Ports": "Bundled Ports",
"Kommagetrennte Liste physischer Ports, z.B. ether2,ether3.": "Comma-separated list of physical ports, e.g. ether2,ether3.",
"Modus": "Mode",
"802.3ad (LACP) braucht einen kompatiblen, entsprechend konfigurierten Switch.":
"802.3ad (LACP) needs a compatible, correspondingly configured switch.",
// MARK: - IP addressing & services family
"IP-Adressen": "IP Addresses",
"Jede IP-Adresse hängt an genau einem Interface (physischer Port, Bridge oder VLAN).":
"Each IP address is attached to exactly one interface (physical port, bridge, or VLAN).",
"IP-Adresse mit Netzmaske als Präfix (Router-Adresse in diesem Netz), z.B. 192.168.88.1/24 oder 10.10.10.1/24. Das /24 legt fest, wie viele Geräte in dieses Netz passen (/24 = bis zu 254).":
"IP address with subnet mask as prefix (the router's address on this network), e.g. 192.168.88.1/24 or 10.10.10.1/24. The /24 determines how many devices fit on this network (/24 = up to 254).",
"Interface, dem diese Adresse zugewiesen wird, z.B. bridge oder ether4.":
"The interface this address is assigned to, e.g. bridge or ether4.",
"Adresse inaktiv schalten, ohne sie zu löschen.": "Turn the address off without deleting it.",
"Adress-Pools": "Address Pools",
"Frei wählbar, z.B. dhcp_pool_lan.": "Your choice, e.g. dhcp_pool_lan.",
"Bereich(e)": "Range(s)",
"Von-bis-Adresse ohne Präfix, z.B. 192.168.88.10-192.168.88.254. Mehrere Bereiche kommagetrennt.":
"From-to address without a prefix, e.g. 192.168.88.10-192.168.88.254. Multiple ranges comma-separated.",
"DHCP-Server": "DHCP Server",
"Für die üblichen Fälle deckt das bereits der Einrichten-Assistent (LAN-/VLAN-Schritt) ab — hier direkter Zugriff für Sonderfälle.":
"The Setup wizard (LAN/VLAN step) already covers the usual cases — this is direct access for special cases.",
"Frei wählbar, z.B. dhcp_lan.": "Your choice, e.g. dhcp_lan.",
"Netzwerk, in dem dieser Server Adressen vergibt, z.B. bridge.": "The network this server hands out addresses on, e.g. bridge.",
"Adress-Pool": "Address Pool",
"Name eines zuvor angelegten Adress-Pools.": "Name of a previously created address pool.",
"Lease-Zeit": "Lease Time",
"Wie lange ein Gerät seine Adresse behält, bevor sie erneuert werden muss, z.B. 1d oder 12h.":
"How long a device keeps its address before it needs renewing, e.g. 1d or 12h.",
"DHCP-Server inaktiv schalten, ohne ihn zu löschen.": "Turn the DHCP server off without deleting it.",
"DHCP-Netzwerke": "DHCP Networks",
"Getrennt vom DHCP-Server selbst, weil dieselben Netzwerk-Optionen für mehrere DHCP-Server gelten können.":
"Kept separate from the DHCP server itself because the same network options can apply to several DHCP servers.",
"Netz": "Network",
"Für dieses Netz gelten die folgenden Optionen — die Netzadresse mit Präfix, z.B. 192.168.88.0/24.":
"The following options apply to this network — the network address with prefix, e.g. 192.168.88.0/24.",
"Gateway": "Gateway",
"In der Regel die Router-Adresse in diesem Netz, ohne Präfix, z.B. 192.168.88.1.":
"Usually the router's address on this network, without a prefix, e.g. 192.168.88.1.",
"DNS-Server": "DNS Server",
"Meist der Router selbst, z.B. 192.168.88.1. Mehrere Server kommagetrennt möglich.":
"Usually the router itself, e.g. 192.168.88.1. Multiple servers can be comma-separated.",
"DHCP-Client (WAN)": "DHCP Client (WAN)",
"Bezieht automatisch eine IP-Adresse vom Internetanbieter.": "Automatically obtains an IP address from the internet provider.",
"Meist der WAN-Port, z.B. ether1.": "Usually the WAN port, e.g. ether1.",
"Standardroute übernehmen": "Adopt Default Route",
"Übernimmt die vom Provider mitgeteilte Standardroute ins Internet.": "Adopts the default internet route announced by the provider.",
"DNS-Server übernehmen": "Adopt DNS Servers",
"Übernimmt die vom Provider mitgeteilten DNS-Server.": "Adopts the DNS servers announced by the provider.",
"DHCP-Client inaktiv schalten, ohne ihn zu löschen.": "Turn the DHCP client off without deleting it.",
"DNS-Einstellungen": "DNS Settings",
"Namensauflösung des Routers selbst (und optional als DNS-Server fürs LAN).":
"Name resolution for the router itself (and, optionally, as a DNS server for the LAN).",
"Ein oder mehrere Server, kommagetrennt, z.B. 1.1.1.1,8.8.8.8.": "One or more servers, comma-separated, e.g. 1.1.1.1,8.8.8.8.",
"Als DNS-Server fürs LAN erlauben": "Allow as DNS Server for the LAN",
"Lässt Geräte im LAN den Router selbst als DNS-Server nutzen. Ohne das schlagen DNS-Anfragen von Geräten an den Router fehl, selbst wenn sie ihn als DNS-Server eingetragen haben.":
"Lets devices on the LAN use the router itself as a DNS server. Without this, DNS requests from devices to the router fail even if they have it set as their DNS server.",
"Verwaltungsdienste": "Management Services",
"Jeder aktive Dienst ist ein potenzieller Angriffspunkt aus dem jeweils erreichbaren Netz — nicht benötigte Dienste deaktivieren.":
"Every active service is a potential attack surface from whichever network can reach it — disable services you don't need.",
"Den gerade genutzten Zugriffsweg hier abzuschalten oder umzuportieren kann die eigene Verbindung sofort kappen — Vorsicht bei www-ssl (REST-API dieser App) und ssh.":
"Disabling or re-porting the access path you're currently using can cut your own connection immediately — be careful with www-ssl (this app's REST API) and ssh.",
"Dienst": "Service",
"Welcher Verwaltungsdienst geändert wird.": "Which management service is being changed.",
"Auf welchem Port der Dienst lauscht, z.B. 22 für ssh.": "The port the service listens on, e.g. 22 for ssh.",
"Erlaubt von": "Allowed From",
"Optional: nur von dieser Adresse/diesem Netz aus erreichbar, mit Präfix, z.B. 192.168.88.0/24.":
"Optional: only reachable from this address/network, with prefix, e.g. 192.168.88.0/24.",
"Dienst inaktiv schalten, ohne den Eintrag zu löschen.": "Turn the service off without deleting the entry.",
"Hotspot": "Hotspot",
"Login-Portal für Gäste-WLAN/-LAN mit Umleitung auf eine Anmeldeseite.":
"Login portal for guest Wi-Fi/LAN with a redirect to a sign-in page.",
"Besteht aus mehreren zusammenhängenden Teilen (Server, Server-Profil, Benutzer-Profil, Benutzer) — hier generischer Zugriff auf \"/ip hotspot\" selbst, verwandte Teile über \"Eigener Menüpfad\" (z.B. \"/ip hotspot user\").":
"Made up of several related parts (server, server profile, user profile, users) — this is generic access to \"/ip hotspot\" itself; related parts via \"Custom Menu Path\" (e.g. \"/ip hotspot user\").",
"Statische Routen": "Static Routes",
"Für alles außer \"Standard-Internet über eine WAN-Schnittstelle\" (das übernimmt bereits die DHCP-Client-/PPPoE-Route automatisch).":
"For everything except \"default internet via a WAN interface\" (the DHCP client/PPPoE route already handles that automatically).",
"Zielnetz": "Destination Network",
"Netz mit Präfix, z.B. 10.0.0.0/24, oder 0.0.0.0/0 für eine Standardroute.":
"Network with prefix, e.g. 10.0.0.0/24, or 0.0.0.0/0 for a default route.",
"Nächster Hop — IP-Adresse ohne Präfix (z.B. 192.168.88.254) oder Name eines Interfaces (z.B. ether1).":
"Next hop — an IP address without a prefix (e.g. 192.168.88.254) or an interface name (e.g. ether1).",
"Distanz": "Distance",
"Priorität bei mehreren passenden Routen zum selben Ziel — kleinere Zahl wird bevorzugt, z.B. 1.":
"Priority when several routes match the same destination — a smaller number is preferred, e.g. 1.",
"Route inaktiv schalten, ohne sie zu löschen.": "Turn the route off without deleting it.",
// MARK: - Routing (dynamic protocols) family
"OSPF-Instanzen": "OSPF Instances",
"Nur relevant, wenn mehrere Router im selben Netz eigenständig Routen lernen sollen.":
"Only relevant when several routers on the same network should learn routes on their own.",
"Fehlkonfiguriertes OSPF kann Routen zu bestehenden Netzen überschreiben. Nur mit Netzwerkplan einsetzen.":
"Misconfigured OSPF can overwrite routes to existing networks. Only use it with a network plan.",
"BGP-Verbindungen": "BGP Connections",
"Für Privat-/Kleinnetz i.d.R. nicht nötig — relevant bei eigenem Provider-unabhängigem Adressraum (Multihoming).":
"Usually not needed for a home/small network — relevant with your own provider-independent address space (multihoming).",
// MARK: - VPN family
"PPP-Benutzer": "PPP Users",
"Jeder Benutzer kann optional einem Profil zugeordnet werden, das IP-Pool/DNS/Verschlüsselung vorgibt.":
"Each user can optionally be assigned a profile that dictates IP pool/DNS/encryption.",
"Frei wählbar, z.B. gast1.": "Your choice, e.g. guest1.",
"Ausreichend lang und zufällig wählen.": "Choose something sufficiently long and random.",
"Für welche Einwahl-Art dieser Benutzer gilt.": "Which dial-in type this user applies to.",
"Profil": "Profile",
"Name eines zuvor angelegten PPP-Profils.": "Name of a previously created PPP profile.",
"Lokale Adresse": "Local Address",
"IP-Adresse des Routers innerhalb dieser Verbindung, ohne Präfix, z.B. 10.10.10.1.":
"The router's IP address within this connection, without a prefix, e.g. 10.10.10.1.",
"Adresse für den Client": "Address for the Client",
"Feste IP für diesen Benutzer (z.B. 10.10.10.2), oder Name eines Adress-Pools.":
"A fixed IP for this user (e.g. 10.10.10.2), or the name of an address pool.",
"Benutzer inaktiv schalten, ohne ihn zu löschen.": "Turn the user off without deleting it.",
"PPP-Profile": "PPP Profiles",
"Frei wählbar, z.B. vpn-clients.": "Your choice, e.g. vpn-clients.",
"IP-Adresse des Routers, ohne Präfix, z.B. 10.10.10.1.": "The router's IP address, without a prefix, e.g. 10.10.10.1.",
"Adress-Pool für Clients": "Address Pool for Clients",
"DNS-Server für Clients": "DNS Servers for Clients",
"L2TP-VPN-Server": "L2TP VPN Server",
"Nimmt eingehende L2TP-VPN-Einwahlen entgegen.": "Accepts incoming L2TP VPN dial-ins.",
"Ein einzelnes Server-weites An/Aus mit gemeinsamen Verschlüsselungs-Einstellungen — Benutzer selbst kommen von \"PPP-Benutzer\".":
"A single server-wide on/off switch with shared encryption settings — users themselves come from \"PPP Users\".",
"OpenVPN-Server": "OpenVPN Server",
"Nimmt eingehende OpenVPN-Einwahlen entgegen.": "Accepts incoming OpenVPN dial-ins.",
"Braucht zusätzlich ein Zertifikat (\"/certificate\") — Benutzer selbst kommen von \"PPP-Benutzer\".":
"Additionally needs a certificate (\"/certificate\") — users themselves come from \"PPP Users\".",
// MARK: - Wireless family
"WLAN (Legacy-Treiber)": "Wi-Fi (Legacy Driver)",
"Diese Interfaces existieren bereits ab Werk (ein WLAN-Chip = ein Interface) — hier werden sie nur konfiguriert, nicht neu angelegt. Ein Sicherheitsprofil (siehe \"WLAN-Sicherheitsprofile\") muss vorher angelegt sein.":
"These interfaces already exist from the factory (one Wi-Fi chip = one interface) — they're only configured here, not newly created. A security profile (see \"Wi-Fi Security Profiles\") must be created first.",
"Netzwerkname (SSID)": "Network Name (SSID)",
"Der Name, den WLAN-Geräte in der Netzwerkliste sehen, z.B. MeinWLAN.":
"The name Wi-Fi devices see in the network list, e.g. MyWiFi.",
"Sicherheitsprofil": "Security Profile",
"Name eines zuvor unter \"WLAN-Sicherheitsprofile\" angelegten Profils.":
"Name of a profile previously created under \"Wi-Fi Security Profiles\".",
"ap-bridge = Access Point (Normalfall), station = als Client mit einem anderen AP verbinden.":
"ap-bridge = access point (normal case), station = connect as a client to another AP.",
"WLAN-Interface inaktiv schalten, ohne es zu löschen.": "Turn the Wi-Fi interface off without deleting it.",
"WLAN-Sicherheitsprofile": "Wi-Fi Security Profiles",
"Verschlüsselung/Passwort-Vorlagen für WLAN-Interfaces (Legacy-Treiber).":
"Encryption/password templates for Wi-Fi interfaces (legacy driver).",
"Ein Profil wird angelegt und dann bei einem WLAN-Interface als \"security-profile\" eingetragen.":
"A profile is created and then entered on a Wi-Fi interface as \"security-profile\".",
"Frei wählbar, z.B. heimnetz-wpa2.": "Your choice, e.g. homenet-wpa2.",
"dynamic-keys ist der übliche WPA/WPA2-Modus.": "dynamic-keys is the usual WPA/WPA2 mode.",
"Authentifizierung": "Authentication",
"wpa2-psk = WPA2 mit gemeinsamem Passwort (Heimnetz-Standard).": "wpa2-psk = WPA2 with a shared password (home network standard).",
"WPA2-Passwort": "WPA2 Password",
"Mindestens 8 Zeichen.": "At least 8 characters.",
"WLAN (neuer wifiwave2/802.11ax-Treiber)": "Wi-Fi (new wifiwave2/802.11ax driver)",
"Anderes, verschachteltes Konfigurationsschema als der Legacy-Treiber (Punkt-Notation wie \"security.passphrase\") — nicht mit \"/interface wireless\" mischen. Nur auf Geräten mit entsprechend neuem WLAN-Chip vorhanden.":
"A different, nested configuration schema from the legacy driver (dot notation like \"security.passphrase\") — don't mix with \"/interface wireless\". Only present on devices with a correspondingly new Wi-Fi chip.",
"Diese App hat den .set-Pfad für den neuen Treiber noch nie gegen echte Hardware getestet (siehe HANDOFF.md) — nach dem Anwenden unbedingt prüfen.":
"This app has never tested the .set path for the new driver against real hardware (see HANDOFF.md) — be sure to check after applying.",
"wpa2-psk,wpa3-psk deckt sowohl ältere als auch neuere Geräte ab.": "wpa2-psk,wpa3-psk covers both older and newer devices.",
"Ziel-Bridge": "Target Bridge",
"Name der Bridge, der dieses WLAN-Netz zugeordnet wird (üblicherweise dieselbe wie das kabelgebundene LAN), z.B. bridge.":
"Name of the bridge this Wi-Fi network is assigned to (usually the same as the wired LAN), e.g. bridge.",
"CAPsMAN-Zentrale": "CAPsMAN Controller",
"Zentrale Verwaltung mehrerer WLAN-Access-Points von einem Router aus.":
"Central management of several Wi-Fi access points from one router.",
"Nur relevant mit mehreren WLAN-Access-Points, die zentral verwaltet werden sollen — eigenes, umfangreiches Konfigurationsschema (Konfigurationen/Kanäle/Datapaths).":
"Only relevant with several Wi-Fi access points that should be managed centrally — its own extensive configuration schema (configurations/channels/datapaths).",
// MARK: - Queues family
"Einfache Bandbreiten-Begrenzung": "Simple Bandwidth Limit",
"Reicht für die meisten Heim-/Kleinnetz-Fälle ohne Mangle-Markierungen aus.":
"Sufficient for most home/small-network cases without Mangle marks.",
"Frei wählbar, z.B. limit-gast.": "Your choice, e.g. limit-guest.",
"Ziel": "Target",
"IP-Adresse oder Netz, das begrenzt wird, mit Präfix, z.B. 192.168.88.50/32.":
"IP address or network being limited, with prefix, e.g. 192.168.88.50/32.",
"Max. Bandbreite (Upload/Download)": "Max Bandwidth (Upload/Download)",
"Zwei Werte getrennt durch \"/\", z.B. 10M/50M (Upload/Download).": "Two values separated by \"/\", e.g. 10M/50M (upload/download).",
"Burst-Bandbreite": "Burst Bandwidth",
"Optional: kurzzeitig erlaubte höhere Bandbreite, z.B. 15M/60M.": "Optional: a higher bandwidth briefly allowed, e.g. 15M/60M.",
"Begrenzung inaktiv schalten, ohne sie zu löschen.": "Turn the limit off without deleting it.",
"Queue-Baum": "Queue Tree",
"Erweiterte, hierarchische Bandbreiten-Steuerung basierend auf Mangle-Markierungen.":
"Advanced, hierarchical bandwidth control based on Mangle marks.",
"Statt einer festen Adresse wirkt ein Queue-Baum-Eintrag auf Verkehr mit einer bestimmten Mangle-Markierung.":
"Instead of a fixed address, a queue tree entry acts on traffic carrying a specific Mangle mark.",
"Setzt eine passende Mangle-Regel voraus, die genau diese Markierung setzt (siehe Firewall: Mangle) — ohne die greift ein Queue-Baum-Eintrag ins Leere.":
"Requires a matching Mangle rule that sets exactly this mark (see Firewall: Mangle) — without it, a queue tree entry has no effect.",
"Frei wählbar, z.B. queue-gast.": "Your choice, e.g. queue-guest.",
"Übergeordnet": "Parent",
"Ein Interface (z.B. der WAN-Port, etwa ether1) oder der Name eines anderen Queue-Baum-Eintrags.":
"An interface (e.g. the WAN port, such as ether1) or the name of another queue tree entry.",
"Paket-/Verbindungsmarkierung": "Packet/Connection Mark",
"Name der Mangle-Markierung, auf die dieser Eintrag wirkt.": "Name of the Mangle mark this entry acts on.",
"Max. Bandbreite": "Max Bandwidth",
"Einzelwert, z.B. 20M.": "A single value, e.g. 20M.",
// MARK: - System family
"Router-Name": "Router Name",
"Frei wählbar, z.B. MeinRouter.": "Your choice, e.g. MyRouter.",
"Uhrzeit/Zeitzone": "Time/Time Zone",
"Zeitzone": "Time Zone",
"Z.B. Europe/Berlin.": "E.g. Europe/Berlin.",
"Zeitserver (NTP)": "Time Server (NTP)",
"Falsche Systemzeit kann Zertifikatsprüfungen (HTTPS/REST) und Log-Zeitstempel durcheinanderbringen.":
"Wrong system time can mess up certificate checks (HTTPS/REST) and log timestamps.",
"Aktiviert": "Enabled",
"Zeitsynchronisation ein-/ausschalten.": "Turn time synchronization on/off.",
"Zeitserver": "Time Servers",
"Ein oder mehrere Server, kommagetrennt, z.B. pool.ntp.org.": "One or more servers, comma-separated, e.g. pool.ntp.org.",
"Protokollierung": "Logging",
"Was der Router mitschreibt und wohin (Speicher, Datei, Remote-Syslog, E-Mail).":
"What the router logs and where to (memory, file, remote syslog, email).",
"Besteht aus \"rules\" (was protokolliert wird) und \"actions\" (wohin) — hier generischer Zugriff, verwandte Teile über \"Eigener Menüpfad\" (z.B. \"/system logging action\").":
"Made up of \"rules\" (what is logged) and \"actions\" (where to) — this is generic access; related parts via \"Custom Menu Path\" (e.g. \"/system logging action\").",
"Zeitplaner": "Scheduler",
"Führt ein hinterlegtes Skript zu festen Zeiten/Intervallen aus.": "Runs a stored script at fixed times/intervals.",
"Ein fehlerhaftes geplantes Skript kann unbeaufsichtigt wiederholt Änderungen vornehmen — vor dem Einplanen einmal manuell testen.":
"A faulty scheduled script can make repeated unattended changes — test it manually once before scheduling it.",
"Frei wählbar, z.B. taeglicher-neustart.": "Your choice, e.g. daily-reboot.",
"Startzeit": "Start Time",
"Z.B. 00:00:00 oder \"startup\".": "E.g. 00:00:00 or \"startup\".",
"Intervall": "Interval",
"Wie oft wiederholt wird. Alles auf 0 lassen = nur einmal zur Startzeit.":
"How often it repeats. Leave everything at 0 = only once, at the start time.",
"Auszuführendes Skript": "Script to Run",
"Name eines zuvor unter \"Skripte\" angelegten Skripts.": "Name of a script previously created under \"Scripts\".",
"Zeitplan inaktiv schalten, ohne ihn zu löschen.": "Turn the schedule off without deleting it.",
"Skripte": "Scripts",
"Gespeicherte RouterOS-Befehlsfolgen, die manuell oder per Scheduler ausgeführt werden.":
"Stored RouterOS command sequences, run manually or via the scheduler.",
"Skripte laufen mit den Rechten des Routers selbst — kein Unterschied zu manuell eingegebenen Befehlen.":
"Scripts run with the router's own privileges — no different from commands typed in manually.",
"Frei wählbar, z.B. backup-taeglich.": "Your choice, e.g. daily-backup.",
"Skript-Inhalt": "Script Content",
"RouterOS-Befehle, z.B. \":log info \\\"Test\\\"\".": "RouterOS commands, e.g. \":log info \\\"Test\\\"\".",
"Benutzerkonten": "User Accounts",
"Zugangskonten für den Router (Winbox/SSH/REST/Terminal).": "Access accounts for the router (Winbox/SSH/REST/terminal).",
"Das zum Verbinden genutzte eigene Konto hier nicht versehentlich löschen oder herabstufen.":
"Don't accidentally delete or downgrade the account you're currently connected with.",
"Frei wählbar, z.B. admin2.": "Your choice, e.g. admin2.",
"Rechte-Gruppe": "Permission Group",
"full = Vollzugriff, write = ohne Benutzerverwaltung, read = nur lesen.":
"full = full access, write = without user management, read = read-only.",
"Konto inaktiv schalten, ohne es zu löschen.": "Turn the account off without deleting it.",
// MARK: - Tools family
"Netwatch": "Netwatch",
"Überwacht laufend, ob eine Adresse erreichbar ist, und kann bei Statuswechsel ein Skript auslösen.":
"Continuously monitors whether an address is reachable, and can trigger a script on a status change.",
"Zu überwachende Adresse": "Address to Monitor",
"IP-Adresse oder Hostname, ohne Präfix, z.B. 192.168.88.1 oder 8.8.8.8.":
"IP address or hostname, without a prefix, e.g. 192.168.88.1 or 8.8.8.8.",
"Prüf-Intervall": "Check Interval",
"Wie oft die Erreichbarkeit geprüft wird.": "How often reachability is checked.",
"Skript bei Erreichbarkeit": "Script on Reachable",
"Name eines Skripts unter \"Skripte\".": "Name of a script under \"Scripts\".",
"Skript bei Nichterreichbarkeit": "Script on Unreachable",
"Überwachung inaktiv schalten, ohne sie zu löschen.": "Turn monitoring off without deleting it.",
"E-Mail-Versand": "Email Sending",
"Postausgangs-Server, den Scheduler/Netwatch/Skripte für Benachrichtigungen nutzen.":
"Outgoing mail server used by the scheduler/Netwatch/scripts for notifications.",
"Ein einzelner, geräteweiter Satz Einstellungen — kein Menü mit mehreren Einträgen.":
"A single, device-wide set of settings — not a menu with multiple entries.",
"Mailserver-Adresse": "Mail Server Address",
"Hostname oder IP-Adresse des Mailservers, z.B. smtp.gmail.com.": "Hostname or IP address of the mail server, e.g. smtp.gmail.com.",
"Port": "Port",
"Meist 587 (STARTTLS) oder 465 (SSL).": "Usually 587 (STARTTLS) or 465 (SSL).",
"Absenderadresse": "Sender Address",
"Z.B. router@example.com.": "E.g. router@example.com.",
"Zugangsdaten des Mailservers.": "Credentials for the mail server.",
"Passwort": "Password",
// MARK: - Connect tab (ConnectView.swift)
"Verbindung": "Connection",
"IP-Adresse oder Hostname": "IP Address or Hostname",
"Die Adresse deines Routers im Netzwerk. Werkseinstellung bei Mikrotik ist meist 192.168.88.1.":
"Your router's address on the network. MikroTik's factory default is usually 192.168.88.1.",
"Der Admin-Benutzername deines Routers. Werkseinstellung ist meist \"admin\".":
"Your router's admin username. The factory default is usually \"admin\".",
"Das Passwort für diesen Benutzer. Bei unverändertem Werkszustand oft leer.":
"The password for this user. Often empty in an unchanged factory state.",
"Passwort merken": "Remember Password",
"Passwort verbergen": "Hide Password",
"Passwort anzeigen": "Show Password",
"Speichert das Passwort verschlüsselt in der macOS-Schlüsselbundverwaltung, damit du es nicht jedes Mal neu eingeben musst.":
"Stores the password encrypted in macOS Keychain so you don't have to type it in every time.",
"Verbinde…": "Connecting…",
"Verbunden": "Connected",
"Trennen": "Disconnect",
"Beendet die Verbindung zum Router. Zugangsdaten bleiben erhalten (falls gemerkt).":
"Ends the connection to the router. Credentials are kept (if remembered).",
"Sichere…": "Backing up…",
"Jetzt sichern": "Back Up Now",
"Sichert die aktuelle Router-Konfiguration — sinnvoll direkt nach dem Verbinden, bevor du im Einrichten-Tab etwas änderst.":
"Backs up the current router configuration — useful right after connecting, before you change anything in the Setup tab.",
"Zuletzt gesichert:": "Last backed up:",
"Unbekanntes Zertifikat": "Unknown Certificate",
"Vertrauen und verbinden": "Trust and Connect",
"Der Router hat sich mit einem unbekannten Zertifikat gemeldet.": "The router presented an unknown certificate.",
"Fingerabdruck:": "Fingerprint:",
"Nur bestätigen, wenn dies dein eigenes Gerät im lokalen Netzwerk ist.":
"Only confirm if this is your own device on the local network.",
"Unbekannter SSH-Schlüssel": "Unknown SSH Key",
"Der Router hat sich mit einem unbekannten SSH-Schlüssel gemeldet.": "The router presented an unknown SSH key.",
"Nur bestätigen, wenn dies dein eigenes Gerät im lokalen Netzwerk ist. Falls du diesen Router schon einmal verbunden hattest und sich der Fingerabdruck geändert hat, könnte das auf ein manipuliertes Netzwerk hindeuten — im Zweifel nicht bestätigen.":
"Only confirm if this is your own device on the local network. If you've connected to this router before and the fingerprint has changed, that could indicate a tampered network — when in doubt, don't confirm.",
"Sicherung fehlgeschlagen": "Backup Failed",
"Gerät": "Device",
"Modell": "Model",
"RouterOS-Version": "RouterOS Version",
"Architektur": "Architecture",
"Laufzeit": "Uptime",
"Modell (RB-Code)": "Model (RB code)",
"Seriennummer": "Serial Number",
"Firmware-Typ": "Firmware Type",
"Firmware (aktuell)": "Firmware (current)",
"Firmware (minimal)": "Firmware (minimum)",
"Firmware (verfügbar)": "Firmware (available)",
"Firmware-Update verfügbar": "Firmware Update Available",
"Aktualisiere…": "Updating…",
"Firmware aktualisieren": "Update Firmware",
"Firmware aktuell": "Firmware Up to Date",
"Starte neu…": "Restarting…",
"Jetzt neu starten": "Restart Now",
"Nötig, damit die neu geschriebene Firmware aktiv wird — passiert nicht automatisch.":
"Needed for the newly written firmware to take effect — doesn't happen automatically.",
"Software-Update": "Software Update",
"Kanal": "Channel",
"Installiert": "Installed",
"Neueste Version": "Latest Version",
"Installiere…": "Installing…",
"Update installieren": "Install Update",
"Prüfe…": "Checking…",
"Jetzt prüfen": "Check Now",
"Prüft bei MikroTik, ob eine neuere RouterOS-Version verfügbar ist. Braucht Internetzugang auf dem Router.":
"Checks with MikroTik whether a newer RouterOS version is available. Needs internet access on the router.",
"Update-Befehl gesendet — der Router lädt herunter, installiert und startet danach automatisch neu.":
"Update command sent — the router will download, install, and then reboot automatically.",
"Verbinde dich mit deinem Router, um Geräteinformationen zu sehen.":
"Connect to your router to see device information.",
"RouterOS-Update installieren?": "Install RouterOS Update?",
"Installieren": "Install",
"Lädt RouterOS": "Downloading RouterOS",
"die neueste Version": "the latest version",
" herunter, installiert es und startet den Router danach automatisch neu — die Verbindung geht dabei verloren. Vorher am besten eine Sicherung erstellen (\"Jetzt sichern\" oben).":
" and installs it, then automatically reboots the router — the connection will be lost. It's best to create a backup first (\"Back Up Now\" above).",
"Update-Prüfung fehlgeschlagen": "Update Check Failed",
"Update-Installation fehlgeschlagen": "Update Installation Failed",
"Routerboard-Firmware aktualisieren?": "Update Routerboard Firmware?",
"Schreibt die neue Bootloader-Firmware auf den Router. Danach ist ein manueller Neustart nötig — passiert nicht automatisch. Dieser Befehl fragt in einer interaktiven Sitzung normalerweise erst nach Bestätigung; ob das über diese App genauso abläuft, ist nicht abschließend getestet (ähnlich interaktive Befehle liefen bisher aber problemlos). Falls die App hier ungewöhnlich lange ohne Rückmeldung bleibt, bitte melden.":
"Writes the new bootloader firmware to the router. A manual reboot is then needed — it doesn't happen automatically. This command normally asks for confirmation in an interactive session; whether that's also the case over this app hasn't been conclusively tested (similarly interactive commands have gone smoothly so far). If the app hangs here unusually long without responding, please report it.",
"Firmware-Aktualisierung fehlgeschlagen": "Firmware Update Failed",
"Router jetzt neu starten?": "Restart Router Now?",
"Neu starten": "Restart",
"Startet den Router sofort neu. Die Verbindung geht dabei kurz verloren, danach im Tab \"Verbinden\" erneut verbinden.":
"Restarts the router immediately. The connection will briefly drop — reconnect in the \"Connect\" tab afterwards.",
"Neustart fehlgeschlagen": "Restart Failed",
"Bekannte Router": "Known Routers",
"Aktuell ausgefüllt": "Currently filled in",
"Umbenennen": "Rename",
"Bearbeiten": "Edit",
"Standort (optional, z.B. Keller, 1. OG)": "Location (optional, e.g. Basement, 1st Floor)",
"Entfernen": "Remove",
"Fertig": "Done",
"Name": "Name",
// MARK: - Setup wizard (Einrichten tab)
"Einfach": "Simple",
"Grundeinrichtung: Internetverbindung (WAN), ein Heimnetzwerk (LAN) mit DHCP, WLAN und ein fest aktivierter Firewall-Grundschutz.":
"Basic setup: internet connection (WAN), one home network (LAN) with DHCP, Wi-Fi, and a fixed, always-on firewall baseline.",
"Kein VLAN, keine mehreren getrennten Netzwerke, keine Netzwerk-Isolation — für später jederzeit über den Expertenmodus nachrüstbar.":
"No VLAN, no multiple separate networks, no network isolation — can be added later anytime via expert mode.",
"Voller Zugriff: mehrere LAN-Interfaces mit je eigenem DHCP-Server, VLANs, Netzwerk-Isolation zwischen Netzwerken, und alle Firewall-Optionen.":
"Full access: multiple LAN interfaces each with its own DHCP server, VLANs, network isolation between networks, and all firewall options.",
"Weiter": "Next",
"Zurück": "Back",
"Modus wählen": "Choose Mode",
"Internet-Anschluss": "Internet Connection",
"Anschluss (Port)": "Port",
"Der Netzwerkport, über den dein Router mit dem Internet verbunden ist (z.B. das Kabel zu deinem Modem oder deiner Anschlussdose).":
"The network port your router uses to connect to the internet (e.g. the cable to your modem or wall socket).",
"Verbindungsart": "Connection Type",
"Wie sich der Router beim Internetanbieter anmeldet. \"Automatisch (DHCP)\" passt für die meisten Kabel-/Glasfaseranschlüsse.":
"How the router signs in with your internet provider. \"Automatic (DHCP)\" fits most cable/fiber connections.",
"Automatisch (DHCP)": "Automatic (DHCP)",
"Statische IP-Adresse": "Static IP Address",
"PPPoE (DSL-Zugangsdaten)": "PPPoE (DSL credentials)",
"Der Router bezieht seine Internetadresse automatisch von deinem Anbieter. Für die meisten Kabel-/Glasfaser-Anschlüsse die richtige Wahl.":
"The router gets its internet address automatically from your provider. The right choice for most cable/fiber connections.",
"Statische Adresse": "Static Address",
"IP-Adresse (z.B. 203.0.113.5/24)": "IP Address (e.g. 203.0.113.5/24)",
"Die feste IP-Adresse, die dir dein Anbieter zugewiesen hat, inklusive Netzmaske (die Zahl nach dem /, z.B. /24).":
"The fixed IP address assigned to you by your provider, including the subnet mask (the number after the /, e.g. /24).",
"Gateway (z.B. 203.0.113.1)": "Gateway (e.g. 203.0.113.1)",
"Die Adresse des nächsten Geräts Richtung Internet — steht meist in den Unterlagen deines Anbieters.":
"The address of the next device towards the internet — usually found in your provider's documentation.",
"PPPoE-Zugangsdaten": "PPPoE Credentials",
"Zugangsdaten von deinem Internetanbieter für die Einwahl (z.B. bei DSL-Anschlüssen).":
"Credentials from your internet provider for dial-in (e.g. for DSL connections).",
"Das zum Benutzernamen gehörende Passwort von deinem Internetanbieter.":
"The password from your internet provider that goes with the username.",
"Diese Zugangsdaten bekommst du von deinem Internetanbieter (z.B. Telekom, Vodafone).":
"You get these credentials from your internet provider (e.g. Telekom, Vodafone).",
"Internet einrichten": "Set Up Internet",
"Netzwerk auf": "Network on",
"Anschluss/Bridge": "Port/Bridge",
"Der interne Netzwerk-Anschluss, an dem deine Geräte hängen (dein lokales Netzwerk, LAN).":
"The internal network port your devices connect to (your local network, LAN).",
"Prüfe, ob der Port frei ist…": "Checking whether the port is free…",
"Router-Adresse (z.B. 192.168.88.1/24)": "Router Address (e.g. 192.168.88.1/24)",
"Die Adresse, unter der der Router selbst in diesem Netzwerk erreichbar ist.":
"The address the router itself is reachable at on this network.",
"Netzwerk (z.B. 192.168.88.0/24)": "Network (e.g. 192.168.88.0/24)",
"Der komplette Adressbereich dieses Netzwerks (z.B. /24 erlaubt bis zu 254 Geräte).":
"The complete address range of this network (e.g. /24 allows up to 254 devices).",
"Automatische Adressvergabe von": "Automatic Address Assignment From",
"Ab welcher Adresse der Router automatisch Adressen an Geräte in diesem Netzwerk vergibt.":
"The address from which the router automatically hands out addresses to devices on this network.",
"bis": "to",
"Bis zu welcher Adresse der Router automatisch Adressen an Geräte in diesem Netzwerk vergibt.":
"The address up to which the router automatically hands out addresses to devices on this network.",
"Adresse behalten für": "Keep address for",
"Stunden": "hours",
"Wie lange ein Gerät seine zugewiesene Adresse behält, bevor sie erneuert werden muss.":
"How long a device keeps its assigned address before it needs to be renewed.",
"Welcher Server Geräten in diesem Netzwerk Internetadressen in Namen übersetzt (z.B. www.google.de). Meist der Router selbst.":
"Which server translates internet addresses into names for devices on this network (e.g. www.google.de). Usually the router itself.",
"Von anderen Netzwerken isolieren": "Isolate From Other Networks",
"Verhindert Datenverkehr zwischen diesem und allen anderen konfigurierten LAN-/VLAN-Netzwerken. Der Internetzugriff bleibt erhalten. Wird im Firewall-Schritt umgesetzt.":
"Prevents traffic between this and all other configured LAN/VLAN networks. Internet access is kept. Implemented in the Firewall step.",
"Netzwerk entfernen": "Remove Network",
"Weiteres LAN-Netzwerk hinzufügen": "Add Another LAN Network",
"Heimnetzwerk einrichten": "Set Up Home Network",
"wird beim Anwenden freigemacht": "will be freed up on apply",
"ist nicht frei": "is not free",
"Wähle oben einen anderen, freien Port — oder mache diesen jetzt frei. Die bestehende Konfiguration wird dabei entfernt.":
"Choose a different, free port above — or free this one up now. Its existing configuration will be removed in the process.",
"Port jetzt freimachen…": "Free Up Port Now…",
"freimachen?": "free up?",
"Fortfahren": "Continue",
"Wirklich sicher?": "Really sure?",
"Ja, endgültig freimachen": "Yes, free it up for good",
"Tatsächlich ausgeführt wird das erst mit \"Jetzt anwenden\" am Ende des Assistenten — bis dahin kannst du das rückgängig machen, indem du hier oben einen anderen Port wählst.":
"This is only actually carried out with \"Apply Now\" at the end of the wizard — until then you can undo it by choosing a different port above.",
"Folgendes wird entfernt, bevor": "The following will be removed before",
"als neues Netzwerk eingerichtet wird:": "is set up as a new network:",
"Bestehender Datenverkehr über diesen Port (z.B. eine laufende Internetverbindung oder Geräte im bisherigen Netz) wird dadurch unterbrochen.":
"Existing traffic over this port (e.g. an active internet connection or devices on the previous network) will be interrupted as a result.",
"Netzwerk": "Network",
"Zusätzliches Netzwerk einrichten (VLAN, optional)": "Set Up Additional Network (VLAN, optional)",
"Erstellt ein zusätzliches Netzwerk mit eigenem Adressbereich und eigenem DHCP-Server.":
"Creates an additional network with its own address range and its own DHCP server.",
"Ein VLAN ist ein zusätzliches Netzwerk mit eigenem Adressbereich — z.B. für Gäste oder smarte Geräte. Ob es vom Hauptnetzwerk abgeschottet ist, legst du unten pro Netzwerk über \"Von anderen Netzwerken isolieren\" fest. Wenn du unsicher bist, ob du das brauchst, überspring diesen Schritt einfach.":
"A VLAN is an additional network with its own address range — e.g. for guests or smart devices. Whether it's shielded from the main network is set below, per network, via \"Isolate From Other Networks\". If you're unsure whether you need this, just skip this step.",
"Ein Name zur Wiedererkennung, z.B. \"Gäste\" oder \"Smart Home\".": "A name for your own reference, e.g. \"Guests\" or \"Smart Home\".",
"Eine eindeutige Nummer zur technischen Unterscheidung dieses Netzwerks. Muss nur innerhalb deines Routers einmalig sein.":
"A unique number to technically distinguish this network. Only needs to be unique within your router.",
"Basis-Anschluss": "Base Port",
"Der physische Anschluss, auf dem dieses zusätzliche Netzwerk aufbaut.": "The physical port this additional network is built on.",
"Router-Adresse (z.B. 192.168.20.1/24)": "Router Address (e.g. 192.168.20.1/24)",
"Die Adresse des Routers innerhalb dieses zusätzlichen Netzwerks.": "The router's address within this additional network.",
"Netzwerk (z.B. 192.168.20.0/24)": "Network (e.g. 192.168.20.0/24)",
"Der komplette Adressbereich dieses zusätzlichen Netzwerks.": "The complete address range of this additional network.",
"Ab welcher Adresse Geräte in diesem Netzwerk automatisch eine Adresse bekommen.":
"The address from which devices on this network automatically get an address.",
"Bis zu welcher Adresse Geräte in diesem Netzwerk automatisch eine Adresse bekommen.":
"The address up to which devices on this network automatically get an address.",
"Weiteres Netzwerk hinzufügen": "Add Another Network",
"Zusätzliche Netzwerke (VLAN)": "Additional Networks (VLAN)",
"An diesem Gerät wurde kein WLAN erkannt. Dieser Schritt wird übersprungen.":
"No Wi-Fi was detected on this device. This step is skipped.",
"Dein Gerät nutzt den neueren RouterOS-WiFi-Treiber (": "Your device uses the newer RouterOS Wi-Fi driver (",
"), den diese App noch nicht unterstützt. WLAN muss dafür vorerst manuell über Winbox eingerichtet werden.":
"), which this app doesn't support yet. Wi-Fi must be set up manually via Winbox for now.",
"WLAN auf": "Wi-Fi on",
"Aktivieren": "Enable",
"Schaltet WLAN auf diesem Funkmodul ein und vergibt Netzwerkname und Passwort.":
"Turns on Wi-Fi on this radio module and sets the network name and password.",
"Der Name, den Geräte in ihrer WLAN-Liste sehen und mit dem sie sich verbinden.":
"The name devices see in their Wi-Fi list and use to connect.",
"Passwort (mind. 8 Zeichen)": "Password (at least 8 characters)",
"Das WLAN-Passwort (WPA2). Muss mindestens 8 Zeichen lang sein.": "The Wi-Fi password (WPA2). Must be at least 8 characters long.",
"WLAN (falls vorhanden)": "Wi-Fi (if available)",
"Firewall-Grundschutz einrichten (empfohlen)": "Set Up Firewall Baseline (recommended)",
"Schützt deinen Router und deine Geräte vor unaufgeforderten Zugriffen aus dem Internet und ermöglicht deinen Geräten den Internetzugriff (NAT).":
"Protects your router and your devices from unsolicited access from the internet and gives your devices internet access (NAT).",
"Firewall-Grundschutz ist im einfachen Modus immer aktiv.": "The firewall baseline is always active in simple mode.",
"Richtet einen Standard-Schutz ein: Internetfreigabe (NAT) für dein Heimnetz, und blockiert unaufgeforderte Zugriffe aus dem Internet auf deinen Router und deine Geräte. Bestehende, selbst eingerichtete Regeln bleiben erhalten — die neuen Regeln werden vorangestellt.":
"Sets up standard protection: internet sharing (NAT) for your home network, and blocks unsolicited access from the internet to your router and your devices. Existing, manually created rules are kept — the new rules are placed at the front.",
"Bereits vorhandene Regeln": "Existing Rules",
"Dein Router hat bereits eigene Firewall-Regeln. Die neuen Regeln werden vorangestellt, bestehende bleiben erhalten — prüfe nach dem Anwenden trotzdem die Reihenfolge, z.B. über Winbox oder \"/ip firewall filter print\".":
"Your router already has its own firewall rules. The new rules are placed at the front, existing ones are kept — still check the order after applying, e.g. via Winbox or \"/ip firewall filter print\".",
"Isolierte Netzwerke": "Isolated Networks",
"Diese Netzwerke werden vom Datenverkehr aller anderen konfigurierten Netzwerke abgeschottet, sobald der Firewall-Grundschutz aktiv ist.":
"These networks are shielded from traffic from all other configured networks once the firewall baseline is active.",
"Firewall (optional)": "Firewall (optional)",
"Geplante Änderungen": "Planned Changes",
"Details anzeigen (RouterOS-Befehle)": "Show Details (RouterOS Commands)",
"Vor dem Anwenden wird automatisch eine Sicherung der aktuellen Konfiguration erstellt (Tab \"Sicherungen\"). Ein garantiertes automatisches Zurückrollen bei Verbindungsabbruch gibt es nicht — bei Problemen die Sicherung im Tab \"Sicherungen\" verwenden oder den Router lokal (Ethernet/Konsole) wiederherstellen.":
"Before applying, a backup of the current configuration is automatically created (\"Backups\" tab). There's no guaranteed automatic rollback if the connection drops — if there are problems, use the backup in the \"Backups\" tab, or restore the router locally (Ethernet/console).",
"Einrichten abbrechen?": "Cancel Setup?",
"Weiter ausfüllen": "Keep Going",
"Alle in diesem Assistenten eingegebenen Werte gehen verloren.": "All values entered in this wizard will be lost.",
"Ablauf": "Progress",
"Änderungen erfolgreich angewendet": "Changes Applied Successfully",
"Jetzt anwenden": "Apply Now",
"Übersicht & Anwenden": "Overview & Apply",
"Anwenden fehlgeschlagen": "Apply Failed",
// MARK: - Overview tab (OverviewView.swift + OverviewGraph.swift)
"Aktualisieren": "Refresh",
"Zurücksetzen": "Reset",
"Anordnung zurücksetzen — setzt manuell verschobene Kästchen auf die ursprüngliche Anordnung zurück.":
"Reset layout — moves manually dragged cards back to their original arrangement.",
"Lade Router-Konfiguration…": "Loading router configuration…",
"Konnte Konfiguration nicht laden": "Could Not Load Configuration",
"Keine Konfiguration gefunden": "No Configuration Found",
"Der Router meldet aktuell keine Interfaces/Adressen.": "The router currently reports no interfaces/addresses.",
"Von": "From",
"Nach": "To",
"Öffnet dasselbe Bearbeiten-Formular wie im Experte-Tab und schreibt Änderungen direkt an den Router.":
"Opens the same edit form as the Expert tab and writes changes directly to the router.",
"Verbindungen": "Connections",
"Zeigt den kompletten IST-Zustand des verbundenen Routers als Diagramm: Interfaces links, darauf aufbauend IP-Adressen, DHCP/Pools, Routen und rechts die Firewall/NAT-Regeln, die auf sie zugreifen. Linien zeigen echte Abhängigkeiten (z.B. \"DHCP-Server nutzt diesen Pool\"), keine Vermutungen.":
"Shows the connected router's complete current state as a diagram: interfaces on the left, IP addresses/DHCP/pools/routes built on top of them, and the firewall/NAT rules that reference them on the right. Lines show real dependencies (e.g. \"DHCP server uses this pool\"), not guesses.",
"Auf ein Feld klicken zeigt hier rechts Details und alle Verbindungen.": "Clicking a card shows details and all its connections here on the right.",
"Nicht im Diagramm (aber im Experte-Tab erreichbar):": "Not in the diagram (but reachable in the Expert tab):",
"Spalten": "Columns",
"Verbindungsarten": "Connection Types",
"Interfaces": "Interfaces",
"Pools & DHCP": "Pools & DHCP",
"Routen": "Routes",
"Firewall & NAT": "Firewall & NAT",
"VLAN → Basis-Interface": "VLAN → Base Interface",
"Bridge-Port": "Bridge Port",
"WireGuard-Peer": "WireGuard Peer",
"Interface → IP-Adresse": "Interface → IP Address",
"DHCP / Pool": "DHCP / Pool",
"Route → Interface": "Route → Interface",
"Firewall/NAT → Interface": "Firewall/NAT → Interface",
"Adress-Liste → Regel": "Address List → Rule",
"Das VLAN-Interface baut auf dem Basis-Interface auf — es ist ein eigenes, per VLAN-Kennung getrenntes Netzwerk auf demselben physischen Anschluss.":
"The VLAN interface builds on the base interface — it's its own network, separated by VLAN tag, on the same physical port.",
"Dieser physische Port ist Mitglied dieser Bridge — Geräte an diesem Port verhalten sich, als hingen sie am selben Kabel wie alle anderen Bridge-Ports.":
"This physical port is a member of this bridge — devices on this port behave as if they hung off the same cable as every other bridge port.",
"Dieser WireGuard-VPN-Tunnel läuft über dieses Interface.": "This WireGuard VPN tunnel runs over this interface.",
"Diesem Interface ist diese IP-Adresse zugewiesen.": "This IP address is assigned to this interface.",
"Diese DHCP-Komponente (Server, Pool oder Netzwerk-Optionen) gehört zu diesem Interface bzw. dieser Adresse.":
"This DHCP component (server, pool, or network options) belongs to this interface or address.",
"Diese Route führt über dieses Interface bzw. dieses Gateway.": "This route goes via this interface or gateway.",
"Diese Firewall- oder NAT-Regel bezieht sich auf dieses Interface (als Eingang oder Ausgang).":
"This firewall or NAT rule refers to this interface (as input or output).",
"Diese Regel prüft, ob eine Adresse in dieser Adress-Liste steht.": "This rule checks whether an address is in this address list.",
"VPN: PPP-Benutzer/-Profile": "VPN: PPP Users/Profiles",
"Queues/Bandbreiten-Steuerung": "Queues/Bandwidth Control",
"System (Name/Uhrzeit/Scheduler/Skripte/Benutzerkonten)": "System (Name/Time/Scheduler/Scripts/User Accounts)",
"Werkzeuge (Netwatch/E-Mail)": "Tools (Netwatch/Email)",
"Firewall: Mangle- und Raw-Regeln": "Firewall: Mangle and Raw Rules",
// MARK: - LAN Scanner tab (DevicesView.swift)
"Suche Geräte im Netz…": "Searching for devices on the network…",
"Konnte Geräte nicht laden": "Could Not Load Devices",
"Keine Ports gefunden": "No Ports Found",
"Der Router meldet aktuell keine physischen Interfaces.": "The router currently reports no physical interfaces.",
"Keine Geräte": "No Devices",
"Führe Netzwerk-Test aus…": "Running network test…",
"Neu scannen": "Rescan",
"Aktionen": "Actions",
"Feste Zuweisung entfernen": "Remove Static Assignment",
"Feste IP zuweisen": "Assign Static IP",
"Kein DHCP-Lease — feste Zuweisung hier nicht möglich": "No DHCP lease — static assignment not possible here",
"DNS-Auflösung (nslookup)": "DNS Lookup (nslookup)",
"Port-Scan": "Port Scan",
"Netzwerk-Tools": "Network Tools",
"Rohdaten anzeigen": "Show Raw Data",
"Feste IP-Adresse zuweisen?": "Assign Static IP Address?",
"Zuweisen": "Assign",
"wird dauerhaft an": "will be permanently bound to",
" gebunden — die Adresse ändert sich für dieses Gerät nicht mehr automatisch.":
". Its address will no longer change automatically for this device.",
"\n\nRückgängig machen: hier im LAN-Scanner-Tab über den \"Aktionen\"-Button beim Gerät":
"\n\nTo undo: use the \"Actions\" button next to the device here in the LAN Scanner tab",
" → \"Feste Zuweisung entfernen\". Das Gerät bekommt danach aber nicht sofort":
" → \"Remove Static Assignment\". The device won't immediately",
" automatisch eine neue Adresse — dafür muss es die Verbindung kurz trennen und":
" get a new address automatically though — it first needs to briefly disconnect and",
" neu aufbauen (Netzwerkkabel kurz ziehen/stecken, WLAN aus/an, oder neu starten).":
" reconnect (briefly unplug/replug the network cable, toggle Wi-Fi off/on, or restart it).",
"\n\nBefehl:": "\n\nCommand:",
"Feste Zuweisung entfernen?": "Remove Static Assignment?",
"Die feste Zuweisung für": "The static assignment for",
" wird entfernt. RouterOS kennt keine direkte Umkehrung von \"Make Static\" —":
" will be removed. RouterOS has no direct reverse of \"Make Static\" —",
" das Gerät bekommt erst beim nächsten Verbindungsaufbau (Kabel/WLAN neu":
" the device will only get a new address via DHCP again the next time it connects (cable/Wi-Fi",
" verbinden, Neustart) automatisch wieder eine Adresse per DHCP, eventuell":
" reconnect, restart), possibly",
" eine andere IP als bisher.": " a different IP than before.",
"Fehler": "Error",
"IP-Adresse": "IP Address",
"MAC-Adresse": "MAC Address",
"Status": "Status",
"Kein DHCP": "No DHCP",
"Fest": "Static",
"Dynamisch": "Dynamic",
"Rohdaten:": "Raw Data:",
"Alle Felder, die RouterOS für diesen Eintrag zurückgegeben hat — hilfreich, falls Status/Port hier falsch aussieht.":
"All fields RouterOS returned for this entry — useful if the status/port looks wrong here.",
"Schließen": "Close",
"Ausgeführt vom Router aus (eigene SSH-Verbindung) — testet die Erreichbarkeit vom Router zu diesem Gerät, nicht von diesem Mac.":
"Run from the router itself (its own SSH connection) — tests reachability from the router to this device, not from this Mac.",
"(keine Ausgabe)": "(no output)",
"Port-Scan:": "Port Scan:",
"TCP-Verbindungsversuch auf gängige Ports, ausgeführt von diesem Mac aus (nicht vom Router) — rot = offen, grün = geschlossen (Gerät antwortet, aber nichts lauscht dort), grau = keine Antwort (Firewall, Gerät aus, oder Port gefiltert).":
"TCP connection attempt on common ports, run from this Mac (not from the router) — red = open, green = closed (device responds, but nothing is listening there), grey = no response (firewall, device off, or port filtered).",
"Offen": "Open",
"Geschlossen": "Closed",
"Keine Antwort": "No Response",
// MARK: - Backups tab (BackupListView.swift)
"Sicherung wirklich wiederherstellen?": "Really restore this backup?",
"Wiederherstellen": "Restore",
"Falsches Routermodell": "Wrong Router Model",
"Wiederherstellung fehlgeschlagen": "Restore Failed",
"Keine Sicherungen": "No Backups",
"Erstelle eine Sicherung, bevor du Änderungen am Router vornimmst.": "Create a backup before making changes to the router.",
"Diese Sicherung auf den verbundenen Router zurückspielen — nur für exakt dasselbe Routermodell.":
"Restore this backup onto the connected router — only for exactly the same router model.",
"Speicherort": "Storage Location",
"Ordner wählen…": "Choose Folder…",
"Wähle einen eigenen Ordner für neue Sicherungen, z.B. auf einer externen Festplatte oder in iCloud Drive.":
"Choose your own folder for new backups, e.g. on an external drive or in iCloud Drive.",
"Standard verwenden": "Use Default",
"Setzt den Speicherort zurück auf den App-eigenen Standardordner.": "Resets the storage location back to the app's own default folder.",
"Gefahrenzone": "Danger Zone",
"Setzt den Router komplett auf die vom Hersteller mitgelieferte Standardkonfiguration zurück — alle bisherigen Änderungen (Internet, Heimnetz, VLANs, WLAN, Firewall) gehen verloren. Der Router startet danach neu.":
"Resets the router completely to the manufacturer's default configuration — all existing changes (internet, home network, VLANs, Wi-Fi, firewall) are lost. The router then reboots.",
"Setze zurück…": "Resetting…",
"Werkseinstellungen wiederherstellen": "Restore Factory Defaults",
"Stellt die vom Hersteller vorinstallierte Standardkonfiguration des Routers wieder her. Nur für den Notfall, falls etwas schiefgelaufen ist.":
"Restores the router's factory-installed default configuration. Only for emergencies, if something has gone wrong.",
"Befehl gesendet — der Router startet jetzt neu (kann 1-2 Minuten dauern). Verbinde dich danach im Tab \"Verbinden\" erneut.":
"Command sent — the router is now restarting (can take 1-2 minutes). Reconnect in the \"Connect\" tab afterwards.",
"Wiederherstellung gesendet — der Router startet jetzt neu (kann 1-2 Minuten dauern). Verbinde dich danach im Tab \"Verbinden\" erneut.":
"Restore sent — the router is now restarting (can take 1-2 minutes). Reconnect in the \"Connect\" tab afterwards.",
"Werkseinstellungen wirklich wiederherstellen?": "Really restore factory defaults?",
"Dies löscht ALLE bisherigen Einstellungen (Internet, Heimnetz, VLANs, WLAN, Firewall) und setzt den Router auf die Werks-Standardkonfiguration zurück. Der Router startet neu, diese App verliert danach die Verbindung. Vorher wird zusätzlich automatisch eine Sicherung erstellt.":
"This deletes ALL existing settings (internet, home network, VLANs, Wi-Fi, firewall) and resets the router to its factory default configuration. The router reboots, and this app loses the connection afterwards. A backup is also created automatically beforehand.",
"Zuerst im Tab 'Verbinden' mit dem Router verbinden.": "First connect to the router in the \"Connect\" tab.",
"Sicherung jetzt erstellen": "Create Backup Now",
"Zurücksetzen fehlgeschlagen": "Reset Failed",
"Diese Sicherung stammt von einem": "This backup is from a",
", der verbundene Router meldet sich als": ", the connected router identifies itself as",
". Wiederherstellen abgebrochen, um das Gerät nicht unbrauchbar zu machen (\"brick\").":
". Restore aborted to avoid bricking the device.",
"unbekannt": "unknown",
"WICHTIG: Diese Sicherung darf nur auf genau das Routermodell zurückgespielt werden, von dem sie stammt — sonst kann der Router unbrauchbar werden (\"brick\"). Sicherung:":
"IMPORTANT: This backup may only be restored onto the exact router model it came from — otherwise the router can become unusable (\"bricked\"). Backup:",
". Verbundener Router:": ". Connected router:",
"Dies löscht ALLE aktuellen Einstellungen restlos (auch die Werks-Grundkonfiguration, nicht nur deine eigenen Änderungen) und ersetzt sie durch den Inhalt der Sicherung. Der Router startet neu, diese App verliert danach die Verbindung.":
"This completely deletes ALL current settings (including the factory baseline configuration, not just your own changes) and replaces them with the backup's content. The router reboots, and this app loses the connection afterwards.",
"Falls die Wiederherstellung fehlschlägt, bleibt der Router leer stehen, nicht auf Werkseinstellungen zurückgefallen.":
"If the restore fails, the router is left blank, not reverted to factory defaults."
]
}