Akkumulierten grünen Arbeitsstand landen (Basis für Weiterarbeit)
Bündelt den über mehrere Sessions gewachsenen, uncommitteten Stand in
einem Basis-Commit, damit Folge-Features isoliert darauf aufsetzen.
Verifikation: tsc --noEmit sauber, vitest 600/600 grün.
Enthalten (Details in PENDENZEN.md ✅-Liste / HANDOVER.md):
- truck-Integration: Profil-Extrusion + Verjüngung + Boolean-CSG (csgrs),
Crate src-tauri/trucksolid, Werkzeug `extrude`, ExtrudedSolid-Modell.
- kernel2d-Port nach Rust/WASM (Phasen 1–5, Diff-Harness).
- render3d 3D-Live-Schnitt = 2D-Schnitt: geschichteter Bodenaufbau,
Prioritäts-Verschneidung (section_boolean.rs), einstellbare
Schichttrennlinien, per-Hatch-Strichstärke, relativeToWall-Orientierung.
- Interop-Export IFC4/STL/OBJ (Loch-Ausschnitt wallMeshCut), Schnellexport.
- Projektdatei .obp + OS-Lock (lock.rs, LockConflictDialog).
- Layout-Blätter (Modell/Editor/Panel/PDF), Ausschnitte, Override-Engine,
Tragwerk-Stützen (Column), BIM-Tree-Panel.
- Bauteil-Typsystem (Tür/Fenster/Treppe-Typen), Betontreppe mit schräger
Laufplatte, Text-/Textbox-Werkzeug, Mess-Werkzeug, 2D/3D-Griffe für
Öffnungen/Treppen, Snap-Symbol-Restyle.
This commit is contained in:
+365
-7
@@ -15,16 +15,28 @@ export const de = {
|
||||
"topbar.perspektive": "Perspektive",
|
||||
|
||||
"view3d.group": "Ansicht 3D",
|
||||
"view3d.front": "Front",
|
||||
"view3d.front": "Vorne",
|
||||
"view3d.front.hint": "Frontalansicht von vorne",
|
||||
"view3d.back": "Hinten",
|
||||
"view3d.back.hint": "Rückansicht von hinten",
|
||||
"view3d.top": "Oben",
|
||||
"view3d.top.hint": "Draufsicht (senkrecht von oben)",
|
||||
"view3d.side": "Seite",
|
||||
"view3d.side.hint": "Seitenansicht (90° zur Front)",
|
||||
"view3d.side": "Rechts",
|
||||
"view3d.side.hint": "Rechte Seitenansicht (90° zur Front)",
|
||||
"view3d.left": "Links",
|
||||
"view3d.left.hint": "Linke Seitenansicht (90° zur Front, gegenüber Rechts)",
|
||||
"view3d.perspective": "Perspektive",
|
||||
"view3d.perspective.hint": "Freie Perspektive (3/4-Blick)",
|
||||
"view3d.iso": "Isometrie",
|
||||
"view3d.iso.hint": "Isometrische Ansicht (gleichwinklig von vorne-oben-rechts)",
|
||||
"view3d.isoFrontLeft": "Vorne-Links",
|
||||
"view3d.isoFrontLeft.hint": "Isometrische Ansicht (gleichwinklig von vorne-oben-links)",
|
||||
"view3d.isoBackRight": "Hinten-Rechts",
|
||||
"view3d.isoBackRight.hint": "Isometrische Ansicht (gleichwinklig von hinten-oben-rechts)",
|
||||
"view3d.isoBackLeft": "Hinten-Links",
|
||||
"view3d.isoBackLeft.hint": "Isometrische Ansicht (gleichwinklig von hinten-oben-links)",
|
||||
"view3d.iso.menu": "Weitere Iso-Ansichten",
|
||||
"view3d.iso.menu.hint": "Einen der vier oberen Iso-Oktanten wählen",
|
||||
"view3d.camera": "Kamera",
|
||||
"view3d.camera.hint": "Kamera-Einstellungen (Sichtwinkel)",
|
||||
"view3d.fov": "Sichtwinkel",
|
||||
@@ -86,12 +98,12 @@ export const de = {
|
||||
"topbar.resources.hint": "Ressourcen-Fenster ein-/ausblenden",
|
||||
|
||||
// ── Layout-Menü (Topbar) ─────────────────────────────────────────────────
|
||||
"layout.title": "Layout",
|
||||
"layout.placeholder": "Layout …",
|
||||
"layout.saveCurrent": "+ Aktuelles speichern …",
|
||||
"layout.title": "Arbeitsumgebung",
|
||||
"layout.placeholder": "Arbeitsumgebung …",
|
||||
"layout.saveCurrent": "+ Aktuelle speichern …",
|
||||
"layout.loadGroup": "Laden",
|
||||
"layout.deleteGroup": "Löschen",
|
||||
"layout.savePrompt": "Layout speichern als:",
|
||||
"layout.savePrompt": "Arbeitsumgebung speichern als:",
|
||||
|
||||
// ── Sichtbarkeits-Kombinationen (Topbar) ─────────────────────────────────
|
||||
"combo.layers": "Ebenen-Komb.",
|
||||
@@ -120,6 +132,10 @@ export const de = {
|
||||
"tool.circle.hint": "Kreis: Mittelpunkt setzen, dann Radius",
|
||||
"tool.arc": "Bogen",
|
||||
"tool.arc.hint": "Bogen: Mittelpunkt, Startpunkt, dann Endpunkt (CCW)",
|
||||
"tool.text": "Text",
|
||||
"tool.text.hint": "Text: Ankerpunkt setzen, dann Text eintippen",
|
||||
"tool.textbox": "Textspalte",
|
||||
"tool.textbox.hint": "Textspalte: Anker, dann Spaltenbreite ziehen, dann Text eintippen",
|
||||
// Ribbon-Oberleiste (Tabs + Gruppen)
|
||||
"ribbon.tab.2d": "2D",
|
||||
"ribbon.tab.3d": "3D",
|
||||
@@ -234,6 +250,7 @@ export const de = {
|
||||
"attr.fill": "Füllung",
|
||||
"attr.fillColor": "Füllfarbe",
|
||||
"attr.clearFill": "Füllfarbe entfernen",
|
||||
"attr.pickColor": "Farbe wählen",
|
||||
"attr.foreground": "Vordergrund",
|
||||
"attr.background": "Hintergrund",
|
||||
"attr.bySystem": "Nach System",
|
||||
@@ -266,12 +283,29 @@ export const de = {
|
||||
"objinfo.kind.opening": "Öffnung",
|
||||
"objinfo.kind.stair": "Treppe",
|
||||
"objinfo.kind.room": "Raum",
|
||||
"objinfo.kind.extrudedSolid": "Extrusion",
|
||||
"objinfo.kind.column": "Stütze",
|
||||
// ── Stützen-Attribute (Object-Info-Panel) ───────────────────────────────
|
||||
"objinfo.column.section": "Stütze",
|
||||
"objinfo.column.profile": "Profil",
|
||||
"objinfo.column.profile.rect": "Rechteck",
|
||||
"objinfo.column.profile.round": "Rund",
|
||||
"objinfo.column.width": "Breite",
|
||||
"objinfo.column.depth": "Tiefe",
|
||||
"objinfo.column.radius": "Radius",
|
||||
"objinfo.column.height": "Höhe",
|
||||
"objinfo.column.rotation": "Drehung (°)",
|
||||
"objinfo.column.floor": "Geschoss",
|
||||
// ── Wand-Attribute (Object-Info-Panel) ──────────────────────────────────
|
||||
"objinfo.wall.section": "Wand",
|
||||
"objinfo.wall.refLine": "Referenzlinie",
|
||||
"objinfo.wall.refLine.left": "Außen (links)",
|
||||
"objinfo.wall.refLine.center": "Mitte",
|
||||
"objinfo.wall.refLine.right": "Innen (rechts)",
|
||||
"objinfo.wall.sliceTermination": "An Decke enden",
|
||||
"objinfo.wall.sliceTermination.both": "Aus",
|
||||
"objinfo.wall.sliceTermination.below": "Unten",
|
||||
"objinfo.wall.sliceTermination.above": "Oben",
|
||||
"objinfo.wall.buildup": "Aufbau",
|
||||
"objinfo.wall.single": "Solid",
|
||||
"objinfo.wall.multi": "Mehrschichtig",
|
||||
@@ -284,6 +318,11 @@ export const de = {
|
||||
"objinfo.wall.top": "Oberkante (OK)",
|
||||
"objinfo.wall.anchorFloor": "Gebunden",
|
||||
"objinfo.wall.anchorCustom": "Eigene",
|
||||
"objinfo.anchor.refFloor": "Referenzgeschoss",
|
||||
"objinfo.anchor.customHeight": "Eigene Höhe",
|
||||
"objinfo.wall.length": "Länge",
|
||||
"objinfo.wall.volumeGross": "Brutto",
|
||||
"objinfo.volume": "Volumen",
|
||||
"objinfo.wall.height": "Höhe",
|
||||
// ── Decken-Attribute (Object-Info-Panel) ────────────────────────────────
|
||||
"objinfo.ceiling.section": "Decke",
|
||||
@@ -299,6 +338,9 @@ export const de = {
|
||||
"objinfo.ceiling.anchorCustom": "Eigene",
|
||||
// ── Öffnungs-Attribute (Object-Info-Panel) ──────────────────────────────
|
||||
"objinfo.opening.section": "Öffnung",
|
||||
"objinfo.opening.type": "Typ",
|
||||
"objinfo.stair.type": "Typ",
|
||||
"objinfo.type.none": "(kein Typ)",
|
||||
"objinfo.opening.kind": "Art",
|
||||
"objinfo.opening.kind.window": "Fenster",
|
||||
"objinfo.opening.kind.door": "Tür",
|
||||
@@ -359,6 +401,15 @@ export const de = {
|
||||
"objinfo.room.perimeter": "Umfang",
|
||||
"objinfo.room.refFloor": "Referenzgeschoss",
|
||||
"objinfo.room.editStamp": "Stempel bearbeiten …",
|
||||
// ── Extrusions-Attribute (truck-Integration, Object-Info-Panel) ─────────
|
||||
"objinfo.extrudedSolid.section": "Extrusion",
|
||||
"objinfo.extrudedSolid.height": "Höhe",
|
||||
"objinfo.extrudedSolid.taper": "Verjüngung",
|
||||
"objinfo.extrudedSolid.area": "Grundfläche",
|
||||
"objinfo.extrudedSolid.floor": "Geschoss",
|
||||
"objinfo.rotate": "Drehen",
|
||||
"objinfo.drawing.length": "Länge",
|
||||
"objinfo.drawing.radius": "Radius",
|
||||
"objinfo.wall.floorAboveNone": "Kein oberes Geschoss",
|
||||
"levels.addFloor": "+ Geschoss",
|
||||
"levels.addSection": "+ Schnitt",
|
||||
@@ -489,6 +540,9 @@ export const de = {
|
||||
"default.ceilingTypeSingle": "Decke {thickness} m",
|
||||
"default.wallTypeName": "Neuer Wandtyp",
|
||||
"default.ceilingTypeName": "Neuer Deckentyp",
|
||||
"default.doorTypeName": "Neuer Türtyp",
|
||||
"default.windowTypeName": "Neuer Fenstertyp",
|
||||
"default.stairTypeName": "Neuer Treppentyp",
|
||||
|
||||
// ── Warnungen (Lösch-Schutz) ─────────────────────────────────────────────
|
||||
"alert.layerInUse": "Ebene „{code} {name}\" wird von Bauteilen verwendet und kann nicht gelöscht werden.",
|
||||
@@ -497,6 +551,9 @@ export const de = {
|
||||
"alert.lineStyleInUse": "Linienstil „{name}\" wird von einer Schraffur verwendet und kann nicht gelöscht werden.",
|
||||
"alert.wallTypeInUse": "Wandtyp „{name}\" wird von einer Wand verwendet und kann nicht gelöscht werden.",
|
||||
"alert.ceilingTypeInUse": "Deckentyp „{name}\" wird von einer Decke verwendet und kann nicht gelöscht werden.",
|
||||
"alert.doorTypeInUse": "Türtyp „{name}\" wird von einer Tür verwendet und kann nicht gelöscht werden.",
|
||||
"alert.windowTypeInUse": "Fenstertyp „{name}\" wird von einem Fenster verwendet und kann nicht gelöscht werden.",
|
||||
"alert.stairTypeInUse": "Treppentyp „{name}\" wird von einer Treppe verwendet und kann nicht gelöscht werden.",
|
||||
|
||||
// ── Ressourcen-Manager ───────────────────────────────────────────────────
|
||||
"resources.title": "Ressourcen",
|
||||
@@ -507,7 +564,38 @@ export const de = {
|
||||
"resources.tab.lines": "Linien",
|
||||
"resources.tab.wallStyles": "Wandstile",
|
||||
"resources.tab.ceilingStyles": "Deckenstile",
|
||||
"resources.tab.doorStyles": "Türtypen",
|
||||
"resources.tab.windowStyles": "Fenstertypen",
|
||||
"resources.tab.stairStyles": "Treppentypen",
|
||||
"resources.tab.materials": "Materialien",
|
||||
"resources.tab.overrides": "Overrides",
|
||||
|
||||
// Grafische Overrides (Regel-Engine).
|
||||
"resources.overrides.hint":
|
||||
"Regeln übersteuern Farbe/Strichstärke/Linienstil beim Rendern (Elementdaten bleiben unverändert). Reihenfolge = Priorität: pro Feld gewinnt die oberste aktive Regel.",
|
||||
"resources.overrides.empty": "Noch keine Override-Regeln.",
|
||||
"resources.overrides.placeholder": "Regel",
|
||||
"resources.overrides.defaultName": "Neue Regel",
|
||||
"resources.overrides.delete": "Regel löschen",
|
||||
"resources.overrides.moveUp": "Regel nach oben (höhere Priorität)",
|
||||
"resources.overrides.moveDown": "Regel nach unten (tiefere Priorität)",
|
||||
"resources.overrides.enabled": "Regel aktiv",
|
||||
"resources.overrides.condition": "Bedingung",
|
||||
"resources.overrides.condType": "Kriterium",
|
||||
"resources.overrides.condType.layer": "Ebene (Name/Code)",
|
||||
"resources.overrides.condType.object": "Objektname",
|
||||
"resources.overrides.operator": "Operator",
|
||||
"resources.overrides.op.equals": "ist gleich",
|
||||
"resources.overrides.op.contains": "enthält",
|
||||
"resources.overrides.op.startsWith": "beginnt mit",
|
||||
"resources.overrides.op.notEquals": "ist ungleich",
|
||||
"resources.overrides.value": "Wert",
|
||||
"resources.overrides.value.placeholder": "z. B. Wände oder 20",
|
||||
"resources.overrides.actions": "Aktionen",
|
||||
"resources.overrides.action.color": "Farbe",
|
||||
"resources.overrides.action.lineweight": "Strichstärke (mm)",
|
||||
"resources.overrides.action.linetype": "Linienstil",
|
||||
"resources.overrides.linetype.none": "— (unverändert)",
|
||||
|
||||
"resources.wallStyles.hint":
|
||||
"Je Wandtyp die Schichtfugen (zwischen benachbarten Schichten) als wählbaren Linienstil. Ohne Zuweisung: Haarlinie 0.02 mm.",
|
||||
@@ -517,6 +605,75 @@ export const de = {
|
||||
"resources.ceilingStyles.empty": "Noch keine Deckentypen.",
|
||||
"resources.wallStyles.placeholder": "Wandtyp",
|
||||
"resources.ceilingStyles.placeholder": "Deckentyp",
|
||||
|
||||
// Bauteil-Typen (Tür/Fenster/Treppe) — Formular-Bibliotheken.
|
||||
"resources.doorTypes.hint":
|
||||
"Wiederverwendbare Türtypen mit Bauart, Blattausführung und Standardmaßen für neu platzierte Türen.",
|
||||
"resources.doorTypes.empty": "Noch keine Türtypen.",
|
||||
"resources.doorTypes.placeholder": "Türtyp",
|
||||
"resources.windowTypes.hint":
|
||||
"Wiederverwendbare Fenstertypen mit Öffnungsart, Verglasung und Standardmaßen für neu platzierte Fenster.",
|
||||
"resources.windowTypes.empty": "Noch keine Fenstertypen.",
|
||||
"resources.windowTypes.placeholder": "Fenstertyp",
|
||||
"resources.stairTypes.hint":
|
||||
"Wiederverwendbare Treppentypen mit Tragart, Stufenausbildung und Geländer für neu platzierte Treppen.",
|
||||
"resources.stairTypes.empty": "Noch keine Treppentypen.",
|
||||
"resources.stairTypes.placeholder": "Treppentyp",
|
||||
"resources.delete.doorType": "Türtyp „{name}\" löschen",
|
||||
"resources.delete.windowType": "Fenstertyp „{name}\" löschen",
|
||||
"resources.delete.stairType": "Treppentyp „{name}\" löschen",
|
||||
|
||||
"resources.field.doorKind": "Bauart",
|
||||
"resources.field.leafCount": "Flügelzahl",
|
||||
"resources.field.leafStyle": "Blattausführung",
|
||||
"resources.field.glazingRatio": "Glasanteil",
|
||||
"resources.field.frameThickness": "Zargenstärke (m)",
|
||||
"resources.field.frameDepth": "Zargentiefe (m)",
|
||||
"resources.field.defaultWidth": "Lichtbreite (m)",
|
||||
"resources.field.defaultHeight": "Lichthöhe (m)",
|
||||
"resources.field.threshold": "Bodenschwelle",
|
||||
"resources.field.windowKind": "Öffnungsart",
|
||||
"resources.field.wingCount": "Flügelzahl",
|
||||
"resources.field.glazing": "Verglasung",
|
||||
"resources.field.defaultSillHeight": "Brüstungshöhe (m)",
|
||||
"resources.field.sillBoard": "Fensterbank",
|
||||
"resources.field.structure": "Tragart",
|
||||
"resources.field.closedRisers": "Setzstufen geschlossen",
|
||||
"resources.field.treadThickness": "Trittstufendicke (m)",
|
||||
"resources.field.nosing": "Trittkanten-Überstand (m)",
|
||||
"resources.field.railing": "Geländer",
|
||||
"resources.field.stairWidth": "Laufbreite (m)",
|
||||
|
||||
"resources.doorKind.dreh": "Drehflügel",
|
||||
"resources.doorKind.schiebe": "Schiebe",
|
||||
"resources.doorKind.wandoeffnung": "Wandöffnung",
|
||||
"resources.leafCount.1": "1-flügelig",
|
||||
"resources.leafCount.2": "2-flügelig",
|
||||
"resources.leafStyle.glatt": "Glatt",
|
||||
"resources.leafStyle.kassette": "Kassette",
|
||||
"resources.leafStyle.glas": "Glas",
|
||||
"resources.windowKind.dreh": "Dreh",
|
||||
"resources.windowKind.kipp": "Kipp",
|
||||
"resources.windowKind.drehkipp": "Dreh-Kipp",
|
||||
"resources.windowKind.fest": "Fest",
|
||||
"resources.windowKind.schiebe": "Schiebe",
|
||||
"resources.glazing.einfach": "Einfach",
|
||||
"resources.glazing.zweifach": "Zweifach",
|
||||
"resources.glazing.dreifach": "Dreifach",
|
||||
"resources.sillBoard.keine": "Keine",
|
||||
"resources.sillBoard.innen": "Innen",
|
||||
"resources.sillBoard.aussen": "Außen",
|
||||
"resources.sillBoard.beide": "Beide",
|
||||
"resources.structure.massiv": "Massiv",
|
||||
"resources.structure.beton": "Betontreppe (Laufplatte)",
|
||||
"resources.structure.wange": "Wange",
|
||||
"resources.structure.aufgesattelt": "Aufgesattelt",
|
||||
"resources.structure.spindel": "Spindel",
|
||||
"resources.railing.keine": "Keine",
|
||||
"resources.railing.links": "Links",
|
||||
"resources.railing.rechts": "Rechts",
|
||||
"resources.railing.beide": "Beide",
|
||||
|
||||
"resources.col.layer": "Schicht",
|
||||
"resources.col.component": "Bauteil",
|
||||
"resources.col.thickness": "Dicke (mm)",
|
||||
@@ -698,6 +855,9 @@ export const de = {
|
||||
"cmd.opening.dir": "Richtung",
|
||||
"cmd.opening.sillField": "Brüstung",
|
||||
"cmd.opening.swingField": "Winkel",
|
||||
"cmd.column.label": "Stütze",
|
||||
"cmd.column.place": "Stütze setzen:",
|
||||
"cmd.column.profile": "Profil",
|
||||
"cmd.stair.label": "Treppe",
|
||||
"cmd.stair.start": "Startpunkt der Treppe:",
|
||||
"cmd.stair.run": "Laufrichtung / Ende ( Grundform · Auf/Ab ):",
|
||||
@@ -732,11 +892,23 @@ export const de = {
|
||||
"cmd.arc.center": "Mittelpunkt:",
|
||||
"cmd.arc.start": "Startpunkt (Radius + Startwinkel):",
|
||||
"cmd.arc.end": "Endpunkt (Endwinkel):",
|
||||
"cmd.text.label": "Text",
|
||||
"cmd.text.point": "Ankerpunkt:",
|
||||
"cmd.text.enter": "Text eingeben:",
|
||||
"cmd.textbox.label": "Textspalte",
|
||||
"cmd.textbox.point": "Ankerpunkt:",
|
||||
"cmd.textbox.width": "Spaltenbreite (zweiter Punkt):",
|
||||
"cmd.textbox.enter": "Text eingeben:",
|
||||
// Editierbefehle (Tier 1): Move/Copy/Offset operieren auf der Auswahl.
|
||||
"cmd.move.label": "Verschieben",
|
||||
"cmd.move.base": "Basispunkt:",
|
||||
"cmd.move.target": "Zielpunkt:",
|
||||
"cmd.move.empty": "Nichts gewählt (erst Objekte wählen).",
|
||||
"cmd.rotate.label": "Drehen",
|
||||
"cmd.measure.label": "Messen",
|
||||
"cmd.measure.start": "Messen von:",
|
||||
"cmd.measure.to": "bis (Distanz · Winkel):",
|
||||
"transform.needSelection": "Erst Objekte wählen, dann drehen.",
|
||||
"cmd.mirror.label": "Spiegeln",
|
||||
"cmd.mirror.first": "Erster Punkt der Spiegelachse:",
|
||||
"cmd.mirror.second": "Zweiter Punkt der Spiegelachse:",
|
||||
@@ -749,6 +921,10 @@ export const de = {
|
||||
"cmd.offset.label": "Versatz",
|
||||
"cmd.offset.pick": "Kurve wählen:",
|
||||
"cmd.offset.side": "Seite oder Distanz:",
|
||||
"cmd.extrude.label": "Extrudieren",
|
||||
"cmd.extrude.pick": "Geschlossenes Profil wählen:",
|
||||
"cmd.extrude.height": "Höhe:",
|
||||
"cmd.extrude.taper": "Verjüngung (0–1, 1=Spitze):",
|
||||
// Trim (Quick-Trim): auf den wegzuschneidenden Abschnitt klicken; wiederholend.
|
||||
"cmd.trim.label": "Stutzen",
|
||||
"cmd.trim.pick": "Abschnitt zum Wegschneiden anklicken (Esc beendet):",
|
||||
@@ -863,11 +1039,43 @@ export const de = {
|
||||
"file.exportPdf": "Als PDF exportieren…",
|
||||
"file.exportDxf": "Als DXF exportieren…",
|
||||
"file.exportSchedule": "Bauteilliste (CSV)…",
|
||||
"file.exportIfc": "IFC exportieren",
|
||||
"file.exportObj": "OBJ exportieren (3D-Mesh)",
|
||||
"file.exportStl": "STL exportieren (3D-Mesh)",
|
||||
"file.export": "Exportieren",
|
||||
"file.openFailed": "Projekt-Datei konnte nicht gelesen werden.",
|
||||
|
||||
// ── Lock-Konflikt (Projektdatei bereits in anderer Instanz geöffnet) ────
|
||||
"lock.title": "Projekt bereits geöffnet",
|
||||
"lock.message":
|
||||
"Diese Projektdatei ist bereits in einer anderen Instanz geöffnet.",
|
||||
"lock.messageInfo": "Geöffnet auf {host} (Prozess {pid}).",
|
||||
"lock.openReadOnly": "Schreibgeschützt öffnen",
|
||||
"lock.forceOpen": "Trotzdem erzwingen",
|
||||
"lock.forceOpenWarning":
|
||||
"Achtung: Öffnet zum Schreiben, obwohl eine andere Instanz die Datei hält — Änderungen können sich gegenseitig überschreiben.",
|
||||
"exportSave.title": "Exportieren",
|
||||
"exportSave.format": "Format",
|
||||
"exportSave.filename": "Dateiname",
|
||||
"exportSave.locationNote": "Wird in den Standard-Download-Ordner gespeichert.",
|
||||
"exportSave.fmt.csv": "Bauteilliste (CSV)",
|
||||
"exportSave.fmt.ifc": "IFC (BIM)",
|
||||
"exportSave.fmt.obj": "OBJ (3D-Mesh)",
|
||||
"exportSave.fmt.stl": "STL (3D-Mesh)",
|
||||
"about.title": "Über dossier",
|
||||
"about.version": "Version",
|
||||
"about.desc": "Open-Source-CAAD (Computer Aided Architecture Design) — schöne, normgerechte Pläne aus einem semantischen Gebäudemodell. Als Desktop-App (vollständige Fassung) und im Browser zugänglich.",
|
||||
"about.copyright": "© 2026 Karim Gabriele Varano",
|
||||
"about.license": "Lizenz: AGPL-3.0-or-later",
|
||||
"about.suite": "Teil der openbureau-Suite",
|
||||
"about.licenses": "Open-Source-Lizenzen (Drittkomponenten)",
|
||||
"about.close": "Schließen",
|
||||
|
||||
// ── Einstellungs-Fenster ──────────────────────────────────────────────────
|
||||
"topbar.settings": "Einstellungen",
|
||||
"topbar.settings.hint": "Einstellungen öffnen (Darstellungsfarben, Projekt)",
|
||||
"settings.title": "Einstellungen",
|
||||
"settings.section.workspace": "Arbeitsumgebung",
|
||||
"settings.section.display": "Darstellung",
|
||||
"settings.marqueeColor": "Auswahlrahmen-Farbe",
|
||||
"settings.marqueeColor.hint":
|
||||
@@ -907,6 +1115,9 @@ export const de = {
|
||||
"ctxImport.src.osmRoads": "OSM-Strassen",
|
||||
"ctxImport.src.osmWater": "OSM-Wasser",
|
||||
"ctxImport.src.osmGreen": "OSM-Grün",
|
||||
"ctxImport.src.osmParking": "OSM-Parkplätze",
|
||||
"ctxImport.src.osmRailway": "OSM-Bahn",
|
||||
"ctxImport.src.osmForest": "OSM-Wald",
|
||||
"ctxImport.cancel": "Abbrechen",
|
||||
"ctxImport.confirm": "Importieren",
|
||||
"ctxImport.importing": "Importiere…",
|
||||
@@ -950,6 +1161,9 @@ export const de = {
|
||||
"roomStamp.showFloorArea": "Bodenfläche anzeigen",
|
||||
"roomStamp.floorAreaPrefix": "Präfix Bodenfläche",
|
||||
"roomStamp.showUsage": "Nutzung anzeigen",
|
||||
"roomStamp.roundingStep": "Flächen-Rundung",
|
||||
"roomStamp.roundingStepDefault": "Standard (2 Nachkommastellen)",
|
||||
"roomStamp.occupancy": "Personenzahl",
|
||||
"text.selectedHint": "Formatierung wirkt auf den ausgewählten Text",
|
||||
|
||||
// ── Rich-Text-Editor ────────────────────────────────────────────────────────
|
||||
@@ -958,6 +1172,8 @@ export const de = {
|
||||
"rt.underline": "Unterstrichen",
|
||||
"rt.strike": "Durchgestrichen",
|
||||
"rt.strikethrough": "Durchgestrichen",
|
||||
"rt.super": "Hochgestellt",
|
||||
"rt.sub": "Tiefgestellt",
|
||||
"rt.fontSize": "Schriftgrösse",
|
||||
"rt.color": "Farbe",
|
||||
"rt.preset": "Vorlage",
|
||||
@@ -969,6 +1185,148 @@ export const de = {
|
||||
"WebGPU konnte nicht initialisiert werden. In der Statusleiste auf WebGL2 umschalten, um die 3D-Ansicht weiter zu nutzen.",
|
||||
"viewport3d.grid.show": "Bodenraster einblenden",
|
||||
"viewport3d.grid.hide": "Bodenraster ausblenden",
|
||||
"viewport3d.section.label": "Schnittebene",
|
||||
"viewport3d.section.show": "Schnittebene ein",
|
||||
"viewport3d.section.hide": "Schnittebene aus",
|
||||
"viewport3d.grip.vertex": "Wandende ziehen",
|
||||
"viewport3d.grip.height": "Höhe ziehen",
|
||||
"viewport3d.grip.move": "Verschieben",
|
||||
|
||||
// ── Element-Baum (Elemente-Panel, ROADMAP §11) ──────────────────────────────
|
||||
"elements.title": "Elemente",
|
||||
"elements.search": "Elemente suchen…",
|
||||
"elements.empty": "Keine Bauteile im Projekt.",
|
||||
"elements.noMatch": "Keine Treffer.",
|
||||
"elements.kind.wall": "Wand",
|
||||
"elements.kind.ceiling": "Decke",
|
||||
"elements.kind.window": "Fenster",
|
||||
"elements.kind.opening": "Öffnung",
|
||||
"elements.kind.stair": "Treppe",
|
||||
"elements.kind.extrusion": "Extrusion",
|
||||
|
||||
// Ausschnitte / View-Snapshots (DOSSIER A2).
|
||||
"viewsnap.title": "Ausschnitte",
|
||||
"viewsnap.saveCurrent": "+ Aktuellen Ausschnitt speichern …",
|
||||
"viewsnap.savePrompt": "Ausschnitt speichern als:",
|
||||
"viewsnap.renamePrompt": "Ausschnitt umbenennen:",
|
||||
"viewsnap.rename": "Umbenennen",
|
||||
"viewsnap.delete": "Löschen",
|
||||
"viewsnap.deleteConfirm": "Ausschnitt „{name}\" löschen?",
|
||||
"viewsnap.empty": "Noch keine Ausschnitte. Ansicht einrichten und speichern.",
|
||||
"viewsnap.applyHint": "Ausschnitt „{name}\" wiederherstellen",
|
||||
"viewsnap.add.folder": "Ordner erstellen",
|
||||
"viewsnap.add.snapshot": "Ausschnitt speichern",
|
||||
"viewsnap.folder.defaultName": "Neuer Ordner",
|
||||
"viewsnap.folder.rename": "Ordner umbenennen",
|
||||
"viewsnap.folder.delete": "Ordner löschen",
|
||||
"viewsnap.folder.empty": "Leerer Ordner",
|
||||
"viewsnap.tree.empty": "Noch keine Ordner oder Ausschnitte. Über „+\" anlegen.",
|
||||
"viewsnap.footer.scale": "Massstab",
|
||||
"viewsnap.footer.layerCombo": "Ebenenkombi",
|
||||
"viewsnap.footer.drawingCombo": "Zeichnungskombi",
|
||||
"viewsnap.footer.overrides": "Overrides",
|
||||
"viewsnap.footer.none": "—",
|
||||
|
||||
// Layout-Blätter mit Masterlayout (DOSSIER A3).
|
||||
"layouts.panelTitle": "Mappe",
|
||||
"layouts.title": "Layouts",
|
||||
"layouts.new": "Anlegen",
|
||||
"layouts.namePlaceholder": "Blattname …",
|
||||
"layouts.defaultName": "Neues Layout",
|
||||
"layouts.rename": "Umbenennen",
|
||||
"layouts.delete": "Löschen",
|
||||
"layouts.renamePrompt": "Umbenennen:",
|
||||
"layouts.deleteConfirm": "„{name}\" löschen?",
|
||||
"layouts.openHint": "Layout „{name}\" öffnen",
|
||||
"layouts.empty": "Noch keine Layouts. Blatt anlegen und öffnen.",
|
||||
"layouts.paper": "Papierformat",
|
||||
"layouts.orientation": "Ausrichtung",
|
||||
"layouts.portrait": "Hoch",
|
||||
"layouts.landscape": "Quer",
|
||||
"layouts.border": "Rahmen",
|
||||
"layouts.masters": "Masterlayouts",
|
||||
"layouts.newMaster": "+ Master",
|
||||
"layouts.newMasterPrompt": "Neues Masterlayout:",
|
||||
"layouts.defaultMasterName": "Master",
|
||||
"layouts.noMasters": "Noch keine Masterlayouts.",
|
||||
"layouts.master": "Master",
|
||||
"layouts.noMaster": "Kein Master",
|
||||
"layouts.tb.projectName": "Projekt",
|
||||
"layouts.tb.sheetName": "Blattname",
|
||||
"layouts.tb.scale": "Massstab",
|
||||
"layouts.tb.date": "Datum",
|
||||
"layouts.tb.author": "Bearbeiter",
|
||||
"layouts.tb.autoPlaceholder": "(automatisch)",
|
||||
// Editor
|
||||
"layouts.editorTitle": "Layout-Editor",
|
||||
"layouts.fit": "Einpassen",
|
||||
"layouts.addViewport": "Viewport hinzufügen",
|
||||
"layouts.pickSnapshot": "Ausschnitt wählen …",
|
||||
"layouts.noSnapshots": "Keine Ausschnitte vorhanden. Zuerst einen Ausschnitt speichern.",
|
||||
"layouts.viewportProps": "Viewport-Eigenschaften",
|
||||
"layouts.noViewports": "Noch keine Viewports. Ausschnitt wählen und hinzufügen.",
|
||||
"layouts.selectViewport": "Viewport auf dem Blatt anklicken.",
|
||||
"layouts.missingSnapshot": "Ausschnitt fehlt",
|
||||
"layouts.xMm": "X (mm)",
|
||||
"layouts.yMm": "Y (mm)",
|
||||
"layouts.widthMm": "Breite (mm)",
|
||||
"layouts.heightMm": "Höhe (mm)",
|
||||
"layouts.scale": "Massstab",
|
||||
"layouts.scaleReset": "Massstab vom Ausschnitt",
|
||||
"layouts.removeViewport": "Viewport entfernen",
|
||||
"layouts.backToModel": "Zurück zum Modell",
|
||||
"layouts.placeViewport": "Viewport aufziehen",
|
||||
"layouts.placeHint": "Rechteck auf dem Blatt aufziehen, dann Ausschnitt binden.",
|
||||
"layouts.bindSnapshot": "Ausschnitt binden",
|
||||
"layouts.emptyViewports":
|
||||
"Noch keine Viewports. „Viewport aufziehen\" wählen und ein Rechteck auf dem Blatt ziehen.",
|
||||
// Annotationen (Linie/Rechteck/Text) direkt auf dem Blatt
|
||||
"layouts.annotLine": "Linie zeichnen",
|
||||
"layouts.annotRect": "Rechteck zeichnen",
|
||||
"layouts.annotText": "Text setzen",
|
||||
"layouts.annotTextTitle": "Text",
|
||||
"layouts.annotTextLabel": "Textinhalt:",
|
||||
"layouts.annotEditText": "Text ändern",
|
||||
"layouts.annotColor": "Farbe",
|
||||
"layouts.annotWeight": "Strichstärke (mm)",
|
||||
"layouts.annotRemove": "Annotation entfernen",
|
||||
"layouts.annot.line": "Linie",
|
||||
"layouts.annot.rect": "Rechteck",
|
||||
"layouts.annot.text": "Text",
|
||||
// Baum / „+"-Menü / Ordner
|
||||
"layouts.add": "Neu …",
|
||||
"layouts.addFolder": "Ordner erstellen",
|
||||
"layouts.addLayout": "Layout erstellen",
|
||||
"layouts.addMaster": "Masterlayout erstellen",
|
||||
"layouts.add.folder": "Ordner erstellen",
|
||||
"layouts.add.layout": "Layout erstellen",
|
||||
"layouts.add.master": "Masterlayout erstellen",
|
||||
"layouts.folder.defaultName": "Neuer Ordner",
|
||||
"layouts.folder.rename": "Ordner umbenennen",
|
||||
"layouts.folder.delete": "Ordner löschen",
|
||||
"layouts.folder.export": "Ordner als PDF exportieren",
|
||||
"layouts.folder.empty": "Leerer Ordner",
|
||||
"layouts.folder.exportEmpty": "Ordner enthält keine Layouts.",
|
||||
"layouts.tree.empty": "Noch keine Ordner oder Layouts. Über „+\" anlegen.",
|
||||
// Dialog „Neues Layout"
|
||||
"layouts.newLayout.title": "Neues Layout",
|
||||
"layouts.newLayout.source": "Vorlage",
|
||||
"layouts.newLayout.fromMaster": "Masterlayout als Vorlage",
|
||||
"layouts.newLayout.freeSize": "Freie Grösse",
|
||||
"layouts.newLayout.pickMaster": "Masterlayout wählen …",
|
||||
"layouts.newLayout.noMasters": "Keine Masterlayouts vorhanden.",
|
||||
// Dialog „Neues Masterlayout"
|
||||
"layouts.newMaster.title": "Neues Masterlayout",
|
||||
// Gemeinsame Grössen-Auswahl (beide Dialoge)
|
||||
"layouts.size.format": "Format",
|
||||
"layouts.size.custom": "Freie Grösse",
|
||||
"layouts.size.a4": "A4",
|
||||
"layouts.size.a3": "A3",
|
||||
"layouts.paperGroup.a": "A-Reihe",
|
||||
"layouts.paperGroup.b": "B-Reihe",
|
||||
"layouts.size.widthMm": "Breite (mm)",
|
||||
"layouts.size.heightMm": "Höhe (mm)",
|
||||
"layouts.size.create": "Erstellen",
|
||||
} as const;
|
||||
|
||||
export type TranslationKey = keyof typeof de;
|
||||
|
||||
Reference in New Issue
Block a user