velxio/frontend/src/i18n/locales/en/common2.json

400 lines
17 KiB
JSON

{
"editor": {
"toolbar": {
"languageMode": "Language mode",
"compile": {
"addBoard": "Add a board to compile",
"loading": "Loading…",
"loadMicropython": "Load MicroPython",
"compile": "Compile (Ctrl+B)"
},
"run": {
"addBoard": "Add a board to run",
"runMicropython": "Run MicroPython",
"run": "Run (auto-compiles if needed)"
},
"stop": "Stop",
"reset": "Reset",
"compileAll": "Compile all boards",
"runAll": "Run all boards",
"libraries": {
"title": "Search and install Arduino libraries",
"label": "Libraries"
},
"import": "Import project (.vlx Velxio or .zip Wokwi)",
"export": "Export the current project as a .zip file",
"uploadFirmware": "Upload firmware (.hex, .bin, .elf, .ihex) to bypass compilation",
"toggleConsole": "Toggle Output Console",
"libHint": {
"message": "Missing library? Install it from the",
"cta": "Library Manager",
"dismiss": "Dismiss"
},
"exportBom": "Export Bill of Materials (CSV — Pro)"
},
"fileExplorer": {
"workspace": "WORKSPACE",
"newWorkspace": "New workspace (clears boards, components, wires and files)",
"saveProject": "Save project (Ctrl+S)",
"clickToEdit": "click to edit",
"collapse": "Collapse",
"expand": "Expand",
"newFileInBoard": "New file in this board",
"unsavedChanges": "Unsaved changes",
"unsavedSuffix": "unsaved",
"emptyState": "Add a board to the canvas to start editing code.",
"confirmDelete": "Delete this file?",
"status": {
"running": "Running",
"compiled": "Compiled",
"idle": "Idle"
},
"contextMenu": {
"rename": "Rename",
"delete": "Delete"
}
},
"fileTabs": {
"unsavedChanges": "Unsaved changes",
"close": "Close",
"confirmClose": "Close file with unsaved changes?",
"closeAnyway": "Close anyway",
"cancel": "Cancel"
},
"loginPrompt": {
"title": "Sign in to save your project",
"body": "Create a free account to save and share your projects.",
"createAccount": "Create account",
"cancel": "Cancel"
},
"saveProject": {
"titleSave": "Save project",
"titleUpdate": "Update project",
"nameLabel": "Project name *",
"namePlaceholder": "My awesome project",
"descriptionLabel": "Description",
"descriptionPlaceholder": "Optional",
"save": "Save",
"update": "Update",
"saving": "Saving…",
"cancel": "Cancel",
"visibility": {
"public": "Public",
"publicHint": "Anyone with the link can view",
"private": "Private",
"privateHint": "Only you can see this"
},
"errors": {
"nameRequired": "Project name is required.",
"unreachable": "Server unreachable. Check your connection and try again.",
"notAuth": "Not authenticated. Please log in and try again.",
"failedStatus": "Save failed ({{status}})."
}
},
"share": {
"title": "Share project",
"public": "Public",
"private": "Private",
"publicHint": "Anyone with the link can view this project",
"privateHint": "Only you can see this project",
"makePrivate": "Make private",
"makePublic": "Make public",
"copy": "Copy",
"privateWarning": "This project is private. Others will see a 403 error when opening this link.",
"close": "Close"
},
"canvas": {
"status": {
"running": "Running",
"stopped": "Stopped"
},
"activeBoard": "Active board",
"noBoard": "No board",
"noBoardHint": "No board on canvas — add one with the Add button to compile and run code",
"undo": {
"label": "Undo",
"title": "Undo: {{description}} (Ctrl+Z)",
"empty": "Nothing to undo"
},
"redo": {
"label": "Redo",
"title": "Redo: {{description}} (Ctrl+Y)",
"empty": "Nothing to redo"
},
"toggleSerialMonitor": "Toggle Serial Monitor",
"serial": "Serial",
"toggleScope": "Toggle Oscilloscope / Logic Analyzer",
"scope": "Scope",
"zoomIn": "Zoom in",
"zoomOut": "Zoom out",
"resetView": "Reset view (click to reset)",
"componentCount_one": "{{count}} component",
"componentCount_other": "{{count}} components",
"addComponentTitle": "Add Component",
"add": "Add",
"dismiss": "Dismiss",
"removeBoard": "Remove board",
"wireCount_one": "{{count}} wire",
"wireCount_other": "{{count}} wires",
"removeConfirm": {
"boardFallback": "Board",
"title": "Remove {{label}}?",
"body": "This will remove the board from the workspace. This action cannot be undone.",
"bodyWithWires_one": "This will remove the board from the workspace and {{count}} connected wire. This action cannot be undone.",
"bodyWithWires_other": "This will remove the board from the workspace and {{count}} connected wires. This action cannot be undone.",
"cancel": "Cancel",
"remove": "Remove"
}
},
"componentPicker": {
"title": "Add Component",
"close": "Close",
"searchPlaceholder": "Search components...",
"clearSearch": "Clear search",
"allComponents": "All Components",
"boards": "Boards",
"loading": "Loading components...",
"noResults": "No components found",
"clearFilters": "Clear filters"
},
"libraryManager": {
"title": "LIBRARY MANAGER",
"searchTab": "Search",
"installedTab": "Installed",
"filterPlaceholder": "Filter your search...",
"searchingFor": "Searching \"{{query}}\"…",
"loadingLibraries": "Loading libraries…",
"noResults": "No libraries available",
"noResultsFor": "No libraries found for \"{{query}}\"",
"byAuthor": "by {{author}}",
"install": "INSTALL",
"installing": "Installing...",
"uninstall": "UNINSTALL",
"uninstalling": "Uninstalling...",
"loadingInstalled": "Loading installed libraries...",
"noneInstalled": "No libraries installed yet.",
"useSearchTab": "Use the Search tab to install libraries."
},
"installLibs": {
"title": "REQUIRED LIBRARIES",
"installingProgress": "Installing {{done}} of {{total}}…",
"allDone": "All libraries installed successfully",
"required_one": "This project requires {{count}} library. Install it to compile correctly.",
"required_other": "This project requires {{count}} libraries. Install them to compile correctly.",
"wokwiHosted": "Wokwi-hosted library",
"pending": "pending",
"installing": "installing…",
"installed": "installed",
"errorStatus": "error",
"close": "Close",
"skip": "Skip",
"installAll": "Install All ({{count}})",
"installingShort": "Installing…"
},
"shell": {
"code": "Code",
"both": "Both",
"circuit": "Circuit",
"showExplorer": "Show file explorer",
"hideExplorer": "Hide file explorer",
"viewMode": "View mode",
"dragResize": "Drag to resize"
},
"oscilloscope": {
"title": "Oscilloscope",
"addChannelTitle": "Add a pin channel",
"addChannel": "Add Channel",
"timeDiv": "Time/div:",
"pauseTitle": "Pause capture",
"resumeTitle": "Resume capture",
"pause": "Pause",
"run": "Run",
"clearTitle": "Clear all captured samples",
"clear": "Clear",
"noChannels": "No channels added.",
"noChannelsHint": "Click \"+ Add Channel\" to monitor a pin.",
"removeChannel": "Remove {{label}}"
},
"componentProps": {
"close": "Close",
"tapToConnect": "Tap a pin to connect:",
"tapToWire": "Tap a pin to wire:",
"pinRoles": "Pin Roles:",
"arduinoPin": "Arduino Pin:",
"confirmDelete": "Delete {{name}}?",
"confirmDeleteTitle": "Confirm delete",
"deleteTitle": "Delete component",
"rotate90": "Rotate 90°",
"rotate": "Rotate",
"delete": "Delete",
"cancel": "Cancel"
},
"selectionBar": {
"label": "Selection actions",
"rotate90": "Rotate 90°",
"rotate": "Rotate",
"delete": "Delete",
"deselect": "Deselect",
"changeColor": "Change color",
"deleteKind": {
"wire": "Delete wire",
"component": "Delete component",
"board": "Delete board"
}
},
"console": {
"title": "Output",
"errorCount_one": "{{count}} error",
"errorCount_other": "{{count}} errors",
"warningCount_one": "{{count}} warning",
"warningCount_other": "{{count}} warnings",
"filterAll": "All",
"filterErrors": "Errors",
"filterWarnings": "Warnings",
"auto": "Auto",
"clear": "Clear output",
"close": "Close",
"empty": "No compilation output yet. Click Compile to start."
},
"boardPicker": {
"title": "Add Board"
},
"pinPicker": {
"close": "Close",
"filterPins": "Filter pins…",
"noMatch": "No pins match.",
"rotate": "Rotate",
"delete": "Delete"
},
"pi": {
"connected": "Connected",
"starting": "Starting…",
"offline": "Offline",
"powerOnTitle": "Power on the Raspberry Pi",
"startPi": "Start Pi",
"connectTitle": "Connect terminal to Pi",
"connect": "Connect",
"disconnectTitle": "Disconnect terminal",
"disconnect": "Disconnect",
"terminal": "Terminal",
"close": "Close",
"offlineTitle": "Raspberry Pi 3B is powered off",
"offlineSubtitle": "Start the Pi to open a terminal and interact with the Linux system.",
"offlineNote1": "Note: The file explorer shows a staging area.",
"offlineNote2": "Use \"Upload to Pi\" after starting to transfer files to the running Pi.",
"loadingTerminal": "Loading terminal…",
"selectFile": "Select a file from the explorer to edit it."
},
"sensorPanel": {
"close": "Close"
},
"customChip": {
"title": "Custom Chip — {{chipName}}",
"tabExamples": "Examples",
"tabEditor": "Editor",
"attributes": "Attributes",
"compiling": "Compiling…",
"compile": "Compile",
"compiledOk": "✓ Compiled — {{kb}} KB",
"compileFailed": "Compile failed",
"cancel": "Cancel",
"savePlace": "Save & Place",
"compileFirst": "Compile first"
},
"serial": {
"title": "Serial Monitor",
"addBoard": "Add a board to start the serial monitor.",
"autoscroll": "Autoscroll",
"clearTitle": "Clear output for this board",
"clear": "Clear",
"send": "Send",
"iotGatewayTitle": "Click to open through IoT Gateway",
"openIotGateway": "Open IoT Gateway",
"waitingData": "Waiting for serial data...",
"startSim": "Start simulation to see serial output.",
"placeholderText": "Type message to send...",
"placeholderPython": "Type Python expression... (Ctrl+C to interrupt)",
"lineEnd": {
"none": "No line ending",
"nl": "Newline",
"cr": "Carriage return",
"both": "Both NL & CR"
}
}
},
"about": {
"hero": {
"title": "About Velxio",
"subtitle": "A free, open-source embedded systems emulator — built by a single developer with a passion for hardware and open source."
},
"story": {
"heading": "The Story",
"p1": "Velxio started as a personal exploration into how microcontroller emulators work internally — CPU instructions, memory management, peripheral timing, and low-level architecture. What began as a learning project during a vacation quickly grew into something bigger.",
"p2": "The idea was simple: <strong>what if anyone could simulate Arduino, ESP32, and Raspberry Pi boards directly in the browser, without buying hardware, without installing toolchains, without cloud accounts?</strong>",
"p3": "Velxio v1 launched on Product Hunt and Hacker News, supporting Arduino Uno and Raspberry Pi Pico. The feedback from the maker and embedded community was incredible — and it pushed the project forward.",
"p4": "<strong>Velxio 2.0</strong> shipped with ESP32 emulation via QEMU (using the lcgamboa fork), a Raspberry Pi 3 running real Linux, RISC-V support for ESP32-C3 and CH32V003, realistic sensor simulation (DHT22, HC-SR04, WS2812B NeoPixel), and 19 boards across 5 CPU architectures — all running real compiled code.",
"p5": "The v2 launch hit the <strong>front page of Hacker News for over 20 hours</strong>, reaching nearly 600 GitHub stars and thousands of visitors in less than 24 hours. It's now being used by students, professors, and makers around the world."
},
"howItWorks": {
"heading": "How It Works",
"avrRp2040Body": "Cycle-accurate emulation runs entirely in your browser using avr8js and rp2040js. No backend needed for simulation.",
"esp32Body": "Xtensa ESP32 and ESP32-S3 run on backend QEMU (lcgamboa fork) with real flash images, GPIO, ADC, and timers.",
"riscvBody": "ESP32-C3 (DevKit, XIAO, SuperMini) and CH32V003 are emulated through the QEMU lcgamboa fork with libqemu-riscv32, the same backend pattern as Xtensa ESP32.",
"raspiBody": "Full ARM Cortex-A53 Linux via QEMU raspi3b — boots real Raspberry Pi OS and runs Python with RPi.GPIO."
},
"openSource": {
"heading": "Open Source Philosophy",
"lead": "Velxio is <strong>100% open source</strong> under the AGPLv3 license. No cloud dependency, no student accounts, no data leaving your network. Universities and bootcamps can deploy it on their own servers with a single Docker command and give every student access to a complete embedded development environment — for free.",
"creditsIntro": "The project builds on top of amazing open-source work from the community:",
"credits": {
"avr8js": "AVR8 CPU emulation by Wokwi",
"rp2040js": "RP2040 emulation by Wokwi",
"wokwiElements": "48+ visual electronic components by Wokwi",
"qemuLcgamboa": "ESP32 and Raspberry Pi QEMU emulation",
"arduinoCli": "Arduino compilation toolchain"
},
"inspiredBy": "Velxio was inspired by <a>Wokwi</a>, which is a fantastic tool. The goal of Velxio is to take a different path: fully open source, self-hostable, and supporting multiple heterogeneous boards in the same circuit."
},
"creator": {
"heading": "The Creator",
"role": "Application Architect @ IBM · Montevideo, Uruguay",
"bio1": "Application Architect with over 10 years of experience leading the development of large-scale enterprise ecosystems. Specialist in Generative AI (LLMs, RAG, LangChain), Cloud-Native architectures (OpenShift, Kubernetes), and certified Odoo ERP expert. Currently at IBM working on enterprise applications for the Uruguayan State Insurance Bank (BSE).",
"bio2": "Studied Computer Science Engineering at Universidad de Oriente in Cuba (2012-2017), then moved to Uruguay where he built a career spanning roles at Quanam (Odoo implementations for government institutions), and IBM (enterprise architecture for BPS and BSE).",
"bio3": "Programming and robotics enthusiast. Creator of other open-source projects including a <a>3D racing game running on an ESP32</a> (viral on Reddit with 40K+ views) and an iPod Classic clone for Raspberry Pi.",
"techStack": "Tech Stack"
},
"releases": {
"heading": "Recent releases",
"latest": "Latest",
"v25Tagline": "Arduino meets SPICE in your browser",
"v25Blurb": "Real-time analog circuit simulation via ngspice-WASM, wired to Arduino, ESP32 and Raspberry Pi Pico. 100+ SPICE-accurate components, live ammeters and voltmeters, 40 new analog/hybrid examples — co-simulated with your firmware.",
"v2Tagline": "Multi-board canvas, ESP32, Raspberry Pi 3",
"v2Blurb": "Full QEMU-driven ESP32 emulation with WiFi/BLE, Raspberry Pi 3B Linux, MicroPython support across Pico/ESP32, custom WASM chips, and a redesigned canvas with multi-board co-simulation.",
"readNotes": "Read the launch notes →"
},
"quote": {
"p1": "\"I studied Computer Science in Cuba from 2012 to 2017, and when I moved to Uruguay, the most common question was: <em>'How did you graduate as an engineer without internet, without a computer, without YouTube?'</em>",
"p2": "I only had 4 words for the answer: <strong>Perseverance! Perseverance! Perseverance! Perseverance!</strong>",
"p3": "There is no better motivation than not having a plan B.\""
},
"community": {
"heading": "Community & Press",
"stats": {
"githubStars": "GitHub Stars",
"countries": "Countries",
"supportedBoards": "Supported Boards",
"cpuArchitectures": "CPU Architectures"
},
"featuredOn": "Featured on:",
"press": {
"hackerNews": "Hacker News (Front Page)"
}
},
"cta": {
"title": "Ready to try Velxio?",
"subtitle": "No signup required. Runs 100% in your browser. Free and open source.",
"openEditor": "Open Editor"
}
}
}