forked from kay/RouterOS
M16: Zweisprachigkeit (DE/EN) im Experte-Tab, eigener L10n-Helfer statt String Catalog
.environment(\.locale) + Localizable.xcstrings schaltete Text(LocalizedStringKey)
live nachweislich nicht um. Ersetzt durch Core/Localization/L10n.swift
(Dictionary-Lookup je AppStorage("appLanguage")), Umschalt-Button in der Toolbar.
Vollständig übersetzt: alle Tab-Namen, alle Menü-Kategorien, kompletter
Experte-Tab inkl. Firewall-Formulare. 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:
+27
@@ -814,3 +814,30 @@ Test, WLAN/Bonding/PPPoE-Live-Tests).
|
||||
Verwechslung. Live bestätigt ("funktioniert"). Adress-Listen bewusst
|
||||
weiter zurückgestellt (andere UI-Form nötig). 60 Unit-Tests grün,
|
||||
Manual.md/HANDOFF.md aktualisiert, Commit + Push.
|
||||
- "jetzt machen wir das ganze zweisprachig..." → M16 gestartet, Nutzer
|
||||
wählte "Schrittweise, Tab für Tab" als Vorgehen. Erster Versuch: Apple
|
||||
String Catalog (`Localizable.xcstrings`) + `.environment(\.locale, ...)`
|
||||
auf `WindowGroup`-Ebene, Tab-Namen/Kategorien/Experte-Tab-Chrome mit
|
||||
passenden deutschen Keys befüllt. Live: "wenn ich von DE auf EN
|
||||
wechsele passiert nicht im experte-Tab" → Root Cause vermutet: Swifts
|
||||
`Text`/`.help`/etc. wandeln nur String-*Literale* automatisch in
|
||||
`LocalizedStringKey` um, nicht String-*Variablen* (`field.label` etc.)
|
||||
— jede Stelle explizit mit `LocalizedStringKey(...)` umschlossen, 60
|
||||
Tests grün. Live erneut: "bleibt auf deutsch" — Fix wirkungslos.
|
||||
Tatsächliche Ursache gefunden: `.environment(\.locale)` steuert nicht,
|
||||
welche Sprachtabelle `Text(LocalizedStringKey)` zur Laufzeit auflöst
|
||||
(nur Calendar/DateFormatter-artige APIs) — die String-Catalog-Bindung
|
||||
scheint an der Bundle-internen Locale-Verhandlung beim App-Start
|
||||
festzuhängen und reagiert nicht auf einen Laufzeit-Override. Fix:
|
||||
`Localizable.xcstrings` entfernt, neuer eigener Helfer
|
||||
`Core/Localization/L10n.swift` (`L10n.t(german, appLanguage) -> String`,
|
||||
simples Dictionary, deutscher Text als Schlüssel), jede betroffene View
|
||||
liest `@AppStorage("appLanguage")` selbst und ruft `L10n.t(...)` direkt
|
||||
auf statt über die Environment/Catalog-Kette zu gehen. Umgesetzt für
|
||||
alle 6 Tab-Namen, alle 13 Menü-Kategorien, komplette Chrome von
|
||||
`ExpertView.swift`/`ExpertMenuDetailView.swift` (Buttons, Dialoge,
|
||||
Feld-Labels/-Hilfetexte) — Firewall-Familie darin bereits vollständig
|
||||
übersetzt aus dem ersten Versuch. 60 Tests grün, live bestätigt ("das
|
||||
sieht gut aus"). HANDOFF.md/README.md/Manual.md aktualisiert, Commit +
|
||||
Push. Rest von `RouterOSSchemaCatalog.swift` sowie die übrigen Tabs
|
||||
bleiben offen für Folgesessions (Tab für Tab, wie vereinbart).
|
||||
|
||||
Reference in New Issue
Block a user