Files
dxfmakros/lang/en_GB.json
T
y.wang 833a4b60a6 fix: Lauf-Anfang als selbstbeschreibender Wert, Dialog-Hinweise lesbar
Die Frage "Lauf beginnen mit" (Modus 2) journalisiert jetzt den WERT
("mit-gf1"/"direkt"/"ohne") statt der Auswahl-Ziffer. Anlass war die
Umstellung der Optionsreihenfolge auf Regelfall zuerst: mit einer Ziffer
haette dieselbe "3" vor und nach der Umstellung Verschiedenes bedeutet,
eine bestehende Kette waere beim Doppelklick still mit einer ANDEREN
Anfangsvariante neu gebaut worden. Alte Ketten laufen ueber die Tabelle
*vfl-m2-anfang-alt* weiter; ein Wert, der weder Alt-Ziffer noch gueltiger
Wert ist, bricht den Aufbau ab und nennt Kette und Wert, statt eine
Variante zu raten.

Weiter aus der Modus-2-Arbeit:
- Laengenbudget je VF-Einheit (max. 25 m, max. 2 Vario-Kurven,
  *vfk-vf-kurven-max*), bei Ueberschreitung automatischer Schnitt
- nach einer VF-Geraden ist der Bogentyp waehlbar (GF-Bogen/Vario-Kurve)
- Segmentnummer steht im Kopf jedes Dialogs
- "Separator NACH" ist am letzten GF-Stueck vor einem ES gesperrt, der
  automatische Separator wird dort erklaert
- "Ohne Umlenkstation" ist mit AS-Element gesperrt
- Fuellerlaenge nur noch dann aus dem Rueckanker, wenn der VF-Lauf das
  Pfadende ist

Dialoge: Hinweis steht in Klammern hinter dem Ankreuzfeld statt darunter,
Lauf-Anfang-Optionen tragen die Nummern der Konsolenliste, die
Begruendungszeile ist breit genug und wird nicht mehr abgeschnitten.

14 neue Unit-Tests zur Wert-Normierung (durchlaufen die Alt-Tabelle).
Sprachdateien 1205/1205 synchron.

Offen: der Fuellerlaengen-Fix ist in BricsCAD noch nicht nachgemessen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-10-23 15:39:57 +02:00

1220 lines
98 KiB
JSON

