export default {
  "theme.dark": "Dark Theme",
  "theme.light": "Light Theme",
  "theme.toggleTitle": "Toggle light / dark mode",
  "theme.toggleAriaLabel": "Toggle light/dark mode",
  "dropHint.text": "Drop an <strong>.stl</strong>, <strong>.obj</strong> or <strong>.3mf</strong> file here<br/>or <label for=\"stl-file-input\" class=\"link-label\">click to browse</label>",
  "ui.wireframe": "Wireframe",
  "ui.perspective": "Perspective View",
  "ui.controlsHint": "Left drag: orbit  ·  Right drag: pan  ·  Scroll: zoom",
  "ui.meshInfo": "{n} triangles · {mb} MB · {sx} × {sy} × {sz} mm",
  "ui.loadStl": "Load Model…",
  "ui.localProcessingNote": "All processing runs locally in your browser — no data is uploaded.",
  "sections.displacementMap": "Displacement Map",
  "ui.uploadCustomMap": "Upload custom map",
  "ui.noMapSelected": "No map selected",
  "sections.projection": "Projection",
  "labels.mode": "Mode",
  "projection.triplanar": "Triplanar",
  "projection.cubic": "Cubic (Box)",
  "projection.cylindrical": "Cylindrical",
  "projection.spherical": "Spherical",
  "projection.planarXY": "Planar XY",
  "projection.planarXZ": "Planar XZ",
  "projection.planarYZ": "Planar YZ",
  "sections.transform": "Transform",
  "labels.scaleU": "Scale U",
  "labels.scaleV": "Scale V",
  "labels.offsetU": "Offset U",
  "labels.offsetV": "Offset V",
  "labels.rotation": "Rotation",
  "tooltips.proportionalScaling": "Proportional scaling (U = V)",
  "tooltips.proportionalScalingAria": "Proportional scaling (U = V)",
  "sections.displacement": "Texture Depth",
  "labels.amplitude": "Amplitude",
  "labels.seamBlend": "Seam Blend ⓘ",
  "tooltips.seamBlend": "Softens the hard seam where projection faces meet. Effective for Cubic and Cylindrical modes.",
  "labels.transitionSmoothing": "Transition Smoothing ⓘ",
  "tooltips.transitionSmoothing": "Width of the blending zone near seam edges. Lower values keep transitions tight to the seam; higher values blend a wider band.",
  "labels.textureSmoothing": "Texture Smoothing ⓘ",
  "tooltips.textureSmoothing": "Applies a Gaussian blur to the displacement map. Higher values produce softer, more gradual surface detail. 0 = off.",
  "labels.capAngle": "Cap Angle ⓘ",
  "tooltips.capAngle": "Angle (in degrees) from vertical at which the top/bottom cap projection kicks in. Smaller values limit cap projection to nearly flat faces.",
  "sections.masking": "Masking",
  "sections.maskAngles": "By Angle ⓘ",
  "tooltips.maskAngles": "0° = no masking. Surfaces within this angle of horizontal will not be textured.",
  "labels.bottomFaces": "Bottom faces",
  "tooltips.bottomFaces": "Suppress texture on downward-facing surfaces within this angle of horizontal",
  "labels.topFaces": "Top faces",
  "tooltips.topFaces": "Suppress texture on upward-facing surfaces within this angle of horizontal",
  "sections.surfaceMasking": "By Surface ⓘ",
  "sections.surfaceSelection": "Surface Selection",
  "tooltips.surfaceMasking": "Mask surfaces to control which areas receive displacement.",
  "tooltips.surfaceSelection": "Selected surfaces appear green and will be the only ones to receive displacement during export.",
  "excl.modeExclude": "Exclude",
  "excl.modeExcludeTitle": "Exclude mode: painted surfaces will not receive texture displacement",
  "excl.modeIncludeOnly": "Include Only",
  "excl.modeIncludeOnlyTitle": "Include Only mode: only painted surfaces will receive texture displacement",
  "excl.toolBrush": "Brush",
  "excl.toolBrushTitle": "Brush: paint triangles to exclude",
  "excl.toolFill": "Fill",
  "excl.toolFillTitle": "Bucket fill: flood-fill surface up to a threshold angle",
  "excl.shiftHint": "Hold Shift to erase",
  "labels.type": "Type",
  "brushType.single": "Single",
  "brushType.circle": "Circle",
  "labels.size": "Size",
  "labels.maxAngle": "Max angle",
  "tooltips.maxAngle": "Maximum dihedral angle between adjacent triangles for the fill to cross",
  "ui.clearAll": "Clear All",
  "excl.initExcluded": "0 faces masked",
  "excl.faceExcluded": "{n} face masked",
  "excl.facesExcluded": "{n} faces masked",
  "excl.faceSelected": "{n} face selected",
  "excl.facesSelected": "{n} faces selected",
  "excl.hintExclude": "Masked surfaces appear orange and will not receive displacement during export.",
  "excl.hintInclude": "Selected surfaces appear green and will be the only ones to receive displacement during export.",
  "precision.label": "Precision (Beta) ⓘ",
  "precision.labelTitle": "Subdivide mesh in the background so the brush selects at finer granularity",
  "precision.outdated": "⚠ Outdated",
  "precision.refreshTitle": "Re-subdivide mesh to match current brush size",
  "precision.triCount": "{n} △",
  "precision.refining": "Refining…",
  "precision.warningBody": "Estimated ~{n} triangles. This may slow down your browser. Continue?",
  "labels.boundaryFalloff": "Smooth Mask ⓘ",
  "tooltips.boundaryFalloff": "Gradually reduces displacement to zero near masked boundaries, preventing triangle overlap where textured and non-textured regions meet.",
  "labels.symmetricDisplacement": "Symmetric displacement ⓘ",
  "tooltips.symmetricDisplacement": "When on, 50% grey = no displacement; white pushes out, black pushes in. Keeps part volume roughly constant.",
  "labels.displacementPreview": "3D Preview ⓘ",
  "tooltips.displacementPreview": "Subdivides the mesh and displaces vertices in real-time so you can judge the actual depth. GPU-intensive on complex models.",
  "ui.placeOnFace": "Place on Face",
  "ui.placeOnFaceTitle": "Click a face to orient it downward onto the print bed",
  "progress.subdividingPreview": "Preparing preview…",
  "warnings.amplitudeOverlap": "⚠ Amplitude exceeds 10% of the smallest model dimension — geometry overlaps may occur in the exported STL.",
  "sections.export": "Export ⓘ",
  "tooltips.export": "Smaller edge length = finer displacement detail. Output is then decimated to the triangle limit.",
  "labels.resolution": "Resolution",
  "tooltips.resolution": "Edges longer than this value will be split during export",
  "labels.outputTriangles": "Output Triangles",
  "tooltips.outputTriangles": "Mesh is fully subdivided first, then decimated down to this count",
  "warnings.safetyCapHit": "⚠ 20M-triangle safety cap hit during subdivision — result may still be coarser than requested edge length.",
  "ui.exportStl": "Export STL",
  "progress.subdividing": "Subdividing mesh…",
  "progress.refining": "Refining: {cur} triangles, longest edge {edge}",
  "progress.applyingDisplacement": "Applying displacement to {n} triangles…",
  "progress.displacingVertices": "Displacing vertices…",
  "progress.decimatingTo": "Simplifying {from} → {to} triangles…",
  "progress.decimating": "Simplifying: {cur} → {to} triangles",
  "progress.writingStl": "Writing STL…",
  "progress.done": "Done!",
  "progress.processing": "Processing…",
  "license.btn": "License & Terms",
  "license.title": "License & Terms",
  "license.item1": "Free to use for any purpose, including <strong>commercial work</strong> (e.g., texturing STLs for clients or products).",
  "license.item2": "Attribution is <strong>appreciated</strong> but <strong>not required</strong> when using this tool as-is.",
  "license.item3": "Support this tool? Shop at <a href=\"https://geni.us/CNCStoreTexture\" target=\"_blank\" rel=\"noopener\">CNCKitchen.STORE</a> or donate on <a href=\"https://www.paypal.me/CNCKitchen\" target=\"_blank\" rel=\"noopener\">PayPal</a>.",
  "license.item4": "This tool is provided <strong>as-is</strong> with <strong>no warranty</strong> of any kind. Use at your own risk.",
  "license.item5": "<strong>No support</strong> is provided. The author is under no obligation to fix bugs, answer questions, or update this tool. That said, bug reports and feature requests are always welcome at <a href=\"mailto:texturizer@cnckitchen.com\">texturizer@cnckitchen.com</a>.",
  "license.item6": "The author shall not be held <strong>liable</strong> for any damages, data loss, or issues arising from the use of this tool.",
  "license.item7": "Want to license or embed this tool for your own business or website? Contact us at <a href=\"mailto:contact@cnckitchen.com\">contact@cnckitchen.com</a>.",
  "license.item8": "Source code available on <a href=\"https://github.com/CNCKitchen/stlTexturizer\" target=\"_blank\" rel=\"noopener\">GitHub</a>.",
  "imprint.btn": "Imprint & Privacy",
  "imprint.title": "Imprint & Privacy Policy",
  "imprint.sectionImprint": "Imprint (Impressum)",
  "imprint.info": "CNC Kitchen<br>Stefan Hermann<br>Bahnhofstr. 2<br>88145 Hergatz<br>Germany",
  "imprint.contact": "Email: <a href=\"mailto:contact@cnckitchen.com\">contact@cnckitchen.com</a><br>Phone: +49 175 2011824<br><em>The phone number is for legal/business inquiries only — not for support.</em>",
  "imprint.odr": "EU Online Dispute Resolution platform: <a href=\"https://ec.europa.eu/consumers/odr\" target=\"_blank\" rel=\"noopener\">https://ec.europa.eu/consumers/odr</a>",
  "imprint.sectionPrivacy": "Privacy Policy (Datenschutzerklärung)",
  "imprint.privacyIntro": "<strong>Responsible party</strong> (Verantwortlicher gem. Art. 4 Abs. 7 DSGVO): Stefan Hermann, Bahnhofstr. 2, 88145 Hergatz, Germany.",
  "imprint.privacyHosting": "This website is hosted on <strong>GitHub Pages</strong> (GitHub Inc. / Microsoft Corp., 88 Colin P Kelly Jr St, San Francisco, CA 94107, USA). When you visit this site, GitHub may process your IP address in server logs. Legal basis: Art. 6(1)(f) DSGVO (legitimate interest in providing the website). See <a href=\"https://docs.github.com/en/site-policy/privacy-policies/github-general-privacy-statement\" target=\"_blank\" rel=\"noopener\">GitHub’s Privacy Statement</a>.",
  "imprint.privacyLocal": "This tool stores user preferences (language, theme) in your browser’s <strong>localStorage</strong>. This data never leaves your device and is not transmitted to any server.",
  "imprint.privacyNoCookies": "This website does <strong>not</strong> use cookies, analytics, or any tracking technologies.",
  "imprint.privacyExternal": "This site contains links to external websites (e.g., CNCKitchen.STORE, PayPal). These sites have their own privacy policies, over which we have no control.",
  "imprint.privacyRights": "Under the GDPR you have the right to <strong>access, rectification, erasure, restriction of processing, data portability</strong>, and the right to <strong>lodge a complaint</strong> with a supervisory authority.",
  "sponsor.title": "Thanks for using BumpMesh by CNC Kitchen!",
  "sponsor.body": "This tool is provided <strong>completely free</strong> by CNC Kitchen.<br>While your STL is being processed, why not check out the store that helps us keep making cool stuff for you?",
  "sponsor.visitStore": "🛒 Visit CNCKitchen.STORE",
  "sponsor.donate": "💙 Donate on PayPal",
  "sponsor.dontShow": "Don’t show this again",
  "sponsor.closeAndContinue": "Close &amp; Continue",
  "cta.store": "Support this tool? Shop at <a href=\"https://geni.us/CNCStoreTexture\" target=\"_blank\" rel=\"noopener noreferrer\">CNCKitchen.STORE</a> or donate on <a href=\"https://www.paypal.me/CNCKitchen\" target=\"_blank\" rel=\"noopener noreferrer\">PayPal</a>",
  "cta.storeDismiss": "Dismiss",
  "alerts.loadFailed": "Could not load model: {msg}",
  "alerts.exportFailed": "Export failed: {msg}",
  "alerts.fileTooLarge": "File too large ({size} MB). Maximum: {max} MB."
};
