From cfdcd31b304a6626ae6dd6a3c85ff1233eb1e8d4 Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Wed, 15 Jul 2026 23:47:20 +0200 Subject: [PATCH] Sprachen als .json Datei in lang Ordner gelegt --- Lisp/ssg_lang.lsp | 1754 +++------------------------------------------ bin/setenv.bat | 3 + lang/de_DE.json | 407 +++++++++++ lang/en_GB.json | 407 +++++++++++ 4 files changed, 904 insertions(+), 1667 deletions(-) create mode 100644 lang/de_DE.json create mode 100644 lang/en_GB.json diff --git a/Lisp/ssg_lang.lsp b/Lisp/ssg_lang.lsp index 0220fa2..f59b83b 100644 --- a/Lisp/ssg_lang.lsp +++ b/Lisp/ssg_lang.lsp @@ -2,1671 +2,100 @@ ;; SSG_LANG.LSP - Sprachumschaltung (Deutsch/Englisch) ;; Zentrale Textverwaltung fuer benutzersichtbare Meldungen. ;; Kern-Modul, wird direkt nach ssg_core geladen. +;; +;; Die Texte liegen extern in lang/de_DE.json und lang/en_GB.json. +;; Diese Datei ist reiner Lade-/Zugriffscode. Beim Laden wird +;; *ssg-texts* aus den JSON-Dateien befuellt - Format wie bisher: +;; (key (cons "de_DE" wert) (cons "en_GB" wert)) +;; Die JSON-Dateien werden aus Lisp/ssg_lang.lsp einmalig per +;; tools/migrate_lang_to_json.py erzeugt und danach direkt gepflegt. ;; ============================================================ ;; ------------------------------------------------------------ -;; TEXTTABELLE -;; Eintrag: (list key (cons "de_DE" "...") (cons "en_GB" "...")) +;; Alle Vorkommen von alt in str durch neu ersetzen. +;; Frueh definiert, da ssg-lang-unescape es beim Laden braucht. ;; ------------------------------------------------------------ +(defun ssg-str-replace-all (neu alt str / pos ergebnis) + (setq ergebnis "") + (while (setq pos (vl-string-search alt str)) + (setq ergebnis (strcat ergebnis (substr str 1 pos) neu)) + (setq str (substr str (+ pos 1 (strlen alt)))) + ) + (strcat ergebnis str) +) -(setq *ssg-texts* - (list +;; ------------------------------------------------------------ +;; Sprachordner ermitteln: 1) DXFMAKRO env, 2) *ssg-lisp-pfad*, 3) nil. +;; Gleiches Fallback-Muster wie in Gefaellestrecke.lsp/KreiselInsert.lsp. +;; DXFM_LANG bleibt der Sprachcode und wird hier NICHT als Pfad genutzt. +;; ------------------------------------------------------------ +(defun ssg-lang-dir ( / ) + (cond + ((and (getenv "DXFMAKRO") (= (type (getenv "DXFMAKRO")) 'STR) + (> (strlen (getenv "DXFMAKRO")) 0)) + (strcat (vl-string-right-trim "/" (vl-string-translate "\\" "/" (getenv "DXFMAKRO"))) + "/lang")) + ((and (boundp '*ssg-lisp-pfad*) (= (type *ssg-lisp-pfad*) 'STR) + (vl-string-search "/Lisp" *ssg-lisp-pfad*)) + (strcat (substr *ssg-lisp-pfad* 1 (vl-string-search "/Lisp" *ssg-lisp-pfad*)) + "/lang")) + (t nil) + ) +) - ;; Rekonstruiert aus git diff (Runde 3, manuell, letzte Luecken) - (list "omni-alle-winkel" - (cons "de_DE" "alle Winkel") - (cons "en_GB" "all angles") - ) - (list "omni-grad" - (cons "de_DE" " Grad") - (cons "en_GB" " deg") - ) - (list "omni-bogen-keine-gefunden" - (cons "de_DE" "Keine Boegen fuer %1%2 gefunden.") - (cons "en_GB" "No arcs found for %1%2.") - ) - (list "omni-weiche-keine-gefunden" - (cons "de_DE" "Keine Weichen fuer %1%2 gefunden.") - (cons "en_GB" "No switches found for %1%2.") - ) - (list "vfc-ursprung" - (cons "de_DE" "Ursprung") - (cons "en_GB" "Origin") - ) - (list "vfc-block-eingefuegt-xyzref-ksaus" - (cons "de_DE" "\n '%1' eingefuegt (XY:%2 Z:%3)\n KS_AUS: X=%4 Y=%5 Z=%6") - (cons "en_GB" "\n '%1' inserted (XY:%2 Z:%3)\n KS_AUS: X=%4 Y=%5 Z=%6") - ) - (list "vfl-ja" - (cons "de_DE" "\n 1 - Ja") - (cons "en_GB" "\n 1 - Yes") - ) - (list "vfl-nein" - (cons "de_DE" "\n 2 - Nein") - (cons "en_GB" "\n 2 - No") - ) - (list "vfl-sep-vor-frage" - (cons "de_DE" "\n\nZusaetzlichen Separator VOR dem horizontalen Stueck?") - (cons "en_GB" "\n\nInsert additional separator BEFORE the horizontal section?") - ) - (list "vfl-sep-nach-frage" - (cons "de_DE" "\n\nZusaetzlichen Separator NACH dem horizontalen Stueck?") - (cons "en_GB" "\n\nInsert additional separator AFTER the horizontal section?") - ) - (list "vfl-sep-an-stelle-frage" - (cons "de_DE" "\n\nZusaetzlichen Separator an dieser Stelle einfuegen?") - (cons "en_GB" "\n\nInsert additional separator at this point?") - ) - (list "vfl-gf-bogen-winkel-header" - (cons "de_DE" "\n\nGF-Bogen - Winkel waehlen:") - (cons "en_GB" "\n\nGF arc - choose angle:") - ) - (list "vfl-gf-bogen-seite-header" - (cons "de_DE" "\nGF-Bogen - Seite waehlen:") - (cons "en_GB" "\nGF arc - choose side:") - ) - (list "vfl-winkel-30" - (cons "de_DE" "\n 1 - 30 Grad") - (cons "en_GB" "\n 1 - 30 deg") - ) - (list "vfl-winkel-60" - (cons "de_DE" "\n 2 - 60 Grad") - (cons "en_GB" "\n 2 - 60 deg") - ) - (list "vfl-winkel-90" - (cons "de_DE" "\n 3 - 90 Grad") - (cons "en_GB" "\n 3 - 90 deg") - ) - (list "vfl-variokurve-winkel-header" - (cons "de_DE" "\n\nVario-Kurve - Winkel waehlen:") - (cons "en_GB" "\n\nVario curve - choose angle:") - ) - (list "vfl-opt1-90grad" - (cons "de_DE" "\n 1 - 90 Grad") - (cons "en_GB" "\n 1 - 90 deg") - ) - (list "vfl-opt2-60grad" - (cons "de_DE" "\n 2 - 60 Grad") - (cons "en_GB" "\n 2 - 60 deg") - ) - (list "vfl-opt3-30grad" - (cons "de_DE" "\n 3 - 30 Grad") - (cons "en_GB" "\n 3 - 30 deg") - ) - (list "vfl-prompt-wahl-1-3-def1" - (cons "de_DE" "\nIhre Wahl (1/2/3) [1]: ") - (cons "en_GB" "\nYour choice (1/2/3) [1]: ") - ) - (list "vfl-variokurve-seite-header" - (cons "de_DE" "\nVario-Kurve - Seite waehlen:") - (cons "en_GB" "\nVario curve - choose side:") - ) - (list "vfl-variokurve-variante-header" - (cons "de_DE" "\nVario-Kurve - Variante waehlen:") - (cons "en_GB" "\nVario curve - choose variant:") - ) - (list "vfl-variante-aussen" - (cons "de_DE" "\n 1 - Aussen") - (cons "en_GB" "\n 1 - Outer") - ) - (list "vfl-variante-innen" - (cons "de_DE" "\n 2 - Innen") - (cons "en_GB" "\n 2 - Inner") - ) - (list "vfl-ist-ziel-vergleich-header" - (cons "de_DE" "\n\n>>> IST-ZIEL-VERGLEICH (ES-Element):") - (cons "en_GB" "\n\n>>> ACTUAL-TARGET COMPARISON (ES element):") - ) - (list "vfl-soll-xyz" - (cons "de_DE" "\n Soll: X=%1 Y=%2 Z=%3") - (cons "en_GB" "\n Target: X=%1 Y=%2 Z=%3") - ) - (list "vfl-ist-xyz" - (cons "de_DE" "\n Ist : X=%1 Y=%2 Z=%3") - (cons "en_GB" "\n Actual: X=%1 Y=%2 Z=%3") - ) - (list "vfl-abweichung-xyz" - (cons "de_DE" "\n Abweichung: dX=%1 dY=%2 dZ=%3 mm") - (cons "en_GB" "\n Deviation: dX=%1 dY=%2 dZ=%3 mm") - ) +;; ------------------------------------------------------------ +;; Escapes aus einem JSON-Rohwert aufloesen: \n -> Zeilenumbruch. +;; Der JSON-Parser (ssg-cfg-parse-nested) liefert \n als literale +;; 2-Zeichen-Folge (Backslash + n) zurueck; hier wird sie in einen +;; echten Zeilenumbruch gewandelt. Suchmuster ist "\\n" (= die zwei +;; Zeichen Backslash+n); "\n" waere bereits ein Zeilenumbruch. +;; Andere Escapes kommen in den Sprachdateien nicht vor. +;; ------------------------------------------------------------ +(defun ssg-lang-unescape (wert) + (if wert + (ssg-str-replace-all (chr 10) "\\n" wert) + ) +) - ;; Rekonstruiert aus git diff (Runde 2, nach Fix des Extraktionsskripts) - (list "gf-fehler-block-fehlt" - (cons "de_DE" "\n FEHLER: Block '%1' fehlt") - (cons "en_GB" "\n ERROR: block '%1' missing") - ) - (list "gf-fehler-block-fehlt-ausruf" - (cons "de_DE" "\n FEHLER: Block '%1' fehlt!") - (cons "en_GB" "\n ERROR: block '%1' missing!") - ) - (list "gf-fehler-blockdatei-fehlt" - (cons "de_DE" "\n FEHLER: Block-Datei nicht gefunden: %1") - (cons "en_GB" "\n ERROR: block file not found: %1") - ) - (list "gf-fehler-keine-linie" - (cons "de_DE" "\n Fehler: keine Linie!") - (cons "en_GB" "\n Error: no line!") - ) - (list "gf-laenge-null-uebersprungen" - (cons "de_DE" "\n (Laenge 0 - uebersprungen)") - (cons "en_GB" "\n (length 0 - skipped)") - ) - (list "gf-prompt-linie-waehlen" - (cons "de_DE" "\n >> Linie waehlen: ") - (cons "en_GB" "\n >> Select line: ") - ) - (list "gf-status-3dlinie-z" - (cons "de_DE" "\n 3D-Linie: Z_start=%1 Z_end=%2") - (cons "en_GB" "\n 3D line: Z_start=%1 Z_end=%2") - ) - (list "gf-status-block-l-z" - (cons "de_DE" "\n %1 L=%2 -> Z=%3") - (cons "en_GB" "\n %1 L=%2 -> Z=%3") - ) - (list "gf-status-bogen-masse" - (cons "de_DE" "\n %1: dx=%2 dz=%3") - (cons "en_GB" "\n %1: dx=%2 dz=%3") - ) - (list "gf-status-gefaellebogen" - (cons "de_DE" "\n Gefaellebogen %1 hz=%2%3 -> Z=%4") - (cons "en_GB" "\n Slope arc %1 hz=%2%3 -> Z=%4") - ) - (list "gf-status-hzincl" - (cons "de_DE" "\n HzIncl %1 L=%2 hz=%3%4 v=%5%6 -> Z=%7") - (cons "en_GB" "\n HzIncl %1 L=%2 hz=%3%4 v=%5%6 -> Z=%7") - ) - (list "gf-status-hzks" - (cons "de_DE" "\n HzKS %1 hz=%2%3 v=%4%5 -> Z=%6") - (cons "en_GB" "\n HzKS %1 hz=%2%3 v=%4%5 -> Z=%6") - ) - (list "gf-status-ks-aus-z" - (cons "de_DE" "\n KS_AUS Z=%1") - (cons "en_GB" "\n KS_AUS Z=%1") - ) - (list "gf-warnung-block-fehlt-nullwerte" - (cons "de_DE" "\n WARNUNG: %1 fehlt - Nullwerte") - (cons "en_GB" "\n WARNING: %1 missing - using zero values") - ) - (list "gf-warnung-ks-fehlt" - (cons "de_DE" "\n WARNUNG: KS_EIN/KS_AUS fehlt!") - (cons "en_GB" "\n WARNING: KS_EIN/KS_AUS missing!") - ) - (list "gf-warnung-ks-fehlt-in" - (cons "de_DE" "\n WARNUNG: KS fehlt in '%1'") - (cons "en_GB" "\n WARNING: KS missing in '%1'") - ) - (list "gf-warnung-ks-fehlt-in2" - (cons "de_DE" "\n WARNUNG: KS fehlt in %1") - (cons "en_GB" "\n WARNING: KS missing in %1") - ) - (list "kreisel-abstand-ausgabe" - (cons "de_DE" "\n-> Abstand: %1 mm") - (cons "en_GB" "\n-> Distance: %1 mm") - ) - (list "kreisel-beschriftung-erzeugt" - (cons "de_DE" "\n-> Beschriftung: %1 (Höhe=%2mm, Arial, zentriert)") - (cons "en_GB" "\n-> Label: %1 (height=%2mm, Arial, centered)") - ) - (list "kreisel-bestehende-blockdef" - (cons "de_DE" "\n-> Verwende bestehende Blockdefinition: %1") - (cons "en_GB" "\n-> Using existing block definition: %1") - ) - (list "kreisel-connect-zusammenfassung" - (cons "de_DE" "\n-> Abstand: %1 mm Rotation: %2 Grad Hoehe: %3 Kreiselart: %4") - (cons "en_GB" "\n-> Distance: %1 mm Rotation: %2 deg Height: %3 Kreisel type: %4") - ) - (list "kreisel-eckrad-eingefuegt" - (cons "de_DE" "\n-> Eckrad #%1 eingefuegt: %2 bei %3,%4 Rotation=%5 Hoehe=%6") - (cons "en_GB" "\n-> Eckrad #%1 inserted: %2 at %3,%4 rotation=%5 height=%6") - ) - (list "kreisel-edit-aktualisiert" - (cons "de_DE" "\nKreisel aktualisiert: Name=%1 Abstand=%2 Hoehe=%3 Rotation=%4") - (cons "en_GB" "\nKreisel updated: Name=%1 Distance=%2 Height=%3 Rotation=%4") - ) - (list "kreisel-edit-bestehend" - (cons "de_DE" "\n-> Bestehend: Abstand=%1 Drehung=%2 Art=%3") - (cons "en_GB" "\n-> Existing: Distance=%1 Rotation=%2 Type=%3") - ) - (list "kreisel-edit-dialog-fehlt" - (cons "de_DE" "Dialog nicht verfuegbar: %1") - (cons "en_GB" "Dialog not available: %1") - ) - (list "kreisel-eingefuegt" - (cons "de_DE" "\n-> Kreisel #%1 eingefügt: %2 (Höhe=%3)") - (cons "en_GB" "\n-> Kreisel #%1 inserted: %2 (height=%3)") - ) - (list "kreisel-emsg-distanz-klein" - (cons "de_DE" "Distanz zu klein! (%1 < %2)") - (cons "en_GB" "Distance too small! (%1 < %2)") - ) - (list "kreisel-hoehe-aus-3dpunkt" - (cons "de_DE" "\n-> Hoehe aus 3D-Punkt uebernommen: %1") - (cons "en_GB" "\n-> Height taken from 3D point: %1") - ) - (list "kreisel-hoehe-aus-basispunkt" - (cons "de_DE" "\n-> Höhe aus Basispunkt übernommen: %1") - (cons "en_GB" "\n-> Height taken from base point: %1") - ) - (list "kreisel-hoehe-aus-startpunkt" - (cons "de_DE" "\n-> Hoehe aus Startpunkt uebernommen: %1") - (cons "en_GB" "\n-> Height taken from start point: %1") - ) - (list "kreisel-hoehe-von-bestehendem" - (cons "de_DE" "\n-> Höhe von bestehendem Kreisel übernommen: %1") - (cons "en_GB" "\n-> Height taken from existing Kreisel: %1") - ) - (list "kreisel-insert-zusammenfassung" - (cons "de_DE" "\n-> Rotation: %1 Höhe: %2 Kreiselart: %3") - (cons "en_GB" "\n-> Rotation: %1 Height: %2 Kreisel type: %3") - ) - (list "kreisel-labelsetup-fertig" - (cons "de_DE" "\nNeue Einstellungen: Höhe=%1, Farbe=%2, Y-Versatz=%3, Schriftart=Arial") - (cons "en_GB" "\nNew settings: Height=%1, Colour=%2, Y offset=%3, Font=Arial") - ) - (list "kreisel-neue-beschriftungsposition" - (cons "de_DE" "\nNeue Beschriftungsposition: X=%1 Y=%2") - (cons "en_GB" "\nNew label position: X=%1 Y=%2") - ) - (list "kreisel-neue-blockdef" - (cons "de_DE" "\n-> Neue Blockdefinition: %1") - (cons "en_GB" "\n-> New block definition: %1") - ) - (list "kreisel-neue-texthoehe" - (cons "de_DE" "\nNeue Texthöhe: %1") - (cons "en_GB" "\nNew text height: %1") - ) - (list "kreisel-params-default-hoehe" - (cons "de_DE" "\nDefault-Höhe: %1") - (cons "en_GB" "\nDefault height: %1") - ) - (list "kreisel-params-default-laenge" - (cons "de_DE" "\nDefault-Laenge: %1") - (cons "en_GB" "\nDefault length: %1") - ) - (list "kreisel-params-durchmesser" - (cons "de_DE" "\nDurchmesser: %1") - (cons "en_GB" "\nDiameter: %1") - ) - (list "kreisel-params-typ" - (cons "de_DE" "\nKreiselart: %1") - (cons "en_GB" "\nKreisel type: %1") - ) - (list "kreisel-prompt-abstand" - (cons "de_DE" "\nAbstand (Tangentenlaenge) <%1>: ") - (cons "en_GB" "\nDistance (tangent length) <%1>: ") - ) - (list "kreisel-prompt-abstand-oben" - (cons "de_DE" "\nAbstand über Kreisel-Mitte <%1>: ") - (cons "en_GB" "\nDistance above Kreisel centre <%1>: ") - ) - (list "kreisel-prompt-hoehe-z" - (cons "de_DE" "\nHoehe (Z-Koordinate) <%1>: ") - (cons "en_GB" "\nHeight (Z coordinate) <%1>: ") - ) - (list "kreisel-prompt-neue-hoehe" - (cons "de_DE" "\nNeue Höhe <%1>: ") - (cons "en_GB" "\nNew height <%1>: ") - ) - (list "kreisel-prompt-neuer-abstand" - (cons "de_DE" "\nNeuer Abstand <%1>: ") - (cons "en_GB" "\nNew distance <%1>: ") - ) - (list "kreisel-prompt-schriftfarbe" - (cons "de_DE" "\nSchriftfarbe (1=Rot,2=Gelb,3=Grün,4=Cyan,5=Blau,6=Magenta,7=Weiß) <%1>: ") - (cons "en_GB" "\nFont colour (1=Red,2=Yellow,3=Green,4=Cyan,5=Blue,6=Magenta,7=White) <%1>: ") - ) - (list "kreisel-prompt-schrifthoehe" - (cons "de_DE" "\nSchrifthöhe <%1>: ") - (cons "en_GB" "\nFont height <%1>: ") - ) - (list "kreisel-prompt-texthoehe" - (cons "de_DE" "\nTexthöhe <%1>: ") - (cons "en_GB" "\nText height <%1>: ") - ) - (list "kreisel-prompt-x-abstand" - (cons "de_DE" "\nX-Abstand von AN8-Mitte <%1>: ") - (cons "en_GB" "\nX distance from AN8 centre <%1>: ") - ) - (list "kreisel-prompt-y-abstand" - (cons "de_DE" "\nY-Abstand von AN8-Mitte <%1>: ") - (cons "en_GB" "\nY distance from AN8 centre <%1>: ") - ) - (list "kreisel-redraw-bestehend" - (cons "de_DE" "\n-> Bestehend: Abstand=%1 Drehung=%2 Hoehe=%3 Art=%4") - (cons "en_GB" "\n-> Existing: Distance=%1 Rotation=%2 Height=%3 Type=%4") - ) - (list "kreisel-redraw-fertig" - (cons "de_DE" "\nKreisel neu gezeichnet. Abstand=%1") - (cons "en_GB" "\nKreisel redrawn. Distance=%1") - ) - (list "kreisel-script-distanz-klein" - (cons "de_DE" "\n[Connect] Distanz zu klein: %1") - (cons "en_GB" "\n[Connect] Distance too small: %1") - ) - (list "kreisel-textstil-erstellt" - (cons "de_DE" "\n-> Textstil '%1' mit Arial erstellt") - (cons "en_GB" "\n-> Text style '%1' created with Arial") - ) - (list "kreisel-typ-prompt" - (cons "de_DE" "\nBitte waehlen <%1>: ") - (cons "en_GB" "\nPlease choose <%1>: ") - ) - (list "omni-bogen-info-antriebsart" - (cons "de_DE" "\n Antriebsart: %1") - (cons "en_GB" "\n Drive type: %1") - ) - (list "omni-bogen-info-breite" - (cons "de_DE" "\n Breite: %1") - (cons "en_GB" "\n Width: %1") - ) - (list "omni-bogen-info-kurvenwinkel" - (cons "de_DE" "\n KurvenWinkel: %1") - (cons "en_GB" "\n Curve angle: %1") - ) - (list "omni-bogen-info-laenge" - (cons "de_DE" "\n Laenge: %1") - (cons "en_GB" "\n Length: %1") - ) - (list "omni-bogen-info-profiltyp" - (cons "de_DE" "\n ProfilTyp: %1") - (cons "en_GB" "\n Profile type: %1") - ) - (list "omni-bogen-info-radius" - (cons "de_DE" "\n Radius: %1") - (cons "en_GB" "\n Radius: %1") - ) - (list "omni-bogen-nicht-gefunden" - (cons "de_DE" "\nKein Bogen mit SivasId '%1' gefunden.") - (cons "en_GB" "\nNo arc with Sivas ID '%1' found.") - ) - (list "omni-dxf-eingefuegt" - (cons "de_DE" "\n[OMNI] %1 eingefuegt. Hoehe=%2 Drehung=%3%4") - (cons "en_GB" "\n[OMNI] %1 inserted. Height=%2 Rotation=%3%4") - ) - (list "omni-edit-aktualisiert" - (cons "de_DE" "\n[OMNI] Element aktualisiert: %1 Hoehe=%2 Drehung=%3") - (cons "en_GB" "\n[OMNI] Element updated: %1 Height=%2 Rotation=%3") - ) - (list "omni-edit-dxf-nicht-gefunden" - (cons "de_DE" "DXF nicht gefunden: %1") - (cons "en_GB" "DXF not found: %1") - ) - (list "omni-einfuegen-info" - (cons "de_DE" "\n[OMNI] Einfuegen: %1 (%2)") - (cons "en_GB" "\n[OMNI] Inserting: %1 (%2)") - ) - (list "omni-fehler-dxf-nicht-gefunden" - (cons "de_DE" "\n[OMNI] FEHLER: DXF nicht gefunden: %1") - (cons "en_GB" "\n[OMNI] ERROR: DXF not found: %1") - ) - (list "omni-insert-block-eingefuegt" - (cons "de_DE" "\n[OMNI] %1 eingefuegt. Laenge=%2 mm") - (cons "en_GB" "\n[OMNI] %1 inserted. Length=%2 mm") - ) - (list "omni-laenge-ueberschritten" - (cons "de_DE" "Die gewuenschte Fahrstreckenlaenge von %1 mm ueberschreitet die Maximallaenge von %2 mm des Fahrstreckenprofils.\nBitte neu definieren!") - (cons "en_GB" "The requested travel path length of %1 mm exceeds the maximum length of %2 mm of the travel path profile.\nPlease redefine!") - ) - (list "omni-weiche-info-breite" - (cons "de_DE" "\n Breite: %1") - (cons "en_GB" "\n Width: %1") - ) - (list "omni-weiche-info-kurvenrichtung" - (cons "de_DE" "\n KurvenRichtung: %1") - (cons "en_GB" "\n Curve direction:%1") - ) - (list "omni-weiche-info-kurvenwinkel" - (cons "de_DE" "\n KurvenWinkel: %1") - (cons "en_GB" "\n Curve angle: %1") - ) - (list "omni-weiche-info-laenge" - (cons "de_DE" "\n Laenge: %1") - (cons "en_GB" "\n Length: %1") - ) - (list "omni-weiche-info-profiltyp" - (cons "de_DE" "\n ProfilTyp: %1") - (cons "en_GB" "\n Profile type: %1") - ) - (list "omni-weiche-info-schaltungstyp" - (cons "de_DE" "\n Schaltungstyp: %1") - (cons "en_GB" "\n Switch type: %1") - ) - (list "omni-weiche-info-weichentyp" - (cons "de_DE" "\n WeichenTyp: %1") - (cons "en_GB" "\n Type of switch: %1") - ) - (list "omni-weiche-info-wklaenge" - (cons "de_DE" "\n WK-Laenge: %1") - (cons "en_GB" "\n WK length: %1") - ) - (list "omni-weiche-nicht-gefunden" - (cons "de_DE" "\nKeine Weiche mit SivasId '%1' gefunden.") - (cons "en_GB" "\nNo switch with Sivas ID '%1' found.") - ) - (list "vfc-3dlinie-start-ende" - (cons "de_DE" "\n 3D-Linie:\n Start: X=%1 Y=%2 Z=%3\n Ende: X=%4 Y=%5 Z=%6") - (cons "en_GB" "\n 3D line:\n Start: X=%1 Y=%2 Z=%3\n End: X=%4 Y=%5 Z=%6") - ) - (list "vfc-3dpolylinie-start-ende" - (cons "de_DE" "\n 3D-Polylinie:\n Start Z=%1 Ende Z=%2") - (cons "en_GB" "\n 3D polyline:\n Start Z=%1 End Z=%2") - ) - (list "vfc-block-einfuegepunkt" - (cons "de_DE" "\n Block-Einfuegepunkt: X=%1 Y=%2 Z=%3") - (cons "en_GB" "\n Block insertion point: X=%1 Y=%2 Z=%3") - ) - (list "vfc-block-eingefuegt-ksaus" - (cons "de_DE" "\n '%1' eingefuegt\n KS_AUS: X=%2 Y=%3 Z=%4") - (cons "en_GB" "\n '%1' inserted\n KS_AUS: X=%2 Y=%3 Z=%4") - ) - (list "vfc-delta-l-h-richtung" - (cons "de_DE" " - %1L=%2 mm %1H=%3 mm Fahrtrichtung=%4%5") - (cons "en_GB" " - %1L=%2 mm %1H=%3 mm Travel direction=%4%5") - ) - (list "vfc-endpunkt-xyz" - (cons "de_DE" "\n Endpunkt: X=%1 Y=%2 Z=%3") - (cons "en_GB" "\n End point: X=%1 Y=%2 Z=%3") - ) - (list "vfc-endpunkt-xyz-dxdz" - (cons "de_DE" "\n Endpunkt: X=%1 Y=%2 Z=%3 (dx=%4 dz=%5)") - (cons "en_GB" "\n End point: X=%1 Y=%2 Z=%3 (dx=%4 dz=%5)") - ) - (list "vfc-fahrtrichtung-ergebnis" - (cons "de_DE" "\n>>> Fahrtrichtung: %1%2") - (cons "en_GB" "\n>>> Travel direction: %1%2") - ) - (list "vfc-fehler-block-datei-fehlt" - (cons "de_DE" "\n FEHLER: Block-Datei nicht gefunden: %1") - (cons "en_GB" "\n ERROR: block file not found: %1") - ) - (list "vfc-fehler-block-nicht-in-bibliothek" - (cons "de_DE" "\n FEHLER: Block '%1' nicht in Bibliothek") - (cons "en_GB" "\n ERROR: block '%1' not in library") - ) - (list "vfc-fehler-block-nicht-in-bibliothek-abgebrochen" - (cons "de_DE" "\n FEHLER: Block '%1' nicht in Bibliothek - abgebrochen") - (cons "en_GB" "\n ERROR: block '%1' not in library - cancelled") - ) - (list "vfc-fehler-ks-fehlen" - (cons "de_DE" "\n FEHLER: KS_EIN/KS_AUS fehlen in '%1'") - (cons "en_GB" "\n ERROR: KS_EIN/KS_AUS missing in '%1'") - ) - (list "vfc-fehler-ungueltiger-einfuegepunkt" - (cons "de_DE" "\n FEHLER: Ungueltiger Einfuegepunkt fuer '%1'") - (cons "en_GB" "\n ERROR: invalid insertion point for '%1'") - ) - (list "vfc-fuege-block-ein-hz" - (cons "de_DE" "\n Fuege Block '%1' ein... (hz=%2%3)") - (cons "en_GB" "\n Inserting block '%1'... (hz=%2%3)") - ) - (list "vfc-fuege-block-ein-rotation-hz" - (cons "de_DE" "\n Fuege Block '%1' ein (Rotation %2%3 hz=%4%5)") - (cons "en_GB" "\n Inserting block '%1' (rotation %2%3 hz=%4%5)") - ) - (list "vfc-fuege-ein-lwhz" - (cons "de_DE" "\n Fuege '%1' ein (L=%2 mm, W=%3%4 hz=%5%6)") - (cons "en_GB" "\n Inserting '%1' (L=%2 mm, W=%3%4 hz=%5%6)") - ) - (list "vfc-ks-aus-xyz" - (cons "de_DE" "\n KS_AUS: X=%1 Y=%2 Z=%3") - (cons "en_GB" "\n KS_AUS: X=%1 Y=%2 Z=%3") - ) - (list "vfc-lade-block" - (cons "de_DE" "\n Lade Block: %1 ...") - (cons "en_GB" "\n Loading block: %1 ...") - ) - (list "vfc-laenge-uebersprungen" - (cons "de_DE" "\n Laenge=%1 mm -> uebersprungen") - (cons "en_GB" "\n Length=%1 mm -> skipped") - ) - (list "vfc-punkt-auf-objekt" - (cons "de_DE" "\n Punkt auf Objekt: Z=%1 mm") - (cons "en_GB" "\n Point on object: Z=%1 mm") - ) - (list "vfe-as30-mass" - (cons "de_DE" "\n AS_30_rechts: dx=%1 mm, dz=%2 mm") - (cons "en_GB" "\n AS_30_rechts: dx=%1 mm, dz=%2 mm") - ) - (list "vfe-block-fehlt-abbruch" - (cons "de_DE" "\n FEHLER: Block '%1' nicht in Bibliothek - abgebrochen") - (cons "en_GB" "\n ERROR: block '%1' not in library - cancelled") - ) - (list "vfe-bogen-nicht-vorhanden" - (cons "de_DE" "\n %1 -> Bogen nicht vorhanden") - (cons "en_GB" "\n %1 -> arc not available") - ) - (list "vfe-delta-info" - (cons "de_DE" "\n△L=%1 mm △H=%2 mm Richtung=%3") - (cons "en_GB" "\n\u0394L=%1 mm \u0394H=%2 mm Direction=%3") - ) - (list "vfe-empfohlener-winkel" - (cons "de_DE" "\n>>> Empfohlener Winkel: %1") - (cons "en_GB" "\n>>> Recommended angle: %1") - ) - (list "vfe-es30-mass" - (cons "de_DE" "\n ES_30_rechts: dx=%1 mm, dz=%2 mm") - (cons "en_GB" "\n ES_30_rechts: dx=%1 mm, dz=%2 mm") - ) - (list "vfe-extrahiere-block-mass" - (cons "de_DE" "\n Extrahiere %1 Masse...") - (cons "en_GB" "\n Extracting %1 dimensions...") - ) - (list "vfe-gefaellebogen-links-mass" - (cons "de_DE" "\n Gefaellebogen links: dx=%1 dz=%2 mm") - (cons "en_GB" "\n Slope arc left: dx=%1 dz=%2 mm") - ) - (list "vfe-gefaellebogen-rechts-mass" - (cons "de_DE" "\n Gefaellebogen rechts: dx=%1 dz=%2 mm") - (cons "en_GB" "\n Slope arc right: dx=%1 dz=%2 mm") - ) - (list "vfe-gefaellebogen-seite-dx" - (cons "de_DE" "\n Gefaellebogen %1: dx=%2 mm") - (cons "en_GB" "\n Slope arc %1: dx=%2 mm") - ) - (list "vfe-hz-incl-status" - (cons "de_DE" "\n HzIncl %1 L=%2 hz=%3 v=%4 -> Z=%5") - (cons "en_GB" "\n HzIncl %1 L=%2 hz=%3 v=%4 -> Z=%5") - ) - (list "vfe-hz-rot-status" - (cons "de_DE" "\n HzRot %1 hz=%2 v=%3 -> Z=%4") - (cons "en_GB" "\n HzRot %1 hz=%2 v=%3 -> Z=%4") - ) - (list "vfe-hz-rotks-status" - (cons "de_DE" "\n HzRotKS %1 hz=%2 -> Z=%3") - (cons "en_GB" "\n HzRotKS %1 hz=%2 -> Z=%3") - ) - (list "vfe-hz-scaleks-status" - (cons "de_DE" "\n HzScaleKS %1 %2mm hz=%3 -> Z=%4") - (cons "en_GB" "\n HzScaleKS %1 %2mm hz=%3 -> Z=%4") - ) - (list "vfe-ks-fehlt-startpunkt" - (cons "de_DE" "\n WARNUNG: KS fehlt in '%1' - verwende Startpunkt") - (cons "en_GB" "\n WARNING: KS missing in '%1' - using start point") - ) - (list "vfe-step1-as30" - (cons "de_DE" "\n\n1/15: %1 (0 Grad)") - (cons "en_GB" "\n\n1/15: %1 (0 deg)") - ) - (list "vfe-step2" - (cons "de_DE" "\n\n2/15: Staustrecke 400mm (%1 Grad hz, 3 Grad vert, KS_EIN)") - (cons "en_GB" "\n\n2/15: Buffer section 400mm (%1 deg hz, 3 deg vert, KS_EIN)") - ) - (list "vfe-step3" - (cons "de_DE" "\n\n3/15: Separator (300mm, %1 Grad hz, 3 Grad vert)") - (cons "en_GB" "\n\n3/15: Separator (300mm, %1 deg hz, 3 deg vert)") - ) - (list "vfe-step4" - (cons "de_DE" "\n\n4/15: %1 (Anfang, %2 Grad hz, 0 Grad vert, KS_EIN)") - (cons "en_GB" "\n\n4/15: %1 (start, %2 deg hz, 0 deg vert, KS_EIN)") - ) - (list "vfe-step5-strecke" - (cons "de_DE" "\n\n5/15: Gefaellestrecke (3 Grad, L=%1 mm)") - (cons "en_GB" "\n\n5/15: Slope section (3 deg, L=%1 mm)") - ) - (list "vfe-step7" - (cons "de_DE" "\n\n7/15: %1 (3 Grad geneigt)") - (cons "en_GB" "\n\n7/15: %1 (3 deg inclined)") - ) - (list "vfe-step8-ab" - (cons "de_DE" "\n\n8/15: Gefaellestrecke (%1 Grad, L=%2 mm)") - (cons "en_GB" "\n\n8/15: Slope section (%1 deg, L=%2 mm)") - ) - (list "vfe-step8-auf" - (cons "de_DE" "\n\n8/15: Steigungsstrecke (%1 Grad, L=%2 mm)") - (cons "en_GB" "\n\n8/15: Incline section (%1 deg, L=%2 mm)") - ) - (list "vfe-tabelle-zeile" - (cons "de_DE" "\n %1 %2 mm %3 mm ") - (cons "en_GB" "\n %1 %2 mm %3 mm ") - ) - (list "vfe-tabelle-zeile-fehler" - (cons "de_DE" "\n %1 --- --- FEHLER") - (cons "en_GB" "\n %1 --- --- ERROR") - ) - (list "vfl-20m-hinweis" - (cons "de_DE" "\n >>> HINWEIS: Foerderer laenger als 20 m (%1 m) - Motorstation empfohlen!") - (cons "en_GB" "\n >>> NOTE: conveyor longer than 20 m (%1 m) - motor station recommended!") - ) - (list "vfl-block-erstellt" - (cons "de_DE" "\n>>> Block '%1' (%2) erstellt und eingefuegt.") - (cons "en_GB" "\n>>> Block '%1' (%2) created and inserted.") - ) - (list "vfl-fehler-rest-nicht-baubar" - (cons "de_DE" "\n FEHLER: Rest nicht baubar (zu steil/zu kurz fuer Schwanz Motor+GF2+Separator+ES). Bitte weiter zeichnen oder flacher planen.") - (cons "en_GB" "\n ERROR: remainder cannot be built (too steep/too short for tail motor+GF2+separator+ES). Please continue drawing or plan flatter.") - ) - (list "vfl-fuege-block-ein" - (cons "de_DE" "\n Fuege %1 ein ...") - (cons "en_GB" "\n Inserting %1 ...") - ) - (list "vfl-hinweis-gf2-minimum" - (cons "de_DE" "\n HINWEIS: berechnetes GF2=%1 mm < Minimum %2 mm -> auf Minimum angehoben (ES endet dadurch etwas weiter; siehe Ist-Ziel-Report).") - (cons "en_GB" "\n NOTE: calculated GF2=%1 mm < minimum %2 mm -> raised to minimum (ES therefore ends a bit further on; see actual-vs-target report).") - ) - (list "vfl-horizontale-zwischenstrecke" - (cons "de_DE" "\n\nHorizontale Zwischenstrecke (0 Grad, L=%1 mm)") - (cons "en_GB" "\n\nHorizontal intermediate section (0 deg, L=%1 mm)") - ) - (list "vfl-kettenende-modus-ziel" - (cons "de_DE" "\n>>> Kettenende-Modus: Ziel dL=%1 mm, dH=%2 mm (%3). GF2 variiert mit dem Winkel.") - (cons "en_GB" "\n>>> Chain-end mode: target dL=%1 mm, dH=%2 mm (%3). GF2 varies with the angle.") - ) - (list "vfl-prompt-hoehe-endpunkt" - (cons "de_DE" "\nHoehe (Z) des Endpunkts [%1]: ") - (cons "en_GB" "\nHeight (Z) of the end point [%1]: ") - ) - (list "vfl-prompt-hoehe-kettenende" - (cons "de_DE" "\nHoehe (Z) des Kettenendes (ES-Element) [%1]: ") - (cons "en_GB" "\nHeight (Z) of the chain end (ES element) [%1]: ") - ) - (list "vfl-prompt-wahl-bis-n" - (cons "de_DE" "\nIhre Wahl (1-%1) [1]: ") - (cons "en_GB" "\nYour choice (1-%1) [1]: ") - ) - (list "vfl-segment-gf-nicht-erlaubt" - (cons "de_DE" "\n Segment waere GF (zu steil) oder nicht baubar - innerhalb einer VF-Einheit nicht erlaubt.\n Bitte flacher/steigend zeichnen oder Foerderer beenden.") - (cons "en_GB" "\n Segment would be GF (too steep) or not buildable - not allowed within a VF unit.\n Please draw flatter/rising or end the conveyor.") - ) - (list "vfl-winkel-option" - (cons "de_DE" "\n %1 - %2 Grad (L_GF=%3 mm L_VF=%4 mm)") - (cons "en_GB" "\n %1 - %2 deg (L_GF=%3 mm L_VF=%4 mm)") - ) - (list "vfs-as90-mass" - (cons "de_DE" "\n AS_90: dx=%1 dz=%2") - (cons "en_GB" "\n AS_90: dx=%1 dz=%2") - ) - (list "vfs-berechnung-parameter" - (cons "de_DE" "\n△L=%1 mm △H=%2 mm Richtung=%3") - (cons "en_GB" "\n\u0394L=%1 mm \u0394H=%2 mm Direction=%3") - ) - (list "vfs-block-fehlende-item" - (cons "de_DE" "\n - %1") - (cons "en_GB" "\n - %1") - ) - (list "vfs-block-fehler-pfad" - (cons "de_DE" "\n FEHLER: DXFM_BLOCKS = %1") - (cons "en_GB" "\n ERROR: DXFM_BLOCKS = %1") - ) - (list "vfs-bogen-ab-block-fehlt" - (cons "de_DE" "\n FEHLER ab_%1: Block nicht geladen!") - (cons "en_GB" "\n ERROR ab_%1: block not loaded!") - ) - (list "vfs-bogen-ab-ks-fehlt" - (cons "de_DE" "\n FEHLER ab_%1: KS fehlt!") - (cons "en_GB" "\n ERROR ab_%1: KS missing!") - ) - (list "vfs-bogen-ab-ok" - (cons "de_DE" "\n OK ab_%1: dx=%2 dz=%3") - (cons "en_GB" "\n OK ab_%1: dx=%2 dz=%3") - ) - (list "vfs-bogen-auf-block-fehlt" - (cons "de_DE" "\n FEHLER auf_%1: Block nicht geladen!") - (cons "en_GB" "\n ERROR auf_%1: block not loaded!") - ) - (list "vfs-bogen-auf-ks-fehlt" - (cons "de_DE" "\n FEHLER auf_%1: KS fehlt!") - (cons "en_GB" "\n ERROR auf_%1: KS missing!") - ) - (list "vfs-bogen-auf-ok" - (cons "de_DE" "\n OK auf_%1: dx=%2 dz=%3") - (cons "en_GB" "\n OK auf_%1: dx=%2 dz=%3") - ) - (list "vfs-empfohlener-winkel" - (cons "de_DE" "\n>>> Empfohlener Winkel: %1%2") - (cons "en_GB" "\n>>> Recommended angle: %1%2") - ) - (list "vfs-es90-mass" - (cons "de_DE" "\n ES_90: dx=%1 dz=%2") - (cons "en_GB" "\n ES_90: dx=%1 dz=%2") - ) - (list "vfs-fehler-winkel-tabelle" - (cons "de_DE" "\n FEHLER: Winkel %1 nicht in Bogen-Tabelle!") - (cons "en_GB" "\n ERROR: angle %1 not in arc table!") - ) - (list "vfs-schritt-as" - (cons "de_DE" "\n\n1/11: %1 (hz=%2%3)") - (cons "en_GB" "\n\n1/11: %1 (hz=%2%3)") - ) - (list "vfs-schritt5-bogen1" - (cons "de_DE" "\n\n5/11: %1 (3 Grad geneigt)") - (cons "en_GB" "\n\n5/11: %1 (3 deg inclined)") - ) - (list "vfs-tabelle-zeile" - (cons "de_DE" "\n %1%2 %3 mm %4 mm ") - (cons "en_GB" "\n %1%2 %3 mm %4 mm ") - ) - (list "vfs-tabelle-zeile-fehler" - (cons "de_DE" "\n %1%2 --- --- FEHLER") - (cons "en_GB" "\n %1%2 --- --- ERROR") - ) - (list "vfs-vf-eingang-gf1" - (cons "de_DE" "\n\n[VF-Eingang] Gefaellestrecke GF1 (3 Grad, L=%1 mm)") - (cons "en_GB" "\n\n[VF-Eingang] Slope section GF1 (3 deg, L=%1 mm)") - ) - - - ;; vf_linienzug.lsp, vf_core.lsp, OmniModulInsert.lsp, KreiselInsert.lsp, vf_etage.lsp, vf_standard.lsp (rekonstruiert aus git diff) - (list "kreisel-abbruch-befehl" - (cons "de_DE" "\nBefehl abgebrochen.") - (cons "en_GB" "\nCommand cancelled.") - ) - (list "kreisel-abgebrochen" - (cons "de_DE" "\nAbgebrochen.") - (cons "en_GB" "\nCancelled.") - ) - (list "kreisel-connect-erfolgreich" - (cons "de_DE" "\nKreisel Connect erfolgreich!") - (cons "en_GB" "\nKreisel Connect successful!") - ) - (list "kreisel-connect-header" - (cons "de_DE" "\n--- Kreisel durch Linie definieren (AN -> SP) ---") - (cons "en_GB" "\n--- Define Kreisel by line (AN -> SP) ---") - ) - (list "kreisel-eckrad-beruehrpunkt" - (cons "de_DE" "\nBeruehrpunkt Eckrad (Tangente): ") - (cons "en_GB" "\nTangent point Eckrad (tangent): ") - ) - (list "kreisel-eckrad-fehler-identisch" - (cons "de_DE" "\nFehler: Beruehr- und Richtungspunkt sind identisch!") - (cons "en_GB" "\nError: tangent point and direction point are identical!") - ) - (list "kreisel-eckrad-richtung" - (cons "de_DE" "\nRichtung zum Kreismittelpunkt: ") - (cons "en_GB" "\nDirection to circle centre: ") - ) - (list "kreisel-emsg-kein-block" - (cons "de_DE" "Kein Block ausgewaehlt!") - (cons "en_GB" "No block selected!") - ) - (list "kreisel-emsg-kein-kreisel-block" - (cons "de_DE" "Kein Kreisel-Block! (Attribut ABSTAND fehlt)") - (cons "en_GB" "Not a Kreisel block! (attribute ABSTAND missing)") - ) - (list "kreisel-fehler-keine-entities" - (cons "de_DE" "\nFehler: Keine Entities zum Block erstellen!") - (cons "en_GB" "\nError: no entities to create block!") - ) - (list "kreisel-insert-fertig" - (cons "de_DE" "\nKreisel Modul eingefuegt.") - (cons "en_GB" "\nKreisel module inserted.") - ) - (list "kreisel-params-attribute-header" - (cons "de_DE" "\nAttribute im Block:") - (cons "en_GB" "\nAttributes in block:") - ) - (list "kreisel-params-header" - (cons "de_DE" "\n=== Kreisel Parameter ===") - (cons "en_GB" "\n=== Kreisel parameters ===") - ) - (list "kreisel-prompt-basispunkt" - (cons "de_DE" "\nBasispunkt (AN-Seite): ") - (cons "en_GB" "\nBase point (AN side): ") - ) - (list "kreisel-prompt-block-auswaehlen" - (cons "de_DE" "\nKreisel-Block auswaehlen: ") - (cons "en_GB" "\nSelect Kreisel block: ") - ) - (list "kreisel-prompt-endpunkt" - (cons "de_DE" "\nEndpunkt (SP-Seite aussen): ") - (cons "en_GB" "\nEnd point (SP side, outer): ") - ) - (list "kreisel-prompt-rotation" - (cons "de_DE" "\nRotation in Grad <0>: ") - (cons "en_GB" "\nRotation in degrees <0>: ") - ) - (list "kreisel-prompt-startpunkt" - (cons "de_DE" "\nStartpunkt (AN-Seite aussen): ") - (cons "en_GB" "\nStart point (AN side, outer): ") - ) - (list "kreisel-quick-fertig" - (cons "de_DE" "\nSchnell Einfuegen fertig.") - (cons "en_GB" "\nQuick insert done.") - ) - (list "kreisel-start-connect" - (cons "de_DE" "Kreisel Smart Connect") - (cons "en_GB" "Kreisel Smart Connect") - ) - (list "kreisel-start-eckrad" - (cons "de_DE" "Eckrad einfuegen") - (cons "en_GB" "Insert Eckrad") - ) - (list "kreisel-start-edit" - (cons "de_DE" "Kreisel bearbeiten") - (cons "en_GB" "Edit Kreisel") - ) - (list "kreisel-start-insert" - (cons "de_DE" "Kreisel Modul einfuegen") - (cons "en_GB" "Insert Kreisel module") - ) - (list "kreisel-start-quick" - (cons "de_DE" "Kreisel Schnell Einfuegen") - (cons "en_GB" "Kreisel quick insert") - ) - (list "kreisel-start-redraw" - (cons "de_DE" "Kreisel Neu Zeichnen") - (cons "en_GB" "Redraw Kreisel") - ) - (list "kreisel-start-script-connect" - (cons "de_DE" "Kreisel Script Connect") - (cons "en_GB" "Kreisel script connect") - ) - (list "kreisel-start-script-insert" - (cons "de_DE" "Kreisel Script Insert") - (cons "en_GB" "Kreisel script insert") - ) - (list "kreisel-typ-opt-pin" - (cons "de_DE" "\n[2] PIN") - (cons "en_GB" "\n[2] PIN") - ) - (list "kreisel-typ-opt-standard" - (cons "de_DE" "\n[1] STANDARD (ohne PIN)") - (cons "en_GB" "\n[1] STANDARD (without PIN)") - ) - (list "kreisel-warn-blockpfad" - (cons "de_DE" "\n[KreiselInsert] WARNUNG: Block-Pfad nicht ermittelbar!") - (cons "en_GB" "\n[KreiselInsert] WARNING: block path not determinable!") - ) - (list "kreisel-warn-core-fehlt" - (cons "de_DE" "\n[KreiselInsert] WARNUNG: ssg_core.lsp nicht gefunden - Standardwerte.") - (cons "en_GB" "\n[KreiselInsert] WARNING: ssg_core.lsp not found - using defaults.") - ) - (list "omni-abbruch" - (cons "de_DE" "\nAbgebrochen.") - (cons "en_GB" "\nCancelled.") - ) - (list "omni-abbruch-bogen" - (cons "de_DE" "\n[BOGEN] Abgebrochen.") - (cons "en_GB" "\n[ARC] Cancelled.") - ) - (list "omni-abbruch-omni" - (cons "de_DE" "\n[OMNI] Abgebrochen.") - (cons "en_GB" "\n[OMNI] Cancelled.") - ) - (list "omni-abbruch-weiche" - (cons "de_DE" "\n[WEICHE] Abgebrochen.") - (cons "en_GB" "\n[SWITCH] Cancelled.") - ) - (list "omni-bogen-dialog-ladefehler" - (cons "de_DE" "Bogen-Dialog konnte nicht geladen werden.") - (cons "en_GB" "Arc dialog could not be loaded.") - ) - (list "omni-edit-kein-block" - (cons "de_DE" "Kein Block ausgewaehlt!") - (cons "en_GB" "No block selected!") - ) - (list "omni-edit-kein-element" - (cons "de_DE" "Kein Omniflo-Element erkannt! (ARTINR/Blockname nicht im Katalog)") - (cons "en_GB" "No Omniflo element recognised! (ARTINR/block name not in catalog)") - ) - (list "omni-edit-prompt-auswahl" - (cons "de_DE" "\nOmniflo-Element auswaehlen: ") - (cons "en_GB" "\nSelect Omniflo element: ") - ) - (list "omni-fehler-dxfm-data" - (cons "de_DE" "\n[OMNI] FEHLER: DXFM_DATA nicht gesetzt!") - (cons "en_GB" "\n[OMNI] ERROR: DXFM_DATA not set!") - ) - (list "omni-fehler-dxfm-omniflo" - (cons "de_DE" "\n[OMNI] FEHLER: DXFM_OMNIFLO nicht gesetzt!") - (cons "en_GB" "\n[OMNI] ERROR: DXFM_OMNIFLO not set!") - ) - (list "omni-info-bogen-prompt" - (cons "de_DE" "\nSivasId des Bogens eingeben: ") - (cons "en_GB" "\nEnter Sivas ID of the arc: ") - ) - (list "omni-info-weiche-prompt" - (cons "de_DE" "\nSivasId der Weiche eingeben: ") - (cons "en_GB" "\nEnter Sivas ID of the switch: ") - ) - (list "omni-insert-keine-attribute" - (cons "de_DE" "\n[OMNI] Keine Attribute im Quell-Block gefunden.") - (cons "en_GB" "\n[OMNI] No attributes found on source block.") - ) - (list "omni-prompt-einfuegepunkt" - (cons "de_DE" "\nEinfuegepunkt waehlen: ") - (cons "en_GB" "\nSelect insertion point: ") - ) - (list "omni-prompt-endpunkt-fahrstrecke" - (cons "de_DE" "\nEndpunkt der Fahrstrecke waehlen: ") - (cons "en_GB" "\nSelect end point of the travel path: ") - ) - (list "omni-weiche-dialog-ladefehler" - (cons "de_DE" "Weichen-Dialog konnte nicht geladen werden.") - (cons "en_GB" "Switch dialog could not be loaded.") - ) - (list "prompt-wahl-1-2-3-4" - (cons "de_DE" "\nIhre Wahl (1/2/3/4) [1]: ") - (cons "en_GB" "\nYour choice (1/2/3/4) [1]: ") - ) - (list "vfc-alert-keine-gueltige-linie" - (cons "de_DE" "Keine gueltige Linie ausgewaehlt!") - (cons "en_GB" "No valid line selected!") - ) - (list "vfc-bitte-3dlinie-foerderstrecke" - (cons "de_DE" "\nBitte 3D-Linie fuer die Foerderstrecke auswaehlen:") - (cons "en_GB" "\nPlease select a 3D line for the conveyor section:") - ) - (list "vfc-bks-weltkoordinaten" - (cons "de_DE" "\n BKS auf Weltkoordinaten gesetzt.") - (cons "en_GB" "\n UCS set to world coordinates.") - ) - (list "vfc-eingabemodus-3dlinie" - (cons "de_DE" "\n 1 - 3D-Linie auswaehlen (Start- und Endpunkt mit Hoehe)") - (cons "en_GB" "\n 1 - Select 3D line (start and end point with height)") - ) - (list "vfc-eingabemodus-header" - (cons "de_DE" "\n\nEingabemodus waehlen:") - (cons "en_GB" "\n\nSelect input mode:") - ) - (list "vfc-eingabemodus-werte" - (cons "de_DE" "\n 2 - Werte manuell eingeben") - (cons "en_GB" "\n 2 - Enter values manually") - ) - (list "vfc-fahrtrichtung-0" - (cons "de_DE" "\n 1 - 0%1 (X-Achse +, Ost)") - (cons "en_GB" "\n 1 - 0%1 (X axis +, East)") - ) - (list "vfc-fahrtrichtung-180" - (cons "de_DE" "\n 3 - 180%1 (X-Achse -, West)") - (cons "en_GB" "\n 3 - 180%1 (X axis -, West)") - ) - (list "vfc-fahrtrichtung-270" - (cons "de_DE" "\n 4 - 270%1 (Y-Achse -, Sued)") - (cons "en_GB" "\n 4 - 270%1 (Y axis -, South)") - ) - (list "vfc-fahrtrichtung-90" - (cons "de_DE" "\n 2 - 90%1 (Y-Achse +, Nord)") - (cons "en_GB" "\n 2 - 90%1 (Y axis +, North)") - ) - (list "vfc-fahrtrichtung-header" - (cons "de_DE" "\n\nFahrtrichtung waehlen:") - (cons "en_GB" "\n\nSelect travel direction:") - ) - (list "vfc-fehler-keine-linie" - (cons "de_DE" "\n FEHLER: Keine Linie oder Polylinie ausgewaehlt!") - (cons "en_GB" "\n ERROR: No line or polyline selected!") - ) - (list "vfc-foerderrichtung-ab" - (cons "de_DE" "\n Foerderrichtung: AB") - (cons "en_GB" "\n Conveying direction: DOWN") - ) - (list "vfc-foerderrichtung-auf" - (cons "de_DE" "Auf") - (cons "en_GB" "Up") - ) - (list "vfc-foerderrichtung-menu" - (cons "de_DE" "\nFoerderrichtung:\n 1 - AUF\n 2 - AB") - (cons "en_GB" "\nConveying direction:\n 1 - UP\n 2 - DOWN") - ) - (list "vfc-kein-objekt-gewaehlt" - (cons "de_DE" "\n Kein Objekt gewaehlt.") - (cons "en_GB" "\n No object selected.") - ) - (list "vfc-label-von-bis" - (cons "de_DE" ": von %1mm bis %2mm, ") - (cons "en_GB" ": from %1mm to %2mm, ") - ) - (list "vfc-linie-polylinie-waehlen" - (cons "de_DE" "\n >> 3D-Linie oder Polylinie waehlen: ") - (cons "en_GB" "\n >> Select 3D line or polyline: ") - ) - (list "vfc-modus-3dlinie-fallback" - (cons "de_DE" "Linie") - (cons "en_GB" "Line") - ) - (list "vfc-modus-3dlinie-header" - (cons "de_DE" "\n\n>>> MODUS: 3D-Linie auswaehlen <<<") - (cons "en_GB" "\n\n>>> MODE: Select 3D line <<<") - ) - (list "vfc-modus-werteingabe-header" - (cons "de_DE" "\n\n>>> MODUS: Manuelle Werteingabe <<<") - (cons "en_GB" "\n\n>>> MODE: Manual value entry <<<") - ) - (list "vfc-objekt-block-waehlen" - (cons "de_DE" "\n >> Objekt (Block) waehlen: ") - (cons "en_GB" "\n >> Select object (block): ") - ) - (list "vfc-prompt-delta-h" - (cons "de_DE" " -%1H - Hoehenunterschied (mm): ") - (cons "en_GB" " -%1H - height difference (mm): ") - ) - (list "vfc-prompt-delta-l" - (cons "de_DE" " -%1L - Horizontale Distanz (mm): ") - (cons "en_GB" " -%1L - horizontal distance (mm): ") - ) - (list "vfc-prompt-startpunkt-aus" - (cons "de_DE" "\nStartpunkt fuer AUS_Element waehlen: ") - (cons "en_GB" "\nSelect start point for AUS_Element: ") - ) - (list "vfc-prompt-wahl-1-2-ohne-default" - (cons "de_DE" "\nIhre Wahl (1/2): ") - (cons "en_GB" "\nYour choice (1/2): ") - ) - (list "vfc-status-ok" - (cons "de_DE" " OK") - (cons "en_GB" " OK") - ) - (list "vfc-warnung-ks-nicht-gefunden" - (cons "de_DE" "\n WARNUNG: KS_EIN/KS_AUS nicht gefunden!") - (cons "en_GB" "\n WARNING: KS_EIN/KS_AUS not found!") - ) - (list "vfe-alert-bib-nicht-init" - (cons "de_DE" "Etage-Bibliothek nicht initialisiert!") - (cons "en_GB" "Etage library not initialised!") - ) - (list "vfe-berechnung-header" - (cons "de_DE" "\n ETAGE-BERECHNUNG FUER ALLE WINKEL") - (cons "en_GB" "\n ETAGE CALCULATION FOR ALL ANGLES") - ) - (list "vfe-bib-bereits-init" - (cons "de_DE" "\n Etage-Bibliothek bereits initialisiert.") - (cons "en_GB" "\n Etage library already initialised.") - ) - (list "vfe-bib-init-erfolg" - (cons "de_DE" "\n Etage-Bibliothek erfolgreich initialisiert.") - (cons "en_GB" "\n Etage library successfully initialised.") - ) - (list "vfe-bib-initialisiere" - (cons "de_DE" "\n Initialisiere Etage-Bibliothek...") - (cons "en_GB" "\n Initialising Etage library...") - ) - (list "vfe-ergebnistabelle-header" - (cons "de_DE" "\n ERGEBNISTABELLE (L_GF = gesamt beider GF-Strecken)") - (cons "en_GB" "\n RESULT TABLE (L_GF = total of both GF sections)") - ) - (list "vfe-extrahiere-as30" - (cons "de_DE" "\n Extrahiere AS_30_rechts Masse...") - (cons "en_GB" "\n Extracting AS_30_rechts dimensions...") - ) - (list "vfe-extrahiere-es30" - (cons "de_DE" "\n Extrahiere ES_30_rechts Masse...") - (cons "en_GB" "\n Extracting ES_30_rechts dimensions...") - ) - (list "vfe-kein-winkel-gefunden" - (cons "de_DE" "\n>>> KEIN passender Winkel gefunden!") - (cons "en_GB" "\n>>> NO matching angle found!") - ) - (list "vfe-status-gueltig" - (cons "de_DE" "GUELTIG") - (cons "en_GB" "VALID") - ) - (list "vfe-status-ungueltig" - (cons "de_DE" "UNGUELTIG (negative Laenge)") - (cons "en_GB" "INVALID (negative length)") - ) - (list "vfe-step5-skip" - (cons "de_DE" "\n\n5/15: L_GF1 (uebersprungen)") - (cons "en_GB" "\n\n5/15: L_GF1 (skipped)") - ) - (list "vfe-step6" - (cons "de_DE" "\n\n6/15: Umlenkstation (500mm, 3 Grad geneigt)") - (cons "en_GB" "\n\n6/15: deflection station (500mm, 3 degrees inclined)") - ) - (list "vfe-step8-skip" - (cons "de_DE" "\n\n8/15: L_VF (uebersprungen)") - (cons "en_GB" "\n\n8/15: L_VF (skipped)") - ) - (list "vfe-tabelle-spalten" - (cons "de_DE" "\n Winkel L_GF (mm) L_VF (mm) Status") - (cons "en_GB" "\n Angle L_GF (mm) L_VF (mm) Status") - ) - (list "vfe-warn-block-as30-fehlt" - (cons "de_DE" "\n WARNUNG: Block AS_Element_30_rechts fehlt - Standardwerte") - (cons "en_GB" "\n WARNING: block AS_Element_30_rechts missing - using defaults") - ) - (list "vfe-warn-block-es30-fehlt" - (cons "de_DE" "\n WARNUNG: Block ES_Element_30_rechts fehlt - Standardwerte") - (cons "en_GB" "\n WARNING: block ES_Element_30_rechts missing - using defaults") - ) - (list "vfe-warn-block-fehlt-links" - (cons "de_DE" "\n WARNUNG: Block fehlt - Standardwerte (links)") - (cons "en_GB" "\n WARNING: block missing - using defaults (left)") - ) - (list "vfe-warn-block-fehlt-rechts" - (cons "de_DE" "\n WARNUNG: Block fehlt - Standardwerte (rechts)") - (cons "en_GB" "\n WARNING: block missing - using defaults (right)") - ) - (list "vfe-warn-kein-ks-links" - (cons "de_DE" "\n WARNUNG: kein KS - Standardwerte (links)") - (cons "en_GB" "\n WARNING: no KS - using defaults (left)") - ) - (list "vfe-warn-kein-ks-rechts" - (cons "de_DE" "\n WARNUNG: kein KS - Standardwerte (rechts)") - (cons "en_GB" "\n WARNING: no KS - using defaults (right)") - ) - (list "vfe-warn-ks-fehlt-standard" - (cons "de_DE" "\n WARNUNG: KS fehlt - Standardwerte") - (cons "en_GB" "\n WARNING: KS missing - using defaults") - ) - (list "vfe-warn-lisp-pfad" - (cons "de_DE" "\n[vf_etage] WARNUNG: Lisp-Pfad nicht ermittelbar - vf_core.lsp nicht ladbar!") - (cons "en_GB" "\n[vf_etage] WARNING: Lisp path not determinable - cannot load vf_core.lsp!") - ) - (list "vfl-abgebrochen-kein-ziel" - (cons "de_DE" "\n Abgebrochen - kein Zielpunkt gewaehlt.") - (cons "en_GB" "\n Cancelled - no target point selected.") - ) - (list "vfl-bogen-ab3-uebergang" - (cons "de_DE" "\n\nVario_Bogen_ab_3 (Uebergang horizontal -> 3 Grad)") - (cons "en_GB" "\n\nVario_Bogen_ab_3 (transition horizontal -> 3 degrees)") - ) - (list "vfl-bogen-auf3-uebergang" - (cons "de_DE" "\n\nVario_Bogen_auf_3 (Uebergang 3 Grad -> horizontal)") - (cons "en_GB" "\n\nVario_Bogen_auf_3 (transition 3 degrees -> horizontal)") - ) - (list "vfl-gf-verteilung-ganz-einlauf" - (cons "de_DE" "\n 2 - Gesamte Staustrecke am Einlauf (GF1), kein GF2") - (cons "en_GB" "\n 2 - Entire buffer section at inlet (GF1), no GF2") - ) - (list "vfl-gf-verteilung-haelfte" - (cons "de_DE" "\n 1 - 1/2GF am Ausgang (GF2), 1/2GF am Einlauf (GF1)") - (cons "en_GB" "\n 1 - 1/2 GF at outlet (GF2), 1/2 GF at inlet (GF1)") - ) - (list "vfl-gf-verteilung-header" - (cons "de_DE" "\n\nStaustrecke (GF) - Verteilung waehlen:") - (cons "en_GB" "\n\nBuffer section (GF) - choose distribution:") - ) - (list "vfl-ist-endpunkt-frage" - (cons "de_DE" "\n\nIst der Endpunkt der Foerderer?") - (cons "en_GB" "\n\nIs this the end point of the conveyor?") - ) - (list "vfl-ist-kettenende-frage" - (cons "de_DE" "\n\nIst das das Kettenende (ES-Element)?") - (cons "en_GB" "\n\nIs this the chain end (ES element)?") - ) - (list "vfl-ja-motorstation-kettenende" - (cons "de_DE" "\n 3 - Ja (Motorstation setzen, Kettenende definieren)") - (cons "en_GB" "\n 3 - Yes (set motor station, define chain end)") - ) - (list "vfl-ja-nur-motorstation" - (cons "de_DE" "\n 1 - Ja (nur Motorstation setzen)") - (cons "en_GB" "\n 1 - Yes (set motor station only)") - ) - (list "vfl-ja-separator-es" - (cons "de_DE" "\n 1 - Ja (Separator + ES-Element setzen)") - (cons "en_GB" "\n 1 - Yes (set separator + ES element)") - ) - (list "vfl-linie-zu-kurz-simple" - (cons "de_DE" "\n Linie zu kurz - uebersprungen.") - (cons "en_GB" "\n Line too short - skipped.") - ) - (list "vfl-linie-zu-kurz-uebersprungen" - (cons "de_DE" "\n Linie zu kurz (oder entgegen der Fahrtrichtung) - uebersprungen.") - (cons "en_GB" "\n Line too short (or against travel direction) - skipped.") - ) - (list "vfl-mehrere-winkel-header" - (cons "de_DE" "\n\nMehrere gueltige Winkel - bitte gewuenschten Winkel waehlen:") - (cons "en_GB" "\n\nSeveral valid angles - please choose the desired angle:") - ) - (list "vfl-modus1-beschreibung" - (cons "de_DE" "\nGemischte Gefaellestrecke/VarioFoerderer-Kette entlang eines frei") - (cons "en_GB" "\nMixed slope-section/VarioFoerderer chain along a freely") - ) - (list "vfl-modus1-header" - (cons "de_DE" "\n VF-LINIENZUG - Modus 1: Manuelle Eingabe") - (cons "en_GB" "\n VF-LINIENZUG - Mode 1: Manual entry") - ) - (list "vfl-naechstes-element-vf" - (cons "de_DE" "\n\nNaechstes Element im VarioFoerderer:") - (cons "en_GB" "\n\nNext element in the VarioFoerderer:") - ) - (list "vfl-nein-weiterbauen" - (cons "de_DE" "\n 2 - Nein (weiterbauen)") - (cons "en_GB" "\n 2 - No (continue building)") - ) - (list "vfl-opt-auf-ab-foerderer" - (cons "de_DE" "\n 3 - Auf/Ab-Foerderer (Linie mit Hoehendifferenz)") - (cons "en_GB" "\n 3 - Up/down conveyor (line with height difference)") - ) - (list "vfl-opt-horizontaler-foerderer" - (cons "de_DE" "\n 1 - Horizontaler Foerderer (Linie ohne Hoehendifferenz)") - (cons "en_GB" "\n 1 - Horizontal conveyor (line without height difference)") - ) - (list "vfl-opt-vario-kurve" - (cons "de_DE" "\n 2 - Vario-Kurve (30/60/90 Grad)") - (cons "en_GB" "\n 2 - Vario curve (30/60/90 degrees)") - ) - (list "vfl-prompt-wahl-1-2-def2" - (cons "de_DE" "\nIhre Wahl (1/2) [2]: ") - (cons "en_GB" "\nYour choice (1/2) [2]: ") - ) - (list "vfl-prompt-wahl-1-3-def2" - (cons "de_DE" "\nIhre Wahl (1/2/3) [2]: ") - (cons "en_GB" "\nYour choice (1/2/3) [2]: ") - ) - (list "vfl-prompt-wahl-1-3-def3" - (cons "de_DE" "\nIhre Wahl (1/2/3) [3]: ") - (cons "en_GB" "\nYour choice (1/2/3) [3]: ") - ) - (list "vfl-sep-horizontal-info" - (cons "de_DE" "\n [horizontal] Separator (300 mm, 0 Grad)") - (cons "en_GB" "\n [horizontal] Separator (300 mm, 0 degrees)") - ) - (list "vfs-berechnung-header" - (cons "de_DE" "\n BERECHNUNG FUER ALLE WINKEL (Standard)") - (cons "en_GB" "\n CALCULATION FOR ALL ANGLES (Standard)") - ) - (list "vfs-block-fehlende-header" - (cons "de_DE" "\n Folgende Block-Dateien fehlen:") - (cons "en_GB" "\n The following block files are missing:") - ) - (list "vfs-ergebnistabelle-header" - (cons "de_DE" "\n ERGEBNISTABELLE") - (cons "en_GB" "\n RESULT TABLE") - ) - (list "vfs-extrahiere-aus" - (cons "de_DE" "\n Extrahiere AUS_Element Masse...") - (cons "en_GB" "\n Extracting AUS_Element dimensions...") - ) - (list "vfs-extrahiere-bogen" - (cons "de_DE" "\n Extrahiere Bogen-Masse...") - (cons "en_GB" "\n Extracting arc dimensions...") - ) - (list "vfs-extrahiere-ein" - (cons "de_DE" "\n Extrahiere EIN_Element Masse...") - (cons "en_GB" "\n Extracting EIN_Element dimensions...") - ) - (list "vfs-fehler-block-as90" - (cons "de_DE" "\n FEHLER: Block AS_Element_90_links nicht geladen!") - (cons "en_GB" "\n ERROR: block AS_Element_90_links not loaded!") - ) - (list "vfs-fehler-block-es90" - (cons "de_DE" "\n FEHLER: Block ES_Element_90_links nicht geladen!") - (cons "en_GB" "\n ERROR: block ES_Element_90_links not loaded!") - ) - (list "vfs-fehler-ks-as90" - (cons "de_DE" "\n FEHLER: KS_EIN/KS_AUS fehlt im AS_90!") - (cons "en_GB" "\n ERROR: KS_EIN/KS_AUS missing in AS_90!") - ) - (list "vfs-fehler-ks-es90" - (cons "de_DE" "\n FEHLER: KS_EIN/KS_AUS fehlt im ES_90!") - (cons "en_GB" "\n ERROR: KS_EIN/KS_AUS missing in ES_90!") - ) - (list "vfs-fehler-lib-nicht-init" - (cons "de_DE" "\n FEHLER: Bibliothek nicht korrekt initialisiert (AUS/EIN-Masse fehlen)!") - (cons "en_GB" "\n ERROR: library not correctly initialised (AUS/EIN dimensions missing)!") - ) - (list "vfs-kein-winkel-gefunden" - (cons "de_DE" "\n>>> KEIN passender Winkel gefunden!") - (cons "en_GB" "\n>>> NO matching angle found!") - ) - (list "vfs-lib-bereits-init" - (cons "de_DE" "\n Standard-Bibliothek bereits initialisiert.") - (cons "en_GB" "\n Standard library already initialised.") - ) - (list "vfs-lib-init-erfolg" - (cons "de_DE" "\n Standard-Bibliothek erfolgreich initialisiert.") - (cons "en_GB" "\n Standard library successfully initialised.") - ) - (list "vfs-lib-init-start" - (cons "de_DE" "\n Initialisiere Standard-Bibliothek...") - (cons "en_GB" "\n Initialising standard library...") - ) - (list "vfs-status-gueltig" - (cons "de_DE" "GUELTIG") - (cons "en_GB" "VALID") - ) - (list "vfs-status-ungueltig" - (cons "de_DE" "UNGUELTIG (negative Laenge)") - (cons "en_GB" "INVALID (negative length)") - ) - (list "vfs-tabelle-spalten" - (cons "de_DE" "\n Winkel L_GF (mm) L_VF (mm) Status") - (cons "en_GB" "\n Angle L_GF (mm) L_VF (mm) Status") - ) - (list "vfs-vf-eingang-gf1-skip" - (cons "de_DE" "\n\n[VF-Eingang] Gefaellestrecke GF1 (uebersprungen)") - (cons "en_GB" "\n\n[VF-Eingang] Slope section GF1 (skipped)") - ) - (list "vfs-vf-eingang-separator" - (cons "de_DE" "\n[VF-Eingang] Separator (300 mm, 3 Grad geneigt)") - (cons "en_GB" "\n[VF-Eingang] Separator (300 mm, 3 degrees inclined)") - ) - (list "vfs-vf-eingang-umlenk" - (cons "de_DE" "\n[VF-Eingang] Umlenkstation (500 mm, 3 Grad geneigt)") - (cons "en_GB" "\n[VF-Eingang] Deflection station (500 mm, 3 degrees inclined)") - ) - (list "vfs-warn-lisppfad" - (cons "de_DE" "\n[vf_standard] WARNUNG: Lisp-Pfad nicht ermittelbar - vf_core.lsp nicht ladbar!") - (cons "en_GB" "\n[vf_standard] WARNING: Lisp path not determinable - cannot load vf_core.lsp!") - ) - - - ;; SSG_LIB_Commands.lsp - SSG_DIM_SWITCH - (list "dim-switch-modus" - (cons "de_DE" "\nModus umgeschaltet auf: %1") - (cons "en_GB" "\nMode switched to: %1") - ) - (list "dim-switch-blocks" - (cons "de_DE" "\n DXFM_BLOCKS = %1") - (cons "en_GB" "\n DXFM_BLOCKS = %1") - ) - (list "dim-switch-omniflo" - (cons "de_DE" "\n DXFM_OMNIFLO = %1") - (cons "en_GB" "\n DXFM_OMNIFLO = %1") - ) - - ;; SSG_LIB_Commands.lsp - SSG_SPRACHE - (list "sprache-gewechselt" - (cons "de_DE" "\nSprache umgeschaltet auf: %1") - (cons "en_GB" "\nLanguage switched to: %1") - ) - - ;; SSG_LIB_Commands.lsp - SSG_BLOCKEDIT - (list "cmd-block-auswaehlen" - (cons "de_DE" "\nBlock auswaehlen: ") - (cons "en_GB" "\nSelect block: ") - ) - (list "cmd-kein-block-ausgewaehlt" - (cons "de_DE" "\nKein Block ausgewaehlt.") - (cons "en_GB" "\nNo block selected.") - ) - (list "cmd-kreisel-bearbeiten" - (cons "de_DE" "\nKreisel bearbeiten: %1") - (cons "en_GB" "\nEdit Kreisel: %1") - ) - (list "cmd-eckrad-bearbeiten" - (cons "de_DE" "\nEckrad bearbeiten: %1") - (cons "en_GB" "\nEdit Eckrad: %1") - ) - (list "cmd-omniflo-bearbeiten" - (cons "de_DE" "\nOmniflo Element bearbeiten: %1") - (cons "en_GB" "\nEdit Omniflo element: %1") - ) - (list "cmd-attribute-bearbeiten" - (cons "de_DE" "\nAttribute bearbeiten: %1") - (cons "en_GB" "\nEdit attributes: %1") - ) - - ;; ssg_layer.lsp - (list "layer-prompt-ziel-layer" - (cons "de_DE" "\nObjekt auf dem Ziel-Layer waehlen: ") - (cons "en_GB" "\nSelect object on the target layer: ") - ) - (list "layer-prompt-objekt" - (cons "de_DE" "\nObjekt waehlen: ") - (cons "en_GB" "\nSelect object: ") - ) - (list "layer-prompt-referenz-objekt" - (cons "de_DE" "\nReferenz-Objekt waehlen (bestimmt Typ und Layer): ") - (cons "en_GB" "\nSelect reference object (determines type and layer): ") - ) - (list "layer-prompt-typ-ermittlung" - (cons "de_DE" "\nNochmals fuer Typ-Ermittlung anklicken: ") - (cons "en_GB" "\nClick again to determine the type: ") - ) - (list "layer-prompt-ausblenden" - (cons "de_DE" "\nLayer zum Ausblenden anklicken (Enter=Ende): ") - (cons "en_GB" "\nClick layer to hide (Enter=End): ") - ) - (list "layer-prompt-einfrieren" - (cons "de_DE" "\nLayer zum Einfrieren anklicken (Enter=Ende): ") - (cons "en_GB" "\nClick layer to freeze (Enter=End): ") - ) - (list "layer-prompt-aktiv-bleibt" - (cons "de_DE" "\nObjekt auf dem Layer waehlen, der AKTIV bleibt: ") - (cons "en_GB" "\nSelect object on the layer that stays ACTIVE: ") - ) - (list "layer-prompt-name-loeschen" - (cons "de_DE" "\nLayername zum Loeschen: ") - (cons "en_GB" "\nLayer name to delete: ") - ) - (list "layer-err-kein-objekt" - (cons "de_DE" "Kein Objekt gewaehlt.") - (cons "en_GB" "No object selected.") - ) - (list "layer-err-kein-ziel-layer" - (cons "de_DE" "Kein Ziel-Layer gewaehlt.") - (cons "en_GB" "No target layer selected.") - ) - (list "layer-err-kein-ziel-layer-kurz" - (cons "de_DE" "Kein Ziel-Layer.") - (cons "en_GB" "No target layer.") - ) - (list "layer-err-keine-passenden-objekte" - (cons "de_DE" "Keine passenden Objekte gefunden.") - (cons "en_GB" "No matching objects found.") - ) - (list "layer-abgebrochen" - (cons "de_DE" "Abgebrochen.") - (cons "en_GB" "Cancelled.") - ) - (list "layer-err-kein-referenz-objekt" - (cons "de_DE" "Kein Referenz-Objekt gewaehlt.") - (cons "en_GB" "No reference object selected.") - ) - (list "layer-err-aktiv-nicht-ausschalten" - (cons "de_DE" "Aktiven Layer nicht ausschalten!") - (cons "en_GB" "Cannot turn off the active layer!") - ) - (list "layer-err-aktiv-nicht-einfrieren" - (cons "de_DE" "Aktiven Layer nicht einfrieren!") - (cons "en_GB" "Cannot freeze the active layer!") - ) - (list "layer-aktiver-layer" - (cons "de_DE" "\nAktiver Layer: %1") - (cons "en_GB" "\nActive layer: %1") - ) - (list "layer-objekt-auf-layer" - (cons "de_DE" "\nObjekt liegt auf Layer: %1") - (cons "en_GB" "\nObject is on layer: %1") - ) - (list "layer-nur-layer-sichtbar" - (cons "de_DE" "\nNur Layer '%1' ist sichtbar.") - (cons "en_GB" "\nOnly layer '%1' is visible.") - ) - (list "layer-geloescht" - (cons "de_DE" "\nLayer '%1' geloescht.") - (cons "en_GB" "\nLayer '%1' deleted.") - ) - (list "layer-leerer-geloescht" - (cons "de_DE" "\nLeerer Layer '%1' geloescht.") - (cons "en_GB" "\nEmpty layer '%1' deleted.") - ) - (list "layer-existiert-nicht" - (cons "de_DE" "Layer '%1' existiert nicht.") - (cons "en_GB" "Layer '%1' does not exist.") - ) - (list "layer-ques-typ-wechseln" - (cons "de_DE" "Layer dieser %1-Objekte wechseln?") - (cons "en_GB" "Change layer of these %1 objects?") - ) - (list "layer-ques-alle-loeschen" - (cons "de_DE" "Alle Objekte auf Layer '%1' loeschen?") - (cons "en_GB" "Delete all objects on layer '%1'?") - ) - - ;; ssg_core.lsp - (list "core-start-titel" - (cons "de_DE" "\n***** %1 *****\n") - (cons "en_GB" "\n***** %1 *****\n") - ) - (list "core-errhan-fehler" - (cons "de_DE" "\nFehler: ") - (cons "en_GB" "\nError: ") - ) - (list "core-blockname-exists" - (cons "de_DE" "Blockname '%1' existiert bereits - wird uebersprungen.") - (cons "en_GB" "Block name '%1' already exists - skipping.") - ) - (list "core-dwg-not-found" - (cons "de_DE" "\nFEHLER: Block nicht gefunden: %1") - (cons "en_GB" "\nERROR: Block not found: %1") - ) - - ;; export.lsp - (list "exp-cfg-not-found" - (cons "de_DE" "\n[export] WARNUNG: %1 nicht gefunden/leer, verwende Vorgaben.") - (cons "en_GB" "\n[export] WARNING: %1 not found/empty, using defaults.") - ) - (list "exp-check-ids" - (cons "de_DE" "\n[%1] Pruefe und vergebe IDs...") - (cons "en_GB" "\n[%1] Checking and assigning IDs...") - ) - (list "exp-update-hoehe-drehung" - (cons "de_DE" "\n[%1] Aktualisiere Hoehe/Drehung...") - (cons "en_GB" "\n[%1] Updating height/rotation...") - ) - (list "exp-collect-blocks" - (cons "de_DE" "\n[%1] Sammle relevante Bloecke...") - (cons "en_GB" "\n[%1] Collecting relevant blocks...") - ) - (list "exp-no-blocks-found" - (cons "de_DE" "\n[%1] Keine relevanten Bloecke gefunden.") - (cons "en_GB" "\n[%1] No relevant blocks found.") - ) - (list "exp-blocks-found" - (cons "de_DE" "\n[%1] %2 Bloecke gefunden.") - (cons "en_GB" "\n[%1] %2 blocks found.") - ) - (list "exp-output-dir" - (cons "de_DE" "\n[%1] Ausgabeordner: %2") - (cons "en_GB" "\n[%1] Output folder: %2") - ) - (list "exp-file-open-error" - (cons "de_DE" "\n[%1] FEHLER: Kann Datei nicht oeffnen: %2") - (cons "en_GB" "\n[%1] ERROR: Cannot open file: %2") - ) - (list "exp-json-written" - (cons "de_DE" "\n[%1] JSON geschrieben: %2") - (cons "en_GB" "\n[%1] JSON written: %2") - ) - (list "exp-calling-python" - (cons "de_DE" "\n[%1] Rufe Python auf...") - (cons "en_GB" "\n[%1] Calling Python...") - ) - (list "exp-export-started" - (cons "de_DE" "\n[%1] Export gestartet: %2") - (cons "en_GB" "\n[%1] Export started: %2") - ) - (list "exp-python-not-found" - (cons "de_DE" "\n[%1] FEHLER: Python-Skript nicht gefunden: %2") - (cons "en_GB" "\n[%1] ERROR: Python script not found: %2") - ) - (list "exp-omni-no-inserts" - (cons "de_DE" "\n[OMNI_UPDATE] Keine INSERT-Bloecke in der Zeichnung.") - (cons "en_GB" "\n[OMNI_UPDATE] No INSERT blocks in the drawing.") - ) - (list "exp-omni-updated" - (cons "de_DE" "\n[OMNI_UPDATE] %1 Elemente aktualisiert (HOEHE, DREHUNG).") - (cons "en_GB" "\n[OMNI_UPDATE] %1 elements updated (HEIGHT, ROTATION).") - ) - - ;; ssg_id.lsp - (list "id-new-assigned" - (cons "de_DE" "\n[ID] Neue ID zugewiesen: %1") - (cons "en_GB" "\n[ID] New ID assigned: %1") - ) - (list "id-invalid-block" - (cons "de_DE" "\n[ID] FEHLER: Kein gueltiger INSERT-Block!") - (cons "en_GB" "\n[ID] ERROR: Not a valid INSERT block!") - ) - (list "id-check-no-blocks" - (cons "de_DE" "\n[IDSCHECK] Keine relevanten Bloecke gefunden.") - (cons "en_GB" "\n[IDSCHECK] No relevant blocks found.") - ) - (list "id-check-missing-set" - (cons "de_DE" "\n[IDSCHECK] Fehlende ID gesetzt: %1 (Block %2)") - (cons "en_GB" "\n[IDSCHECK] Missing ID set: %1 (block %2)") - ) - (list "id-check-duplicate" - (cons "de_DE" "\n[IDSCHECK] Duplikat ID %1 -> neue ID %2 (Block %3)") - (cons "en_GB" "\n[IDSCHECK] Duplicate ID %1 -> new ID %2 (block %3)") - ) - (list "id-check-done" - (cons "de_DE" "\n[IDSCHECK] Fertig. %1 Duplikate korrigiert.") - (cons "en_GB" "\n[IDSCHECK] Done. %1 duplicates corrected.") - ) - (list "id-check-corrected" - (cons "de_DE" "\n[IDSCHECK] %1 IDs korrigiert.") - (cons "en_GB" "\n[IDSCHECK] %1 IDs corrected.") - ) - (list "id-select-block-prompt" - (cons "de_DE" "\nBlock waehlen: ") - (cons "en_GB" "\nSelect block: ") - ) - (list "id-generate-invalid" - (cons "de_DE" "\n[IDGENERATE] Kein gueltiger Block gewaehlt.") - (cons "en_GB" "\n[IDGENERATE] No valid block selected.") - ) - - ;; ssg_dialog.lsp - (list "dialog-nicht-verfuegbar" - (cons "de_DE" "Dialog nicht verfuegbar.") - (cons "en_GB" "Dialog not available.") - ) - (list "dialog-einfuegepunkt-waehlen" - (cons "de_DE" "\nEinfuegepunkt waehlen: ") - (cons "en_GB" "\nSelect insertion point: ") - ) - - ;; external_call.lsp - (list "extcall-python-rueckgabe" - (cons "de_DE" "\n[SSG_LIB] Python Rueckgabe: %1") - (cons "en_GB" "\n[SSG_LIB] Python return value: %1") - ) - (list "extcall-keine-rueckgabe" - (cons "de_DE" "\n[SSG_LIB] WARNUNG: Keine Rueckgabe von Python erhalten.") - (cons "en_GB" "\n[SSG_LIB] WARNING: No return value received from Python.") - ) - (list "extcall-skript-nicht-gefunden" - (cons "de_DE" "\n[SSG_LIB] FEHLER: %1 nicht gefunden!") - (cons "en_GB" "\n[SSG_LIB] ERROR: %1 not found!") - ) - - ;; VarioFoerderer.lsp - (list "vfstart-core-nicht-gefunden" - (cons "de_DE" "\n[VarioFoerderer] WARNUNG: vf_core.lsp nicht gefunden - Befehle nicht verfuegbar.") - (cons "en_GB" "\n[VarioFoerderer] WARNING: vf_core.lsp not found - commands not available.") - ) - - ;; EtageVarioFoerderer.lsp - (list "vfstart-etage-core-nicht-gefunden" - (cons "de_DE" "\n[EtageVarioFoerderer] WARNUNG: vf_core.lsp nicht gefunden - Befehle nicht verfuegbar.") - (cons "en_GB" "\n[EtageVarioFoerderer] WARNING: vf_core.lsp not found - commands not available.") - ) - - ;; Gefaellestrecke.lsp - Seite waehlen (AUS/EIN-Element) - (list "gf-seite-aus-header" - (cons "de_DE" "\n\nAUS-Element (AS_Element_90_*) - Seite waehlen:") - (cons "en_GB" "\n\nOutput element (AS_Element_90_*) - choose side:") - ) - (list "gf-seite-ein-header" - (cons "de_DE" "\n\nEIN-Element (ES_Element_90_*) - Seite waehlen:") - (cons "en_GB" "\n\nInput element (ES_Element_90_*) - choose side:") - ) - (list "gf-seite-links" - (cons "de_DE" "\n 1 - Links") - (cons "en_GB" "\n 1 - Left") - ) - (list "gf-seite-rechts" - (cons "de_DE" "\n 2 - Rechts") - (cons "en_GB" "\n 2 - Right") - ) - - ;; Wiederkehrender Menue-Prompt (mehrere Module) - (list "prompt-wahl-1-2" - (cons "de_DE" "\nIhre Wahl (1/2) [1]: ") - (cons "en_GB" "\nYour choice (1/2) [1]: ") - ) - - ;; ssg_core.lsp - ssg-ques (Ja/Nein-Abfrage) - (list "ques-yn-default-yes" - (cons "de_DE" " Y/N : ") - (cons "en_GB" " Y/N : ") - ) - (list "ques-yn-default-no" - (cons "de_DE" " Y/N : ") - (cons "en_GB" " Y/N : ") +;; ------------------------------------------------------------ +;; Beide Sprachdateien laden und *ssg-texts* im bisherigen Format +;; befuellen: (key (cons "de_DE" ...) (cons "en_GB" ...)). +;; Fehlt eine Datei oder ein Key, bleibt der jeweilige Wert nil - +;; die Fallback-Kette in ssg-text greift dann automatisch +;; (en_GB -> de_DE -> Key). BricsCAD startet in jedem Fall. +;; ------------------------------------------------------------ +(defun ssg-lang-load ( / dir de-datei en-datei de-sec en-sec + key wert-de wert-en ergebnis) + (setq *ssg-texts* nil) + (setq dir (ssg-lang-dir)) + (if (null dir) + (princ "\n[LANG] WARNUNG: Sprachordner nicht ermittelbar (DXFMAKRO nicht gesetzt).") + (progn + (setq de-datei (strcat dir "/de_DE.json") + en-datei (strcat dir "/en_GB.json")) + (if (findfile de-datei) + (setq de-sec (cdr (assoc "texts" + (ssg-cfg-parse-nested (ssg-read-file-lines de-datei))))) + (princ (strcat "\n[LANG] WARNUNG: " de-datei " nicht gefunden.")) + ) + (if (findfile en-datei) + (setq en-sec (cdr (assoc "texts" + (ssg-cfg-parse-nested (ssg-read-file-lines en-datei))))) + (princ (strcat "\n[LANG] WARNUNG: " en-datei " nicht gefunden.")) + ) + (foreach paar de-sec + (setq key (car paar) + wert-de (ssg-lang-unescape (cdr paar)) + wert-en (ssg-lang-unescape (cdr (assoc key en-sec)))) + (setq ergebnis + (cons (list key (cons "de_DE" wert-de) (cons "en_GB" wert-en)) ergebnis)) + ) + (setq *ssg-texts* (reverse ergebnis)) + (princ (strcat "\n[LANG] " (itoa (length *ssg-texts*)) " Texte geladen.")) ) ) + (princ) ) @@ -1675,7 +104,6 @@ ;; Default de_DE, Init aus DXFM_LANG. Ein erneutes Laden dieses ;; Moduls ueberschreibt eine zur Laufzeit gesetzte Sprache nicht. ;; ------------------------------------------------------------ - (if (null *ssg-lang*) (setq *ssg-lang* (getenv "DXFM_LANG")) ) @@ -1683,12 +111,14 @@ (setq *ssg-lang* "de_DE") ) +;; Texttabelle aus den JSON-Sprachdateien befuellen +(ssg-lang-load) + ;; ------------------------------------------------------------ ;; ssg-text - Text zu einem Key in der aktuellen Sprache liefern ;; Fallback-Kette: *ssg-lang* -> de_DE -> Key selbst ;; ------------------------------------------------------------ - (defun ssg-text (key / eintrag wert) (setq eintrag (assoc key *ssg-texts*)) (if eintrag @@ -1703,16 +133,6 @@ ) ) -;; Alle Vorkommen von alt in str durch neu ersetzen -(defun ssg-str-replace-all (neu alt str / pos ergebnis) - (setq ergebnis "") - (while (setq pos (vl-string-search alt str)) - (setq ergebnis (strcat ergebnis (substr str 1 pos) neu)) - (setq str (substr str (+ pos 1 (strlen alt)))) - ) - (strcat ergebnis str) -) - ;; ssg-textf - Text mit Platzhaltern %1 %2 ... aus einer Werteliste fuellen (defun ssg-textf (key werte / txt i platzhalter) (setq txt (ssg-text key)) diff --git a/bin/setenv.bat b/bin/setenv.bat index f903c6a..243ae14 100644 --- a/bin/setenv.bat +++ b/bin/setenv.bat @@ -15,6 +15,7 @@ REM Pfade fuer verschiedene Komponenten set "DXFM_BIN=%DXFMAKRO%\bin" set "DXFM_LIB=%DXFMAKRO%\lib" set "DXFM_DATA=%DXFMAKRO%\data" +set "DXFM_LANG=%DXFMAKRO%\lang" set "DXFM_TESTS=%DXFMAKRO%\tests" set "DXFM_TESTDATA=%DXFM_TESTS%\testdata" set "DXFM_TESTOUT=%DXFM_TESTS%\output" @@ -60,6 +61,7 @@ if not exist "%DXFM_BIN%" mkdir "%DXFM_BIN%" if not exist "%DXFM_CFG%" mkdir "%DXFM_CFG%" if not exist "%DXFM_LIB%" mkdir "%DXFM_LIB%" if not exist "%DXFM_DATA%" mkdir "%DXFM_DATA%" +if not exist "%DXFM_LANG%" mkdir "%DXFM_LANG%" if not exist "%DXFM_BLOCKS%" mkdir "%DXFM_BLOCKS%" if not exist "%DXFM_OMNIFLO%" mkdir "%DXFM_OMNIFLO%" if not exist "%DXFM_LISP%" mkdir "%DXFM_LISP%" @@ -77,6 +79,7 @@ if /i "%1"=="--persist" ( setx DXFMAKRO "%DXFMAKRO%" >nul setx DXFM_LISP "%DXFM_LISP%" >nul setx DXFM_DATA "%DXFM_DATA%" >nul + setx DXFM_LANG "%DXFM_LANG%" >nul setx DXFM_DCL "%DXFM_DCL%" >nul setx DXFM_CFG "%DXFM_CFG%" >nul setx DXFM_LOG "%DXFM_LOG%" >nul diff --git a/lang/de_DE.json b/lang/de_DE.json new file mode 100644 index 0000000..ada2317 --- /dev/null +++ b/lang/de_DE.json @@ -0,0 +1,407 @@ +{ + "texts": { + "omni-alle-winkel": "alle Winkel", + "omni-grad": " Grad", + "omni-bogen-keine-gefunden": "Keine Boegen fuer %1%2 gefunden.", + "omni-weiche-keine-gefunden": "Keine Weichen fuer %1%2 gefunden.", + "vfc-ursprung": "Ursprung", + "vfc-block-eingefuegt-xyzref-ksaus": "\n '%1' eingefuegt (XY:%2 Z:%3)\n KS_AUS: X=%4 Y=%5 Z=%6", + "vfl-ja": "\n 1 - Ja", + "vfl-nein": "\n 2 - Nein", + "vfl-sep-vor-frage": "\n\nZusaetzlichen Separator VOR dem horizontalen Stueck?", + "vfl-sep-nach-frage": "\n\nZusaetzlichen Separator NACH dem horizontalen Stueck?", + "vfl-sep-an-stelle-frage": "\n\nZusaetzlichen Separator an dieser Stelle einfuegen?", + "vfl-gf-bogen-winkel-header": "\n\nGF-Bogen - Winkel waehlen:", + "vfl-gf-bogen-seite-header": "\nGF-Bogen - Seite waehlen:", + "vfl-winkel-30": "\n 1 - 30 Grad", + "vfl-winkel-60": "\n 2 - 60 Grad", + "vfl-winkel-90": "\n 3 - 90 Grad", + "vfl-variokurve-winkel-header": "\n\nVario-Kurve - Winkel waehlen:", + "vfl-opt1-90grad": "\n 1 - 90 Grad", + "vfl-opt2-60grad": "\n 2 - 60 Grad", + "vfl-opt3-30grad": "\n 3 - 30 Grad", + "vfl-prompt-wahl-1-3-def1": "\nIhre Wahl (1/2/3) [1]: ", + "vfl-variokurve-seite-header": "\nVario-Kurve - Seite waehlen:", + "vfl-variokurve-variante-header": "\nVario-Kurve - Variante waehlen:", + "vfl-variante-aussen": "\n 1 - Aussen", + "vfl-variante-innen": "\n 2 - Innen", + "vfl-ist-ziel-vergleich-header": "\n\n>>> IST-ZIEL-VERGLEICH (ES-Element):", + "vfl-soll-xyz": "\n Soll: X=%1 Y=%2 Z=%3", + "vfl-ist-xyz": "\n Ist : X=%1 Y=%2 Z=%3", + "vfl-abweichung-xyz": "\n Abweichung: dX=%1 dY=%2 dZ=%3 mm", + "gf-fehler-block-fehlt": "\n FEHLER: Block '%1' fehlt", + "gf-fehler-block-fehlt-ausruf": "\n FEHLER: Block '%1' fehlt!", + "gf-fehler-blockdatei-fehlt": "\n FEHLER: Block-Datei nicht gefunden: %1", + "gf-fehler-keine-linie": "\n Fehler: keine Linie!", + "gf-laenge-null-uebersprungen": "\n (Laenge 0 - uebersprungen)", + "gf-prompt-linie-waehlen": "\n >> Linie waehlen: ", + "gf-status-3dlinie-z": "\n 3D-Linie: Z_start=%1 Z_end=%2", + "gf-status-block-l-z": "\n %1 L=%2 -> Z=%3", + "gf-status-bogen-masse": "\n %1: dx=%2 dz=%3", + "gf-status-gefaellebogen": "\n Gefaellebogen %1 hz=%2%3 -> Z=%4", + "gf-status-hzincl": "\n HzIncl %1 L=%2 hz=%3%4 v=%5%6 -> Z=%7", + "gf-status-hzks": "\n HzKS %1 hz=%2%3 v=%4%5 -> Z=%6", + "gf-status-ks-aus-z": "\n KS_AUS Z=%1", + "gf-warnung-block-fehlt-nullwerte": "\n WARNUNG: %1 fehlt - Nullwerte", + "gf-warnung-ks-fehlt": "\n WARNUNG: KS_EIN/KS_AUS fehlt!", + "gf-warnung-ks-fehlt-in": "\n WARNUNG: KS fehlt in '%1'", + "gf-warnung-ks-fehlt-in2": "\n WARNUNG: KS fehlt in %1", + "kreisel-abstand-ausgabe": "\n-> Abstand: %1 mm", + "kreisel-beschriftung-erzeugt": "\n-> Beschriftung: %1 (Höhe=%2mm, Arial, zentriert)", + "kreisel-bestehende-blockdef": "\n-> Verwende bestehende Blockdefinition: %1", + "kreisel-connect-zusammenfassung": "\n-> Abstand: %1 mm Rotation: %2 Grad Hoehe: %3 Kreiselart: %4", + "kreisel-eckrad-eingefuegt": "\n-> Eckrad #%1 eingefuegt: %2 bei %3,%4 Rotation=%5 Hoehe=%6", + "kreisel-edit-aktualisiert": "\nKreisel aktualisiert: Name=%1 Abstand=%2 Hoehe=%3 Rotation=%4", + "kreisel-edit-bestehend": "\n-> Bestehend: Abstand=%1 Drehung=%2 Art=%3", + "kreisel-edit-dialog-fehlt": "Dialog nicht verfuegbar: %1", + "kreisel-eingefuegt": "\n-> Kreisel #%1 eingefügt: %2 (Höhe=%3)", + "kreisel-emsg-distanz-klein": "Distanz zu klein! (%1 < %2)", + "kreisel-hoehe-aus-3dpunkt": "\n-> Hoehe aus 3D-Punkt uebernommen: %1", + "kreisel-hoehe-aus-basispunkt": "\n-> Höhe aus Basispunkt übernommen: %1", + "kreisel-hoehe-aus-startpunkt": "\n-> Hoehe aus Startpunkt uebernommen: %1", + "kreisel-hoehe-von-bestehendem": "\n-> Höhe von bestehendem Kreisel übernommen: %1", + "kreisel-insert-zusammenfassung": "\n-> Rotation: %1 Höhe: %2 Kreiselart: %3", + "kreisel-labelsetup-fertig": "\nNeue Einstellungen: Höhe=%1, Farbe=%2, Y-Versatz=%3, Schriftart=Arial", + "kreisel-neue-beschriftungsposition": "\nNeue Beschriftungsposition: X=%1 Y=%2", + "kreisel-neue-blockdef": "\n-> Neue Blockdefinition: %1", + "kreisel-neue-texthoehe": "\nNeue Texthöhe: %1", + "kreisel-params-default-hoehe": "\nDefault-Höhe: %1", + "kreisel-params-default-laenge": "\nDefault-Laenge: %1", + "kreisel-params-durchmesser": "\nDurchmesser: %1", + "kreisel-params-typ": "\nKreiselart: %1", + "kreisel-prompt-abstand": "\nAbstand (Tangentenlaenge) <%1>: ", + "kreisel-prompt-abstand-oben": "\nAbstand über Kreisel-Mitte <%1>: ", + "kreisel-prompt-hoehe-z": "\nHoehe (Z-Koordinate) <%1>: ", + "kreisel-prompt-neue-hoehe": "\nNeue Höhe <%1>: ", + "kreisel-prompt-neuer-abstand": "\nNeuer Abstand <%1>: ", + "kreisel-prompt-schriftfarbe": "\nSchriftfarbe (1=Rot,2=Gelb,3=Grün,4=Cyan,5=Blau,6=Magenta,7=Weiß) <%1>: ", + "kreisel-prompt-schrifthoehe": "\nSchrifthöhe <%1>: ", + "kreisel-prompt-texthoehe": "\nTexthöhe <%1>: ", + "kreisel-prompt-x-abstand": "\nX-Abstand von AN8-Mitte <%1>: ", + "kreisel-prompt-y-abstand": "\nY-Abstand von AN8-Mitte <%1>: ", + "kreisel-redraw-bestehend": "\n-> Bestehend: Abstand=%1 Drehung=%2 Hoehe=%3 Art=%4", + "kreisel-redraw-fertig": "\nKreisel neu gezeichnet. Abstand=%1", + "kreisel-script-distanz-klein": "\n[Connect] Distanz zu klein: %1", + "kreisel-textstil-erstellt": "\n-> Textstil '%1' mit Arial erstellt", + "kreisel-typ-prompt": "\nBitte waehlen <%1>: ", + "omni-bogen-info-antriebsart": "\n Antriebsart: %1", + "omni-bogen-info-breite": "\n Breite: %1", + "omni-bogen-info-kurvenwinkel": "\n KurvenWinkel: %1", + "omni-bogen-info-laenge": "\n Laenge: %1", + "omni-bogen-info-profiltyp": "\n ProfilTyp: %1", + "omni-bogen-info-radius": "\n Radius: %1", + "omni-bogen-nicht-gefunden": "\nKein Bogen mit SivasId '%1' gefunden.", + "omni-dxf-eingefuegt": "\n[OMNI] %1 eingefuegt. Hoehe=%2 Drehung=%3%4", + "omni-edit-aktualisiert": "\n[OMNI] Element aktualisiert: %1 Hoehe=%2 Drehung=%3", + "omni-edit-dxf-nicht-gefunden": "DXF nicht gefunden: %1", + "omni-einfuegen-info": "\n[OMNI] Einfuegen: %1 (%2)", + "omni-fehler-dxf-nicht-gefunden": "\n[OMNI] FEHLER: DXF nicht gefunden: %1", + "omni-insert-block-eingefuegt": "\n[OMNI] %1 eingefuegt. Laenge=%2 mm", + "omni-laenge-ueberschritten": "Die gewuenschte Fahrstreckenlaenge von %1 mm ueberschreitet die Maximallaenge von %2 mm des Fahrstreckenprofils.\nBitte neu definieren!", + "omni-weiche-info-breite": "\n Breite: %1", + "omni-weiche-info-kurvenrichtung": "\n KurvenRichtung: %1", + "omni-weiche-info-kurvenwinkel": "\n KurvenWinkel: %1", + "omni-weiche-info-laenge": "\n Laenge: %1", + "omni-weiche-info-profiltyp": "\n ProfilTyp: %1", + "omni-weiche-info-schaltungstyp": "\n Schaltungstyp: %1", + "omni-weiche-info-weichentyp": "\n WeichenTyp: %1", + "omni-weiche-info-wklaenge": "\n WK-Laenge: %1", + "omni-weiche-nicht-gefunden": "\nKeine Weiche mit SivasId '%1' gefunden.", + "vfc-3dlinie-start-ende": "\n 3D-Linie:\n Start: X=%1 Y=%2 Z=%3\n Ende: X=%4 Y=%5 Z=%6", + "vfc-3dpolylinie-start-ende": "\n 3D-Polylinie:\n Start Z=%1 Ende Z=%2", + "vfc-block-einfuegepunkt": "\n Block-Einfuegepunkt: X=%1 Y=%2 Z=%3", + "vfc-block-eingefuegt-ksaus": "\n '%1' eingefuegt\n KS_AUS: X=%2 Y=%3 Z=%4", + "vfc-delta-l-h-richtung": "\n %1L=%2 mm %1H=%3 mm Fahrtrichtung=%4%5", + "vfc-endpunkt-xyz": "\n Endpunkt: X=%1 Y=%2 Z=%3", + "vfc-endpunkt-xyz-dxdz": "\n Endpunkt: X=%1 Y=%2 Z=%3 (dx=%4 dz=%5)", + "vfc-fahrtrichtung-ergebnis": "\n>>> Fahrtrichtung: %1%2", + "vfc-fehler-block-datei-fehlt": "\n FEHLER: Block-Datei nicht gefunden: %1", + "vfc-fehler-block-nicht-in-bibliothek": "\n FEHLER: Block '%1' nicht in Bibliothek", + "vfc-fehler-block-nicht-in-bibliothek-abgebrochen": "\n FEHLER: Block '%1' nicht in Bibliothek - abgebrochen", + "vfc-fehler-ks-fehlen": "\n FEHLER: KS_EIN/KS_AUS fehlen in '%1'", + "vfc-fehler-ungueltiger-einfuegepunkt": "\n FEHLER: Ungueltiger Einfuegepunkt fuer '%1'", + "vfc-fuege-block-ein-hz": "\n Fuege Block '%1' ein... (hz=%2%3)", + "vfc-fuege-block-ein-rotation-hz": "\n Fuege Block '%1' ein (Rotation %2%3 hz=%4%5)", + "vfc-fuege-ein-lwhz": "\n Fuege '%1' ein (L=%2 mm, W=%3%4 hz=%5%6)", + "vfc-ks-aus-xyz": "\n KS_AUS: X=%1 Y=%2 Z=%3", + "vfc-lade-block": "\n Lade Block: %1 ...", + "vfc-laenge-uebersprungen": "\n Laenge=%1 mm -> uebersprungen", + "vfc-punkt-auf-objekt": "\n Punkt auf Objekt: Z=%1 mm", + "vfe-as30-mass": "\n AS_30_rechts: dx=%1 mm, dz=%2 mm", + "vfe-block-fehlt-abbruch": "\n FEHLER: Block '%1' nicht in Bibliothek - abgebrochen", + "vfe-bogen-nicht-vorhanden": "\n %1 -> Bogen nicht vorhanden", + "vfe-delta-info": "\n△L=%1 mm △H=%2 mm Richtung=%3", + "vfe-empfohlener-winkel": "\n>>> Empfohlener Winkel: %1", + "vfe-es30-mass": "\n ES_30_rechts: dx=%1 mm, dz=%2 mm", + "vfe-extrahiere-block-mass": "\n Extrahiere %1 Masse...", + "vfe-gefaellebogen-links-mass": "\n Gefaellebogen links: dx=%1 dz=%2 mm", + "vfe-gefaellebogen-rechts-mass": "\n Gefaellebogen rechts: dx=%1 dz=%2 mm", + "vfe-gefaellebogen-seite-dx": "\n Gefaellebogen %1: dx=%2 mm", + "vfe-hz-incl-status": "\n HzIncl %1 L=%2 hz=%3 v=%4 -> Z=%5", + "vfe-hz-rot-status": "\n HzRot %1 hz=%2 v=%3 -> Z=%4", + "vfe-hz-rotks-status": "\n HzRotKS %1 hz=%2 -> Z=%3", + "vfe-hz-scaleks-status": "\n HzScaleKS %1 %2mm hz=%3 -> Z=%4", + "vfe-ks-fehlt-startpunkt": "\n WARNUNG: KS fehlt in '%1' - verwende Startpunkt", + "vfe-step1-as30": "\n\n1/15: %1 (0 Grad)", + "vfe-step2": "\n\n2/15: Staustrecke 400mm (%1 Grad hz, 3 Grad vert, KS_EIN)", + "vfe-step3": "\n\n3/15: Separator (300mm, %1 Grad hz, 3 Grad vert)", + "vfe-step4": "\n\n4/15: %1 (Anfang, %2 Grad hz, 0 Grad vert, KS_EIN)", + "vfe-step5-strecke": "\n\n5/15: Gefaellestrecke (3 Grad, L=%1 mm)", + "vfe-step7": "\n\n7/15: %1 (3 Grad geneigt)", + "vfe-step8-ab": "\n\n8/15: Gefaellestrecke (%1 Grad, L=%2 mm)", + "vfe-step8-auf": "\n\n8/15: Steigungsstrecke (%1 Grad, L=%2 mm)", + "vfe-tabelle-zeile": "\n %1 %2 mm %3 mm ", + "vfe-tabelle-zeile-fehler": "\n %1 --- --- FEHLER", + "vfl-20m-hinweis": "\n >>> HINWEIS: Foerderer laenger als 20 m (%1 m) - Motorstation empfohlen!", + "vfl-block-erstellt": "\n>>> Block '%1' (%2) erstellt und eingefuegt.", + "vfl-fehler-rest-nicht-baubar": "\n FEHLER: Rest nicht baubar (zu steil/zu kurz fuer Schwanz Motor+GF2+Separator+ES). Bitte weiter zeichnen oder flacher planen.", + "vfl-fuege-block-ein": "\n Fuege %1 ein ...", + "vfl-hinweis-gf2-minimum": "\n HINWEIS: berechnetes GF2=%1 mm < Minimum %2 mm -> auf Minimum angehoben (ES endet dadurch etwas weiter; siehe Ist-Ziel-Report).", + "vfl-horizontale-zwischenstrecke": "\n\nHorizontale Zwischenstrecke (0 Grad, L=%1 mm)", + "vfl-kettenende-modus-ziel": "\n>>> Kettenende-Modus: Ziel dL=%1 mm, dH=%2 mm (%3). GF2 variiert mit dem Winkel.", + "vfl-prompt-hoehe-endpunkt": "\nHoehe (Z) des Endpunkts [%1]: ", + "vfl-prompt-hoehe-kettenende": "\nHoehe (Z) des Kettenendes (ES-Element) [%1]: ", + "vfl-prompt-wahl-bis-n": "\nIhre Wahl (1-%1) [1]: ", + "vfl-segment-gf-nicht-erlaubt": "\n Segment waere GF (zu steil) oder nicht baubar - innerhalb einer VF-Einheit nicht erlaubt.\n Bitte flacher/steigend zeichnen oder Foerderer beenden.", + "vfl-winkel-option": "\n %1 - %2 Grad (L_GF=%3 mm L_VF=%4 mm)", + "vfs-as90-mass": "\n AS_90: dx=%1 dz=%2", + "vfs-berechnung-parameter": "\n△L=%1 mm △H=%2 mm Richtung=%3", + "vfs-block-fehlende-item": "\n - %1", + "vfs-block-fehler-pfad": "\n FEHLER: DXFM_BLOCKS = %1", + "vfs-bogen-ab-block-fehlt": "\n FEHLER ab_%1: Block nicht geladen!", + "vfs-bogen-ab-ks-fehlt": "\n FEHLER ab_%1: KS fehlt!", + "vfs-bogen-ab-ok": "\n OK ab_%1: dx=%2 dz=%3", + "vfs-bogen-auf-block-fehlt": "\n FEHLER auf_%1: Block nicht geladen!", + "vfs-bogen-auf-ks-fehlt": "\n FEHLER auf_%1: KS fehlt!", + "vfs-bogen-auf-ok": "\n OK auf_%1: dx=%2 dz=%3", + "vfs-empfohlener-winkel": "\n>>> Empfohlener Winkel: %1%2", + "vfs-es90-mass": "\n ES_90: dx=%1 dz=%2", + "vfs-fehler-winkel-tabelle": "\n FEHLER: Winkel %1 nicht in Bogen-Tabelle!", + "vfs-schritt-as": "\n\n1/11: %1 (hz=%2%3)", + "vfs-schritt5-bogen1": "\n\n5/11: %1 (3 Grad geneigt)", + "vfs-tabelle-zeile": "\n %1%2 %3 mm %4 mm ", + "vfs-tabelle-zeile-fehler": "\n %1%2 --- --- FEHLER", + "vfs-vf-eingang-gf1": "\n\n[VF-Eingang] Gefaellestrecke GF1 (3 Grad, L=%1 mm)", + "kreisel-abbruch-befehl": "\nBefehl abgebrochen.", + "kreisel-abgebrochen": "\nAbgebrochen.", + "kreisel-connect-erfolgreich": "\nKreisel Connect erfolgreich!", + "kreisel-connect-header": "\n--- Kreisel durch Linie definieren (AN -> SP) ---", + "kreisel-eckrad-beruehrpunkt": "\nBeruehrpunkt Eckrad (Tangente): ", + "kreisel-eckrad-fehler-identisch": "\nFehler: Beruehr- und Richtungspunkt sind identisch!", + "kreisel-eckrad-richtung": "\nRichtung zum Kreismittelpunkt: ", + "kreisel-emsg-kein-block": "Kein Block ausgewaehlt!", + "kreisel-emsg-kein-kreisel-block": "Kein Kreisel-Block! (Attribut ABSTAND fehlt)", + "kreisel-fehler-keine-entities": "\nFehler: Keine Entities zum Block erstellen!", + "kreisel-insert-fertig": "\nKreisel Modul eingefuegt.", + "kreisel-params-attribute-header": "\nAttribute im Block:", + "kreisel-params-header": "\n=== Kreisel Parameter ===", + "kreisel-prompt-basispunkt": "\nBasispunkt (AN-Seite): ", + "kreisel-prompt-block-auswaehlen": "\nKreisel-Block auswaehlen: ", + "kreisel-prompt-endpunkt": "\nEndpunkt (SP-Seite aussen): ", + "kreisel-prompt-rotation": "\nRotation in Grad <0>: ", + "kreisel-prompt-startpunkt": "\nStartpunkt (AN-Seite aussen): ", + "kreisel-quick-fertig": "\nSchnell Einfuegen fertig.", + "kreisel-start-connect": "Kreisel Smart Connect", + "kreisel-start-eckrad": "Eckrad einfuegen", + "kreisel-start-edit": "Kreisel bearbeiten", + "kreisel-start-insert": "Kreisel Modul einfuegen", + "kreisel-start-quick": "Kreisel Schnell Einfuegen", + "kreisel-start-redraw": "Kreisel Neu Zeichnen", + "kreisel-start-script-connect": "Kreisel Script Connect", + "kreisel-start-script-insert": "Kreisel Script Insert", + "kreisel-typ-opt-pin": "\n[2] PIN", + "kreisel-typ-opt-standard": "\n[1] STANDARD (ohne PIN)", + "kreisel-warn-blockpfad": "\n[KreiselInsert] WARNUNG: Block-Pfad nicht ermittelbar!", + "kreisel-warn-core-fehlt": "\n[KreiselInsert] WARNUNG: ssg_core.lsp nicht gefunden - Standardwerte.", + "omni-abbruch": "\nAbgebrochen.", + "omni-abbruch-bogen": "\n[BOGEN] Abgebrochen.", + "omni-abbruch-omni": "\n[OMNI] Abgebrochen.", + "omni-abbruch-weiche": "\n[WEICHE] Abgebrochen.", + "omni-bogen-dialog-ladefehler": "Bogen-Dialog konnte nicht geladen werden.", + "omni-edit-kein-block": "Kein Block ausgewaehlt!", + "omni-edit-kein-element": "Kein Omniflo-Element erkannt! (ARTINR/Blockname nicht im Katalog)", + "omni-edit-prompt-auswahl": "\nOmniflo-Element auswaehlen: ", + "omni-fehler-dxfm-data": "\n[OMNI] FEHLER: DXFM_DATA nicht gesetzt!", + "omni-fehler-dxfm-omniflo": "\n[OMNI] FEHLER: DXFM_OMNIFLO nicht gesetzt!", + "omni-info-bogen-prompt": "\nSivasId des Bogens eingeben: ", + "omni-info-weiche-prompt": "\nSivasId der Weiche eingeben: ", + "omni-insert-keine-attribute": "\n[OMNI] Keine Attribute im Quell-Block gefunden.", + "omni-prompt-einfuegepunkt": "\nEinfuegepunkt waehlen: ", + "omni-prompt-endpunkt-fahrstrecke": "\nEndpunkt der Fahrstrecke waehlen: ", + "omni-weiche-dialog-ladefehler": "Weichen-Dialog konnte nicht geladen werden.", + "prompt-wahl-1-2-3-4": "\nIhre Wahl (1/2/3/4) [1]: ", + "vfc-alert-keine-gueltige-linie": "Keine gueltige Linie ausgewaehlt!", + "vfc-bitte-3dlinie-foerderstrecke": "\nBitte 3D-Linie fuer die Foerderstrecke auswaehlen:", + "vfc-bks-weltkoordinaten": "\n BKS auf Weltkoordinaten gesetzt.", + "vfc-eingabemodus-3dlinie": "\n 1 - 3D-Linie auswaehlen (Start- und Endpunkt mit Hoehe)", + "vfc-eingabemodus-header": "\n\nEingabemodus waehlen:", + "vfc-eingabemodus-werte": "\n 2 - Werte manuell eingeben", + "vfc-fahrtrichtung-0": "\n 1 - 0%1 (X-Achse +, Ost)", + "vfc-fahrtrichtung-180": "\n 3 - 180%1 (X-Achse -, West)", + "vfc-fahrtrichtung-270": "\n 4 - 270%1 (Y-Achse -, Sued)", + "vfc-fahrtrichtung-90": "\n 2 - 90%1 (Y-Achse +, Nord)", + "vfc-fahrtrichtung-header": "\n\nFahrtrichtung waehlen:", + "vfc-fehler-keine-linie": "\n FEHLER: Keine Linie oder Polylinie ausgewaehlt!", + "vfc-foerderrichtung-ab": "\n Foerderrichtung: AB", + "vfc-foerderrichtung-auf": "Auf", + "vfc-foerderrichtung-menu": "\nFoerderrichtung:\n 1 - AUF\n 2 - AB", + "vfc-kein-objekt-gewaehlt": "\n Kein Objekt gewaehlt.", + "vfc-label-von-bis": ": von %1mm bis %2mm, ", + "vfc-linie-polylinie-waehlen": "\n >> 3D-Linie oder Polylinie waehlen: ", + "vfc-modus-3dlinie-fallback": "Linie", + "vfc-modus-3dlinie-header": "\n\n>>> MODUS: 3D-Linie auswaehlen <<<", + "vfc-modus-werteingabe-header": "\n\n>>> MODUS: Manuelle Werteingabe <<<", + "vfc-objekt-block-waehlen": "\n >> Objekt (Block) waehlen: ", + "vfc-prompt-delta-h": "\n%1H - Hoehenunterschied (mm): ", + "vfc-prompt-delta-l": "\n%1L - Horizontale Distanz (mm): ", + "vfc-prompt-startpunkt-aus": "\nStartpunkt fuer AUS_Element waehlen: ", + "vfc-prompt-wahl-1-2-ohne-default": "\nIhre Wahl (1/2): ", + "vfc-status-ok": " OK", + "vfc-warnung-ks-nicht-gefunden": "\n WARNUNG: KS_EIN/KS_AUS nicht gefunden!", + "vfe-alert-bib-nicht-init": "Etage-Bibliothek nicht initialisiert!", + "vfe-berechnung-header": "\n ETAGE-BERECHNUNG FUER ALLE WINKEL", + "vfe-bib-bereits-init": "\n Etage-Bibliothek bereits initialisiert.", + "vfe-bib-init-erfolg": "\n Etage-Bibliothek erfolgreich initialisiert.", + "vfe-bib-initialisiere": "\n Initialisiere Etage-Bibliothek...", + "vfe-ergebnistabelle-header": "\n ERGEBNISTABELLE (L_GF = gesamt beider GF-Strecken)", + "vfe-extrahiere-as30": "\n Extrahiere AS_30_rechts Masse...", + "vfe-extrahiere-es30": "\n Extrahiere ES_30_rechts Masse...", + "vfe-kein-winkel-gefunden": "\n>>> KEIN passender Winkel gefunden!", + "vfe-status-gueltig": "GUELTIG", + "vfe-status-ungueltig": "UNGUELTIG (negative Laenge)", + "vfe-step5-skip": "\n\n5/15: L_GF1 (uebersprungen)", + "vfe-step6": "\n\n6/15: Umlenkstation (500mm, 3 Grad geneigt)", + "vfe-step8-skip": "\n\n8/15: L_VF (uebersprungen)", + "vfe-tabelle-spalten": "\n Winkel L_GF (mm) L_VF (mm) Status", + "vfe-warn-block-as30-fehlt": "\n WARNUNG: Block AS_Element_30_rechts fehlt - Standardwerte", + "vfe-warn-block-es30-fehlt": "\n WARNUNG: Block ES_Element_30_rechts fehlt - Standardwerte", + "vfe-warn-block-fehlt-links": "\n WARNUNG: Block fehlt - Standardwerte (links)", + "vfe-warn-block-fehlt-rechts": "\n WARNUNG: Block fehlt - Standardwerte (rechts)", + "vfe-warn-kein-ks-links": "\n WARNUNG: kein KS - Standardwerte (links)", + "vfe-warn-kein-ks-rechts": "\n WARNUNG: kein KS - Standardwerte (rechts)", + "vfe-warn-ks-fehlt-standard": "\n WARNUNG: KS fehlt - Standardwerte", + "vfe-warn-lisp-pfad": "\n[vf_etage] WARNUNG: Lisp-Pfad nicht ermittelbar - vf_core.lsp nicht ladbar!", + "vfl-abgebrochen-kein-ziel": "\n Abgebrochen - kein Zielpunkt gewaehlt.", + "vfl-bogen-ab3-uebergang": "\n\nVario_Bogen_ab_3 (Uebergang horizontal -> 3 Grad)", + "vfl-bogen-auf3-uebergang": "\n\nVario_Bogen_auf_3 (Uebergang 3 Grad -> horizontal)", + "vfl-gf-verteilung-ganz-einlauf": "\n 2 - Gesamte Staustrecke am Einlauf (GF1), kein GF2", + "vfl-gf-verteilung-haelfte": "\n 1 - 1/2GF am Ausgang (GF2), 1/2GF am Einlauf (GF1)", + "vfl-gf-verteilung-header": "\n\nStaustrecke (GF) - Verteilung waehlen:", + "vfl-ist-endpunkt-frage": "\n\nIst der Endpunkt der Foerderer?", + "vfl-ist-kettenende-frage": "\n\nIst das das Kettenende (ES-Element)?", + "vfl-ja-motorstation-kettenende": "\n 3 - Ja (Motorstation setzen, Kettenende definieren)", + "vfl-ja-nur-motorstation": "\n 1 - Ja (nur Motorstation setzen)", + "vfl-ja-separator-es": "\n 1 - Ja (Separator + ES-Element setzen)", + "vfl-linie-zu-kurz-simple": "\n Linie zu kurz - uebersprungen.", + "vfl-linie-zu-kurz-uebersprungen": "\n Linie zu kurz (oder entgegen der Fahrtrichtung) - uebersprungen.", + "vfl-mehrere-winkel-header": "\n\nMehrere gueltige Winkel - bitte gewuenschten Winkel waehlen:", + "vfl-modus1-beschreibung": "\nGemischte Gefaellestrecke/VarioFoerderer-Kette entlang eines frei", + "vfl-modus1-header": "\n VF-LINIENZUG - Modus 1: Manuelle Eingabe", + "vfl-naechstes-element-vf": "\n\nNaechstes Element im VarioFoerderer:", + "vfl-nein-weiterbauen": "\n 2 - Nein (weiterbauen)", + "vfl-opt-auf-ab-foerderer": "\n 3 - Auf/Ab-Foerderer (Linie mit Hoehendifferenz)", + "vfl-opt-horizontaler-foerderer": "\n 1 - Horizontaler Foerderer (Linie ohne Hoehendifferenz)", + "vfl-opt-vario-kurve": "\n 2 - Vario-Kurve (30/60/90 Grad)", + "vfl-prompt-wahl-1-2-def2": "\nIhre Wahl (1/2) [2]: ", + "vfl-prompt-wahl-1-3-def2": "\nIhre Wahl (1/2/3) [2]: ", + "vfl-prompt-wahl-1-3-def3": "\nIhre Wahl (1/2/3) [3]: ", + "vfl-sep-horizontal-info": "\n [horizontal] Separator (300 mm, 0 Grad)", + "vfs-berechnung-header": "\n BERECHNUNG FUER ALLE WINKEL (Standard)", + "vfs-block-fehlende-header": "\n Folgende Block-Dateien fehlen:", + "vfs-ergebnistabelle-header": "\n ERGEBNISTABELLE", + "vfs-extrahiere-aus": "\n Extrahiere AUS_Element Masse...", + "vfs-extrahiere-bogen": "\n Extrahiere Bogen-Masse...", + "vfs-extrahiere-ein": "\n Extrahiere EIN_Element Masse...", + "vfs-fehler-block-as90": "\n FEHLER: Block AS_Element_90_links nicht geladen!", + "vfs-fehler-block-es90": "\n FEHLER: Block ES_Element_90_links nicht geladen!", + "vfs-fehler-ks-as90": "\n FEHLER: KS_EIN/KS_AUS fehlt im AS_90!", + "vfs-fehler-ks-es90": "\n FEHLER: KS_EIN/KS_AUS fehlt im ES_90!", + "vfs-fehler-lib-nicht-init": "\n FEHLER: Bibliothek nicht korrekt initialisiert (AUS/EIN-Masse fehlen)!", + "vfs-kein-winkel-gefunden": "\n>>> KEIN passender Winkel gefunden!", + "vfs-lib-bereits-init": "\n Standard-Bibliothek bereits initialisiert.", + "vfs-lib-init-erfolg": "\n Standard-Bibliothek erfolgreich initialisiert.", + "vfs-lib-init-start": "\n Initialisiere Standard-Bibliothek...", + "vfs-status-gueltig": "GUELTIG", + "vfs-status-ungueltig": "UNGUELTIG (negative Laenge)", + "vfs-tabelle-spalten": "\n Winkel L_GF (mm) L_VF (mm) Status", + "vfs-vf-eingang-gf1-skip": "\n\n[VF-Eingang] Gefaellestrecke GF1 (uebersprungen)", + "vfs-vf-eingang-separator": "\n[VF-Eingang] Separator (300 mm, 3 Grad geneigt)", + "vfs-vf-eingang-umlenk": "\n[VF-Eingang] Umlenkstation (500 mm, 3 Grad geneigt)", + "vfs-warn-lisppfad": "\n[vf_standard] WARNUNG: Lisp-Pfad nicht ermittelbar - vf_core.lsp nicht ladbar!", + "dim-switch-modus": "\nModus umgeschaltet auf: %1", + "dim-switch-blocks": "\n DXFM_BLOCKS = %1", + "dim-switch-omniflo": "\n DXFM_OMNIFLO = %1", + "sprache-gewechselt": "\nSprache umgeschaltet auf: %1", + "cmd-block-auswaehlen": "\nBlock auswaehlen: ", + "cmd-kein-block-ausgewaehlt": "\nKein Block ausgewaehlt.", + "cmd-kreisel-bearbeiten": "\nKreisel bearbeiten: %1", + "cmd-eckrad-bearbeiten": "\nEckrad bearbeiten: %1", + "cmd-omniflo-bearbeiten": "\nOmniflo Element bearbeiten: %1", + "cmd-attribute-bearbeiten": "\nAttribute bearbeiten: %1", + "layer-prompt-ziel-layer": "\nObjekt auf dem Ziel-Layer waehlen: ", + "layer-prompt-objekt": "\nObjekt waehlen: ", + "layer-prompt-referenz-objekt": "\nReferenz-Objekt waehlen (bestimmt Typ und Layer): ", + "layer-prompt-typ-ermittlung": "\nNochmals fuer Typ-Ermittlung anklicken: ", + "layer-prompt-ausblenden": "\nLayer zum Ausblenden anklicken (Enter=Ende): ", + "layer-prompt-einfrieren": "\nLayer zum Einfrieren anklicken (Enter=Ende): ", + "layer-prompt-aktiv-bleibt": "\nObjekt auf dem Layer waehlen, der AKTIV bleibt: ", + "layer-prompt-name-loeschen": "\nLayername zum Loeschen: ", + "layer-err-kein-objekt": "Kein Objekt gewaehlt.", + "layer-err-kein-ziel-layer": "Kein Ziel-Layer gewaehlt.", + "layer-err-kein-ziel-layer-kurz": "Kein Ziel-Layer.", + "layer-err-keine-passenden-objekte": "Keine passenden Objekte gefunden.", + "layer-abgebrochen": "Abgebrochen.", + "layer-err-kein-referenz-objekt": "Kein Referenz-Objekt gewaehlt.", + "layer-err-aktiv-nicht-ausschalten": "Aktiven Layer nicht ausschalten!", + "layer-err-aktiv-nicht-einfrieren": "Aktiven Layer nicht einfrieren!", + "layer-aktiver-layer": "\nAktiver Layer: %1", + "layer-objekt-auf-layer": "\nObjekt liegt auf Layer: %1", + "layer-nur-layer-sichtbar": "\nNur Layer '%1' ist sichtbar.", + "layer-geloescht": "\nLayer '%1' geloescht.", + "layer-leerer-geloescht": "\nLeerer Layer '%1' geloescht.", + "layer-existiert-nicht": "Layer '%1' existiert nicht.", + "layer-ques-typ-wechseln": "Layer dieser %1-Objekte wechseln?", + "layer-ques-alle-loeschen": "Alle Objekte auf Layer '%1' loeschen?", + "core-start-titel": "\n***** %1 *****\n", + "core-errhan-fehler": "\nFehler: ", + "core-blockname-exists": "Blockname '%1' existiert bereits - wird uebersprungen.", + "core-dwg-not-found": "\nFEHLER: Block nicht gefunden: %1", + "exp-cfg-not-found": "\n[export] WARNUNG: %1 nicht gefunden/leer, verwende Vorgaben.", + "exp-check-ids": "\n[%1] Pruefe und vergebe IDs...", + "exp-update-hoehe-drehung": "\n[%1] Aktualisiere Hoehe/Drehung...", + "exp-collect-blocks": "\n[%1] Sammle relevante Bloecke...", + "exp-no-blocks-found": "\n[%1] Keine relevanten Bloecke gefunden.", + "exp-blocks-found": "\n[%1] %2 Bloecke gefunden.", + "exp-output-dir": "\n[%1] Ausgabeordner: %2", + "exp-file-open-error": "\n[%1] FEHLER: Kann Datei nicht oeffnen: %2", + "exp-json-written": "\n[%1] JSON geschrieben: %2", + "exp-calling-python": "\n[%1] Rufe Python auf...", + "exp-export-started": "\n[%1] Export gestartet: %2", + "exp-python-not-found": "\n[%1] FEHLER: Python-Skript nicht gefunden: %2", + "exp-omni-no-inserts": "\n[OMNI_UPDATE] Keine INSERT-Bloecke in der Zeichnung.", + "exp-omni-updated": "\n[OMNI_UPDATE] %1 Elemente aktualisiert (HOEHE, DREHUNG).", + "id-new-assigned": "\n[ID] Neue ID zugewiesen: %1", + "id-invalid-block": "\n[ID] FEHLER: Kein gueltiger INSERT-Block!", + "id-check-no-blocks": "\n[IDSCHECK] Keine relevanten Bloecke gefunden.", + "id-check-missing-set": "\n[IDSCHECK] Fehlende ID gesetzt: %1 (Block %2)", + "id-check-duplicate": "\n[IDSCHECK] Duplikat ID %1 -> neue ID %2 (Block %3)", + "id-check-done": "\n[IDSCHECK] Fertig. %1 Duplikate korrigiert.", + "id-check-corrected": "\n[IDSCHECK] %1 IDs korrigiert.", + "id-select-block-prompt": "\nBlock waehlen: ", + "id-generate-invalid": "\n[IDGENERATE] Kein gueltiger Block gewaehlt.", + "dialog-nicht-verfuegbar": "Dialog nicht verfuegbar.", + "dialog-einfuegepunkt-waehlen": "\nEinfuegepunkt waehlen: ", + "extcall-python-rueckgabe": "\n[SSG_LIB] Python Rueckgabe: %1", + "extcall-keine-rueckgabe": "\n[SSG_LIB] WARNUNG: Keine Rueckgabe von Python erhalten.", + "extcall-skript-nicht-gefunden": "\n[SSG_LIB] FEHLER: %1 nicht gefunden!", + "vfstart-core-nicht-gefunden": "\n[VarioFoerderer] WARNUNG: vf_core.lsp nicht gefunden - Befehle nicht verfuegbar.", + "vfstart-etage-core-nicht-gefunden": "\n[EtageVarioFoerderer] WARNUNG: vf_core.lsp nicht gefunden - Befehle nicht verfuegbar.", + "gf-seite-aus-header": "\n\nAUS-Element (AS_Element_90_*) - Seite waehlen:", + "gf-seite-ein-header": "\n\nEIN-Element (ES_Element_90_*) - Seite waehlen:", + "gf-seite-links": "\n 1 - Links", + "gf-seite-rechts": "\n 2 - Rechts", + "prompt-wahl-1-2": "\nIhre Wahl (1/2) [1]: ", + "ques-yn-default-yes": " Y/N : ", + "ques-yn-default-no": " Y/N : " + } +} diff --git a/lang/en_GB.json b/lang/en_GB.json new file mode 100644 index 0000000..c95e545 --- /dev/null +++ b/lang/en_GB.json @@ -0,0 +1,407 @@ +{ + "texts": { + "omni-alle-winkel": "all angles", + "omni-grad": " deg", + "omni-bogen-keine-gefunden": "No arcs found for %1%2.", + "omni-weiche-keine-gefunden": "No switches found for %1%2.", + "vfc-ursprung": "Origin", + "vfc-block-eingefuegt-xyzref-ksaus": "\n '%1' inserted (XY:%2 Z:%3)\n KS_AUS: X=%4 Y=%5 Z=%6", + "vfl-ja": "\n 1 - Yes", + "vfl-nein": "\n 2 - No", + "vfl-sep-vor-frage": "\n\nInsert additional separator BEFORE the horizontal section?", + "vfl-sep-nach-frage": "\n\nInsert additional separator AFTER the horizontal section?", + "vfl-sep-an-stelle-frage": "\n\nInsert additional separator at this point?", + "vfl-gf-bogen-winkel-header": "\n\nGF arc - choose angle:", + "vfl-gf-bogen-seite-header": "\nGF arc - choose side:", + "vfl-winkel-30": "\n 1 - 30 deg", + "vfl-winkel-60": "\n 2 - 60 deg", + "vfl-winkel-90": "\n 3 - 90 deg", + "vfl-variokurve-winkel-header": "\n\nVario curve - choose angle:", + "vfl-opt1-90grad": "\n 1 - 90 deg", + "vfl-opt2-60grad": "\n 2 - 60 deg", + "vfl-opt3-30grad": "\n 3 - 30 deg", + "vfl-prompt-wahl-1-3-def1": "\nYour choice (1/2/3) [1]: ", + "vfl-variokurve-seite-header": "\nVario curve - choose side:", + "vfl-variokurve-variante-header": "\nVario curve - choose variant:", + "vfl-variante-aussen": "\n 1 - Outer", + "vfl-variante-innen": "\n 2 - Inner", + "vfl-ist-ziel-vergleich-header": "\n\n>>> ACTUAL-TARGET COMPARISON (ES element):", + "vfl-soll-xyz": "\n Target: X=%1 Y=%2 Z=%3", + "vfl-ist-xyz": "\n Actual: X=%1 Y=%2 Z=%3", + "vfl-abweichung-xyz": "\n Deviation: dX=%1 dY=%2 dZ=%3 mm", + "gf-fehler-block-fehlt": "\n ERROR: block '%1' missing", + "gf-fehler-block-fehlt-ausruf": "\n ERROR: block '%1' missing!", + "gf-fehler-blockdatei-fehlt": "\n ERROR: block file not found: %1", + "gf-fehler-keine-linie": "\n Error: no line!", + "gf-laenge-null-uebersprungen": "\n (length 0 - skipped)", + "gf-prompt-linie-waehlen": "\n >> Select line: ", + "gf-status-3dlinie-z": "\n 3D line: Z_start=%1 Z_end=%2", + "gf-status-block-l-z": "\n %1 L=%2 -> Z=%3", + "gf-status-bogen-masse": "\n %1: dx=%2 dz=%3", + "gf-status-gefaellebogen": "\n Slope arc %1 hz=%2%3 -> Z=%4", + "gf-status-hzincl": "\n HzIncl %1 L=%2 hz=%3%4 v=%5%6 -> Z=%7", + "gf-status-hzks": "\n HzKS %1 hz=%2%3 v=%4%5 -> Z=%6", + "gf-status-ks-aus-z": "\n KS_AUS Z=%1", + "gf-warnung-block-fehlt-nullwerte": "\n WARNING: %1 missing - using zero values", + "gf-warnung-ks-fehlt": "\n WARNING: KS_EIN/KS_AUS missing!", + "gf-warnung-ks-fehlt-in": "\n WARNING: KS missing in '%1'", + "gf-warnung-ks-fehlt-in2": "\n WARNING: KS missing in %1", + "kreisel-abstand-ausgabe": "\n-> Distance: %1 mm", + "kreisel-beschriftung-erzeugt": "\n-> Label: %1 (height=%2mm, Arial, centered)", + "kreisel-bestehende-blockdef": "\n-> Using existing block definition: %1", + "kreisel-connect-zusammenfassung": "\n-> Distance: %1 mm Rotation: %2 deg Height: %3 Kreisel type: %4", + "kreisel-eckrad-eingefuegt": "\n-> Eckrad #%1 inserted: %2 at %3,%4 rotation=%5 height=%6", + "kreisel-edit-aktualisiert": "\nKreisel updated: Name=%1 Distance=%2 Height=%3 Rotation=%4", + "kreisel-edit-bestehend": "\n-> Existing: Distance=%1 Rotation=%2 Type=%3", + "kreisel-edit-dialog-fehlt": "Dialog not available: %1", + "kreisel-eingefuegt": "\n-> Kreisel #%1 inserted: %2 (height=%3)", + "kreisel-emsg-distanz-klein": "Distance too small! (%1 < %2)", + "kreisel-hoehe-aus-3dpunkt": "\n-> Height taken from 3D point: %1", + "kreisel-hoehe-aus-basispunkt": "\n-> Height taken from base point: %1", + "kreisel-hoehe-aus-startpunkt": "\n-> Height taken from start point: %1", + "kreisel-hoehe-von-bestehendem": "\n-> Height taken from existing Kreisel: %1", + "kreisel-insert-zusammenfassung": "\n-> Rotation: %1 Height: %2 Kreisel type: %3", + "kreisel-labelsetup-fertig": "\nNew settings: Height=%1, Colour=%2, Y offset=%3, Font=Arial", + "kreisel-neue-beschriftungsposition": "\nNew label position: X=%1 Y=%2", + "kreisel-neue-blockdef": "\n-> New block definition: %1", + "kreisel-neue-texthoehe": "\nNew text height: %1", + "kreisel-params-default-hoehe": "\nDefault height: %1", + "kreisel-params-default-laenge": "\nDefault length: %1", + "kreisel-params-durchmesser": "\nDiameter: %1", + "kreisel-params-typ": "\nKreisel type: %1", + "kreisel-prompt-abstand": "\nDistance (tangent length) <%1>: ", + "kreisel-prompt-abstand-oben": "\nDistance above Kreisel centre <%1>: ", + "kreisel-prompt-hoehe-z": "\nHeight (Z coordinate) <%1>: ", + "kreisel-prompt-neue-hoehe": "\nNew height <%1>: ", + "kreisel-prompt-neuer-abstand": "\nNew distance <%1>: ", + "kreisel-prompt-schriftfarbe": "\nFont colour (1=Red,2=Yellow,3=Green,4=Cyan,5=Blue,6=Magenta,7=White) <%1>: ", + "kreisel-prompt-schrifthoehe": "\nFont height <%1>: ", + "kreisel-prompt-texthoehe": "\nText height <%1>: ", + "kreisel-prompt-x-abstand": "\nX distance from AN8 centre <%1>: ", + "kreisel-prompt-y-abstand": "\nY distance from AN8 centre <%1>: ", + "kreisel-redraw-bestehend": "\n-> Existing: Distance=%1 Rotation=%2 Height=%3 Type=%4", + "kreisel-redraw-fertig": "\nKreisel redrawn. Distance=%1", + "kreisel-script-distanz-klein": "\n[Connect] Distance too small: %1", + "kreisel-textstil-erstellt": "\n-> Text style '%1' created with Arial", + "kreisel-typ-prompt": "\nPlease choose <%1>: ", + "omni-bogen-info-antriebsart": "\n Drive type: %1", + "omni-bogen-info-breite": "\n Width: %1", + "omni-bogen-info-kurvenwinkel": "\n Curve angle: %1", + "omni-bogen-info-laenge": "\n Length: %1", + "omni-bogen-info-profiltyp": "\n Profile type: %1", + "omni-bogen-info-radius": "\n Radius: %1", + "omni-bogen-nicht-gefunden": "\nNo arc with Sivas ID '%1' found.", + "omni-dxf-eingefuegt": "\n[OMNI] %1 inserted. Height=%2 Rotation=%3%4", + "omni-edit-aktualisiert": "\n[OMNI] Element updated: %1 Height=%2 Rotation=%3", + "omni-edit-dxf-nicht-gefunden": "DXF not found: %1", + "omni-einfuegen-info": "\n[OMNI] Inserting: %1 (%2)", + "omni-fehler-dxf-nicht-gefunden": "\n[OMNI] ERROR: DXF not found: %1", + "omni-insert-block-eingefuegt": "\n[OMNI] %1 inserted. Length=%2 mm", + "omni-laenge-ueberschritten": "The requested travel path length of %1 mm exceeds the maximum length of %2 mm of the travel path profile.\nPlease redefine!", + "omni-weiche-info-breite": "\n Width: %1", + "omni-weiche-info-kurvenrichtung": "\n Curve direction:%1", + "omni-weiche-info-kurvenwinkel": "\n Curve angle: %1", + "omni-weiche-info-laenge": "\n Length: %1", + "omni-weiche-info-profiltyp": "\n Profile type: %1", + "omni-weiche-info-schaltungstyp": "\n Switch type: %1", + "omni-weiche-info-weichentyp": "\n Type of switch: %1", + "omni-weiche-info-wklaenge": "\n WK length: %1", + "omni-weiche-nicht-gefunden": "\nNo switch with Sivas ID '%1' found.", + "vfc-3dlinie-start-ende": "\n 3D line:\n Start: X=%1 Y=%2 Z=%3\n End: X=%4 Y=%5 Z=%6", + "vfc-3dpolylinie-start-ende": "\n 3D polyline:\n Start Z=%1 End Z=%2", + "vfc-block-einfuegepunkt": "\n Block insertion point: X=%1 Y=%2 Z=%3", + "vfc-block-eingefuegt-ksaus": "\n '%1' inserted\n KS_AUS: X=%2 Y=%3 Z=%4", + "vfc-delta-l-h-richtung": "\n %1L=%2 mm %1H=%3 mm Travel direction=%4%5", + "vfc-endpunkt-xyz": "\n End point: X=%1 Y=%2 Z=%3", + "vfc-endpunkt-xyz-dxdz": "\n End point: X=%1 Y=%2 Z=%3 (dx=%4 dz=%5)", + "vfc-fahrtrichtung-ergebnis": "\n>>> Travel direction: %1%2", + "vfc-fehler-block-datei-fehlt": "\n ERROR: block file not found: %1", + "vfc-fehler-block-nicht-in-bibliothek": "\n ERROR: block '%1' not in library", + "vfc-fehler-block-nicht-in-bibliothek-abgebrochen": "\n ERROR: block '%1' not in library - cancelled", + "vfc-fehler-ks-fehlen": "\n ERROR: KS_EIN/KS_AUS missing in '%1'", + "vfc-fehler-ungueltiger-einfuegepunkt": "\n ERROR: invalid insertion point for '%1'", + "vfc-fuege-block-ein-hz": "\n Inserting block '%1'... (hz=%2%3)", + "vfc-fuege-block-ein-rotation-hz": "\n Inserting block '%1' (rotation %2%3 hz=%4%5)", + "vfc-fuege-ein-lwhz": "\n Inserting '%1' (L=%2 mm, W=%3%4 hz=%5%6)", + "vfc-ks-aus-xyz": "\n KS_AUS: X=%1 Y=%2 Z=%3", + "vfc-lade-block": "\n Loading block: %1 ...", + "vfc-laenge-uebersprungen": "\n Length=%1 mm -> skipped", + "vfc-punkt-auf-objekt": "\n Point on object: Z=%1 mm", + "vfe-as30-mass": "\n AS_30_rechts: dx=%1 mm, dz=%2 mm", + "vfe-block-fehlt-abbruch": "\n ERROR: block '%1' not in library - cancelled", + "vfe-bogen-nicht-vorhanden": "\n %1 -> arc not available", + "vfe-delta-info": "\nΔL=%1 mm ΔH=%2 mm Direction=%3", + "vfe-empfohlener-winkel": "\n>>> Recommended angle: %1", + "vfe-es30-mass": "\n ES_30_rechts: dx=%1 mm, dz=%2 mm", + "vfe-extrahiere-block-mass": "\n Extracting %1 dimensions...", + "vfe-gefaellebogen-links-mass": "\n Slope arc left: dx=%1 dz=%2 mm", + "vfe-gefaellebogen-rechts-mass": "\n Slope arc right: dx=%1 dz=%2 mm", + "vfe-gefaellebogen-seite-dx": "\n Slope arc %1: dx=%2 mm", + "vfe-hz-incl-status": "\n HzIncl %1 L=%2 hz=%3 v=%4 -> Z=%5", + "vfe-hz-rot-status": "\n HzRot %1 hz=%2 v=%3 -> Z=%4", + "vfe-hz-rotks-status": "\n HzRotKS %1 hz=%2 -> Z=%3", + "vfe-hz-scaleks-status": "\n HzScaleKS %1 %2mm hz=%3 -> Z=%4", + "vfe-ks-fehlt-startpunkt": "\n WARNING: KS missing in '%1' - using start point", + "vfe-step1-as30": "\n\n1/15: %1 (0 deg)", + "vfe-step2": "\n\n2/15: Buffer section 400mm (%1 deg hz, 3 deg vert, KS_EIN)", + "vfe-step3": "\n\n3/15: Separator (300mm, %1 deg hz, 3 deg vert)", + "vfe-step4": "\n\n4/15: %1 (start, %2 deg hz, 0 deg vert, KS_EIN)", + "vfe-step5-strecke": "\n\n5/15: Slope section (3 deg, L=%1 mm)", + "vfe-step7": "\n\n7/15: %1 (3 deg inclined)", + "vfe-step8-ab": "\n\n8/15: Slope section (%1 deg, L=%2 mm)", + "vfe-step8-auf": "\n\n8/15: Incline section (%1 deg, L=%2 mm)", + "vfe-tabelle-zeile": "\n %1 %2 mm %3 mm ", + "vfe-tabelle-zeile-fehler": "\n %1 --- --- ERROR", + "vfl-20m-hinweis": "\n >>> NOTE: conveyor longer than 20 m (%1 m) - motor station recommended!", + "vfl-block-erstellt": "\n>>> Block '%1' (%2) created and inserted.", + "vfl-fehler-rest-nicht-baubar": "\n ERROR: remainder cannot be built (too steep/too short for tail motor+GF2+separator+ES). Please continue drawing or plan flatter.", + "vfl-fuege-block-ein": "\n Inserting %1 ...", + "vfl-hinweis-gf2-minimum": "\n NOTE: calculated GF2=%1 mm < minimum %2 mm -> raised to minimum (ES therefore ends a bit further on; see actual-vs-target report).", + "vfl-horizontale-zwischenstrecke": "\n\nHorizontal intermediate section (0 deg, L=%1 mm)", + "vfl-kettenende-modus-ziel": "\n>>> Chain-end mode: target dL=%1 mm, dH=%2 mm (%3). GF2 varies with the angle.", + "vfl-prompt-hoehe-endpunkt": "\nHeight (Z) of the end point [%1]: ", + "vfl-prompt-hoehe-kettenende": "\nHeight (Z) of the chain end (ES element) [%1]: ", + "vfl-prompt-wahl-bis-n": "\nYour choice (1-%1) [1]: ", + "vfl-segment-gf-nicht-erlaubt": "\n Segment would be GF (too steep) or not buildable - not allowed within a VF unit.\n Please draw flatter/rising or end the conveyor.", + "vfl-winkel-option": "\n %1 - %2 deg (L_GF=%3 mm L_VF=%4 mm)", + "vfs-as90-mass": "\n AS_90: dx=%1 dz=%2", + "vfs-berechnung-parameter": "\nΔL=%1 mm ΔH=%2 mm Direction=%3", + "vfs-block-fehlende-item": "\n - %1", + "vfs-block-fehler-pfad": "\n ERROR: DXFM_BLOCKS = %1", + "vfs-bogen-ab-block-fehlt": "\n ERROR ab_%1: block not loaded!", + "vfs-bogen-ab-ks-fehlt": "\n ERROR ab_%1: KS missing!", + "vfs-bogen-ab-ok": "\n OK ab_%1: dx=%2 dz=%3", + "vfs-bogen-auf-block-fehlt": "\n ERROR auf_%1: block not loaded!", + "vfs-bogen-auf-ks-fehlt": "\n ERROR auf_%1: KS missing!", + "vfs-bogen-auf-ok": "\n OK auf_%1: dx=%2 dz=%3", + "vfs-empfohlener-winkel": "\n>>> Recommended angle: %1%2", + "vfs-es90-mass": "\n ES_90: dx=%1 dz=%2", + "vfs-fehler-winkel-tabelle": "\n ERROR: angle %1 not in arc table!", + "vfs-schritt-as": "\n\n1/11: %1 (hz=%2%3)", + "vfs-schritt5-bogen1": "\n\n5/11: %1 (3 deg inclined)", + "vfs-tabelle-zeile": "\n %1%2 %3 mm %4 mm ", + "vfs-tabelle-zeile-fehler": "\n %1%2 --- --- ERROR", + "vfs-vf-eingang-gf1": "\n\n[VF-Eingang] Slope section GF1 (3 deg, L=%1 mm)", + "kreisel-abbruch-befehl": "\nCommand cancelled.", + "kreisel-abgebrochen": "\nCancelled.", + "kreisel-connect-erfolgreich": "\nKreisel Connect successful!", + "kreisel-connect-header": "\n--- Define Kreisel by line (AN -> SP) ---", + "kreisel-eckrad-beruehrpunkt": "\nTangent point Eckrad (tangent): ", + "kreisel-eckrad-fehler-identisch": "\nError: tangent point and direction point are identical!", + "kreisel-eckrad-richtung": "\nDirection to circle centre: ", + "kreisel-emsg-kein-block": "No block selected!", + "kreisel-emsg-kein-kreisel-block": "Not a Kreisel block! (attribute ABSTAND missing)", + "kreisel-fehler-keine-entities": "\nError: no entities to create block!", + "kreisel-insert-fertig": "\nKreisel module inserted.", + "kreisel-params-attribute-header": "\nAttributes in block:", + "kreisel-params-header": "\n=== Kreisel parameters ===", + "kreisel-prompt-basispunkt": "\nBase point (AN side): ", + "kreisel-prompt-block-auswaehlen": "\nSelect Kreisel block: ", + "kreisel-prompt-endpunkt": "\nEnd point (SP side, outer): ", + "kreisel-prompt-rotation": "\nRotation in degrees <0>: ", + "kreisel-prompt-startpunkt": "\nStart point (AN side, outer): ", + "kreisel-quick-fertig": "\nQuick insert done.", + "kreisel-start-connect": "Kreisel Smart Connect", + "kreisel-start-eckrad": "Insert Eckrad", + "kreisel-start-edit": "Edit Kreisel", + "kreisel-start-insert": "Insert Kreisel module", + "kreisel-start-quick": "Kreisel quick insert", + "kreisel-start-redraw": "Redraw Kreisel", + "kreisel-start-script-connect": "Kreisel script connect", + "kreisel-start-script-insert": "Kreisel script insert", + "kreisel-typ-opt-pin": "\n[2] PIN", + "kreisel-typ-opt-standard": "\n[1] STANDARD (without PIN)", + "kreisel-warn-blockpfad": "\n[KreiselInsert] WARNING: block path not determinable!", + "kreisel-warn-core-fehlt": "\n[KreiselInsert] WARNING: ssg_core.lsp not found - using defaults.", + "omni-abbruch": "\nCancelled.", + "omni-abbruch-bogen": "\n[ARC] Cancelled.", + "omni-abbruch-omni": "\n[OMNI] Cancelled.", + "omni-abbruch-weiche": "\n[SWITCH] Cancelled.", + "omni-bogen-dialog-ladefehler": "Arc dialog could not be loaded.", + "omni-edit-kein-block": "No block selected!", + "omni-edit-kein-element": "No Omniflo element recognised! (ARTINR/block name not in catalog)", + "omni-edit-prompt-auswahl": "\nSelect Omniflo element: ", + "omni-fehler-dxfm-data": "\n[OMNI] ERROR: DXFM_DATA not set!", + "omni-fehler-dxfm-omniflo": "\n[OMNI] ERROR: DXFM_OMNIFLO not set!", + "omni-info-bogen-prompt": "\nEnter Sivas ID of the arc: ", + "omni-info-weiche-prompt": "\nEnter Sivas ID of the switch: ", + "omni-insert-keine-attribute": "\n[OMNI] No attributes found on source block.", + "omni-prompt-einfuegepunkt": "\nSelect insertion point: ", + "omni-prompt-endpunkt-fahrstrecke": "\nSelect end point of the travel path: ", + "omni-weiche-dialog-ladefehler": "Switch dialog could not be loaded.", + "prompt-wahl-1-2-3-4": "\nYour choice (1/2/3/4) [1]: ", + "vfc-alert-keine-gueltige-linie": "No valid line selected!", + "vfc-bitte-3dlinie-foerderstrecke": "\nPlease select a 3D line for the conveyor section:", + "vfc-bks-weltkoordinaten": "\n UCS set to world coordinates.", + "vfc-eingabemodus-3dlinie": "\n 1 - Select 3D line (start and end point with height)", + "vfc-eingabemodus-header": "\n\nSelect input mode:", + "vfc-eingabemodus-werte": "\n 2 - Enter values manually", + "vfc-fahrtrichtung-0": "\n 1 - 0%1 (X axis +, East)", + "vfc-fahrtrichtung-180": "\n 3 - 180%1 (X axis -, West)", + "vfc-fahrtrichtung-270": "\n 4 - 270%1 (Y axis -, South)", + "vfc-fahrtrichtung-90": "\n 2 - 90%1 (Y axis +, North)", + "vfc-fahrtrichtung-header": "\n\nSelect travel direction:", + "vfc-fehler-keine-linie": "\n ERROR: No line or polyline selected!", + "vfc-foerderrichtung-ab": "\n Conveying direction: DOWN", + "vfc-foerderrichtung-auf": "Up", + "vfc-foerderrichtung-menu": "\nConveying direction:\n 1 - UP\n 2 - DOWN", + "vfc-kein-objekt-gewaehlt": "\n No object selected.", + "vfc-label-von-bis": ": from %1mm to %2mm, ", + "vfc-linie-polylinie-waehlen": "\n >> Select 3D line or polyline: ", + "vfc-modus-3dlinie-fallback": "Line", + "vfc-modus-3dlinie-header": "\n\n>>> MODE: Select 3D line <<<", + "vfc-modus-werteingabe-header": "\n\n>>> MODE: Manual value entry <<<", + "vfc-objekt-block-waehlen": "\n >> Select object (block): ", + "vfc-prompt-delta-h": "\n%1H - height difference (mm): ", + "vfc-prompt-delta-l": "\n%1L - horizontal distance (mm): ", + "vfc-prompt-startpunkt-aus": "\nSelect start point for AUS_Element: ", + "vfc-prompt-wahl-1-2-ohne-default": "\nYour choice (1/2): ", + "vfc-status-ok": " OK", + "vfc-warnung-ks-nicht-gefunden": "\n WARNING: KS_EIN/KS_AUS not found!", + "vfe-alert-bib-nicht-init": "Etage library not initialised!", + "vfe-berechnung-header": "\n ETAGE CALCULATION FOR ALL ANGLES", + "vfe-bib-bereits-init": "\n Etage library already initialised.", + "vfe-bib-init-erfolg": "\n Etage library successfully initialised.", + "vfe-bib-initialisiere": "\n Initialising Etage library...", + "vfe-ergebnistabelle-header": "\n RESULT TABLE (L_GF = total of both GF sections)", + "vfe-extrahiere-as30": "\n Extracting AS_30_rechts dimensions...", + "vfe-extrahiere-es30": "\n Extracting ES_30_rechts dimensions...", + "vfe-kein-winkel-gefunden": "\n>>> NO matching angle found!", + "vfe-status-gueltig": "VALID", + "vfe-status-ungueltig": "INVALID (negative length)", + "vfe-step5-skip": "\n\n5/15: L_GF1 (skipped)", + "vfe-step6": "\n\n6/15: deflection station (500mm, 3 degrees inclined)", + "vfe-step8-skip": "\n\n8/15: L_VF (skipped)", + "vfe-tabelle-spalten": "\n Angle L_GF (mm) L_VF (mm) Status", + "vfe-warn-block-as30-fehlt": "\n WARNING: block AS_Element_30_rechts missing - using defaults", + "vfe-warn-block-es30-fehlt": "\n WARNING: block ES_Element_30_rechts missing - using defaults", + "vfe-warn-block-fehlt-links": "\n WARNING: block missing - using defaults (left)", + "vfe-warn-block-fehlt-rechts": "\n WARNING: block missing - using defaults (right)", + "vfe-warn-kein-ks-links": "\n WARNING: no KS - using defaults (left)", + "vfe-warn-kein-ks-rechts": "\n WARNING: no KS - using defaults (right)", + "vfe-warn-ks-fehlt-standard": "\n WARNING: KS missing - using defaults", + "vfe-warn-lisp-pfad": "\n[vf_etage] WARNING: Lisp path not determinable - cannot load vf_core.lsp!", + "vfl-abgebrochen-kein-ziel": "\n Cancelled - no target point selected.", + "vfl-bogen-ab3-uebergang": "\n\nVario_Bogen_ab_3 (transition horizontal -> 3 degrees)", + "vfl-bogen-auf3-uebergang": "\n\nVario_Bogen_auf_3 (transition 3 degrees -> horizontal)", + "vfl-gf-verteilung-ganz-einlauf": "\n 2 - Entire buffer section at inlet (GF1), no GF2", + "vfl-gf-verteilung-haelfte": "\n 1 - 1/2 GF at outlet (GF2), 1/2 GF at inlet (GF1)", + "vfl-gf-verteilung-header": "\n\nBuffer section (GF) - choose distribution:", + "vfl-ist-endpunkt-frage": "\n\nIs this the end point of the conveyor?", + "vfl-ist-kettenende-frage": "\n\nIs this the chain end (ES element)?", + "vfl-ja-motorstation-kettenende": "\n 3 - Yes (set motor station, define chain end)", + "vfl-ja-nur-motorstation": "\n 1 - Yes (set motor station only)", + "vfl-ja-separator-es": "\n 1 - Yes (set separator + ES element)", + "vfl-linie-zu-kurz-simple": "\n Line too short - skipped.", + "vfl-linie-zu-kurz-uebersprungen": "\n Line too short (or against travel direction) - skipped.", + "vfl-mehrere-winkel-header": "\n\nSeveral valid angles - please choose the desired angle:", + "vfl-modus1-beschreibung": "\nMixed slope-section/VarioFoerderer chain along a freely", + "vfl-modus1-header": "\n VF-LINIENZUG - Mode 1: Manual entry", + "vfl-naechstes-element-vf": "\n\nNext element in the VarioFoerderer:", + "vfl-nein-weiterbauen": "\n 2 - No (continue building)", + "vfl-opt-auf-ab-foerderer": "\n 3 - Up/down conveyor (line with height difference)", + "vfl-opt-horizontaler-foerderer": "\n 1 - Horizontal conveyor (line without height difference)", + "vfl-opt-vario-kurve": "\n 2 - Vario curve (30/60/90 degrees)", + "vfl-prompt-wahl-1-2-def2": "\nYour choice (1/2) [2]: ", + "vfl-prompt-wahl-1-3-def2": "\nYour choice (1/2/3) [2]: ", + "vfl-prompt-wahl-1-3-def3": "\nYour choice (1/2/3) [3]: ", + "vfl-sep-horizontal-info": "\n [horizontal] Separator (300 mm, 0 degrees)", + "vfs-berechnung-header": "\n CALCULATION FOR ALL ANGLES (Standard)", + "vfs-block-fehlende-header": "\n The following block files are missing:", + "vfs-ergebnistabelle-header": "\n RESULT TABLE", + "vfs-extrahiere-aus": "\n Extracting AUS_Element dimensions...", + "vfs-extrahiere-bogen": "\n Extracting arc dimensions...", + "vfs-extrahiere-ein": "\n Extracting EIN_Element dimensions...", + "vfs-fehler-block-as90": "\n ERROR: block AS_Element_90_links not loaded!", + "vfs-fehler-block-es90": "\n ERROR: block ES_Element_90_links not loaded!", + "vfs-fehler-ks-as90": "\n ERROR: KS_EIN/KS_AUS missing in AS_90!", + "vfs-fehler-ks-es90": "\n ERROR: KS_EIN/KS_AUS missing in ES_90!", + "vfs-fehler-lib-nicht-init": "\n ERROR: library not correctly initialised (AUS/EIN dimensions missing)!", + "vfs-kein-winkel-gefunden": "\n>>> NO matching angle found!", + "vfs-lib-bereits-init": "\n Standard library already initialised.", + "vfs-lib-init-erfolg": "\n Standard library successfully initialised.", + "vfs-lib-init-start": "\n Initialising standard library...", + "vfs-status-gueltig": "VALID", + "vfs-status-ungueltig": "INVALID (negative length)", + "vfs-tabelle-spalten": "\n Angle L_GF (mm) L_VF (mm) Status", + "vfs-vf-eingang-gf1-skip": "\n\n[VF-Eingang] Slope section GF1 (skipped)", + "vfs-vf-eingang-separator": "\n[VF-Eingang] Separator (300 mm, 3 degrees inclined)", + "vfs-vf-eingang-umlenk": "\n[VF-Eingang] Deflection station (500 mm, 3 degrees inclined)", + "vfs-warn-lisppfad": "\n[vf_standard] WARNING: Lisp path not determinable - cannot load vf_core.lsp!", + "dim-switch-modus": "\nMode switched to: %1", + "dim-switch-blocks": "\n DXFM_BLOCKS = %1", + "dim-switch-omniflo": "\n DXFM_OMNIFLO = %1", + "sprache-gewechselt": "\nLanguage switched to: %1", + "cmd-block-auswaehlen": "\nSelect block: ", + "cmd-kein-block-ausgewaehlt": "\nNo block selected.", + "cmd-kreisel-bearbeiten": "\nEdit Kreisel: %1", + "cmd-eckrad-bearbeiten": "\nEdit Eckrad: %1", + "cmd-omniflo-bearbeiten": "\nEdit Omniflo element: %1", + "cmd-attribute-bearbeiten": "\nEdit attributes: %1", + "layer-prompt-ziel-layer": "\nSelect object on the target layer: ", + "layer-prompt-objekt": "\nSelect object: ", + "layer-prompt-referenz-objekt": "\nSelect reference object (determines type and layer): ", + "layer-prompt-typ-ermittlung": "\nClick again to determine the type: ", + "layer-prompt-ausblenden": "\nClick layer to hide (Enter=End): ", + "layer-prompt-einfrieren": "\nClick layer to freeze (Enter=End): ", + "layer-prompt-aktiv-bleibt": "\nSelect object on the layer that stays ACTIVE: ", + "layer-prompt-name-loeschen": "\nLayer name to delete: ", + "layer-err-kein-objekt": "No object selected.", + "layer-err-kein-ziel-layer": "No target layer selected.", + "layer-err-kein-ziel-layer-kurz": "No target layer.", + "layer-err-keine-passenden-objekte": "No matching objects found.", + "layer-abgebrochen": "Cancelled.", + "layer-err-kein-referenz-objekt": "No reference object selected.", + "layer-err-aktiv-nicht-ausschalten": "Cannot turn off the active layer!", + "layer-err-aktiv-nicht-einfrieren": "Cannot freeze the active layer!", + "layer-aktiver-layer": "\nActive layer: %1", + "layer-objekt-auf-layer": "\nObject is on layer: %1", + "layer-nur-layer-sichtbar": "\nOnly layer '%1' is visible.", + "layer-geloescht": "\nLayer '%1' deleted.", + "layer-leerer-geloescht": "\nEmpty layer '%1' deleted.", + "layer-existiert-nicht": "Layer '%1' does not exist.", + "layer-ques-typ-wechseln": "Change layer of these %1 objects?", + "layer-ques-alle-loeschen": "Delete all objects on layer '%1'?", + "core-start-titel": "\n***** %1 *****\n", + "core-errhan-fehler": "\nError: ", + "core-blockname-exists": "Block name '%1' already exists - skipping.", + "core-dwg-not-found": "\nERROR: Block not found: %1", + "exp-cfg-not-found": "\n[export] WARNING: %1 not found/empty, using defaults.", + "exp-check-ids": "\n[%1] Checking and assigning IDs...", + "exp-update-hoehe-drehung": "\n[%1] Updating height/rotation...", + "exp-collect-blocks": "\n[%1] Collecting relevant blocks...", + "exp-no-blocks-found": "\n[%1] No relevant blocks found.", + "exp-blocks-found": "\n[%1] %2 blocks found.", + "exp-output-dir": "\n[%1] Output folder: %2", + "exp-file-open-error": "\n[%1] ERROR: Cannot open file: %2", + "exp-json-written": "\n[%1] JSON written: %2", + "exp-calling-python": "\n[%1] Calling Python...", + "exp-export-started": "\n[%1] Export started: %2", + "exp-python-not-found": "\n[%1] ERROR: Python script not found: %2", + "exp-omni-no-inserts": "\n[OMNI_UPDATE] No INSERT blocks in the drawing.", + "exp-omni-updated": "\n[OMNI_UPDATE] %1 elements updated (HEIGHT, ROTATION).", + "id-new-assigned": "\n[ID] New ID assigned: %1", + "id-invalid-block": "\n[ID] ERROR: Not a valid INSERT block!", + "id-check-no-blocks": "\n[IDSCHECK] No relevant blocks found.", + "id-check-missing-set": "\n[IDSCHECK] Missing ID set: %1 (block %2)", + "id-check-duplicate": "\n[IDSCHECK] Duplicate ID %1 -> new ID %2 (block %3)", + "id-check-done": "\n[IDSCHECK] Done. %1 duplicates corrected.", + "id-check-corrected": "\n[IDSCHECK] %1 IDs corrected.", + "id-select-block-prompt": "\nSelect block: ", + "id-generate-invalid": "\n[IDGENERATE] No valid block selected.", + "dialog-nicht-verfuegbar": "Dialog not available.", + "dialog-einfuegepunkt-waehlen": "\nSelect insertion point: ", + "extcall-python-rueckgabe": "\n[SSG_LIB] Python return value: %1", + "extcall-keine-rueckgabe": "\n[SSG_LIB] WARNING: No return value received from Python.", + "extcall-skript-nicht-gefunden": "\n[SSG_LIB] ERROR: %1 not found!", + "vfstart-core-nicht-gefunden": "\n[VarioFoerderer] WARNING: vf_core.lsp not found - commands not available.", + "vfstart-etage-core-nicht-gefunden": "\n[EtageVarioFoerderer] WARNING: vf_core.lsp not found - commands not available.", + "gf-seite-aus-header": "\n\nOutput element (AS_Element_90_*) - choose side:", + "gf-seite-ein-header": "\n\nInput element (ES_Element_90_*) - choose side:", + "gf-seite-links": "\n 1 - Left", + "gf-seite-rechts": "\n 2 - Right", + "prompt-wahl-1-2": "\nYour choice (1/2) [1]: ", + "ques-yn-default-yes": " Y/N : ", + "ques-yn-default-no": " Y/N : " + } +}