{
"texts": {
"vfl-alert-gf-modul-fehlt": "Slope-section module not loaded!\nThe chain type requires Gefaellestrecke.lsp\n(GF segments and GF arcs). Please load the menu.",
"vfl-prompt-startpunkt-kette": "\n\nSelect chain start point: ",
"vfl-prompt-hoehe-startpunkt-kette": "\nHeight (Z) of the start point [%1]: ",
"vfl-abgebrochen": "\nCancelled.",
"vfl-as-setzen-frage": "\n\nPlace AS element?",
"vfl-as-nein": "\n 2 - No (chain starts directly with GF/VF at the start point)",
"vfl-as-auto-erkannt": "\n>>> Start point lies on the KS_AUS of an existing %1 chain - no AS element needed.",
"vfl-familie-neutral": "GF/VF",
"vfl-sep-nach-durch-es-ueberschrieben": "\n>>> Separator AFTER ignored - the ES element already brings its own separator at the chain end (otherwise two separators in a row).",
"vfl-sep-gf-es-automatisch": "(A separator between GF and ES is inserted automatically.)",
"vfl-echo-position": "\n>>> Position: X=%1 Y=%2 Z=%3",
"vfl-echo-wahl": "\n>>> Selected: %1",
"vfl-aus-seite-header": "\n\nOUT element (AS_Element_*) - select side:",
"vfl-naechstes-element-header": "\n\nSelect next element:",
"vfl-menu-gf-bogen-1": "\n 1 - GF arc (horizontal curve)",
"vfl-menu-linie-gf-2": "\n 2 - New line: GF (gravity section)",
"vfl-menu-linie-vf-3": "\n 3 - New line: down/up VF (VarioFoerderer unit)",
"vfl-menu-horizontal-vf-4": "\n 4 - New VF with horizontal start (horizontal piece)",
"vfl-menu-linie-ende-5": "\n 5 - New line TO chain end (then separator + ES element)",
"vfl-prompt-wahl-1-5-def2": "\nYour choice (1-5) [2]: ",
"vfl-menu-linie-gf-1": "\n 1 - New line: GF (gravity section)",
"vfl-menu-linie-vf-2": "\n 2 - New line: down/up VF (VarioFoerderer unit)",
"vfl-menu-horizontal-vf-3": "\n 3 - New VF with horizontal start (horizontal piece)",
"vfl-menu-linie-ende-4": "\n 4 - New line TO chain end (then separator + ES element)",
"vfl-prompt-wahl-1-4-def1": "\nYour choice (1-4) [1]: ",
"vfl-menu-gf-bogen-ka-1": "\n 1 - GF arc (horizontal curve)",
"vfl-menu-variokurve-ka-2": "\n 2 - Vario curve (horizontal curve, 30/60/90 degrees)",
"vfl-menu-linie-gf-ka-3": "\n 3 - New line: GF (gravity section)",
"vfl-menu-linie-vf-ka-4": "\n 4 - New line: down/up VF (VarioFoerderer unit)",
"vfl-menu-horizontal-vf-ka-5": "\n 5 - New VF with horizontal start (horizontal piece)",
"vfl-menu-linie-ende-ka-6": "\n 6 - New line TO chain end (then separator + ES element)",
"vfl-prompt-wahl-1-6-def3": "\nYour choice (1-6) [3]: ",
"vfl-fehler-horizontal-vf-kurz": "\nERROR: Horizontal VF needs >= 1000 mm (deflection + motor) - draw it longer.",
"vfl-prompt-hoehe-eingang-gf1": "\nTarget height (Z) at the transition to the horizontal section [%1]: ",
"vfl-alert-eingang-kann-nicht-steigen": "This VF unit (horizontal start) cannot rise - please use 'New line: up/down VF' instead.",
"vfl-alert-eingang-hoehe-zu-klein": "Target height too small: at least %1 mm of drop is needed (separator+deflection station+transition bend alone already reach that much). Please enter a lower target height.",
"vfl-alert-eingang-hoehe-zu-gross": "Target height too far away for this distance - the maximum reachable target height would be about %1 mm. Please use 'New line: up/down VF' instead.",
"vfl-fehler-linie-zu-kurz": "\nERROR: Line too short (or against travel direction) - please pick again.",
"vfl-fehler-vf-kurz": "\nERROR: VarioFoerderer needs >= 1000 mm (deflection + motor) - draw it longer or choose \"GF\".",
"vfl-gefaelle-festlegen-header": "\nDefine slope:",
"vfl-gefaelle-opt-hoehe": "\n 1 - Given height (target height)",
"vfl-gefaelle-opt-winkel": "\n 2 - Enter incline angle",
"vfl-gf-hinweis-laenge-berechnet": "(deltaL will be calculated and inserted)",
"vfl-prompt-neigungswinkel": "\nIncline angle (degrees, 0 < angle <= %1) [%1]: ",
"vfl-alert-winkel-ungueltig": "Incline angle invalid: %1 degrees. Allowed: 0 < angle <= %2 degrees.",
"vfl-prompt-hoehe-linienendpunkt": "\nHeight (Z) of the line end point [%1]: ",
"vfl-prompt-hoehe-linienendpunkt-2": "\nHeight (Z) of the line end point (down: %1 | up: %2) [%1]: ",
"vfl-prompt-hoehe-linienendpunkt-3": "\nHeight (Z) of the line end point (down: %1 | up: %2 | picked: %3) [%3]: ",
"vfl-hinweis-hoehe-vorschlag-fehlt": "\n(Note: no buildable suggestion found for that direction at this segment length - please check the value manually.)",
"vfl-alert-gf-kann-nicht-steigen": "Gravity section (GF) cannot rise - please pick a lower target height or use down/up VF.",
"vfl-alert-gefaelle-zu-steil": "Slope too steep for GF: %1 degrees (max allowed %2 degrees).\nPlease pick a smaller height difference or use down/up VF.",
"vfl-gf-laenge-modus-header": "\nHow should the length of this gravity section be determined?",
"vfl-gf-laenge-modus-opt-endpunkt": "\n 1 - Pick end point (length results from it)",
"vfl-gf-laenge-modus-opt-hoehe": "\n 2 - Set target height (length will be calculated)",
"vfl-gf-laenge-modus-opt-steigend": "\n 3 - Rising GF (special case, up to 3 degrees)",
"vfl-gf-laenge-modus-opt-qc": "\n 4 - QC line with GF (automatic up/down calculation)",
"vfl-gf-laenge-modus-opt-parallel": "\n 5 - Continue parallel to the carousel (distance only)",
"vfl-richtung-header": "\n\nIn which direction should the chain be built?",
"vfl-richtung-opt-vor": "\n 1 - Build forwards (the picked point is the start of the chain)",
"vfl-richtung-opt-rueck": "\n 2 - Build backwards (the picked point is the end of the chain, ES outlet)",
"vfl-prompt-es-achse-p2": "\n\nTravel direction - 2nd point (defines the direction only, the end point stays): ",
"vfl-es-basislinie-info": "\n Outfeed axis (travel direction): %1 degrees.",
"vfl-rueck-menu-linie-gf": "\n 1 - New line: GF (gravity section)",
"vfl-rueck-laenge-opt-anfangspunkt": "\n 1 - Pick start of chain (length results, start height is calculated)",
"vfl-rueck-laenge-opt-anfangshoehe": "\n 2 - Set start height (length will be calculated)",
"vfl-rueck-prompt-anfangspunkt": "\n\nPick the start of the chain (direction is fixed by the outfeed axis): ",
"vfl-rueck-prompt-anfangshoehe": "\nDesired height at the start of the chain (mm) <%1>: ",
"vfl-rueck-alert-hoehe-zu-klein": "The start of the chain must be HIGHER than its end - a gravity section falls in the travel direction.",
"vfl-rueck-erfolg-punkt": "\n>>> Built backwards: GF section %1 mm (horizontal), start height %2 mm.",
"vfl-rueck-erfolg-hoehe": "\n>>> Built backwards: GF section %1 mm (horizontal), start height %2 mm.",
"vfl-rueck-erfolg-parallel": "\n>>> Backwards, parallel to the carousel: GF section %1 mm (horizontal), bend %2 degrees %3.",
"vfl-par-prompt-abstand": "\n\nDistance to the carousel (mm, perpendicular to the feed axis, from AS KS_EIN to bend KS_AUS): ",
"vfl-par-nur-kettenanfang": "'Parallel to the carousel' only works at the start of a chain with an AS element AND a defined feed axis (2nd point in the AS dialog).",
"vfl-par-kein-bogen": "No GF bend cancels the AS plan turn of %1 degrees (side %2) - cannot close parallel to the carousel.",
"vfl-par-kein-versatz": "The AS element does not turn away from the feed axis - no distance can be reached this way.",
"vfl-par-zu-klein": "Distance %1 mm too small: AS and bend alone already need %2 mm. Please choose a larger distance.",
"vfl-par-erfolg": "\n>>> Parallel to the carousel: GF section %1 mm (horizontal), bend %2 degrees %3, resulting distance %4 mm.",
"vfl-qc-nur-kettenanfang": "\nERROR: 'QC line with GF' is only possible at the chain start (needs its own AS side) - please choose a different mode.",
"vfl-qc-prompt-richtung": "\n\nChoose direction (line on which AS entry and ES exit shall lie) - click a point in the travel direction: ",
"vfl-qc-ks-ein-gemessen": "\n>>> AS KS_EIN (reference line) measured: X=%1 Y=%2 Z=%3",
"vfl-qc-ks-ein-nicht-gemessen": "\nWARNING: could not measure the AS element's KS_EIN - falling back to the clicked point (reference line may be inaccurate).",
"vfl-qc-prompt-e1": "\nDescending GF entry, incl. separator (mm) [%1]: ",
"vfl-qc-prompt-e2": "\nLength of descending GF exit after the second 30-degree bend (mm) [%1]: ",
"vfl-qc-prompt-gesamtlaenge-mittelteil": "\nTotal middle section length, w/o entry/exit (mm): ",
"vfl-qc-prompt-anteil": "\nShare of 1st descending piece of F_total (0.0-1.0) [%1]: ",
"vfl-qc-s-winkel-echo": "\n>>> S slope auto-selected: %1 degrees",
"vfl-qc-nicht-baubar": "\nERROR: This middle-section length cannot be built with this split (F_total=%1mm, S=%2mm - negative, even with steeper S angles tried up to 30 degrees). Please choose a larger total length (at least approx. %3 mm).",
"vfl-qc-bogen-nicht-schliessbar": "\nERROR: This AS/ES angle combination (AS turn=%1 deg, ES turn=%2 deg, required bend turn=%3 deg) cannot be closed back onto the reference line with either a 30- or a 90-degree bend. Please adjust the AS/ES angles (e.g. choose the same for both).",
"vfl-qc-e2-negativ": "\nERROR: The computed length between the 2nd bend and the ES element is not buildable (%1 mm). Please adjust E1, the middle section total length, or the share.",
"vfl-qc-erfolg": "\n>>> QC chain built. Target height (AS exit)=%1 Actual height (ES exit)=%2 Deviation from reference line=%3mm",
"vfl-qc-uform-nur-kettenanfang": "\nERROR: 'QC line with GF and U-shape' is only possible at the chain start (needs its own AS side) - please choose a different mode.",
"vfl-qc-uform-winkel-fix": "\nNote: AS/ES angles are fixed at 90 degrees for this option (only the side is selectable).",
"vfl-qc-prompt-u-fest-laenge": "\nFixed section between the two 90-degree bends (mm) [%1]: ",
"vfl-qc-uform-prompt-richtung-e1": "\n\nClick the start point of the 1st 90-degree bend (sets travel direction AND the descending GF entry length incl. separator): ",
"vfl-qc-uform-e1-echo": "\n>>> E1 (incl. separator)=%1mm direction=%2 deg",
"vfl-qc-uform-e1-neigung-echo": "\n>>> E1 slope (measured on AS, KS_EIN->KS_AUS)=%1 deg",
"vfl-qc-uform-fa-s-echo": "\n>>> Computed: Fa (descending, 3 deg, before S)=%1mm S (rising, %3 deg, auto-selected)=%2mm",
"vfl-qc-uform-fa-s-negativ": "\nERROR: Fa/S not buildable even with steeper S angles (tried up to 30 degrees) - last try Fa=%1mm S=%2mm. Please adjust E1 or the fixed section.",
"vfl-qc-uform-fa-s-negativ-e1": "\nERROR: Fa/S not buildable even with steeper S angles (tried up to 30 degrees) - last try Fa=%1mm S=%2mm. Minimum E1 (incl. separator) for the steepest angle: approx. %3 mm.",
"vfl-prompt-neigungswinkel-laenge-berechnet": "\nIncline angle (degrees, 0 < angle <= %1) [%1] (deltaL will be calculated and inserted): ",
"vfl-prompt-neigungswinkel-steigend": "\nRising angle (degrees, 0 <= angle <= %1, 0 = level) [%1]: ",
"vfl-alert-winkel-ungueltig-steigend": "Rising angle invalid: %1 degrees. Allowed: 0 <= angle <= %2 degrees.",
"vfl-alert-gf-steigend-falsche-richtung": "Rising gravity conveyor: the chosen target height is below the current height - please choose a higher target height or use the normal (falling) mode.",
"vfl-sep-vor-gf-frage": "\n\nInsert separator BEFORE this gravity section?",
"vfl-sep-nach-gf-frage": "\n\nInsert separator AFTER this gravity section?",
"vfl-sep-gf-header": "Separator at this gravity section",
"vfl-ist-kettenende-header": "\nIs this the chain end?",
"vfl-kettenende-opt-ja-es": "\n 1 - Yes (place ES element)",
"vfl-kettenende-opt-ja-ohne-es": "\n 2 - Yes (without placing ES element)",
"vfl-kettenende-opt-nein": "\n 3 - No (keep building)",
"vfl-alert-vf-nicht-baubar": "VF unit geometrically not buildable!\ndeltaL=%1 mm, deltaH=%2 mm, direction=%3\nPlease pick another end point/height.",
"vfl-alert-segment-nicht-baubar": "Segment geometrically not buildable!\ndeltaL=%1 mm, deltaH=%2 mm, direction=%3\nPlease pick another end point/height.",
"vfl-info-kurzes-segment": "\n>>> Short segment (deltaL=%1 mm < 1000): automatic 3-degree gravity section (no height query, deltaH=%2 mm).",
"vfl-info-kettenende-footprint": "\n>>> Chain-end mode: footprint for separator + ES reserved -> buildable deltaL=%1 mm, deltaH=%2 mm.",
"vfl-echo-endpunkt-hoehe": "\n>>> End point picked: X=%1 Y=%2 (deltaL=%3 mm, direction=%4 deg)\n>>> Target height entered: %5 mm (currently %6 mm, deltaH=%7 mm %8)",
"vfl-kette-eingefuegt": "\n>>> VF chain inserted! <<<",
"vfl-info-as-eingefuegt": "\n>>> AS element inserted - actual remaining length: deltaL=%1 mm.",
"vfl-info-kein-as": "\n>>> No AS element - chain starts directly at the start point.",
"vfl-es-setzen-frage": "\n\nPlace ES element?",
"vfl-es-nein-zielpunkt": "\n 2 - No (chain ends directly at the target point)",
"vfl-prompt-endpunkt-fahrtrichtung": "\n\nSelect end point along travel direction (defines the length): ",
"vfl-prompt-as-achse-p2": "\n\nFeed axis - 2nd point (defines the direction only, the start point stays): ",
"vfl-basislinie-punkte-gleich": "\n The two points are identical - no direction can be derived. Aborting.",
"vfl-basislinie-info": "\n Feed axis (travel direction): %1 degrees.",
"vfl-basislinie-ohne": "\n No feed axis defined - the direction follows from the next click.",
"vfl-as-seite-ermittelt": "\n AS side from the position of the next point: %1",
"vfl-endpunkt-modus-header": "\n\nHow should the end point be determined?",
"vfl-endpunkt-modus-opt-linie": "\n 1 - Draw target line (2 points) - the intersection defines the length",
"vfl-prompt-ziellinie-p1": "\n\nTarget line - 1st point (any direction, Z is ignored): ",
"vfl-prompt-ziellinie-p2": "\n Target line - 2nd point: ",
"vfl-endpunkt-modus-opt-punkt": "\n 2 - Select point - along the fixed travel direction",
"vfl-ziellinie-parallel": "\n The selected line is parallel to the travel direction - there is no unique intersection.",
"vfl-ziellinie-hinter-start": "\n The intersection lies behind the start of the run - please select a different line.",
"vfl-prompt-endpunkt-frei": "\n\nEnd point of the line (XY, any direction): ",
"vfl-fehler-laenge-max": "\n>>> ERROR: Length %1 m exceeds the conveyor maximum length of 25 m - please pick another end point.",
"vfl-glied-gf-bogen": "GF arc (horizontal curve)",
"vfl-glied-gf": "Gravity section (GF)",
"vfl-glied-vf": "VarioFoerderer unit (down/up)",
"vfl-glied-horizontal-vf": "VF with horizontal start",
"vfl-glied-linie": "Line to chain end",
"vfl-glied-as": "AS element (chain start)",
"vfl-glied-es": "ES element (chain end)",
"vfl-glied-vario": "Vario curve (horizontal curve in VF)",
"vfl-glied-offen": "(open)",
"vfl-edit-kein-journal": "This chain block carries no input journal (legacy) and cannot be edited step by step.",
"vfl-edit-m2-obsolet": "This mode-2 block was built with the old object-reference journal and can no longer be rebuilt by double-click. Please recreate the chain with mode 2 (the new version stores the segment data directly on the block).",
"vfl-edit-kette-header": "\n\nChain with %1 segment(s):",
"vfl-edit-abgespielt": "\n>>> %1 segment(s) replayed, %2 undone - then continue interactively.",
"vfl-edit2-reset-info": "\n>>> Rebuilding this Modus-2 chain identically from the saved inputs...",
"vfl-konvert-fehler": "\n>>> ERROR converting %1: %2 - the old block is gone, the partial geometry is loose in the drawing.",
"vfl-restore-prompt-auswahl": "\nSelect the loose chain geometry (the section XDATA of the objects is read):",
"vfl-restore-keine-sektionen": "\n>>> The selection carries no section XDATA (SSG_VF_EDIT_SEG) - no chain can be restored from it.",
"vfl-restore-luecke": "\n>>> WARNING: section %1 is missing from the selection - only segments 1..%2 will be restored.",
"vfl-restore-gefunden": "\n>>> %1 section(s) found, replaying %2 journal entries.",
"vfl-restore-keine-praeambel": "\n>>> No preamble XDATA found (chain built before it existed) - start point, start height and AS element will be asked now.",
"vfl-restore-frage-as": "\nAS element at the start of the chain? [Ja/Nein] <Ja>: ",
"vfl-restore-frage-as-seite": "\nAS element side? [Links/Rechts] <Links>: ",
"vfl-restore-geloescht": "\n>>> Rebuild finished - %1 old loose entity(s) deleted.",
"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?",
"vf-winkel-aus-header": "\n\nOutput element (AS_Element) - choose angle:",
"vf-winkel-ein-header": "\n\nInput element (ES_Element) - choose angle:",
"vf-winkel-90": "\n 1 - 90 deg",
"vf-winkel-30": "\n 2 - 30 deg",
"vfl-gf-bogen-winkel-header": "\n\nGF arc - choose angle:",
"vfl-gf-bogen-seite-header": "\nGF arc - choose side:",
"vfl-winkel-30": "\n 30 deg",
"vfl-winkel-60": "\n 60 deg",
"vfl-winkel-90": "\n 90 deg",
"vfl-prompt-wahl-winkel-30-60-90": "\nEnter angle (30/60/90) [90]: ",
"vfl-variokurve-winkel-header": "\n\nVario curve - choose angle:",
"vfl-opt1-90grad": "\n 90 deg",
"vfl-opt2-60grad": "\n 60 deg",
"vfl-opt3-30grad": "\n 30 deg",
"vfl-prompt-wahl-1-3-def1": "\nYour choice (1/2/3) [1]: ",
"vfl-frage-startpunkt-typ": "\n\nNo clear GF/VF component was recognized at the starting point (a GF stretch and a VF horizontal stretch look structurally identical). How should the entry be built?",
"vfl-opt-eingang-direkt": "\n 1 - Build idler station directly (no GF stretch)",
"vfl-opt-eingang-mit-stumpf": "\n 2 - GF (%1 mm) + idler station",
"vfl-opt-eingang-ohne-umlenk": "\n 3 - No idler station (VF continuation)",
"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",
"vfl-m3-titel": "\n VF LINE PATH - Mode 2: from 3D line WITH target height (anchors + solver + build)",
"vfl-m3-alert-gf-modul": "Gefaellestrecke module not loaded!",
"vfl-m3-pfad-waehlen": "\n\nSelect path objects (lines/arcs):",
"vfl-m3-keine-objekte": "\nNo objects selected - aborting.",
"vfl-m3-prompt-startpunkt": "\n\nSelect chain start point (higher side): ",
"vfl-prompt-hoehe-startpunkt": "\nHeight (Z) of the start point [%1]: ",
"vfl-m3-prompt-endpunkt": "\n\nSelect chain end point (target): ",
"vfl-m3-prompt-zielhoehe": "\nTarget height (Z) of the end point [%1]: ",
"vfl-m3-fehler-nicht-sortierbar": "\nERROR: path cannot be sorted (is it connected without gaps?).",
"vfl-m3-alert-eckwinkel": "No matching arc: corner angle %1 deg is not ~30/60/90.\nPlease adjust the angles.",
"vfl-m3-alert-objekte-fehlen": "%1 of the originally selected path objects could no longer be found in the drawing (likely deleted). The chain cannot be rebuilt correctly like this.",
"vfl-m3-seg-gerade": "\n\nSegment %1/%2: straight L=%3 mm hz=%4",
"vfl-m3-auto-vf": "\n (automatic VF - segment follows directly after a Vario curve)",
"vfl-m3-typ-gerade": "\n Type? 1 = GF (input angle) 2 = VF (bridge)",
"vfl-m3-prompt-gf-neigung": "\n GF slope in degrees [3]: ",
"vfl-m3-hinweis-gf-max": "\n Note: GF max. 3 deg - limited to 3.",
"vfl-m3-seg-bogen": "\n\nSegment %1/%2: corner/arc %3 deg %4",
"vfl-m3-typ-bogen": "\n Type? 1 = GF arc 2 = Vario curve",
"vfl-m3-variante-frage": "\n Vario curve - variant? 1 = Outer 2 = Inner",
"vfl-m3-vf-laeufe": "\n\n[M3a] VF runs found: %1",
"vfl-m3-vf-lauf-noetig": "\n[M3a] Exactly ONE VF run required (GF...VF...GF; Vario curves may lie within the run).",
"vfl-m3-vf-lauf-m3b": "\n[M3a] Several/no VF runs -> M3b later.",
"vfl-m3-vf-lauf-alert": "VF line path mode 2 cannot build this chain.\n\nFound: %1 VarioFoerderer runs.\nMode 2 currently builds only chains with EXACTLY ONE VF run (GF...VF...GF; Vario curves may lie within the run).\n\nPlease split the path so that only one contiguous VF section remains.",
"vfl-m3-mini-objekte-verworfen": "%1 object(s) too short were excluded from the selection (below %2 mm 2D length).\n\nSuch mini segments are usually ghost/artefact elements a window selection caught by accident - a real part (smallest: separator 300 mm) is never that short. They are ignored so they cannot introduce ghost parts into the chain.",
"vfl-m3-vf-lauf-ohne-gerade": "\n[M3a] VF run without a VF straight - aborting.",
"vfl-m3-anker-vorschau-header": "\n M3a ANCHOR PREVIEW (rough estimate; exact values during build)",
"vfl-m3-start-hoehe": "\n Start height Z: %1 mm",
"vfl-m3-ziel-hoehe": "\n Target height Z: %1 mm",
"vfl-m3-delta-h-gesamt": "\n delta-H total: %1 mm (positive = descent)",
"vfl-m3-vf-lauf-segmente": "\n VF run: segment %1..%2",
"vfl-m3-front-anker-vorschau": "\n Front anchor Z: %1 mm (forward from AS)",
"vfl-m3-junction-anker-vorschau": "\n Junction anchor Z: %1 mm (backward from ES)",
"vfl-m3-richtung-auf": "up (rising)",
"vfl-m3-richtung-ab": "down (falling)",
"vfl-m3-richtung-horizontal": "horizontal",
"vfl-m3-richtung-auf-kurz": "Up",
"vfl-m3-richtung-ab-kurz": "Down",
"vfl-m3-bruecke-dh": "\n --> Bridge: delta-H = %1 mm over span %2 mm",
"vfl-m3-bruecke-richtung": "\n Direction: VF-%1",
"vfl-m3-vf-angetrieben": "\n (VF is powered - can RISE and FALL; sign = up/down only)",
"vfl-m3-mittlere-neigung": "\n rough mean slope over span: ~%1 deg",
"vfl-m3-warnung-zu-steil": "\n WARNING: ~slope > 51 deg -> too steep for Vario (magnitude infeasible).",
"vfl-m3-vario-bereich-ok": "\n -> within Vario range (3..51 deg), rough orientation.",
"vfl-m3-anker-hinweis": "\n (anchors above = rough preview; exact values are MEASURED during build)",
"vfl-m3-phase-b1": "\n\n>>> Phase B1: building front run (AS + GF) ...",
"vfl-m3-alert-beginnt-bogen": "Chain starts with an arc - please begin with a straight.",
"vfl-m3-kurve-front-uebersprungen": "\n >>> [M3a] Vario curve in front run - skipped.",
"vfl-m3-standard-vario-header": "\n\n --- STANDARD VARIO (climbing segment) + flat zone ---",
"vfl-m3-front-anker-gemessen": "\n Front anchor (measured): %1 mm",
"vfl-m3-junction-exakt": "\n Junction (exact): %1 mm",
"vfl-m3-kletter-info": "\n Climb height %1 mm | climbers %2 | curves %3 | short VF %4",
"vfl-m3-kein-winkel": "\n NO matching Vario angle -> infeasible (front already built).",
"vfl-m3-kletter-zu-kurz-flach": "\n No climb angle fits (segment too short) -> run is built entirely flat, height is absorbed by GF1.",
"vfl-m3-kletter-flach-gf": "\n Flat zone: GF compensation (GF1) = %1 mm",
"vfl-m3-alert-vf-zu-lang": "VF run is %1 m long (limit %2 m) - please re-plan (e.g. insert an intermediate motor station).",
"vfl-m2-einheit-grenze": "This VF unit cannot be built like this.\n\nMeasured: %1 m length, %2 vario curves.\nAllowed per unit (between deflection and motor station): at most %3 m and %4 vario curves.\n\nPlease classify the bend in segment %5 as a GF bend - the first unit then ends before it with a motor station and the second one starts after it with a deflection station.",
"vfl-m2-einheit-grenze-unteilbar": "This VF unit cannot be built like this.\n\nMeasured: %1 m length, %2 vario curves.\nAllowed per unit (between deflection and motor station): at most %3 m and %4 vario curves.\n\nThere is no bend at which the run could be split - please shorten the path or plan a corner where the unit can end.",
"vfl-m3-warnung-fueller-eingang-zu-kurz": "\n WARNING: filler right after the reversing station is too short (%1 mm < minimum %2 mm) - only the minimum clearance was built, target position not reached exactly.",
"vfl-m3-warnung-fueller-ausgang-zu-kurz": "\n WARNING: filler right before the motor station is too short (%1 mm < minimum %2 mm) - only the minimum clearance was built, target position not reached exactly.",
"vfl-m3-lauf-anfang-header": "\n\nThe VF run is the start of the selected path. Start the run with:",
"vfl-m3-lauf-anfang-opt-offen": "\n 3 - No reversing station (open start, continue/merge later)",
"vfl-m3-lauf-anfang-opt-umlenk": "\n 2 - Reversing station directly (no GF1/separator)",
"vfl-m3-lauf-anfang-opt-umlenk-gf1": "\n 1 - Reversing station with GF1 + separator",
"vfl-m2-anfang-wert-unbekannt": "Cannot read run start: chain %1 contains the unknown value %2. Build aborted - guessing a start variant would rebuild the chain incorrectly.",
"vfl-m3-lauf-anfang-offen-hinweis": "\n Start deliberately left open - no reversing station/GF1/separator built; continue later or join with Vario_Kette_Merge.",
"vfl-m2-anfang-offen-gesperrt-zeile": "\n (not selectable - with an AS element the run needs a reversing station)",
"vfl-m2-anfang-offen-gesperrt": "With an AS element an open start is not possible - the run then needs a reversing station.",
"vfl-m3-lauf-abschluss-header": "\n\nThe VF run is the end of the selected path. End the run with:",
"vfl-m3-lauf-abschluss-opt-offen": "\n 1 - No motor station (open end, continue/merge later)",
"vfl-m3-lauf-abschluss-opt-motor": "\n 2 - Set motor station (no ES element)",
"vfl-m3-lauf-abschluss-opt-motor-es": "\n 3 - Motor station + ES element (chain end)",
"vfl-m3-lauf-abschluss-offen-hinweis": "\n Run deliberately left open - no motor station/separator/ES built; continue later or join with Vario_Kette_Merge.",
"vfl-m3-gf-verteilung": "\n\n GF distribution: 1 - all at inlet (GF1) 2 - 1/2 GF1 + 1/2 GF2",
"vfl-m3-gf-verteilung-alles-auslauf": "\n No GF1 room at the inlet chosen - full compensation moves to GF2 (outlet).",
"vfl-m3-vert-halb": "1/2 GF1 + 1/2 GF2",
"vfl-m3-vert-ganz": "all GF1",
"vfl-m3-vert-auslauf": "all GF2 (outlet)",
"vfl-m3-vario-ergebnis": "\n -> Vario %1 (%2), L_VF %3 mm, GF total %4 mm, distribution %5",
"vfl-m3-warnung-gf2-negativ": "\n WARNING: body climbs too little - GF2<0 (missing %1 mm). Angle too shallow; dZ not exact.",
"vfl-m3-gf2-ausgleich": "\n GF2 (measured compensation): L=%1 mm",
"vfl-m3-kurve-back-uebersprungen": "\n >>> [M3a] Vario curve in back run - skipped.",
"vfl-m3-nichts-gebaut": "\nNothing built - aborting.",
"vfl-m3-alt-journal": "\n Note: this chain predates the build AS / build ES questions - it is rebuilt in the old order.",
"vfl-m3-fertig-header": "\n>>> VF line path (mode 2) built! <<<",
"vfl-m3-ziel-soll": "\n Target (nominal): X=%1 Y=%2 Z=%3",
"vfl-m3-es-ist": "\n ES (actual): X=%1 Y=%2 Z=%3",
"vfl-m3-abweichung": "\n Deviation: dX=%1 dY=%2 dZ=%3 mm",
"vfl-m3-laengs-quer": "\n Along KS_AUS axis: %1 mm | across axis (should be ~0): %2 mm",
"vfl-m3-achse-hinweis": "\n (dZ=target height; across KS_AUS axis ~0 => end point lies on the axis)",
"vfl-m3-ziel-soll-es-korrigiert": "\n Target (ES-corrected): X=%1 Y=%2 Z=%3 (target + known ES lateral offset)",
"vfl-m3-abweichung-es-korrigiert": "\n Deviation (ES-corrected): 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-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 KS_AUS: X=%1 Y=%2 Z=%3",
"vfc-endpunkt-xyz-dxdz": "\n KS_AUS: X=%1 Y=%2 Z=%3 (dx=%4 dz=%5)",
"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-rand-budget": "\n Edge budget: inlet=%1 mm outlet=%2 mm (outlet queue section %3 mm)",
"vfe-rand-budget-fallback": "\n WARNING: edge budget unavailable (block or CS missing) - falling back to approximation, length may deviate.",
"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-fehler-rest-nicht-baubar-mit-vorschlag": "\n ERROR: not buildable at target height %1 mm (distance dL=%2 mm, height difference dH=%3 mm, %4) - too steep/too short for tail motor+GF2+separator+ES. An approximately buildable target height would be:%5",
"vfl-fehler-rest-nicht-baubar-ohne-vorschlag": "\n ERROR: not buildable at target height %1 mm (distance dL=%2 mm, height difference dH=%3 mm, %4) - no alternative target height was found for this distance either. Please draw a longer distance or plan flatter.",
"vfl-vorschlag-ab-auf": " down to %1 mm or up to %2 mm",
"vfl-vorschlag-nur-ab": " down to %1 mm (up is not buildable at this distance)",
"vfl-vorschlag-nur-auf": " up to %1 mm (down is not buildable at this distance)",
"vfl-alert-kettenende-p1": "1. Target ΔL=%1 mm, ΔH=%2 mm (%3): angled Vario (angle table) not buildable.",
"vfl-alert-kettenende-p2-beide": "\n\n2. Horizontal+GF not buildable - would need at least ΔL=%1 mm OR at least ΔH=%2 mm.",
"vfl-alert-kettenende-p2-nur-minh": "\n\n2. Horizontal+GF not buildable - would need at least ΔH=%1 mm of height change.",
"vfl-alert-kettenende-p2-nur-minl": "\n\n2. Horizontal+GF not buildable - would need at least ΔL=%1 mm of distance.",
"vfl-alert-vf-entscheidung-p1": "1. Target ΔL=%1 mm, ΔH=%2 mm (%3): angle table not buildable.",
"vfl-alert-vf-entscheidung-p2-beide": "\n\n2. At least needed: ΔL=%1 mm OR ΔH=%2 mm.",
"vfl-alert-vf-entscheidung-p2-nur-minh": "\n\n2. At least needed: ΔH=%1 mm of height change.",
"vfl-alert-vf-entscheidung-p2-nur-minl": "\n\n2. At least needed: ΔL=%1 mm of distance.",
"vfl-stufe1-start": "\n\n[Diagnosis stage 1 - VF angle search]",
"vfl-stufe2-diagnose": "\n\n[Diagnosis stage 2 - horizontal+GF] deltaL=%1 mm deltaH=%2 mm -> GF_total=%3 mm L_VF=%4 mm (%5)",
"vfl-stufe2-diagnose-details": "\n [Details] already-flat=%1 | aus-dx=%2 mm (entry, should be 0) | ein-dx=%3 mm ein-dz=%4 mm (ES element) | bogen-x1=%5 mm bogen-z1=%6 mm (entry bend 3->0 deg, only if not already-flat) | bogen-x2=%7 mm bogen-z2=%8 mm (exit bend 0->3 deg, always) | FESTE_HORIZONTAL=%9 mm (separator+motor station)",
"vfl-stufe2-fest-kettenende": "\n Motor station+separator+ES require: length=%1 mm, height drop=%2 mm (fixed, independent of angle)",
"vfl-stufe2-fest-eingang": "\n Reversing station+separator+motor station+ES require: length=%1 mm, height drop=%2 mm (fixed, independent of angle)",
"vfl-stufe2-minl": "\n [Minimum distance] Without a straight VF section (GF sized to the target height): at least %1 mm of distance needed (available: %2 mm)",
"vfl-stufe2-minl-unmoeglich": "\n [Minimum distance] Not solvable via distance: even without a GF bend the height already changes by %1 mm - the target only calls for %2 mm (not enough height difference for the fixed incline)",
"vfl-stufe2-minh": "\n [Fixed value without GF bend] Remainder as a straight VF section (height-neutral): this split ALWAYS results in exactly %1 mm of height change, regardless of length - but the target height calls for %2 mm, so this only fits on an exact match",
"vfl-stufe2-minh-unmoeglich": "\n [Fixed value without GF bend] Not solvable via target height: even without a straight VF section and without a GF bend, the fixed footprint is already %1 mm - the distance only offers %2 mm",
"vfl-stufe2-ungueltig": "\n Stage 2 (horizontal+GF) was invalid - stage 1 (VF angle search) was tried instead (see table above).",
"vfl-stufe3-start": "\n\n[Diagnosis stage 3 - angle + horizontal filler] Stage 1 and stage 2 failed, trying a combination of a steep S-bend and a horizontal remainder piece ...",
"vfl-frage-stufe3-position": "\n\nThe section needs an S-bend COMBINED with a straight horizontal piece. Where should the horizontal piece go?",
"vfl-opt-stufe3-vor": "\n 1 - Horizontal piece BEFORE the S-bend",
"vfl-opt-stufe3-nach": "\n 2 - Horizontal piece AFTER the S-bend",
"vfl-frage-gf2-minimum": "\n Calculated GF2=%1 mm is below the usual minimum length (%2 mm).\n Yes = build with the exact calculated %1 mm (hits the target point exactly).\n No = pad up to %2 mm (target point shifts further accordingly).",
"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-hinweis-horizontal-fussabdruck-geklemmt": "\n Note: the remaining length here would have been only %1 mm (minimum %2 mm) - clamped to the minimum; the chain point will therefore end up further along than clicked.",
"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-endpunkt-2": "\nHeight (Z) of the end point (down: %1 | up: %2) [%1]: ",
"vfl-prompt-hoehe-endpunkt-3": "\nHeight (Z) of the end point (down: %1 | up: %2 | picked: %3) [%3]: ",
"vfl-prompt-hoehe-kettenende": "\nHeight (Z) of the chain end (ES element) [%1]: ",
"vfl-prompt-hoehe-kettenende-2": "\nHeight (Z) of the chain end (ES element) (down: %1 | up: %2) [%1]: ",
"vfl-prompt-hoehe-kettenende-3": "\nHeight (Z) of the chain end (ES element) (down: %1 | up: %2 | picked: %3) [%3]: ",
"vfl-prompt-wahl-bis-n": "\nYour choice (1-%1) [1]: ",
"vfl-frage-auf-ab-richtung": "\n\nChain arrives flat - no target height available. Choose direction:",
"vfl-opt-richtung-auf": "\n 1 - Up",
"vfl-opt-richtung-ab": "\n 2 - Down",
"vfl-winkel-hoehen-header": "\n\nAvailable angles and the resulting end height - please choose:",
"vfl-winkel-hoehen-option": "\n %1 - %2 deg (end height: %3 mm)",
"vfl-winkel-hoehen-zeile": "\n %1 deg - end height: %2 mm",
"vfl-winkel-hoehen-zeile-ungueltig": "\n %1 deg - not buildable (bend does not fit into the chosen distance)",
"vfl-winkel-hoehen-zeile-tile": "end height: %1 mm",
"vfl-winkel-wahl-zeile-tile": "L_GF=%1 mm L_VF=%2 mm",
"vfl-winkel-zeile-tile-ungueltig": "not buildable (bend does not fit into the chosen distance)",
"vfl-prompt-richtung-waehlen": "\n\nChoose direction (click a point in the desired direction - the distance is ignored): ",
"vfl-winkel-hoehen-abweichung": "\n [Note] Target-vs-actual check: predicted end height %1 mm, actually reached %2 mm.",
"vfl-antwort-ja": "Yes",
"vfl-antwort-nein": "No",
"vfl-wizard-antwort-echo": "\n -> Dialog selection: %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-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-eckrad-edit": "Edit Eckrad",
"kreisel-prompt-eckrad-auswaehlen": "\nSelect Eckrad block: ",
"kreisel-emsg-kein-eckrad-block": "Not an Eckrad block! (block name ECKRAD_* expected)",
"kreisel-eckrad-ungueltige-zahl": "Height and rotation must be numbers.",
"kreisel-eckrad-edit-aktualisiert": "\nEckrad updated: Name=%1 Height=%2 Rotation=%3",
"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-pfeil-fehlt": "\n[KreiselInsert] WARNING: %1.dwg not found - carousel without direction arrow.",
"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-ladeschleife": "\n[LOADING LOOP] Cancelled.",
"omni-ladeschleife-dialog-ladefehler": "Loading loop dialog could not be loaded.",
"omni-ladeschleife-keine-gefunden": "No loading loops%1 found.",
"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-drehwinkel": "\nSpecify rotation angle: ",
"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-dlg-startpunkt-kopf": "Select start point of the system (X/Y):",
"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-fehler-keine-linie": "\n ERROR: No line or polyline selected!",
"vfc-foerderrichtung-ab": "\n Conveying direction: DOWN",
"vfc-foerderrichtung-auf": "Up",
"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-header": "\n\n>>> MODE: Select 3D line <<<",
"vfc-objekt-block-waehlen": "\n >> Select object (block): ",
"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!",
"vfc-block-erstellt-eingefuegt": "\n>>> Block '%1' created and inserted.",
"vfc-fehler-keine-entities": "\n>>> ERROR: No entities found for block!",
"vfc-banner-titel": "\n VARIOFOERDERER GENERATOR v26.0",
"vfc-alert-keine-typen": "No types registered!\nCheck vf_standard.lsp and vf_etage.lsp.",
"vfc-typ-vorgewaehlt": "\n>>> Type preselected: %1",
"vfc-anlagen-typ-header": "\n\nSelect system type:",
"vfc-typ-option": "\n %1 - %2",
"vfc-prompt-wahl-1-n": "\nYour choice (1-%1) [1]: ",
"vfc-typ-gewaehlt": "\n>>> Type: %1",
"vfc-naechste-vf-nummer": "\n>>> Next VF number: VF%1",
"vfc-alert-kein-winkel": "No suitable angle found!\n%1L=%2 mm, %1H=%3 mm, direction=%4",
"vfc-vorgang-abgebrochen": "\nProcess cancelled.",
"vfs-dlg-richtung-auf": "Up",
"vfs-dlg-richtung-ab": "Down",
"vfs-dlg-winkel-horizontal": "Horizontal (GF=%1 mm, VF=%2 mm)",
"vfs-dlg-winkel-option": "%1%2 (GF=%3 mm, VF=%4 mm)",
"vfs-dlg-verteilung-1": "Even (L_GF1 = L_GF2 = L_GF/2)",
"vfs-dlg-verteilung-2": "Front minimum, rear remainder",
"vfs-dlg-verteilung-3": "Rear minimum, front remainder",
"vfs-dlg-verteilung-4": "Enter custom values",
"vfs-edit-kein-vf": "Block %1 is not a VarioFoerderer conveyor.",
"vfs-edit-keine-xdata": "VarioFoerderer %1 was not created with this dialog (Etage/Linienzug/legacy) and cannot be edited here.",
"vfs-edit-neu-aufgebaut": "\nVarioFoerderer %1 rebuilt.",
"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-bogen-ab3-uebergang": "\n\nGF bogen Vario_Bogen_ab_3 (transition horizontal -> 3 degrees, GF-only)",
"vfl-gf-bogen-auf3-uebergang": "\n\nGF bogen Vario_Bogen_auf_3 (transition 3 degrees -> horizontal, GF-only)",
"vfl-gf-bogen-auf6-uebergang": "\n\nGF bogen Vario_Bogen_auf_6 (transition falling -> rising, 6 degrees, GF-only)",
"vfl-gf-bogen-ab6-uebergang": "\n\nGF bogen Vario_Bogen_ab_6 (transition rising -> falling, 6 degrees, GF-only)",
"vfl-gf-bogen-block-fehlt": "\n[GF bogen] Block '%1' not found - see data/ils.",
"vfl-gf-bogen-ks-fehlt": "\n[GF bogen] KS_EIN/KS_AUS in '%1' missing or unreadable.",
"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",
"dim-batch-fertig": "\nConversion to %1 complete: %2 GF, %3 VF rebuilt (%4 already in target dimension).",
"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-gefaelle-bearbeiten": "\nEdit Gefaellestrecke: %1",
"cmd-variofoerderer-bearbeiten": "\nEdit VarioFoerderer: %1",
"gf-edit-kein-gf": "Block %1 is not a Gefaellestrecke.",
"gf-edit-nur-einfach": "Only simple Gefaellestrecken (without arcs) can be edited via the dialog.\nTYP: %1",
"gf-edit-neu-aufgebaut": "\nGefaellestrecke %1 rebuilt.",
"gf-vf-modul-fehlt": "VarioFoerderer module not loaded!",
"gf-vf-gebaut": "\n-> Parallel VarioFoerderer built (2000 mm beside the Gefaellestrecke, opposite direction, rising).",
"cmd-omniflo-bearbeiten": "\nEdit Omniflo element: %1",
"cmd-attribute-bearbeiten": "\nEdit attributes: %1",
"ils-station-prompt-punkt": "\nInsertion point for %1 [ENTER=End]: ",
"ils-station-fehler-blockdatei": "\n>>> ERROR: block file '%1.dwg' not found (check data/ils).",
"ils-station-fertig": "\n>>> %1 x %2 inserted.",
"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.",
"plq-keine-konfiguration": "\n[DRAW_PLANQUADRATE] WARNING: no [Planquadrate] configuration found in cfg/export.cfg - aborting.",
"plq-ungueltige-schrittweite": "\n[DRAW_PLANQUADRATE] WARNING: x_step/y_step must be greater than 0 - aborting.",
"plq-fertig": "\n[DRAW_PLANQUADRATE] Grid drawn: %1 columns x %2 rows on layer '%3'.",
"plq-geloescht": "\n[DELETE_PLANQUADRATE] Planquadrat grid removed (%1 insertion(s)).",
"plq-nichts-zu-loeschen": "\n[DELETE_PLANQUADRATE] No Planquadrat grid found in the drawing.",
"exp-check-ids": "\n[%1] Checking and assigning IDs...",
"exp-hoehen-aktualisiert": "\nHeight attributes of %1 moved blocks reset from their Z coordinate.",
"exp-sep-proxy-fehler": "\n[EXPORT] WARNING: copying '%1' out of block '%2' failed (%3) - this element is missing from the export.",
"exp-sep-zuordnung": "\n[%1] packed separator copy/copies: ZUORDNUNG set from the wrapper block ID.",
"exp-sep-zuordnung-ohne-id": "\n[%1] packed separator copy/copies without a wrapper ID - ZUORDNUNG determined geometrically.",
"exp-sepliste-ids": "\n[EXPORT] %1 sepliste entry/entries tagged with the ID of the matching part.",
"exp-sepliste-ohne-proxy": "\n[EXPORT] WARNING: block '%1': %2 sepliste entry/entries without a matching copy - those entries stay without an ID in the export.",
"exp-asmark-blockdef": "\n[EXPORT] Block definition '%1' for the AS/ES markers created.",
"exp-asmark-blockdef-fehler": "\n[EXPORT] WARNING: block definition '%1' could not be created - no AS/ES markers are placed.",
"exp-asmark-bilanz": "\n[EXPORT] AS/ES markers: %1 new, %2 kept with their previous ID, %3 orphaned ones removed.",
"exp-unitmark-blockdef": "\n[EXPORT] Block definition '%1' for the unit proxies created.",
"exp-unitmark-blockdef-fehler": "\n[EXPORT] WARNING: block definition '%1' could not be created - no conveyor/gravity units are exported.",
"exp-unitmark-bilanz": "\n[EXPORT] Conveyor/gravity units: %1 proxy(s) created, %2 old ones removed.",
"exp-kette-luecke": "\n[EXPORT] WARNING: chain '%1' is broken (no K1 at the last K2) - %2 element(s) continued as a separate sub-chain, check the unit boundaries there.",
"exp-hilfskopien-behalten": "\n[EXPORT] csv_leave_proxies=1: %1 %2 remain in the drawing (switch off: (dbg-schalter-off \"csv_leave_proxies\"))",
"exp-gefroren-ausgelassen": "\n[EXPORT] %1 blocks on frozen layers not exported (can be switched off in CSV_EXPORT_KONFIG).",
"exp-art-separator": "separator copy(ies)",
"exp-art-element": "element copy(ies)",
"exp-art-einheit": "unit proxy(ies)",
"exp-art-ases": "AS/ES marker(s)",
"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-bbox-fail": "\n[Export] WARNING: %1 block(s) without bounding box (vla-getboundingbox failed). First error: %2",
"exp-calling-python": "\n[%1] Calling Python...",
"exp-export-started": "\n[%1] Export started: %2",
"exp-dxfm-lib-missing": "\n[%1] ERROR: Environment variable DXFM_LIB is not set - BricsCAD was probably not started via bin/start_briscad.bat. CSV/JSON were written, the Python call is skipped.",
"exp-python-not-found": "\n[%1] ERROR: Python script not found: %2",
"exp-python-exe": "\n[%1] Interpreter: %2",
"exp-export-done": "\n[%1] Export finished: %2",
"exp-python-call-failed": "\n[%1] ERROR: Could not start Python (WScript.Shell unavailable).",
"exp-python-error": "\n[%1] ERROR: Python exited with code %2. Log: %3",
"exp-python-store-hint": "\n NOTE: No real Python interpreter was found (on Windows 11 'python' points\n to the WindowsApps placeholder). Fix: run bin/install_py.bat (creates .venv)\n and restart BricsCAD via bin/start_briscad.bat, or set the full path to\n python.exe in cfg/export.cfg under [python] interpreter=.",
"exp-csv-missing": "\n[%1] ERROR: Python reported success but the CSV is missing: %2. Log: %3",
"exp-omni-no-inserts": "\n[OMNI_UPDATE] No INSERT blocks in the drawing.",
"exp-omni-updated": "\n[OMNI_UPDATE] %1 elements updated (HEIGHT, ROTATION).",
"sens-skip": "\n[%1] Separator/scanner assignment up to date (ZUORDNUNG set, sums match) - recomputation skipped.",
"sens-start": "\n[%1] Checking separator/scanner assignment (ANZAHL_SEPARATOR/ANZAHL_SCANNER)...",
"sens-no-inserts": "\n[%1] No blocks found in the drawing - sensor assignment skipped.",
"sens-bbox-fehler": "\n ! Bounding box failed for ILS block '%1'",
"sens-carrier-zeile": "\n %1 [%2]: ANZAHL_SCANNER=%3, ANZAHL_SEPARATOR=%4 (placed symbols only)",
"sens-carrier-fehler": "\n ERROR writing the count attributes on %1",
"sens-summary": "\n[%1] %2 Kreisel/Streckengruppen/Gefaellestrecken updated, %3 scanners total (%4 unassignable), %5 separators total (%6 unassignable).",
"sens-ergaenzt-header": "\n[%1] %2 scanners outside every Kreisel/track bounding box auto-assigned by distance:",
"sens-ergaenzt-zeile": "\n Scanner %1 -> %2 (%3mm)",
"sens-strittig-suffix": " CONTESTED: also close to %1 (%2mm)",
"sens-strittig-summary": "\n[%1] WARNING: %2 of the above assignments are contested (distance to two candidates nearly equal) - see column 'Warnungen' in the CSV export.",
"sens-korrektur-header": "\n[%1] %2 stored ZUORDNUNG(s) did not match the geometry and were corrected:",
"sens-korrektur-zeile": "\n %1 %2: ZUORDNUNG %3 -> %4 (geometry correction)",
"sens-unassigned-marked": "\n[%1] %2 sensor(s) without any Kreisel/track marked (layer '%3').",
"sens-zuordnung-fehlt": "\n[%1] WARNING: %2 assigned sensor(s) without a 'ZUORDNUNG' attribute - value not writable.",
"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_*) - choose side:",
"gf-seite-ein-header": "\n\nInput element (ES_Element_*) - choose side:",
"gf-seite-links": "\n 1 - Left",
"gf-seite-rechts": "\n 2 - Right",
"prompt-wahl-1-2": "\nYour choice (1/2) [1]: ",
"prompt-wahl-1-2-3": "\nYour choice (1/2/3) [1]: ",
"geruest-typ-header": "\n\nSelect scaffold option:",
"geruest-typ-opt": "\n %1 - %2",
"geruest-typ-prompt": "\nScaffold option (1-4) [%1]: ",
"kreisel-eckrad-geruest-frage": "Scaffold for single module?",
"gf-lade-block": "\n Loading block: %1 ...",
"gf-status-ok": " OK",
"gf-warnung-kette-unterbrochen": "\n WARNING: chain interrupted!",
"gf-status-nennlaenge": "\n Total nominal length (incl. arc dx): %1 mm",
"gf-status-feste-hoehenanteile": "\n Fixed height components (AS/ES dz + arc dz): %1 mm",
"gf-status-dz-detail": "\n aus-dz=%1 ein-dz=%2 arc-dz=%3",
"gf-status-resthoehe": "\n Effective remaining height for straights: %1 mm",
"gf-warnung-keine-geraden": "\n WARNING: no straight sections -> fallback 3 deg",
"gf-warnung-feste-anteile": "\n WARNING: fixed components > deltaH -> fallback 1 deg",
"gf-status-naeherungswinkel": "\n>>> Approximate angle: %1%2",
"gf-status-linie-staustrecke": "\n\n%1/%2: Buffer section L=%3 mm hz=%4%5 v=%6%7",
"gf-status-separator-vor-bogen": "\n\n%1S/%2: Separator 300mm (before arc) hz=%3%4 v=%5%6",
"gf-status-bogen-einfuegen": "\n\n%1/%2: %3 hz=%4%5",
"gf-status-linienzug-eingefuegt": "\n>>> Polyline slope section inserted! <<<",
"gf-modus3-header": "\n\n>>> MODE 3: Select polyline <<<",
"gf-modus3-hinweis1": "\nPlease select all lines (LINE) and arcs (ARC) of the path,",
"gf-modus3-hinweis2": "\nthen press ENTER:",
"gf-fehler-keine-objekte": "\nNo objects selected!",
"gf-status-objekte-ausgewaehlt": "\n %1 objects selected.",
"gf-prompt-startpunkt-kette": "\nSelect start point (3D) - KS_EIN output element / chain start: ",
"gf-fehler-kein-startpunkt": "\nNo start point!",
"gf-prompt-endpunkt-kette": "\nSelect end point (3D) - KS_AUS input element / chain end: ",
"gf-fehler-kein-endpunkt": "\nNo end point!",
"gf-status-deltah-3dpunkte": "\n %1H from 3D points: %2 mm",
"gf-status-sortiere-segmente": "\n Sorting segments ...",
"gf-alert-keine-kette": "No connected chain found!",
"gf-alert-lz-edit-kein-dialog": "Editing a chain group (path-built) requires the GUI - please enable the GUI (ssg-gui-an) and try again.",
"gf-status-segmente-gefunden": " %1 segments found.",
"gf-status-segment-analyse-header": "\n\n--- Segment analysis (lengths after trimming) ---",
"gf-status-segment-linie": "\n %1. Line L=%2 mm hz=%3%4",
"gf-status-segment-bogen": "\n %1. Arc %2%3 %4 hz-input=%5%6",
"gf-status-seg-erste-linie": "\n Seg %1 (1st line): -%2 mm (output element)",
"gf-status-linie-vor-bogen": "\n Each line before arc: -300 mm (arc separator)",
"gf-status-seg-letzte-linie": "\n Seg %1 (last line): -300 mm (input sep) -%2 mm (input element)",
"gf-status-eintrittsrichtung": "\n Entry direction: %1%2",
"gf-status-austrittsrichtung": "\n Exit direction: %1%2",
"gf-status-berechne-winkel": "\n\n Calculating slope angle from geometry ...",
"gf-prompt-winkel-verwenden": "\nUse calculated angle %1%2? (y/n) [y]: ",
"gf-prompt-gefaellewinkel": "\nSlope angle (degrees): ",
"gf-status-messe-absenkung": "\n Measuring actual AS/ES drop (iterative) ...",
"gf-warnung-korrektur-bereich": "\n WARNING: correction out of range, angle unchanged",
"gf-status-as-es-mm": "\n AS: %1 mm ES: %2 mm",
"gf-status-korrigierter-winkel": "\n>>> Corrected slope angle: %1%2 (after %3 iter.)",
"gf-status-zus-segmente": "\n>>> Segments: %1",
"gf-status-zus-deltah": "\n>>> %1H: %2 mm",
"gf-status-zus-deltal": "\n>>> %1L: %2 mm",
"gf-status-zus-winkel": "\n>>> Slope angle: %1%2",
"gf-status-zus-eintrittswinkel": "\n>>> Entry angle: %1%2",
"gf-status-zus-austrittswinkel": "\n>>> Exit angle: %1%2",
"gf-status-zus-aus-element": "\n>>> Output element: %1",
"gf-status-zus-ein-element": "\n>>> Input element: %1",
"gf-prompt-einfuegen": "\nInsert? (1=Yes / 2=No) [1]: ",
"gf-status-aus-element-detail": "\n\n>>> Output element: %1 travel dir=%2%3 KS_EIN-hz=%4%5 Z=%6",
"gf-status-separator-vor-ein": "\n>>> Separator before input element",
"gf-status-ein-element-detail": "\n>>> Input element: %1 target Z=%2",
"gf-status-z-hoehe-ks-aus": "\n Z height KS_AUS: %1 mm",
"gf-status-fertig": "\n>>> Done! <<<",
"gf-status-abgebrochen": "\nCancelled.",
"gf-alert-dialog-fehlt": "Dialog file not found:\n%1",
"gf-dlg-richtung-0": "0%1 (X+, East)",
"gf-dlg-richtung-90": "90%1 (Y+, North)",
"gf-dlg-richtung-180": "180%1 (X-, West)",
"gf-dlg-richtung-270": "270%1 (Y-, South)",
"gf-dlg-links": "Left",
"gf-dlg-rechts": "Right",
"gf-dlg-linienzug-vorlauf": "Path selected - angle will be calculated after confirmation.",
"gf-status-gf-block-erstellt": "\n>>> GF block created: %1 (%2)",
"gf-status-schritt1-aus": "\n\n1/4: %1 travel dir=%2%3 KS_EIN-hz=%4%5 v=%6%7",
"gf-status-schritt2-staustrecke": "\n\n2/4: Buffer section L=%1 mm hz=%2%3 v=%4%5",
"gf-status-schritt3-separator": "\n\n3/4: Separator 300mm hz=%1%2 v=%3%4",
"gf-status-schritt4-ein": "\n\n4/4: %1",
"gf-status-erfolgreich-eingefuegt": "\n>>> Slope section inserted successfully! <<<",
"gf-banner-titel": "\n SLOPE SECTION GENERATOR v2.0",
"gf-banner-richtung": "\n Direction: always DOWN",
"gf-alert-init-fehler": "Error initialising the library!\nPlease check DXFM_DATA.",
"gf-eingabemodus-header": "\n\nSelect input mode:",
"gf-eingabemodus-1": "\n 1 - Enter values manually (simple section)",
"gf-eingabemodus-2": "\n 2 - Select 3D line (simple section)",
"gf-eingabemodus-3": "\n 3 - Select polyline (LINE + ARC) with slope arc",
"gf-modus1-header": "\n\n>>> MODE 1: Manual value entry <<<",
"gf-prompt-startpunkt-aus": "\nSelect start point for output element: ",
"gf-prompt-deltal-abstand": "\n%1L - distance (mm): ",
"gf-modus2-header": "\n\n>>> MODE 2: Select 3D line <<<",
"gf-status-bks-welt": "\n UCS set to world coordinates.",
"gf-prompt-3dlinie-richtung": "\nPlease select 3D line for direction and length:",
"gf-alert-keine-linie": "No valid line selected!",
"gf-status-fahrtrichtung-linie": "\n Travel direction: %1%2 (from line)",
"gf-status-deltal-mm": "\n %1L = %2 mm",
"gf-prompt-gefaellewinkel-def3": "\n\nSlope angle (degrees) [3]: ",
"gf-status-winkel": "\n>>> Angle: %1%2",
"gf-status-fahrtrichtung": "\n>>> Travel direction: %1%2",
"gf-alert-staustrecke-ungueltig": "Calculated buffer section length invalid: %1 mm\nPlease choose larger deltaL or smaller angle.",
"gf-status-zus2-winkel": "\n>>> Angle: %1%2",
"gf-status-zus2-aus-seite": "\n>>> Output side: %1",
"gf-status-zus2-ein-seite": "\n>>> Input side: %1",
"gf-status-zus2-lstau": "\n>>> L_stau: %1 mm",
"ques-yn-default-yes": " Y/N <Y>: ",
"ques-yn-default-no": " Y/N <N>: ",
"tefl-fehler-dxfm-omniflo": "\n[TEF] ERROR: DXFM_OMNIFLO not set (run bin/setenv.bat).",
"tefl-fehler-dxf-nicht-gefunden": "\n[TEF] ERROR: Element DXF not found: %1",
"tefl-prompt-startpunkt": "\nSelect start point of the conveyor path: ",
"tefl-prompt-endpunkt": "\nSelect end point of the conveyor path: ",
"tefl-abgebrochen": "\n[TEF] Cancelled.",
"tefl-fehler-laenge-null": "\n[TEF] ERROR: Start and end point are too close together.",
"tefl-fertig": "\n[TEF] %1 element(s) inserted, path length=%2 mm.",
"vfl-kette-titel": "\n Vario_Kette_Merge - merge several Vario conveyor blocks (loose or already wrapped) into one combined block",
"vfl-kette-start-waehlen": "\n\nSelect the starting block of the chain (first element - AS element or VF_n): ",
"vfl-kette-kein-objekt": "\nNo object selected - cancelled.",
"vfl-kette-kein-vf-block": "\nSelected object ('%1') is not a known Vario chain block (AS/ES element, GF bend, Vario curve, deflection/motor station, vertical bend, buffer/separator or VF_n).",
"vfl-kette-start-nicht-gefunden": "\nERROR: Starting block not found in the chain collection (internal error).",
"vfl-kette-start-nicht-gefunden-diag": "\nERROR: Starting block not found in the chain collection (internal error).\n Diagnostic: %1 blocks collected in total, selected block name='%2', %3 of those with the same block name.",
"vfl-kette-start-ohne-ks-ein": "\nERROR: No KS_EIN found on the selected block - chain cannot be followed.",
"vfl-kette-nur-ein-baustein": "\nNo further connected VF_n block was found from the selected block onward - nothing to merge.",
"vfl-kette-gefunden": "\n\nChain detected: %1 block(s) will be merged:",
"vfl-kette-luecke-warnung": "\n\n WARNING: after '%1' a visually close but not properly connected VF_n ('%2') was found (KS distance %3 mm) - the chain was ended there; this and all further blocks are left untouched.",
"vfl-kette-fertig": "\n\n>>> Done: new combined block '%1' created from %2 block(s).",
"cmd-tro-bearbeiten": "\nEdit TRO marker: %1",
"cmd-connection-bearbeiten": "\nEdit connection: %1",
"con-keine-verbindung": "Block %1 is not a connection (expected CONNECTION_*).",
"con-kein-tro": "Block %1 is not a TRO marker - connections only run between TROs.",
"con-block-fehlt": "Block definition %1 is missing in this drawing.\nRun tro_annotate.py with --flow first.",
"con-quelle-waehlen": "\nSelect source TRO: ",
"con-ziel-waehlen": "\nSelect target TRO: ",
"con-gleicher-block": "Source and target are the same block.",
"con-gleicher-punkt": "Source and target are at the same position.",
"con-dialog-fehlt": "Dialog file not found:\n%1\nCheck DXFM_DCL (setenv.bat).",
"con-block": "Block: %1 (UID %2)",
"con-richtung": "Direction: %1 ----> %2",
"con-hinweis": "The UID is permanent, the TRO id may change.",
"con-id-leer": "Source and target UID must not be empty - nothing changed.",
"con-gleiche-id": "Source and target must not share the same UID.",
"con-eingefuegt": "\nConnection %1 ----> %2 inserted (UID %3).",
"con-gespeichert": "\nConnection saved: %1 ----> %2",
"tro-edit-kein-tro": "Block %1 is not a TRO marker (expected TRO_*).",
"tro-edit-kein-id-attribut": "Block %1 has no ID attribute - please re-annotate (tro_annotate.py).",
"tro-edit-dialog-fehlt": "Dialog file not found:\n%1\nCheck DXFM_DCL (setenv.bat).",
"tro-edit-modul-fehlt": "%1 not loaded - editing attributes with EATTEDIT instead.",
"tro-edit-block": "Block: %1",
"tro-edit-fb": "Function block: %1 UID: %2",
"tro-edit-hinweis": "Symbol and FB follow on the next tro_annotate.py run.",
"tro-edit-id-leer": "The TRO id must not be empty - nothing changed.",
"tro-edit-gespeichert": "\nTRO saved: ID = %1, TYPE = %2",
"tro-edit-typ-geaendert": "\nType changed - re-run tro_annotate.py so symbol and FB match.",
"tro-insert-kein-typ": "No TRO types available (tro_types.lsp missing) - run lib/tro_annotate.py --emit-lisp.",
"tro-insert-hinweis": "The block shape must already exist in the drawing (from an earlier tro_annotate.py run).",
"tro-insert-kein-block": "No symbol for this type in the drawing (%1) - run tro_annotate.py with this type first.",
"tro-insert-prompt-punkt": "\nInsertion point: ",
"tro-insert-eingefuegt": "\nTRO inserted: ID = %1, TYPE = %2",
"cmd-jam-bearbeiten": "\nEdit jam area: %1",
"jam-edit-kein-jam": "Block %1 is not a jam area (expected JAM_*).",
"jam-edit-dialog-fehlt": "Dialog file not found:\n%1\nCheck DXFM_DCL (setenv.bat).",
"jam-edit-bereich": "Jam area %1 in front of %2 (entry %3)",
"jam-edit-auto": "Derived: %1",
"jam-edit-hinweis": "Into the SCL: tro_annotate --read-jams, then scl_skeleton.",
"jam-edit-foerderer-ungueltig": "The conveyor must have four digits (e.g. 0054) - nothing changed.",
"jam-edit-nummer-ungueltig": "The running number must be a whole number from 1 - nothing changed.",
"jam-edit-gespeichert": "\nJam area saved: %1 (%2)",
"jam-edit-doppelt": "\nWARNING: %1 already exists in this drawing (%2).",
"vfl-abbruch-gesichert": "\n>>> Chain cancelled: %1 object(s) saved as a block (editable/resumable via double-click).",
"vfl-zurueck-glied-verworfen": "\n>>> Back: discarding the last chain element - please answer it again.",
"vfl-abbruch-nichts-gebaut": "\n>>> Cancelled - no geometry was created yet.",
"vfl-abbruch-wickeln-fehler": "\n>>> ERROR saving the partial geometry as a block: %1",
"vfl-edit-dialog-fehlt": "Dialog not found: %1",
"vfl-edit-abgebrochen": "\nEdit cancelled - no change.",
"vfl-dlg-kopf-sektionen": "Sections: %1",
"vfl-dlg-modus-kopf": "Chain with %1 segment(s) - what would you like to do?",
"vfl-dlg-modus-rueck": "Roll back to a section and rebuild from there",
"vfl-dlg-modus-glied": "Only change the properties of a single segment",
"vfl-glied-waehlen-kopf": "Which segment would you like to edit?",
"vfl-glied-geaendert": "\n>>> Segment %1 changed - rebuilding chain...",
"vfl-glied-nicht-editierbar": "This segment (%1) cannot currently be edited individually.\nOnly GF arc segments support single-segment editing. For all others please use the 'Roll back to a section' mode.",
"vfc-warnung-untermodule-nicht-geladen": "\n[vf_core] WARNING: DXFM_LISP not set - submodules could not be loaded!",
"vfc-linienzug-modus-header": "\n\nSelect line-path mode:",
"vfc-linienzug-modus-1": "\n 1 - Manual entry (click points)",
"vfc-linienzug-modus-2": "\n 2 - from 3D line WITH target height (heights are calculated)",
"vfc-linienzug-modus-3": "\n 3 - from 3D line WITHOUT target height (forward build with given angles)",
"prompt-wahl-1-3": "\nYour choice (1/2/3) [1]: ",
"vfl-qc-uform-nicht-implementiert": "\nERROR: 'QC line with GF and U-shape' is not yet implemented - please choose option 4 or a different mode.",
"vfc-typ-standard-beschreibung": "Standard VarioFoerderer (AS/ES 90 degrees, offset horizontally)",
"vfc-typ-etage-beschreibung": "Etage VarioFoerderer (AS/ES 30 degrees, directly stacked)",
"vfc-typ-linienzug-beschreibung": "Route group (mixed GF/VF chain; mode 1 manual / mode 2 from 3D line with target height / mode 3 from 3D line without target height)",
"vfs-schritt6-horizontal": "\n\n6/11: Horizontal intermediate section (0 deg, L=%1 mm)",
"vfs-schritt6-steigung": "\n\n6/11: Incline section (%1 deg, L=%2 mm)",
"vfs-schritt6-gefaelle": "\n\n6/11: Slope section (%1 deg, L=%2 mm)",
"vfs-schritt6-skip": "\n\n6/11: (skipped)",
"vfs-schritt7-bogen1": "\n\n7/11: %1 (3 deg inclined)",
"vfs-schritt7-bogen-winkel": "\n\n7/11: %1 (%2 deg inclined)",
"vfs-ausgang-motorstation": "\n\n[VF-Ausgang] Motor station (500 mm, 3 deg inclined)",
"vfs-ausgang-gf2": "\n[VF-Ausgang] Slope section GF2 (3 deg, L=%1 mm)",
"vfs-ausgang-gf2-skip": "\n[VF-Ausgang] GF2 (none / skipped)",
"vfs-ausgang-separator": "\n[VF-Ausgang] Separator (300 mm, 3 deg inclined)",
"vfs-schritt11-es": "\n\n11/11: %1 (hz=%2%3)",
"vfs-eingefuegt": "\n>>> Standard VarioFoerderer inserted!",
"vfs-nachruesten-titel": "\n=== Retrofit existing VF blocks (SSG_VF_EDIT marker) ===",
"vfs-nachruesten-keine-bloecke": "\nNo VF_n blocks selected - cancelled.",
"vfs-nachruesten-bereits-markiert": "\n %1: already marked (%2) - skipped",
"vfs-nachruesten-erkannt": "\n %1: recognised as type '%2'",
"vfs-nachruesten-prompt-hz": "\n Build direction hz in degrees [%1]: ",
"vfs-nachruesten-markiert": " -> marked (hz=%1)",
"vfs-nachruesten-fertig": "\n=== Done: %1 marked, %2 skipped ===",
"vfe-step9-bogen": "\n\n9/15: %1 (%2 deg inclined)",
"vfe-step10": "\n\n10/15: Motor station (500mm, 3 deg inclined)",
"vfe-step11-gf2": "\n\n11/15: Slope section (3 deg, L=%1 mm)",
"vfe-step11-skip": "\n\n11/15: L_GF2 (skipped)",
"vfe-step12": "\n\n12/15: %1 (end, chained cur-hz=%2)",
"vfe-step13": "\n\n13/15: Buffer section (variable L=%1, cur-hz=%2)",
"vfe-step14": "\n\n14/15: Separator (300mm, cur-hz=%1)",
"vfe-step15": "\n\n15/15: %1 (end, chained cur-hz=%2)",
"vfe-eingefuegt": "\n>>> Etage VarioFoerderer inserted! <<<",
"vfl-vwnb-titel": "\n VF LINE PATH - Mode 3: from 3D line WITHOUT target height (forward build)",
"vfl-vwnb-aus-seite-menu": "\n\nOUT element - select side:\n 1 - Left\n 2 - Right",
"vfl-vwnb-alert-eckwinkel": "No matching arc: corner angle %1 deg is not ~30/60/90.\nPlease adjust the angles of the lines.",
"vfl-vwnb-alert-keine-gerade": "Path contains no straight - a chain must begin with a straight.",
"vfl-vwnb-typ-gerade": "\n Type? 1 = GF (<=3 deg) 2 = VF-down 3 = VF-up 4 = VF-horizontal",
"vfl-vwnb-prompt-vario-winkel": "\n Vario angle (3..51 deg) [3]: ",
"vfl-vwnb-kurve-nur-vf": "\n >>> Vario curve only allowed within a VF run - skipped.",
"vfl-vwnb-eingefuegt": "\n>>> VF line path (mode 3, GF+VF) inserted! <<<",
"vfl-vwnb-soll-ende": "\n Target end (path): X=%1 Y=%2",
"vfl-vwnb-ist-ende": "\n Actual end (ES): X=%1 Y=%2 Z=%3",
"vfl-vwnb-abweichung-xy": "\n Deviation XY: dX=%1 dY=%2 mm",
"vfl-m3-as-nein": "\n 2 - No (chain starts directly at the start point)",
"vfl-kette-diag-startbaustein": "\n [Diagnose] KS_AUS start block (%1): X=%2 Y=%3 Z=%4",
"vfl-kette-diag-naechster-kandidat": "\n [Diagnose] Next candidate: %1 distance=%2 mm (tolerance tight=%3 mm, wide=%4 mm)",
"vfl-kette-diag-kein-anderer": "\n [Diagnose] No other block with KS_EIN found (%1 blocks captured in total).",
"vfl-kette-diag-verdaechtig": "\n [Diagnose] SUSPICIOUS: '%1' -> '%2' distance=%3 mm (within tolerance, but not ~0)",
"gr-fehler-datenpfad": "\nScaffold: data directory unknown - DXFM_DATA or DXFMAKRO not set (run bin/setenv.bat).",
"gr-fehler-json-fehlt": "\nScaffold: data file not found: %1",
"gr-fehler-json-lesbar": "\nScaffold: data file not readable: %1",
"gr-fehler-baugruppe": "\nScaffold: assembly '%1' is not in the data file.",
"gr-fehler-keine-varianten": "\nScaffold: assembly '%1' has no geometry variants.",
"gr-bereich-waehlen": "\nScaffold: please choose an area from the menu (GERUEST_SAEULEN, GERUEST_ROHRABHAENGER, GERUEST_WANDBEFESTIGUNG).",
"gr-fehler-dummy": "\nScaffold: dummy assembly not found: %1",
"gr-fehler-dummy-variante": "\nScaffold: dummy of the variant not found: %1 - using dummy of the assembly (%2)",
"gr-fehler-dcl": "Dialog geruest.dcl could not be loaded.",
"gr-dlg-kopf": "Configure %1",
"gr-alert-laenge": "Invalid length: '%1' mm. Allowed: %2 to %3 mm.",
"gr-prompt-einfuegepunkt": "\nSelect insertion point: ",
"gr-abgebrochen": "\nCancelled.",
"gr-fertig": "\nScaffold assembly '%1' inserted (block %2).",
"gr-alert-menge": "Invalid quantity. Enter a whole number of 1 or more; an empty field uses the default.",
"gr-position-befestigung": "mounting",
"gr-position-sonstiges": "other",
"gr-konfig-keine": "<none>",
"gr-konfig-name": "\nConfiguration name: ",
"gr-konfig-name-vorgabe": "\nConfiguration name <%1>: ",
"gr-konfig-geaendert": "%1 (modified)",
"gr-konfig-status-geaendert": "Modified compared to '%1' - Save (Enter at the name prompt) overwrites it.",
"gr-konfig-status-bibliothek": "Modified compared to '%1' (library, read-only) - enter a new name to save.",
"gr-winkel-grad": "%1%2",
"gr-konfig-gespeichert": "\nConfiguration '%1' saved.",
"gr-konfig-geloescht": "\nConfiguration '%1' deleted.",
"gr-konfig-loeschen-frage": "\nReally delete configuration '%1'? [Ja/Nein] <Nein>: ",
"gr-konfig-nichts-gewaehlt": "\nNo configuration selected.",
"gr-konfig-bibliothek-fest": "\nLibrary configurations cannot be deleted - only your own (marked with *).",
"gr-konfig-teil-unbekannt": "\nScaffold: add-on part '%1' from configuration '%2' is unknown for this assembly - skipped.",
"gr-konfig-variante-unbekannt": "\nScaffold: variant '%1' from configuration '%2' is unknown for this assembly - selection unchanged.",
"gr-konfig-variante-gesperrt": "\nConfiguration '%2': variant '%1' is disabled - selection left unchanged.",
"gr-fehler-schreiben": "\nScaffold: could not write file: %1",
"gr-fehler-keine-baugruppen": "\nScaffold: the data file contains no assemblies.",
"gr-tr-fehler-dcl": "Dialog %1 could not be loaded.",
"gr-tr-hinweis": "The length is defined in the drawing after OK.",
"gr-tr-alert-abzug": "Invalid length deduction. Allowed is a number from 0 (mm); an empty field counts as 0.",
"gr-tr-prompt-start": "\nSelect start point (%1) <exit>: ",
"gr-tr-prompt-ende": "\nSelect end point or enter length (mm): ",
"gr-tr-prompt-richtung": "\nSpecify direction <0>: ",
"gr-tr-eingabe-ungueltig": "\nInput '%1' is neither a point nor a length.",
"gr-tr-laenge-null": "\nDistance %1 mm is not longer than the deductions (%2 mm) - nothing inserted (%3).",
"gr-tr-laenge-bereich": "\n%4: length %1 mm outside the allowed range %2 to %3 mm - nothing inserted.",
"gr-tr-fertig": "\n%3 %1 mm inserted (block %2).",
"gr-tr-ende": "\n%1x %2 inserted.",
"gr-tr-bez-abzug-anfang": "Deduction start %1 mm",
"gr-tr-bez-abzug-ende": "Deduction end %1 mm",
"gr-tr-beschr-stil-fehlt": "\nText style %1 missing in drawing - labelling with current style %2.",
"gr-tr-beschr-ausrichtung": "\nUnknown justification %1 for beam label - using BC.",
"gr-tr-beschr-ergebnis": "\n%5: %1 labelled (%2 without known variant), %3 not labellable, %4 orphaned label(s) removed.",
"gr-tr-beschr-keine": "\nNo blocks of type %1 in the drawing.",
"gr-tr-strebe-rand": "Beam %1 mm: the edge distance of the cross braces is %2 mm, outside the allowed range %3 to %4 mm (brace spacing %5 mm, %6 braces). The beam is inserted anyway.",
"in-yesno-keys": "Yes No",
"in-keys-bereich": "All Selection",
"in-keys-modus": "Part Whole",
"bt-prompt-muster": "\nBlock name or pattern (e.g. GR_*): ",
"bt-kein-block": "\nThe selected object is not a block reference.",
"bt-prompt-waehlen-count": "\nSelect block [Name/pattern] <all blocks>: ",
"bt-count-keine": "\nNo references of %1 found.",
"bt-count-keine-alle": "\nNo block references in the current layout.",
"bt-count-ergebnis": "\n%1 reference(s) of %2.",
"bt-count-zeile": "\n %1: %2",
"bt-count-summe": "\nTotal: %1 reference(s) in %2 block(s).",
"bt-prompt-waehlen-delete": "\nSelect block to delete [Name/pattern]: ",
"bt-delete-kein-muster": "\nNo block selected - nothing deleted.",
"bt-delete-alle-gesperrt": "\nAll %1 reference(s) are on locked layers - nothing deleted.",
"bt-delete-frage": "Delete %1 reference(s) of %2?",
"bt-delete-titel": "Delete blocks",
"bt-delete-ergebnis": "\n%1 reference(s) deleted.",
"bt-delete-gesperrt": "\n%1 reference(s) on locked layers were kept.",
"bt-abgebrochen": "\nCancelled - nothing changed.",
"bt-attr-bereich": "\nScope",
"bt-attr-muster": "\nBlock name pattern",
"bt-attr-auswahl": "\nSelect blocks: ",
"bt-attr-keine-bloecke": "\nNo matching block references found.",
"bt-attr-tag": "\nAttribute tag (pattern)",
"bt-attr-suche": "\nFind",
"bt-attr-ersatz": "\nReplace with",
"bt-attr-modus": "\nReplace as",
"bt-attr-nichts": "\nNo attribute value contains the search text.",
"bt-attr-frage": "Change %1 attribute value(s) in %2 block(s)?",
"bt-attr-titel": "Replace attributes",
"bt-attr-ergebnis": "\n%1 attribute value(s) changed.",
"tt-bereich": "\nScope",
"tt-auswahl": "\nSelect objects: ",
"tt-keine-objekte": "\nNo matching objects found.",
"tt-suche": "\nFind",
"tt-ersatz": "\nReplace with",
"tt-modus": "\nReplace as",
"tt-nichts": "\nNo text or attribute value contains the search text.",
"tt-frage": "Change %1 text(s) and %2 attribute value(s)?",
"tt-ersetzen-titel": "Replace text",
"tt-ergebnis": "\n%1 text(s) and %2 attribute value(s) changed.",
"tt-abgebrochen": "\nCancelled - nothing changed.",
"tt-parallel-titel": "Label parallel to line",
"tt-hoehe": "\nText height",
"tt-abstand": "\nDistance to line",
"tt-parallel-waehlen": "\nSelect line, polyline or arc (Enter = finish): ",
"tt-parallel-keine-kurve": "\nCannot determine the angle on the selected object.",
"tt-text": "\nText",
"tt-parallel-fehler": "\nText could not be created.",
"tt-hoehe-titel": "Change text height",
"tt-geaendert": "\n%1 text(s) changed.",
"tt-stil": "\nText style",
"tt-stil-fehlt": "\nText style %1 does not exist in the drawing.",
"tt-stil-titel": "Change text style",
"dinformate-dialog-fehlt": "DIN formats dialog not found: %1",
"dinformate-datei-fehlt": "DIN formats: file not found: %1",
"dinformate-prompt-rahmen": "\nBorder insertion point (lower left corner): ",
"dinformate-prompt-kopf": "\nHeader insertion point (lower right corner): ",
"dinformate-eingefuegt": "\nDIN format inserted: %1",
"dinformate-sprache-de": "German",
"dinformate-sprache-en": "English",
"dinformate-sprache-fr": "French",
"dinformate-sprache-it": "Italian",
"sl-pos-layer": "\nTarget layer",
"sl-pos-faktor": "\nScale factor",
"sl-pos-umrand": "\nPosition flag shape",
"sl-stkl-einfuegepunkt": "\nSelect upper left corner of the bill of materials",
"sl-stkl-kopf-pos": "POS",
"sl-stkl-kopf-menge": "QTY",
"sl-stkl-kopf-laenge": "LENGTH",
"sl-stkl-kopf-artikel": "PART NO",
"sl-stkl-kopf-bezeichnung": "DESCRIPTION",
"sl-erk-titel": "Flags + bill of materials from drawing",
"sl-erk-auswahl": "\nSelect elements <Enter = all in layout>: ",
"sl-erk-keine": "\nNo ILS/Omniflo/scaffold elements found.",
"sl-erk-ergebnis": "\n%1 element(s) recognised, %2 bill of materials line(s) written.",
"sl-erk-kreisel": "ILS roundabout/corner wheel",
"sl-erk-strecke": "ILS conveyor section (VarioFoerderer/gravity conveyor)",
"sl-erk-geruest": "Pipe scaffold",
"sl-erk-fahrstrecke": "Omniflo track",
"sl-erk-ap60": "Omniflo straight AP60",
"sl-erk-ap110": "Omniflo straight AP110",
"sl-erk-apg110": "Omniflo straight APG110",
"kreisel-bp-start": "Kreisel switch points",
"kreisel-bp-summe": "\n=== Kreisel switch points: %1 contact(s), %2 collision(s) (tolerance %3 mm) ===",
"kreisel-bp-zeile": "\n Switch %1: %2 <-> %3 [%4] at X=%5 Y=%6 Z=%7",
"kreisel-bp-kollision": "\n COLLISION %1: %2 <-> %3 [%4] at X=%5 Y=%6 Z=%7",
"kreisel-bp-marker": "\n%1 markers drawn (layer %2).",
"exp-kreisel-weichen": "\n[%1] Kreisel switch points: %2 contact(s), %3 collision(s) -> %4",
"exp-kreisel-kollision": "\n[%1] WARNING: %2 Kreisel collision(s) - command KREISEL_WEICHEN shows them.",
"kf-fehler-daten-fehlt": "\nERROR: chain conveyor data not found: %1",
"kf-fehler-daten-leer": "\nERROR: chain conveyor data could not be read.",
"kf-fehler-block-datei": "\nERROR: block file for %1 not found (expected in data/omniflo/<dimension>/).",
"kf-fehler-ks-fehlt": "At least one component is missing KS_EIN or KS_AUS - the chain cannot be linked. Command KF_KS_PRUEFEN shows which block is affected.",
"kf-fehler-hoehe-zu-klein": "The installation height is too small: the deflection and drive stations already contribute more height than requested. Please choose a greater height.",
"kf-fehler-laenge-unter-min": "The intermediate section would be shorter than permitted. Please choose a greater installation height.",
"kf-fehler-laenge-ueber-max": "The intermediate section would be longer than permitted. Please choose a smaller installation height.",
"kf-fehler-winkel-null": "The measured installation angle of the intermediate section is horizontal - no height can be gained. Please check the KS positions of the blocks (KF_KS_PRUEFEN).",
"kf-fehler-dcl": "Dialog file kettenfoerderer.dcl not found.",
"kf-prompt-messpunkt-1": "\nSelect first measuring point (lower reference): ",
"kf-prompt-messpunkt-2": "\nSelect second measuring point (upper reference): ",
"kf-messung-ergebnis": "\n>>> Measured: height difference dZ = %1 mm (for reference dY = %2 mm).",
"kf-konsole-hoehe-hinweis": "\n(enter 0 to measure the height from two points)",
"kf-2d-gebaut": "\n>>> Plan view %1 inserted: slope length %2 mm, inclination %3 deg.",
"kf-2d-laenge-null": "\nPlan view skipped: the chain has no measurable plan length.",
"kf-2d-ks-fehlt": "\nPlan view skipped: %1 has no measurable KS_EIN/KS_AUS.",
"kf-prompt-startpunkt": "\nSelect insertion point (KS_EIN of the plan view; the side view is built above it): ",
"kf-prompt-drehung": "\nRotation angle of the chain: ",
"kf-abgebrochen": "\nCancelled.",
"kf-fertig": "\n>>> %1 created: installation height %2 mm, intermediate section %3 mm.",
"kf-konsole-variante-header": "\n\nSelect inclined steel conveyor type:",
"kf-konsole-option": "\n %1 - %2",
"kf-konsole-variante-prompt": "\nInclined steel conveyor type",
"kf-konsole-hoehe-prompt": "\nH - installation height of inclined conveyor [mm]",
"kf-konsole-verbindung-header": "\n\nSelect connecting elements:",
"kf-konsole-verbindung-prompt": "\nConnecting elements",
"kf-konsole-farbe-header": "\n\nSelect conveyor colour:",
"kf-konsole-farbe-prompt": "\nColour",
"kf-konsole-antriebsmotor-header": "\n\nSelect conveyor drive motor:",
"kf-konsole-antriebsmotor-prompt": "\nConveyor drive motor",
"kf-variante-label": "%1 %2",
"kf-variante-label-standard": "%1 %2 (default)",
"kf-konsole-movimot-header": "\n\nDrive with Movimot?",
"kf-konsole-movimot-prompt": "\nDrive with Movimot",
"kf-konsole-steuerung-header": "\n\nWith standard control system?",
"kf-konsole-steuerung-prompt": "\nWith standard control system",
"kf-pruef-kopf": "\n\n=== KF_KS_PRUEFEN: KS positions of the chain conveyor blocks ===",
"kf-pruef-variante": "\n\n--- Variant: %1 ---",
"kf-pruef-block": "\n %1: KS_EIN (%2, %3) direction %4 | KS_AUS (%5, %6) direction %7",
"kf-pruef-block-fehlt": "\n %1: block file not found.",
"kf-pruef-ks-fehlt": "\n %1: KS incomplete - KS_EIN: %2, KS_AUS: %3",
"kf-pruef-ks-fehlt-kurz": "\n[KF] KS_EIN/KS_AUS not readable on component: %1 (command KF_KS_PRUEFEN shows details)",
"kf-pruef-fehler": "\n Geometry could not be determined: %1",
"kf-pruef-geo": "\n Installation angles (deg): deflection %1, intermediate %2, drive %3\n Height contribution (mm): deflection %4, drive %5\n Intermediate section native (mm): dx %6, dy %7",
"kf-pruef-ja": "present",
"kf-pruef-nein": "MISSING",
"kf-edit-waehlen": "\nSelect chain conveyor (KF_n) to edit: ",
"kf-edit-kein-kf": "The selected block is not a chain conveyor (KF_n).",
"kf-edit-fertig": "\n>>> %1 rebuilt as %2.",
"cmd-kettenfoerderer-bearbeiten": "\n>>> Editing chain conveyor %1 ..."
}
}