M16: Verbinden-Tab zweisprachig (DE/EN)

ConnectView.swift auf L10n.t(...) umgestellt: Verbindungsformular, Status,
Geräte-/Routerboard-Infos, Update-/Firmware-Dialoge, Zertifikats-/SSH-
Warnungen. Dialog-Helper-Funktionen bekommen appLanguage-Parameter (liegen
außerhalb der View-Struct). Nebenbei fehlenden "Passwort"-Label-Eintrag im
Experte-Katalog nachgetragen. L10n.swift jetzt 444 Einträge, keine
Duplikate. 60 Tests grün, live bestätigt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YDmUd93KxsYGr2kLTotWnG
This commit is contained in:
Kay
2026-09-15 16:18:02 +02:00
co-authored by Claude Sonnet 5
parent 7af550ae85
commit b6bb4bc289
6 changed files with 241 additions and 104 deletions
+34 -9
View File
@@ -1038,19 +1038,44 @@ Unit-Tests grün (inkl. neuer `ExpertViewModelTests` und
zweiten Eintrag entfernt (dieselbe Übersetzung greift ohnehin für
beide Stellen). Build + 60 Tests grün, **vom Nutzer live in Xcode
bestätigt** ("funktioniert"). Damit ist der komplette Experte-Tab
zweisprachig; offen bleiben die übrigen fünf Tabs (Verbinden/
Einrichten/Übersicht/Geräte/Sicherungen), die noch auf festen
deutschen String-Literalen laufen.
zweisprachig. Direkt danach denselben Mechanismus auf den Verbinden-
Tab (`ConnectView.swift`) ausgerollt: Verbindungsformular,
Verbindungsstatus (inkl. dynamischem "Verbunden (REST-API/SSH)"),
Geräte-/Routerboard-Infos, Software-/Firmware-Update-Bereich samt
aller Bestätigungsdialoge, Zertifikats-/SSH-Hostkey-TOFU-Warnungen.
Da `ConnectView` mehrere Nachrichten mit eingebetteten Laufzeitwerten
baut (Fingerabdruck, Router-Version, Datum der letzten Sicherung),
wurden diese in übersetzte statische Textteile + unverändert
eingefügten dynamischen Wert zerlegt statt als ein Dictionary-Key mit
Platzhalter (z.B. `L10n.t("Fingerabdruck:", appLanguage) +
" \(fingerprint)"`). Die vier `View`-Extension-Hilfsfunktionen
(`withUpdateDialogs`/`withSoftwareUpdateDialogs`/
`withFirmwareUpgradeDialogs`/`withRebootDialogs`) bekamen dafür einen
zusätzlichen `appLanguage: String`-Parameter, da sie außerhalb der
View-Struct liegen und nicht direkt auf `@AppStorage` zugreifen
können. Nebenbei eine Lücke im Experte-Tab-Katalog geschlossen: das
Feld-Label "Passwort" (in fünf verschiedenen Schemas verwendet) hatte
bisher keinen eigenen Übersetzungseintrag. `L10n.swift`s
`translations`-Dictionary jetzt 444 Einträge, auf Duplikate per
Python-Skript geprüft (keine gefunden). Build + 60 Tests grün, **vom
Nutzer live in Xcode bestätigt** ("sieht gut aus"). Bewusst nicht
übersetzt: Laufzeit-/Backend-Text, der direkt von RouterOS oder dem
App-eigenen Fehler-/Ergebnis-Pfad kommt (z.B. `update.status`,
`firmwareUpgradeResultMessage`, alle `viewModel.*Error`-Alerts) — das
sind technische/englische RouterOS-Ausgaben bzw. app-generierte
Fehlertexte, keine kuratierten UI-Strings; offen bleiben die übrigen
vier Tabs (Einrichten/Übersicht/Geräte/Sicherungen), die noch auf
festen deutschen String-Literalen laufen.
## Nächste Schritte
1. ~~M16: restliche `RouterOSSchemaCatalog.swift`-Sektionen übersetzen~~
— erledigt, kompletter Experte-Tab (alle 9 Menü-Familien) jetzt
zweisprachig, live bestätigt. Offen: dieselbe `L10n.t(...)`-Umstellung
auf die übrigen Tabs (Verbinden/Einrichten/Geräte/Sicherungen/
Übersicht) ausrollen — dort läuft aktuell noch alles auf festen
deutschen String-Literalen ohne Sprachumschaltung, mit dem Nutzer
vereinbart Tab für Tab weiterzumachen.
und ~~Verbinden-Tab zweisprachig~~ — beides erledigt, live bestätigt.
Offen: dieselbe `L10n.t(...)`-Umstellung auf die übrigen vier Tabs
(Einrichten/Übersicht/Geräte/Sicherungen) ausrollen — dort läuft
aktuell noch alles auf festen deutschen String-Literalen ohne
Sprachumschaltung, mit dem Nutzer vereinbart Tab für Tab
weiterzumachen.
2. WLAN (M5) an einem Gerät mit echtem WLAN-Chip nachholen.
2. Rest von M7: Fehlerzustände/Politur, REST-Schreibtest an einem Gerät
mit aktivem `www-ssl`.