i18n DE/EN + DossierSettings panel + English file renames

i18n:
- src/i18n/de.json + en.json: 200+ keys covering all main panels
- src/i18n/index.js: t(key, vars) reads window.DOSSIER_LANG
- panel_base.py: injects window.DOSSIER_LANG from dossier_settings.json
- EbenenManager, GeschossManager, AusschnitteApp, LayoutsApp: all
  context menus and main labels use t()

DossierSettings panel:
- DossierSettingsApp.jsx: language toggle (DE/EN pill) + launcher status
- toolbar.py: OPEN_SETTINGS opens new Rhino-hosted satellite window,
  SAVE_LANG writes lang to dossier_settings.json + reloads all panels

File renames (JSX → English):
- ZeichnungsebenenApp → DrawingLevelsApp
- GeschossManager/Dialog/Settings → Floor*
- AusschnitteApp/Settings → Viewports*
- EbenenManager/Settings → Layer*
- GestaltungApp → StylesApp, OberleisteApp → ToolbarApp
- WerkzeugeApp → ToolsApp, DimensionenApp → DimensionsApp
- MassstabApp → ScaleApp, KameraApp → CameraApp
- MasseSettingsApp → UnitsSettingsApp
- ConfirmDeleteEbene → ConfirmDeleteLayer
- AusschnittLayerDialog → ViewportLayerDialog

Python module renames:
- rhinopanel.py → layers_panel.py
- oberleiste.py → toolbar.py
- gestaltung.py → styles.py
- werkzeuge.py → tools.py
- dimensionen.py → dimensions.py
- startup.py _MODULE_TO_PY updated, all cross-imports fixed
This commit is contained in:
2026-06-06 11:09:33 +02:00
parent 92b4baa285
commit 375487c10c
45 changed files with 998 additions and 148 deletions
+12 -12
View File
@@ -771,7 +771,7 @@ def _find_ebene_sublayer_name(doc, keywords, default_code, default_name,
print("[ELEMENTE] build_layers nach auto-add:", ex)
# Ebenen-Manager UI mit-informieren via broadcast_state
try:
import rhinopanel
import layers_panel as rhinopanel
rhinopanel._broadcast_state(doc)
except Exception as ex:
print("[ELEMENTE] broadcast_state:", ex)
@@ -866,7 +866,7 @@ def _ensure_referenz_child_in_doc(doc, parent_code, parent_keywords,
z_raw = doc.Strings.GetValue("dossier_zeichnungsebenen")
zlist = json.loads(z_raw) if z_raw else []
if zlist: layer_builder.build_layers(doc, zlist, ebenen)
import rhinopanel
import layers_panel as rhinopanel
rhinopanel._broadcast_state(doc)
except Exception as ex:
print("[ELEMENTE] _ensure_referenz_child:", ex)
@@ -953,7 +953,7 @@ def _ensure_oeff_ebenen_in_doc(doc):
z_raw = doc.Strings.GetValue("dossier_zeichnungsebenen")
zlist = json.loads(z_raw) if z_raw else []
if zlist: layer_builder.build_layers(doc, zlist, ebenen)
import rhinopanel
import layers_panel as rhinopanel
rhinopanel._broadcast_state(doc)
except Exception as ex:
print("[ELEMENTE] _ensure_oeff_ebenen_in_doc build:", ex)
@@ -3641,7 +3641,7 @@ def _get_all_materials(doc):
merged[n].setdefault("uvScaleM", 1.0)
merged[n].setdefault("textures", {})
try:
import rhinopanel
import layers_panel as rhinopanel
ps = rhinopanel.load_project_settings(doc) if doc else None
if isinstance(ps, dict):
for m in ps.get("materials", []):
@@ -3657,7 +3657,7 @@ def _get_all_wand_styles(doc):
"""Liefert alle Wand-Stile aus den Project-Settings. Wenn keine
konfiguriert (auch keine Defaults greifbar), leere Liste."""
try:
import rhinopanel
import layers_panel as rhinopanel
ps = rhinopanel.load_project_settings(doc) if doc else None
if isinstance(ps, dict):
return list(ps.get("wand_styles", []) or [])
@@ -13337,7 +13337,7 @@ class ElementeBridge(panel_base.BaseBridge):
# Projekt-Adresse als Vorschlag fuer die Adress-Suche
project_address = ""
try:
import rhinopanel
import layers_panel as rhinopanel
ps = rhinopanel.load_project_settings(doc) if doc else None
if isinstance(ps, dict):
project_address = (ps.get("project", {}) or {}).get("address") or ""
@@ -14223,7 +14223,7 @@ class ElementeBridge(panel_base.BaseBridge):
zlist = json.loads(z_raw) if z_raw else []
if zlist:
layer_builder.build_layers(doc, zlist, ebenen)
import rhinopanel
import layers_panel as rhinopanel
rhinopanel._broadcast_state(doc)
except Exception as ex:
self._push_log(" swisstopo-ebenen build: {}".format(ex))
@@ -14317,7 +14317,7 @@ class ElementeBridge(panel_base.BaseBridge):
# UI informieren — broadcast_state schickt STATE_SYNC an
# ebenen_bridge_ref + zeichnungsebenen_bridge_ref
try:
import rhinopanel
import layers_panel as rhinopanel
rhinopanel._broadcast_state(doc)
except Exception as ex:
self._push_log("broadcast_state: {}".format(ex))
@@ -14660,7 +14660,7 @@ class ElementeBridge(panel_base.BaseBridge):
if zlist:
import layer_builder
layer_builder.build_layers(doc, zlist, ebenen)
import rhinopanel
import layers_panel as rhinopanel
rhinopanel._broadcast_state(doc)
except Exception as ex:
self._push_log("osm-ebenen build: {}".format(ex))
@@ -16679,7 +16679,7 @@ def _migrate_plangrafik_60_to_80_once(doc):
except Exception as ex:
print("[ELEMENTE] build_layers nach Plangrafik-Migration:", ex)
try:
import rhinopanel as _rp
import layers_panel as _rp
_rp._broadcast_state(doc)
except Exception: pass
@@ -16789,7 +16789,7 @@ def _migrate_layer_caps_once(doc):
except Exception as ex:
print("[ELEMENTE] build_layers nach CAPS-Migration:", ex)
try:
import rhinopanel as _rp
import layers_panel as _rp
_rp._broadcast_state(doc)
except Exception: pass
@@ -16874,7 +16874,7 @@ def _migrate_referenz_layer_once(doc):
# nicht neu angelegt hat (z.B. weil er schon existiert) wird das
# Panel sonst nicht neu gerendert.
try:
import rhinopanel
import layers_panel as rhinopanel
rhinopanel._broadcast_state(doc)
except Exception: pass
except Exception as ex: