diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..e2870ca --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,15 @@ +name: Release Webhook +on: + release: + types: [published] +jobs: + notify: + runs-on: ubuntu-latest + steps: + - name: Send POST request + run: | + curl -X POST -H "Content-Type: application/json" \ + -d "{\"appId\": \"$APP_ID\", \"releaseId\": \"${{ github.event.release.id }}\", \"repository\": \"${{ github.repository }}\", \"owner\": \"${{ github.event.repository.owner.login }}\"}" $WEBHOOK_URL + env: + WEBHOOK_URL: ${{ secrets.WEBHOOK_URL }} + APP_ID: ${{ secrets.APP_ID }} diff --git a/CHANGELOG.md b/CHANGELOG.md index f3b5f75..02467af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,42 +1,520 @@ +### Version 4.1.0 - 07 July 2026 +- Added a custom provider option to the AI assistant +- Added an option to control npm install scripts +- Upgraded Node.js to 24.17.0 +- Upgraded Chromium to 150 +- Upgraded V8 to 15.0 +- Fixed an npm caching issue +- Fixed an issue where string literals at the top of a file were not shown in the output + +### Version 4.0.6 - 08 June 2026 +- Improve formatting for copied output results. +- Resolve issues with stale logpoints being persisted. + +### Version 4.0.5 - 24 May 2026 +- Show getter values for side-effect free getters. +- Improve console output performance for large data sets. + +### Version 4.0.4 - 05 May 2026 +- Fix a Linux build issue +- Ensure npm has Node in PATH +- Make web view focusable +- Fix issue with unclickable dialog buttons on Linux + +### Version 4.0.2 - 30 April 2026 +- Fix an issue with mode switching when Vim keys are enabled. +- Fix an issue that prevented Node types from being resolved by the language server. + +### Version 4.0.1 - 29 April 2026 +- Updated app icon for macOS with support for liquid glass. + +### Version 4.0.0 - 28 April 2026 +- Added dedicated runtime environments for Browser & Node.js (default), Node.js only, or Browser only on a per-tab basis. +- Added a web view in the output panel for browser-enabled environments. +- Added a new status bar for switching runtime environment, toggling the web view, and changing the tab language between TypeScript, JavaScript, TSX, and JSX. +- Added log points, which adds the ability to click the gutter next to any line to log its value in the output panel. +- Rebuilt the output panel for improved performance, with line numbers shown next to each result and hover-to-highlight in the editor. +- Settings options have been reorganised and a new 'Editor' tab has been added. +- Added a new shortcut to show lint error tooltips: Cmd+F1 on macOS, Ctrl+F1 on Windows and Linux. +- Added a new shortcut to show hover info tooltips: F1 on all platforms. +- Fixed an issue where AI chat could produce blank responses. +- Upgraded Node.js to version 24.14.1. +- Upgraded Chromium to version 146. +- Upgraded V8 to version 14.6. + +### Version 3.2.2 - 12 October 2025 +- Fix performance issues on macOS Tahoe. + +### Version 3.2.1 - 05 October 2025 +- Improve handling of small font sizes in AI chat input. + +### Version 3.2.0 - 28 September 2025 +- Added support for multiple AI providers. +- Improved NPM configuration via settings. +- Added an option for font ligatures. +- Setting a working directory now loads environment variables from .env files. +- Fixed an issue where files dropped in the editor were displayed in the current tab instead of opening in a new tab. +- Improved support for adjustable font sizes in the editor and sidebar. +- Improved UI for the snippets window. +- Added language support for Chinese and Japanese. +- Upgraded Node.js to version 22.17.0. +- Upgraded Chromium to version 138. +- Upgraded V8 to version 13.8. + +### Version 3.1.2 - 10 May 2025 +- Fix a backwards compatibility issue that affected people downgrading to older RunJS versions. + +### Version 3.1.1 - 29 April 2025 +- Fix an issue that affected searching for snippets + +### Version 3.1.0 - 20 April 2025 +- Add new Magic Comment feature +- Updated Open AI model list +- Improved AI context +- Add the ability to stop AI content generation +- New ColorCode theme +- Added an NPM Packages button to the activity bar +- Fixed an issue that caused values set via prompt() to be undefined +- Fixed an issue with cursor positioning in indented snippets +- Improved handling for tabs that have become unresponsive +- Improved formatting method +- Upgraded Node.js to version 20.16.0. +- Upgraded Chromium to version 128. +- Upgraded V8 to version 12.8. + +### Version 3.0.3 - 08 October 2024 +- AI chat - chat with Open AI models for code generation and questions. +- Improved support for top-level await. +- Added an activity bar. +- Added support for alert(), confirm() and prompt(). +- Various performance improvements. +- Increase hover delay for inline tooltips. +- Added icons to settings tabs. +- Improved support for installing native modules. +- Upgraded Node.js to version 20.15.1. +- Upgraded Chromium to version 126. +- Upgraded V8 to version 12.6. + +### Version 2.12.1 - 21 May 2024 +- Fix an issue that caused file content to be loaded twice when opening a file. + +### Version 2.12.0 - 24 April 2024 +- Improved support for ES modules +- Updated build options to move away from Babel naming conventions +- Tab titles now default to the first line of text within the associated editor +- Added the ability to import and export snippet libraries +- Added the ability to toggle syntax highlighting on output results +- Added a shortcut for displaying completion suggestions +- Rename the runtime values setting to expression results +- Line matching now appends values to lines if the source line is the same +- Deleting snippets now requires confirmation + +### Version 2.11.0 - 24 February 2024 +- Add ability to re-open closed tabs. +- Output context menu improvements. +- Change auto-save to occur on change instead of run. +- Improve handling of extra wide tooltips. +- Prevent pasting when closing a tab with the middle mouse click on Linux. +- Upgrade Node to 20.9.0. +- Upgrade Chromium to 122. +- Upgrade V8 to 12.2. + +### Version 2.10.1 - 20 December 2023 +- Add support for regular expression pattern modifiers plugin proposal. +- Add support for optional chaining assignment plugin proposal. +- Add tab context menu options for closing other tabs and closing tabs to the right. +- Add support for trailing commas in generic types. +- Improve handling for custom fonts. +- Support TypeScript version 5.2. +- Upgrade Node to version 18.16.1. +- Upgrade Chromium to version 116. +- Upgrade V8 to version 11.2. +- Various bug fixes. + +### Version 2.9.0 - 18 April 2023 +- Outdated NPM packages can now be updated. +- Fix an issue that caused the formatting settings to always display default values. +- Auto fold proto properties in output results. +- Upgraded Node to version 18.14.0. +- Upgraded Chromium to version 112. +- Upgraded V8 to version 11.2. +- Dropped support for Windows 7 and Windows 8. + +### Version 2.8.0 - 06 March 2023 + +- Add support for top-level await. +- Change the way auto-updates are handled. +- Rename Preferences to Settings. +- Fix a Prettier code formatting issue. +- Fix an issue that caused some system fonts to not appear in the font list. +- Fix an issue that could cause RunJS to open off-screen on Windows. +- Upgrade Node to 16.17.1. +- Upgrade Chromium to 108. +- Upgrade V8 to 10.8. + +### Version 2.7.5 - 26 January 2023 + +- Fix an issue that caused loop protection to always be enabled. +- Fix an issue that caused inconsistent positioning of some error messages. +- Fix an issue that caused some web requests to be blocked. +- Improvements to how prototypes are displayed in output results. +- Nested objects in output results are now auto-folded. +- Improvements to module scoping when setting a working directory. + +### Version 2.7.4 - 09 December 2022 + +- General improvements to error handling. +- Better handling of shortcuts when windows are open. +- Update TypeScript to version 4.9. +- Fix missing install button when importing mising packages. +- Fix an issue that caused tsserver to remain running after quitting. + +### Version 2.7.3 - 09 November 2022 + +- Make autocomplete case insensitive. +- Fix an issue that caused snippet suggestions not to appear when writing their full alias. +- Fix an issue that caused language services to fail for some Windows users. +- Remove support for deep links. + +### Version 2.7.1 - 05 October 2022 + +- Add cursor position placeholder to snippets +- Rename the "Transpilation" tab to "Build" +- Move the preference option for bundling from the advanced tab to the build tab +- Prompt to save when closing a tab that has previously been saved and now has unsaved changes +- Files can now be opened via drag and drop +- Improved guarding against infinite loops +- Added icons to the layout options in the view menu +- Added a helpful tooltip to the environment variables window +- Added a context menu to the burger menu on Windows +- Upgraded Node to version 16.16.0 +- Upgraded Chromium to version 106 +- Upgraded V8 to version 10.6 + +### Version 2.6.0 - 17 August 2022 + +- Added support for bundling to enable ESM imports +- Added Ayu theme +- Minor UI tweaks to snippets and environment variable windows +- Guard against pasting very large files +- Upgraded Node to 16.14.2 +- Upgraded Chromium to 102 +- Upgraded V8 to 10.2 + +### Version 2.5.1 - 05 July 2022 + +- Fix an issue that affected light theme icons. + +### Version 2.5.0 - 28 June 2022 + +- Add support for snippets. +- Some preference options now have tooltips to better explain their function. +- Autocomplete suggestions now have icons. +- Fixed an issue that could cause the menu to be unresponsive on Windows and Linux. +- Updated the naming for items in the Tools menu. + +### Version 2.4.1 - 25 May 2022 + +- Fix an issue with sync scrolling. + +### Version 2.4.0 - 24 May 2022 + +- Type information and relevant documentation can now be displayed on hover. +- Function signatures can now be displayed while typing. +- Added an option to confirm before closing a tab. +- Editor and output panes can now be scrolled synchronously. +- Windows and Linux have an updated UI with a more minimal appearance. +- Updated the way formatting options are managed. +- Added 'Stop' and 'Kill' items to the Action menu. +- Upgraded Node to version 16.13.2. +- Upgraded Chromium to version 100. +- Upgraded V8 to version 10. + +### Version 2.3.0 - 05 February 2022 + +- Output URLs can now be opened via cmd/ctrl-click. +- Added support for console.assert(). +- Added a shortcut and menu item for toggling block comments. +- Tabs can now be closed by clicking the middle mouse button. +- Fixed an issue with the comment shortcut not working on international keyboards. +- Fixed an issue that caused the save-as modal to appear when saving a newly opened file. +- Fixed an issue that could cause line duplication when formatting code. +- Improved the way system fonts are retrieved. +- Added support for Spanish. + +### Version 2.2.2 - 20 December 2021 + +- Add ability to set tab titles. +- Add icons to theme menu +- Remove need for restart from activation/deactivation. +- Move deactivation button to Manage License dialog. +- Upgraded Node to 16.9.1. +- Upgraded Chromium to 96. +- Upgraded V8 to 9.6. +- Numerous improvements for better performance and reliability. +- Opened files now appear in a new tab. +- Fixed an issue with find/replace. +- Fixed an issue that could cause tooltips not to appear. +- Improved syntax highlighting for TypeScript. +- Updated UI theme colours for greater consistency with macOS Monterey. +- Improved handling of large files. +- Improved handling of large output. +- Improved handling of escape characters in output. +- Windows builds are now signed. + +### Version 2.1.3 - 22 August 2021 + +- Fixed an issue with escaped line-breaks in output. +- Improved accuracy of line matching in some scenarios. +- Added more shortcuts for tab navigation. +- Fixed an issue that could cause language services to not start on +- Windows machines with spaces in the directory path. + +### Version 2.1.1 - 26 July 2021 + +- Fixed an issue that caused Intel mac users to be auto-updated onto an arm build + +### Version 2.1.0 - 24 July 2021 + +- Added ability to switch between horizontal and vertical layout. +- Added a new premium theme, One Dark. +- Added a preference option to hide the tab bar when only one tab is present. +- Upgraded Node to 14.16.0. +- Upgraded Chromium to 91. +- Upgraded V8 to 9.1. +- Optimised and improved the formatting method. +- Fixed output highlighting issues for symbols and regex. +- Fixed a language service disconnection issue. +- Fixed an issue that caused unnecessary re-runs when toggling Babel. +- Fixed an issue with toolbar height on macOS Big Sur. +- Added more shortcuts for navigating tabs. + +### Version 2.0.1 - 26 June 2021 + +- Fixed an issue that caused the preferences window to be clipped on Windows. +- Fixed an issue with importing local files. + +### Version 2.0.0 - 19 June 2021 + +- Added support for multiple tabs +- Added support for autocomplete +- Added support for type checking +- Added a new menu called Tools +- Moved NPM Package Management and Environment Variable Management under the new Tools menu +- Updated app icon +- Added two new themes - SynthWave '84 and Shades of Purple +- Made Babel presets configurable +- Added a new Babel plugin - plugin-proposal-async-do-expressions +- Changed the way transpiled code is shown - it can now be displayed in the main output pane +- Fixed an issue that caused internal packages to be accessible as imports +- Fixed an issue with multi-line template strings +- Fixed an issue with regex output styling + +### Version 1.15.1 - 11 April 2021 + +- Fix an issue that caused displaying output to be slow on Windows + +### Version 1.15.0 - 09 April 2021 + +- Increase accuracy of output +- Errors are no-longer shown in isolation - where appropriate +- Improved output for async and generator functions +- Proxies and Promises and no-longer displayed unwrapped in the output +- Maps and Sets now show values in the output +- Fixed an issue where NPM would fail to install packages for some users. +- Fixed an error that occurred when opening the About dialog on Linux. +- Updated V8 to version 8.9 +- Updated Node to version 14.16.0 +- Updated Chromium to version 89 + +### Version 1.14.1 - 25 February 2021 + +- Fix issue with opening menu windows on Windows. + +### Version 1.14.0 - 21 February 2021 + +- Add Apple M1 support +- Add builds for Linux ARMv7 and ARM64 +- Add support for console.clear() +- Core-js polyfills are no-longer included if Babel is disabled +- Fix issues with menus on first launch +- Update V8 to version 8.7 +- Update Node to version 12.18.3 +- Update Chromium to version 87 +- Fix issue #225 - output issue + +### Version 1.13.1 - 07 February 2021 + +- Fix issue #215 - unable to copy output text + +### Version 1.13.0 - 05 February 2021 + +- Add ability to stop execution of script +- Fix issue where focus would be lost when clicking on the title bar +- Fix issue where the RunJS window wouldn't re-opened when opening a file from the File menu +- Fix issue where errors from promises were not being displayed +- Fix issue where some fonts were mislabeled +- Refactored some core parts of RunJS for performance improvements + +### Version 1.12.2 - 08 November + +- Fix issue #193 - closure issue +- Fix issue with displaying objects with over 800 properties + +### Version 1.12.1 - 02 November + +- Fix code caching issue + +### Version 1.12.0 - 01 November 2020 + +- Add auto-scroll option +- Add ability to display instance properties and **proto** +- Add loading spinner to show when code is running +- Fix for bug that could cause duplicate output results to appear +- Fix for bug that caused searching for namespaced NPM packages to fail +- Fix for bug that caused removed environment variables to still be available +- Performance improvements +- Update V8 to 8.5 +- Update Node to 12.6.3 +- Update Chromium to version 85 + +### Version 1.11.0 - 29 August 2020 + +- Add ability to match output line to source line +- Add support for console time methods +- Add support for find/replace +- Improve styling for forms on dark mode +- Add support for context-menu +- Improve support for promises +- Tabbing a selected now indents it +- Update V8 to version 8.3 +- Update Node to version 12.14.1 +- Update Chromium to version 83 +- Fix issue #167 - JSON formatting issue + +### Version 1.10.1 - 24 July 2020 + +- Fix issue with unchangeable babel options +- Add a new theme - 'Visual Studio' + +### Version 1.10.0 - 17 July 2020 + +- Improve protection for long running scripts +- Environment variable inputs now select on focus +- Brief visual highlight for new NPM packages and environment variables +- Improve scrollbar styling +- NPM package table header is now sticky +- Fix issue #127 - nested objects and arrays are not expandable +- Fix string formatting and line break issues +- Add decorators as an option +- Rework handling of NPM +- Add support for console.table +- Replace esprima with estree for better modern syntax support +- Gutter folds now only show on hover +- Add support for matching highlights +- Make source type unambiguous for top level `this` support +- Change shortcut for formatting to Alt+Shift+F +- Add install assist for missing packages +- Add prettier formatting options +- Add sublime keymap +- Add option for auto-closing brackets + +### Version 1.9.0 - 08 May 2020 + +- Add clear option to edit menu +- Add Fantasque font +- Improve scrollbar styling +- Add ability to toggle Babel plugins from preferences +- Display sound icon when audible +- Fix issue #105 - Mute print function +- Fix issue #125 - Save cancellation error + +### Version 1.8.0 - 02 February 2020 + +- New icon - designed by Giuseppe Caruso +- Add ability to set environment variables +- Fix for #100 - Loop when formatting +- Relax `process` stripping - #114 + +### Version 1.7.0 - 29 September 2019 + +- RunJS for Mac is now notarized +- Add ability to take screenshots +- Address #95 - process.memoryUsage() is unavailable +- Add ability to format code via Prettier +- Fix an issue with installing packages with long names + +### Version 1.6.0 - 08 August 2019 + +- Fix issue #88 - Set Work directory not working on Windows10 +- Fix issue #87 - Can RunJS remember the window position/size between usages? +- Fix issue #84 - Themes do not apply except Dracula on 1.53 +- Show welcome message when RunJS is opened for the first time + +### Version 1.5.4 - 03 July 2019 + +- Fix issue #85 - Set Work directory not working + +### Version 1.5.3 - 17 June 2019 + +- Enhancement #82 - Increase font size to more than 30px +- Fix issue #81 - Assigned function call on last line does not evaluate + +### Version 1.5.2 - 12 June 2019 + +- Fix issue #79 - TypeScript won't run + +### Version 1.5.1 - 10 June 2019 + +- Fix issue #67 - Output is scrambled in lines +- Fix issue #75 - Let `fs` work in working directory +- Fix issue #78 - Set working directory no longer working + ### Version 1.5.0 - 22 April 2019 - - Fix issue #61 - Settings window won't open on Linux - - Support editor shortcuts on non-darwin systems - - Add ability to toggle output - - Add update option to menu - - Fix issue #69 - multiple declarations cause syntaxerror - - Fix issue #68 - Caching problem? - - Fix issue #66 - Quitting from macOS doc causes error + +- Fix issue #61 - Settings window won't open on Linux +- Support editor shortcuts on non-darwin systems +- Add ability to toggle output +- Add update option to menu +- Fix issue #69 - multiple declarations cause syntaxerror +- Fix issue #68 - Caching problem? +- Fix issue #66 - Quitting from macOS doc causes error ### Version 1.4.0 - 10 March 2019 - - Fix issue #58 - console formatting bug - - Divide preference options into tabbed sections - - Add ability to choose font options - - Log NPM errors + +- Fix issue #58 - console formatting bug +- Divide preference options into tabbed sections +- Add ability to choose font options +- Log NPM errors ### Version 1.3.1 - 03 March 2019 - - Fix issue #55 - quirky handling of string outputs - - Fix issue #54 - exception ordering issue - - Fix issue #52 - missing exception outputs - - Fix issue #50 - User defined window properties persisted - - Fix issue #14 - extra line-break at the end of output - - Fix line-number misalignment + +- Fix issue #55 - quirky handling of string outputs +- Fix issue #54 - exception ordering issue +- Fix issue #52 - missing exception outputs +- Fix issue #50 - User defined window properties persisted +- Fix issue #14 - extra line-break at the end of output +- Fix line-number misalignment ### Version 1.3.0 - 17 February 2019 - - Fix issue #48 - Babel stacktrace bug - - Add preference option for loop protection - - Set Working Directory now allows for importing local files - - Add shortcut for installing Node packages - - Add new window for viewing transpiled output - - Add preference option for holistic evaluation - - Add preference option to show undefined values in output - - Fix issue #51 - incorrect syntax highlighting for strings + +- Fix issue #48 - Babel stacktrace bug +- Add preference option for loop protection +- Set Working Directory now allows for importing local files +- Add shortcut for installing Node packages +- Add new window for viewing transpiled output +- Add preference option for holistic evaluation +- Add preference option to show undefined values in output +- Fix issue #51 - incorrect syntax highlighting for strings ### Version 1.2.4 - 06 February 2019 - - Fix issue #8 - dialog is hidden in vim command mode - - Fix issue #26 - setInterval keeps running - - Fix issue introduced in 1.2.3 that prevented the app quitting + +- Fix issue #8 - dialog is hidden in vim command mode +- Fix issue #26 - setInterval keeps running +- Fix issue introduced in 1.2.3 that prevented the app quitting ### Version 1.2.3 - 02 February 2019 + - Guard against long running loops - fixing #42 and #6 ### Version 1.2.2 - 29 January 2019 @@ -69,4 +547,4 @@ ### Version 1.0.1 - 02 December 2018 -- Improved support for TypeScript \ No newline at end of file +- Improved support for TypeScript diff --git a/README.md b/README.md index b2de2b5..0fae074 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,33 @@ -# RunJS +
+
+
+ RunJS
+
+
Hi, how can I help you?
", + "openAiNoApiKey": "To use this feature, please enter your OpenAI API key in the settings.
To find out how to get an OpenAI API key, please refer to the OpenAI documentation: https://platform.openai.com/docs/quickstart
", + "geminiNoApiKey": "To use this feature, please enter your Gemini API key in the settings.
To find out how to get a Gemini API key, please refer to the Gemini documentation: https://ai.google.dev/gemini-api/docs/api-key
", + "mistralNoApiKey": "To use this feature, please enter your Mistral AI API key in the settings.
To find out how to get an Mistral AI API key, please refer to the Mistral AI documentation: https://docs.mistral.ai/getting-started/quickstart/
", + "anthropicNoApiKey": "To use this feature, please enter your Anthropic API key in the settings.
To find out how to get an Anthropic API key, please refer to the Anthropic documentation: https://docs.claude.com/en/api/overview
", + "customNoBaseUrl": "To use this feature, please enter the base URL of an OpenAI-compatible API in the settings.
This can be any service or local server that provides an OpenAI-compatible API.
", + "send": "Send (Enter)", + "enterPrompt": "Enter a prompt here", + "browserNode": "Browser & Node.js", + "browser": "Browser", + "node": "Node.js", + "javascript": "JavaScript", + "typescript": "TypeScript", + "jsx": "JSX", + "tsx": "TSX" + }, + "editor": { + "toggleAudio": "Toggle audio", + "updateAvailable": "Update available", + "doMore": "Do more with RunJS", + "multipleTabs": "Multiple Tabs", + "npmPackages": "NPM Packages", + "autocomplete": "Autocomplete", + "typeChecking": "Type Checking", + "extraThemes": "Extra Themes", + "intlDateTime": "{{val, datetime}}", + "removeLimits": "Activate to remove limits", + "snippets": "Snippets", + "timeToRenew": "Time to Renew", + "pleaseRenew": "It's time to renew - Please renew your license to keep receiving updates.", + "npmPackagesDetail": "Experiment with new libraries and frameworks", + "multipleTabsDetail": "Essential for multi-tasking", + "snippetsDetail": "Create your own snippet collection", + "extraThemesDetail": "Ayu, One Dark, Shades of Purple, SynthWave '84", + "doNotRemind": "Don't remind me again", + "selectLanguage": "Select Language", + "selectRuntime": "Select Runtime Environment", + "toggleWebView": "Toggle Web View", + "toggleSplitView": "Toggle Split View", + "codeLimitReached": "Code limit reached", + "goToLine": "Go to line", + "moreOptions": "More options", + "logpoints": "Logpoints", + "logpointsDetail": "Add logpoints to log values without modifying your code", + "unlockFullAccess": "Join over 10,000 developers who have unlocked full access to RunJS.", + "saveOpen": "Save and Open Files", + "environmentVariables": "Environment Variables", + "showMore": "Show {{count}} more..." + }, + "preferences": { + "ai": "AI", + "preferences": "Settings", + "general": "General", + "build": "Build", + "formatting": "Formatting", + "appearance": "Appearance", + "advanced": "Advanced", + "autoFormat": "Auto Format", + "autoFormatDescription": "Automatically format code on run", + "formattingRules": "Formatting rules", + "autoRun": "Auto Run", + "autoRunDescription": "Automatically run code on change", + "lineNumbers": "Line Numbers", + "lineNumbersDescription": "Show line numbers", + "lineWrap": "Line Wrap", + "lineWrapDescription": "Wrap long lines", + "vimKeys": "Vim Keys", + "vimKeysDescription": "Use Vim key-bindings", + "closeBrackets": "Close Brackets", + "closeBracketsDescription": "Auto-close brackets", + "autocomplete": "Autocomplete", + "autocompleteDescription": "Show suggestions while typing", + "typeChecking": "Linting", + "typeCheckingDescription": "Show inline errors and warnings", + "signatures": "Signatures", + "signaturesDescription": "Show function signatures while typing", + "hoverInfo": "Hover Info", + "hoverInfoDescription": "Show information on hover", + "theme": "Theme", + "font": "Font", + "fontSize": "Font Size", + "invisibles": "Invisibles", + "invisiblesDescription": "Show invisible characters", + "activeLine": "Active Line", + "activeLinesDescription": "Highlight active line", + "tabBar": "Tab Bar", + "tabBarDescription": "Show tab bar for single tab", + "showUndefined": "Show Undefined", + "showUndefinedDescription": "Show undefined values", + "loopProtection": "Loop Protection", + "loopProtectionDescription": "Protect against long running loops", + "confirmClose": "Confirm Close", + "confirmCloseDescription": "Ask before closing tab", + "printWidth": "Print Width", + "tabWidth": "Tab Width", + "useTabs": "Use Tabs", + "useTabsDescription": "Indent lines with tabs instead of spaces", + "semicolons": "Semicolons", + "semicolonsDescription": "Print semicolons at the ends of statements", + "singleQuotes": "Single Quotes", + "singleQuotesDescription": "Use single quotes instead of double quotes", + "quoteProps": "Quote Props", + "jsxQuotes": "JSX Quotes", + "jsxQuotesDescription": "Use single quotes instead of double quotes in JSX", + "trailingCommas": "Trailing Commas", + "bracketSpacing": "Bracket Spacing", + "bracketSpacingDescription": "Print spaces between brackets in object literals", + "arrowFunctionParens": "Arrow Function Parentheses", + "sideBar": "Side Bar", + "sideBarDescription": "Show side bar", + "activityBar": "Activity Bar", + "activityBarDescription": "Show activity bar", + "language": "Language", + "english": "English", + "spanish": "Español", + "japanese": "日本語", + "chinese": "中文", + "portuguese": "Português", + "changeAfterRestart": "Changes will be applied after restarting the app.", + "aiModel": "Model", + "aiApiKey": "API Key", + "aiProvider": "Provider", + "aiBaseUrl": "Base URL", + "refreshModels": "Refresh models", + "selectModel": "Select model…", + "npmrcHint": ".npmrc stores settings that control how NPM operates when managing packages and dependencies.", + "npmrcFailedToRead": "Failed to read .npmrc file. Please check permissions.", + "npmrcTooLarge": "The .npmrc file is too large. Please reduce its size.", + "npmrcFailedToSave": "Failed to save .npmrc file. Please check permissions.", + "ligatures": "Font Ligatures", + "ligaturesDescription": "Enable ligatures for supported fonts", + "save": "Save", + "reset": "Reset", + "autoUpdates": "Auto Updates", + "autoUpdatesDescription": "Automatically download updates", + "defaultRuntime": "Default Runtime Environment", + "defaultLanguage": "Default Language", + "editor": "Editor", + "autoLog": "Auto Log", + "autoLogDescription": "Automatically log the result of each top-level expression", + "statusBar": "Status Bar", + "statusBarDescription": "Show status bar" + }, + "license": { + "deactivateLicense": "Deactivate License", + "activation": "RunJS Activation", + "yourLicense": "Your RunJS License", + "deactivateYourLicense": "Here you can deactivate your RunJS license if you want to use it on a different computer.", + "activateYourLicense": "Your copy of RunJS is not activated yet. Please enter your license key below.", + "licenseKey": "License Key", + "licenseHint": "You should find your license key in the confirmation email you received after purchasing RunJS.", + "thanksForSupport": "Thank you for supporting RunJS.", + "activationComplete": "Activation Complete" + }, + "vars": { + "manageEnvironmentVariables": "Environment Variables", + "key": "KEY", + "value": "VALUE", + "add": "Add", + "save": "Save", + "remove": "Remove", + "noVars": "No environment variables yet.\nUse the form above to add environment variables.", + "hint": "Environment variables are loaded into process.env and accessed by suffixing the key of the environment variable." + }, + "installer": { + "managePackages": "NPM Packages", + "initError": "An error occured that prevented NPM from initializing.", + "name": "Name", + "version": "Version", + "add": "Add", + "remove": "Remove", + "search": "Search", + "searchError": "An error occured while searching for {{name}}", + "installError": "An error occured while installing {{name}}", + "removeError": "An error occured while removing package", + "latest": "Latest", + "installed": "Installed", + "allowScripts": "Allow install scripts" + }, + "snippets": { + "manageSnippets": "Snippets", + "name": "Name", + "description": "Description", + "search": "Search", + "notFound": "No matching snippet found.", + "nameHint": "Defines the trigger word for autocomplete.", + "noSnippets": "No snippets yet.\nGet started by creating a new snippet or importing an existing snippet library.", + "insertSnippet": "Insert Snippet", + "insertSnippetNewTab": "Insert Snippet in New Tab", + "copySnippet": "Copy Snippet", + "copied": "Copied!", + "inserted": "Inserted!", + "insertedNewTab": "Inserted in New Tab!", + "newSnippet": "New Snippet" + } +} diff --git a/translations/es/translation.json b/translations/es/translation.json new file mode 100644 index 0000000..0bc8ae2 --- /dev/null +++ b/translations/es/translation.json @@ -0,0 +1,345 @@ +{ + "main": { + "error": "Error", + "noUpdates": "No hay actualizaciones", + "exit": "Salir", + "cut": "Cortar", + "loadError": "Error al cargar", + "redo": "Rehacer", + "paste": "Pegar", + "manageLicense": "Administrar licencia…", + "minimize": "Minimizar", + "window": "Ventana", + "find": "Buscar", + "reportIssue": "Reportar problema", + "documentation": "Documentación", + "save": "Guardar", + "closeTab": "Cerrar pestaña", + "closeOtherTabs": "Cerrar otras pestañas", + "closeTabsRight": "Cerrar pestañas a la derecha", + "edit": "Editar", + "action": "Acción", + "undo": "Deshacer", + "help": "Ayuda", + "inspect": "Inspeccionar", + "increaseFontSize": "Aumentar el tamaño de la fuente", + "layout": "Disposición", + "installUpdates": "Instalar actualizaciones", + "copy": "Copiar", + "copyAll": "Copiar todo", + "checkForUpdates": "Comprobar actualizaciones…", + "actualSize": "Tamaño real", + "manageNpmPackages": "Paquetes NPM…", + "errorFileTooLarge": "Este archivo es demasiado grande para abrirlo con RunJS.", + "setWorkingDirectory": "Establecer directorio de trabajo…", + "preferences": "Configuración…", + "showAll": "Mostrar todo", + "open": "Abrir…", + "bringAllToFront": "Traer todo al frente", + "replace": "Reemplazar", + "tools": "Herramientas", + "updateNow": "Actualizaciones encontradas, ¿quieres actualizar ahora?", + "newVersionAvailable": "Una nueva versión de RunJS está disponible.", + "downloadFrom": "RunJS se puede descargar desde el sitio web oficial o puede utilizar su administrador de paquetes preferido.", + "download": "Descargar", + "yes": "sí", + "delete": "Eliminar", + "selectAll": "Seleccionar todo", + "saveAs": "Guardar como…", + "hideOthers": "Ocultar otros", + "horizontal": "Horizontal", + "restartToUpdate": "Reiniciar para actualizar", + "formatCode": "Formatear código", + "services": "Servicios", + "no": "No", + "clear": "Borrar todo", + "copyDebugLog": "Copiar archivo de depuración en portapapeles", + "toggleLineComment": "Alternar comentario de línea", + "version": "Versión {{number}}", + "copyright": "Creado por Luke Haas\nCopyright © 2026 Haas Labs Ltd.", + "aboutRunJs": "Acerca de RunJS", + "decreaseFontSize": "Disminuir el tamaño de la fuente", + "manageEnvironmentVariables": "Variables de entorno…", + "toggleBlockComment": "Alternar comentario de bloque", + "toggleMagicComment": "Alternar comentario mágico", + "hideRunJs": "Ocultar RunJS", + "toggleFullScreen": "Pantalla completa", + "errorLicenseNotFound": "Error: No se ha podido encontrar información de la licencia. Por favor inténtelo mas tarde.", + "errorConnectionProblem": "Error: Ha habido un problema al conectarse con el servidor.", + "errorTwoMachinesActive": "Error: Se ha alcanzado el límite de activación. Puede desactivar dispositivos en línea en\nrunjs.app/license-manager", + "errorFirewall": "Error: La solicitud fue bloqueada. Incluya en la lista blanca license.haaslabs.app", + "errorDeactivationFailed": "Error: Desactivación fallida. Por favor contacte con soporte a través del correo mail@runjs.app.", + "updatesDownloaded": "Actualizaciones descargadas, la aplicación se cerrará par actualizarse…", + "foundUpdates": "Actualizaciones encontradas", + "vertical": "Vertical", + "view": "Ver", + "activate": "Activar…", + "file": "Archivo", + "toggleOutput": "Salida", + "toggleSideBar": "Barra lateral", + "toggleActivityBar": "Barra de actividades", + "currentUpToDate": "Esta versión está actualizada.", + "quitRunJs": "Salir RunJS", + "errorInvalidLicense": "Error: La activación falló debido a una clave de licencia no válida.", + "errorLoadingFile": "Hubo un error al cargar el archivo.", + "welcome": "/*👋 Bienvenido a RunJS\n*\n* Para empezar, intenta escribir algo de código.\n* Aquí tienes algunos ejemplos:\n*/\nconst helloWorld = () => '¡Hola, mundo! 🌎';\n\nhelloWorld();\n\n// Verás los resultados a la derecha 👉\n\nMath.pow(5, 5);\n\nawait Promise.resolve('Await de nivel superior 🤩');\n\n[1, 2, 3, 4].map(num => num * 2);\n\n/*\n* Activa RunJS para eliminar las limitaciones y acceder a más funciones, incluyendo:\n* - Paquetes NPM\n* - Múltiples pestañas\n* - Fragmentos de código\n* - Puntos de registro\n* - y apoyar el desarrollo continuo de RunJS\n*\n* ¡Feliz programación! 🙂\n*/", + "themes": "Temas", + "tabTitle": "Título de la pestaña", + "editTabTitle": "Editar título de pestaña…", + "kill": "Matar", + "errorOccured": "Ha ocurrido un error: {{message}}", + "confirmCloseTab": "¿Estás seguro de que quieres cerrar esta pestaña?", + "createSnippet": "Crear fragmento de código…", + "publishGist": "Publicar en Gist…", + "manageSnippets": "Fragmentos de código…", + "insertSnippet": "Insertar fragmento de código", + "insertSnippetNewTab": "Insertar fragmento de código en una nueva pestaña", + "importSnippets": "Importar fragmentos…", + "exportSnippets": "Exportar fragmentos…", + "confirm": "Confirmar", + "confirmDeleteSnippet": "¿Estás seguro de que quieres eliminar este fragmento?", + "errorExporting": "No se pudieron exportar fragmentos.", + "saveErrorTitle": "Error al guardar", + "saveErrorContent": "Hubo un error al guardar el archivo.", + "pasteErrorTitle": "Error de Pegado", + "pasteErrorContent": "Los datos son demasiado grandes para que RunJS los maneje.", + "saveChanges": "¿Quieres guardar tus cambios?", + "lostChanges": "Sus cambios se perderán si no los guarda.", + "noSave": "No Guardar", + "downgrade": "Degradar", + "downloadVersion": "Descargar versión {{name}}", + "afterUpdatePeriod": "Esta versión de RunJS se lanzó después de tu periodo de actualizaciones.", + "renewOrDowngrade": "Renueve su licencia o vuelva a la versión {{name}}.", + "updateReady": "Una nueva actualización está lista para instalar", + "updateReadyDetail": "RunJS versión {version} se ha descargado y está listo para ser instalado", + "thankForUsing": "Gracias por usar RunJS", + "considerPurchasing": "Si encuentra RunJS útil, considere apoyar su desarrollo continuo comprando una licencia.", + "maybeLater": "Quizás más tarde", + "export": "Exportar", + "exportMenuItem": "Exportar…", + "killTab": "Pestaña de matar", + "wait": "Esperar", + "tabUnresponsive": "La pestaña no responde", + "curentTabUnresponsive": "La pestaña actual ha dejado de responder.", + "toggleStatusBar": "Barra de estado", + "explainResult": "Explicar resultado", + "explain": "Explicar" + }, + "common": { + "close": "Cerrar", + "activate": "Activar", + "whatsNew": "Qué hay de nuevo", + "ok": "OK", + "buyLicense": "Compra licencia", + "run": "Ejecutar", + "stop": "Detener", + "newTab": "Nueva pestaña", + "reopenTab": "Volver a abrir pestaña cerrada", + "cancel": "Cancelar", + "premiumFeatureList": "Lista de características premium", + "preferences": "Configuración", + "webView": "Vista web", + "editors": "Editores", + "editorBar": "Barra de editores", + "renew": "Renovar Licencia", + "remindMe": "Recordar Más Tarde", + "aiChat": "Chat de IA", + "snippets": "Fragmentos de código", + "npmPackages": "Paquetes NPM", + "aiGreeting": "Hola ¿Cómo puedo ayudarte?
", + "openAiNoApiKey": "Para utilizar esta función, ingrese su clave API de OpenAI en la configuración.
Para saber cómo obtener una clave API de OpenAI, consulte la documentación de OpenAI: https://platform.openai.com/docs/quickstart
", + "geminiNoApiKey": "Para utilizar esta función, ingrese su clave API de Gemini en la configuración.
Para saber cómo obtener una clave API de Gemini, consulte la documentación de Gemini: https://ai.google.dev/gemini-api/docs/api-key
", + "mistralNoApiKey": "Para utilizar esta función, ingrese su clave API de Mistral AI en la configuración.
Para saber cómo obtener una clave API de Mistral AI, consulte la documentación de Mistral AI: https://docs.mistral.ai/getting-started/quickstart/
", + "anthropicNoApiKey": "Para utilizar esta función, ingrese su clave API de Anthropic en la configuración.
Para saber cómo obtener una clave API de Anthropic, consulte la documentación de Anthropic: https://docs.claude.com/en/api/overview
", + "customNoBaseUrl": "Para utilizar esta función, ingrese la URL base de una API compatible con OpenAI en la configuración.
Esto puede ser cualquier servicio o servidor local que proporcione una API compatible con OpenAI.
", + "send": "Enviar (Enter)", + "enterPrompt": "Introduzca un mensaje aquí", + "newChat": "Nuevo chat", + "browserNode": "Navegador y Node.js", + "browser": "Navegador", + "node": "Node.js", + "javascript": "JavaScript", + "typescript": "TypeScript", + "jsx": "JSX", + "tsx": "TSX" + }, + "editor": { + "extraThemes": "Temas adicionales", + "updateAvailable": "Actualización disponible", + "autocomplete": "Autocompletar", + "intlDateTime": "{{val, datetime}}", + "npmPackages": "Paquetes NPM", + "multipleTabs": "Múltiples pestañas", + "typeChecking": "Linting", + "toggleAudio": "Alternar audio", + "removeLimits": "Activar para eliminar límites", + "snippets": "Fragmentos de código", + "doMore": "Haz más con RunJS", + "pleaseRenew": "Es hora de renovar - Por favor, renueve su licencia para continuar recibiendo actualizaciones.", + "timeToRenew": "Momento de renovar", + "npmPackagesDetail": "Experimente con nuevas bibliotecas y marcos", + "multipleTabsDetail": "Esencial para multitarea", + "snippetsDetail": "Cree su propia colección de fragmentos de código", + "extraThemesDetail": "Ayu, One Dark, Shades of Purple, SynthWave '84", + "doNotRemind": "No me vuelvas a recordar", + "selectLanguage": "Seleccionar lenguaje", + "selectRuntime": "Seleccionar entorno de ejecución", + "toggleWebView": "Alternar vista web", + "toggleSplitView": "Alternar vista dividida", + "codeLimitReached": "Límite de código alcanzado", + "goToLine": "Ir a la línea", + "moreOptions": "Más opciones", + "logPoints": "Puntos de registro", + "logPointsDetail": "Agrega puntos de registro para registrar valores sin modificar tu código", + "unlockFullAccess": "Únete a más de 10,000 desarrolladores que han desbloqueado el acceso completo a RunJS.", + "saveOpen": "Guardar y abrir archivos", + "environmentVariables": "Variables de entorno", + "showMore": "Mostrar {{count}} más..." + }, + "preferences": { + "ai": "IA", + "advanced": "Avanzado", + "lineWrap": "Salto de línea", + "autoFormat": "Formato automático", + "autoFormatDescription": "Formatear automáticamente el código cuando se ejecuta", + "typeChecking": "Linting", + "general": "General", + "appearance": "Apariencia", + "closeBracketsDescription": "Paréntesis de cierre automático", + "fontSize": "Tamaño de fuente", + "theme": "Tema", + "tabBar": "Barra de pestañas", + "vimKeys": "Teclas Vim", + "lineNumbers": "Números de línea", + "invisibles": "invisibles", + "build": "Compilación", + "autocompleteDescription": "Mostrar sugerencias mientras escribe", + "lineWrapDescription": "Salto de líneas largas", + "activeLine": "Línea activa", + "loopProtection": "Protección de bucles", + "autoRunDescription": "Código de ejecución automática en el cambio", + "typeCheckingDescription": "Mostrar errores y advertencias en línea", + "font": "Fuente", + "autoRun": "Ejecución automática", + "formattingRules": "Reglas de formato", + "loopProtectionDescription": "Proteger contra scripts de ejecución prolongada", + "showUndefinedDescription": "Mostrar valores indefinidos", + "formatting": "Formatear", + "autocomplete": "Autocompletar", + "lineNumbersDescription": "Mostrar números de línea", + "invisiblesDescription": "Mostrar caracteres invisibles", + "closeBrackets": "Cerrar paréntesis automaticamente", + "tabBarDescription": "Mostrar la barra de pestañas para una sola pestaña", + "preferences": "Configuración", + "showUndefined": "Mostrar indefinidas", + "activeLinesDescription": "Resaltar línea activa", + "vimKeysDescription": "Usar combinaciones de teclas de Vim", + "confirmClose": "Confirmar cerrar", + "confirmCloseDescription": "Preguntar antes de cerrar una pestaña", + "printWidth": "Ancho de impresión", + "tabWidth": "Ancho de pestaña", + "useTabs": "Pestañas", + "useTabsDescription": "Sangre las líneas con tabulaciones en lugar de espacios", + "semicolons": "Punto y coma", + "semicolonsDescription": "Imprima punto y coma al final de las declaraciones", + "singleQuotes": "Cotizaciones", + "singleQuotesDescription": "Utilice comillas simples en lugar de comillas dobles", + "quoteProps": "Citar apoyos", + "jsxQuotes": "Cotizaciones JSX", + "jsxQuotesDescription": "Use comillas simples en lugar de comillas dobles en JSX", + "trailingCommas": "Comas finales", + "bracketSpacing": "Espaciado de soporte", + "bracketSpacingDescription": "Imprime espacios entre corchetes en literales de objetos", + "arrowFunctionParens": "Paréntesis de función de flecha", + "hoverInfo": "Información sobre hover", + "hoverInfoDescription": "Mostrar información al pasar el mouse", + "signatures": "Firmas", + "signaturesDescription": "Mostrar firmas de funciones mientras se escribe", + "sideBar": "Barra lateral", + "sideBarDescription": "Mostrar barra lateral", + "activityBar": "Barra de actividades", + "activityBarDescription": "Mostrar barra de actividades", + "language": "Idioma", + "english": "English", + "spanish": "Español", + "japanese": "日本語", + "chinese": "中文", + "portuguese": "Português", + "changeAfterRestart": "Los cambios se aplicarán después de reiniciar la aplicación.", + "aiModel": "Modelo", + "aiApiKey": "Clave API", + "aiProvider": "Proveedor", + "aiBaseUrl": "URL base", + "refreshModels": "Actualizar modelos", + "selectModel": "Seleccionar modelo…", + "npmrcHint": ".npmrc almacena configuraciones que controlan cómo opera NPM al administrar paquetes y dependencias.", + "npmrcFailedToRead": "No se pudo leer el archivo .npmrc. Por favor, revise los permisos.", + "npmrcTooLarge": "El archivo .npmrc es demasiado grande. Por favor, reduzca su tamaño.", + "npmrcFailedToSave": "No se pudo guardar el archivo .npmrc. Por favor, revise los permisos.", + "ligatures": "Ligaduras de fuentes", + "ligaturesDescription": "Habilitar ligaduras para fuentes compatibles", + "save": "Guardar", + "reset": "Restablecer", + "autoUpdates": "Actualizaciones automáticas", + "autoUpdatesDescription": "Descargar actualizaciones automáticamente", + "defaultRuntime": "Entorno de ejecución predeterminado", + "defaultLanguage": "Lenguaje predeterminado", + "editor": "Editor", + "autoLog": "Registro automático", + "autoLogDescription": "Registrar automáticamente el resultado de cada expresión de nivel superior", + "statusBar": "Barra de estado", + "statusBarDescription": "Mostrar barra de estado" + }, + "license": { + "yourLicense": "Su licencia RunJS", + "activateYourLicense": "Su copia de RunJS aún no está activada. Por favor introduzca su clave de licencia a continuación.", + "deactivateLicense": "Desactivar licencia", + "activation": "Activación RunJS", + "licenseKey": "Clave de licencia", + "deactivateYourLicense": "Aquí puede desactivar su licencia de RunJS si desea usarla en un ordenador diferente.", + "licenseHint": "Encontrará la clave de licencia en el email de confirmación que recibió al adquirir RunJS.", + "activationComplete": "¡Activación completa!", + "thanksForSupport": "Gracias por apoyar a RunJS." + }, + "vars": { + "key": "CLAVE", + "save": "Guardar", + "add": "Añadir", + "remove": "Eliminar", + "manageEnvironmentVariables": "Variables de entorno", + "value": "VALOR", + "noVars": "No hay variables de entorno todavía.\nUtiliza el formulario de arriba para agregar variables de entorno.", + "hint": "Las variables de entorno se cargan en process.env y se accede a ellas agregando el sufijo de la clave de la variable de entorno." + }, + "installer": { + "add": "Añadir", + "searchError": "Ha ocurrido un error al buscar {{name}}", + "removeError": "Ha ocurrido un error al eliminar el paquete", + "installError": "Ha ocurrido un error al instalar {{name}}", + "initError": "Un error ha impedido que NPM se inicie.", + "version": "Versión", + "search": "Buscar", + "remove": "Eliminar", + "name": "Nombre", + "managePackages": "Paquetes de NPM", + "latest": "Último", + "installed": "Instalado", + "allowScripts": "Permitir scripts de instalación" + }, + "snippets": { + "manageSnippets": "Fragmentos de código", + "name": "Nombre", + "description": "Descripción", + "search": "Buscar", + "notFound": "No se encontró ningún fragmento de código coincidente.", + "nameHint": "Define la palabra desencadenante para autocompletar.", + "noSnippets": "No hay fragmentos de código todavía.\nComience creando un nuevo fragmento o importando una biblioteca de fragmentos existente.", + "insertSnippet": "Insertar fragmento de código", + "insertSnippetNewTab": "Insertar fragmento de código en una nueva pestaña", + "copySnippet": "Copiar fragmento de código", + "copied": "¡Copiado!", + "inserted": "Insertado!", + "insertedNewTab": "Insertado en nueva pestaña!", + "newSnippet": "Nuevo Fragmento" + } +} diff --git a/translations/ja/translation.json b/translations/ja/translation.json new file mode 100644 index 0000000..335b4a0 --- /dev/null +++ b/translations/ja/translation.json @@ -0,0 +1,347 @@ +{ + "main": { + "checkForUpdates": "更新の確認...", + "restartToUpdate": "再起動して更新", + "documentation": "ドキュメント", + "reportIssue": "問題の報告", + "copyDebugLog": "デバッグログをクリップボードにコピー", + "file": "ファイル", + "edit": "編集", + "undo": "取り消し", + "redo": "やり直し", + "cut": "切り取り", + "copy": "コピー", + "copyAll": "すべてコピー", + "paste": "貼り付け", + "delete": "削除", + "selectAll": "すべて選択", + "inspect": "検証", + "find": "検索", + "replace": "置き換え", + "toggleLineComment": "行コメントの切り替え", + "toggleBlockComment": "ブロックコメントの切り替え", + "toggleMagicComment": "マジックコメントの切り替え", + "action": "操作", + "setWorkingDirectory": "作業ディレクトリの設定...", + "formatCode": "コードのフォーマット", + "tools": "ツール", + "manageNpmPackages": "NPM パッケージ...", + "manageEnvironmentVariables": "環境変数...", + "manageSnippets": "スニペット...", + "insertSnippet": "スニペットの挿入", + "insertSnippetNewTab": "新しいタブにスニペットを挿入", + "importSnippets": "スニペットのインポート...", + "exportSnippets": "スニペットのエクスポート...", + "confirm": "確認", + "confirmDeleteSnippet": "このスニペットを削除してもよろしいですか?", + "errorExporting": "スニペットのエクスポートに失敗しました。", + "errorImporting": "スニペットのインポートに失敗しました。", + "errorImportingFormat": "無効なスニペット形式です。", + "view": "表示", + "actualSize": "実際のサイズ", + "increaseFontSize": "フォントサイズを大きくする", + "decreaseFontSize": "フォントサイズを小さくする", + "toggleFullScreen": "全画面", + "toggleOutput": "出力", + "toggleSideBar": "サイドバー", + "toggleActivityBar": "アクティビティバー", + "layout": "レイアウト", + "horizontal": "水平", + "vertical": "垂直", + "themes": "テーマ", + "window": "ウィンドウ", + "editTabTitle": "タブタイトルの編集...", + "tabTitle": "タブタイトル", + "minimize": "最小化", + "bringAllToFront": "すべてを前面に移動", + "aboutRunJs": "RunJS について", + "preferences": "設定...", + "services": "サービス", + "hideRunJs": "RunJS を非表示", + "hideOthers": "その他を非表示", + "showAll": "すべて表示", + "activate": "認証...", + "manageLicense": "ライセンスの管理...", + "quitRunJs": "RunJS を終了", + "help": "ヘルプ", + "exit": "終了", + "clear": "消去", + "open": "開く...", + "save": "保存", + "saveAs": "名前を付けて保存...", + "loadError": "読み込みエラー", + "errorLoadingFile": "ファイルの読み込み中にエラーが発生しました。", + "errorFileTooLarge": "このファイルは大きすぎるため、RunJS で開くことができません。", + "saveErrorTitle": "保存エラー", + "saveErrorContent": "ファイルの保存中にエラーが発生しました", + "pasteErrorTitle": "貼り付けエラー", + "pasteErrorContent": "データが大きすぎて RunJS では処理できません。", + "closeTab": "タブを閉じる", + "closeOtherTabs": "他のタブを閉じる", + "closeTabsRight": "右側のタブを閉じる", + "errorInvalidLicense": "エラー : ライセンス キーが無効なためア認証に失敗しました。", + "errorLicenseNotFound": "エラー : ライセンス情報が見つかりませんでした。しばらくしてからもう一度お試しください。", + "errorTwoMachinesActive": "エラー : 認証の制限に達しました。 runjs.app/license-manager で\nデバイスをオンラインで無効化できます。", + "errorDeactivationFailed": "エラー : 無効化に失敗しました。サポートが必要な場合は、mail@runjs.app までお問い合わせください。", + "errorConnectionProblem": "エラー : サーバーへの接続中に問題が発生しました。", + "errorFirewall": "エラー : リクエストはブロックされました。license.haaslabs.app をホワイトリストに追加してください。", + "errorOccured": "エラーが発生しました : {{message}}", + "noUpdates": "更新なし", + "currentUpToDate": "現在のバージョンは最新です。", + "foundUpdates": "更新が見つかりました", + "updateNow": "更新が見つかりました。今すぐ更新しますか?", + "newVersionAvailable": "RunJS の新しいバージョンが利用可能です。", + "downloadFrom": "RunJS は公式 Web サイトからダウンロードすることも、好みのパッケージ マネージャーを使用することもできます。", + "download": "ダウンロード", + "yes": "はい", + "no": "いいえ", + "installUpdates": "更新のインストール", + "updatesDownloaded": "更新がダウンロードされました。更新のためアプリケーションは終了します...", + "error": "エラー", + "version": "バージョン {{number}}", + "copyright": "Created by Luke Haas\nCopyright © 2026 Haas Labs Ltd", + "kill": "削除", + "confirmCloseTab": "このタブを閉じてもよろしいですか?", + "createSnippet": "スニペットの作成...", + "publishGist": "Gist へ送信...", + "saveChanges": "変更を保存しますか?", + "lostChanges": "保存しないと変更内容は失われます。", + "noSave": "保存しない", + "downgrade": "ダウングレード", + "downloadVersion": "ダウンロード バージョン {{name}}", + "afterUpdatePeriod": "このバージョンの RunJS は、更新期間の終了後にリリースされました。", + "renewOrDowngrade": "ライセンスを更新するか、バージョン {{name}} に戻してください。", + "updateReady": "新しい更新をインストールする準備ができました", + "updateReadyDetail": "RunJS バージョン {version} がダウンロードされ、インストールする準備ができました", + "thankForUsing": "RunJS をご利用いただきありがとうございます", + "considerPurchasing": "RunJS が役に立つと思われる場合は、ライセンスを購入して継続的な開発をサポートすることを検討してください。", + "maybeLater": "後で", + "export": "エクスポート", + "exportMenuItem": "エクスポート...", + "killTab": "タブを削除", + "wait": "待機", + "tabUnresponsive": "タブの応答なし", + "curentTabUnresponsive": "現在のタブが応答しなくなりました。", + "toggleStatusBar": "ステータスバー", + "explainResult": "結果を説明", + "explain": "説明", + "welcome": "/*? RunJS へようこそ\n*\n* まずはコードを書いてみましょう\n* 以下にいくつかの例を示します。\n*/\nconst helloWorld = () => 'Hello, World! ?';\n\nhelloWorld();\n\n// 結果は右側に表示されます ?\n\nMath.pow(5, 5);\n\nawait Promise.resolve('トップレベルのawait ?');\n\n[1, 2, 3, 4].map(num => num * 2);\n\n/*\n* RunJS を有効化すると、制限が解除され、以下の機能を含むより多くの機能を利用できます。\n* - NPM パッケージ\n* - 複数タブ\n* - スニペット\n* - ポイントのログ\n* - RunJS の継続的な開発への支援\n*\n* コーディングを楽しんでください! ?\n*/" + }, + "common": { + "run": "実行", + "stop": "停止", + "whatsNew": "新着情報", + "newTab": "新しいタブ", + "reopenTab": "閉じたタブを開く", + "close": "閉じる", + "ok": "OK", + "cancel": "キャンセル", + "buyLicense": "ライセンスの購入", + "activate": "認証", + "premiumFeatureList": "プレミアム機能一覧", + "preferences": "設定", + "webView": "Web View", + "editors": "エディタ", + "editorBar": "エディタバー", + "renew": "ライセンスの更新", + "remindMe": "後で通知する", + "aiChat": "AI チャット", + "snippets": "スニペット", + "npmPackages": "NPM パッケージ", + "newChat": "新しいチャット", + "aiGreeting": "こんにちは。何かご用ですか?
", + "openAiNoApiKey": "この機能を使用するには、 設定に OpenAI API キーを入力してください。
OpenAI APIキーの取得方法については、OpenAI のドキュメントを参照してください : https://platform.openai.com/docs/quickstart
", + "geminiNoApiKey": "この機能を使用するには、 設定に Gemini API キーを入力してください。
Gemini APIキーの取得方法については、Gemini のドキュメントを参照してください : https://ai.google.dev/gemini-api/docs/api-key
", + "mistralNoApiKey": "この機能を使用するには、 設定に Mistral AI API キーを入力してください。
Mistral AI APIキーの取得方法については、Mistral AIのドキュメントを参照してください : https://docs.mistral.ai/getting-started/quickstart/
", + "anthropicNoApiKey": "この機能を使用するには、 設定に Anthropic API キーを入力してください。
Anthropic APIキーの取得方法については、Anthropic のドキュメントを参照してください : https://docs.claude.com/en/api/overview
", + "customNoBaseUrl": "この機能を使用するには、 設定に OpenAI 互換 API のベース URL を入力してください。
これは、OpenAI 互換 API を提供する任意のサービスまたはローカルサーバーで構いません。
", + "send": "送信 (Enter)", + "enterPrompt": "ここにプロンプトを入力", + "browserNode": "ブラウザとNode.js", + "browser": "ブラウザ", + "node": "Node.js", + "javascript": "JavaScript", + "typescript": "TypeScript", + "jsx": "JSX", + "tsx": "TSX" + }, + "editor": { + "toggleAudio": "オーディオの切り替え", + "updateAvailable": "更新が利用可能", + "doMore": "RunJS でより多くのことを行う", + "multipleTabs": "複数のタブ", + "npmPackages": "NPM パッケージ", + "autocomplete": "自動補完", + "typeChecking": "型チェック", + "extraThemes": "追加テーマ", + "intlDateTime": "{{val, datetime}}", + "removeLimits": "制限を解除するにはアクティベートしてください", + "snippets": "スニペット", + "timeToRenew": "更新時間", + "pleaseRenew": "更新の時期です-更新を継続して受け取るには、ライセンスを更新してください。", + "npmPackagesDetail": "新しいライブラリやフレームワークを試す", + "multipleTabsDetail": "マルチタスクに不可欠", + "snippetsDetail": "独自のスニペットコレクションを作成する", + "extraThemesDetail": "Ayu, One Dark, Shades of Purple, SynthWave '84", + "doNotRemind": "今後通知しない", + "selectLanguage": "言語を選択", + "selectRuntime": "実行環境を選択", + "toggleWebView": "Webビューを切り替え", + "toggleSplitView": "分割ビューを切り替え", + "codeLimitReached": "コード制限に達しました", + "goToLine": "行へ移動", + "moreOptions": "その他のオプション", + "logPoints": "ログポイント", + "logPointsDetail": "コードを変更せずに値をログに記録するためのログポイントを追加する", + "unlockFullAccess": "10,000人以上の開発者が RunJS の完全アクセスを解除しました。", + "saveOpen": "ファイルを保存して開く", + "environmentVariables": "環境変数", + "showMore": "さらに {{count}} 件表示..." + }, + "preferences": { + "ai": "AI", + "preferences": "設定", + "general": "全般", + "build": "ビルド", + "formatting": "フォーマット", + "appearance": "外観", + "advanced": "その他", + "autoFormat": "自動フォーマット", + "autoFormatDescription": "実行時にコードを自動的にフォーマットする", + "formattingRules": "フォーマットのルール", + "autoRun": "自動実行", + "autoRunDescription": "変更時にコードを自動的に実行する", + "lineNumbers": "行番号", + "lineNumbersDescription": "行番号を表示", + "lineWrap": "行折り返し", + "lineWrapDescription": "長い行を折り返す", + "vimKeys": "Vim キー", + "vimKeysDescription": "Vim のキーバインドを使用する", + "closeBrackets": "閉じ括弧", + "closeBracketsDescription": "自動閉じ括弧", + "autocomplete": "自動補完", + "autocompleteDescription": "入力中に候補を表示する", + "typeChecking": "構文チェック", + "typeCheckingDescription": "インラインエラーと警告を表示する", + "signatures": "シグネチャ", + "signaturesDescription": "入力中に関数シグネチャを表示する", + "hoverInfo": "ホバー情報", + "hoverInfoDescription": "ホバー時に情報を表示", + "theme": "テーマ", + "font": "フォント", + "fontSize": "フォントサイズ", + "invisibles": "不可視", + "invisiblesDescription": "不可視文字を表示する", + "activeLine": "アクティブな行", + "activeLinesDescription": "アクティブな行を強調表示", + "tabBar": "タブバー", + "tabBarDescription": "単一のタブにタブバーを表示する", + "showUndefined": "未定義を表示", + "showUndefinedDescription": "未定義の値を表示", + "loopProtection": "ループ保護", + "loopProtectionDescription": "長時間のループから保護する", + "confirmClose": "閉じるの確認", + "confirmCloseDescription": "タブを閉じる前に確認する", + "printWidth": "印刷幅", + "tabWidth": "タブ幅", + "useTabs": "タブの使用", + "useTabsDescription": "スペースの代わりにタブを使用して行をインデントする", + "semicolons": "セミコロン", + "semicolonsDescription": "文末にセミコロンを出力する", + "singleQuotes": "シングルクォート", + "singleQuotesDescription": "ダブルクォートの代わりにシングルクォートを使用する", + "quoteProps": "引用のプロパティ", + "jsxQuotes": "JSX 引用", + "jsxQuotesDescription": "JSXではダブルクォートの代わりにシングルクォートを使用する", + "trailingCommas": "末尾のカンマ", + "bracketSpacing": "括弧の間隔", + "bracketSpacingDescription": "オブジェクトリテラル内の括弧内のスペースを出力する", + "arrowFunctionParens": "アロー関数の括弧", + "sideBar": "サイドバー", + "sideBarDescription": "サイドバーを表示", + "activityBar": "アクティビティバー", + "activityBarDescription": "アクティビティバーを表示", + "language": "言語", + "english": "English", + "spanish": "Español", + "japanese": "日本語", + "chinese": "中文", + "portuguese": "Português", + "changeAfterRestart": "変更はアプリを再起動後に適用されます。", + "aiModel": "モデル", + "aiApiKey": "API キー", + "aiProvider": "プロバイダー", + "aiBaseUrl": "ベース URL", + "refreshModels": "モデルを更新", + "selectModel": "モデルを選択…", + "npmrcHint": ".npmrc には、パッケージや依存関係を管理する際の NPM の動作を制御する設定が保存されています。", + "npmrcFailedToRead": ".npmrc ファイルの読み込みに失敗しました。権限を確認してください。", + "npmrcTooLarge": ".npmrc ファイルのサイズが大きすぎます。サイズを小さくしてください。", + "npmrcFailedToSave": ".npmrc ファイルの保存に失敗しました。権限を確認してください。", + "ligatures": "フォントの合字", + "ligaturesDescription": "サポートされているフォントで合字を有効にする", + "save": "保存", + "reset": "リセット", + "autoUpdates": "自動更新", + "autoUpdatesDescription": "更新を自動的にダウンロードする", + "defaultRuntime": "デフォルトのランタイム環境", + "defaultLanguage": "デフォルトの言語", + "editor": "エディタ", + "autoLog": "自動ログ", + "autoLogDescription": "各トップレベルの式の結果を自動的にログに記録する", + "statusBar": "ステータスバー", + "statusBarDescription": "ステータスバーを表示" + }, + "license": { + "deactivateLicense": "ライセンスの無効化", + "activation": "RunJS の認証", + "yourLicense": "RunJS ライセンス", + "deactivateYourLicense": "別のコンピューターで使用したい場合は、ここで RunJS ライセンスを無効化できます。", + "activateYourLicense": "RunJS はまだ認証されていません。下記にライセンスキーを入力してください。", + "licenseKey": "ライセンスキー", + "licenseHint": "ライセンス キーは、RunJS を購入した後に受信した確認メールに記載されています。", + "thanksForSupport": "RunJS をサポートしていただきありがとうございます。", + "activationComplete": "認証完了" + }, + "vars": { + "manageEnvironmentVariables": "環境変数", + "key": "キー", + "value": "値", + "add": "追加", + "save": "保存", + "remove": "削除", + "noVars": "環境変数はまだありません。\n上記のフォームを使用して環境変数を追加してください。", + "hint": "環境変数は process.env にロードされ、環境変数のキーを接尾辞として付けることでアクセスされます。" + }, + "installer": { + "managePackages": "NPM パッケージ", + "initError": "NPM の初期化を妨げるエラーが発生しました。", + "name": "名前", + "version": "バージョン", + "add": "追加", + "remove": "削除", + "search": "検索", + "searchError": "{{name}} の検索中にエラーが発生しました", + "installError": "{{name}} のインストール中にエラーが発生しました", + "removeError": "パッケージの削除中にエラーが発生しました", + "latest": "最新", + "installed": "インストール済み", + "allowScripts": "インストールスクリプトを許可" + }, + "snippets": { + "manageSnippets": "スニペット", + "name": "名前", + "description": "説明", + "search": "検索", + "notFound": "一致するスニペットが見つかりません。", + "nameHint": "自動補完のトリガーワードを定義します。", + "noSnippets": "スニペットはまだありません。\nスニペットを作成するには、追加 (+) をクリックします。", + "insertSnippet": "スニペットの挿入", + "insertSnippetNewTab": "新しいタブにスニペットを挿入", + "copySnippet": "スニペットをコピー", + "copied": "コピーしました!", + "inserted": "挿入しました!", + "insertedNewTab": "新しいタブに挿入されました!", + "newSnippet": "新しいスニペット" + } +} diff --git a/translations/ko/translation.json b/translations/ko/translation.json new file mode 100644 index 0000000..f5f207b --- /dev/null +++ b/translations/ko/translation.json @@ -0,0 +1,347 @@ +{ + "main": { + "checkForUpdates": "업데이트 확인…", + "restartToUpdate": "업데이트하려면 재시작", + "documentation": "문서", + "reportIssue": "문제 신고", + "copyDebugLog": "디버그 로그를 클립보드에 복사", + "file": "파일", + "edit": "편집", + "undo": "실행 취소", + "redo": "다시 실행", + "cut": "잘라내기", + "copy": "복사", + "copyAll": "모두 복사", + "paste": "붙여넣기", + "delete": "삭제", + "selectAll": "모두 선택", + "inspect": "검사", + "find": "찾기", + "replace": "바꾸기", + "toggleLineComment": "줄 주석 전환", + "toggleBlockComment": "블록 주석 전환", + "toggleMagicComment": "매직 주석 전환", + "action": "작업", + "setWorkingDirectory": "작업 디렉터리 설정…", + "formatCode": "코드 포맷", + "tools": "도구", + "manageNpmPackages": "NPM 패키지…", + "manageEnvironmentVariables": "환경 변수…", + "manageSnippets": "스니펫…", + "insertSnippet": "스니펫 삽입", + "insertSnippetNewTab": "새 탭에 스니펫 삽입", + "importSnippets": "스니펫 가져오기…", + "exportSnippets": "스니펫 내보내기…", + "confirm": "확인", + "confirmDeleteSnippet": "이 스니펫을 삭제하시겠습니까?", + "errorExporting": "스니펫을 내보내지 못했습니다.", + "errorImporting": "스니펫을 가져오지 못했습니다.", + "errorImportingFormat": "잘못된 스니펫 형식입니다.", + "view": "보기", + "actualSize": "실제 크기", + "increaseFontSize": "글꼴 크기 키우기", + "decreaseFontSize": "글꼴 크기 줄이기", + "toggleFullScreen": "전체 화면", + "toggleOutput": "출력", + "toggleSideBar": "사이드바", + "toggleActivityBar": "액티비티 바", + "layout": "레이아웃", + "horizontal": "가로", + "vertical": "세로", + "themes": "테마", + "window": "창", + "editTabTitle": "탭 제목 편집…", + "tabTitle": "탭 제목", + "minimize": "최소화", + "bringAllToFront": "모두 앞으로 가져오기", + "aboutRunJs": "RunJS 정보", + "preferences": "설정…", + "services": "서비스", + "hideRunJs": "RunJS 가리기", + "hideOthers": "다른 항목 가리기", + "showAll": "모두 보기", + "activate": "활성화…", + "manageLicense": "라이선스 관리…", + "quitRunJs": "RunJS 종료", + "help": "도움말", + "exit": "종료", + "clear": "지우기", + "open": "열기…", + "save": "저장", + "saveAs": "다른 이름으로 저장…", + "loadError": "불러오기 오류", + "errorLoadingFile": "파일을 불러오는 중 오류가 발생했습니다.", + "errorFileTooLarge": "이 파일은 RunJS로 열기에 너무 큽니다.", + "saveErrorTitle": "저장 오류", + "saveErrorContent": "파일을 저장하는 중 오류가 발생했습니다", + "pasteErrorTitle": "붙여넣기 오류", + "pasteErrorContent": "데이터가 너무 커서 RunJS에서 처리할 수 없습니다.", + "closeTab": "탭 닫기", + "closeOtherTabs": "다른 탭 닫기", + "closeTabsRight": "오른쪽 탭 모두 닫기", + "errorInvalidLicense": "오류: 라이선스 키가 유효하지 않아 활성화에 실패했습니다.", + "errorLicenseNotFound": "오류: 라이선스 정보를 찾을 수 없습니다. 나중에 다시 시도해 주세요.", + "errorTwoMachinesActive": "오류: 활성화 가능 대수를 초과했습니다. 다음 주소에서 온라인으로 기기를 비활성화할 수 있습니다\nrunjs.app/license-manager", + "errorDeactivationFailed": "오류: 비활성화에 실패했습니다. 도움이 필요하면 mail@runjs.app으로 문의해 주세요.", + "errorConnectionProblem": "오류: 서버에 연결하는 중 문제가 발생했습니다.", + "errorFirewall": "오류: 요청이 차단되었습니다. license.haaslabs.app을 허용 목록에 추가해 주세요.", + "errorOccured": "오류가 발생했습니다: {{message}}", + "noUpdates": "업데이트 없음", + "currentUpToDate": "현재 버전이 최신 상태입니다.", + "foundUpdates": "업데이트 발견", + "updateNow": "업데이트를 발견했습니다. 지금 업데이트하시겠습니까?", + "newVersionAvailable": "RunJS의 새 버전을 사용할 수 있습니다.", + "downloadFrom": "RunJS는 공식 웹사이트에서 다운로드하거나 원하는 패키지 관리자를 사용해 설치할 수 있습니다.", + "download": "다운로드", + "yes": "예", + "no": "아니오", + "installUpdates": "업데이트 설치", + "updatesDownloaded": "업데이트가 다운로드되었습니다. 업데이트를 위해 애플리케이션이 종료됩니다...", + "error": "오류", + "version": "버전 {{number}}", + "copyright": "Luke Haas 제작\nCopyright © 2026 Haas Labs Ltd", + "kill": "강제 종료", + "confirmCloseTab": "이 탭을 닫으시겠습니까?", + "createSnippet": "스니펫 만들기…", + "publishGist": "Gist에 게시…", + "saveChanges": "변경 사항을 저장하시겠습니까?", + "lostChanges": "저장하지 않으면 변경 사항이 사라집니다.", + "noSave": "저장 안 함", + "downgrade": "다운그레이드", + "downloadVersion": "버전 {{name}} 다운로드", + "afterUpdatePeriod": "이 버전의 RunJS는 회원님의 업데이트 기간이 종료된 이후에 출시되었습니다.", + "renewOrDowngrade": "라이선스를 갱신하거나 버전 {{name}}(으)로 되돌려 주세요.", + "updateReady": "새 업데이트를 설치할 준비가 되었습니다", + "updateReadyDetail": "RunJS 버전 {version}이(가) 다운로드되어 설치할 준비가 되었습니다", + "thankForUsing": "RunJS를 사용해 주셔서 감사합니다", + "considerPurchasing": "RunJS가 유용하다고 느끼셨다면, 라이선스를 구매하여 지속적인 개발을 지원해 주시기 바랍니다.", + "maybeLater": "나중에", + "export": "내보내기", + "exportMenuItem": "내보내기…", + "killTab": "탭 강제 종료", + "wait": "기다리기", + "tabUnresponsive": "탭 응답 없음", + "curentTabUnresponsive": "현재 탭이 응답하지 않습니다.", + "toggleStatusBar": "상태 표시줄", + "explainResult": "결과 설명", + "explain": "설명", + "welcome": "/*👋 RunJS에 오신 것을 환영합니다 \n*\n* 시작하려면 코드를 작성해 보세요\n* 다음은 몇 가지 예시입니다:\n*/\nconst helloWorld = () => 'Hello, World! 🌎';\n\nhelloWorld();\n\n// 결과는 오른쪽에 출력됩니다 👉\n\nMath.pow(5, 5);\n\nawait Promise.resolve('최상위 await 🤩');\n\n[1, 2, 3, 4].map(num => num * 2);\n\n/*\n* RunJS를 활성화하면 제한이 해제되고 다음과 같은 더 많은 기능을 사용할 수 있습니다:\n* - NPM 패키지\n* - 다중 탭\n* - 스니펫\n* - 로그포인트\n* - 그리고 지속적인 개발을 지원할 수 있습니다\n*\n* 즐거운 코딩 되세요! 🙂\n*/" + }, + "common": { + "run": "실행", + "stop": "정지", + "whatsNew": "새로운 기능", + "newTab": "새 탭", + "reopenTab": "닫은 탭 다시 열기", + "close": "닫기", + "ok": "확인", + "cancel": "취소", + "buyLicense": "라이선스 구매", + "activate": "활성화", + "premiumFeatureList": "프리미엄 기능 목록", + "preferences": "설정", + "webView": "웹 뷰", + "editors": "에디터", + "editorBar": "에디터 바", + "renew": "라이선스 갱신", + "remindMe": "나중에 다시 알림", + "aiChat": "AI 채팅", + "snippets": "스니펫", + "npmPackages": "NPM 패키지", + "newChat": "새 채팅", + "aiGreeting": "안녕하세요, 무엇을 도와드릴까요?
", + "openAiNoApiKey": "이 기능을 사용하려면 설정에서 OpenAI API 키를 입력해 주세요.
OpenAI API 키를 얻는 방법은 OpenAI 문서를 참고해 주세요: https://platform.openai.com/docs/quickstart
", + "geminiNoApiKey": "이 기능을 사용하려면 설정에서 Gemini API 키를 입력해 주세요.
Gemini API 키를 얻는 방법은 Gemini 문서를 참고해 주세요: https://ai.google.dev/gemini-api/docs/api-key
", + "mistralNoApiKey": "이 기능을 사용하려면 설정에서 Mistral AI API 키를 입력해 주세요.
Mistral AI API 키를 얻는 방법은 Mistral AI 문서를 참고해 주세요: https://docs.mistral.ai/getting-started/quickstart/
", + "anthropicNoApiKey": "이 기능을 사용하려면 설정에서 Anthropic API 키를 입력해 주세요.
Anthropic API 키를 얻는 방법은 Anthropic 문서를 참고해 주세요: https://docs.claude.com/en/api/overview
", + "customNoBaseUrl": "이 기능을 사용하려면 설정에서 OpenAI 호환 API의 기본 URL을 입력해 주세요.
이는 OpenAI 호환 API를 제공하는 서비스나 로컬 서버라면 어떤 것이든 가능합니다.
", + "send": "보내기 (Enter)", + "enterPrompt": "여기에 프롬프트를 입력하세요", + "browserNode": "브라우저 및 Node.js", + "browser": "브라우저", + "node": "Node.js", + "javascript": "JavaScript", + "typescript": "TypeScript", + "jsx": "JSX", + "tsx": "TSX" + }, + "editor": { + "toggleAudio": "오디오 켜기/끄기", + "updateAvailable": "업데이트 가능", + "doMore": "RunJS로 더 많은 것을 하세요", + "multipleTabs": "다중 탭", + "npmPackages": "NPM 패키지", + "autocomplete": "자동 완성", + "typeChecking": "타입 검사", + "extraThemes": "추가 테마", + "intlDateTime": "{{val, datetime}}", + "removeLimits": "활성화하여 제한 해제", + "snippets": "스니펫", + "timeToRenew": "갱신할 시간", + "pleaseRenew": "갱신할 시간입니다 - 계속 업데이트를 받으려면 라이선스를 갱신해 주세요.", + "npmPackagesDetail": "새로운 라이브러리와 프레임워크를 실험해 보세요", + "multipleTabsDetail": "멀티태스킹에 필수적입니다", + "snippetsDetail": "나만의 스니펫 컬렉션을 만들어 보세요", + "extraThemesDetail": "Ayu, One Dark, Shades of Purple, SynthWave '84", + "doNotRemind": "다시 알리지 않음", + "selectLanguage": "언어 선택", + "selectRuntime": "런타임 환경 선택", + "toggleWebView": "웹 뷰 전환", + "toggleSplitView": "분할 보기 전환", + "codeLimitReached": "코드 제한에 도달했습니다", + "goToLine": "줄로 이동", + "moreOptions": "추가 옵션", + "logpoints": "로그포인트", + "logpointsDetail": "코드를 수정하지 않고 값을 기록할 로그포인트를 추가하세요", + "unlockFullAccess": "RunJS의 모든 기능을 이용하고 있는 10,000명 이상의 개발자와 함께하세요.", + "saveOpen": "파일 저장 및 열기", + "environmentVariables": "환경 변수", + "showMore": "{{count}}개 더 보기..." + }, + "preferences": { + "ai": "AI", + "preferences": "설정", + "general": "일반", + "build": "빌드", + "formatting": "포맷팅", + "appearance": "모양", + "advanced": "고급", + "autoFormat": "자동 포맷", + "autoFormatDescription": "실행 시 코드를 자동으로 포맷합니다", + "formattingRules": "포맷팅 규칙", + "autoRun": "자동 실행", + "autoRunDescription": "변경 시 코드를 자동으로 실행합니다", + "lineNumbers": "줄 번호", + "lineNumbersDescription": "줄 번호를 표시합니다", + "lineWrap": "줄 바꿈", + "lineWrapDescription": "긴 줄을 감쌉니다", + "vimKeys": "Vim 키 바인딩", + "vimKeysDescription": "Vim 키 바인딩을 사용합니다", + "closeBrackets": "괄호 자동 닫기", + "closeBracketsDescription": "괄호를 자동으로 닫습니다", + "autocomplete": "자동 완성", + "autocompleteDescription": "입력 중 제안을 표시합니다", + "typeChecking": "린팅", + "typeCheckingDescription": "인라인 오류와 경고를 표시합니다", + "signatures": "시그니처", + "signaturesDescription": "입력 중 함수 시그니처를 표시합니다", + "hoverInfo": "호버 정보", + "hoverInfoDescription": "마우스를 올렸을 때 정보를 표시합니다", + "theme": "테마", + "font": "글꼴", + "fontSize": "글꼴 크기", + "invisibles": "숨김 문자", + "invisiblesDescription": "숨김 문자를 표시합니다", + "activeLine": "활성 줄", + "activeLinesDescription": "활성 줄을 강조 표시합니다", + "tabBar": "탭 바", + "tabBarDescription": "탭이 하나일 때도 탭 바를 표시합니다", + "showUndefined": "Undefined 표시", + "showUndefinedDescription": "undefined 값을 표시합니다", + "loopProtection": "루프 보호", + "loopProtectionDescription": "장시간 실행되는 루프로부터 보호합니다", + "confirmClose": "닫기 확인", + "confirmCloseDescription": "탭을 닫기 전에 확인합니다", + "printWidth": "출력 너비", + "tabWidth": "탭 너비", + "useTabs": "탭 사용", + "useTabsDescription": "공백 대신 탭으로 줄을 들여씁니다", + "semicolons": "세미콜론", + "semicolonsDescription": "문장 끝에 세미콜론을 출력합니다", + "singleQuotes": "작은따옴표", + "singleQuotesDescription": "큰따옴표 대신 작은따옴표를 사용합니다", + "quoteProps": "속성 인용 부호", + "jsxQuotes": "JSX 인용 부호", + "jsxQuotesDescription": "JSX에서 큰따옴표 대신 작은따옴표를 사용합니다", + "trailingCommas": "후행 쉼표", + "bracketSpacing": "괄호 간격", + "bracketSpacingDescription": "객체 리터럴의 괄호 사이에 공백을 추가합니다", + "arrowFunctionParens": "화살표 함수 괄호", + "sideBar": "사이드바", + "sideBarDescription": "사이드바를 표시합니다", + "activityBar": "액티비티 바", + "activityBarDescription": "액티비티 바를 표시합니다", + "language": "언어", + "english": "English", + "spanish": "Español", + "japanese": "日本語", + "chinese": "中文", + "portuguese": "Português", + "changeAfterRestart": "변경 사항은 앱을 재시작한 후 적용됩니다.", + "aiModel": "모델", + "aiApiKey": "API 키", + "aiProvider": "제공자", + "aiBaseUrl": "기본 URL", + "refreshModels": "모델 새로고침", + "selectModel": "모델 선택…", + "npmrcHint": ".npmrc는 NPM이 패키지와 종속성을 관리하는 방식을 제어하는 설정을 저장합니다.", + "npmrcFailedToRead": ".npmrc 파일을 읽지 못했습니다. 권한을 확인해 주세요.", + "npmrcTooLarge": ".npmrc 파일이 너무 큽니다. 크기를 줄여 주세요.", + "npmrcFailedToSave": ".npmrc 파일을 저장하지 못했습니다. 권한을 확인해 주세요.", + "ligatures": "글꼴 합자", + "ligaturesDescription": "지원되는 글꼴에서 합자를 활성화합니다", + "save": "저장", + "reset": "초기화", + "autoUpdates": "자동 업데이트", + "autoUpdatesDescription": "업데이트를 자동으로 다운로드합니다", + "defaultRuntime": "기본 런타임 환경", + "defaultLanguage": "기본 언어", + "editor": "에디터", + "autoLog": "자동 로그", + "autoLogDescription": "최상위 표현식의 결과를 자동으로 기록합니다", + "statusBar": "상태 표시줄", + "statusBarDescription": "상태 표시줄을 표시합니다" + }, + "license": { + "deactivateLicense": "라이선스 비활성화", + "activation": "RunJS 활성화", + "yourLicense": "내 RunJS 라이선스", + "deactivateYourLicense": "다른 컴퓨터에서 사용하고 싶다면 여기에서 RunJS 라이선스를 비활성화할 수 있습니다.", + "activateYourLicense": "사용 중인 RunJS가 아직 활성화되지 않았습니다. 아래에 라이선스 키를 입력해 주세요.", + "licenseKey": "라이선스 키", + "licenseHint": "라이선스 키는 RunJS 구매 후 받은 확인 이메일에서 확인할 수 있습니다.", + "thanksForSupport": "RunJS를 지원해 주셔서 감사합니다.", + "activationComplete": "활성화 완료" + }, + "vars": { + "manageEnvironmentVariables": "환경 변수", + "key": "KEY", + "value": "VALUE", + "add": "추가", + "save": "저장", + "remove": "제거", + "noVars": "아직 환경 변수가 없습니다.\n위 양식을 사용하여 환경 변수를 추가하세요.", + "hint": "환경 변수는 process.env에 로드되며, 환경 변수의 키를 접미사로 붙여 접근할 수 있습니다." + }, + "installer": { + "managePackages": "NPM 패키지", + "initError": "NPM을 초기화하는 중 오류가 발생했습니다.", + "name": "이름", + "version": "버전", + "add": "추가", + "remove": "제거", + "search": "검색", + "searchError": "{{name}}을(를) 검색하는 중 오류가 발생했습니다", + "installError": "{{name}}을(를) 설치하는 중 오류가 발생했습니다", + "removeError": "패키지를 제거하는 중 오류가 발생했습니다", + "latest": "최신", + "installed": "설치됨", + "allowScripts": "설치 스크립트 허용" + }, + "snippets": { + "manageSnippets": "스니펫", + "name": "이름", + "description": "설명", + "search": "검색", + "notFound": "일치하는 스니펫을 찾을 수 없습니다.", + "nameHint": "자동 완성을 위한 트리거 단어를 정의합니다.", + "noSnippets": "아직 스니펫이 없습니다.\n새 스니펫을 만들거나 기존 스니펫 라이브러리를 가져와서 시작하세요.", + "insertSnippet": "스니펫 삽입", + "insertSnippetNewTab": "새 탭에 스니펫 삽입", + "copySnippet": "스니펫 복사", + "copied": "복사됨!", + "inserted": "삽입됨!", + "insertedNewTab": "새 탭에 삽입됨!", + "newSnippet": "새 스니펫" + } +} diff --git a/translations/pt-BR/translation.json b/translations/pt-BR/translation.json new file mode 100644 index 0000000..6d6d128 --- /dev/null +++ b/translations/pt-BR/translation.json @@ -0,0 +1,347 @@ +{ + "main": { + "checkForUpdates": "Verificar Atualizações…", + "restartToUpdate": "Reiniciar para Atualizar", + "documentation": "Documentação", + "reportIssue": "Reportar Problema", + "copyDebugLog": "Copiar Log de Depuração para Área de Transferência", + "file": "Arquivo", + "edit": "Editar", + "undo": "Desfazer", + "redo": "Refazer", + "cut": "Recortar", + "copy": "Copiar", + "copyAll": "Copiar Tudo", + "paste": "Colar", + "delete": "Excluir", + "selectAll": "Selecionar Tudo", + "inspect": "Inspecionar", + "find": "Localizar", + "replace": "Substituir", + "toggleLineComment": "Alternar Comentário de Linha", + "toggleBlockComment": "Alternar Comentário de Bloco", + "toggleMagicComment": "Alternar Comentário Mágico", + "action": "Ação", + "setWorkingDirectory": "Definir Diretório de Trabalho…", + "formatCode": "Formatar Código", + "tools": "Ferramentas", + "manageNpmPackages": "Pacotes NPM…", + "manageEnvironmentVariables": "Variáveis de Ambiente…", + "manageSnippets": "Snippets…", + "insertSnippet": "Inserir Snippet", + "insertSnippetNewTab": "Inserir Snippet em Nova Aba", + "importSnippets": "Importar Snippets…", + "exportSnippets": "Exportar Snippets…", + "confirm": "Confirmar", + "confirmDeleteSnippet": "Tem certeza de que deseja excluir este snippet?", + "errorExporting": "Falha ao exportar snippets.", + "errorImporting": "Falha ao importar snippets.", + "errorImportingFormat": "Formato de snippet inválido.", + "view": "Exibir", + "actualSize": "Tamanho Real", + "increaseFontSize": "Aumentar Tamanho da Fonte", + "decreaseFontSize": "Diminuir Tamanho da Fonte", + "toggleFullScreen": "Tela Cheia", + "toggleOutput": "Saída (Output)", + "toggleSideBar": "Barra Lateral", + "toggleActivityBar": "Barra de Atividades", + "layout": "Layout", + "horizontal": "Horizontal", + "vertical": "Vertical", + "themes": "Temas", + "window": "Janela", + "editTabTitle": "Editar Título da Aba…", + "tabTitle": "Título da Aba", + "minimize": "Minimizar", + "bringAllToFront": "Trazer Tudo para Frente", + "aboutRunJs": "Sobre o RunJS", + "preferences": "Configurações…", + "services": "Serviços", + "hideRunJs": "Ocultar RunJS", + "hideOthers": "Ocultar Outros", + "showAll": "Mostrar Tudo", + "activate": "Ativar…", + "manageLicense": "Gerenciar Licença…", + "quitRunJs": "Encerrar RunJS", + "help": "Ajuda", + "exit": "Sair", + "clear": "Limpar", + "open": "Abrir…", + "save": "Salvar", + "saveAs": "Salvar Como…", + "loadError": "Erro de Carregamento", + "errorLoadingFile": "Ocorreu um erro ao carregar o arquivo.", + "errorFileTooLarge": "Este arquivo é grande demais para ser aberto com o RunJS.", + "saveErrorTitle": "Erro ao Salvar", + "saveErrorContent": "Ocorreu um erro ao salvar o arquivo", + "pasteErrorTitle": "Erro ao Colar", + "pasteErrorContent": "Os dados são grandes demais para o RunJS processar.", + "closeTab": "Fechar Aba", + "closeOtherTabs": "Fechar Outras Abas", + "closeTabsRight": "Fechar Abas à Direita", + "errorInvalidLicense": "Erro: Falha na ativação devido a uma chave de licença inválida.", + "errorLicenseNotFound": "Erro: Falha ao encontrar informações da licença. Por favor, tente novamente mais tarde.", + "errorTwoMachinesActive": "Erro: O limite de ativação foi atingido. Você pode desativar dispositivos online em runjs.app/license-manager", + "errorDeactivationFailed": "Erro: Falha na desativação. Por favor, entre em contato com mail@runjs.app para assistência.", + "errorConnectionProblem": "Erro: Ocorreu um problema ao conectar ao servidor.", + "errorFirewall": "Erro: A requisição foi bloqueada. Por favor, adicione license.haaslabs.app à lista de permissões.", + "errorOccured": "Ocorreu um erro: {{message}}", + "noUpdates": "Sem Atualizações", + "currentUpToDate": "A versão atual está atualizada.", + "foundUpdates": "Atualizações Encontradas", + "updateNow": "Atualizações encontradas, deseja atualizar agora?", + "newVersionAvailable": "Uma nova versão do RunJS está disponível.", + "downloadFrom": "O RunJS pode ser baixado do site oficial ou você pode usar seu gerenciador de pacotes preferido.", + "download": "Download", + "yes": "Sim", + "no": "Não", + "installUpdates": "Instalar Atualizações", + "updatesDownloaded": "Atualizações baixadas, o aplicativo será encerrado para a atualização...", + "error": "Erro", + "version": "Versão {{number}}", + "copyright": "Criado por Luke Haas\nCopyright © 2026 Haas Labs Ltd", + "kill": "Encerrar Processo", + "confirmCloseTab": "Tem certeza de que deseja fechar esta aba?", + "createSnippet": "Criar Snippet…", + "publishGist": "Publicar no Gist…", + "saveChanges": "Deseja salvar suas alterações?", + "lostChanges": "Suas alterações serão perdidas se você não as salvar.", + "noSave": "Não Salvar", + "downgrade": "Versão Anterior", + "downloadVersion": "Baixar Versão {{name}}", + "afterUpdatePeriod": "Esta versão do RunJS foi lançada após o término do seu período de atualização.", + "renewOrDowngrade": "Por favor, renove sua licença ou retorne para a versão {{name}}.", + "updateReady": "Uma nova atualização está pronta para instalar", + "updateReadyDetail": "A versão {version} do RunJS foi baixada e está pronta para ser instalada", + "thankForUsing": "Obrigado por usar o RunJS", + "considerPurchasing": "Se você acha o RunJS útil, considere apoiar seu desenvolvimento contínuo adquirindo uma licença.", + "maybeLater": "Talvez Mais Tarde", + "export": "Exportar", + "exportMenuItem": "Exportar…", + "killTab": "Encerrar aba", + "wait": "Aguardar", + "tabUnresponsive": "Aba não está respondendo", + "curentTabUnresponsive": "A aba atual parou de responder.", + "toggleStatusBar": "Barra de status", + "explainResult": "Explicar Resultado", + "explain": "Explicar", + "welcome": "/*👋 Bem-vindo ao RunJS\n*\n* Para começar, tente escrever algum código\n* Aqui estão alguns exemplos:\n*/\nconst helloWorld = () => 'Olá, Mundo! 🌎';\n\nhelloWorld();\n\n// Você verá os resultados à direita 👉\n\nMath.pow(5, 5);\n\nawait Promise.resolve('Aguarde de nível superior 🤩');\n\n[1, 2, 3, 4].map(num => num * 2);\n\n/*\n* Ative o RunJS para remover limites e acessar mais recursos, incluindo:\n* - Pacotes NPM\n* - Múltiplas abas\n* - Snippets\n* - Pontos de log\n* - e apoio ao desenvolvimento contínuo do RunJS\n*\n* Boa programação! 🙂\n*/" + }, + "common": { + "run": "Executar", + "stop": "Parar", + "whatsNew": "O que há de novo", + "newTab": "Nova Aba", + "reopenTab": "Reabrir Aba Fechada", + "close": "Fechar", + "ok": "OK", + "cancel": "Cancelar", + "buyLicense": "Comprar Licença", + "activate": "Ativar", + "premiumFeatureList": "Lista de Recursos Premium", + "preferences": "Configurações", + "webView": "Visualização Web", + "editors": "Editores", + "editorBar": "Barra do Editor", + "renew": "Renovar Licença", + "remindMe": "Lembrar-me Mais Tarde", + "aiChat": "Chat de IA", + "snippets": "Snippets", + "npmPackages": "Pacotes NPM", + "newChat": "Novo Chat", + "aiGreeting": "Olá, como posso ajudar você?
", + "openAiNoApiKey": "Para usar este recurso, insira sua chave de API da OpenAI nas configurações.
Para saber como obter uma chave de API da OpenAI, consulte a documentação da OpenAI: https://platform.openai.com/docs/quickstart
", + "geminiNoApiKey": "Para usar este recurso, insira sua chave de API do Gemini nas configurações.
Para saber como obter uma chave de API do Gemini, consulte a documentação do Gemini: https://ai.google.dev/gemini-api/docs/api-key
", + "mistralNoApiKey": "Para usar este recurso, insira sua chave de API da Mistral AI nas configurações.
Para saber como obter uma chave de API da Mistral AI, consulte a documentação da Mistral AI: https://docs.mistral.ai/getting-started/quickstart/
", + "anthropicNoApiKey": "Para usar este recurso, insira sua chave de API da Anthropic nas configurações.
Para saber como obter uma chave de API da Anthropic, consulte a documentação da Anthropic: https://docs.claude.com/en/api/overview
", + "customNoBaseUrl": "Para usar este recurso, insira a URL base de uma API compatível com OpenAI nas configurações.
Isso pode ser qualquer serviço ou servidor local que forneça uma API compatível com OpenAI.
", + "send": "Enviar (Enter)", + "enterPrompt": "Digite um comando aqui", + "browserNode": "Navegador e Node.js", + "browser": "Navegador", + "node": "Node.js", + "javascript": "JavaScript", + "typescript": "TypeScript", + "jsx": "JSX", + "tsx": "TSX" + }, + "editor": { + "toggleAudio": "Alternar áudio", + "updateAvailable": "Atualização disponível", + "doMore": "Faça mais com o RunJS", + "multipleTabs": "Múltiplas Abas", + "npmPackages": "Pacotes NPM", + "autocomplete": "Autocompletar", + "typeChecking": "Checagem de Tipos", + "extraThemes": "Temas Extras", + "intlDateTime": "{{val, datetime}}", + "removeLimits": "Ative para remover limites", + "snippets": "Snippets", + "timeToRenew": "Hora de Renovar", + "pleaseRenew": "É hora de renovar - Por favor, renove sua licença para continuar recebendo atualizações.", + "npmPackagesDetail": "Experimente novas bibliotecas e frameworks", + "multipleTabsDetail": "Essencial para multitarefa", + "snippetsDetail": "Crie sua própria coleção de snippets", + "extraThemesDetail": "Ayu, One Dark, Shades of Purple, SynthWave '84", + "doNotRemind": "Não me lembre novamente", + "selectLanguage": "Selecionar Linguagem", + "selectRuntime": "Selecionar Ambiente de Execução", + "toggleWebView": "Alternar Visualização Web", + "toggleSplitView": "Alternar Visualização Dividida", + "codeLimitReached": "Limite de código atingido", + "goToLine": "Ir para a linha", + "moreOptions": "Mais opções", + "logPoints": "Pontos de Registro", + "logPointsDetail": "Adicione pontos de registro para registrar valores sem modificar seu código", + "unlockFullAccess": "Junte-se a mais de 10.000 desenvolvedores que desbloquearam o acesso completo ao RunJS.", + "saveOpen": "Salvar e Abrir Arquivos", + "environmentVariables": "Variáveis de Ambiente", + "showMore": "Mostrar mais {{count}}..." + }, + "preferences": { + "ai": "IA", + "preferences": "Configurações", + "general": "Geral", + "build": "Build", + "formatting": "Formatação", + "appearance": "Aparência", + "advanced": "Avançado", + "autoFormat": "Formatação Automática", + "autoFormatDescription": "Formatar código automaticamente ao executar", + "formattingRules": "Regras de formatação", + "autoRun": "Execução Automática", + "autoRunDescription": "Executar código automaticamente ao alterar", + "lineNumbers": "Números de Linha", + "lineNumbersDescription": "Mostrar números de linha", + "lineWrap": "Quebra de Linha", + "lineWrapDescription": "Quebrar linhas longas", + "vimKeys": "Teclas Vim", + "vimKeysDescription": "Usar atalhos de teclado do Vim", + "closeBrackets": "Fechar Colchetes", + "closeBracketsDescription": "Fechar colchetes automaticamente", + "autocomplete": "Autocompletar", + "autocompleteDescription": "Mostrar sugestões ao digitar", + "typeChecking": "Linting", + "typeCheckingDescription": "Mostrar erros e avisos na linha", + "signatures": "Assinaturas", + "signaturesDescription": "Mostrar assinaturas de função ao digitar", + "hoverInfo": "Info ao Passar o Mouse", + "hoverInfoDescription": "Mostrar informações ao passar o mouse", + "theme": "Tema", + "font": "Fonte", + "fontSize": "Tamanho da Fonte", + "invisibles": "Invisíveis", + "invisiblesDescription": "Mostrar caracteres invisíveis", + "activeLine": "Linha Ativa", + "activeLinesDescription": "Destacar linha ativa", + "tabBar": "Barra de Abas", + "tabBarDescription": "Mostrar barra de abas para aba única", + "showUndefined": "Mostrar Undefined", + "showUndefinedDescription": "Mostrar valores indefinidos", + "loopProtection": "Proteção de Loop", + "loopProtectionDescription": "Proteger contra loops de longa execução", + "confirmClose": "Confirmar Fechamento", + "confirmCloseDescription": "Perguntar antes de fechar a aba", + "printWidth": "Largura da Impressão", + "tabWidth": "Largura do Tab", + "useTabs": "Usar Tabs", + "useTabsDescription": "Indentar linhas com tabs em vez de espaços", + "semicolons": "Ponto e Vírgula", + "semicolonsDescription": "Imprimir ponto e vírgula ao final das instruções", + "singleQuotes": "Aspas Simples", + "singleQuotesDescription": "Usar aspas simples em vez de aspas duplas", + "quoteProps": "Aspas em Propriedades", + "jsxQuotes": "Aspas em JSX", + "jsxQuotesDescription": "Usar aspas simples em vez de duplas no JSX", + "trailingCommas": "Vírgulas Finais", + "bracketSpacing": "Espaçamento de Colchetes", + "bracketSpacingDescription": "Imprimir espaços entre colchetes em objetos literais", + "arrowFunctionParens": "Parênteses em Arrow Functions", + "sideBar": "Barra Lateral", + "sideBarDescription": "Mostrar barra lateral", + "activityBar": "Barra de Atividades", + "activityBarDescription": "Mostrar barra de atividades", + "language": "Idioma", + "english": "Inglês", + "spanish": "Espanhol", + "japanese": "Japonês", + "chinese": "Chinês", + "portuguese": "Português", + "changeAfterRestart": "As alterações serão aplicadas após reiniciar o aplicativo.", + "aiModel": "Modelo", + "aiApiKey": "Chave de API", + "aiProvider": "Provedor", + "aiBaseUrl": "URL Base", + "refreshModels": "Atualizar modelos", + "selectModel": "Selecionar modelo…", + "npmrcHint": "O .npmrc armazena configurações que controlam como o NPM opera ao gerenciar pacotes e dependências.", + "npmrcFailedToRead": "Falha ao ler o arquivo .npmrc. Verifique as permissões.", + "npmrcTooLarge": "O arquivo .npmrc é grande demais. Reduza seu tamanho.", + "npmrcFailedToSave": "Falha ao salvar o arquivo .npmrc. Verifique as permissões.", + "ligatures": "Ligaduras de Fonte", + "ligaturesDescription": "Habilitar ligaduras para fontes compatíveis", + "save": "Salvar", + "reset": "Redefinir", + "autoUpdates": "Atualizações Automáticas", + "autoUpdatesDescription": "Baixar atualizações automaticamente", + "defaultRuntime": "Ambiente de Execução Padrão", + "defaultLanguage": "Linguagem Padrão", + "editor": "Editor", + "autoLog": "Registro Automático", + "autoLogDescription": "Registrar automaticamente o resultado de cada expressão de nível superior", + "statusBar": "Barra de Status", + "statusBarDescription": "Mostrar barra de status" + }, + "license": { + "deactivateLicense": "Desativar Licença", + "activation": "Ativação do RunJS", + "yourLicense": "Sua Licença do RunJS", + "deactivateYourLicense": "Aqui você pode desativar sua licença do RunJS se quiser usá-la em um computador diferente.", + "activateYourLicense": "Sua cópia do RunJS ainda não está ativada. Por favor, insira sua chave de licença abaixo.", + "licenseKey": "Chave de Licença", + "licenseHint": "Você deve encontrar sua chave de licença no e-mail de confirmação que recebeu após comprar o RunJS.", + "thanksForSupport": "Obrigado por apoiar o RunJS.", + "activationComplete": "Ativação Concluída" + }, + "vars": { + "manageEnvironmentVariables": "Variáveis de Ambiente", + "key": "CHAVE", + "value": "VALOR", + "add": "Adicionar", + "save": "Salvar", + "remove": "Remover", + "noVars": "Nenhuma variável de ambiente ainda.\nUse o formulário acima para adicionar variáveis de ambiente.", + "hint": "As variáveis de ambiente são carregadas em process.env e acessadas sufixando a chave da variável de ambiente." + }, + "installer": { + "managePackages": "Pacotes NPM", + "initError": "Ocorreu um erro que impediu a inicialização do NPM.", + "name": "Nome", + "version": "Versão", + "add": "Adicionar", + "remove": "Remover", + "search": "Pesquisar", + "searchError": "Ocorreu um erro ao pesquisar por {{name}}", + "installError": "Ocorreu um erro ao instalar {{name}}", + "removeError": "Ocorreu um erro ao remover o pacote", + "latest": "Mais recente", + "installed": "Instalado", + "allowScripts": "Permitir scripts de instalação" + }, + "snippets": { + "manageSnippets": "Snippets", + "name": "Nome", + "description": "Descrição", + "search": "Pesquisar", + "notFound": "Nenhum snippet correspondente encontrado.", + "nameHint": "Define a palavra de ativação para o autocompletar.", + "noSnippets": "Nenhum snippet ainda.\nComece criando um novo snippet ou importando uma biblioteca de snippets existente.", + "insertSnippet": "Inserir Snippet", + "insertSnippetNewTab": "Inserir Snippet em Nova Aba", + "copySnippet": "Copiar Snippet", + "copied": "Copiado!", + "inserted": "Inserido!", + "insertedNewTab": "Inserido em Nova Aba!", + "newSnippet": "Novo Snippet" + } +} diff --git a/translations/zh/translation.json b/translations/zh/translation.json new file mode 100755 index 0000000..26a00f8 --- /dev/null +++ b/translations/zh/translation.json @@ -0,0 +1,332 @@ +{ + "main": { + "checkForUpdates": "检查更新…", + "restartToUpdate": "重启即可更新", + "documentation": "文档", + "reportIssue": "报告问题", + "copyDebugLog": "复制调试日志到剪切板", + "file": "文件", + "edit": "编辑", + "undo": "撤销", + "redo": "重做", + "cut": "剪切", + "copy": "复制", + "copyAll": "复制全部", + "paste": "粘贴", + "delete": "删除", + "selectAll": "全选", + "inspect": "检查", + "find": "查找", + "replace": "替换", + "toggleLineComment": "切换行注释", + "toggleBlockComment": "切换块注释", + "toggleMagicComment": "切换魔法注释", + "action": "操作", + "setWorkingDirectory": "设置工作目录…", + "formatCode": "格式化代码", + "tools": "工具", + "manageNpmPackages": "管理 NPM 包…", + "manageEnvironmentVariables": "环境变量…", + "manageSnippets": "代码片段…", + "insertSnippet": "插入代码片段", + "insertSnippetNewTab": "在新标签页插入代码片段", + "importSnippets": "导入代码片段…", + "exportSnippets": "导出代码片段…", + "confirm": "确认", + "confirmDeleteSnippet": "确定要删除此代码片段吗?", + "errorExporting": "导出代码片段失败。", + "errorImporting": "导入代码片段失败。", + "errorImportingFormat": "无效的代码片段格式。", + "view": "预览", + "actualSize": "实际大小", + "increaseFontSize": "增大字体", + "decreaseFontSize": "减小字体", + "toggleFullScreen": "全屏", + "toggleOutput": "输出", + "toggleSideBar": "侧边栏", + "toggleActivityBar": "活动栏", + "layout": "布局", + "horizontal": "水平", + "vertical": "垂直", + "themes": "主题", + "window": "窗口", + "editTabTitle": "编辑标签标题…", + "tabTitle": "标签标题", + "minimize": "最小化", + "bringAllToFront": "全部前置", + "aboutRunJs": "关于 RunJS", + "preferences": "设置…", + "services": "服务", + "hideRunJs": "隐藏 RunJS", + "hideOthers": "隐藏其它", + "showAll": "显示全部", + "activate": "激活…", + "manageLicense": "管理许可证…", + "quitRunJs": "退出 RunJS", + "help": "帮助", + "exit": "退出", + "clear": "清除", + "open": "打开…", + "save": "保存", + "saveAs": "另存为…", + "loadError": "加载错误", + "errorLoadingFile": "加载文件时候发生错误。", + "errorFileTooLarge": "此文件过大,无法使用 RunJS 打开。", + "saveErrorTitle": "保存错误", + "saveErrorContent": "保存文件时发生错误", + "pasteErrorTitle": "粘贴错误", + "pasteErrorContent": "数据太大,RunJS 无法处理", + "closeTab": "关闭标签", + "closeOtherTabs": "关闭其它标签页", + "closeTabsRight": "关闭右侧标签页", + "errorInvalidLicense": "错误:激活失败,许可证密钥无效。", + "errorLicenseNotFound": "错误:未找到许可证信息,请稍后重试。", + "errorTwoMachinesActive": "错误:已达到激活上限。你可以在线停用设备,访问\nrunjs.app/license-manager", + "errorDeactivationFailed": "错误:停用失败。请联系 mail@runjs.app 获取帮助。", + "errorConnectionProblem": "错误:连接服务器时出错。", + "errorFirewall": "错误:请求被阻止。请将 license.haaslabs.app 加入白名单", + "errorOccured": "发生错误:{{message}}", + "noUpdates": "无更新", + "currentUpToDate": "当前已是最新版本", + "foundUpdates": "有新版本", + "updateNow": "有新版本,是否现在更新?", + "newVersionAvailable": "有新版本 RunJS 可用。", + "downloadFrom": "可从官网或您偏好的包管理器下载 RunJS。", + "download": "下载", + "yes": "是", + "no": "否", + "installUpdates": "安装更新", + "updatesDownloaded": "新版本已下载,应用将退出以完成更新…", + "error": "错误", + "version": "版本 {{number}}", + "copyright": "由 Luke Haas 开发\n版权所有 © 2026 Haas Labs Ltd", + "kill": "终止", + "confirmCloseTab": "确定要关闭此标签页吗?", + "createSnippet": "创建代码片段…", + "publishGist": "发布到 Gist…", + "saveChanges": "是否保存更改?", + "lostChanges": "如果不保存,您的更改将会丢失。", + "noSave": "不保存", + "downgrade": "降级", + "downloadVersion": "下载版本 {{name}}", + "afterUpdatePeriod": "该版本发布于您的更新期限之后。", + "renewOrDowngrade": "请续订许可证或回退到版本 {{name}}。", + "updateReady": "新更新已准备好安装", + "updateReadyDetail": "RunJS 版本 {version} 已下载并准备安装", + "thankForUsing": "感谢您使用 RunJS", + "considerPurchasing": "如果觉得 RunJS 有帮助,请考虑购买许可证以支持持续开发。", + "maybeLater": "以后再说", + "export": "导出", + "exportMenuItem": "导出…", + "killTab": "终止标签页", + "wait": "等待", + "tabUnresponsive": "标签页无响应", + "curentTabUnresponsive": "当前标签页已无响应。", + "toggleStatusBar": "状态栏", + "explainResult": "解释结果", + "explain": "解释", + "welcome": "/*👋 欢迎使用 RunJS\n*\n* 要开始使用,请尝试编写一些代码\n* 以下是一些示例:\n*/\nconst helloWorld = () => 'Hello, World! 🌎';\n\nhelloWorld();\n\n// 您将在右侧看到结果输出 👉\n\nMath.pow(5, 5);\n\nawait Promise.resolve('顶级 await 🤩');\n\n[1, 2, 3, 4].map(num => num * 2);\n\n/*\n* 激活 RunJS 以解除限制并访问更多功能,包括:\n* - NPM 包\n* - 多标签页\n* - 代码片段\n* - 日志点\n* - 以及支持 RunJS 的持续开发\n*\n* 祝您编码愉快!🙂\n*/" + }, + "common": { + "run": "运行", + "stop": "停止", + "whatsNew": "新功能", + "newTab": "新建标签页", + "reopenTab": "重新打开关闭的标签页", + "close": "关闭", + "ok": "确定", + "cancel": "取消", + "buyLicense": "购买许可证", + "activate": "激活", + "premiumFeatureList": "高级功能列表", + "preferences": "设置", + "webView": "网页视图", + "editors": "编辑器", + "editorBar": "编辑器栏", + "renew": "续订许可证", + "remindMe": "稍后提醒我", + "aiChat": "AI 聊天", + "snippets": "代码片段", + "npmPackages": "NPM 包", + "newChat": "新建聊天", + "aiGreeting": "你好,我能帮你做什么?
", + "openAiNoApiKey": "要使用此功能,请在设置中输入你的 OpenAI API 密钥。
关于如何获取 OpenAI API 密钥,请参考 OpenAI 文档:https://platform.openai.com/docs/quickstart
", + "geminiAiNoApiKey": "要使用此功能,请在设置中输入你的 Gemini API 密钥。
关于如何获取 Gemini API 密钥,请参考 Gemini 文档:https://ai.google.dev/gemini-api/docs/api-key
", + "mistralNoApiKey": "要使用此功能,请在设置中输入你的 Mistral AI API 密钥。
关于如何获取 Mistral AI API 密钥,请参考 Mistral AI 文档:https://docs.mistral.ai/getting-started/quickstart/
", + "anthropicNoApiKey": "要使用此功能,请在设置中输入你的 Anthropic API 密钥。
关于如何获取 Anthropic API 密钥,请参考 Anthropic 文档:https://docs.claude.com/en/api/overview
", + "customNoBaseUrl": "要使用此功能,请在设置中输入 OpenAI 兼容 API 的基础 URL。
这可以是任何提供 OpenAI 兼容 API 的服务或本地服务器。
", + "send": "发送(Enter)", + "enterPrompt": "在此输入提示词", + "browserNode": "浏览器和 Node.js", + "browser": "浏览器", + "node": "Node.js", + "javascript": "JavaScript", + "typescript": "TypeScript", + "jsx": "JSX", + "tsx": "TSX" + }, + "editor": { + "toggleAudio": "切换音频", + "updateAvailable": "有可用更新", + "doMore": "用 RunJS 做更多事情", + "multipleTabs": "多标签页", + "npmPackages": "NPM 包", + "autocomplete": "自动补全", + "typeChecking": "类型检查", + "extraThemes": "额外主题", + "intlDateTime": "{{val, datetime}}", + "removeLimits": "激活即可解除限制", + "snippets": "代码片段", + "timeToRenew": "该续订了", + "pleaseRenew": "是时候续订了 —— 请续订许可证以继续接收更新。", + "npmPackagesDetail": "尝试新的库和框架", + "multipleTabsDetail": "多任务处理的必备工具", + "snippetsDetail": "创建你自己的代码片段集", + "extraThemesDetail": "Ayu, One Dark, Shades of Purple, SynthWave '84", + "doNotRemind": "不再提醒我", + "selectLanguage": "选择语言", + "selectRuntime": "选择运行时环境", + "toggleWebView": "切换网页视图", + "toggleSplitView": "切换分屏视图", + "codeLimitReached": "代码限制已达到", + "goToLine": "跳转到行", + "moreOptions": "更多选项", + "logPoints": "日志点", + "logPointsDetail": "添加日志点以在不修改代码的情况下记录值", + "unlockFullAccess": "加入超过 10,000 名开发者,解锁 RunJS 的完整访问权限。", + "saveOpen": "保存并打开文件", + "environmentVariables": "环境变量", + "showMore": "再显示 {{count}} 个..." + }, + "preferences": { + "ai": "AI", + "preferences": "设置", + "general": "通用", + "build": "构建", + "formatting": "格式化", + "appearance": "外观", + "advanced": "高级", + "autoFormat": "自动格式化", + "autoFormatDescription": "运行时自动格式化代码", + "formattingRules": "格式化规则", + "autoRun": "自动运行", + "autoRunDescription": "代码更改后自动运行", + "lineNumbers": "行号", + "lineNumbersDescription": "显示行号", + "lineWrap": "自动换行", + "lineWrapDescription": "长行自动换行", + "vimKeys": "Vim 按键", + "vimKeysDescription": "使用 Vim 按键绑定", + "closeBrackets": "自动闭合括号", + "closeBracketsDescription": "输入括号时自动闭合", + "autocomplete": "自动补全", + "autocompleteDescription": "输入时显示建议", + "typeChecking": "代码检查", + "typeCheckingDescription": "显示内联错误与警告", + "signatures": "函数签名", + "signaturesDescription": "输入时显示函数签名", + "hoverInfo": "悬停信息", + "hoverInfoDescription": "悬停时显示信息", + "theme": "主题", + "font": "字体", + "fontSize": "字体大小", + "invisibles": "不可见字符", + "invisiblesDescription": "显示不可见字符", + "activeLine": "当前行", + "activeLinesDescription": "高亮当前行", + "tabBar": "标签栏", + "tabBarDescription": "即使只有一个标签页也显示标签栏", + "showUndefined": "显示 undefined", + "showUndefinedDescription": "显示 undefined 值", + "loopProtection": "循环保护", + "loopProtectionDescription": "防止长时间运行的循环", + "confirmClose": "关闭确认", + "confirmCloseDescription": "关闭标签前进行确认", + "printWidth": "打印宽度", + "tabWidth": "制表符宽度", + "useTabs": "使用制表符", + "useTabsDescription": "使用制表符而非空格缩进", + "semicolons": "分号", + "semicolonsDescription": "在语句末尾添加分号", + "singleQuotes": "单引号", + "singleQuotesDescription": "使用单引号代替双引号", + "quoteProps": "对象属性加引号", + "jsxQuotes": "JSX 引号", + "jsxQuotesDescription": "在 JSX 中使用单引号代替双引号", + "trailingCommas": "尾随逗号", + "bracketSpacing": "括号间距", + "bracketSpacingDescription": "对象字面量中括号之间添加空格", + "arrowFunctionParens": "箭头函数括号", + "sideBar": "侧边栏", + "sideBarDescription": "显示侧边栏", + "activityBar": "活动栏", + "activityBarDescription": "显示活动栏", + "language": "语言", + "english": "English", + "spanish": "Español", + "japanese": "日本語", + "chinese": "中文", + "portuguese": "Português", + "changeAfterRestart": "更改将在重启应用后生效。", + "aiModel": "模型", + "aiApiKey": "API 密钥", + "autoUpdates": "自动更新", + "autoUpdatesDescription": "自动下载更新", + "defaultRuntime": "默认运行时环境", + "defaultLanguage": "默认语言", + "editor": "编辑器", + "autoLog": "自动日志", + "autoLogDescription": "自动记录每个顶级表达式的结果", + "statusBar": "状态栏", + "statusBarDescription": "显示状态栏" + }, + "license": { + "deactivateLicense": "停用许可证", + "activation": "RunJS 激活", + "yourLicense": "你的 RunJS 许可证", + "deactivateYourLicense": "如果你想在另一台电脑上使用,可在此停用你的 RunJS 许可证。", + "activateYourLicense": "你尚未激活 RunJS。请在下方输入你的许可证密钥。", + "licenseKey": "许可证密钥", + "licenseHint": "你可以在购买 RunJS 后收到的确认邮件中找到许可证密钥。", + "thanksForSupport": "感谢你对 RunJS 的支持。", + "activationComplete": "激活完成" + }, + "vars": { + "manageEnvironmentVariables": "环境变量", + "key": "KEY", + "value": "VALUE", + "add": "添加", + "save": "保存", + "remove": "移除", + "noVars": "尚未添加任何环境变量。\n请使用上方的表单添加环境变量。", + "hint": "环境变量会被加载到 process.env 中,可通过键名访问。" + }, + "installer": { + "managePackages": "NPM 包", + "initError": "初始化 NPM 时发生错误。", + "name": "名称", + "version": "版本", + "add": "添加", + "remove": "移除", + "search": "搜索", + "searchError": "搜索 {{name}} 时发生错误", + "installError": "安装 {{name}} 时发生错误", + "removeError": "移除包时发生错误", + "latest": "最新版本", + "installed": "已安装", + "allowScripts": "允许安装脚本" + }, + "snippets": { + "manageSnippets": "代码片段", + "name": "名称", + "description": "描述", + "search": "搜索", + "createSnippet": "创建新片段", + "deleteSnippet": "删除选中的片段", + "notFound": "未找到匹配的代码片段。", + "nameHint": "定义自动补全时的触发关键词。", + "noSnippets": "尚无代码片段。\n点击添加(+)创建一个片段。", + "insertSnippet": "插入代码片段", + "insertSnippetNewTab": "在新标签页中插入代码片段" + } +}