mirror of
https://github.com/CNCKitchen/stlTexturizer.git
synced 2026-04-07 22:11:32 +00:00
146 lines
11 KiB
JavaScript
146 lines
11 KiB
JavaScript
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 & 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."
|
||
};
|