forked from kay/RouterOS
Tab "Geräte" -> "LAN-Scanner", Refresh-Button "Neu scannen" + prominenter Stil. Neues Netzwerk-Tools-Menü: Ping/Traceroute/DNS-Auflösung über NetworkToolsService (eigene SSH-Verbindung, wie Backup/InterfaceTraffic- Monitor), mit Zeichen-Validierung gegen Command-Injection ueber einen boeswilligen DHCP-Hostnamen. Port-Scan laeuft direkt von diesem Mac ueber Network.framework (RouterOS hat kein eingebautes Portscan-Tool) - dabei einen echten NWConnection-Bug gefunden (verweigerte Verbindung meldet sich ueber .waiting, nicht .failed) und per Unit-Test gegen einen Loopback-Port aufgedeckt und gefixt. Zusaetzlich: Warnhinweis bei "Feste IP zuweisen" erklaert jetzt den Rueckweg. DE/EN-Umschalter zeigt Landesflaggen statt Text. 92 Tests gruen. HANDOFF.md/README.md (inkl. Mermaid-Diagramm)/Manual.md/ CHATLOG.md aktualisiert. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YDmUd93KxsYGr2kLTotWnG
627 lines
55 KiB
Swift
627 lines
55 KiB
Swift
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, 2–4094, z.B. 20.": "Unique identifier, 2–4094, 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 (Sekunden)": "Keepalive (seconds)",
|
||
"Z.B. 25 — hält die Verbindung durch NAT/Firewalls am Leben. Wichtig bei Clients hinter NAT.":
|
||
"E.g. 25 — 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, z.B. 1d oder 01:00:00. Leer = nur einmal zur Startzeit.":
|
||
"How often it repeats, e.g. 1d or 01:00:00. Empty = 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",
|
||
"Z.B. 00:00:10.": "E.g. 00:00:10.",
|
||
"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",
|
||
"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"
|
||
]
|
||
}
|