Files
DOSSIER-STANDALONE/src/i18n/de.ts
T
karim 87ef7988d1 ResourceManager: Master-Detail-Editoren fuer Schraffur- und Linien-Typen
Schraffuren- und Linien-Tab im Master-Detail-Layout (DOSSIER-Vorbild): Liste
links mit Live-SVG-Thumbnail + Name, Detail rechts mit grosser Live-Vorschau,
Inline-Rename, Trash-Delete, Typ-Umschalter. Schraffur: Vektor (parallel/
zufaellig) oder Bild (Upload -> Data-URL, scaleX/scaleY/rotation); kein
Farbfeld mehr (Farbe kommt von Bauteil/Attribut). Linie: Strich oder Zickzack
(Amplitude/Wellenlaenge). Bauteil-Tabelle: Vordergrund + Hintergrund statt
einer Farbe. Neuer eigenstaendiger Vorschau-Helfer ui/hatchPreview.tsx (kein
Renderer-Import).
2026-07-04 00:41:09 +02:00

852 lines
40 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Deutsches Wörterbuch (Default-Sprache). Die Werte hier sind EXAKT die bisher
// sichtbaren UI-Texte — die i18n-Umstellung darf optisch nichts ändern.
//
// Identifier/Keys sind englisch und namespaced wie bei DOSSIER
// (z. B. `topbar.grundriss`); nur die Werte sind übersetzbarer Text.
// Platzhalter in geschweiften Klammern (`{name}`) werden von t(...) ersetzt.
export const de = {
// ── Marke / Topbar ───────────────────────────────────────────────────────
"brand.tag": "Dokumentmodell",
"topbar.viewGroup": "Ansicht",
"topbar.viewGroup.disabled": "Ansichten nur für Geschosse",
"topbar.grundriss": "Grundriss",
"topbar.perspektive": "Perspektive",
"view3d.group": "Ansicht 3D",
"view3d.front": "Front",
"view3d.front.hint": "Frontalansicht von vorne",
"view3d.top": "Oben",
"view3d.top.hint": "Draufsicht (senkrecht von oben)",
"view3d.side": "Seite",
"view3d.side.hint": "Seitenansicht (90° zur Front)",
"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.camera": "Kamera",
"view3d.camera.hint": "Kamera-Einstellungen (Sichtwinkel)",
"view3d.fov": "Sichtwinkel",
"view3d.fov.hint": "Sichtwinkel (FOV) der Perspektivkamera in Grad",
"topbar.detailGroup": "Detailgrad",
"topbar.detail": "Detailgrad",
"topbar.detail.hint": "Detailgrad der Plandarstellung (Symbole, Schraffuren, Linien)",
"topbar.detail.hintDisabled": "Detailgrad wirkt im Grundriss (in der Perspektive noch nicht)",
"topbar.detail.grob": "grob",
"topbar.detail.mittel": "mittel",
"topbar.detail.fein": "fein",
"topbar.scaleGroup": "Massstab und Zoom",
"topbar.scale": "Massstab",
"topbar.scale.apply": "Papier-Massstab 1:N anwenden",
"topbar.scale.custom": "frei …",
"topbar.scale.live": "Aktueller Papier-Massstab (live)",
"topbar.scale.prompt": "Massstab eingeben (z. B. 1:35 oder 35):",
"topbar.zoom100": "100%",
"topbar.zoom100.hint": "Zoom exakt auf den gewählten Massstab 1:{n}",
"topbar.fit": "Einpassen",
"topbar.fit.hint": "Auf Plan einpassen",
"topbar.fitSelection": "Auswahl",
"topbar.fitSelection.hint": "Auf Auswahl einpassen (sonst auf Plan)",
"topbar.exportPdf": "PDF",
"topbar.exportPdf.hint": "Grundriss als Vektor-PDF exportieren",
"topbar.exportDxf": "DXF",
"topbar.exportDxf.hint": "Grundriss als DXF (Modell-Space in Metern) exportieren",
"topbar.zoom.current": "Aktueller Zoom",
"topbar.renderGroup": "Render-Modus",
"topbar.render.shaded": "Schattiert",
"topbar.render.shaded.hint": "Schattiert",
"topbar.render.wireframe": "Draht",
"topbar.render.wireframe.hint": "Drahtgitter",
"topbar.render.hidden": "Kanten",
"topbar.render.hidden.hint": "Verdeckte Kanten (Hidden-Line)",
"topbar.render.hintDisabled": "Render-Modus wirkt in der Perspektive",
// Darstellungsart (kontextabhängiger Dropdown): Grundriss = Farbig/SW,
// Perspektive = Schattiert/Weiss/Draht/Kanten.
"display.style": "Darstellung",
"display.style.group": "Darstellungsart",
"display.style.hint": "Darstellungsart der aktiven Ansicht",
"display.style.color": "Farbig",
"display.style.mono": "Schwarz-Weiss",
"display.style.shaded": "Schattiert",
"display.style.white": "Weiss",
"display.style.textured": "Texturiert",
"display.style.wireframe": "Drahtgitter",
"display.style.hidden": "Kanten",
"topbar.referenceLinesGroup": "Referenzlinien",
"topbar.referenceLines": "Referenzlinien",
"topbar.referenceLines.hint": "Referenzlinien (Wandachsen) ein-/ausblenden",
"topbar.referenceLines.hintDisabled": "Referenzlinien wirken im Grundriss",
"topbar.resources": "Ressourcen",
"topbar.resources.hint": "Ressourcen-Fenster ein-/ausblenden",
// ── Layout-Menü (Topbar) ─────────────────────────────────────────────────
"layout.title": "Layout",
"layout.placeholder": "Layout …",
"layout.saveCurrent": " Aktuelles speichern …",
"layout.loadGroup": "Laden",
"layout.deleteGroup": "Löschen",
"layout.savePrompt": "Layout speichern als:",
// ── Sichtbarkeits-Kombinationen (Topbar) ─────────────────────────────────
"combo.layers": "Ebenen-Komb.",
"combo.drawings": "Zeichn.-Komb.",
"combo.placeholder": "Kombination …",
"combo.saveCurrent": " Aktuelle speichern …",
"combo.loadGroup": "Laden",
"combo.deleteGroup": "Löschen",
"combo.layers.title": "Ebenenkombinationen",
"combo.drawings.title": "Zeichnungskombinationen",
"combo.layers.savePrompt": "Ebenenkombination speichern als:",
"combo.drawings.savePrompt": "Zeichnungskombination speichern als:",
// ── Zeichenwerkzeuge (Topbar-Werkzeugleiste + Statushinweise) ────────────
"tool.group": "Werkzeuge",
"tool.select": "Auswahl",
"tool.wall": "Wand",
"tool.ceiling": "Decke",
"tool.window": "Fenster",
"tool.door": "Tür",
"tool.stair": "Treppe",
"tool.line": "Linie",
"tool.polyline": "Polylinie",
"tool.rect": "Rechteck",
"tool.select.hint": "Auswahl — Elemente klicken/aufziehen",
"tool.window.hint": "Fenster: Wand wählen, dann Position setzen",
"tool.door.hint": "Tür: Wand wählen, dann Position setzen",
"tool.stair.hint": "Treppe: Startpunkt, dann Laufrichtung/Ende setzen",
"tool.room": "Raum",
"tool.room.hint": "Raum: in umschlossenen Bereich klicken (oder Umriss zeichnen)",
"tool.wall.firstPoint": "Wand: ersten Achspunkt setzen",
"tool.wall.nextPoint": "Wand: nächsten Punkt — Doppelklick/Rechtsklick beendet",
"tool.ceiling.firstPoint": "Decke: ersten Umrisspunkt setzen",
"tool.ceiling.nextPoint": "Decke: nächster Punkt — Klick auf Start schließt, Enter beendet",
"tool.line.firstPoint": "Linie: Startpunkt setzen",
"tool.line.secondPoint": "Linie: Endpunkt setzen",
"tool.polyline.firstPoint": "Polylinie: ersten Punkt setzen",
"tool.polyline.nextPoint": "Polylinie: nächster Punkt — Klick auf Start schließt, Doppelklick beendet",
"tool.rect.firstCorner": "Rechteck: erste Ecke setzen",
"tool.rect.secondCorner": "Rechteck: gegenüberliegende Ecke setzen",
"tool.wallType": "Wandtyp",
"tool.ceilingType": "Deckentyp",
"tool.layer": "Ebene",
"tool.layer.hint": "Aktive Ebene — alles Gezeichnete kommt auf diese Kategorie",
"tool.floorOnlyDisabled": "Wand nur auf einem Geschoss zeichenbar",
"tool.snap": "Fang",
"tool.snap.hint": "Fang an Endpunkten/Raster; Shift = Ortho, Ctrl = Fang aus",
"snap.enabled": "Fang aktiv",
"snap.endpoint": "Endpunkt",
"snap.midpoint": "Mittelpunkt",
"snap.intersection": "Schnittpunkt",
"snap.onEdge": "Auf Kante (Lot)",
"snap.grid": "Raster",
"snap.ortho": "Ortho (Shift)",
"snap.gridSize": "Rasterweite (m)",
"snap.angleStep": "Winkelraster",
// ── Transformation (Bewegen/Spiegeln/Drehen) + Modusleiste ───────────────
"transform.bar": "Transformation",
"transform.cancel": "Abbrechen (Esc)",
"transform.countPrompt": "Anzahl Kopien:",
"transform.move": "Bewegen (M)",
"transform.mirror": "Spiegeln (S)",
"transform.rotate": "Drehen (D)",
"transform.mode.move": "Bewegen",
"transform.mode.copy": "Kopie",
"transform.mode.array": "N Kopien",
"transform.mode.distribute": "Verteilen",
"transform.hint.move.0": "Basispunkt klicken",
"transform.hint.move.1": "Zielpunkt klicken",
"transform.hint.rotate.0": "Drehzentrum klicken",
"transform.hint.rotate.1": "Bezugspunkt (Startwinkel) klicken",
"transform.hint.rotate.2": "Zielwinkel klicken",
"transform.hint.mirror.0": "Erster Punkt der Spiegelachse",
"transform.hint.mirror.1": "Zweiter Punkt der Spiegelachse",
// ── Linien-Darstellung (Display/Print) ───────────────────────────────────
"topbar.lineModeGroup": "Linien-Darstellung",
"topbar.lineMode.display": "Display",
"topbar.lineMode.print": "Print",
"topbar.lineMode.display.hint": "Display: alle Linien als konstante Haarlinie (ruhiges Arbeiten)",
"topbar.lineMode.print.hint": "Print: echte mm-Strichstärken (Papier-/Druckbild)",
// ── Statusleiste ─────────────────────────────────────────────────────────
"status.selection": "Auswahl",
"status.selectionN": "Auswahl: {n} {noun}",
"status.wall": "Wand",
"status.walls": "Wände",
"status.xy": "X/Y",
"status.unit": "Einheit",
"status.scale": "Massstab",
"status.zoom": "Zoom",
"status.referenceLines": "Achsen",
"status.referenceLines.hint": "Referenzlinien (Wandachsen) ein-/ausblenden",
"status.referenceLines.hintDisabled": "Referenzlinien wirken im Grundriss",
"status.floor": "Geschoss",
"status.layer": "Ebene",
"status.none": "—",
"status.renderer": "Renderer",
"status.rendererWebgl": "WebGL2",
"status.rendererWasm": "Engine",
"status.rendererWasmUnavailable": "WebGPU nicht verfügbar",
// ── Dokument-Tabs (Zeichnungen/Blätter) ─────────────────────────────────
"tabs.drawings": "Zeichnungen",
// ── Navigator-Panels ─────────────────────────────────────────────────────
"nav.drawingLevels": "Zeichnungsebenen",
"nav.layers": "Ebenen",
"nav.tools": "Werkzeuge",
"nav.attributes": "Attribute",
"nav.objectInfo": "Objekt-Info",
// Attribute-Palette (AttributesPanel)
"attr.title": "Attribute",
"attr.empty": "Keine Auswahl",
"attr.stroke": "Stift",
"attr.color": "Farbe",
"attr.weight": "Strichstärke (mm)",
"attr.lineStyle": "Linienstil",
"attr.fill": "Füllung",
"attr.fillColor": "Füllfarbe",
"attr.clearFill": "Füllfarbe entfernen",
"attr.foreground": "Vordergrund",
"attr.background": "Hintergrund",
"attr.bySystem": "Nach System",
"attr.hatch": "Schraffur",
"attr.none": "keine",
"attr.inheritedFromLayer": "Wände erben die Strichstärke aus der Ebene",
"attr.fillNeedsClosed": "Füllung nur für geschlossene Formen",
"attr.size": "Maße",
"attr.width": "Breite",
"attr.height": "Höhe",
// Objekt-Info-Palette (ObjectInfoPanel)
"objinfo.title": "Objekt-Info",
"objinfo.empty": "Kein Objekt gewählt",
"objinfo.refpoint": "Bezugspunkt",
"objinfo.setRefpoint": "Bezugspunkt wählen",
"objinfo.x": "X",
"objinfo.y": "Y",
"objinfo.z": "Z",
"objinfo.zHint": "2D-Ebene keine Höhe am Element",
"objinfo.dimensions": "Maße",
"objinfo.width": "Breite",
"objinfo.height": "Höhe",
"objinfo.type": "Typ",
"objinfo.kind.wall": "Wand",
"objinfo.kind.ceiling": "Decke",
"objinfo.kind.drawing2d": "2D-Objekt",
"objinfo.kind.door": "Tür",
"objinfo.kind.opening": "Öffnung",
"objinfo.kind.stair": "Treppe",
"objinfo.kind.room": "Raum",
// ── 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.buildup": "Aufbau",
"objinfo.wall.single": "Einschichtig",
"objinfo.wall.multi": "Mehrschichtig",
"objinfo.wall.thickness": "Dicke",
"objinfo.wall.preset": "Wandaufbau",
"objinfo.wall.presetLabel": "{name} · {thickness} m",
"objinfo.wall.refFloor": "Referenzgeschoss",
"objinfo.wall.linkAbove": "An oberes Geschoss binden",
"objinfo.wall.bottom": "Unterkante (UK)",
"objinfo.wall.top": "Oberkante (OK)",
"objinfo.wall.anchorFloor": "An Geschoss gebunden",
"objinfo.wall.anchorCustom": "Eigene Höhe",
"objinfo.wall.height": "Höhe",
// ── Decken-Attribute (Object-Info-Panel) ────────────────────────────────
"objinfo.ceiling.section": "Decke",
"objinfo.ceiling.buildup": "Aufbau",
"objinfo.ceiling.thickness": "Dicke",
"objinfo.ceiling.preset": "Deckenaufbau",
"objinfo.ceiling.refFloor": "Referenzgeschoss",
"objinfo.ceiling.top": "Oberkante (OK)",
"objinfo.ceiling.bottom": "Unterkante (UK)",
"objinfo.ceiling.height": "Dicke (OKUK)",
"objinfo.ceiling.area": "Fläche",
"objinfo.ceiling.anchorFloor": "An Geschoss gebunden",
"objinfo.ceiling.anchorCustom": "Eigene Höhe",
// ── Öffnungs-Attribute (Object-Info-Panel) ──────────────────────────────
"objinfo.opening.section": "Öffnung",
"objinfo.opening.kind": "Art",
"objinfo.opening.kind.window": "Fenster",
"objinfo.opening.kind.door": "Tür",
"objinfo.opening.hostWall": "Wirts-Wand",
"objinfo.opening.position": "Position (ab Wandanfang)",
"objinfo.opening.width": "Breite",
"objinfo.opening.height": "Höhe",
"objinfo.opening.sill": "Brüstung",
"objinfo.opening.swingAngle": "Öffnungswinkel",
"objinfo.opening.hinge": "Anschlag",
"objinfo.opening.hinge.start": "Anfang",
"objinfo.opening.hinge.end": "Ende",
"objinfo.opening.swing": "Aufschlagseite",
"objinfo.opening.swing.left": "Links",
"objinfo.opening.swing.right": "Rechts",
"objinfo.opening.dir": "Richtung",
"objinfo.opening.dir.in": "Innen",
"objinfo.opening.dir.out": "Außen",
"objinfo.opening.bottom": "Unterkante (UK)",
"objinfo.opening.top": "Oberkante (OK)",
// ── Treppen-Attribute (Object-Info-Panel) ───────────────────────────────
"objinfo.stair.section": "Treppe",
"objinfo.stair.shape": "Grundform",
"objinfo.stair.shape.straight": "Gerade",
"objinfo.stair.shape.L": "L-Treppe",
"objinfo.stair.shape.spiral": "Wendel",
"objinfo.stair.width": "Laufbreite",
"objinfo.stair.steps": "Stufenanzahl",
"objinfo.stair.rise": "Steighöhe (gesamt)",
"objinfo.stair.riser": "Steigungshöhe",
"objinfo.stair.tread": "Auftrittstiefe",
"objinfo.stair.direction": "Laufrichtung",
"objinfo.stair.direction.up": "Aufwärts",
"objinfo.stair.direction.down": "Abwärts",
"objinfo.stair.refFloor": "Referenzgeschoss",
"objinfo.stair.bottom": "Unterkante (UK)",
"objinfo.stair.top": "Oberkante (OK)",
// ── Raum-Attribute (Object-Info-Panel) ──────────────────────────────────
"objinfo.room.section": "Raum",
"objinfo.room.name": "Name",
"objinfo.room.sia": "SIA-Kategorie",
"objinfo.room.area": "Fläche",
"objinfo.room.perimeter": "Umfang",
"objinfo.room.refFloor": "Referenzgeschoss",
"objinfo.room.editStamp": "Stempel bearbeiten …",
"objinfo.wall.floorAboveNone": "Kein oberes Geschoss",
"levels.addFloor": "+ Geschoss",
"levels.addSection": "+ Schnitt",
"levels.addElevation": "+ Ansicht",
"levels.addDrawing": "+ Zeichnung",
"layers.addCategory": "+ Ebene",
// ── Zeichnungsebenen: Kategorie-Titel (einklappbare Gruppen) ─────────────
"levelCat.floor": "Geschosse",
"levelCat.section": "Schnitte",
"levelCat.elevation": "Ansichten",
"levelCat.drawing": "2D-Zeichnungen",
"levelCat.collapse": "Kategorie ein-/ausklappen",
"nav.visibility": "Sichtbarkeit",
"nav.hide": "Ausblenden",
"nav.show": "Einblenden",
"nav.categoryVisible": "{name} sichtbar",
"nav.categorySelect": "{name} als aktive Ebene wählen (Zeichen-Ziel)",
// ── Badges (Art einer Zeichnungsebene) ───────────────────────────────────
"badge.floor": "Geschoss",
"badge.section": "Schnitt",
"badge.elevation": "Ansicht",
"badge.drawing": "Zeichnung",
// ── Darstellungsmodus-Umschalter ─────────────────────────────────────────
"display.title": "Darstellungsmodus",
"display.all_force": "Alle anzeigen",
"display.all": "Ausgewählte",
"display.active": "Nur aktive",
"display.grey": "Andere grau",
"display.grey_locked": "Andere grau & gesperrt",
// ── Dock ─────────────────────────────────────────────────────────────────
"dock.resize": "Breite anpassen",
"dock.dock": "Andocken",
"dock.close": "Schließen",
"dock.float": "Lösen",
"dock.redock": "Andocken",
"dock.resizePanel": "Größe ändern",
"dock.dropLeft": "Links andocken",
"dock.dropRight": "Rechts andocken",
// ── Kontextmenü (Einträge) ───────────────────────────────────────────────
"ctx.layerSettings": "Ebeneneinstellungen…",
"ctx.addSubLayer": "Sub-Ebene hinzufügen…",
"ctx.assignSelection": "Selektion hierher übertragen",
"ctx.assignSelection.disabled": "Keine Wand ausgewählt — zuerst im Grundriss/3D eine Wand anklicken.",
"ctx.duplicate": "Duplizieren",
"ctx.copyProps": "Eigenschaften kopieren",
"ctx.pasteProps": "Eigenschaften einfügen",
"ctx.pasteProps.disabled": "Zwischenablage leer — zuerst „Eigenschaften kopieren“.",
"ctx.delete": "Löschen",
"ctx.delete.lastLayer": "Die letzte Ebene kann nicht gelöscht werden.",
"ctx.delete.lastLevel": "Die letzte Zeichnungsebene kann nicht gelöscht werden.",
"ctx.levelSettings": "Einstellungen…",
"ctx.fitSelection": "Auf Auswahl einpassen",
"ctx.clearSelection": "Auswahl aufheben",
"ctx.fit": "Ansicht einpassen",
"ctx.union": "Vereinigen",
"ctx.subtract": "Subtrahieren",
"ctx.intersect": "Schneiden",
"ctx.boolean.disabled":
"Mindestens zwei geschlossene Flächen auswählen (Rechteck oder geschlossene Polylinie).",
"ctx.noWallHit": "Keine Wand getroffen",
"ctx.noWallHit.hint": "Rechtsklick auf eine Wand wählt sie und zeigt Wand-Aktionen.",
// Kontextmenü-Titel je Quelle.
"ctx.title.level": "Zeichnungsebene",
"ctx.title.wall": "Wand",
"ctx.title.view": "Ansicht",
// ── Inline-Editor (Ebene / Geschoss) ─────────────────────────────────────
"editor.close": "Schließen",
"editor.layerTitle": "Ebene {code}",
"editor.name": "Name",
"editor.color": "Farbe",
"editor.lineWeight": "Linienstärke",
"editor.floorHeight": "Geschosshöhe",
"editor.cutHeight": "Schnitthöhe",
"editor.unit.mm": "mm",
"editor.unit.m": "m",
"editor.noHeightDrawing": "Für Zeichnungen gibt es keine Geschoss-/Schnitthöhe.",
"editor.noHeightSection": "Für Schnitte/Ansichten gibt es keine Geschoss-/Schnitthöhe.",
// ── Hauptinhalt (Panes / Eigenschaften) ──────────────────────────────────
"content.perspektiveTitle": "Perspektive · {name}",
"content.grundrissTitle": "Grundriss · {name}",
"content.grundrissLegend": "Grundriss · {name} · Schnitthöhe {cutHeight}",
"content.drawingTitle": "Zeichnung · {name}",
"content.drawingCanvas": "Zeichenfläche",
"content.drawingLegend": "Freie 2D-Zeichnung",
"content.sectionTitle": "{kind} · {name}",
"section.loading": "{kind} wird berechnet …",
"section.empty": "{kind} — keine Schnittlinie im Grundriss gesetzt",
"section.error": "{kind} — Berechnung fehlgeschlagen (render3d-WASM neu bauen?)",
"section.legend": "{kind} · abgeleitete Projektion (render3d)",
"props.floorHeight": "Geschosshöhe",
"props.cutHeight": "Schnitthöhe",
"props.okff": "OKFF",
"props.okffValue": "+{value} m",
// ── Stub (Schnitt / Ansicht) ─────────────────────────────────────────────
"stub.section": "Schnitt",
"stub.elevation": "Ansicht",
"stub.note": "{kind} — abgeleitete Projektion folgt in einer späteren Phase",
// ── Default-Namen neuer Elemente ─────────────────────────────────────────
"default.floorName": "Geschoss {n}",
"default.sectionName": "Schnitt {n}",
"default.elevationName": "Ansicht {n}",
"default.drawingName": "Zeichnung {n}",
"default.categoryName": "Neue Ebene",
"default.subCategoryName": "Neue Sub-Ebene",
"default.componentName": "Neues Bauteil",
"default.hatchName": "Neue Schraffur",
"default.lineStyleName": "Neuer Linienstil",
"default.hatchNone": "Ohne",
"default.copySuffixLevel": "{name} Kopie",
"default.copySuffixLayer": "{name} KOPIE",
"default.wallTypeSingle": "Wand {thickness} m",
"default.ceilingTypeSingle": "Decke {thickness} m",
// ── Warnungen (Lösch-Schutz) ─────────────────────────────────────────────
"alert.layerInUse": "Ebene „{code} {name}\" wird von Bauteilen verwendet und kann nicht gelöscht werden.",
"alert.componentInUse": "Bauteil „{name}\" wird von einem Wandtyp verwendet und kann nicht gelöscht werden.",
"alert.hatchInUse": "Schraffur „{name}\" wird von einem Bauteil verwendet und kann nicht gelöscht werden.",
"alert.lineStyleInUse": "Linienstil „{name}\" wird von einer Schraffur verwendet und kann nicht gelöscht werden.",
// ── Ressourcen-Manager ───────────────────────────────────────────────────
"resources.title": "Ressourcen",
"resources.label": "Ressourcen-Manager",
"resources.close": "Schließen",
"resources.tab.components": "Bauteile",
"resources.tab.hatches": "Schraffuren",
"resources.tab.lines": "Linien",
"resources.tab.wallStyles": "Wandstile",
"resources.tab.ceilingStyles": "Deckenstile",
"resources.tab.materials": "Materialien",
"resources.wallStyles.hint":
"Je Wandtyp die Schichtfugen (zwischen benachbarten Schichten) als wählbaren Linienstil. Ohne Zuweisung: Haarlinie 0.02 mm.",
"resources.wallStyles.empty": "Noch keine Wandtypen.",
"resources.ceilingStyles.hint":
"Je Deckentyp (liegender Schichtaufbau, oben → unten) die Schichtfugen als wählbaren Linienstil. Ohne Zuweisung: Haarlinie 0.02 mm.",
"resources.ceilingStyles.empty": "Noch keine Deckentypen.",
"resources.col.layer": "Schicht",
"resources.col.thickness": "Dicke (mm)",
"resources.col.joint": "Fuge",
"resources.joint.default": "— (Haarlinie)",
"resources.materials.hint":
"Kugel-Vorschau der eingebauten PBR-Materialbibliothek — durchsuchen und vergleichen. Zuweisen an ein Bauteil weiterhin über dessen Spalte „Material …\".",
"resources.materials.searchPlaceholder": "Material suchen …",
"resources.materials.categoryLabel": "Kategorie",
"resources.materials.categoryAll": "Alle",
"resources.materials.selected": "Ausgewählt: {name} ({category})",
"resources.materials.empty": "Keine Materialien gefunden.",
"resources.materials.count": "{shown} von {total} Materialien",
"resources.add": "Neu",
"resources.import.lin": "⤓ .lin importieren",
"resources.import.pat": "⤓ .pat importieren",
// Bauteile.
"resources.components.hint": "Höhere Priorität läuft am Stoß durch (verschneidet zuerst); niedrigere stößt seitlich an.",
"resources.components.empty": "Noch keine Bauteile.",
"resources.components.placeholder": "Bauteil",
"resources.col.name": "Name",
"resources.col.color": "Farbe",
"resources.col.hatch": "Schnittschraffur",
"resources.col.viewHatch": "Ansichtsschraffur",
"resources.viewHatch.none": "(keine)",
"resources.col.prio": "Prio",
"resources.col.prio.hint": "Höhere Priorität läuft am Stoß durch",
"resources.col.texture": "Textur",
"resources.col.material": "Material",
"resources.col.foreground": "Vordergrund",
"resources.col.foreground.hint": "Farbe der Muster-/Schraffurlinien (Vordergrund)",
"resources.col.background": "Hintergrund",
"resources.col.background.hint": "Füllfarbe (Poché/Hintergrund)",
"resources.delete.component": "Bauteil „{name}\" löschen",
// 3D-Material (PBR) — Bibliotheks-Auswahl + Upload.
"material.assign": "Material …",
"material.none": "— ohne —",
"material.dialog.title": "3D-Material zuweisen",
"material.dialog.hint": "Wähle ein eingebautes Material oder lade eigene Texturen hoch. Wirkt im 3D-Modus „Texturiert\".",
"material.library": "Bibliothek (ambientCG, CC0)",
"material.upload": "Eigene Texturen",
"material.upload.hint": "Lade Bilder als Karten hoch (mindestens Farbe). Größe = physische Kachelgröße in Metern.",
"material.upload.color": "Farbe (Albedo)",
"material.upload.normal": "Normal",
"material.upload.roughness": "Rauheit",
"material.upload.displacement": "Höhe",
"material.upload.ao": "AO",
"material.upload.choose": "Bild …",
"material.upload.apply": "Zuweisen",
"material.size": "Kachelgröße (m)",
"material.current": "Aktuell",
"material.clear": "Material entfernen",
"material.close": "Schließen",
"material.uploaded": "Hochgeladen",
// ── ambientCG-Bibliothek durchsuchen (Live) ──────────────────────────────
"material.browse": "Bibliothek durchsuchen",
"material.browse.starter": "Schnellauswahl",
"material.browse.hint":
"Durchsuche die komplette CC0-Bibliothek von ambientCG (~2000+ Materialien). Ein Klick lädt die Texturen zur Laufzeit herunter und weist sie zu.",
"material.browse.search": "Suchen …",
"material.browse.searchPlaceholder": "z. B. Holz, Beton, Fliesen …",
"material.browse.category.all": "Alle Kategorien",
"material.browse.resolution": "Auflösung",
"material.browse.more": "Mehr laden",
"material.browse.loading": "Lädt …",
"material.browse.downloading": "Textur wird geladen …",
"material.browse.empty": "Keine Materialien gefunden.",
"material.browse.count": "{shown} von {total}",
"material.browse.error":
"Bibliothek nicht erreichbar. Zur Laufzeit ist ein Proxy für ambientCG nötig (Dev: Vite-Proxy aktiv; Prod: VITE_AMBIENTCG_PROXY setzen).",
"material.browse.downloadError": "Download fehlgeschlagen (CORS/Proxy prüfen).",
// Schraffuren.
"resources.hatches.hint": "Muster, Maßstab und Winkel steuern die Schnitt-Schraffur; der Linienstil bestimmt die Stärke der Musterlinien.",
"resources.hatches.empty": "Noch keine Schraffuren.",
"resources.hatches.placeholder": "Schraffur",
"resources.col.pattern": "Muster",
"resources.col.scale": "Maßstab",
"resources.col.angle": "Winkel °",
"resources.col.relativeToWall": "Wandbezug",
"resources.col.relativeToWall.hint": "Winkel relativ zur Wandachse — das Muster dreht mit der Wand mit",
"resources.col.lineStyle": "Linienstil",
"resources.lineStyle.none": "— ohne —",
"resources.delete.hatch": "Schraffur „{name}\" löschen",
// Schraffur-/Linien-Typ (Master-Detail-Editor).
"resources.field.type": "Typ",
"resources.field.lines": "Striche",
"resources.field.image": "Bild",
"resources.field.scaleX": "Skalierung X",
"resources.field.scaleY": "Skalierung Y",
"resources.field.rotation": "Rotation °",
"resources.field.amplitude": "Amplitude",
"resources.field.wavelength": "Wellenlänge",
"resources.hatchKind.vector": "Vektor",
"resources.hatchKind.image": "Bild",
"resources.lines.parallel": "Parallel",
"resources.lines.random": "Zufällig",
"resources.lineKind.dash": "Strich",
"resources.lineKind.zigzag": "Zickzack",
// Schraffur-Muster.
"pattern.none": "Ohne",
"pattern.solid": "Vollfläche",
"pattern.insulation": "Wärmedämmung",
"pattern.diagonal": "Diagonal",
"pattern.crosshatch": "Kreuzschraffur",
// Linien.
"resources.lines.hint": "Strichstärke in Millimetern (Paper-Space). Strichmuster: durchgezogen, gestrichelt oder gepunktet.",
"resources.lines.empty": "Noch keine Linienstile.",
"resources.lines.placeholder": "Linienstil",
"resources.col.weight": "Stärke (mm)",
"resources.col.stroke": "Strich",
"resources.col.preview": "Vorschau",
"resources.delete.lineStyle": "Linienstil „{name}\" löschen",
"resources.texture.empty": "—",
// Strichmuster.
"dash.solid": "Durchgezogen",
"dash.dashed": "Gestrichelt",
"dash.dotted": "Gepunktet",
// ── Command-Line / Befehle (Rhino-artiges Befehlssystem) ──────────────────
"cmd.aria": "Befehlszeile",
"cmd.idle.prompt": "Befehl:",
"cmd.idle.placeholder": "Befehl eingeben … (Tab)",
"cmd.wall.label": "Wand",
"cmd.wall.start": "Startpunkt der Wand:",
"cmd.wall.next": "Nächster Punkt:",
"cmd.ceiling.label": "Decke",
"cmd.ceiling.start": "Erster Umrisspunkt der Decke:",
"cmd.ceiling.next": "Nächster Punkt ( Schliessen ):",
"cmd.opening.label": "Öffnung",
"cmd.opening.windowLabel": "Fenster",
"cmd.opening.doorLabel": "Tür",
"cmd.opening.wall": "Wand für die Öffnung wählen:",
"cmd.opening.pos": "Position entlang der Wand ( Abstand tippen ):",
"cmd.opening.kind": "Art",
"cmd.opening.hinge": "Anschlag",
"cmd.opening.side": "Seite",
"cmd.opening.dir": "Richtung",
"cmd.opening.sillField": "Brüstung",
"cmd.opening.swingField": "Winkel",
"cmd.stair.label": "Treppe",
"cmd.stair.start": "Startpunkt der Treppe:",
"cmd.stair.run": "Laufrichtung / Ende ( Grundform · Auf/Ab ):",
"cmd.stair.shape": "Grundform",
"cmd.stair.updown": "Auf/Ab",
"cmd.stair.stepsField": "Stufen",
"cmd.stair.riseField": "Steighöhe",
"cmd.line.label": "Linie",
"cmd.line.start": "Startpunkt der Linie:",
"cmd.line.end": "Endpunkt der Linie:",
"cmd.polyline.label": "Polylinie",
"cmd.polyline.start": "Startpunkt:",
"cmd.polyline.next": "Nächster Punkt:",
"cmd.polyline.close": "Schliessen",
"cmd.polyline.undo": "Zurück",
"cmd.polyline.closedOpt": "Geschlossen",
"cmd.rect.label": "Rechteck",
"cmd.rect.first": "Erste Ecke:",
"cmd.rect.second": "Gegenüberliegende Ecke:",
"cmd.rect.method": "Methode",
"cmd.rect.center": "Mittelpunkt:",
"cmd.rect.corner": "Ecke:",
"cmd.rect.baseEnd": "Zweite Ecke (Basiskante):",
"cmd.rect.rise": "Höhe:",
"cmd.circle.label": "Kreis",
"cmd.circle.center": "Mittelpunkt:",
"cmd.circle.radius": "Radius:",
// 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.mirror.label": "Spiegeln",
"cmd.mirror.first": "Erster Punkt der Spiegelachse:",
"cmd.mirror.second": "Zweiter Punkt der Spiegelachse:",
"cmd.mirror.empty": "Nichts gewählt (erst Objekte wählen).",
"cmd.join.prompt": "Verbinde gewählte Elemente …",
"cmd.copy.label": "Kopieren",
"cmd.copy.base": "Basispunkt:",
"cmd.copy.target": "Zielpunkt (Enter beendet):",
"cmd.copy.empty": "Nichts gewählt (erst Objekte wählen).",
"cmd.offset.label": "Versatz",
"cmd.offset.pick": "Kurve wählen:",
"cmd.offset.side": "Seite oder Distanz:",
// Trim (Quick-Trim): auf den wegzuschneidenden Abschnitt klicken; wiederholend.
"cmd.trim.label": "Stutzen",
"cmd.trim.pick": "Abschnitt zum Wegschneiden anklicken (Esc beendet):",
// Editier-Werkzeuge Split / Join / Segment-Löschen (Tastatur: Ctrl+S / Ctrl+J /
// Alt+Klick). Labels für Befehlsleiste/Menüs.
"edit.split.label": "Teilen",
"edit.join.label": "Verbinden",
"edit.cutSegment.label": "Segment löschen",
// Tab-Feld-Zyklus (Präzisionseingabe): geordnete Zahlenfelder je Schritt.
"cmd.field.length": "Länge",
"cmd.field.angle": "Winkel",
"cmd.field.width": "Breite",
"cmd.field.height": "Höhe",
"cmd.field.radius": "Radius",
"cmd.field.distance": "Distanz",
"cmd.field.thickness": "Dicke",
"cmd.edit.point": "Griff ziehen (Tab: Länge/Winkel):",
// ── Befehle: Import / Gelände ────────────────────────────────────────────
"cmd.import.label": "Importieren",
"cmd.import.prompt": "DXF-Datei wählen …",
"cmd.terrain.label": "Gelände",
"cmd.terrain.prompt": "Gelände aus Konturen erzeugen …",
// ── Flächenbilanz (SIA 416) ──────────────────────────────────────────────
"nav.roomBalance": "Flächenbilanz",
"balance.title": "Flächenbilanz (SIA 416)",
"balance.rooms": "Räume",
"balance.summary": "Bilanz",
"balance.export": "CSV exportieren",
"balance.empty": "Keine Räume vorhanden. Mit dem Raum-Werkzeug erstellen.",
// ── Raum-Stempel-Editor ──────────────────────────────────────────────────
"room.stamp.editTitle": "Raum-Stempel bearbeiten",
"room.stamp.close": "Schliessen",
// ── Site-/Kontext-Panel (SitePanel) ──────────────────────────────────────
"nav.site": "Gelände",
"site.title": "Gelände & Kontext",
"site.import": "⤓ DXF importieren",
"site.generateTerrain": "Gelände erzeugen",
"site.contourSet": "Kontur-Satz",
"site.empty": "Kein Kontext geladen. Importiere eine DXF-Datei (Höhenlinien oder Mesh).",
"site.delete": "Entfernen",
"site.type.mesh": "Mesh",
"site.type.contours": "Konturen",
"site.type.terrain": "Gelände",
"site.dwgHint": "DWG? Zuerst mit dem gratis ODA File Converter in DXF umwandeln.",
"site.terrainFailed": "Kein Gelände erzeugbar (zu wenige/kollineare Konturpunkte).",
// ── Import-Dialog (ImportDialog) ─────────────────────────────────────────
"import.title": "DXF importieren",
"import.close": "Schließen",
"import.file": "Datei",
"import.summary.heading": "Inhalt",
"import.summary.contours": "{n} Konturen",
"import.summary.meshes": "{n} Meshes",
"import.summary.layers": "Layer: {layers}",
"import.summary.noLayers": "keine Layer-Namen",
"import.summary.empty": "Keine importierbare 2D-Geometrie gefunden.",
"import.target.heading": "Ziel-Zeichnungsebene",
"import.target.existing": "In bestehende Zeichnungsebene importieren",
"import.target.new": "Neue Zeichnung anlegen",
"import.target.newNamePlaceholder": "Name der neuen Zeichnung",
"import.layers.heading": "Ebenen-Handling (DXF-Layer)",
"import.layers.asCategories": "DXF-Layer als Kategorien übernehmen",
"import.layers.toActive": "Alles auf die aktive Kategorie ({code})",
"import.mesh.heading": "Meshes",
"import.mesh.asContext": "Meshes als Kontext-Geometrie (3D) importieren",
"import.mesh.note": "Meshes sind keine 2D-Zeichnung — sie landen in der Kontext-Schicht.",
"import.dwg.heading": "DWG-Datei",
"import.dwg.loading": "DWG wird gelesen …",
"import.dwg.hint":
"DWG konnte nicht gelesen werden. Wandle die Datei alternativ mit dem gratis ODA File Converter in DXF um und importiere die DXF-Datei.",
"import.confirm": "Importieren",
"import.cancel": "Abbrechen",
"import.badge.floor": "Geschoss",
"import.badge.section": "Schnitt",
"import.badge.elevation": "Ansicht",
"import.badge.drawing": "Zeichnung",
// ── PDF-Export ───────────────────────────────────────────────────────────
"export.title": "PDF exportieren",
"export.close": "Schließen",
"export.plan": "Plan",
"export.scale": "Massstab",
"export.paper": "Papierformat",
"export.orientation": "Ausrichtung",
"export.orientation.portrait": "Hochformat",
"export.orientation.landscape": "Querformat",
"export.warnFit":
"Der Plan passt im gewählten Massstab nicht ganz auf das Blatt — größeres Format oder kleineren Massstab wählen.",
"export.confirm": "Exportieren",
"export.cancel": "Abbrechen",
// ── DXF-Export ───────────────────────────────────────────────────────────
"exportDxf.title": "DXF exportieren",
"exportDxf.hatches": "Schraffuren",
"exportDxf.hatches.yes": "Mitexportieren",
"exportDxf.hatches.no": "Nur Umrisse",
"exportDxf.unitsNote":
"Modell-Space in Metern (1:1). Layer entsprechen den Ebenen des Projekts; beim Plot beliebig skalierbar.",
// ── Drag & Drop (App-weiter Datei-Drop) ──────────────────────────────────
"drop.hint": "DXF/DWG-Datei hier ablegen",
// ── Fehler-Boundary ──────────────────────────────────────────────────────
"error.console": "Unerwarteter Fehler:",
"error.title": "Etwas ist schiefgelaufen",
"error.body": "Ein unerwarteter Fehler ist aufgetreten. Details in der Konsole.",
"error.reload": "Neu laden",
// ── Standort-Import (geo.admin / OSM) ─────────────────────────────────────
"site.importLocation": "Standort importieren",
"ctxImport.title": "Standort importieren",
"ctxImport.close": "Schließen",
"ctxImport.location": "Ort / Adresse",
"ctxImport.searchPlaceholder": "z. B. Bundesplatz Bern",
"ctxImport.search": "Suchen",
"ctxImport.searching": "Suche…",
"ctxImport.noResults": "Keine Treffer.",
"ctxImport.searchError": "Suche fehlgeschlagen.",
"ctxImport.radius": "Radius",
"ctxImport.sources": "Quellen",
"ctxImport.src.swissBuildings": "Swisstopo-Gebäude",
"ctxImport.src.osmBuildings": "OSM-Gebäude",
"ctxImport.src.osmRoads": "OSM-Strassen",
"ctxImport.src.osmWater": "OSM-Wasser",
"ctxImport.src.osmGreen": "OSM-Grün",
"ctxImport.cancel": "Abbrechen",
"ctxImport.confirm": "Importieren",
"ctxImport.importing": "Importiere…",
"ctxImport.working": "Lade Geodaten…",
"ctxImport.empty": "Keine Geometrie im gewählten Bereich gefunden.",
"ctxImport.importError": "Import fehlgeschlagen.",
"ctxImport.imported": "{count} Objekte in {sets} Sätzen importiert.",
// ── Raum-Befehl ─────────────────────────────────────────────────────────────
"cmd.room.label": "Raum",
"cmd.room.mode": "Modus",
"cmd.room.inside": "Klick in Raum setzen:",
"cmd.room.first": "Ersten Raumpunkt setzen:",
"cmd.room.next": "Nächsten Punkt setzen ( Enter/Start schließt ):",
// ── Text-Gruppe (Oberleiste) ─────────────────────────────────────────────
"text.group": "Text",
"text.style": "Stil",
"text.style.none": "— Stil —",
"text.font": "Schrift",
"text.size": "Grösse",
"text.size.custom": "Eigene …",
"text.size.customPrompt": "Schriftgrösse in pt:",
"text.bold": "Fett",
"text.italic": "Kursiv",
"text.underline": "Unterstrichen",
"text.align.left": "Linksbündig",
"text.align.center": "Zentriert",
"text.align.right": "Rechtsbündig",
"text.add": "Text",
"text.add.hint": "Text-Werkzeug — neuen Text platzieren (bald verfügbar)",
"text.editTitle": "Text bearbeiten",
"text.apply": "Übernehmen",
"text.cancel": "Abbrechen",
"roomStamp.title": "Raumstempel bearbeiten",
"roomStamp.number": "Raumnummer",
"roomStamp.name": "Raumname",
"roomStamp.nameLine2": "Raumname Zeile 2",
"roomStamp.showFloorArea": "Bodenfläche anzeigen",
"roomStamp.floorAreaPrefix": "Präfix Bodenfläche",
"roomStamp.showUsage": "Nutzung anzeigen",
"text.selectedHint": "Formatierung wirkt auf den ausgewählten Text",
// ── Rich-Text-Editor ────────────────────────────────────────────────────────
"rt.bold": "Fett",
"rt.italic": "Kursiv",
"rt.underline": "Unterstrichen",
"rt.strike": "Durchgestrichen",
"rt.strikethrough": "Durchgestrichen",
"rt.fontSize": "Schriftgrösse",
"rt.color": "Farbe",
"rt.preset": "Vorlage",
"rt.preset.none": "— Vorlage —",
// ── 3D-Viewport (native Engine, WASM/WebGPU) ────────────────────────────────
"viewport3d.engineUnavailable": "3D-Engine nicht verfügbar",
"viewport3d.engineUnavailableHint":
"WebGPU konnte nicht initialisiert werden. In der Statusleiste auf WebGL2 umschalten, um die 3D-Ansicht weiter zu nutzen.",
} as const;
export type TranslationKey = keyof typeof de;