Sprachumschaltung von DE nach EN über Menü möglich gemacht
This commit is contained in:
@@ -71,6 +71,7 @@ Die `start_briscad.bat` ruft `setenv.bat` auf und startet BricsCAD.
|
||||
| Gefaellestrecke | `Gefaellestrecke` | GEFAELLESTRECKE |
|
||||
| Omniflo (komplett) | `OmniModulInsert` | OMNI_APB_*, OMNI_W*_*, OMNI_AP*, OMNI_TEF_*, OMNI_TV_*, OMNI_EDIT |
|
||||
| Export | `export` | EXPORTSIVAS, EXPORTCSV, CALLPYTHON |
|
||||
| Konfiguration | `SSG_LIB_Commands` | SSG_DIM_SWITCH, SSG_SPRACHE |
|
||||
| Doppelklick/Kontextmenue | `SSG_LIB_Commands` | SSG_BLOCKEDIT |
|
||||
|
||||
### Entfernte Legacy-Dateien
|
||||
@@ -86,6 +87,7 @@ Detaillierte Dokumentation aller Funktionen und Befehle: siehe `Lisp/README.md`.
|
||||
| Datei | Befehle | Beschreibung |
|
||||
|---|---|---|
|
||||
| `ssg_core.lsp` | - | Kernel: ssg-start/ssg-end, ssg-cfg-or, ssg-attrib-read/write, Layer/Block-Ops |
|
||||
| `ssg_lang.lsp` | - | Sprachumschaltung Deutsch/Englisch (ssg-text, ssg-textf, *ssg-lang*) |
|
||||
| `ssg_dbg.lsp` | - | Debug-Logging (dbgopen, dbgmsg, dbgflush, dbgclose) |
|
||||
| `ssg_dialog.lsp` | - | DCL-Dialog-Vorlagen und Hilfsfunktionen |
|
||||
| `ssg_layer.lsp` | - | Layer-Verwaltung |
|
||||
@@ -94,7 +96,7 @@ Detaillierte Dokumentation aller Funktionen und Befehle: siehe `Lisp/README.md`.
|
||||
| `Gefaellestrecke.lsp` | GEFAELLESTRECKE | Gefaelle-Foerderanlage (AUS -> Staustrecke skaliert -> Separator -> EIN) |
|
||||
| `export.lsp` | EXPORTSIVAS, EXPORTCSV, OMNI_UPDATE_ATTRIBS | JSON-Sammlung und Python-Export (Omniflo-Merkmale/Sum-Zeile via lib/export_csv.py) |
|
||||
| `OmniModulInsert.lsp` | OMNI_LOAD, OMNI_APB_*, OMNI_W*_*, OMNI_AP60/AP110, OMNI_TEF_*, OMNI_TV_*, OMNI_APBW_*, OMNI_EDIT | Omniflo-Komponenten: Boegen, Weichen, Verbinder, Transferwagen, Edit-Dialog |
|
||||
| `SSG_LIB_Commands.lsp` | ILS_BTMT_*, ILS_ETF_*, ILS_K*_*, ILS_GK*_*, SSG_BLOCKEDIT | Dummy-Befehle fuer Menue + Doppelklick/Kontextmenue-Dispatcher |
|
||||
| `SSG_LIB_Commands.lsp` | ILS_BTMT_*, ILS_ETF_*, ILS_K*_*, ILS_GK*_*, SSG_BLOCKEDIT, SSG_DIM_SWITCH, SSG_SPRACHE | Dummy-Befehle fuer Menue + Doppelklick/Kontextmenue-Dispatcher + Konfiguration (2D/3D, Sprache) |
|
||||
| `menu-inventory.lsp` | MenuInventory | BricsCAD Diagnostik (Menuegruppen, Plugins, Startdateien) |
|
||||
|
||||
## DCL-Dialoge
|
||||
@@ -104,13 +106,14 @@ Detaillierte Dokumentation aller Funktionen und Befehle: siehe `Lisp/README.md`.
|
||||
| `kreisel_edit.dcl` | KreiselEdit (KreiselInsert.lsp) |
|
||||
| `omniflo_boegen.dcl` | OMNI_APB_* (OmniModulInsert.lsp) |
|
||||
| `omniflo_weichen.dcl` | OMNI_W*_* (OmniModulInsert.lsp) |
|
||||
| `sprache.dcl` | SSG_SPRACHE (SSG_LIB_Commands.lsp) |
|
||||
|
||||
## Menue (SSG_LIB.mnu + SSG_LIB.mnl)
|
||||
|
||||
- `SSG_LIB.mnu` - Menuedefinition mit Lazy-Loading (`(ssg-ensure "Modul") Befehl`)
|
||||
- `SSG_LIB.mnl` - Automatisch geladen mit dem Menue, definiert `ssg-ensure` Loader
|
||||
- `***MENUGROUP=SSG_LIB` - Menuegruppenname
|
||||
- `***POP1` - Hauptmenue (ILS, Omniflo, Export)
|
||||
- `***POP1` - Hauptmenue (ILS, Omniflo, Export, Konfiguration)
|
||||
- `***DOUBLECLICK` - Doppelklick auf INSERT-Bloecke ruft SSG_BLOCKEDIT auf
|
||||
- `***POP501` - Rechtsklick-Kontextmenue (KreiselEdit, OMNI_EDIT, SSG_BLOCKEDIT)
|
||||
|
||||
@@ -124,6 +127,7 @@ Werden via `bin/setenv.bat` gesetzt. Wichtigste:
|
||||
- `DXFM_LOG` - Log-Verzeichnis
|
||||
- `DXFM_DCL` - Pfad zu DCL-Dialogdateien
|
||||
- `DXFM_CFG` - Konfigurationsverzeichnis
|
||||
- `DXFM_LANG` - Aktive Sprache (`de_DE`/`en_GB`), persistiert von `SSG_SPRACHE`; Default `de_DE`
|
||||
|
||||
## Konventionen
|
||||
|
||||
|
||||
@@ -1069,17 +1069,17 @@
|
||||
(setq exit-hz (gf-exit-hz segmente))
|
||||
|
||||
;; Seite fuer AUS-Element (vor Winkelberechnung, da Laengenanpassung davon abhaengt)
|
||||
(princ "\n\nAUS-Element (AS_Element_90_*) - Seite waehlen:")
|
||||
(princ "\n 1 - Links")
|
||||
(princ "\n 2 - Rechts")
|
||||
(setq antwort (getstring "\nIhre Wahl (1/2) [1]: "))
|
||||
(princ (ssg-text "gf-seite-aus-header"))
|
||||
(princ (ssg-text "gf-seite-links"))
|
||||
(princ (ssg-text "gf-seite-rechts"))
|
||||
(setq antwort (getstring (ssg-text "prompt-wahl-1-2")))
|
||||
(setq as-seite (if (= antwort "2") "rechts" "links"))
|
||||
|
||||
;; Seite fuer EIN-Element
|
||||
(princ "\n\nEIN-Element (ES_Element_90_*) - Seite waehlen:")
|
||||
(princ "\n 1 - Links")
|
||||
(princ "\n 2 - Rechts")
|
||||
(setq antwort (getstring "\nIhre Wahl (1/2) [1]: "))
|
||||
(princ (ssg-text "gf-seite-ein-header"))
|
||||
(princ (ssg-text "gf-seite-links"))
|
||||
(princ (ssg-text "gf-seite-rechts"))
|
||||
(setq antwort (getstring (ssg-text "prompt-wahl-1-2")))
|
||||
(setq es-seite (if (= antwort "2") "rechts" "links"))
|
||||
|
||||
(setq as-block (strcat "AS_Element_90_" as-seite))
|
||||
|
||||
+22
-1
@@ -15,7 +15,7 @@ _MENULOAD → menu/SSG_LIB.mnu auswaehlen
|
||||
```
|
||||
|
||||
BricsCAD laedt daraufhin automatisch `SSG_LIB.mnl`, welches alle Module
|
||||
per `ssg-ensure` initialisiert (Kern: ssg_core/dbg/dialog/layer, dann
|
||||
per `ssg-ensure` initialisiert (Kern: ssg_core/lang/dbg/dialog/layer, dann
|
||||
alle Feature-Module). Details: siehe `../CLAUDE.md` Abschnitt "Lademechanismus".
|
||||
|
||||
**Manuell laden (Notfall / Entwicklung):**
|
||||
@@ -133,6 +133,20 @@ Interne Parser-Funktionen (nicht direkt aufrufen):
|
||||
|
||||
---
|
||||
|
||||
### `ssg_lang.lsp` – Sprachumschaltung (Deutsch/Englisch)
|
||||
|
||||
Zentrale Textverwaltung fuer benutzersichtbare Meldungen. Kern-Modul, wird direkt nach `ssg_core` geladen. Wird schrittweise auf weitere Module ausgerollt (siehe `doc/translate.md`).
|
||||
|
||||
| Funktion | Beschreibung |
|
||||
| --- | --- |
|
||||
| `ssg-text key` | Liefert Text zu `key` in `*ssg-lang*`, Fallback `de_DE`, dann Key selbst |
|
||||
| `ssg-textf key werte` | Wie `ssg-text`, ersetzt Platzhalter `%1 %2 ...` durch `werte` (Liste) |
|
||||
|
||||
Sprache umschalten: Befehl `SSG_SPRACHE` (Menue → Konfiguration → Sprache) setzt `*ssg-lang*`
|
||||
live und persistiert via `(setenv "DXFM_LANG" ...)`. Default ohne `DXFM_LANG` ist `"de_DE"`.
|
||||
|
||||
---
|
||||
|
||||
### `ssg_dbg.lsp` – Debug-Logging
|
||||
|
||||
Dateibasiertes Debug-Log mit gepuffertem Schreiben. `dbgf`/`dbg`/`dbgmsg` puffern im Speicher, `dbgreturn` flusht auf die Platte (open/append/close).
|
||||
@@ -350,6 +364,13 @@ Registrierte Dummy-Befehle:
|
||||
|
||||
> `FOERDERANLAGE` ist nicht hier definiert – dieser Befehl ist in `VarioFoerderer.lsp` implementiert.
|
||||
|
||||
**Konfigurationsbefehle** (Menue → Konfiguration):
|
||||
|
||||
| Befehl | Beschreibung |
|
||||
| --- | --- |
|
||||
| `SSG_DIM_SWITCH` | Schaltet zwischen 2D/3D-Bloecken um (setzt `DXFM_DIM`, `DXFM_BLOCKS`, `DXFM_OMNIFLO`) |
|
||||
| `SSG_SPRACHE` | Oeffnet Dialog `sprache.dcl`, setzt `*ssg-lang*` und persistiert via `DXFM_LANG` (siehe [`ssg_lang.lsp`](#ssg_langlsp--sprachumschaltung-deutschenglisch)) |
|
||||
|
||||
**SSG_BLOCKEDIT** – Doppelklick/Kontextmenue-Dispatcher:
|
||||
|
||||
Erkennt den Blocktyp des selektierten INSERT-Blocks und ruft den passenden Bearbeitungsbefehl auf:
|
||||
|
||||
@@ -132,9 +132,41 @@
|
||||
(setenv "DXFM_DIM" dim-neu)
|
||||
(setenv "DXFM_BLOCKS" (strcat basis "\\data\\ils\\" dim-neu))
|
||||
(setenv "DXFM_OMNIFLO" (strcat basis "\\data\\omniflo\\" dim-neu))
|
||||
(princ (strcat "\nModus umgeschaltet auf: " dim-neu))
|
||||
(princ (strcat "\n DXFM_BLOCKS = " (getenv "DXFM_BLOCKS")))
|
||||
(princ (strcat "\n DXFM_OMNIFLO = " (getenv "DXFM_OMNIFLO")))
|
||||
(princ (ssg-textf "dim-switch-modus" (list dim-neu)))
|
||||
(princ (ssg-textf "dim-switch-blocks" (list (getenv "DXFM_BLOCKS"))))
|
||||
(princ (ssg-textf "dim-switch-omniflo" (list (getenv "DXFM_OMNIFLO"))))
|
||||
(princ)
|
||||
)
|
||||
|
||||
;; ============================================================
|
||||
;; SSG_SPRACHE - Sprache umschalten (Deutsch/Englisch)
|
||||
;; Setzt *ssg-lang* live und persistiert ueber DXFM_LANG
|
||||
;; ============================================================
|
||||
|
||||
(defun ssg-sprache-init ( / idx)
|
||||
(start_list "sprache")
|
||||
(add_list "Deutsch")
|
||||
(add_list "Englisch")
|
||||
(end_list)
|
||||
(setq idx (if (= *ssg-lang* "en_GB") "1" "0"))
|
||||
(set_tile "sprache" idx)
|
||||
)
|
||||
|
||||
(defun ssg-sprache-accept ( / idx neu)
|
||||
(setq idx (get_tile "sprache"))
|
||||
(setq neu (if (= idx "1") "en_GB" "de_DE"))
|
||||
(setq *ssg-lang* neu)
|
||||
(setenv "DXFM_LANG" neu)
|
||||
)
|
||||
|
||||
(defun c:SSG_SPRACHE ()
|
||||
(ssg-dialog-run
|
||||
(strcat (getenv "DXFM_DCL") "/sprache.dcl")
|
||||
"sprache"
|
||||
'ssg-sprache-init
|
||||
'ssg-sprache-accept
|
||||
)
|
||||
(princ (ssg-textf "sprache-gewechselt" (list *ssg-lang*)))
|
||||
(princ)
|
||||
)
|
||||
|
||||
|
||||
+4
-4
@@ -85,11 +85,11 @@
|
||||
(if defa
|
||||
(progn
|
||||
(initget 1 "Yes No Yes")
|
||||
(= (getkword (strcat "\n" prompt-text " Y/N <Y>: ")) "No")
|
||||
(= (getkword (strcat "\n" prompt-text (ssg-text "ques-yn-default-yes"))) "No")
|
||||
)
|
||||
(progn
|
||||
(initget 1 "Yes No No")
|
||||
(= (getkword (strcat "\n" prompt-text " Y/N <N>: ")) "Yes")
|
||||
(= (getkword (strcat "\n" prompt-text (ssg-text "ques-yn-default-no"))) "Yes")
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -536,8 +536,8 @@
|
||||
(if (not (new_dialog dialog-name dat))
|
||||
(progn (alert "Dialog konnte nicht geladen werden.") (exit))
|
||||
)
|
||||
(if init-fn (init-fn))
|
||||
(action_tile "accept" "(if accept-fn (accept-fn)) (done_dialog 1)")
|
||||
(if init-fn (apply init-fn nil))
|
||||
(action_tile "accept" "(if accept-fn (apply accept-fn nil)) (done_dialog 1)")
|
||||
(action_tile "cancel" "(done_dialog 0)")
|
||||
(start_dialog)
|
||||
(unload_dialog dat)
|
||||
|
||||
+2
-1
@@ -24,6 +24,7 @@
|
||||
)
|
||||
(load (strcat base-path "ssg_core.lsp") "ssg_core.lsp nicht gefunden")
|
||||
(ssg-load-config)
|
||||
(load (strcat base-path "ssg_lang.lsp") "ssg_lang.lsp nicht gefunden")
|
||||
(load (strcat base-path "ssg_dbg.lsp") "ssg_dbg.lsp nicht gefunden")
|
||||
(load (strcat base-path "ssg_dialog.lsp") "ssg_dialog.lsp nicht gefunden")
|
||||
(load (strcat base-path "ssg_layer.lsp") "ssg_layer.lsp nicht gefunden")
|
||||
@@ -34,7 +35,7 @@
|
||||
(load (strcat base-path "tests.lsp") "tests.lsp nicht gefunden")
|
||||
(load (strcat base-path "OmniModulInsert.lsp") "OmniModulInsert.lsp nicht gefunden")
|
||||
(load (strcat base-path "SSG_LIB_Commands.lsp") "SSG_LIB_Commands.lsp nicht gefunden")
|
||||
(prompt "\nSSG-Bibliotheken geladen: ssg_core, ssg_dbg, ssg_dialog, ssg_layer, KreiselInsert, VarioFoerderer, Gefaellestrecke, export, tests, OmniModulInsert, SSG_LIB_Commands")
|
||||
(prompt "\nSSG-Bibliotheken geladen: ssg_core, ssg_lang, ssg_dbg, ssg_dialog, ssg_layer, KreiselInsert, VarioFoerderer, Gefaellestrecke, export, tests, OmniModulInsert, SSG_LIB_Commands")
|
||||
(princ)
|
||||
)
|
||||
|
||||
|
||||
@@ -59,6 +59,9 @@ SSG_LIB
|
||||
│ │ ├── Antriebst. rechts → OMNI_TEF_AntriebR
|
||||
│ │ └── TEF Gerade → OMNI_TEF_Gerade
|
||||
│ └── KettenFoerderer → OMNI_KettenFoerderer
|
||||
├── Konfiguration
|
||||
│ ├── Umschalten 2D und 3D → SSG_DIM_SWITCH
|
||||
│ └── Sprache → SSG_SPRACHE
|
||||
└── External
|
||||
├── Call Python → CALLPYTHON
|
||||
├── Export Sivas → EXPORTSIVAS
|
||||
@@ -127,6 +130,13 @@ Unterstuetzte Bogenwinkel: 3, 9, 12, 15, 24, 36, 48 Grad
|
||||
| `SSG-LayerOnAll` | Alle ausgeschalteten Layer einschalten |
|
||||
| `SSG-LayerDelete` | Layer und alle Objekte darauf loeschen (mit Bestaetigung) |
|
||||
|
||||
### SSG_LIB_Commands.lsp - Konfiguration
|
||||
|
||||
| Befehl | Beschreibung |
|
||||
| --- | --- |
|
||||
| `SSG_DIM_SWITCH` | Schaltet zwischen 2D- und 3D-Bloecken um |
|
||||
| `SSG_SPRACHE` | Sprache umschalten (Deutsch/Englisch), persistiert ueber `DXFM_LANG` |
|
||||
|
||||
### tests.lsp - Export und Python-Integration
|
||||
|
||||
| Befehl | Beschreibung |
|
||||
@@ -140,6 +150,7 @@ Unterstuetzte Bogenwinkel: 3, 9, 12, 15, 24, 36, 48 Grad
|
||||
| Datei | Beschreibung |
|
||||
| --- | --- |
|
||||
| `ssg_core.lsp` | Kernel: Umgebung, Layer-Ops, Block-Ops, Attribut-Ops, Fehlerbehandlung |
|
||||
| `ssg_lang.lsp` | Sprachumschaltung Deutsch/Englisch (`ssg-text`, `ssg-textf`, `*ssg-lang*`) |
|
||||
| `ssg_dialog.lsp` | Dialog-Vorlagen: Slide-Preview, Modul-Dialog, Block-Einfuegesequenz |
|
||||
| `ssg_layer.lsp` | Layer-Verwaltungsbefehle |
|
||||
| `ssg_load.lsp` | Loader: Laedt alle SSG-Bibliotheken in korrekter Reihenfolge |
|
||||
@@ -180,6 +191,7 @@ dxfmakros/
|
||||
| `DXFM_CFG` | Konfigurationsdateien |
|
||||
| `DXFM_TESTS` | Testverzeichnis |
|
||||
| `DXFM_DATA` | Datenverzeichnis |
|
||||
| `DXFM_LANG` | Aktive Sprache (`de_DE`/`en_GB`), persistiert von `SSG_SPRACHE`; Default `de_DE` |
|
||||
| `BRICSCAD` | Pfad zur BricsCAD-Executable |
|
||||
|
||||
## Einrichtung
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
// ============================================================
|
||||
// sprache.dcl - Sprache umschalten (Deutsch/Englisch)
|
||||
// ============================================================
|
||||
|
||||
sprache : dialog {
|
||||
label = "Sprache / Language";
|
||||
|
||||
: popup_list {
|
||||
key = "sprache";
|
||||
label = "Sprache / Language:";
|
||||
width = 30;
|
||||
}
|
||||
|
||||
ok_cancel;
|
||||
}
|
||||
+10
-2
@@ -2,7 +2,7 @@
|
||||
;; SSG_LIB.mnl - Automatisch geladen beim MENULOAD von SSG_LIB.mnu
|
||||
;;
|
||||
;; Definiert den Lazy-Loader (ssg-ensure) und laedt alle Module.
|
||||
;; Kern-Module: ssg_core, ssg_dbg, ssg_dialog, ssg_layer, ssg_id
|
||||
;; Kern-Module: ssg_core, ssg_lang, ssg_dbg, ssg_dialog, ssg_layer, ssg_id
|
||||
;; Feature-Module: KreiselInsert, Gefaellestrecke, VarioFoerderer, ...
|
||||
;; ============================================================
|
||||
|
||||
@@ -71,6 +71,13 @@
|
||||
(ssg-load-config)
|
||||
)
|
||||
)
|
||||
(if (not *ssg-lang-loaded*)
|
||||
(progn
|
||||
(ssg-ensure-load "ssg_lang")
|
||||
(set '*ssg-lang-loaded* t)
|
||||
(set '*ssg-ssg_lang-loaded* t)
|
||||
)
|
||||
)
|
||||
(if (not *ssg-dbg-loaded*)
|
||||
(progn
|
||||
(ssg-ensure-load "ssg_dbg")
|
||||
@@ -132,6 +139,7 @@
|
||||
(progn
|
||||
;; 1) Kern-Module (Core)
|
||||
(ssg-ensure "ssg_core")
|
||||
(ssg-ensure "ssg_lang")
|
||||
(ssg-ensure "ssg_dbg")
|
||||
(ssg-ensure "ssg_dialog")
|
||||
(ssg-ensure "ssg_layer")
|
||||
@@ -140,7 +148,7 @@
|
||||
;; Allgemein-Zusammenfassung
|
||||
(princ "\n=========================================")
|
||||
(princ "\n[SSG_LIB] Core-Module geladen:")
|
||||
(princ "\n ssg_core, ssg_dbg, ssg_dialog, ssg_layer, ssg_id")
|
||||
(princ "\n ssg_core, ssg_lang, ssg_dbg, ssg_dialog, ssg_layer, ssg_id")
|
||||
(princ (strcat "\n Pfad: " *ssg-lisp-pfad*))
|
||||
(princ "\n=========================================")
|
||||
|
||||
|
||||
@@ -118,6 +118,7 @@
|
||||
[<-Export CSV]^C^C(ssg-ensure "export") EXPORTCSV
|
||||
[->Konfiguration]
|
||||
[Umschalten 2D und 3D]^C^C(ssg-ensure "SSG_LIB_Commands") SSG_DIM_SWITCH
|
||||
[Sprache]^C^C(ssg-ensure "SSG_LIB_Commands") SSG_SPRACHE
|
||||
[<-Konfiguration Schliessen]^C^C
|
||||
[->Tests]
|
||||
[Alle Tests ausfuehren]^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_run_all.lsp")) SSG_RUN_ALL_TESTS
|
||||
|
||||
Reference in New Issue
Block a user