diff --git a/c-work/3-validate/2026-04 gateway-i18n-unified.md b/c-work/4-done/2026-04 gateway-i18n-unified.md similarity index 100% rename from c-work/3-validate/2026-04 gateway-i18n-unified.md rename to c-work/4-done/2026-04 gateway-i18n-unified.md diff --git a/c-work/3-validate/2026-04-gateway-duplicate-class-names.md b/c-work/4-done/2026-04-gateway-duplicate-class-names.md similarity index 100% rename from c-work/3-validate/2026-04-gateway-duplicate-class-names.md rename to c-work/4-done/2026-04-gateway-duplicate-class-names.md diff --git a/c-work/3-validate/2026-04-gateway-i18n-phase-7-implementation.md b/c-work/4-done/2026-04-gateway-i18n-phase-7-implementation.md similarity index 100% rename from c-work/3-validate/2026-04-gateway-i18n-phase-7-implementation.md rename to c-work/4-done/2026-04-gateway-i18n-phase-7-implementation.md diff --git a/c-work/3-validate/2026-04-generic-graph-editor.md b/c-work/4-done/2026-04-generic-graph-editor.md similarity index 100% rename from c-work/3-validate/2026-04-generic-graph-editor.md rename to c-work/4-done/2026-04-generic-graph-editor.md diff --git a/c-work/2-build/2026-04-i18n-static-text-elimination.md b/c-work/4-done/2026-04-i18n-static-text-elimination.md similarity index 92% rename from c-work/2-build/2026-04-i18n-static-text-elimination.md rename to c-work/4-done/2026-04-i18n-static-text-elimination.md index a53e578..a620eb9 100644 --- a/c-work/2-build/2026-04-i18n-static-text-elimination.md +++ b/c-work/4-done/2026-04-i18n-static-text-elimination.md @@ -9,10 +9,16 @@ |-------|--------|--------| | 1 | Feature-Module (`mainXxx.py`), `registry.py`, `interfaceBootstrap.py` | **done** | | 2 | `nodeDefinitions/*`, `portTypes.py`, `nodeRegistry.py`, `entryPoints.py` | **done** | -| 3–5 | Datamodels, `frontendTypes`, Frontend `t()` | offen | +| 3 | Datamodel-Options (12 Dateien) + `SubscriptionPlan` title/description | **done** | +| 4 | Accounting-Connectors, `frontendTypes` (keine `CUSTOM_TYPE_DESCRIPTIONS` mehr) | **done** | +| 5 | Store, `mandate.ts` / Admin-Labels, Trustee-Views, `UnifiedDataBar`, `featuresApi` Mock | **done** | **Umsetzung 1–2:** Skript `local/scripts/_flatten_i18n_dicts.py` (mehrsprachige Dicts → deutscher String / `json.dumps`). Anschliessend manuell: `mainSystem.py` AICore-`providerLabels`-Fallback; `portTypes.PortField.description` auf `str`; `_deriveFormPayloadSchema` / `_deriveTransformSchema`; `entryPoints._normalize_title` liefert `str`. **`Role.description`** bleibt `TextMultilingual`: `coerce_text_multilingual()` in `datamodelUtils.py` wandelt Template-Strings/Dicts; Bootstrap- und Feature-`Role(...)`-Aufrufe nutzen `coerce_text_multilingual(...)`. +**Umsetzung 3:** Flatten-Skript (Phase 3) für alle 12 Datamodel-Dateien. Neues Regex-Pattern `en, fr, de` für Trustee-Reihenfolge. Manuell: `SubscriptionPlan.title` und `.description` von `Dict[str, str]` auf `str` geändert; Downstream-Fixes in `routeSubscription.py`, `mainServiceSubscription.py`, `stripeBootstrap.py` (`.get("de")` → direkter String-Zugriff). `_registerDatamodelOptionLabels()` in `i18nRegistry.py` war bereits kompatibel (nutzt `_extractDe` das `str` und `dict` handelt). + +**Umsetzung 4:** `PHASE4` im Flatten-Skript; `frontendTypes.py`: `CUSTOM_TYPE_DESCRIPTIONS`, `getCustomTypeDescription`, `registerCustomType` entfernt (ungenutzt). **Umsetzung 5:** `Store.tsx` / `storeApi` / `routeStore`: Label & Description als deutsche i18n-Keys + `t()`; `FEATURE_REGISTRY` und `MandateFeature.label` als `string`; Hilfsfunktion `labelAsI18nKey()`; Admin-Seiten mit `t(labelAsI18nKey(...))`; `routeAdminFeatures.get_my_feature_instances`: `_featureLabelPlain()` liefert String-Labels statt Dict-Fallback. + ## Problemstellung Trotz Phase 1–7 der i18n-Unification existieren noch **~640+ statische mehrsprachige Dicts** (`{"en":…, "de":…, "fr":…}`) im Gateway und **~60+ Stellen** im Frontend. Diese Dicts: