diff --git a/.babelrc b/.babelrc deleted file mode 100644 index f91b4b17e..000000000 --- a/.babelrc +++ /dev/null @@ -1,20 +0,0 @@ -{ - "presets": [ - ["env", { "loose": true }], - "stage-0", - "react" - ], - "env": { - "development": { - "presets": ["react-hmre"] - }, - "production": { - "presets": [] - } - }, - "plugins": [ - "transform-proto-to-assign", - "transform-decorators-legacy", - "transform-runtime" - ] -} diff --git a/Dockerfile b/Dockerfile index 2126c3ce2..972b56dc1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:8 +FROM node:10 MAINTAINER Cheton Wu ADD package.json package.json @@ -7,4 +7,4 @@ RUN npm install --production ADD . . EXPOSE 8000 -CMD ["bin/cnc"] +CMD ["bin/cncjs"] diff --git a/README.md b/README.md index c98370e97..e28b4a0d2 100644 --- a/README.md +++ b/README.md @@ -72,9 +72,8 @@ For a more complete introduction, see the [Introduction](https://github.com/cncj Version | Supported Level :------- |:--------------- 4 | Dropped support - 6 | Recommended for production use - 8 | Recommended for production use - 9 | Supported + 6 | Supported + 8 | Supported 10 | Supported ## Getting Started @@ -98,8 +97,8 @@ export NVM_DIR="$HOME/.nvm" Once installed, you can select Node.js versions with: ``` -nvm install 6 -nvm use 6 +nvm install 10 +nvm use 10 ``` It's also recommended that you upgrade npm to the latest version. To upgrade, run: diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 000000000..07dba0c32 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,10 @@ +module.exports = { + extends: '@trendmicro/babel-config', + presets: [ + '@babel/preset-env', + '@babel/preset-react' + ], + plugins: [ + 'lodash' + ] +}; diff --git a/bin/cnc b/bin/cnc index b9f05a45d..87292b891 100755 --- a/bin/cnc +++ b/bin/cnc @@ -1,15 +1,15 @@ #!/usr/bin/env node -require('babel-polyfill'); +require('@babel/polyfill'); -var cnc; +const chalk = require('chalk'); -if (process.env.NODE_ENV === 'development') { - cnc = require('../output/cnc').default; -} else { - cnc = require('../dist/cnc/cnc').default; -} +console.warn(chalk.yellow('Warning: The "cnc" executable is deprecated and will be removed in the next major release. Use "cncjs" instead to avoid deprecation.\n')); -cnc().catch(err => { +const launchServer = (process.env.NODE_ENV === 'development') + ? require('../output/server-cli').default + : require('../dist/cncjs/server-cli').default; + +launchServer().catch(err => { console.error('Error:', err); }); diff --git a/bin/cncjs b/bin/cncjs new file mode 100755 index 000000000..cbe2e60c1 --- /dev/null +++ b/bin/cncjs @@ -0,0 +1,11 @@ +#!/usr/bin/env node + +require('@babel/polyfill'); + +const launchServer = (process.env.NODE_ENV === 'development') + ? require('../output/server-cli').default + : require('../dist/cncjs/server-cli').default; + +launchServer().catch(err => { + console.error('Error:', err); +}); diff --git a/examples/.cncrc b/examples/.cncrc index ce0be5319..3160794bd 100644 --- a/examples/.cncrc +++ b/examples/.cncrc @@ -22,11 +22,11 @@ "commands": [ { "title": "Update (root user)", - "commands": "sudo npm install -g cncjs@latest --unsafe-perm; pkill -a -f cnc" + "commands": "sudo npm install -g cncjs@latest --unsafe-perm; pkill -a -f cncjs" }, { "title": "Update (non-root user)", - "commands": "npm install -g cncjs@latest; pkill -a -f cnc" + "commands": "npm install -g cncjs@latest; pkill -a -f cncjs" }, { "title": "Reboot", diff --git a/i18next-scanner.webconfig.js b/i18next-scanner.config.app.js similarity index 77% rename from i18next-scanner.webconfig.js rename to i18next-scanner.config.app.js index 9e706e797..63ebe72e1 100644 --- a/i18next-scanner.webconfig.js +++ b/i18next-scanner.config.app.js @@ -6,9 +6,9 @@ const languages = require('./build.config').languages; module.exports = { src: [ - 'src/web/**/*.{html,hbs,js,jsx}', + 'src/app/**/*.{html,hbs,js,jsx}', // Use ! to filter out files or directories - '!src/web/{vendor,i18n}/**', + '!src/app/{vendor,i18n}/**', '!test/**', '!**/node_modules/**' ], @@ -17,24 +17,34 @@ module.exports = { debug: false, removeUnusedKeys: true, sort: false, - lngs: languages, func: { list: [], // Use an empty array to bypass the default list: i18n.t, i18next.t extensions: ['.js', '.jsx'] }, - defaultValue: (lng, ns, key) => { - if (lng === 'en') { - return key; // Use key as value for base language + trans: { + component: 'I18n', + i18nKey: 'i18nKey', + defaultsKey: 'defaults', + extensions: ['.js', '.jsx'], + fallbackKey: function(ns, value) { + return value; } - return ''; // Return empty string for other languages }, + lngs: languages, ns: [ + 'gcode', 'resource' // default ], defaultNs: 'resource', + defaultValue: (lng, ns, key) => { + if (lng === 'en') { + return key; // Use key as value for base language + } + return ''; // Return empty string for other languages + }, resource: { - loadPath: 'src/web/i18n/{{lng}}/{{ns}}.json', - savePath: 'src/web/i18n/{{lng}}/{{ns}}.json', // or 'src/web/i18n/${lng}/${ns}.saveAll.json' + loadPath: 'src/app/i18n/{{lng}}/{{ns}}.json', + savePath: 'src/app/i18n/{{lng}}/{{ns}}.json', // or 'src/app/i18n/${lng}/${ns}.saveAll.json' jsonIndent: 4 }, nsSeparator: ':', // namespace separator diff --git a/i18next-scanner.appconfig.js b/i18next-scanner.config.server.js similarity index 77% rename from i18next-scanner.appconfig.js rename to i18next-scanner.config.server.js index 1a71a36a2..005779328 100644 --- a/i18next-scanner.appconfig.js +++ b/i18next-scanner.config.server.js @@ -7,20 +7,30 @@ const languages = require('./build.config').languages; module.exports = { options: { debug: false, + removeUnusedKeys: false, sort: false, func: { list: ['i18n.t', 't'], extensions: ['.js', '.jsx'] }, + trans: { + component: 'I18n', + i18nKey: 'i18nKey', + defaultsKey: 'defaults', + extensions: ['.js', '.jsx'], + fallbackKey: function(ns, value) { + return value; + } + }, lngs: languages, - defaultValue: '__L10N__', // to indicate that a default value has not been defined for the key ns: [ 'resource' // default ], defaultNs: 'resource', + defaultValue: '__L10N__', // to indicate that a default value has not been defined for the key resource: { - loadPath: 'src/app/i18n/{{lng}}/{{ns}}.json', - savePath: 'src/app/i18n/{{lng}}/{{ns}}.json', // or 'src/app/i18n/${lng}/${ns}.saveAll.json' + loadPath: 'src/server/i18n/{{lng}}/{{ns}}.json', + savePath: 'src/server/i18n/{{lng}}/{{ns}}.json', // or 'src/server/i18n/${lng}/${ns}.saveAll.json' jsonIndent: 4 }, nsSeparator: ':', // namespace separator diff --git a/src/web/assets/index.hbs b/index.hbs similarity index 87% rename from src/web/assets/index.hbs rename to index.hbs index 1eb7adf35..ba6c6c4fe 100644 --- a/src/web/assets/index.hbs +++ b/index.hbs @@ -6,6 +6,8 @@ {{title}} + + diff --git a/package.json b/package.json index ebbbd0891..dd00457eb 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,13 @@ { "name": "cncjs", - "version": "1.9.20", + "version": "1.10.0", "description": "A web-based interface for CNC milling controller running Grbl, Marlin, Smoothieware, or TinyG", "homepage": "https://github.com/cncjs/cncjs", "author": "Cheton Wu ", - "main": "./dist/cnc/cnc.js", + "main": "./dist/cncjs/server-cli.js", "bin": { - "cnc": "./bin/cnc", - "cncjs": "./bin/cnc", - "cncjs-server": "./bin/cnc" + "cncjs": "./bin/cncjs", + "cnc": "./bin/cnc" }, "files": [ "bin", @@ -21,7 +20,7 @@ }, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=6" }, "preferGlobal": true, "scripts": { @@ -30,20 +29,20 @@ "prebuild-dev": "npm run package-sync && bash scripts/prebuild-dev.sh", "prebuild-prod": "npm run package-sync && bash scripts/prebuild-prod.sh", "build": "npm run build-prod", - "build-i18n": "concurrently --kill-others-on-fail --names \"build-i18n-app,build-i18n-web\" \"npm run build-i18n-app\" \"npm run build-i18n-web\"", - "build-i18n-app": "i18next-scanner --config i18next-scanner.appconfig.js \"src/app/**/*.{html,js,jsx}\" \"!src/app/i18n/**\" \"!**/node_modules/**\"", - "build-i18n-web": "i18next-scanner --config i18next-scanner.webconfig.js \"src/web/**/*.{html,js,jsx}\" \"!src/web/i18n/**\" \"!**/node_modules/**\"", - "build-latest": "concurrently --kill-others-on-fail --names \"build-prod-app,build-prod-web\" \"npm run build-prod-app\" \"npm run build-prod-web\"", - "build-dev": "concurrently --kill-others-on-fail --names \"build-dev-app,build-dev-web\" \"npm run build-dev-app\" \"npm run build-dev-web\"", - "build-dev-app": "cross-env NODE_ENV=development webpack-cli --progress --config webpack.appconfig.development.js && npm run build-i18n-app", - "build-dev-web": "npm run build-i18n-web", - "build-prod": "concurrently --kill-others-on-fail --names \"build-prod-app,build-prod-web\" \"npm run build-prod-app\" \"npm run build-prod-web\"", - "build-prod-app": "cross-env NODE_ENV=production webpack-cli --config webpack.appconfig.production.js && npm run build-i18n-app", - "build-prod-web": "cross-env NODE_ENV=production webpack-cli --config webpack.webconfig.production.js && npm run build-i18n-web", - "postbuild-dev-app": "bash -c 'mkdir -p output/app; cp -af src/app/{i18n,views} output/app/'", - "postbuild-dev-web": "bash -c 'mkdir -p output/web; cp -af src/web/{favicon.ico,i18n,images,textures} output/web/'", - "postbuild-prod-app": "bash -c 'mkdir -p dist/cnc/app; cp -af src/app/{i18n,views} dist/cnc/app/'", - "postbuild-prod-web": "bash -c 'mkdir -p dist/cnc/web; cp -af src/web/{favicon.ico,i18n,images,textures} dist/cnc/web/'", + "build-i18n": "concurrently --kill-others-on-fail --names \"build-i18n-server,build-i18n-app\" \"npm run build-i18n-server\" \"npm run build-i18n-app\"", + "build-i18n-server": "i18next-scanner --config i18next-scanner.config.server.js \"src/server/**/*.{html,js,jsx}\" \"!src/server/i18n/**\" \"!**/node_modules/**\"", + "build-i18n-app": "i18next-scanner --config i18next-scanner.config.app.js \"src/app/**/*.{html,js,jsx}\" \"!src/app/i18n/**\" \"!**/node_modules/**\"", + "build-latest": "concurrently --kill-others-on-fail --names \"build-prod-server,build-prod-app\" \"npm run build-prod-server\" \"npm run build-prod-app\"", + "build-dev": "concurrently --kill-others-on-fail --names \"build-dev-server,build-dev-app\" \"npm run build-dev-server\" \"npm run build-dev-app\"", + "build-dev-server": "cross-env NODE_ENV=development webpack-cli --progress --config webpack.config.server.development.js && npm run build-i18n-server", + "build-dev-app": "npm run build-i18n-app", + "build-prod": "concurrently --kill-others-on-fail --names \"build-prod-server,build-prod-app\" \"npm run build-prod-server\" \"npm run build-prod-app\"", + "build-prod-server": "cross-env NODE_ENV=production webpack-cli --config webpack.config.server.production.js && npm run build-i18n-server", + "build-prod-app": "cross-env NODE_ENV=production webpack-cli --config webpack.config.app.production.js && npm run build-i18n-app", + "postbuild-dev-server": "bash -c 'mkdir -p output/server; cp -af src/server/{i18n,views} output/server/'", + "postbuild-dev-app": "bash -c 'mkdir -p output/app; cp -af src/app/{favicon.ico,i18n,images,assets} output/app/'", + "postbuild-prod-server": "bash -c 'mkdir -p dist/cncjs/server; cp -af src/server/{i18n,views} dist/cncjs/server/'", + "postbuild-prod-app": "bash -c 'mkdir -p dist/cncjs/app; cp -af src/app/{favicon.ico,i18n,images,assets} dist/cncjs/app/'", "clean": "bash -c 'rm -rf ./dist ./output'", "electron": "electron", "electron-builder": "build", @@ -56,18 +55,18 @@ "build:linux-armv7l": "bash -c 'scripts/electron-builder.sh --linux --armv7l'", "build:win-ia32": "bash -c 'scripts/electron-builder.sh --win --ia32'", "build:win-x64": "bash -c 'scripts/electron-builder.sh --win --x64'", - "start": "./bin/cnc", - "start-electron": "electron ./dist/cnc/main", - "watch-dev": "cross-env NODE_ENV=development webpack-cli --watch --config webpack.appconfig.development.js", - "start-dev": "cross-env NODE_ENV=development ./bin/cnc -vv -p 8000 -m /widget:https://cncjs.github.io/cncjs-widget-boilerplate/v1/", + "start": "./bin/cncjs", + "start-electron": "electron ./dist/cncjs/main", + "watch-dev": "cross-env NODE_ENV=development webpack-cli --watch --config webpack.config.server.development.js", + "start-dev": "cross-env NODE_ENV=development ./bin/cncjs -vv -p 8000 -m /widget:https://cncjs.github.io/cncjs-widget-boilerplate/v1/", "dev": "npm run build-dev && npm run start-dev", - "prod": "npm run build-prod && NODE_ENV=production ./bin/cnc", + "prod": "npm run build-prod && NODE_ENV=production ./bin/cncjs", "eslint": "npm run eslint:build", "eslint:build": "eslint --ext .js --ext .jsx *.js scripts test", "eslint:debug": "echo \"Checking code style...\"; DEBUG=eslint:cli-engine eslint --ext .js --ext .jsx *.js src scripts test", - "stylint": "stylint src/web", - "test": "tap test/*.js --no-timeout --node-arg=--require --node-arg=babel-register --node-arg=--require --node-arg=babel-polyfill", - "coveralls": "tap test/*.js --coverage --coverage-report=text-lcov --nyc-arg=--require --nyc-arg=babel-register --nyc-arg=--require --nyc-arg=babel-polyfill | coveralls", + "stylint": "stylint src/app", + "test": "tap test/*.js --no-timeout --node-arg=--require --node-arg=@babel/register --node-arg=--require --node-arg=@babel/polyfill", + "coveralls": "tap test/*.js --coverage --coverage-report=text-lcov --nyc-arg=--require --nyc-arg=@babel/register --nyc-arg=--require --nyc-arg=@babel/polyfill | coveralls", "postinstall": "opencollective postinstall" }, "build": { @@ -78,7 +77,7 @@ "directories": { "buildResources": "electron-build", "output": "output", - "app": "dist/cnc" + "app": "dist/cncjs" }, "publish": [], "mac": { @@ -137,6 +136,8 @@ "socket.io" ], "dependencies": { + "@babel/polyfill": "~7.4.3", + "@babel/runtime": "~7.4.3", "@trendmicro/react-anchor": "~0.5.6", "@trendmicro/react-breadcrumbs": "~0.5.5", "@trendmicro/react-buttons": "~1.3.1", @@ -159,76 +160,74 @@ "@trendmicro/react-toggle-switch": "~0.5.7", "@trendmicro/react-tooltip": "~0.6.0", "@trendmicro/react-validation": "~0.1.0", - "babel-polyfill": "~6.26.0", - "babel-runtime": "~6.26.0", "bcrypt-nodejs": "0.0.3", "body-parser": "~1.18.3", "bootstrap": "~3.3.7", "chained-function": "~0.5.0", - "chalk": "~2.4.1", + "chalk": "~2.4.2", "classnames": "~2.2.6", - "cli-color": "~1.2.0", + "cli-color": "~1.4.0", "cncjs-controller": "~1.3.0", "colornames": "~1.1.1", - "commander": "~2.16.0", - "compression": "~1.7.3", - "connect-multiparty": "~2.1.1", + "commander": "~2.20.0", + "compression": "~1.7.4", + "connect-multiparty": "~2.2.0", "connect-restreamer": "~1.0.3", "consolidate": "~0.15.1", - "cookie-parser": "~1.4.3", - "debug": "~3.1.0", + "cookie-parser": "~1.4.4", + "debug": "~4.1.1", "deep-keys": "~0.5.0", - "detect-browser": "~3.0.0", - "electron-config": "~1.0.0", + "detect-browser": "~4.4.0", + "electron-store": "~3.2.0", "ensure-array": "~1.0.0", "errorhandler": "~1.5.0", - "es5-shim": "~4.5.10", + "es5-shim": "~4.5.13", "escodegen": "~1.11.1", "esprima": "~4.0.1", "expand-tilde": "~2.0.2", "expr-eval": "~1.2.2", - "express": "~4.16.3", + "express": "~4.16.4", "express-jwt": "~5.3.1", - "express-session": "~1.15.6", + "express-session": "~1.16.1", "final-form": "~4.12.0", "font-awesome": "~4.7.0", "frac": "~1.1.2", "gcode-interpreter": "~2.1.0", "gcode-parser": "~1.3.6", "gcode-toolpath": "~2.2.0", - "history": "~4.7.2", + "history": "~4.9.0", "hogan.js": "~3.0.2", "http-proxy": "~1.17.0", - "i18next": "~11.5.0", - "i18next-browser-languagedetector": "~2.2.2", - "i18next-express-middleware": "~1.2.0", + "i18next": "~15.0.9", + "i18next-browser-languagedetector": "~3.0.1", + "i18next-express-middleware": "~1.8.0", "i18next-node-fs-backend": "~2.1.3", - "i18next-xhr-backend": "~1.5.1", + "i18next-xhr-backend": "~2.0.1", "infinite-tree": "~1.16.2", - "is-electron": "~2.1.0", - "jimp": "~0.2.28", + "is-electron": "~2.2.0", + "jimp": "~0.6.1", "js-polyfills": "~0.1.42", - "jsonwebtoken": "~8.3.0", + "jsonwebtoken": "~8.5.1", "jsuri": "~1.3.1", "keycode": "~2.2.0", - "lodash": "~4.17.10", + "lodash": "~4.17.11", + "memoize-one": "~5.0.4", "method-override": "~3.0.0", "minimatch": "~3.0.4", "mkdirp": "~0.5.1", - "moment": "~2.22.2", - "morgan": "~1.9.0", - "mousetrap": "~1.6.2", - "multimatch": "~2.1.0", + "moment": "~2.24.0", + "morgan": "~1.9.1", + "mousetrap": "~1.6.3", "namespace-constants": "~0.5.0", - "normalize.css": "~8.0.0", + "normalize.css": "~8.0.1", "opencollective": "~1.0.3", "perfect-scrollbar": "~1.4.0", - "prop-types": "~15.6.2", - "pubsub-js": "~1.6.0", - "push.js": "~1.0.7", - "qs": "~6.5.2", + "prop-types": "~15.7.2", + "pubsub-js": "~1.7.0", + "push.js": "~1.0.9", + "qs": "~6.7.0", "range_check": "~1.4.0", - "rc-slider": "~8.6.1", + "rc-slider": "~8.6.9", "react": "~15.6.2", "react-bootstrap": "~0.32.1", "react-dom": "~15.6.2", @@ -236,7 +235,8 @@ "react-facebook-loading": "~0.6.2", "react-final-form": "~3.7.0", "react-foreach": "~0.1.1", - "react-ga": "~2.5.3", + "react-ga": "~2.5.7", + "react-i18next": "~10.7.0", "react-icon-base": "~2.1.2", "react-infinite-tree": "~0.7.1", "react-redux": "~5.0.7", @@ -245,103 +245,104 @@ "react-router-dom": "~4.3.1", "react-router-redux": "~5.0.0-alpha.6", "react-select": "~1.2.1", - "react-sortablejs": "~1.3.6", - "react-tiny-virtual-list": "~2.1.6", + "react-sortablejs": "~1.5.1", + "react-tiny-virtual-list": "~2.2.0", "react-toggle": "~4.0.2", - "recompose": "~0.27.1", - "redux": "~4.0.0", - "registry-auth-token": "~3.3.2", - "registry-url": "~4.0.0", - "rimraf": "~2.6.2", - "semver": "~5.5.0", - "serialport": "~6.2.2", + "recompose": "~0.30.0", + "redux": "~4.0.1", + "registry-auth-token": "~3.4.0", + "registry-url": "~5.1.0", + "rimraf": "~2.6.3", + "semver": "~6.0.0", + "serialport": "~7.1.4", "serve-favicon": "~2.5.0", "serve-static": "~1.13.2", "session-file-store": "~1.2.0", "sha1": "~1.1.1", - "shortid": "~2.2.12", + "shortid": "~2.2.14", "socket.io": "~2.2.0", "socket.io-client": "~2.2.0", "socketio-jwt": "~4.5.0", - "sortablejs": "~1.7.0", + "sortablejs": "~1.9.0", "spawn-default-shell": "~2.0.0", - "styled-components": "~3.3.3", + "styled-components": "~3.4.9", "superagent": "~3.8.3", "superagent-use": "~0.1.0", - "three": "~0.94.0", + "three": "~0.103.0", "universal-logger": "~1.0.1", "universal-logger-browser": "~1.0.2", "uuid": "~3.3.2", "watch": "~1.0.2", "webappengine": "~1.2.0", - "winston": "~3.0.0", + "winston": "~3.2.1", "xterm": "~3.0.2" }, "devDependencies": { - "babel-cli": "~6.26.0", - "babel-core": "~6.26.3", - "babel-eslint": "~8.2.6", - "babel-loader": "~7.1.5", - "babel-plugin-transform-decorators-legacy": "~1.3.5", - "babel-plugin-transform-proto-to-assign": "~6.26.0", - "babel-plugin-transform-runtime": "~6.23.0", - "babel-preset-env": "~1.7.0", - "babel-preset-react": "~6.24.1", - "babel-preset-react-hmre": "~1.1.1", - "babel-preset-stage-0": "~6.24.1", - "boolean": "~0.1.3", + "@babel/cli": "~7.4.3", + "@babel/core": "~7.4.3", + "@babel/node": "~7.2.2", + "@babel/polyfill": "~7.4.3", + "@babel/preset-env": "~7.4.3", + "@babel/preset-react": "~7.0.0", + "@babel/register": "~7.4.0", + "@trendmicro/babel-config": "~1.0.0-alpha", + "babel-core": "~7.0.0-bridge.0", + "babel-eslint": "~10.0.1", + "babel-loader": "~8.0.5", + "babel-plugin-lodash": "~3.3.4", + "boolean": "~1.0.0", "bundle-loader": "~0.5.6", - "concurrently": "~3.6.1", - "coveralls": "~3.0.2", + "concurrently": "~4.1.0", + "coveralls": "~3.0.3", "cross-env": "~5.2.0", - "css-loader": "~1.0.0", - "css-split-webpack-plugin": "~0.2.5", - "dotenv": "~6.0.0", - "electron": "~4.1.0", + "css-loader": "~2.1.1", + "css-split-webpack-plugin": "~0.2.6", + "dotenv": "~7.0.0", + "electron": "~4.1.4", "electron-builder": "~20.39.0", "electron-rebuild": "~1.8.4", - "eslint": "~5.6.0", + "eslint": "~5.16.0", "eslint-config-trendmicro": "~1.4.1", - "eslint-import-resolver-webpack": "~0.10.1", - "eslint-loader": "~2.1.0", - "eslint-plugin-import": "~2.14.0", - "eslint-plugin-jsx-a11y": "~6.1.1", - "eslint-plugin-react": "~7.11.1", + "eslint-import-resolver-webpack": "~0.11.1", + "eslint-loader": "~2.1.2", + "eslint-plugin-import": "~2.17.2", + "eslint-plugin-jsx-a11y": "~6.2.1", + "eslint-plugin-react": "~7.12.4", "eventsource-polyfill": "~0.9.6", - "extract-text-webpack-plugin": "~3.0.2", - "file-loader": "~1.1.11", - "find-imports": "~0.5.2", - "github-release-cli": "~1.0.1", - "glob": "~7.1.2", + "file-loader": "~3.0.1", + "find-imports": "~1.1.0", + "github-release-cli": "~1.1.0", + "glob": "~7.1.3", "html-webpack-plugin": "~3.2.0", - "i18next-scanner": "~2.6.4", + "i18next-scanner": "~2.10.1", "imports-loader": "~0.8.0", "json-loader": "~0.5.7", - "mini-css-extract-plugin": "~0.4.1", + "mini-css-extract-plugin": "~0.6.0", "nib": "~1.1.2", - "optimize-css-assets-webpack-plugin": "~5.0.0", + "optimize-css-assets-webpack-plugin": "~5.0.1", "pre-push": "~0.1.1", - "progress": "~2.0.0", - "redux-devtools": "~3.4.1", + "progress": "~2.0.3", + "react-hot-loader": "~4.8.4", + "redux-devtools": "~3.5.0", "run-sequence": "~2.2.1", - "style-loader": "~0.21.0", + "style-loader": "~0.23.1", "stylint": "~1.5.9", "stylint-loader": "~1.0.0", "stylus": "~0.54.5", "stylus-loader": "~3.0.2", - "tap": "^12.6.1", + "tap": "~12.6.2", "text-table": "~0.2.0", "transform-loader": "~0.2.4", - "uglifyjs-webpack-plugin": "~1.2.7", - "url-loader": "~1.0.1", - "webpack": "~4.16.3", - "webpack-cli": "~3.1.0", - "webpack-dev-middleware": "~3.1.3", - "webpack-dev-server": "~3.1.5", - "webpack-hot-middleware": "~2.22.3", - "webpack-manifest-plugin": "~2.0.3", + "terser-webpack-plugin": "~1.2.3", + "url-loader": "~1.1.2", + "webpack": "~4.30.0", + "webpack-cli": "~3.3.1", + "webpack-dev-middleware": "~3.6.2", + "webpack-dev-server": "~3.3.1", + "webpack-hot-middleware": "~2.24.3", + "webpack-manifest-plugin": "~2.0.4", "webpack-node-externals": "~1.7.2", - "write-file-webpack-plugin": "~4.3.2" + "write-file-webpack-plugin": "~4.5.0" }, "pre-push": [ "eslint:debug" diff --git a/scripts/electron-builder.sh b/scripts/electron-builder.sh index e440a5a9f..b85a59d8d 100755 --- a/scripts/electron-builder.sh +++ b/scripts/electron-builder.sh @@ -17,7 +17,7 @@ if [[ ( $# == "--help") || $# == "-h" ]]; then exit 0 fi -pushd "$__dirname/../dist/cnc" +pushd "$__dirname/../dist/cncjs" echo "Cleaning up \"`pwd`/node_modules\"" rm -rf node_modules echo "Installing packages..." @@ -28,7 +28,7 @@ popd echo "Rebuild native modules using electron ${electron_version}" npm run electron-rebuild -- \ --version=${electron_version:1} \ - --module-dir=dist/cnc \ + --module-dir=dist/cncjs \ --which-module=serialport cross-env USE_HARD_LINKS=false npm run electron-builder -- "$@" diff --git a/scripts/package-sync.js b/scripts/package-sync.js index 23601a237..a5a79fa78 100755 --- a/scripts/package-sync.js +++ b/scripts/package-sync.js @@ -12,10 +12,10 @@ const pkgApp = require('../src/package.json'); const files = [ 'src/*.js', - 'src/app/**/*.{js,jsx}' + 'src/server/**/*.{js,jsx}' ]; const deps = [ - 'babel-runtime', // 'babel-runtime' is required for electron app + '@babel/runtime', // 'babel-runtime' is required for electron app 'debug' // 'debug' is required for electron app ].concat(findImports(files, { flatten: true })).sort(); diff --git a/scripts/prebuild-dev.sh b/scripts/prebuild-dev.sh index b7554b0b2..50521fbfb 100755 --- a/scripts/prebuild-dev.sh +++ b/scripts/prebuild-dev.sh @@ -5,5 +5,10 @@ rm -rf output/* pushd src cp -af package.json ../output/ -babel -d ../output *.js electron-app/**/*.js +cross-env NODE_ENV=development babel "*.js" \ + --config-file ../babel.config.js \ + --out-dir ../output +cross-env NODE_ENV=development babel "electron-app/**/*.js" \ + --config-file ../babel.config.js \ + --out-dir ../output/electron-app popd diff --git a/scripts/prebuild-prod.sh b/scripts/prebuild-prod.sh index d593b8d05..b3bae312c 100755 --- a/scripts/prebuild-prod.sh +++ b/scripts/prebuild-prod.sh @@ -4,7 +4,12 @@ mkdir -p dist rm -rf dist/* pushd src -mkdir -p ../dist/cnc/ -cp -af package.json ../dist/cnc/ -babel -d ../dist/cnc/ *.js electron-app/**/*.js +mkdir -p ../dist/cncjs/ +cp -af package.json ../dist/cncjs/ +cross-env NODE_ENV=production babel "*.js" \ + --config-file ../babel.config.js \ + --out-dir ../dist/cncjs +cross-env NODE_ENV=production babel "electron-app/**/*.js" \ + --config-file ../babel.config.js \ + --out-dir ../dist/cncjs/electron-app popd diff --git a/src/web/.gitignore b/src/app/.gitignore similarity index 100% rename from src/web/.gitignore rename to src/app/.gitignore diff --git a/src/web/api/constants.js b/src/app/api/constants.js similarity index 100% rename from src/web/api/constants.js rename to src/app/api/constants.js diff --git a/src/app/api/index.js b/src/app/api/index.js index 83185a5a8..88c89be29 100644 --- a/src/app/api/index.js +++ b/src/app/api/index.js @@ -1,11 +1,695 @@ -export * as version from './api.version'; -export * as state from './api.state'; -export * as gcode from './api.gcode'; -export * as controllers from './api.controllers'; -export * as watch from './api.watch'; -export * as commands from './api.commands'; -export * as events from './api.events'; -export * as machines from './api.machines'; -export * as macros from './api.macros'; -export * as mdi from './api.mdi'; -export * as users from './api.users'; +import ensureArray from 'ensure-array'; +import superagent from 'superagent'; +import superagentUse from 'superagent-use'; +import store from '../store'; + +const bearer = (request) => { + const token = store.get('session.token'); + if (token) { + request.set('Authorization', 'Bearer ' + token); + } +}; + +// Modify request headers and query parameters to prevent caching +const noCache = (request) => { + const now = Date.now(); + request.set('Cache-Control', 'no-cache'); + request.set('X-Requested-With', 'XMLHttpRequest'); + + if (request.method === 'GET' || request.method === 'HEAD') { + // Force requested pages not to be cached by the browser by appending "_={timestamp}" to the GET parameters, this will work correctly with HEAD and GET requests. The parameter is not needed for other types of requests, except in IE8 when a POST is made to a URL that has already been requested by a GET. + request._query = ensureArray(request._query); + request._query.push(`_=${now}`); + } +}; + +const authrequest = superagentUse(superagent); +authrequest.use(bearer); +authrequest.use(noCache); + +// +// Authentication +// +const signin = (options) => new Promise((resolve, reject) => { + const { token, name, password } = { ...options }; + + authrequest + .post('/api/signin') + .send({ token, name, password }) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +// +// Latest Version +// +const getLatestVersion = () => new Promise((resolve, reject) => { + authrequest + .get('/api/version/latest') + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +// +// State +// +const getState = (options) => new Promise((resolve, reject) => { + const { key } = { ...options }; + + authrequest + .get('/api/state') + .query({ key: key }) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +const setState = (options) => new Promise((resolve, reject) => { + const data = { ...options }; + + authrequest + .post('/api/state') + .send(data) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +const unsetState = (options) => new Promise((resolve, reject) => { + const { key } = { ...options }; + + authrequest + .delete('/api/state') + .query({ key: key }) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +// +// G-code +// +const loadGCode = (options) => new Promise((resolve, reject) => { + const { port = '', name = '', gcode = '', context = {} } = { ...options }; + + authrequest + .post('/api/gcode') + .send({ port, name, gcode, context }) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +const fetchGCode = (options) => new Promise((resolve, reject) => { + const { port = '' } = { ...options }; + + authrequest + .get('/api/gcode') + .query({ port: port }) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +const downloadGCode = (options) => { + const { port = '' } = { ...options }; + + const $form = document.createElement('form'); + $form.setAttribute('id', 'export'); + $form.setAttribute('method', 'POST'); + $form.setAttribute('enctype', 'multipart/form-data'); + $form.setAttribute('action', 'api/gcode/download'); + + const $port = document.createElement('input'); + $port.setAttribute('name', 'port'); + $port.setAttribute('value', port); + + const $token = document.createElement('input'); + $token.setAttribute('name', 'token'); + $token.setAttribute('value', store.get('session.token')); + + $form.appendChild($port); + $form.appendChild($token); + + document.body.append($form); + $form.submit(); + document.body.removeChild($form); +}; + +// +// Controllers +// +const controllers = {}; + +controllers.get = () => new Promise((resolve, reject) => { + authrequest + .get('/api/controllers') + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +// +// Watch Directory +// +const watch = {}; + +watch.getFiles = (options) => new Promise((resolve, reject) => { + const { path } = { ...options }; + + authrequest + .post('/api/watch/files') + .send({ path }) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +watch.readFile = (options) => new Promise((resolve, reject) => { + const { file } = { ...options }; + + authrequest + .post('/api/watch/file') + .send({ file }) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +// +// Users +// +const users = {}; + +users.fetch = (options) => new Promise((resolve, reject) => { + authrequest + .get('/api/users') + .query(options) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +users.create = (options) => new Promise((resolve, reject) => { + authrequest + .post('/api/users') + .send(options) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +users.read = (id) => new Promise((resolve, reject) => { + authrequest + .get('/api/users/' + id) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +users.delete = (id) => new Promise((resolve, reject) => { + authrequest + .delete('/api/users/' + id) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +users.update = (id, options) => new Promise((resolve, reject) => { + authrequest + .put('/api/users/' + id) + .send(options) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +// +// Events +// +const events = {}; + +events.fetch = (options) => new Promise((resolve, reject) => { + authrequest + .get('/api/events') + .query(options) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +events.create = (options) => new Promise((resolve, reject) => { + authrequest + .post('/api/events') + .send(options) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +events.read = (id) => new Promise((resolve, reject) => { + authrequest + .get('/api/events/' + id) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +events.delete = (id) => new Promise((resolve, reject) => { + authrequest + .delete('/api/events/' + id) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +events.update = (id, options) => new Promise((resolve, reject) => { + authrequest + .put('/api/events/' + id) + .send(options) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +// +// Macros +// +const macros = {}; + +macros.fetch = (options) => new Promise((resolve, reject) => { + authrequest + .get('/api/macros') + .query(options) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +macros.create = (options) => new Promise((resolve, reject) => { + authrequest + .post('/api/macros') + .send(options) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +macros.read = (id) => new Promise((resolve, reject) => { + authrequest + .get('/api/macros/' + id) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +macros.update = (id, options) => new Promise((resolve, reject) => { + authrequest + .put('/api/macros/' + id) + .send(options) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +macros.delete = (id) => new Promise((resolve, reject) => { + authrequest + .delete('/api/macros/' + id) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +// +// MDI +// +const mdi = {}; + +mdi.fetch = (options) => new Promise((resolve, reject) => { + authrequest + .get('/api/mdi') + .query(options) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +mdi.create = (options) => new Promise((resolve, reject) => { + authrequest + .post('/api/mdi') + .send(options) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +mdi.read = (id) => new Promise((resolve, reject) => { + authrequest + .get('/api/mdi/' + id) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +mdi.update = (id, options) => new Promise((resolve, reject) => { + authrequest + .put('/api/mdi/' + id) + .send(options) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +mdi.bulkUpdate = (options) => new Promise((resolve, reject) => { + authrequest + .put('/api/mdi/') + .send(options) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +mdi.delete = (id) => new Promise((resolve, reject) => { + authrequest + .delete('/api/mdi/' + id) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +// +// Commands +// +const commands = {}; + +commands.fetch = (options) => new Promise((resolve, reject) => { + authrequest + .get('/api/commands') + .query(options) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +commands.create = (options) => new Promise((resolve, reject) => { + authrequest + .post('/api/commands') + .send(options) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +commands.read = (id) => new Promise((resolve, reject) => { + authrequest + .get('/api/commands/' + id) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +commands.update = (id, options) => new Promise((resolve, reject) => { + authrequest + .put('/api/commands/' + id) + .send(options) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +commands.delete = (id) => new Promise((resolve, reject) => { + authrequest + .delete('/api/commands/' + id) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +commands.run = (id) => new Promise((resolve, reject) => { + authrequest + .post('/api/commands/run/' + id) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +// +// Machines +// +const machines = {}; + +machines.fetch = (options) => new Promise((resolve, reject) => { + authrequest + .get('/api/machines') + .query(options) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +machines.create = (options) => new Promise((resolve, reject) => { + authrequest + .post('/api/machines') + .send(options) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +machines.read = (id) => new Promise((resolve, reject) => { + authrequest + .get('/api/machines/' + id) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +machines.update = (id, options) => new Promise((resolve, reject) => { + authrequest + .put('/api/machines/' + id) + .send(options) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +machines.delete = (id) => new Promise((resolve, reject) => { + authrequest + .delete('/api/machines/' + id) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +machines.run = (id) => new Promise((resolve, reject) => { + authrequest + .post('/api/machines/run/' + id) + .end((err, res) => { + if (err) { + reject(res); + } else { + resolve(res); + } + }); +}); + +export default { + getLatestVersion, + + // State + getState, + setState, + unsetState, + + // G-code + loadGCode, + fetchGCode, + downloadGCode, + + // Authentication + signin, + + // Controllers + controllers, + + // Watch Directory + watch, + + // Settings + commands, + events, + machines, + macros, + mdi, + users, +}; diff --git a/src/app/assets/models/stl/bit.stl b/src/app/assets/models/stl/bit.stl new file mode 100644 index 000000000..fd5267fb7 Binary files /dev/null and b/src/app/assets/models/stl/bit.stl differ diff --git a/src/web/textures/brushed-steel-texture.jpg b/src/app/assets/textures/brushed-steel-texture.jpg similarity index 100% rename from src/web/textures/brushed-steel-texture.jpg rename to src/app/assets/textures/brushed-steel-texture.jpg diff --git a/src/web/components/Anchor/index.js b/src/app/components/Anchor/index.js similarity index 100% rename from src/web/components/Anchor/index.js rename to src/app/components/Anchor/index.js diff --git a/src/web/components/Blink/Blink.jsx b/src/app/components/Blink/Blink.jsx similarity index 100% rename from src/web/components/Blink/Blink.jsx rename to src/app/components/Blink/Blink.jsx diff --git a/src/web/components/Blink/index.js b/src/app/components/Blink/index.js similarity index 100% rename from src/web/components/Blink/index.js rename to src/app/components/Blink/index.js diff --git a/src/web/components/Breadcrumbs/index.js b/src/app/components/Breadcrumbs/index.js similarity index 100% rename from src/web/components/Breadcrumbs/index.js rename to src/app/components/Breadcrumbs/index.js diff --git a/src/web/components/Buttons/index.js b/src/app/components/Buttons/index.js similarity index 100% rename from src/web/components/Buttons/index.js rename to src/app/components/Buttons/index.js diff --git a/src/web/components/Center/index.jsx b/src/app/components/Center/index.jsx similarity index 100% rename from src/web/components/Center/index.jsx rename to src/app/components/Center/index.jsx diff --git a/src/web/components/Center/index.styl b/src/app/components/Center/index.styl similarity index 100% rename from src/web/components/Center/index.styl rename to src/app/components/Center/index.styl diff --git a/src/web/components/Checkbox/index.js b/src/app/components/Checkbox/index.js similarity index 100% rename from src/web/components/Checkbox/index.js rename to src/app/components/Checkbox/index.js diff --git a/src/web/components/DatePicker/DateTimeRangePicker/index.jsx b/src/app/components/DatePicker/DateTimeRangePicker/index.jsx similarity index 100% rename from src/web/components/DatePicker/DateTimeRangePicker/index.jsx rename to src/app/components/DatePicker/DateTimeRangePicker/index.jsx diff --git a/src/web/components/DatePicker/DateTimeRangePicker/index.styl b/src/app/components/DatePicker/DateTimeRangePicker/index.styl similarity index 100% rename from src/web/components/DatePicker/DateTimeRangePicker/index.styl rename to src/app/components/DatePicker/DateTimeRangePicker/index.styl diff --git a/src/web/components/DatePicker/DateTimeRangePickerDropdown/index.jsx b/src/app/components/DatePicker/DateTimeRangePickerDropdown/index.jsx similarity index 98% rename from src/web/components/DatePicker/DateTimeRangePickerDropdown/index.jsx rename to src/app/components/DatePicker/DateTimeRangePickerDropdown/index.jsx index 534c40134..4cde37bda 100644 --- a/src/web/components/DatePicker/DateTimeRangePickerDropdown/index.jsx +++ b/src/app/components/DatePicker/DateTimeRangePickerDropdown/index.jsx @@ -2,9 +2,9 @@ import _max from 'lodash/max'; import moment from 'moment'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import { Button } from 'web/components/Buttons'; -import Dropdown, { MenuItem } from 'web/components/Dropdown'; -import i18n from 'web/lib/i18n'; +import { Button } from 'app/components/Buttons'; +import Dropdown, { MenuItem } from 'app/components/Dropdown'; +import i18n from 'app/lib/i18n'; import DateTimeRangePicker from '../DateTimeRangePicker'; const normalizeDateString = (dateString) => { diff --git a/src/web/components/DatePicker/index.js b/src/app/components/DatePicker/index.js similarity index 100% rename from src/web/components/DatePicker/index.js rename to src/app/components/DatePicker/index.js diff --git a/src/web/components/Dropdown/index.js b/src/app/components/Dropdown/index.js similarity index 100% rename from src/web/components/Dropdown/index.js rename to src/app/components/Dropdown/index.js diff --git a/src/web/components/Ellipsis/index.jsx b/src/app/components/Ellipsis/index.jsx similarity index 100% rename from src/web/components/Ellipsis/index.jsx rename to src/app/components/Ellipsis/index.jsx diff --git a/src/web/components/FormControl/index.js b/src/app/components/FormControl/index.js similarity index 100% rename from src/web/components/FormControl/index.js rename to src/app/components/FormControl/index.js diff --git a/src/web/components/FormGroup/FormGroup.jsx b/src/app/components/FormGroup/FormGroup.jsx similarity index 100% rename from src/web/components/FormGroup/FormGroup.jsx rename to src/app/components/FormGroup/FormGroup.jsx diff --git a/src/web/components/FormGroup/index.js b/src/app/components/FormGroup/index.js similarity index 100% rename from src/web/components/FormGroup/index.js rename to src/app/components/FormGroup/index.js diff --git a/src/web/components/Forms/Form.jsx b/src/app/components/Forms/Form.jsx similarity index 100% rename from src/web/components/Forms/Form.jsx rename to src/app/components/Forms/Form.jsx diff --git a/src/web/components/Forms/Input.jsx b/src/app/components/Forms/Input.jsx similarity index 100% rename from src/web/components/Forms/Input.jsx rename to src/app/components/Forms/Input.jsx diff --git a/src/web/components/Forms/index.js b/src/app/components/Forms/index.js similarity index 100% rename from src/web/components/Forms/index.js rename to src/app/components/Forms/index.js diff --git a/src/web/components/GridSystem/FlexContainer.jsx b/src/app/components/GridSystem/FlexContainer.jsx similarity index 100% rename from src/web/components/GridSystem/FlexContainer.jsx rename to src/app/components/GridSystem/FlexContainer.jsx diff --git a/src/web/components/GridSystem/index.js b/src/app/components/GridSystem/index.js similarity index 100% rename from src/web/components/GridSystem/index.js rename to src/app/components/GridSystem/index.js diff --git a/src/web/components/Hoverable/Hoverable.jsx b/src/app/components/Hoverable/Hoverable.jsx similarity index 100% rename from src/web/components/Hoverable/Hoverable.jsx rename to src/app/components/Hoverable/Hoverable.jsx diff --git a/src/web/components/Hoverable/index.js b/src/app/components/Hoverable/index.js similarity index 100% rename from src/web/components/Hoverable/index.js rename to src/app/components/Hoverable/index.js diff --git a/src/web/components/I18n/index.jsx b/src/app/components/I18n/index.jsx similarity index 98% rename from src/web/components/I18n/index.jsx rename to src/app/components/I18n/index.jsx index 620c7e2d0..0c30d2baf 100644 --- a/src/web/components/I18n/index.jsx +++ b/src/app/components/I18n/index.jsx @@ -1,7 +1,7 @@ import omit from 'lodash/omit'; import PropTypes from 'prop-types'; import React, { Component } from 'react'; -import i18n from '../../lib/i18n'; +import i18n from 'app/lib/i18n'; const REGEXP = /{{(.+?)}}/; diff --git a/src/web/components/Iframe/index.js b/src/app/components/Iframe/index.js similarity index 100% rename from src/web/components/Iframe/index.js rename to src/app/components/Iframe/index.js diff --git a/src/web/components/Image/Image.jsx b/src/app/components/Image/Image.jsx similarity index 100% rename from src/web/components/Image/Image.jsx rename to src/app/components/Image/Image.jsx diff --git a/src/web/components/Image/index.js b/src/app/components/Image/index.js similarity index 100% rename from src/web/components/Image/index.js rename to src/app/components/Image/index.js diff --git a/src/web/components/InlineError/InlineError.jsx b/src/app/components/InlineError/InlineError.jsx similarity index 100% rename from src/web/components/InlineError/InlineError.jsx rename to src/app/components/InlineError/InlineError.jsx diff --git a/src/web/components/InlineError/InlineError.styl b/src/app/components/InlineError/InlineError.styl similarity index 100% rename from src/web/components/InlineError/InlineError.styl rename to src/app/components/InlineError/InlineError.styl diff --git a/src/web/components/InlineError/index.js b/src/app/components/InlineError/index.js similarity index 100% rename from src/web/components/InlineError/index.js rename to src/app/components/InlineError/index.js diff --git a/src/web/components/Interpolate/index.js b/src/app/components/Interpolate/index.js similarity index 100% rename from src/web/components/Interpolate/index.js rename to src/app/components/Interpolate/index.js diff --git a/src/web/components/Loader/index.js b/src/app/components/Loader/index.js similarity index 100% rename from src/web/components/Loader/index.js rename to src/app/components/Loader/index.js diff --git a/src/web/components/Margin/index.jsx b/src/app/components/Margin/index.jsx similarity index 100% rename from src/web/components/Margin/index.jsx rename to src/app/components/Margin/index.jsx diff --git a/src/web/components/Modal/index.js b/src/app/components/Modal/index.js similarity index 100% rename from src/web/components/Modal/index.js rename to src/app/components/Modal/index.js diff --git a/src/web/components/ModalTemplate/ModalTemplate.jsx b/src/app/components/ModalTemplate/ModalTemplate.jsx similarity index 100% rename from src/web/components/ModalTemplate/ModalTemplate.jsx rename to src/app/components/ModalTemplate/ModalTemplate.jsx diff --git a/src/web/components/ModalTemplate/icon-error-48.png b/src/app/components/ModalTemplate/icon-error-48.png similarity index 100% rename from src/web/components/ModalTemplate/icon-error-48.png rename to src/app/components/ModalTemplate/icon-error-48.png diff --git a/src/web/components/ModalTemplate/icon-info-48.png b/src/app/components/ModalTemplate/icon-info-48.png similarity index 100% rename from src/web/components/ModalTemplate/icon-info-48.png rename to src/app/components/ModalTemplate/icon-info-48.png diff --git a/src/web/components/ModalTemplate/icon-success-48.png b/src/app/components/ModalTemplate/icon-success-48.png similarity index 100% rename from src/web/components/ModalTemplate/icon-success-48.png rename to src/app/components/ModalTemplate/icon-success-48.png diff --git a/src/web/components/ModalTemplate/icon-warning-48.png b/src/app/components/ModalTemplate/icon-warning-48.png similarity index 100% rename from src/web/components/ModalTemplate/icon-warning-48.png rename to src/app/components/ModalTemplate/icon-warning-48.png diff --git a/src/web/components/ModalTemplate/index.js b/src/app/components/ModalTemplate/index.js similarity index 100% rename from src/web/components/ModalTemplate/index.js rename to src/app/components/ModalTemplate/index.js diff --git a/src/web/components/Navs/index.js b/src/app/components/Navs/index.js similarity index 100% rename from src/web/components/Navs/index.js rename to src/app/components/Navs/index.js diff --git a/src/web/components/Notifications/index.js b/src/app/components/Notifications/index.js similarity index 100% rename from src/web/components/Notifications/index.js rename to src/app/components/Notifications/index.js diff --git a/src/web/components/OverflowTooltip/index.jsx b/src/app/components/OverflowTooltip/index.jsx similarity index 100% rename from src/web/components/OverflowTooltip/index.jsx rename to src/app/components/OverflowTooltip/index.jsx diff --git a/src/web/components/Paginations/index.js b/src/app/components/Paginations/index.js similarity index 96% rename from src/web/components/Paginations/index.js rename to src/app/components/Paginations/index.js index d5d0f14d6..546d6808e 100644 --- a/src/web/components/Paginations/index.js +++ b/src/app/components/Paginations/index.js @@ -1,7 +1,7 @@ import React from 'react'; import * as Paginations from '@trendmicro/react-paginations'; import '@trendmicro/react-paginations/dist/react-paginations.css'; -import i18n from '../../lib/i18n'; +import i18n from 'app/lib/i18n'; export const TablePagination = (props) => { return ( diff --git a/src/web/components/Panel/Panel.jsx b/src/app/components/Panel/Panel.jsx similarity index 100% rename from src/web/components/Panel/Panel.jsx rename to src/app/components/Panel/Panel.jsx diff --git a/src/web/components/Panel/PanelBody.jsx b/src/app/components/Panel/PanelBody.jsx similarity index 100% rename from src/web/components/Panel/PanelBody.jsx rename to src/app/components/Panel/PanelBody.jsx diff --git a/src/web/components/Panel/PanelHeading.jsx b/src/app/components/Panel/PanelHeading.jsx similarity index 100% rename from src/web/components/Panel/PanelHeading.jsx rename to src/app/components/Panel/PanelHeading.jsx diff --git a/src/web/components/Panel/index.js b/src/app/components/Panel/index.js similarity index 100% rename from src/web/components/Panel/index.js rename to src/app/components/Panel/index.js diff --git a/src/web/components/Panel/index.styl b/src/app/components/Panel/index.styl similarity index 100% rename from src/web/components/Panel/index.styl rename to src/app/components/Panel/index.styl diff --git a/src/web/components/Portal/index.js b/src/app/components/Portal/index.js similarity index 100% rename from src/web/components/Portal/index.js rename to src/app/components/Portal/index.js diff --git a/src/web/components/Progress/index.jsx b/src/app/components/Progress/index.jsx similarity index 100% rename from src/web/components/Progress/index.jsx rename to src/app/components/Progress/index.jsx diff --git a/src/web/components/ProtectedRoute/index.jsx b/src/app/components/ProtectedRoute/index.jsx similarity index 89% rename from src/web/components/ProtectedRoute/index.jsx rename to src/app/components/ProtectedRoute/index.jsx index a4a484cf8..aced08682 100644 --- a/src/web/components/ProtectedRoute/index.jsx +++ b/src/app/components/ProtectedRoute/index.jsx @@ -1,13 +1,13 @@ import React from 'react'; import { Route, Redirect, withRouter } from 'react-router-dom'; -import user from '../../lib/user'; -import log from '../../lib/log'; +import * as user from 'app/lib/user'; +import log from 'app/lib/log'; const ProtectedRoute = ({ component: Component, ...rest }) => ( { - if (user.authenticated()) { + if (user.isAuthenticated()) { return Component ? : null; } diff --git a/src/web/components/Radio/index.js b/src/app/components/Radio/index.js similarity index 100% rename from src/web/components/Radio/index.js rename to src/app/components/Radio/index.js diff --git a/src/web/components/RepeatButton/index.jsx b/src/app/components/RepeatButton/index.jsx similarity index 100% rename from src/web/components/RepeatButton/index.jsx rename to src/app/components/RepeatButton/index.jsx diff --git a/src/web/components/SectionGroup/index.jsx b/src/app/components/SectionGroup/index.jsx similarity index 100% rename from src/web/components/SectionGroup/index.jsx rename to src/app/components/SectionGroup/index.jsx diff --git a/src/web/components/SectionTitle/index.jsx b/src/app/components/SectionTitle/index.jsx similarity index 100% rename from src/web/components/SectionTitle/index.jsx rename to src/app/components/SectionTitle/index.jsx diff --git a/src/web/components/Space/Space.jsx b/src/app/components/Space/Space.jsx similarity index 100% rename from src/web/components/Space/Space.jsx rename to src/app/components/Space/Space.jsx diff --git a/src/web/components/Space/index.js b/src/app/components/Space/index.js similarity index 100% rename from src/web/components/Space/index.js rename to src/app/components/Space/index.js diff --git a/src/web/components/Table/index.js b/src/app/components/Table/index.js similarity index 100% rename from src/web/components/Table/index.js rename to src/app/components/Table/index.js diff --git a/src/web/components/TabularForm/TabularForm.jsx b/src/app/components/TabularForm/TabularForm.jsx similarity index 100% rename from src/web/components/TabularForm/TabularForm.jsx rename to src/app/components/TabularForm/TabularForm.jsx diff --git a/src/web/components/TabularForm/index.js b/src/app/components/TabularForm/index.js similarity index 100% rename from src/web/components/TabularForm/index.js rename to src/app/components/TabularForm/index.js diff --git a/src/web/components/ToggleSwitch/index.js b/src/app/components/ToggleSwitch/index.js similarity index 100% rename from src/web/components/ToggleSwitch/index.js rename to src/app/components/ToggleSwitch/index.js diff --git a/src/web/components/Toggler/Toggler.jsx b/src/app/components/Toggler/Toggler.jsx similarity index 100% rename from src/web/components/Toggler/Toggler.jsx rename to src/app/components/Toggler/Toggler.jsx diff --git a/src/web/components/Toggler/TogglerIcon.jsx b/src/app/components/Toggler/TogglerIcon.jsx similarity index 100% rename from src/web/components/Toggler/TogglerIcon.jsx rename to src/app/components/Toggler/TogglerIcon.jsx diff --git a/src/web/components/Toggler/index.js b/src/app/components/Toggler/index.js similarity index 100% rename from src/web/components/Toggler/index.js rename to src/app/components/Toggler/index.js diff --git a/src/web/components/Toggler/index.styl b/src/app/components/Toggler/index.styl similarity index 100% rename from src/web/components/Toggler/index.styl rename to src/app/components/Toggler/index.styl diff --git a/src/web/components/Tooltip/index.js b/src/app/components/Tooltip/index.js similarity index 100% rename from src/web/components/Tooltip/index.js rename to src/app/components/Tooltip/index.js diff --git a/src/web/components/Validation/index.js b/src/app/components/Validation/index.js similarity index 100% rename from src/web/components/Validation/index.js rename to src/app/components/Validation/index.js diff --git a/src/web/components/Webcam/Webcam.jsx b/src/app/components/Webcam/Webcam.jsx similarity index 100% rename from src/web/components/Webcam/Webcam.jsx rename to src/app/components/Webcam/Webcam.jsx diff --git a/src/web/components/Webcam/index.js b/src/app/components/Webcam/index.js similarity index 100% rename from src/web/components/Webcam/index.js rename to src/app/components/Webcam/index.js diff --git a/src/web/components/Widget/Button.jsx b/src/app/components/Widget/Button.jsx similarity index 100% rename from src/web/components/Widget/Button.jsx rename to src/app/components/Widget/Button.jsx diff --git a/src/web/components/Widget/Content.jsx b/src/app/components/Widget/Content.jsx similarity index 100% rename from src/web/components/Widget/Content.jsx rename to src/app/components/Widget/Content.jsx diff --git a/src/web/components/Widget/Controls.jsx b/src/app/components/Widget/Controls.jsx similarity index 100% rename from src/web/components/Widget/Controls.jsx rename to src/app/components/Widget/Controls.jsx diff --git a/src/web/components/Widget/DropdownButton.jsx b/src/app/components/Widget/DropdownButton.jsx similarity index 100% rename from src/web/components/Widget/DropdownButton.jsx rename to src/app/components/Widget/DropdownButton.jsx diff --git a/src/web/components/Widget/Footer.jsx b/src/app/components/Widget/Footer.jsx similarity index 100% rename from src/web/components/Widget/Footer.jsx rename to src/app/components/Widget/Footer.jsx diff --git a/src/web/components/Widget/Header.jsx b/src/app/components/Widget/Header.jsx similarity index 100% rename from src/web/components/Widget/Header.jsx rename to src/app/components/Widget/Header.jsx diff --git a/src/web/components/Widget/Sortable.jsx b/src/app/components/Widget/Sortable.jsx similarity index 100% rename from src/web/components/Widget/Sortable.jsx rename to src/app/components/Widget/Sortable.jsx diff --git a/src/web/components/Widget/Title.jsx b/src/app/components/Widget/Title.jsx similarity index 100% rename from src/web/components/Widget/Title.jsx rename to src/app/components/Widget/Title.jsx diff --git a/src/web/components/Widget/Widget.jsx b/src/app/components/Widget/Widget.jsx similarity index 100% rename from src/web/components/Widget/Widget.jsx rename to src/app/components/Widget/Widget.jsx diff --git a/src/web/components/Widget/index.js b/src/app/components/Widget/index.js similarity index 100% rename from src/web/components/Widget/index.js rename to src/app/components/Widget/index.js diff --git a/src/web/components/Widget/index.styl b/src/app/components/Widget/index.styl similarity index 100% rename from src/web/components/Widget/index.styl rename to src/app/components/Widget/index.styl diff --git a/src/web/components/Widget/theme.styl b/src/app/components/Widget/theme.styl similarity index 100% rename from src/web/components/Widget/theme.styl rename to src/app/components/Widget/theme.styl diff --git a/src/app/config/settings.js b/src/app/config/settings.js index 06ddbaceb..678ce069b 100644 --- a/src/app/config/settings.js +++ b/src/app/config/settings.js @@ -1,15 +1,112 @@ -import merge from 'lodash/merge'; -import base from './settings.base'; -import development from './settings.development'; -import production from './settings.production'; - -const env = process.env.NODE_ENV || 'production'; // Ensure production environment if empty -const settings = {}; - -if (env === 'development') { - merge(settings, base, development, { env: env }); -} else { - merge(settings, base, production, { env: env }); -} +import endsWith from 'lodash/endsWith'; +import mapKeys from 'lodash/mapKeys'; +import sha1 from 'sha1'; +import log from 'app/lib/log'; +import pkg from '../../package.json'; + +const webroot = '/'; + +const settings = { + error: { + // The flag is set to true if the workspace settings have become corrupted or invalid. + // @see store/index.js + corruptedWorkspaceSettings: false + }, + name: pkg.name, + productName: pkg.productName, + version: pkg.version, + webroot: webroot, + log: { + level: 'warn' // trace, debug, info, warn, error + }, + analytics: { + trackingId: process.env.TRACKING_ID + }, + i18next: { + lowerCaseLng: true, + + // logs out more info (console) + debug: false, + + // language to lookup key if not found on set language + fallbackLng: 'en', + + // string or array of namespaces + ns: [ + 'controller', // Grbl|Smoothie|TinyG + 'gcode', // G-code + 'resource' // default + ], + // default namespace used if not passed to translation function + defaultNS: 'resource', + + // @see webpack.webconfig.xxx.js + whitelist: process.env.LANGUAGES, + + // array of languages to preload + preload: [], + + // language codes to lookup, given set language is 'en-US': + // 'all' --> ['en-US', 'en', 'dev'] + // 'currentOnly' --> 'en-US' + // 'languageOnly' --> 'en' + load: 'currentOnly', + + // char to separate keys + keySeparator: '.', + + // char to split namespace from key + nsSeparator: ':', + + interpolation: { + prefix: '{{', + suffix: '}}' + }, + + // options for language detection + // https://github.com/i18next/i18next-browser-languageDetector + detection: { + // order and from where user language should be detected + order: ['querystring', 'cookie', 'localStorage'], + + // keys or params to lookup language from + lookupQuerystring: 'lang', + lookupCookie: 'lang', + lookupLocalStorage: 'lang', + + // cache user language on + caches: ['localStorage', 'cookie'] + }, + // options for backend + // https://github.com/i18next/i18next-xhr-backend + backend: { + // path where resources get loaded from + loadPath: webroot + 'i18n/{{lng}}/{{ns}}.json', + + // path to post missing resources + addPath: 'api/i18n/sendMissing/{{lng}}/{{ns}}', + + // your backend server supports multiloading + // /locales/resources.json?lng=de+en&ns=ns1+ns2 + allowMultiLoading: false, + + // parse data after it has been fetched + parse: function(data, url) { + log.debug(`Loading resource: url="${url}"`); + + // gcode.json + // resource.json + if (endsWith(url, '/gcode.json') || endsWith(url, '/resource.json')) { + return mapKeys(JSON.parse(data), (value, key) => sha1(key)); + } + + return JSON.parse(data); + }, + + // allow cross domain requests + crossDomain: false + } + } +}; export default settings; diff --git a/src/app/constants/index.js b/src/app/constants/index.js index e845d8ee7..af3027498 100644 --- a/src/app/constants/index.js +++ b/src/app/constants/index.js @@ -1,12 +1,111 @@ -// Error Codes -export const ERR_BAD_REQUEST = 400; -export const ERR_UNAUTHORIZED = 401; -export const ERR_FORBIDDEN = 403; -export const ERR_NOT_FOUND = 404; -export const ERR_METHOD_NOT_ALLOWED = 405; -export const ERR_NOT_ACCEPTABLE = 406; -export const ERR_CONFLICT = 409; -export const ERR_LENGTH_REQUIRED = 411; -export const ERR_PRECONDITION_FAILED = 412; -export const ERR_PAYLOAD_TOO_LARGE = 413; -export const ERR_INTERNAL_SERVER_ERROR = 500; +// AXIS +export const AXIS_E = 'e'; +export const AXIS_X = 'x'; +export const AXIS_Y = 'y'; +export const AXIS_Z = 'z'; +export const AXIS_A = 'a'; +export const AXIS_B = 'b'; +export const AXIS_C = 'c'; + +// Imperial System +export const IMPERIAL_UNITS = 'in'; +export const IMPERIAL_STEPS = [ + 0.0001, + 0.0002, + 0.0003, + 0.0005, + 0.001, + 0.002, + 0.003, + 0.005, + 0.01, + 0.02, + 0.03, + 0.05, + 0.1, + 0.2, + 0.3, + 0.5, + 1, // Default + 2, + 3, + 5, + 10, + 20 +]; + +// Metric System +export const METRIC_UNITS = 'mm'; +export const METRIC_STEPS = [ + 0.001, + 0.002, + 0.003, + 0.005, + 0.01, + 0.02, + 0.03, + 0.05, + 0.1, + 0.2, + 0.3, + 0.5, + 1, // Default + 2, + 3, + 5, + 10, + 20, + 30, + 50, + 100, + 200, + 300, + 500 +]; + +// Controller +export const GRBL = 'Grbl'; +export const MARLIN = 'Marlin'; +export const SMOOTHIE = 'Smoothie'; +export const TINYG = 'TinyG'; + +// Workflow State +export const WORKFLOW_STATE_IDLE = 'idle'; +export const WORKFLOW_STATE_PAUSED = 'paused'; +export const WORKFLOW_STATE_RUNNING = 'running'; + +// Grbl Active State +export const GRBL_ACTIVE_STATE_IDLE = 'Idle'; +export const GRBL_ACTIVE_STATE_RUN = 'Run'; +export const GRBL_ACTIVE_STATE_HOLD = 'Hold'; +export const GRBL_ACTIVE_STATE_DOOR = 'Door'; +export const GRBL_ACTIVE_STATE_HOME = 'Home'; +export const GRBL_ACTIVE_STATE_SLEEP = 'Sleep'; +export const GRBL_ACTIVE_STATE_ALARM = 'Alarm'; +export const GRBL_ACTIVE_STATE_CHECK = 'Check'; + +// Smoothie Active State +export const SMOOTHIE_ACTIVE_STATE_IDLE = 'Idle'; +export const SMOOTHIE_ACTIVE_STATE_RUN = 'Run'; +export const SMOOTHIE_ACTIVE_STATE_HOLD = 'Hold'; +export const SMOOTHIE_ACTIVE_STATE_DOOR = 'Door'; +export const SMOOTHIE_ACTIVE_STATE_HOME = 'Home'; +export const SMOOTHIE_ACTIVE_STATE_ALARM = 'Alarm'; +export const SMOOTHIE_ACTIVE_STATE_CHECK = 'Check'; + +// TinyG Machine State +// https://github.com/synthetos/g2/wiki/Status-Reports#stat-values +export const TINYG_MACHINE_STATE_INITIALIZING = 0; // Machine is initializing +export const TINYG_MACHINE_STATE_READY = 1; // Machine is ready for use +export const TINYG_MACHINE_STATE_ALARM = 2; // Machine is in alarm state +export const TINYG_MACHINE_STATE_STOP = 3; // Machine has encountered program stop +export const TINYG_MACHINE_STATE_END = 4; // Machine has encountered program end +export const TINYG_MACHINE_STATE_RUN = 5; // Machine is running +export const TINYG_MACHINE_STATE_HOLD = 6; // Machine is holding +export const TINYG_MACHINE_STATE_PROBE = 7; // Machine is in probing operation +export const TINYG_MACHINE_STATE_CYCLE = 8; // Reserved for canned cycles (not used) +export const TINYG_MACHINE_STATE_HOMING = 9; // Machine is in a homing cycle +export const TINYG_MACHINE_STATE_JOG = 10; // Machine is in a jogging cycle +export const TINYG_MACHINE_STATE_INTERLOCK = 11; // Machine is in safety interlock hold +export const TINYG_MACHINE_STATE_SHUTDOWN = 12; // Machine is in shutdown state. Will not process commands +export const TINYG_MACHINE_STATE_PANIC = 13; // Machine is in panic state. Needs to be physically reset diff --git a/src/web/containers/App.jsx b/src/app/containers/App.jsx similarity index 100% rename from src/web/containers/App.jsx rename to src/app/containers/App.jsx diff --git a/src/web/containers/App.styl b/src/app/containers/App.styl similarity index 100% rename from src/web/containers/App.styl rename to src/app/containers/App.styl diff --git a/src/web/containers/Header/Header.jsx b/src/app/containers/Header/Header.jsx similarity index 97% rename from src/web/containers/Header/Header.jsx rename to src/app/containers/Header/Header.jsx index 1a1f552ca..4baa7b7b4 100644 --- a/src/web/containers/Header/Header.jsx +++ b/src/app/containers/Header/Header.jsx @@ -5,16 +5,16 @@ import { withRouter } from 'react-router-dom'; import semver from 'semver'; import without from 'lodash/without'; import Push from 'push.js'; -import api from '../../api'; -import Anchor from '../../components/Anchor'; -import Space from '../../components/Space'; -import settings from '../../config/settings'; -import combokeys from '../../lib/combokeys'; -import controller from '../../lib/controller'; -import i18n from '../../lib/i18n'; -import log from '../../lib/log'; -import user from '../../lib/user'; -import store from '../../store'; +import api from 'app/api'; +import Anchor from 'app/components/Anchor'; +import Space from 'app/components/Space'; +import settings from 'app/config/settings'; +import combokeys from 'app/lib/combokeys'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; +import log from 'app/lib/log'; +import * as user from 'app/lib/user'; +import store from 'app/store'; import QuickAccessToolbar from './QuickAccessToolbar'; import styles from './index.styl'; @@ -325,7 +325,7 @@ class Header extends PureComponent { @@ -333,7 +333,7 @@ class Header extends PureComponent { { - if (user.authenticated()) { + if (user.isAuthenticated()) { log.debug('Destroy and cleanup the WebSocket connection'); controller.disconnect(); diff --git a/src/web/containers/Header/QuickAccessToolbar.jsx b/src/app/containers/Header/QuickAccessToolbar.jsx similarity index 96% rename from src/web/containers/Header/QuickAccessToolbar.jsx rename to src/app/containers/Header/QuickAccessToolbar.jsx index 88ee8685d..42aa1f94d 100644 --- a/src/web/containers/Header/QuickAccessToolbar.jsx +++ b/src/app/containers/Header/QuickAccessToolbar.jsx @@ -1,8 +1,8 @@ import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Space from '../../components/Space'; -import controller from '../../lib/controller'; -import i18n from '../../lib/i18n'; +import Space from 'app/components/Space'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; import styles from './index.styl'; class QuickAccessToolbar extends PureComponent { diff --git a/src/web/containers/Header/index.js b/src/app/containers/Header/index.js similarity index 100% rename from src/web/containers/Header/index.js rename to src/app/containers/Header/index.js diff --git a/src/web/containers/Header/index.styl b/src/app/containers/Header/index.styl similarity index 100% rename from src/web/containers/Header/index.styl rename to src/app/containers/Header/index.styl diff --git a/src/web/containers/Login/Login.jsx b/src/app/containers/Login/Login.jsx similarity index 94% rename from src/web/containers/Login/Login.jsx rename to src/app/containers/Login/Login.jsx index 5ffff595b..3afa5a56c 100644 --- a/src/web/containers/Login/Login.jsx +++ b/src/app/containers/Login/Login.jsx @@ -2,15 +2,15 @@ import cx from 'classnames'; import qs from 'qs'; import React, { PureComponent } from 'react'; import { withRouter, Redirect } from 'react-router-dom'; -import Anchor from '../../components/Anchor'; -import { Notification } from '../../components/Notifications'; -import Space from '../../components/Space'; -import settings from '../../config/settings'; -import controller from '../../lib/controller'; -import i18n from '../../lib/i18n'; -import log from '../../lib/log'; -import user from '../../lib/user'; -import store from '../../store'; +import Anchor from 'app/components/Anchor'; +import { Notification } from 'app/components/Notifications'; +import Space from 'app/components/Space'; +import settings from 'app/config/settings'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; +import log from 'app/lib/log'; +import * as user from 'app/lib/user'; +import store from 'app/store'; import styles from './index.styl'; class Login extends PureComponent { diff --git a/src/web/containers/Login/index.js b/src/app/containers/Login/index.js similarity index 100% rename from src/web/containers/Login/index.js rename to src/app/containers/Login/index.js diff --git a/src/web/containers/Login/index.styl b/src/app/containers/Login/index.styl similarity index 100% rename from src/web/containers/Login/index.styl rename to src/app/containers/Login/index.styl diff --git a/src/web/containers/Settings/About/About.jsx b/src/app/containers/Settings/About/About.jsx similarity index 100% rename from src/web/containers/Settings/About/About.jsx rename to src/app/containers/Settings/About/About.jsx diff --git a/src/web/containers/Settings/About/AboutContainer.jsx b/src/app/containers/Settings/About/AboutContainer.jsx similarity index 90% rename from src/web/containers/Settings/About/AboutContainer.jsx rename to src/app/containers/Settings/About/AboutContainer.jsx index 147f9586d..7f981b2b6 100644 --- a/src/web/containers/Settings/About/AboutContainer.jsx +++ b/src/app/containers/Settings/About/AboutContainer.jsx @@ -1,8 +1,8 @@ import PropTypes from 'prop-types'; import React from 'react'; -import Anchor from 'web/components/Anchor'; -import settings from 'web/config/settings'; -import i18n from 'web/lib/i18n'; +import Anchor from 'app/components/Anchor'; +import settings from 'app/config/settings'; +import i18n from 'app/lib/i18n'; import styles from './index.styl'; const AboutContainer = ({ version }) => { diff --git a/src/web/containers/Settings/About/HelpContainer.jsx b/src/app/containers/Settings/About/HelpContainer.jsx similarity index 96% rename from src/web/containers/Settings/About/HelpContainer.jsx rename to src/app/containers/Settings/About/HelpContainer.jsx index a5bfabbf4..14f1d510d 100644 --- a/src/web/containers/Settings/About/HelpContainer.jsx +++ b/src/app/containers/Settings/About/HelpContainer.jsx @@ -1,5 +1,5 @@ import React from 'react'; -import i18n from 'web/lib/i18n'; +import i18n from 'app/lib/i18n'; import styles from './index.styl'; const HelpContainer = () => { diff --git a/src/web/containers/Settings/About/UpdateStatusContainer.jsx b/src/app/containers/Settings/About/UpdateStatusContainer.jsx similarity index 94% rename from src/web/containers/Settings/About/UpdateStatusContainer.jsx rename to src/app/containers/Settings/About/UpdateStatusContainer.jsx index c9123cfb7..cc4ac1915 100644 --- a/src/web/containers/Settings/About/UpdateStatusContainer.jsx +++ b/src/app/containers/Settings/About/UpdateStatusContainer.jsx @@ -3,10 +3,10 @@ import classNames from 'classnames'; import PropTypes from 'prop-types'; import React from 'react'; import semver from 'semver'; -import Anchor from 'web/components/Anchor'; -import Space from 'web/components/Space'; -import settings from 'web/config/settings'; -import i18n from 'web/lib/i18n'; +import Anchor from 'app/components/Anchor'; +import Space from 'app/components/Space'; +import settings from 'app/config/settings'; +import i18n from 'app/lib/i18n'; import styles from './index.styl'; const UpdateStatusContainer = (props) => { diff --git a/src/web/containers/Settings/About/index.js b/src/app/containers/Settings/About/index.js similarity index 100% rename from src/web/containers/Settings/About/index.js rename to src/app/containers/Settings/About/index.js diff --git a/src/web/containers/Settings/About/index.styl b/src/app/containers/Settings/About/index.styl similarity index 100% rename from src/web/containers/Settings/About/index.styl rename to src/app/containers/Settings/About/index.styl diff --git a/src/web/containers/Settings/Commands/Commands.jsx b/src/app/containers/Settings/Commands/Commands.jsx similarity index 100% rename from src/web/containers/Settings/Commands/Commands.jsx rename to src/app/containers/Settings/Commands/Commands.jsx diff --git a/src/web/containers/Settings/Commands/CreateRecord.jsx b/src/app/containers/Settings/Commands/CreateRecord.jsx similarity index 94% rename from src/web/containers/Settings/Commands/CreateRecord.jsx rename to src/app/containers/Settings/Commands/CreateRecord.jsx index 58ca35983..9272bb35b 100644 --- a/src/web/containers/Settings/Commands/CreateRecord.jsx +++ b/src/app/containers/Settings/Commands/CreateRecord.jsx @@ -2,12 +2,12 @@ import _ from 'lodash'; import classNames from 'classnames'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Modal from 'web/components/Modal'; -import { ToastNotification } from 'web/components/Notifications'; -import ToggleSwitch from 'web/components/ToggleSwitch'; -import { Form, Input, Textarea } from 'web/components/Validation'; -import i18n from 'web/lib/i18n'; -import * as validations from 'web/lib/validations'; +import Modal from 'app/components/Modal'; +import { ToastNotification } from 'app/components/Notifications'; +import ToggleSwitch from 'app/components/ToggleSwitch'; +import { Form, Input, Textarea } from 'app/components/Validation'; +import i18n from 'app/lib/i18n'; +import * as validations from 'app/lib/validations'; import styles from '../form.styl'; class CreateRecord extends PureComponent { diff --git a/src/web/containers/Settings/Commands/TableRecords.jsx b/src/app/containers/Settings/Commands/TableRecords.jsx similarity index 95% rename from src/web/containers/Settings/Commands/TableRecords.jsx rename to src/app/containers/Settings/Commands/TableRecords.jsx index 107b083c9..fd3b31579 100644 --- a/src/web/containers/Settings/Commands/TableRecords.jsx +++ b/src/app/containers/Settings/Commands/TableRecords.jsx @@ -4,16 +4,16 @@ import take from 'lodash/take'; import moment from 'moment'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Anchor from 'web/components/Anchor'; -import { Button } from 'web/components/Buttons'; -import FormGroup from 'web/components/FormGroup'; -import Modal from 'web/components/Modal'; -import Space from 'web/components/Space'; -import Table from 'web/components/Table'; -import ToggleSwitch from 'web/components/ToggleSwitch'; -import { TablePagination } from 'web/components/Paginations'; -import portal from 'web/lib/portal'; -import i18n from 'web/lib/i18n'; +import Anchor from 'app/components/Anchor'; +import { Button } from 'app/components/Buttons'; +import FormGroup from 'app/components/FormGroup'; +import Modal from 'app/components/Modal'; +import Space from 'app/components/Space'; +import Table from 'app/components/Table'; +import ToggleSwitch from 'app/components/ToggleSwitch'; +import { TablePagination } from 'app/components/Paginations'; +import portal from 'app/lib/portal'; +import i18n from 'app/lib/i18n'; import { MODAL_CREATE_RECORD, MODAL_UPDATE_RECORD diff --git a/src/web/containers/Settings/Commands/UpdateRecord.jsx b/src/app/containers/Settings/Commands/UpdateRecord.jsx similarity index 94% rename from src/web/containers/Settings/Commands/UpdateRecord.jsx rename to src/app/containers/Settings/Commands/UpdateRecord.jsx index 3cd3cffef..6016c09fa 100644 --- a/src/web/containers/Settings/Commands/UpdateRecord.jsx +++ b/src/app/containers/Settings/Commands/UpdateRecord.jsx @@ -2,12 +2,12 @@ import _ from 'lodash'; import classNames from 'classnames'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Modal from 'web/components/Modal'; -import { ToastNotification } from 'web/components/Notifications'; -import ToggleSwitch from 'web/components/ToggleSwitch'; -import { Form, Input, Textarea } from 'web/components/Validation'; -import i18n from 'web/lib/i18n'; -import * as validations from 'web/lib/validations'; +import Modal from 'app/components/Modal'; +import { ToastNotification } from 'app/components/Notifications'; +import ToggleSwitch from 'app/components/ToggleSwitch'; +import { Form, Input, Textarea } from 'app/components/Validation'; +import i18n from 'app/lib/i18n'; +import * as validations from 'app/lib/validations'; import styles from '../form.styl'; class UpdateRecord extends PureComponent { diff --git a/src/app/containers/Settings/Commands/constants.js b/src/app/containers/Settings/Commands/constants.js new file mode 100644 index 000000000..7ac1fb532 --- /dev/null +++ b/src/app/containers/Settings/Commands/constants.js @@ -0,0 +1,9 @@ +import constants from 'namespace-constants'; + +export const { + MODAL_CREATE_RECORD, + MODAL_UPDATE_RECORD +} = constants('containers/settings/commands', [ + 'MODAL_CREATE_RECORD', + 'MODAL_UPDATE_RECORD' +]); diff --git a/src/web/containers/Settings/Commands/index.js b/src/app/containers/Settings/Commands/index.js similarity index 100% rename from src/web/containers/Settings/Commands/index.js rename to src/app/containers/Settings/Commands/index.js diff --git a/src/web/containers/Settings/Commands/index.styl b/src/app/containers/Settings/Commands/index.styl similarity index 100% rename from src/web/containers/Settings/Commands/index.styl rename to src/app/containers/Settings/Commands/index.styl diff --git a/src/web/containers/Settings/Controller/Controller.jsx b/src/app/containers/Settings/Controller/Controller.jsx similarity index 98% rename from src/web/containers/Settings/Controller/Controller.jsx rename to src/app/containers/Settings/Controller/Controller.jsx index 713a399bc..a8b99d1a8 100644 --- a/src/web/containers/Settings/Controller/Controller.jsx +++ b/src/app/containers/Settings/Controller/Controller.jsx @@ -1,8 +1,8 @@ import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; import FacebookLoading from 'react-facebook-loading'; -import Space from 'web/components/Space'; -import i18n from 'web/lib/i18n'; +import Space from 'app/components/Space'; +import i18n from 'app/lib/i18n'; import styles from './index.styl'; class Controller extends PureComponent { diff --git a/src/web/containers/Settings/Controller/index.js b/src/app/containers/Settings/Controller/index.js similarity index 100% rename from src/web/containers/Settings/Controller/index.js rename to src/app/containers/Settings/Controller/index.js diff --git a/src/web/containers/Settings/Controller/index.styl b/src/app/containers/Settings/Controller/index.styl similarity index 100% rename from src/web/containers/Settings/Controller/index.styl rename to src/app/containers/Settings/Controller/index.styl diff --git a/src/web/containers/Settings/Events/CreateRecord.jsx b/src/app/containers/Settings/Events/CreateRecord.jsx similarity index 96% rename from src/web/containers/Settings/Events/CreateRecord.jsx rename to src/app/containers/Settings/Events/CreateRecord.jsx index beb1e966f..87cfeb8d5 100644 --- a/src/web/containers/Settings/Events/CreateRecord.jsx +++ b/src/app/containers/Settings/Events/CreateRecord.jsx @@ -3,12 +3,12 @@ import includes from 'lodash/includes'; import classNames from 'classnames'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Modal from 'web/components/Modal'; -import { ToastNotification } from 'web/components/Notifications'; -import ToggleSwitch from 'web/components/ToggleSwitch'; -import { Form, Select, Textarea } from 'web/components/Validation'; -import i18n from 'web/lib/i18n'; -import * as validations from 'web/lib/validations'; +import Modal from 'app/components/Modal'; +import { ToastNotification } from 'app/components/Notifications'; +import ToggleSwitch from 'app/components/ToggleSwitch'; +import { Form, Select, Textarea } from 'app/components/Validation'; +import i18n from 'app/lib/i18n'; +import * as validations from 'app/lib/validations'; import styles from '../form.styl'; const SYSTEM_EVENTS = [ diff --git a/src/web/containers/Settings/Events/Events.jsx b/src/app/containers/Settings/Events/Events.jsx similarity index 100% rename from src/web/containers/Settings/Events/Events.jsx rename to src/app/containers/Settings/Events/Events.jsx diff --git a/src/web/containers/Settings/Events/TableRecords.jsx b/src/app/containers/Settings/Events/TableRecords.jsx similarity index 96% rename from src/web/containers/Settings/Events/TableRecords.jsx rename to src/app/containers/Settings/Events/TableRecords.jsx index df380d020..d34d40776 100644 --- a/src/web/containers/Settings/Events/TableRecords.jsx +++ b/src/app/containers/Settings/Events/TableRecords.jsx @@ -4,15 +4,15 @@ import take from 'lodash/take'; import moment from 'moment'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import { Button } from 'web/components/Buttons'; -import FormGroup from 'web/components/FormGroup'; -import Modal from 'web/components/Modal'; -import { TablePagination } from 'web/components/Paginations'; -import Space from 'web/components/Space'; -import Table from 'web/components/Table'; -import ToggleSwitch from 'web/components/ToggleSwitch'; -import portal from 'web/lib/portal'; -import i18n from 'web/lib/i18n'; +import { Button } from 'app/components/Buttons'; +import FormGroup from 'app/components/FormGroup'; +import Modal from 'app/components/Modal'; +import { TablePagination } from 'app/components/Paginations'; +import Space from 'app/components/Space'; +import Table from 'app/components/Table'; +import ToggleSwitch from 'app/components/ToggleSwitch'; +import portal from 'app/lib/portal'; +import i18n from 'app/lib/i18n'; import { MODAL_CREATE_RECORD, MODAL_UPDATE_RECORD diff --git a/src/web/containers/Settings/Events/UpdateRecord.jsx b/src/app/containers/Settings/Events/UpdateRecord.jsx similarity index 96% rename from src/web/containers/Settings/Events/UpdateRecord.jsx rename to src/app/containers/Settings/Events/UpdateRecord.jsx index 473649f85..e09afda07 100644 --- a/src/web/containers/Settings/Events/UpdateRecord.jsx +++ b/src/app/containers/Settings/Events/UpdateRecord.jsx @@ -3,12 +3,12 @@ import includes from 'lodash/includes'; import classNames from 'classnames'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import { Form, Select, Textarea } from 'web/components/Validation'; -import Modal from 'web/components/Modal'; -import { ToastNotification } from 'web/components/Notifications'; -import ToggleSwitch from 'web/components/ToggleSwitch'; -import i18n from 'web/lib/i18n'; -import * as validations from 'web/lib/validations'; +import { Form, Select, Textarea } from 'app/components/Validation'; +import Modal from 'app/components/Modal'; +import { ToastNotification } from 'app/components/Notifications'; +import ToggleSwitch from 'app/components/ToggleSwitch'; +import i18n from 'app/lib/i18n'; +import * as validations from 'app/lib/validations'; import styles from '../form.styl'; const SYSTEM_EVENTS = [ diff --git a/src/app/containers/Settings/Events/constants.js b/src/app/containers/Settings/Events/constants.js new file mode 100644 index 000000000..329f0660e --- /dev/null +++ b/src/app/containers/Settings/Events/constants.js @@ -0,0 +1,9 @@ +import constants from 'namespace-constants'; + +export const { + MODAL_CREATE_RECORD, + MODAL_UPDATE_RECORD +} = constants('containers/settings/events', [ + 'MODAL_CREATE_RECORD', + 'MODAL_UPDATE_RECORD' +]); diff --git a/src/web/containers/Settings/Events/index.js b/src/app/containers/Settings/Events/index.js similarity index 100% rename from src/web/containers/Settings/Events/index.js rename to src/app/containers/Settings/Events/index.js diff --git a/src/web/containers/Settings/Events/index.styl b/src/app/containers/Settings/Events/index.styl similarity index 100% rename from src/web/containers/Settings/Events/index.styl rename to src/app/containers/Settings/Events/index.styl diff --git a/src/web/containers/Settings/General/General.jsx b/src/app/containers/Settings/General/General.jsx similarity index 98% rename from src/web/containers/Settings/General/General.jsx rename to src/app/containers/Settings/General/General.jsx index aaf4a58a7..1c33ae06a 100644 --- a/src/web/containers/Settings/General/General.jsx +++ b/src/app/containers/Settings/General/General.jsx @@ -3,8 +3,8 @@ import get from 'lodash/get'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; import FacebookLoading from 'react-facebook-loading'; -import Space from 'web/components/Space'; -import i18n from 'web/lib/i18n'; +import Space from 'app/components/Space'; +import i18n from 'app/lib/i18n'; import styles from './index.styl'; class General extends PureComponent { diff --git a/src/web/containers/Settings/General/index.js b/src/app/containers/Settings/General/index.js similarity index 100% rename from src/web/containers/Settings/General/index.js rename to src/app/containers/Settings/General/index.js diff --git a/src/web/containers/Settings/General/index.styl b/src/app/containers/Settings/General/index.styl similarity index 100% rename from src/web/containers/Settings/General/index.styl rename to src/app/containers/Settings/General/index.styl diff --git a/src/web/containers/Settings/MachineProfiles/Axis.jsx b/src/app/containers/Settings/MachineProfiles/Axis.jsx similarity index 100% rename from src/web/containers/Settings/MachineProfiles/Axis.jsx rename to src/app/containers/Settings/MachineProfiles/Axis.jsx diff --git a/src/web/containers/Settings/MachineProfiles/CreateRecord.jsx b/src/app/containers/Settings/MachineProfiles/CreateRecord.jsx similarity index 94% rename from src/web/containers/Settings/MachineProfiles/CreateRecord.jsx rename to src/app/containers/Settings/MachineProfiles/CreateRecord.jsx index 1f848b5f9..0213bb417 100644 --- a/src/web/containers/Settings/MachineProfiles/CreateRecord.jsx +++ b/src/app/containers/Settings/MachineProfiles/CreateRecord.jsx @@ -2,15 +2,15 @@ import _get from 'lodash/get'; import PropTypes from 'prop-types'; import React, { Component } from 'react'; import { Form, Field } from 'react-final-form'; -import { Input } from 'web/components/FormControl'; -import FormGroup from 'web/components/FormGroup'; -import { FlexContainer, Row, Col } from 'web/components/GridSystem'; -import Margin from 'web/components/Margin'; -import Modal from 'web/components/Modal'; -import { ToastNotification } from 'web/components/Notifications'; -import SectionGroup from 'web/components/SectionGroup'; -import SectionTitle from 'web/components/SectionTitle'; -import i18n from 'web/lib/i18n'; +import { Input } from 'app/components/FormControl'; +import FormGroup from 'app/components/FormGroup'; +import { FlexContainer, Row, Col } from 'app/components/GridSystem'; +import Margin from 'app/components/Margin'; +import Modal from 'app/components/Modal'; +import { ToastNotification } from 'app/components/Notifications'; +import SectionGroup from 'app/components/SectionGroup'; +import SectionTitle from 'app/components/SectionTitle'; +import i18n from 'app/lib/i18n'; import Error from '../common/Error'; import * as validations from '../common/validations'; import Axis from './Axis'; diff --git a/src/web/containers/Settings/MachineProfiles/MachineProfiles.jsx b/src/app/containers/Settings/MachineProfiles/MachineProfiles.jsx similarity index 100% rename from src/web/containers/Settings/MachineProfiles/MachineProfiles.jsx rename to src/app/containers/Settings/MachineProfiles/MachineProfiles.jsx diff --git a/src/web/containers/Settings/MachineProfiles/TableRecords.jsx b/src/app/containers/Settings/MachineProfiles/TableRecords.jsx similarity index 95% rename from src/web/containers/Settings/MachineProfiles/TableRecords.jsx rename to src/app/containers/Settings/MachineProfiles/TableRecords.jsx index 2c21151c3..b7351d3db 100644 --- a/src/web/containers/Settings/MachineProfiles/TableRecords.jsx +++ b/src/app/containers/Settings/MachineProfiles/TableRecords.jsx @@ -2,17 +2,17 @@ import _get from 'lodash/get'; import chainedFunction from 'chained-function'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Anchor from 'web/components/Anchor'; -import { Button } from 'web/components/Buttons'; -import FormGroup from 'web/components/FormGroup'; -import { FlexContainer, Row, Col } from 'web/components/GridSystem'; -import Modal from 'web/components/Modal'; -import ModalTemplate from 'web/components/ModalTemplate'; -import Space from 'web/components/Space'; -import Table from 'web/components/Table'; -import { TablePagination } from 'web/components/Paginations'; -import portal from 'web/lib/portal'; -import i18n from 'web/lib/i18n'; +import Anchor from 'app/components/Anchor'; +import { Button } from 'app/components/Buttons'; +import FormGroup from 'app/components/FormGroup'; +import { FlexContainer, Row, Col } from 'app/components/GridSystem'; +import Modal from 'app/components/Modal'; +import ModalTemplate from 'app/components/ModalTemplate'; +import Space from 'app/components/Space'; +import Table from 'app/components/Table'; +import { TablePagination } from 'app/components/Paginations'; +import portal from 'app/lib/portal'; +import i18n from 'app/lib/i18n'; import { MODAL_CREATE_RECORD, MODAL_UPDATE_RECORD diff --git a/src/web/containers/Settings/MachineProfiles/UpdateRecord.jsx b/src/app/containers/Settings/MachineProfiles/UpdateRecord.jsx similarity index 94% rename from src/web/containers/Settings/MachineProfiles/UpdateRecord.jsx rename to src/app/containers/Settings/MachineProfiles/UpdateRecord.jsx index 53084b415..db7d93b24 100644 --- a/src/web/containers/Settings/MachineProfiles/UpdateRecord.jsx +++ b/src/app/containers/Settings/MachineProfiles/UpdateRecord.jsx @@ -2,15 +2,15 @@ import _get from 'lodash/get'; import PropTypes from 'prop-types'; import React, { Component } from 'react'; import { Form, Field } from 'react-final-form'; -import { Input } from 'web/components/FormControl'; -import FormGroup from 'web/components/FormGroup'; -import { FlexContainer, Row, Col } from 'web/components/GridSystem'; -import Margin from 'web/components/Margin'; -import Modal from 'web/components/Modal'; -import { ToastNotification } from 'web/components/Notifications'; -import SectionGroup from 'web/components/SectionGroup'; -import SectionTitle from 'web/components/SectionTitle'; -import i18n from 'web/lib/i18n'; +import { Input } from 'app/components/FormControl'; +import FormGroup from 'app/components/FormGroup'; +import { FlexContainer, Row, Col } from 'app/components/GridSystem'; +import Margin from 'app/components/Margin'; +import Modal from 'app/components/Modal'; +import { ToastNotification } from 'app/components/Notifications'; +import SectionGroup from 'app/components/SectionGroup'; +import SectionTitle from 'app/components/SectionTitle'; +import i18n from 'app/lib/i18n'; import Error from '../common/Error'; import * as validations from '../common/validations'; import Axis from './Axis'; diff --git a/src/app/containers/Settings/MachineProfiles/constants.js b/src/app/containers/Settings/MachineProfiles/constants.js new file mode 100644 index 000000000..0348b86d0 --- /dev/null +++ b/src/app/containers/Settings/MachineProfiles/constants.js @@ -0,0 +1,9 @@ +import constants from 'namespace-constants'; + +export const { + MODAL_CREATE_RECORD, + MODAL_UPDATE_RECORD +} = constants('containers/settings/machineProfiles', [ + 'MODAL_CREATE_RECORD', + 'MODAL_UPDATE_RECORD' +]); diff --git a/src/web/containers/Settings/MachineProfiles/index.js b/src/app/containers/Settings/MachineProfiles/index.js similarity index 100% rename from src/web/containers/Settings/MachineProfiles/index.js rename to src/app/containers/Settings/MachineProfiles/index.js diff --git a/src/web/containers/Settings/MachineProfiles/index.styl b/src/app/containers/Settings/MachineProfiles/index.styl similarity index 100% rename from src/web/containers/Settings/MachineProfiles/index.styl rename to src/app/containers/Settings/MachineProfiles/index.styl diff --git a/src/web/containers/Settings/Settings.jsx b/src/app/containers/Settings/Settings.jsx similarity index 99% rename from src/web/containers/Settings/Settings.jsx rename to src/app/containers/Settings/Settings.jsx index 1ddd9c3d3..345223826 100644 --- a/src/web/containers/Settings/Settings.jsx +++ b/src/app/containers/Settings/Settings.jsx @@ -10,11 +10,15 @@ import _isEqual from 'lodash/isEqual'; import pubsub from 'pubsub-js'; import React, { PureComponent } from 'react'; import { Link, withRouter } from 'react-router-dom'; -import api from '../../api'; -import settings from '../../config/settings'; -import Breadcrumbs from '../../components/Breadcrumbs'; -import i18n from '../../lib/i18n'; -import store from '../../store'; +import api from 'app/api'; +import { + ERR_CONFLICT, + ERR_PRECONDITION_FAILED +} from 'app/api/constants'; +import settings from 'app/config/settings'; +import Breadcrumbs from 'app/components/Breadcrumbs'; +import i18n from 'app/lib/i18n'; +import store from 'app/store'; import General from './General'; import Workspace from './Workspace'; import MachineProfiles from './MachineProfiles'; @@ -24,10 +28,6 @@ import Commands from './Commands'; import Events from './Events'; import About from './About'; import styles from './index.styl'; -import { - ERR_CONFLICT, - ERR_PRECONDITION_FAILED -} from '../../api/constants'; const mapSectionPathToId = (path = '') => { return _camelCase(path.split('/')[0] || ''); diff --git a/src/web/containers/Settings/UserAccounts/CreateRecord.jsx b/src/app/containers/Settings/UserAccounts/CreateRecord.jsx similarity index 95% rename from src/web/containers/Settings/UserAccounts/CreateRecord.jsx rename to src/app/containers/Settings/UserAccounts/CreateRecord.jsx index 1d4b9f33d..aa65fad7b 100644 --- a/src/web/containers/Settings/UserAccounts/CreateRecord.jsx +++ b/src/app/containers/Settings/UserAccounts/CreateRecord.jsx @@ -2,12 +2,12 @@ import _ from 'lodash'; import classNames from 'classnames'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Modal from 'web/components/Modal'; -import { ToastNotification } from 'web/components/Notifications'; -import ToggleSwitch from 'web/components/ToggleSwitch'; -import { Form, Input } from 'web/components/Validation'; -import i18n from 'web/lib/i18n'; -import * as validations from 'web/lib/validations'; +import Modal from 'app/components/Modal'; +import { ToastNotification } from 'app/components/Notifications'; +import ToggleSwitch from 'app/components/ToggleSwitch'; +import { Form, Input } from 'app/components/Validation'; +import i18n from 'app/lib/i18n'; +import * as validations from 'app/lib/validations'; import styles from '../form.styl'; class CreateRecord extends PureComponent { diff --git a/src/web/containers/Settings/UserAccounts/TableRecords.jsx b/src/app/containers/Settings/UserAccounts/TableRecords.jsx similarity index 95% rename from src/web/containers/Settings/UserAccounts/TableRecords.jsx rename to src/app/containers/Settings/UserAccounts/TableRecords.jsx index a9053b971..68803f3cf 100644 --- a/src/web/containers/Settings/UserAccounts/TableRecords.jsx +++ b/src/app/containers/Settings/UserAccounts/TableRecords.jsx @@ -3,16 +3,16 @@ import chainedFunction from 'chained-function'; import moment from 'moment'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Anchor from 'web/components/Anchor'; -import { Button } from 'web/components/Buttons'; -import FormGroup from 'web/components/FormGroup'; -import Modal from 'web/components/Modal'; -import Space from 'web/components/Space'; -import Table from 'web/components/Table'; -import ToggleSwitch from 'web/components/ToggleSwitch'; -import { TablePagination } from 'web/components/Paginations'; -import portal from 'web/lib/portal'; -import i18n from 'web/lib/i18n'; +import Anchor from 'app/components/Anchor'; +import { Button } from 'app/components/Buttons'; +import FormGroup from 'app/components/FormGroup'; +import Modal from 'app/components/Modal'; +import Space from 'app/components/Space'; +import Table from 'app/components/Table'; +import ToggleSwitch from 'app/components/ToggleSwitch'; +import { TablePagination } from 'app/components/Paginations'; +import portal from 'app/lib/portal'; +import i18n from 'app/lib/i18n'; import { MODAL_CREATE_RECORD, MODAL_UPDATE_RECORD diff --git a/src/web/containers/Settings/UserAccounts/UpdateRecord.jsx b/src/app/containers/Settings/UserAccounts/UpdateRecord.jsx similarity index 96% rename from src/web/containers/Settings/UserAccounts/UpdateRecord.jsx rename to src/app/containers/Settings/UserAccounts/UpdateRecord.jsx index bc66b71fc..3017994f9 100644 --- a/src/web/containers/Settings/UserAccounts/UpdateRecord.jsx +++ b/src/app/containers/Settings/UserAccounts/UpdateRecord.jsx @@ -2,12 +2,12 @@ import _ from 'lodash'; import classNames from 'classnames'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Modal from 'web/components/Modal'; -import { ToastNotification } from 'web/components/Notifications'; -import ToggleSwitch from 'web/components/ToggleSwitch'; -import { Form, Input } from 'web/components/Validation'; -import i18n from 'web/lib/i18n'; -import * as validations from 'web/lib/validations'; +import Modal from 'app/components/Modal'; +import { ToastNotification } from 'app/components/Notifications'; +import ToggleSwitch from 'app/components/ToggleSwitch'; +import { Form, Input } from 'app/components/Validation'; +import i18n from 'app/lib/i18n'; +import * as validations from 'app/lib/validations'; import styles from '../form.styl'; class UpdateRecord extends PureComponent { diff --git a/src/web/containers/Settings/UserAccounts/UserAccounts.jsx b/src/app/containers/Settings/UserAccounts/UserAccounts.jsx similarity index 100% rename from src/web/containers/Settings/UserAccounts/UserAccounts.jsx rename to src/app/containers/Settings/UserAccounts/UserAccounts.jsx diff --git a/src/app/containers/Settings/UserAccounts/constants.js b/src/app/containers/Settings/UserAccounts/constants.js new file mode 100644 index 000000000..a8d3dcafc --- /dev/null +++ b/src/app/containers/Settings/UserAccounts/constants.js @@ -0,0 +1,9 @@ +import constants from 'namespace-constants'; + +export const { + MODAL_CREATE_RECORD, + MODAL_UPDATE_RECORD +} = constants('containers/settings/userAccounts', [ + 'MODAL_CREATE_RECORD', + 'MODAL_UPDATE_RECORD' +]); diff --git a/src/web/containers/Settings/UserAccounts/index.js b/src/app/containers/Settings/UserAccounts/index.js similarity index 100% rename from src/web/containers/Settings/UserAccounts/index.js rename to src/app/containers/Settings/UserAccounts/index.js diff --git a/src/web/containers/Settings/UserAccounts/index.styl b/src/app/containers/Settings/UserAccounts/index.styl similarity index 100% rename from src/web/containers/Settings/UserAccounts/index.styl rename to src/app/containers/Settings/UserAccounts/index.styl diff --git a/src/web/containers/Settings/Workspace/ImportSettings.jsx b/src/app/containers/Settings/Workspace/ImportSettings.jsx similarity index 90% rename from src/web/containers/Settings/Workspace/ImportSettings.jsx rename to src/app/containers/Settings/Workspace/ImportSettings.jsx index e16b3ca6e..1b4051d97 100644 --- a/src/web/containers/Settings/Workspace/ImportSettings.jsx +++ b/src/app/containers/Settings/Workspace/ImportSettings.jsx @@ -1,10 +1,10 @@ import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import { Button } from 'web/components/Buttons'; -import Modal from 'web/components/Modal'; -import Space from 'web/components/Space'; -import i18n from 'web/lib/i18n'; -import store from 'web/store'; +import { Button } from 'app/components/Buttons'; +import Modal from 'app/components/Modal'; +import Space from 'app/components/Space'; +import i18n from 'app/lib/i18n'; +import store from 'app/store'; class ImportSettings extends PureComponent { static propTypes = { diff --git a/src/web/containers/Settings/Workspace/RestoreDefaults.jsx b/src/app/containers/Settings/Workspace/RestoreDefaults.jsx similarity index 87% rename from src/web/containers/Settings/Workspace/RestoreDefaults.jsx rename to src/app/containers/Settings/Workspace/RestoreDefaults.jsx index 7939b03cf..803dac3cf 100644 --- a/src/web/containers/Settings/Workspace/RestoreDefaults.jsx +++ b/src/app/containers/Settings/Workspace/RestoreDefaults.jsx @@ -1,11 +1,11 @@ import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import { Button } from 'web/components/Buttons'; -import Modal from 'web/components/Modal'; -import Space from 'web/components/Space'; -import i18n from 'web/lib/i18n'; -import store from 'web/store'; -import defaultState from 'web/store/defaultState'; +import { Button } from 'app/components/Buttons'; +import Modal from 'app/components/Modal'; +import Space from 'app/components/Space'; +import i18n from 'app/lib/i18n'; +import store from 'app/store'; +import defaultState from 'app/store/defaultState'; class RestoreDefaults extends PureComponent { static propTypes = { diff --git a/src/web/containers/Settings/Workspace/Workspace.jsx b/src/app/containers/Settings/Workspace/Workspace.jsx similarity index 94% rename from src/web/containers/Settings/Workspace/Workspace.jsx rename to src/app/containers/Settings/Workspace/Workspace.jsx index c772bfcf2..b940e7bd5 100644 --- a/src/web/containers/Settings/Workspace/Workspace.jsx +++ b/src/app/containers/Settings/Workspace/Workspace.jsx @@ -1,14 +1,14 @@ import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import { Button } from 'web/components/Buttons'; -import ModalTemplate from 'web/components/ModalTemplate'; -import Modal from 'web/components/Modal'; -import Space from 'web/components/Space'; -import settings from 'web/config/settings'; -import i18n from 'web/lib/i18n'; -import log from 'web/lib/log'; -import portal from 'web/lib/portal'; -import store from 'web/store'; +import { Button } from 'app/components/Buttons'; +import ModalTemplate from 'app/components/ModalTemplate'; +import Modal from 'app/components/Modal'; +import Space from 'app/components/Space'; +import settings from 'app/config/settings'; +import i18n from 'app/lib/i18n'; +import log from 'app/lib/log'; +import portal from 'app/lib/portal'; +import store from 'app/store'; import RestoreDefaults from './RestoreDefaults'; import ImportSettings from './ImportSettings'; import styles from './index.styl'; diff --git a/src/app/containers/Settings/Workspace/constants.js b/src/app/containers/Settings/Workspace/constants.js new file mode 100644 index 000000000..a96ea6894 --- /dev/null +++ b/src/app/containers/Settings/Workspace/constants.js @@ -0,0 +1,9 @@ +import constants from 'namespace-constants'; + +export const { + MODAL_RESTORE_DEFAULTS, + MODAL_IMPORT_SETTINGS +} = constants('containers/settings/workspace', [ + 'MODAL_RESTORE_DEFAULTS', + 'MODAL_IMPORT_SETTINGS' +]); diff --git a/src/web/containers/Settings/Workspace/index.js b/src/app/containers/Settings/Workspace/index.js similarity index 100% rename from src/web/containers/Settings/Workspace/index.js rename to src/app/containers/Settings/Workspace/index.js diff --git a/src/web/containers/Settings/Workspace/index.styl b/src/app/containers/Settings/Workspace/index.styl similarity index 100% rename from src/web/containers/Settings/Workspace/index.styl rename to src/app/containers/Settings/Workspace/index.styl diff --git a/src/web/containers/Settings/common/Error.jsx b/src/app/containers/Settings/common/Error.jsx similarity index 100% rename from src/web/containers/Settings/common/Error.jsx rename to src/app/containers/Settings/common/Error.jsx diff --git a/src/web/containers/Settings/common/validations.js b/src/app/containers/Settings/common/validations.js similarity index 76% rename from src/web/containers/Settings/common/validations.js rename to src/app/containers/Settings/common/validations.js index 7704f1a18..2fc373cba 100644 --- a/src/web/containers/Settings/common/validations.js +++ b/src/app/containers/Settings/common/validations.js @@ -1,4 +1,4 @@ -import i18n from 'web/lib/i18n'; +import i18n from 'app/lib/i18n'; export const required = (value) => { return !!value ? undefined : i18n._('This field is required.'); diff --git a/src/web/containers/Settings/form.styl b/src/app/containers/Settings/form.styl similarity index 100% rename from src/web/containers/Settings/form.styl rename to src/app/containers/Settings/form.styl diff --git a/src/web/containers/Settings/index.js b/src/app/containers/Settings/index.js similarity index 100% rename from src/web/containers/Settings/index.js rename to src/app/containers/Settings/index.js diff --git a/src/web/containers/Settings/index.styl b/src/app/containers/Settings/index.styl similarity index 100% rename from src/web/containers/Settings/index.styl rename to src/app/containers/Settings/index.styl diff --git a/src/web/containers/Sidebar/Sidebar.jsx b/src/app/containers/Sidebar/Sidebar.jsx similarity index 98% rename from src/web/containers/Sidebar/Sidebar.jsx rename to src/app/containers/Sidebar/Sidebar.jsx index b0066e8cf..a2040c876 100644 --- a/src/web/containers/Sidebar/Sidebar.jsx +++ b/src/app/containers/Sidebar/Sidebar.jsx @@ -1,7 +1,7 @@ import classNames from 'classnames'; import React, { PureComponent } from 'react'; import { Link, withRouter } from 'react-router-dom'; -import i18n from '../../lib/i18n'; +import i18n from 'app/lib/i18n'; import styles from './index.styl'; class Sidebar extends PureComponent { diff --git a/src/web/containers/Sidebar/images/gear.svg b/src/app/containers/Sidebar/images/gear.svg similarity index 100% rename from src/web/containers/Sidebar/images/gear.svg rename to src/app/containers/Sidebar/images/gear.svg diff --git a/src/web/containers/Sidebar/images/xyz.svg b/src/app/containers/Sidebar/images/xyz.svg similarity index 100% rename from src/web/containers/Sidebar/images/xyz.svg rename to src/app/containers/Sidebar/images/xyz.svg diff --git a/src/web/containers/Sidebar/index.js b/src/app/containers/Sidebar/index.js similarity index 100% rename from src/web/containers/Sidebar/index.js rename to src/app/containers/Sidebar/index.js diff --git a/src/web/containers/Sidebar/index.styl b/src/app/containers/Sidebar/index.styl similarity index 100% rename from src/web/containers/Sidebar/index.styl rename to src/app/containers/Sidebar/index.styl diff --git a/src/web/containers/Workspace/DefaultWidgets.jsx b/src/app/containers/Workspace/DefaultWidgets.jsx similarity index 96% rename from src/web/containers/Workspace/DefaultWidgets.jsx rename to src/app/containers/Workspace/DefaultWidgets.jsx index 07fb609dd..29a0a50be 100644 --- a/src/web/containers/Workspace/DefaultWidgets.jsx +++ b/src/app/containers/Workspace/DefaultWidgets.jsx @@ -1,7 +1,7 @@ import classNames from 'classnames'; import ensureArray from 'ensure-array'; import React, { PureComponent } from 'react'; -import store from '../../store'; +import store from 'app/store'; import Widget from './Widget'; import styles from './widgets.styl'; diff --git a/src/web/containers/Workspace/PrimaryWidgets.jsx b/src/app/containers/Workspace/PrimaryWidgets.jsx similarity index 96% rename from src/web/containers/Workspace/PrimaryWidgets.jsx rename to src/app/containers/Workspace/PrimaryWidgets.jsx index b17af49ce..32d290fc7 100644 --- a/src/web/containers/Workspace/PrimaryWidgets.jsx +++ b/src/app/containers/Workspace/PrimaryWidgets.jsx @@ -9,14 +9,14 @@ import PropTypes from 'prop-types'; import React, { Component } from 'react'; import Sortable from 'react-sortablejs'; import uuid from 'uuid'; -import { GRBL, MARLIN, SMOOTHIE, TINYG } from '../../constants'; -import { Button } from '../../components/Buttons'; -import Modal from '../../components/Modal'; -import controller from '../../lib/controller'; -import i18n from '../../lib/i18n'; -import log from '../../lib/log'; -import portal from '../../lib/portal'; -import store from '../../store'; +import { GRBL, MARLIN, SMOOTHIE, TINYG } from 'app/constants'; +import { Button } from 'app/components/Buttons'; +import Modal from 'app/components/Modal'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; +import log from 'app/lib/log'; +import portal from 'app/lib/portal'; +import store from 'app/store'; import Widget from './Widget'; import styles from './widgets.styl'; diff --git a/src/web/containers/Workspace/SecondaryWidgets.jsx b/src/app/containers/Workspace/SecondaryWidgets.jsx similarity index 96% rename from src/web/containers/Workspace/SecondaryWidgets.jsx rename to src/app/containers/Workspace/SecondaryWidgets.jsx index a4ff3fa2d..d1d65d9dd 100644 --- a/src/web/containers/Workspace/SecondaryWidgets.jsx +++ b/src/app/containers/Workspace/SecondaryWidgets.jsx @@ -9,14 +9,14 @@ import PropTypes from 'prop-types'; import React, { Component } from 'react'; import Sortable from 'react-sortablejs'; import uuid from 'uuid'; -import { GRBL, MARLIN, SMOOTHIE, TINYG } from '../../constants'; -import { Button } from '../../components/Buttons'; -import Modal from '../../components/Modal'; -import controller from '../../lib/controller'; -import i18n from '../../lib/i18n'; -import log from '../../lib/log'; -import portal from '../../lib/portal'; -import store from '../../store'; +import { GRBL, MARLIN, SMOOTHIE, TINYG } from 'app/constants'; +import { Button } from 'app/components/Buttons'; +import Modal from 'app/components/Modal'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; +import log from 'app/lib/log'; +import portal from 'app/lib/portal'; +import store from 'app/store'; import Widget from './Widget'; import styles from './widgets.styl'; diff --git a/src/web/containers/Workspace/Widget.jsx b/src/app/containers/Workspace/Widget.jsx similarity index 64% rename from src/web/containers/Workspace/Widget.jsx rename to src/app/containers/Workspace/Widget.jsx index f3a92bb0b..9a3441fb6 100644 --- a/src/web/containers/Workspace/Widget.jsx +++ b/src/app/containers/Workspace/Widget.jsx @@ -1,20 +1,20 @@ import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import AxesWidget from '../../widgets/Axes'; -import ConnectionWidget from '../../widgets/Connection'; -import ConsoleWidget from '../../widgets/Console'; -import GCodeWidget from '../../widgets/GCode'; -import GrblWidget from '../../widgets/Grbl'; -import LaserWidget from '../../widgets/Laser'; -import MacroWidget from '../../widgets/Macro'; -import MarlinWidget from '../../widgets/Marlin'; -import ProbeWidget from '../../widgets/Probe'; -import SmoothieWidget from '../../widgets/Smoothie'; -import SpindleWidget from '../../widgets/Spindle'; -import CustomWidget from '../../widgets/Custom'; -import TinyGWidget from '../../widgets/TinyG'; -import VisualizerWidget from '../../widgets/Visualizer'; -import WebcamWidget from '../../widgets/Webcam'; +import AxesWidget from 'app/widgets/Axes'; +import ConnectionWidget from 'app/widgets/Connection'; +import ConsoleWidget from 'app/widgets/Console'; +import GCodeWidget from 'app/widgets/GCode'; +import GrblWidget from 'app/widgets/Grbl'; +import LaserWidget from 'app/widgets/Laser'; +import MacroWidget from 'app/widgets/Macro'; +import MarlinWidget from 'app/widgets/Marlin'; +import ProbeWidget from 'app/widgets/Probe'; +import SmoothieWidget from 'app/widgets/Smoothie'; +import SpindleWidget from 'app/widgets/Spindle'; +import CustomWidget from 'app/widgets/Custom'; +import TinyGWidget from 'app/widgets/TinyG'; +import VisualizerWidget from 'app/widgets/Visualizer'; +import WebcamWidget from 'app/widgets/Webcam'; const getWidgetByName = (name) => { return { diff --git a/src/web/containers/Workspace/WidgetManager/WidgetList.jsx b/src/app/containers/Workspace/WidgetManager/WidgetList.jsx similarity index 100% rename from src/web/containers/Workspace/WidgetManager/WidgetList.jsx rename to src/app/containers/Workspace/WidgetManager/WidgetList.jsx diff --git a/src/web/containers/Workspace/WidgetManager/WidgetListItem.jsx b/src/app/containers/Workspace/WidgetManager/WidgetListItem.jsx similarity index 98% rename from src/web/containers/Workspace/WidgetManager/WidgetListItem.jsx rename to src/app/containers/Workspace/WidgetManager/WidgetListItem.jsx index 26e048480..68660f6ac 100644 --- a/src/web/containers/Workspace/WidgetManager/WidgetListItem.jsx +++ b/src/app/containers/Workspace/WidgetManager/WidgetListItem.jsx @@ -1,7 +1,7 @@ import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; import Toggle from 'react-toggle'; -import i18n from '../../../lib/i18n'; +import i18n from 'app/lib/i18n'; class WidgetListItem extends PureComponent { static propTypes = { diff --git a/src/web/containers/Workspace/WidgetManager/WidgetManager.jsx b/src/app/containers/Workspace/WidgetManager/WidgetManager.jsx similarity index 96% rename from src/web/containers/Workspace/WidgetManager/WidgetManager.jsx rename to src/app/containers/Workspace/WidgetManager/WidgetManager.jsx index 219e93906..ab1b8d582 100644 --- a/src/web/containers/Workspace/WidgetManager/WidgetManager.jsx +++ b/src/app/containers/Workspace/WidgetManager/WidgetManager.jsx @@ -4,11 +4,11 @@ import includes from 'lodash/includes'; import union from 'lodash/union'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Modal from '../../../components/Modal'; -import { GRBL, MARLIN, SMOOTHIE, TINYG } from '../../../constants'; -import controller from '../../../lib/controller'; -import i18n from '../../../lib/i18n'; -import store from '../../../store'; +import Modal from 'app/components/Modal'; +import { GRBL, MARLIN, SMOOTHIE, TINYG } from 'app/constants'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; +import store from 'app/store'; import WidgetList from './WidgetList'; class WidgetManager extends PureComponent { diff --git a/src/web/containers/Workspace/WidgetManager/index.jsx b/src/app/containers/Workspace/WidgetManager/index.jsx similarity index 93% rename from src/web/containers/Workspace/WidgetManager/index.jsx rename to src/app/containers/Workspace/WidgetManager/index.jsx index 63cc1aeb6..02da52228 100644 --- a/src/web/containers/Workspace/WidgetManager/index.jsx +++ b/src/app/containers/Workspace/WidgetManager/index.jsx @@ -3,10 +3,10 @@ import includes from 'lodash/includes'; import union from 'lodash/union'; import React from 'react'; import ReactDOM from 'react-dom'; -import { GRBL, MARLIN, SMOOTHIE, TINYG } from '../../../constants'; -import controller from '../../../lib/controller'; -import store from '../../../store'; -import defaultState from '../../../store/defaultState'; +import { GRBL, MARLIN, SMOOTHIE, TINYG } from 'app/constants'; +import controller from 'app/lib/controller'; +import store from 'app/store'; +import defaultState from 'app/store/defaultState'; import WidgetManager from './WidgetManager'; export const getActiveWidgets = () => { diff --git a/src/web/containers/Workspace/Workspace.jsx b/src/app/containers/Workspace/Workspace.jsx similarity index 99% rename from src/web/containers/Workspace/Workspace.jsx rename to src/app/containers/Workspace/Workspace.jsx index 1e2fd0cdc..d3ea87fcf 100644 --- a/src/web/containers/Workspace/Workspace.jsx +++ b/src/app/containers/Workspace/Workspace.jsx @@ -5,12 +5,15 @@ import pubsub from 'pubsub-js'; import React, { PureComponent } from 'react'; import ReactDOM from 'react-dom'; import { withRouter } from 'react-router-dom'; -import { Button, ButtonGroup, ButtonToolbar } from '../../components/Buttons'; -import api from '../../api'; -import controller from '../../lib/controller'; -import i18n from '../../lib/i18n'; -import log from '../../lib/log'; -import store from '../../store'; +import { Button, ButtonGroup, ButtonToolbar } from 'app/components/Buttons'; +import api from 'app/api'; +import { + WORKFLOW_STATE_IDLE +} from 'app/constants'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; +import log from 'app/lib/log'; +import store from 'app/store'; import * as widgetManager from './WidgetManager'; import DefaultWidgets from './DefaultWidgets'; import PrimaryWidgets from './PrimaryWidgets'; @@ -19,9 +22,6 @@ import FeederPaused from './modals/FeederPaused'; import FeederWait from './modals/FeederWait'; import ServerDisconnected from './modals/ServerDisconnected'; import styles from './index.styl'; -import { - WORKFLOW_STATE_IDLE -} from '../../constants'; import { MODAL_NONE, MODAL_FEEDER_PAUSED, diff --git a/src/web/containers/Workspace/constants.js b/src/app/containers/Workspace/constants.js similarity index 100% rename from src/web/containers/Workspace/constants.js rename to src/app/containers/Workspace/constants.js diff --git a/src/web/containers/Workspace/index.js b/src/app/containers/Workspace/index.js similarity index 100% rename from src/web/containers/Workspace/index.js rename to src/app/containers/Workspace/index.js diff --git a/src/web/containers/Workspace/index.styl b/src/app/containers/Workspace/index.styl similarity index 100% rename from src/web/containers/Workspace/index.styl rename to src/app/containers/Workspace/index.styl diff --git a/src/web/containers/Workspace/modals/FeederPaused.jsx b/src/app/containers/Workspace/modals/FeederPaused.jsx similarity index 84% rename from src/web/containers/Workspace/modals/FeederPaused.jsx rename to src/app/containers/Workspace/modals/FeederPaused.jsx index 925218e72..aa73e9339 100644 --- a/src/web/containers/Workspace/modals/FeederPaused.jsx +++ b/src/app/containers/Workspace/modals/FeederPaused.jsx @@ -1,11 +1,11 @@ import chainedFunction from 'chained-function'; import PropTypes from 'prop-types'; import React from 'react'; -import { Button } from '../../../components/Buttons'; -import ModalTemplate from '../../../components/ModalTemplate'; -import Modal from '../../../components/Modal'; -import controller from '../../../lib/controller'; -import i18n from '../../../lib/i18n'; +import { Button } from 'app/components/Buttons'; +import ModalTemplate from 'app/components/ModalTemplate'; +import Modal from 'app/components/Modal'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; const FeederPaused = (props) => ( ( { // Reload the current page, without using the cache diff --git a/src/web/containers/Workspace/widgets.styl b/src/app/containers/Workspace/widgets.styl similarity index 100% rename from src/web/containers/Workspace/widgets.styl rename to src/app/containers/Workspace/widgets.styl diff --git a/src/web/containers/variables.styl b/src/app/containers/variables.styl similarity index 100% rename from src/web/containers/variables.styl rename to src/app/containers/variables.styl diff --git a/src/web/favicon.ico b/src/app/favicon.ico similarity index 100% rename from src/web/favicon.ico rename to src/app/favicon.ico diff --git a/src/web/fonts/Interstate-ExtraLight-webfont.eot b/src/app/fonts/Interstate-ExtraLight-webfont.eot similarity index 100% rename from src/web/fonts/Interstate-ExtraLight-webfont.eot rename to src/app/fonts/Interstate-ExtraLight-webfont.eot diff --git a/src/web/fonts/Interstate-ExtraLight-webfont.svg b/src/app/fonts/Interstate-ExtraLight-webfont.svg similarity index 100% rename from src/web/fonts/Interstate-ExtraLight-webfont.svg rename to src/app/fonts/Interstate-ExtraLight-webfont.svg diff --git a/src/web/fonts/Interstate-ExtraLight-webfont.ttf b/src/app/fonts/Interstate-ExtraLight-webfont.ttf similarity index 100% rename from src/web/fonts/Interstate-ExtraLight-webfont.ttf rename to src/app/fonts/Interstate-ExtraLight-webfont.ttf diff --git a/src/web/fonts/Interstate-ExtraLight-webfont.woff b/src/app/fonts/Interstate-ExtraLight-webfont.woff similarity index 100% rename from src/web/fonts/Interstate-ExtraLight-webfont.woff rename to src/app/fonts/Interstate-ExtraLight-webfont.woff diff --git a/src/web/fonts/Interstate-Light-webfont.eot b/src/app/fonts/Interstate-Light-webfont.eot similarity index 100% rename from src/web/fonts/Interstate-Light-webfont.eot rename to src/app/fonts/Interstate-Light-webfont.eot diff --git a/src/web/fonts/Interstate-Light-webfont.svg b/src/app/fonts/Interstate-Light-webfont.svg similarity index 100% rename from src/web/fonts/Interstate-Light-webfont.svg rename to src/app/fonts/Interstate-Light-webfont.svg diff --git a/src/web/fonts/Interstate-Light-webfont.ttf b/src/app/fonts/Interstate-Light-webfont.ttf similarity index 100% rename from src/web/fonts/Interstate-Light-webfont.ttf rename to src/app/fonts/Interstate-Light-webfont.ttf diff --git a/src/web/fonts/Interstate-Light-webfont.woff b/src/app/fonts/Interstate-Light-webfont.woff similarity index 100% rename from src/web/fonts/Interstate-Light-webfont.woff rename to src/app/fonts/Interstate-Light-webfont.woff diff --git a/src/web/fonts/Interstate-Regular-webfont.eot b/src/app/fonts/Interstate-Regular-webfont.eot similarity index 100% rename from src/web/fonts/Interstate-Regular-webfont.eot rename to src/app/fonts/Interstate-Regular-webfont.eot diff --git a/src/web/fonts/Interstate-Regular-webfont.svg b/src/app/fonts/Interstate-Regular-webfont.svg similarity index 100% rename from src/web/fonts/Interstate-Regular-webfont.svg rename to src/app/fonts/Interstate-Regular-webfont.svg diff --git a/src/web/fonts/Interstate-Regular-webfont.ttf b/src/app/fonts/Interstate-Regular-webfont.ttf similarity index 100% rename from src/web/fonts/Interstate-Regular-webfont.ttf rename to src/app/fonts/Interstate-Regular-webfont.ttf diff --git a/src/web/fonts/Interstate-Regular-webfont.woff b/src/app/fonts/Interstate-Regular-webfont.woff similarity index 100% rename from src/web/fonts/Interstate-Regular-webfont.woff rename to src/app/fonts/Interstate-Regular-webfont.woff diff --git a/src/web/fonts/glyphicons-halflings-regular.eot b/src/app/fonts/glyphicons-halflings-regular.eot similarity index 100% rename from src/web/fonts/glyphicons-halflings-regular.eot rename to src/app/fonts/glyphicons-halflings-regular.eot diff --git a/src/web/fonts/glyphicons-halflings-regular.svg b/src/app/fonts/glyphicons-halflings-regular.svg similarity index 100% rename from src/web/fonts/glyphicons-halflings-regular.svg rename to src/app/fonts/glyphicons-halflings-regular.svg diff --git a/src/web/fonts/glyphicons-halflings-regular.ttf b/src/app/fonts/glyphicons-halflings-regular.ttf similarity index 100% rename from src/web/fonts/glyphicons-halflings-regular.ttf rename to src/app/fonts/glyphicons-halflings-regular.ttf diff --git a/src/web/fonts/glyphicons-halflings-regular.woff b/src/app/fonts/glyphicons-halflings-regular.woff similarity index 100% rename from src/web/fonts/glyphicons-halflings-regular.woff rename to src/app/fonts/glyphicons-halflings-regular.woff diff --git a/src/web/fonts/glyphicons-halflings-regular.woff2 b/src/app/fonts/glyphicons-halflings-regular.woff2 similarity index 100% rename from src/web/fonts/glyphicons-halflings-regular.woff2 rename to src/app/fonts/glyphicons-halflings-regular.woff2 diff --git a/src/web/i18n/cs/controller.json b/src/app/i18n/cs/controller.json similarity index 100% rename from src/web/i18n/cs/controller.json rename to src/app/i18n/cs/controller.json diff --git a/src/web/i18n/cs/gcode.json b/src/app/i18n/cs/gcode.json similarity index 100% rename from src/web/i18n/cs/gcode.json rename to src/app/i18n/cs/gcode.json diff --git a/src/app/i18n/cs/resource.json b/src/app/i18n/cs/resource.json old mode 100755 new mode 100644 index bfcf25785..c75e6f4d0 --- a/src/app/i18n/cs/resource.json +++ b/src/app/i18n/cs/resource.json @@ -1,4 +1,533 @@ { - "loading": "Nahrávám...", - "title": "CNCjs" + "Records: {{from}} - {{to}} / {{total}}": "Rekordy: {{from}} - {{to}} / {{total}}", + "Records: {{total}}": "Rekordy: {{total}}", + "{{pageLength}} per page": "", + "New update available": "K dispozici nová aktualizace", + "Command succeeded": "", + "Command failed ({{err}})": "", + "My Account": "", + "Signed in as {{name}}": "", + "Account": "Účet", + "Sign Out": "Odhlásit se", + "Options": "Možnosti", + "Command": "", + "Show notifications": "", + "Help": "Nápověda", + "Report an issue": "Nahlásit problém", + "Cycle Start": "Start cyklu", + "Feedhold": "Feedhold", + "Homing": "Homing", + "Sleep": "Režim spánku", + "Unlock": "Odemknout", + "Reset": "Resetovat", + "Authentication failed.": "", + "Error": "", + "Sign in to {{name}}": "", + "Username": "Uživatelské jméno", + "Password": "Heslo", + "Sign In": "Přihlásit se", + "Forgot your password?": "", + "A web-based interface for CNC milling controller running Grbl, Smoothieware, or TinyG": "", + "Learn more": "Další informace", + "Downloads": "Stažené soubory", + "Checking for updates...": "Vyhledávají se aktualizace...", + "A new version of {{name}} is available": "Je dostupná nová verze aplikace {{name}}", + "Version {{version}}": "Verze {{version}}", + "Latest version": "Nejnovější verzi", + "You already have the newest version of {{name}}": "Máte nainstalovanou nejnovější verzi aplikace {{name}}", + "New": "", + "Account status": "", + "Name": "Název", + "Confirm Password": "", + "Cancel": "Storno", + "OK": "OK", + "An unexpected error has occurred.": "", + "Loading...": "Nahrávám...", + "No data to display": "Žádná data k zobrazení", + "Enabled": "Povoleno", + "Disabled": "Zakázáno", + "Date Modified": "", + "Action": "Akce", + "Edit Account": "", + "Delete Account": "", + "Settings": "Nastavení", + "Are you sure you want to delete the account?": "", + "Update": "", + "Old Password": "", + "Change Password": "", + "New Password": "", + "Commands": "", + "Title": "", + "and more...": "", + "Delete": "Odstranit", + "Are you sure you want to delete this item?": "", + "Exception": "", + "Continue execution when an error is detected in the G-code program": "", + "Enabling this option may cause machine damage if you don't have an Emergency Stop button to prevent a dangerous situation.": "", + "Save Changes": "Uložit změny", + "Events": "", + "Event": "", + "Choose an event": "", + "Startup (System only)": "", + "Open a serial port (System only)": "", + "Close a serial port (System only)": "", + "G-code: Load": "", + "G-code: Unload": "", + "G-code: Start": "", + "G-code: Stop": "", + "G-code: Pause": "", + "G-code: Resume": "", + "Feed Hold": "", + "Run Macro": "Spuštění makra", + "Load Macro": "", + "Trigger": "", + "Choose an trigger": "", + "System": "", + "G-code": "G-code", + "Automatically check for updates": "", + "Language": "Jazyk", + "General": "Obecné", + "Workspace": "Pracovní prostor", + "Controller": "", + "About": "O aplikaci", + "The account name is already being used. Choose another name.": "", + "Passwords do not match.": "Hesla se neshodují.", + "Import": "", + "Are you sure you want to overwrite the workspace settings?": "", + "Restore Defaults": "Obnovit výchozí", + "Are you sure you want to restore the default settings?": "Opravdu chcete obnovit základní nastavení?", + "Import Error": "", + "Invalid file format.": "", + "Close": "Zavřít", + "Export": "", + "Click the Continue button to resume execution.": "", + "Stop": "Stop", + "Continue": "", + "Server has stopped working": "", + "A problem caused the server to stop working correctly. Check out the server status and try again.": "", + "Reload": "", + "Fork Widget": "", + "Are you sure you want to fork this widget?": "", + "Remove Widget": "", + "Are you sure you want to remove this widget?": "", + "On": "Zapnuto", + "Off": "Vypnuto", + "Visualizer Widget": "Widget Vizualizer", + "This widget visualizes a G-code file and simulates the tool path.": "Tento widget zobrazuje G-code a simuluje cestu nástroje.", + "Connection Widget": "Widget Připojení", + "This widget lets you establish a connection to a serial port.": "Tento widget umožňuje spojení přes seriové rozhraní.", + "Console Widget": "Widget Konzole", + "This widget lets you read and write data to the CNC controller connected to a serial port.": "Tento widget umožňuje číst a zapisovat data do CNC controlleru který je připojen pře seriové rozhraní.", + "Grbl Widget": "Widget Grbl", + "This widget shows the Grbl state and provides Grbl specific features.": "Tento widget zabrazuje stav Grbl a poskytuje specifické funkce Grbl.", + "Marlin Widget": "", + "This widget shows the Marlin state and provides Marlin specific features.": "", + "Smoothie Widget": "", + "This widget shows the Smoothie state and provides Smoothie specific features.": "", + "TinyG Widget": "Widget TinyG", + "This widget shows the TinyG state and provides TinyG specific features.": "Tento widget zabrazuje stav TinyG a poskytuje specifické funkce TinyG.", + "Axes Widget": "Widget Os", + "This widget shows the XYZ position. It includes jog controls, homing, and axis zeroing.": "Tento widget zobrazuje pozici XYZ. Obsahuje kontrolu posuvu, homování a nulování os.", + "G-code Widget": "Widget G-code", + "This widget shows the current status of G-code commands.": "Tento widget zobrazuje aktuální stav G-code příkazů.", + "Laser Widget": "", + "This widget allows you control laser intensity and turn the laser on/off.": "", + "Macro Widget": "Widget Makro", + "This widget can use macros to automate routine tasks.": "Tento widget může používat makra k automatizaci rutinních úloh.", + "Probe Widget": "Widget Sondy", + "This widget helps you use a touch plate to set your Z zero offset.": "Tento widget umožňuje použití dotykové desky k nastavení offsetu osy Z.", + "Spindle Widget": "Widget motoru nástroje", + "This widget provides the spindle control.": "Tento widget poskytuje ovládání motoru nástroje.", + "Custom Widget": "", + "This widget gives you a communication interface for creating your own widget.": "", + "Webcam Widget": "Widget Webkamery", + "This widget lets you monitor a webcam.": "Tento widget umožňuje náhled webové kamery.", + "Widgets": "Widgets", + "M0 Program Pause": "", + "M1 Program Pause": "", + "M2 Program End": "", + "M30 Program End": "", + "M6 Tool Change": "", + "M109 Set Extruder Temperature": "", + "M190 Set Heated Bed Temperature": "", + "Drop G-code file here": "Vložte zde soubor s G-code", + "Manage Widgets ({{inactiveCount}})": "Spravovat Widgety ({{inactiveCount}})", + "Collapse All": "", + "Expand All": "", + "Corrupted workspace settings": "", + "The workspace settings have become corrupted or invalid. Click Restore Defaults to restore default settings and continue.": "", + "Download workspace settings": "", + "This field is required.": "Toto pole je vyžadováno.", + "Passwords should be equal.": "", + "Work Coordinate System (G54)": "Work Coordinate System (G54)", + "Work Coordinate System (G55)": "Work Coordinate System (G55)", + "Work Coordinate System (G56)": "Work Coordinate System (G56)", + "Work Coordinate System (G57)": "Work Coordinate System (G57)", + "Work Coordinate System (G58)": "Work Coordinate System (G58)", + "Work Coordinate System (G59)": "Work Coordinate System (G59)", + "Go To Work Zero (G0 X0 Y0 Z0)": "Jed na pracovní nulu všech os (G0 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P1 X0 Y0 Z0)": "Nulovat pracovní offsety (G10 L20 P1 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P2 X0 Y0 Z0)": "Nulovat pracovní offsety (G10 L20 P2 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P3 X0 Y0 Z0)": "Nulovat pracovní offsety (G10 L20 P3 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P4 X0 Y0 Z0)": "Nulovat pracovní offsety (G10 L20 P4 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P5 X0 Y0 Z0)": "Nulovat pracovní offsety (G10 L20 P5 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P6 X0 Y0 Z0)": "Nulovat pracovní offsety (G10 L20 P6 X0 Y0 Z0)", + "Temporary Offsets (G92)": "Dočasný offset (G92)", + "Zero Out Temporary Offsets (G92 X0 Y0 Z0)": "Nulovat dočasné offsety (G92 X0 Y0 Z0)", + "Un-Zero Out Temporary Offsets (G92.1 X0 Y0 Z0)": "Vynulování dočasných offsetů (G92.1 X0 Y0 Z0)", + "Machine Coordinate System (G53)": "Koordinátní system stroje (G53)", + "Go To Machine Zero (G53 G0 X0 Y0 Z0)": "Jed na nulu stroje (G53 G0 X0 Y0 Z0)", + "Set Machine Zero (G28.3 X0 Y0 Z0)": "", + "Homing Sequence (G28.2 X0 Y0 Z0)": "", + "Go To Work Zero On X Axis (G0 X0)": "Jed na pracovní nulu osy X (G0 X0)", + "Zero Out Work X Axis (G10 L20 P1 X0)": "Nulovat pracovní osu X (G10 L20 P1 X0)", + "Zero Out Work X Axis (G10 L20 P2 X0)": "Nulovat pracovní osu X (G10 L20 P2 X0)", + "Zero Out Work X Axis (G10 L20 P3 X0)": "Nulovat pracovní osu X (G10 L20 P3 X0)", + "Zero Out Work X Axis (G10 L20 P4 X0)": "Nulovat pracovní osu X (G10 L20 P4 X0)", + "Zero Out Work X Axis (G10 L20 P5 X0)": "Nulovat pracovní osu X (G10 L20 P5 X0)", + "Zero Out Work X Axis (G10 L20 P6 X0)": "Nulovat pracovní osu X (G10 L20 P6 X0)", + "Zero Out Temporary X Axis (G92 X0)": "Nulovat dočasnou osu X (G92 X0)", + "Un-Zero Out Temporary X Axis (G92.1 X0)": "Vynulování dočasné osy X (G92.1 X0)", + "Go To Machine Zero On X Axis (G53 G0 X0)": "Jed na nulu stroje v ose X (G53 G0 X0)", + "Zero Out Machine X Axis (G28.3 X0)": "", + "Home Machine X Axis (G28.2 X0)": "", + "Go To Work Zero On Y Axis (G0 Y0)": "Jed na pracovní nulu osy Y (G0 Y0)", + "Zero Out Work Y Axis (G10 L20 P1 Y0)": "Nulovat pracovní osu Y (G10 L20 P1 Y0)", + "Zero Out Work Y Axis (G10 L20 P2 Y0)": "Nulovat pracovní osu Y (G10 L20 P2 Y0)", + "Zero Out Work Y Axis (G10 L20 P3 Y0)": "Nulovat pracovní osu Y (G10 L20 P3 Y0)", + "Zero Out Work Y Axis (G10 L20 P4 Y0)": "Nulovat pracovní osu Y (G10 L20 P4 Y0)", + "Zero Out Work Y Axis (G10 L20 P5 Y0)": "Nulovat pracovní osu Y (G10 L20 P5 Y0)", + "Zero Out Work Y Axis (G10 L20 P6 Y0)": "Nulovat pracovní osu Y (G10 L20 P6 Y0)", + "Zero Out Temporary Y Axis (G92 Y0)": "Nulovat dočasnou osu Y (G92 Y0)", + "Un-Zero Out Temporary Y Axis (G92.1 Y0)": "Vynulování dočasné osy Y (G92.1 Y0)", + "Go To Machine Zero On Y Axis (G53 G0 Y0)": "Jed na nulu stroje v ose Y (G53 G0 Y0)", + "Zero Out Machine Y Axis (G28.3 Y0)": "", + "Home Machine Y Axis (G28.2 Y0)": "", + "Go To Work Zero On Z Axis (G0 Z0)": "Jed na pracovní nulu osy Z (G0 Z0)", + "Zero Out Work Z Axis (G10 L20 P1 Z0)": "Nulovat pracovní osu Z (G10 L20 P1 Z0)", + "Zero Out Work Z Axis (G10 L20 P2 Z0)": "Nulovat pracovní osu Z (G10 L20 P2 Z0)", + "Zero Out Work Z Axis (G10 L20 P3 Z0)": "Nulovat pracovní osu Z (G10 L20 P3 Z0)", + "Zero Out Work Z Axis (G10 L20 P4 Z0)": "Nulovat pracovní osu Z (G10 L20 P4 Z0)", + "Zero Out Work Z Axis (G10 L20 P5 Z0)": "Nulovat pracovní osu Z (G10 L20 P5 Z0)", + "Zero Out Work Z Axis (G10 L20 P6 Z0)": "Nulovat pracovní osu Z (G10 L20 P6 Z0)", + "Zero Out Temporary Z Axis (G92 Z0)": "Nulovat dočasnou osu Z Axis (G92 Z0)", + "Un-Zero Out Temporary Z Axis (G92.1 Z0)": "Vynulování dočasné osy Z (G92.1 Z0)", + "Go To Machine Zero On Z Axis (G53 G0 Z0)": "Jed na nulu stroje v ose Z (G53 G0 Z0)", + "Zero Out Machine Z Axis (G28.3 Z0)": "", + "Home Machine Z Axis (G28.2 Z0)": "", + "Go To Work Zero On A Axis (G0 A0)": "Jed na pracovní nulu osy A (G0 A0)", + "Zero Out Work A Axis (G10 L20 P1 A0)": "Nulovat pracovní osu A (G10 L20 P1 A0)", + "Zero Out Work A Axis (G10 L20 P2 A0)": "Nulovat pracovní osu A (G10 L20 P2 A0)", + "Zero Out Work A Axis (G10 L20 P3 A0)": "Nulovat pracovní osu A (G10 L20 P3 A0)", + "Zero Out Work A Axis (G10 L20 P4 A0)": "Nulovat pracovní osu A (G10 L20 P4 A0)", + "Zero Out Work A Axis (G10 L20 P5 A0)": "Nulovat pracovní osu A (G10 L20 P5 A0)", + "Zero Out Work A Axis (G10 L20 P6 A0)": "Nulovat pracovní osu A (G10 L20 P6 A0)", + "Zero Out Temporary A Axis (G92 A0)": "Nulovat dočasnou osu A Axis (G92 A0)", + "Un-Zero Out Temporary A Axis (G92.1 A0)": "Vynulování dočasné osy A (G92.1 A0)", + "Go To Machine Zero On A Axis (G53 G0 A0)": "Jed na nulu stroje v ose A (G53 G0 A0)", + "Zero Out Machine A Axis (G28.3 A0)": "", + "Home Machine A Axis (G28.2 A0)": "", + "Go To Work Zero On B Axis (G0 B0)": "", + "Zero Out Work B Axis (G10 L20 P1 B0)": "", + "Zero Out Work B Axis (G10 L20 P2 B0)": "", + "Zero Out Work B Axis (G10 L20 P3 B0)": "", + "Zero Out Work B Axis (G10 L20 P4 B0)": "", + "Zero Out Work B Axis (G10 L20 P5 B0)": "", + "Zero Out Work B Axis (G10 L20 P6 B0)": "", + "Zero Out Temporary B Axis (G92 B0)": "", + "Un-Zero Out Temporary B Axis (G92.1 B0)": "", + "Go To Machine Zero On B Axis (G53 G0 B0)": "", + "Zero Out Machine B Axis (G28.3 B0)": "", + "Home Machine B Axis (G28.2 B0)": "", + "Go To Work Zero On C Axis (G0 C0)": "", + "Zero Out Work C Axis (G10 L20 P1 C0)": "", + "Zero Out Work C Axis (G10 L20 P2 C0)": "", + "Zero Out Work C Axis (G10 L20 P3 C0)": "", + "Zero Out Work C Axis (G10 L20 P4 C0)": "", + "Zero Out Work C Axis (G10 L20 P5 C0)": "", + "Zero Out Work C Axis (G10 L20 P6 C0)": "", + "Zero Out Temporary C Axis (G92 C0)": "", + "Un-Zero Out Temporary C Axis (G92.1 C0)": "", + "Go To Machine Zero On C Axis (G53 G0 C0)": "", + "Zero Out Machine C Axis (G28.3 C0)": "", + "Home Machine C Axis (G28.2 C0)": "", + "mm": "mm", + "in": "in", + "deg": "", + "Zero Out Machine": "", + "Home Machine": "", + "Zero Out Work Offsets": "", + "Set Work Offsets": "", + "Axis": "Osa", + "Machine Position": "Pozice nástroje", + "Work Position": "Pracovní pozice", + "Axes": "Osy", + "Keypad jogging": "", + "Edit": "Upravit", + "Expand": "", + "Collapse": "", + "More": "Další", + "Enter Full Screen": "", + "Exit Full Screen": "", + "Move X- Y+": "Posuv X- Y+", + "Move Y+": "Posuv Y+", + "Move X+ Y+": "Posuv X+ Y+", + "Move Z+": "Posuv Z+", + "Move X-": "Posuv X-", + "Move To XY Zero (G0 X0 Y0)": "Posuv na nulu os XY (G0 X0 Y0)", + "Move X+": "Posuv X+", + "Move To Z Zero (G0 Z0)": "Posuv na nulu osy Z (G0 Z0)", + "Move X- Y-": "Posuv X- Y-", + "Move Y-": "Posuv Y-", + "Move X+ Y-": "Posuv X+ Y-", + "Move Z-": "Posuv Z-", + "Units": "Jednotky", + "G20 (inch)": "", + "G21 (mm)": "", + "Imperial": "", + "Metric": "", + "Right": "Doprava", + "Left": "Doleva", + "Up": "Nahoru", + "Down": "Dolů", + "Page Up": "", + "Page Down": "", + "Right Square Bracket": "", + "Left Square Bracket": "", + "0.1x Move": "0.1x Posuv", + "Alt": "", + "10x Move": "10x Posuv", + "⇧ Shift": "", + "X-axis": "", + "Y-axis": "", + "Z-axis": "", + "A-axis": "", + "B-axis": "", + "C-axis": "", + "Custom Commands": "", + "Axes Settings": "Nastavení os", + "ShuttleXpress": "", + "Feed Rate Range: {{min}} - {{max}} mm/min": "", + "Repeat Rate: {{hertz}}Hz": "Rychlost obnovení: {{hertz}}Hz", + "60 Times per Second": "60x za vteřinu", + "45 Times per Second": "45x za vteřinu", + "30 Times per Second": "30x za vteřinu", + "15 Times per Second": "15x za vteřinu", + "10 Times per Second": "10x za vteřinu", + "5 Times per Second": "5x za vteřinu", + "2 Times per Second": "2x za vteřinu", + "Once Every Second": "Jednou za vteřinu", + "Distance Overshoot: {{overshoot}}x": "Vzdálenost přesazení: {{overshoot}}x", + "Manufacturer: {{manufacturer}}": "Výrobce: {{manufacturer}}", + "Port": "Port", + "No ports available": "Nejsou dostupné žádné porty", + "Choose a port": "Zvolte port", + "Refresh": "Obnovit", + "Baud rate": "Rychlost", + "Choose a baud rate": "Zvolte rychlost", + "Enable hardware flow control": "", + "Connect automatically": "Automaticky připojit", + "Open": "Otevřít", + "Error opening serial port '{{- port}}'": "", + "Connection": "Připojení", + "No serial connection": "", + "Connected to {{-port}} with a baud rate of {{baudrate}}": "", + "Console": "Seriová konzole", + "Clear all": "Vše zrušit", + "Select All": "", + "Clear Selection": "", + "URL not configured": "", + "The widget is currently disabled": "", + "Enable": "Povolit", + "Disable": "Zakázat", + "URL": "", + "Min": "Min", + "Max": "Max", + "Dimension": "Rozměr", + "Sent": "Odeslat", + "Received": "", + "Start Time": "Čas spuštění", + "Elapsed Time": "", + "Finish Time": "", + "Remaining Time": "", + "Controller State": "", + "Controller Settings": "", + "Hide": "Skrýt", + "Show": "Zobrazit", + "Queue Reports": "", + "Planner Buffer": "", + "Receive Buffer": "", + "Status Reports": "", + "State": "Stav", + "Feed Rate": "Feed Rate", + "Spindle": "Otáčky nástroje", + "Tool Number": "Číslo nástroje", + "Modal Groups": "Modalní skupiny", + "Motion": "Pohyb", + "Coordinate": "Coordinate", + "Plane": "Plane", + "Distance": "Vzdálenost", + "Program": "Program", + "Coolant": "Chlazení", + "Status Report (?)": "", + "Check G-code Mode ($C)": "Ověřit mode G-codu ($C)", + "Homing ($H)": "Homing ($H)", + "Kill Alarm Lock ($X)": "Uvolnit zámek Alarmu ($X)", + "Sleep ($SLP)": "Režim spánku ($SLP)", + "Help ($)": "Nápověda ($)", + "Settings ($$)": "Nastavení ($$)", + "View G-code Parameters ($#)": "Náhled parametrů G-codu ($#)", + "View G-code Parser State ($G)": "Náhled stavu G-code Parseru ($G)", + "View Build Info ($I)": "Zobrazit info sestavení ($I)", + "View Startup Blocks ($N)": "Náhled startovních bloků ($N)", + "Laser": "", + "Laser Intensity Control": "", + "Laser Test": "", + "Power (%)": "", + "Test duration": "", + "ms": "", + "Maximum value": "", + "Laser Off": "", + "New Macro": "", + "Macro Name": "Název makra", + "Macro Commands": "", + "Macro Variables": "", + "Edit Macro": "Úprava makra", + "Delete Macro": "Odstranění makra", + "Are you sure you want to delete this macro?": "", + "No": "Ne", + "Yes": "Ano", + "Macro": "Makro", + "Are you sure you want to load this macro?": "", + "No macros": "", + "Run": "Spustit", + "Get Extruder Temperature (M105)": "", + "Get Current Position (M114)": "", + "Get Firmware Version and Capabilities (M115)": "", + "Heater Control": "", + "Extruder": "", + "°C": "", + "Set the target temperature for the extruder": "", + "Heated Bed": "", + "Set the target temperature for the heated bed": "", + "Extruder Temperature": "", + "Heated Bed Temperature": "", + "Extruder Power": "", + "Heated Bed Power": "", + "Probe": "Sonda", + "mm/min": "mm/min", + "in/min": "in/min", + "Probe Command": "Příkazy sondy", + "G38.2 probe toward workpiece, stop on contact, signal error if failure": "G38.2 sonda najíždí k materiálu, zastaví při kontaktu, zahlásí chybu při selhání", + "G38.3 probe toward workpiece, stop on contact": "G38.3 sonda najíždí k materiálu, zastaví při kontaktu", + "G38.4 probe away from workpiece, stop on loss of contact, signal error if failure": "G38.4 sonda odjíždí od materiálu, zastaví při kontaktu, zahlásí chybu při selhání", + "G38.5 probe away from workpiece, stop on loss of contact": "G38.5 sonda odjíždí od materiálu, zastaví při kontaktu", + "Probe Depth": "Hloubka sondy", + "Probe Feedrate": "Feedrate sondy", + "Touch Plate Thickness": "Tloušťka dotykové desky", + "Retraction Distance": "Vzdálenost vrácení", + "Z-Probe": "", + "Apply tool length offset": "", + "Run Z-Probe": "Spustit sondu osy Z", + "Spindle Speed": "Otáčky nástroje", + "RPM": "", + "Queue Flush (%)": "", + "Kill Job (^d)": "", + "Clear Alarm ($clear)": "", + "Show System Settings": "", + "Show All Settings": "", + "List Self Tests": "", + "Power Management": "", + "Enable Motors": "", + "Disable Motors": "", + "Motor {{n}}": "", + "Velocity": "", + "Line": "", + "Path": "", + "G-code not loaded": "", + "Tool Change": "", + "Are you sure you want to resume program execution?": "", + "Click the Resume button to resume program execution.": "", + "Click the Stop button to stop program execution.": "", + "Run a tool change macro to change the tool and adjust the Z-axis offset. Afterwards, click the Resume button to resume program execution.": "", + "Waiting for the target temperature to be reached...": "", + "Work Coordinate System": "Work Coordinate System", + "Enable 3D View": "", + "Disable 3D View": "", + "3D View": "", + "Projection": "", + "Perspective Projection": "", + "Orthographic Projection": "", + "Display G-code Filename": "", + "Hide Coordinate System": "", + "Show Coordinate System": "", + "Hide Grid Line Numbers": "", + "Show Grid Line Numbers": "", + "File folder": "Složka souborů", + "{{extname}} File": "Soubor {{extname}}", + "File": "Soubor", + "3D rendering": "3D vykreslení", + "Zoom In": "", + "Zoom Out": "", + "Move the camera": "", + "Rotate the camera": "", + "Watch Directory": "", + "Date modified": "Datum změny", + "Type": "Typ", + "Size": "Velikost", + "Load G-code": "", + "Upload G-code": "Nahrát G-code", + "Browse...": "", + "Resume": "", + "Pause": "Pause", + "Webcam": "Webkamera", + "Webcam Settings": "Nastavení Webkamery", + "Media Source": "", + "Use a built-in camera or a connected webcam": "", + "Use a M-JPEG stream over HTTP": "", + "Webcam is off": "Webkamera je vypnuta", + "Rotate Left": "", + "Rotate Right": "", + "Flip Horizontally": "", + "Flip Vertically": "", + "Crosshair": "", + "Manual Data Input": "", + "MDI": "", + "Button Width": "", + "Order": "", + "Move Up": "", + "Move Down": "", + "Remove": "", + "Waiting for the planner to empty...": "", + "No video devices available": "", + "Choose a video device": "", + "Automatic detection": "", + "Front View": "", + "Move Backward": "", + "Move Forward": "", + "Top View": "", + "Zoom to Fit": "", + "Right Side View": "", + "Left Side View": "", + "Custom range...": "", + "Today": "", + "Last {{n}} days": "", + "Apply": "", + "Add": "", + "Custom Jog Distance (mm)": "", + "Custom Jog Distance (inches)": "", + "Machine Profiles": "", + "No machine profile selected": "", + "Delete machine profile": "", + "Machine Profile": "", + "Limits": "", + "User Accounts": "Uživatelské účty", + "New Account": "Nový účet", + "Hide Limits": "", + "Show Limits": "", + "WebGL: <1>Enabled": "WebGL: <1>Povoleno", + "WebGL: <1>Disabled": "WebGL: <1>Zakázáno", + "Hide Cutting Tool": "", + "Show Cutting Tool": "", + "Ready to start": "" } diff --git a/src/web/i18n/de/controller.json b/src/app/i18n/de/controller.json similarity index 100% rename from src/web/i18n/de/controller.json rename to src/app/i18n/de/controller.json diff --git a/src/web/i18n/de/gcode.json b/src/app/i18n/de/gcode.json similarity index 100% rename from src/web/i18n/de/gcode.json rename to src/app/i18n/de/gcode.json diff --git a/src/app/i18n/de/resource.json b/src/app/i18n/de/resource.json old mode 100755 new mode 100644 index d5b9abbd4..0e21c7f2d --- a/src/app/i18n/de/resource.json +++ b/src/app/i18n/de/resource.json @@ -1,4 +1,533 @@ { - "loading": "Wird geladen...", - "title": "CNCjs" + "Records: {{from}} - {{to}} / {{total}}": "Datensätze: {{from}} - {{to}} / {{total}}", + "Records: {{total}}": "Datensätze: {{total}}", + "{{pageLength}} per page": "{{pageLength}} pro Seite", + "New update available": "Neues Update verfügbar", + "Command succeeded": "Kommando erfolgreich ausgeführt", + "Command failed ({{err}})": "Kommando fehlgeschlagen ({{err}})", + "My Account": "Mein Konto", + "Signed in as {{name}}": "Eingeloggt als {{name}}", + "Account": "Konto", + "Sign Out": "Abmelden", + "Options": "Optionen", + "Command": "Kommando", + "Show notifications": "Zeige Benachrichtigungen", + "Help": "Hilfe", + "Report an issue": "Problem melden", + "Cycle Start": "Zyklus Start", + "Feedhold": "Anhalten", + "Homing": "Referenzfahrt", + "Sleep": "Ruhezustand", + "Unlock": "Freigabe", + "Reset": "Reset", + "Authentication failed.": "Authentifizierung fehlgeschlagen", + "Error": "Fehler", + "Sign in to {{name}}": "Einloggen in {{name}}", + "Username": "Benutzername", + "Password": "Kennwort", + "Sign In": "Anmelden", + "Forgot your password?": "Passwort vergessen?", + "A web-based interface for CNC milling controller running Grbl, Smoothieware, or TinyG": "Eine web-basierte Oberfläche für CNC-Fräsen-Steuerungen die mit Grbl, Smoothieware or TinyG laufen", + "Learn more": "Weitere Informationen", + "Downloads": "Downloads", + "Checking for updates...": "Es wird nach Updates gesucht...", + "A new version of {{name}} is available": "Eine neue Version von {{name}} ist verfügbar", + "Version {{version}}": "Version {{version}}", + "Latest version": "Neueste Version", + "You already have the newest version of {{name}}": "Sie haben bereits die neueste Version von {{name}}", + "New": "Neu", + "Account status": "Kontostatus", + "Name": "Name", + "Confirm Password": "Passwort bestätigen", + "Cancel": "Abbrechen", + "OK": "OK", + "An unexpected error has occurred.": "Ein unerwarteter Fehler ist aufgetreten.", + "Loading...": "Wird geladen...", + "No data to display": "Keine Daten zum Anzeigen", + "Enabled": "Aktiviert", + "Disabled": "Deaktiviert", + "Date Modified": "Zuletzt geändert", + "Action": "Aktion", + "Edit Account": "Konto verändern", + "Delete Account": "Konto löschen", + "Settings": "Einstellungen", + "Are you sure you want to delete the account?": "Sind Sie sicher, dass Sie das Konto löschen wollen?", + "Update": "Update", + "Old Password": "Altes Passwort", + "Change Password": "Ändere Passwort", + "New Password": "Neues Passwort", + "Commands": "Kommandos", + "Title": "Titel", + "and more...": "und mehr...", + "Delete": "Löschen", + "Are you sure you want to delete this item?": "Sind Sie sicher, dass Sie dieses Objekt löschen wollen?", + "Exception": "Fehler", + "Continue execution when an error is detected in the G-code program": "Mit dem Ausführen fortfahren, wenn ein Fehler im G-Code Programm erkannt wurde", + "Enabling this option may cause machine damage if you don't have an Emergency Stop button to prevent a dangerous situation.": "Falls Sie keinen Not-Aus-Knopf haben um eine gefährliche Situation zu verhindern, kann das Aktivieren dieser Option möglicherweise die Maschine beschädigen.", + "Save Changes": "Änderungen speichern", + "Events": "Ereignisse", + "Event": "Ereignis", + "Choose an event": "Wähle ein Ereignis", + "Startup (System only)": "Hochfahren (Nur System)", + "Open a serial port (System only)": "Öffne seriellen Port", + "Close a serial port (System only)": "Schließe seriellen Port", + "G-code: Load": "G-Code: Laden", + "G-code: Unload": "", + "G-code: Start": "G-Code: Start", + "G-code: Stop": "G-Code: Stop", + "G-code: Pause": "G-Code: Pause", + "G-code: Resume": "G-Code: Resume", + "Feed Hold": "", + "Run Macro": "Ausführen eines Makros", + "Load Macro": "Laden eines Makros", + "Trigger": "Auslöser", + "Choose an trigger": "Wähle Auslöser", + "System": "System", + "G-code": "G-Code", + "Automatically check for updates": "Automatisch nach Updates suchen", + "Language": "Sprache", + "General": "Allgemein", + "Workspace": "Arbeitsbereich", + "Controller": "Steuerung", + "About": "Info", + "The account name is already being used. Choose another name.": "Der Konten-Name wird bereits verwendet. Bitte wählen Sie einen anderen.", + "Passwords do not match.": "Passwörter stimmen nicht überein.", + "Import": "Importieren", + "Are you sure you want to overwrite the workspace settings?": "Sind Sie sicher, dass Sie die Arbeitsbereichseinstellungen überschreiben wollen?", + "Restore Defaults": "Standardeinstellungen wiederherstellen", + "Are you sure you want to restore the default settings?": "Sind Sie sicher, dass Sie die Standardeinstellungen wieder herstellen möchten?", + "Import Error": "Fehler beim Importieren", + "Invalid file format.": "Ungültiges Dateiformat.", + "Close": "Schließen", + "Export": "Exportieren", + "Click the Continue button to resume execution.": "Zum Fortfahren der Programmausführung den Fortfahren-Button anklicken.", + "Stop": "Stopp", + "Continue": "Fortfahren", + "Server has stopped working": "Der Server hat aufgehört zu funktionieren", + "A problem caused the server to stop working correctly. Check out the server status and try again.": "Ein Problem ist aufgetreten, welches dafür gesorgt hat, dass der Server aufgehört hat korrekt zu arbeiten. Bitte überprifen Sie den Status des Servers und versuchen Sie es erneut.", + "Reload": "Neu laden", + "Fork Widget": "", + "Are you sure you want to fork this widget?": "", + "Remove Widget": "Widget entfernen", + "Are you sure you want to remove this widget?": "Sind Sie sicher, dass Sie dieses Widget entfernen wollen?", + "On": "Ein", + "Off": "Aus", + "Visualizer Widget": "Visualisierungs-Widget", + "This widget visualizes a G-code file and simulates the tool path.": "Dieses Widget visualisiert eine G-Code-Datei und simuliert den Fahrweg des Werkzeugs.", + "Connection Widget": "Verbindungs-Widget", + "This widget lets you establish a connection to a serial port.": "Dieses Widget dient zur Herstellung der seriellen Verbindung.", + "Console Widget": "Konsolen-Widget", + "This widget lets you read and write data to the CNC controller connected to a serial port.": "Mit diesem Widget können Daten über die serielle Schnittstelle mit der CNC-Steuerung ausgetauscht werden.", + "Grbl Widget": "Grbl-Widget", + "This widget shows the Grbl state and provides Grbl specific features.": "Dieses Widget zeigt den Zustand von Grbl und liefert Grbl-spezifische Eigenschaften.", + "Marlin Widget": "", + "This widget shows the Marlin state and provides Marlin specific features.": "Dieses Widget zeit den Zustand von Marilin und liefert Marlin-spezifische Eigenschaften.", + "Smoothie Widget": "", + "This widget shows the Smoothie state and provides Smoothie specific features.": "", + "TinyG Widget": "TinyG-Widget", + "This widget shows the TinyG state and provides TinyG specific features.": "Dieses Widget zeigt den Zustand von TinyG und liefert TinyG-spezifische Eigenschaften.", + "Axes Widget": "Achsen-Widget", + "This widget shows the XYZ position. It includes jog controls, homing, and axis zeroing.": "Dieses Widget zeigt die XYZ-Position. Es beinhaltet eine Verfahrsteuerung, Nullpunktfahrt und Achsen-Nullung.", + "G-code Widget": "G-Code-Widget", + "This widget shows the current status of G-code commands.": "Dieses Widget zeigt den aktuellen Status der G-Code-Kommandos.", + "Laser Widget": "", + "This widget allows you control laser intensity and turn the laser on/off.": "Dieses Widget erlaubt es, die Intensität des Lasers einzustellen und ihn ein und aus zu schalten.", + "Macro Widget": "Makro-Widget", + "This widget can use macros to automate routine tasks.": "Dieses Widget können Makros verwenden, um Routineaufgaben zu automatisieren.", + "Probe Widget": "Antaster-Widget", + "This widget helps you use a touch plate to set your Z zero offset.": "Dieses Widget hilft bei der Verwendung einer Antastplatte zur Festlegung des Z-Nullpunktes.", + "Spindle Widget": "Spindel-Widget", + "This widget provides the spindle control.": "Dieses Widget ermöglicht die Steuerung der Spindel.", + "Custom Widget": "Benutzerspezifisches Widget", + "This widget gives you a communication interface for creating your own widget.": "", + "Webcam Widget": "Webcam-Widget", + "This widget lets you monitor a webcam.": "Dieses Widget ermöglicht die Überwachung mit einer Webcam.", + "Widgets": "Widgets", + "M0 Program Pause": "M0 Programm Pause", + "M1 Program Pause": "M1 Programm Pause", + "M2 Program End": "M2 Programm Ende", + "M30 Program End": "M30 Programm Ende", + "M6 Tool Change": "M6 Werkzeugwechsel", + "M109 Set Extruder Temperature": "M109 Extruder-Temperatur setzen", + "M190 Set Heated Bed Temperature": "M190 Heizplatten-Temperatur setzen", + "Drop G-code file here": "G-Code-Datei hier ablegen", + "Manage Widgets ({{inactiveCount}})": "Widgets verwalten ({{inactiveCount}})", + "Collapse All": "Alle einklappen", + "Expand All": "Alle ausklappen", + "Corrupted workspace settings": "Workspace-Einstellungen beschädigt", + "The workspace settings have become corrupted or invalid. Click Restore Defaults to restore default settings and continue.": "Die Arbeitsbereichs-Einstellungen sind beschädigt oder ungültig geworden. Klicken Sie auf Standard Wiederherstellen um die Standardeinstellungen Wiederherzustellen und fort zu fahren.", + "Download workspace settings": "Arbeitsbereichs-Einstellungen herunterladen", + "This field is required.": "Dieses Feld ist erforderlich.", + "Passwords should be equal.": "Die Passwörter sollten gleich sein.", + "Work Coordinate System (G54)": "Werkstück-Koordinatensystem (G54)", + "Work Coordinate System (G55)": "Werkstück-Koordinatensystem (G55)", + "Work Coordinate System (G56)": "Werkstück-Koordinatensystem (G56)", + "Work Coordinate System (G57)": "Werkstück-Koordinatensystem (G57)", + "Work Coordinate System (G58)": "Werkstück-Koordinatensystem (G58)", + "Work Coordinate System (G59)": "Werkstück-Koordinatensystem (G59)", + "Go To Work Zero (G0 X0 Y0 Z0)": "Zum Werkstück-Nullpunkt (G0 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P1 X0 Y0 Z0)": "Werkstück-Nullpunkte setzen (G10 L20 P1 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P2 X0 Y0 Z0)": "Werkstück-Nullpunkte setzen (G10 L20 P2 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P3 X0 Y0 Z0)": "Werkstück-Nullpunkte setzen (G10 L20 P3 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P4 X0 Y0 Z0)": "Werkstück-Nullpunkte setzen (G10 L20 P4 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P5 X0 Y0 Z0)": "Werkstück-Nullpunkte setzen (G10 L20 P5 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P6 X0 Y0 Z0)": "Werkstück-Nullpunkte setzen (G10 L20 P6 X0 Y0 Z0)", + "Temporary Offsets (G92)": "Temporäre Offsets (G92)", + "Zero Out Temporary Offsets (G92 X0 Y0 Z0)": "Temporäre Nullpunkte setzen (G92 X0 Y0 Z0)", + "Un-Zero Out Temporary Offsets (G92.1 X0 Y0 Z0)": "Temporäre Nullpunkte entfernen (G92.1 X0 Y0 Z0)", + "Machine Coordinate System (G53)": "Maschinen-Koordinatensystem (G53)", + "Go To Machine Zero (G53 G0 X0 Y0 Z0)": "Zum Maschinen-Nullpunkt (G53 G0 X0 Y0 Z0)", + "Set Machine Zero (G28.3 X0 Y0 Z0)": "Setze Maschinen-Nullpunkt (G28.3 X0 Y0 Z0)", + "Homing Sequence (G28.2 X0 Y0 Z0)": "Referenzfahrt Sequenz (G28.2 X0 Y0 Z0)", + "Go To Work Zero On X Axis (G0 X0)": "Zum Werkstück-Nullpunkt der X-Achse (G0 X0)", + "Zero Out Work X Axis (G10 L20 P1 X0)": "Werkstück X-Nullpunkt setzen (G10 L20 P1 X0)", + "Zero Out Work X Axis (G10 L20 P2 X0)": "Werkstück X-Nullpunkt setzen (G10 L20 P2 X0)", + "Zero Out Work X Axis (G10 L20 P3 X0)": "Werkstück X-Nullpunkt setzen (G10 L20 P3 X0)", + "Zero Out Work X Axis (G10 L20 P4 X0)": "Werkstück X-Nullpunkt setzen (G10 L20 P4 X0)", + "Zero Out Work X Axis (G10 L20 P5 X0)": "Werkstück X-Nullpunkt setzen (G10 L20 P5 X0)", + "Zero Out Work X Axis (G10 L20 P6 X0)": "Werkstück X-Nullpunkt setzen (G10 L20 P6 X0)", + "Zero Out Temporary X Axis (G92 X0)": "Temporären X-Nullpunkt setzen (G92 X0)", + "Un-Zero Out Temporary X Axis (G92.1 X0)": "Temporären X-Nullpunkt entfernen (G92.1 X0)", + "Go To Machine Zero On X Axis (G53 G0 X0)": "Zum Maschinen-Nullpunkt der X-Achse (G53 G0 X0)", + "Zero Out Machine X Axis (G28.3 X0)": "Setze Maschinen-Nullpunkt der X-Achse", + "Home Machine X Axis (G28.2 X0)": "Referenzfahrt der X-Achse (G28.2 X0)", + "Go To Work Zero On Y Axis (G0 Y0)": "Zum Werkstück-Nullpunkt der Y-Achse (G0 Y0)", + "Zero Out Work Y Axis (G10 L20 P1 Y0)": "Werkstück Y-Nullpunkt setzen (G10 L20 P1 Y0)", + "Zero Out Work Y Axis (G10 L20 P2 Y0)": "Werkstück Y-Nullpunkt setzen (G10 L20 P2 Y0)", + "Zero Out Work Y Axis (G10 L20 P3 Y0)": "Werkstück Y-Nullpunkt setzen (G10 L20 P3 Y0)", + "Zero Out Work Y Axis (G10 L20 P4 Y0)": "Werkstück Y-Nullpunkt setzen (G10 L20 P4 Y0)", + "Zero Out Work Y Axis (G10 L20 P5 Y0)": "Werkstück Y-Nullpunkt setzen (G10 L20 P5 Y0)", + "Zero Out Work Y Axis (G10 L20 P6 Y0)": "Werkstück Y-Nullpunkt setzen (G10 L20 P6 Y0)", + "Zero Out Temporary Y Axis (G92 Y0)": "Temporären Y-Nullpunkt setzen (G92 Y0)", + "Un-Zero Out Temporary Y Axis (G92.1 Y0)": "Temporären Y-Nullpunkt entfernen (G92.1 Y0)", + "Go To Machine Zero On Y Axis (G53 G0 Y0)": "Zum Maschinen-Nullpunkt der Y-Achse (G53 G0 Y0)", + "Zero Out Machine Y Axis (G28.3 Y0)": "Setze Maschinen-Nullpunkt der Y-Achse", + "Home Machine Y Axis (G28.2 Y0)": "Referenzfahrt der Y-Achse (G28.2 Y0)", + "Go To Work Zero On Z Axis (G0 Z0)": "Zum Werkstück-Nullpunkt der Z-Achse (G0 Z0)", + "Zero Out Work Z Axis (G10 L20 P1 Z0)": "Werkstück Z-Nullpunkt setzen (G10 L20 P1 Z0)", + "Zero Out Work Z Axis (G10 L20 P2 Z0)": "Werkstück Z-Nullpunkt setzen (G10 L20 P2 Z0)", + "Zero Out Work Z Axis (G10 L20 P3 Z0)": "Werkstück Z-Nullpunkt setzen (G10 L20 P3 Z0)", + "Zero Out Work Z Axis (G10 L20 P4 Z0)": "Werkstück Z-Nullpunkt setzen (G10 L20 P4 Z0)", + "Zero Out Work Z Axis (G10 L20 P5 Z0)": "Werkstück Z-Nullpunkt setzen (G10 L20 P5 Z0)", + "Zero Out Work Z Axis (G10 L20 P6 Z0)": "Werkstück Z-Nullpunkt setzen (G10 L20 P6 Z0)", + "Zero Out Temporary Z Axis (G92 Z0)": "Temporären Z-Nullpunkt setzen (G92 Z0)", + "Un-Zero Out Temporary Z Axis (G92.1 Z0)": "Temporären Z-Nullpunkt entfernen (G92.1 Z0)", + "Go To Machine Zero On Z Axis (G53 G0 Z0)": "Zum Maschinen-Nullpunkt der Z-Achse (G53 G0 Z0)", + "Zero Out Machine Z Axis (G28.3 Z0)": "Setze Maschinen-Nulllpunkt der Z-Achse (G28.3 Z0)", + "Home Machine Z Axis (G28.2 Z0)": "Referenzfahrt der Z-Achse (G28.2 Z0)", + "Go To Work Zero On A Axis (G0 A0)": "Zum Werkstück-Nullpunkt der A-Achse (G0 A0)", + "Zero Out Work A Axis (G10 L20 P1 A0)": "Werkstück A-Nullpunkt setzen (G10 L20 P1 A0)", + "Zero Out Work A Axis (G10 L20 P2 A0)": "Werkstück A-Nullpunkt setzen (G10 L20 P2 A0)", + "Zero Out Work A Axis (G10 L20 P3 A0)": "Werkstück A-Nullpunkt setzen (G10 L20 P3 A0)", + "Zero Out Work A Axis (G10 L20 P4 A0)": "Werkstück A-Nullpunkt setzen (G10 L20 P4 A0)", + "Zero Out Work A Axis (G10 L20 P5 A0)": "Werkstück A-Nullpunkt setzen (G10 L20 P5 A0)", + "Zero Out Work A Axis (G10 L20 P6 A0)": "Werkstück A-Nullpunkt setzen (G10 L20 P6 A0)", + "Zero Out Temporary A Axis (G92 A0)": "Temporären A-Nullpunkt setzen (G92 A0)", + "Un-Zero Out Temporary A Axis (G92.1 A0)": "Temporären A-Nullpunkt entfernen (G92.1 A0)", + "Go To Machine Zero On A Axis (G53 G0 A0)": "Zum Maschinen-Nullpunkt der A-Achse (G53 G0 A0)", + "Zero Out Machine A Axis (G28.3 A0)": "Setze Maschinen-Nullpunkt der A-Achse (G28.3 A0)", + "Home Machine A Axis (G28.2 A0)": "Referenzfahrt der A-Achse (G28.2 A0)", + "Go To Work Zero On B Axis (G0 B0)": "", + "Zero Out Work B Axis (G10 L20 P1 B0)": "", + "Zero Out Work B Axis (G10 L20 P2 B0)": "", + "Zero Out Work B Axis (G10 L20 P3 B0)": "", + "Zero Out Work B Axis (G10 L20 P4 B0)": "", + "Zero Out Work B Axis (G10 L20 P5 B0)": "", + "Zero Out Work B Axis (G10 L20 P6 B0)": "", + "Zero Out Temporary B Axis (G92 B0)": "", + "Un-Zero Out Temporary B Axis (G92.1 B0)": "", + "Go To Machine Zero On B Axis (G53 G0 B0)": "", + "Zero Out Machine B Axis (G28.3 B0)": "", + "Home Machine B Axis (G28.2 B0)": "", + "Go To Work Zero On C Axis (G0 C0)": "", + "Zero Out Work C Axis (G10 L20 P1 C0)": "", + "Zero Out Work C Axis (G10 L20 P2 C0)": "", + "Zero Out Work C Axis (G10 L20 P3 C0)": "", + "Zero Out Work C Axis (G10 L20 P4 C0)": "", + "Zero Out Work C Axis (G10 L20 P5 C0)": "", + "Zero Out Work C Axis (G10 L20 P6 C0)": "", + "Zero Out Temporary C Axis (G92 C0)": "", + "Un-Zero Out Temporary C Axis (G92.1 C0)": "", + "Go To Machine Zero On C Axis (G53 G0 C0)": "", + "Zero Out Machine C Axis (G28.3 C0)": "", + "Home Machine C Axis (G28.2 C0)": "", + "mm": "mm", + "in": "Zoll", + "deg": "Grad", + "Zero Out Machine": "", + "Home Machine": "", + "Zero Out Work Offsets": "", + "Set Work Offsets": "", + "Axis": "Achse", + "Machine Position": "Maschinen-Position", + "Work Position": "Werkstück-Position", + "Axes": "Achsen", + "Keypad jogging": "Verfahren mittels Tastatur", + "Edit": "Bearbeiten", + "Expand": "Ausklappen", + "Collapse": "Einklappen", + "More": "Mehr", + "Enter Full Screen": "Gehe in den Vollbild-Modus", + "Exit Full Screen": "Verlasse Vollbild-Modus", + "Move X- Y+": "Verfahre X- Y+", + "Move Y+": "Verfahre Y+", + "Move X+ Y+": "Verfahre X+ Y+", + "Move Z+": "Verfahre Z+", + "Move X-": "Verfahre X-", + "Move To XY Zero (G0 X0 Y0)": "Zum XY-Nullpunkt (G0 X0 Y0)", + "Move X+": "Verfahre X+", + "Move To Z Zero (G0 Z0)": "Zum Z-Nullpunkt (G0 Z0)", + "Move X- Y-": "Verfahre X- Y-", + "Move Y-": "Verfahre Y-", + "Move X+ Y-": "Verfahre X- Y-", + "Move Z-": "Verfahre Z-", + "Units": "Einheit", + "G20 (inch)": "", + "G21 (mm)": "", + "Imperial": "", + "Metric": "", + "Right": "Nach rechts", + "Left": "Nach links", + "Up": "Nach oben", + "Down": "Nach unten", + "Page Up": "Bild nach oben", + "Page Down": "Bild nach unten", + "Right Square Bracket": "", + "Left Square Bracket": "", + "0.1x Move": "0.1x Verschieben", + "Alt": "", + "10x Move": "10x Verschieben", + "⇧ Shift": "", + "X-axis": "X-Achse", + "Y-axis": "Y-Achse", + "Z-axis": "Z-Achse", + "A-axis": "A-Achse", + "B-axis": "", + "C-axis": "", + "Custom Commands": "Benutzer spezifische Kommandos", + "Axes Settings": "Achsen-Einstellungen", + "ShuttleXpress": "", + "Feed Rate Range: {{min}} - {{max}} mm/min": "Vorschubbereich: {{min}} - {{max}} mm/min", + "Repeat Rate: {{hertz}}Hz": "Wiederholrate: {{hertz}}Hz", + "60 Times per Second": "60x pro Sekunde", + "45 Times per Second": "45x pro Sekunde", + "30 Times per Second": "30x pro Sekunde", + "15 Times per Second": "15x pro Sekunde", + "10 Times per Second": "10x pro Sekunde", + "5 Times per Second": "5x pro Sekunde", + "2 Times per Second": "2x pro Sekunde", + "Once Every Second": "1x pro Sekunde", + "Distance Overshoot: {{overshoot}}x": "Abstandsüberschreitung: {{overshoot}}x", + "Manufacturer: {{manufacturer}}": "Hersteller: {{manufacturer}}", + "Port": "Schnittstelle", + "No ports available": "Keine Schnittstelle verfügbar", + "Choose a port": "Schnittstelle wählen", + "Refresh": "Aktualisieren", + "Baud rate": "Baudrate", + "Choose a baud rate": "Baudrate wählen", + "Enable hardware flow control": "", + "Connect automatically": "Automatisch verbinden", + "Open": "Öffnen", + "Error opening serial port '{{- port}}'": "Fehler beim Öffnen des seriellen Ports '{{- port}}'", + "Connection": "Verbindung", + "No serial connection": "Keine serielle Verbindung", + "Connected to {{-port}} with a baud rate of {{baudrate}}": "Verbunden mit dem seriellen Port {{-port}} mit einer Baud-Rate von {{baudrate}}", + "Console": "Konsole", + "Clear all": "Alles löschen", + "Select All": "", + "Clear Selection": "", + "URL not configured": "URL nicht konfiguriert", + "The widget is currently disabled": "Das Widget ist gerade deaktiviert", + "Enable": "Aktivieren", + "Disable": "Deaktivieren", + "URL": "URL", + "Min": "Min", + "Max": "Max", + "Dimension": "Maß", + "Sent": "Gesendet", + "Received": "Empfangen", + "Start Time": "Startzeit", + "Elapsed Time": "Vergangene Zeit", + "Finish Time": "End-Zeit", + "Remaining Time": "Verbleibende Zeit", + "Controller State": "Steuerungs Status", + "Controller Settings": "Steuerungs Einstellungen", + "Hide": "Ausblenden", + "Show": "Anzeigen", + "Queue Reports": "Warteschlangen-Berichte", + "Planner Buffer": "Planungspuffer", + "Receive Buffer": "Empfangspuffer", + "Status Reports": "Status-Berichte", + "State": "Zustand", + "Feed Rate": "Vorschub", + "Spindle": "Spindel", + "Tool Number": "Werkzeug-Nummer", + "Modal Groups": "Modale Gruppen", + "Motion": "Bewegung", + "Coordinate": "Koordinate", + "Plane": "Ebene", + "Distance": "Abstand", + "Program": "Programm", + "Coolant": "Kühlmittel", + "Status Report (?)": "Status Bericht (?)", + "Check G-code Mode ($C)": "Prüfe G-Code Modus ($C)", + "Homing ($H)": "Referenzfahrt ($H)", + "Kill Alarm Lock ($X)": "Alarm-Stop löschen ($X)", + "Sleep ($SLP)": "Ruhezustand ($SLP)", + "Help ($)": "Hilfe ($)", + "Settings ($$)": "Einstellungen ($$)", + "View G-code Parameters ($#)": "G-Code Parameter anzeigen ($#)", + "View G-code Parser State ($G)": "Zustand G-Code-Parser anzeigen ($G)", + "View Build Info ($I)": "Build-Information anzeigen ($I)", + "View Startup Blocks ($N)": "Startup-Blöcke anzeigen ($N)", + "Laser": "Laser", + "Laser Intensity Control": "Laser Intensitäts Steuerung", + "Laser Test": "Laser Test", + "Power (%)": "Power (%)", + "Test duration": "Testdauer", + "ms": "ms", + "Maximum value": "Maximalwert", + "Laser Off": "Laser Aus", + "New Macro": "Neues Makro", + "Macro Name": "Makro-Name", + "Macro Commands": "Makro-Kommandos", + "Macro Variables": "Makro-Variablen", + "Edit Macro": "Makro Bearbeiten", + "Delete Macro": "Makro Löschen", + "Are you sure you want to delete this macro?": "Sind Sie sicher, dass Sie dieses Makro löschen wollen?", + "No": "Nein", + "Yes": "Ja", + "Macro": "Makro", + "Are you sure you want to load this macro?": "Sind Sie sicher, dass Sie dieses Marko laden wollen?", + "No macros": "Keine Makros", + "Run": "Ausführen", + "Get Extruder Temperature (M105)": "Extruder-Temperatur auslesen (M105)", + "Get Current Position (M114)": "Aktuelle Position auslesen (M114)", + "Get Firmware Version and Capabilities (M115)": "Firmware-Version und Fähigkeiten auslesen (M115)", + "Heater Control": "Heizungs-Steuerung", + "Extruder": "Extruder", + "°C": "°C", + "Set the target temperature for the extruder": "Extruder-Solltemperatur setzen", + "Heated Bed": "Heizplatte", + "Set the target temperature for the heated bed": "Heizplatten-Solltemperatur setzen", + "Extruder Temperature": "Extruder-Temperatur", + "Heated Bed Temperature": "Heizplatten-Temperatur", + "Extruder Power": "", + "Heated Bed Power": "", + "Probe": "Antaster", + "mm/min": "mm/min", + "in/min": "zoll/min", + "Probe Command": "Antaster Kommando", + "G38.2 probe toward workpiece, stop on contact, signal error if failure": "G38.2 Antaster in Richtung Werkstück, bei Kontakt anhalten, Fehler melden bei Versagen", + "G38.3 probe toward workpiece, stop on contact": "G38.3 Antaster in Richtung Werkstück, bei Kontakt anhalten", + "G38.4 probe away from workpiece, stop on loss of contact, signal error if failure": "G38.4 Antaster von Werkstück weg, bei Abheben anhalten, Fehler melden bei Versagen", + "G38.5 probe away from workpiece, stop on loss of contact": "G38.5 Antaster von Werkstück weg, bei Abheben anhalten", + "Probe Depth": "Antaster Länge", + "Probe Feedrate": "Antaster Vorschub", + "Touch Plate Thickness": "Stärke der Antastplatte", + "Retraction Distance": "Rückzugsweg", + "Z-Probe": "Werkzeuglängensensor", + "Apply tool length offset": "Werkzeuglängen-Offset anwenden", + "Run Z-Probe": "Starte Z-Antastung", + "Spindle Speed": "Spindeldrehzahl", + "RPM": "UPM", + "Queue Flush (%)": "", + "Kill Job (^d)": "Job (^d) abbrechen", + "Clear Alarm ($clear)": "Alarm ($clear) quittieren", + "Show System Settings": "Systemeinstellungen anzeigen", + "Show All Settings": "Alle Einstellungen anzeigen", + "List Self Tests": "Selbsttests auflisten", + "Power Management": "", + "Enable Motors": "Motoren aktivieren", + "Disable Motors": "Motoren deaktivieren", + "Motor {{n}}": "", + "Velocity": "Geschwindigkeit", + "Line": "Linie", + "Path": "Pfad", + "G-code not loaded": "G-Code nicht geladen", + "Tool Change": "Werkzeug wechseln", + "Are you sure you want to resume program execution?": "Sind Sie sicher, dass mit der Auführung des Programms fortgefahren werden soll?", + "Click the Resume button to resume program execution.": "Klicken Sie den Fortfahren-Knopf um mit dem Programm fort zu fahren.", + "Click the Stop button to stop program execution.": "Klicken Sie den Stop-Knopf um die Ausführung des Programms anzuhalten.", + "Run a tool change macro to change the tool and adjust the Z-axis offset. Afterwards, click the Resume button to resume program execution.": "Starten Sie ein Werkzeug-Wechsel-Marko um das Werkzeug zu wechseln und den Z-Achsten-Offset einzustellen. Danach klicken Sie auf den Fortfahren-Knopf um mit der Programmausführung fort zu fahren.", + "Waiting for the target temperature to be reached...": "Warte bis die Solltemperatur erreicht wurde...", + "Work Coordinate System": "Werkstück-Koordinatensystem", + "Enable 3D View": "3D-Ansicht aktivieren", + "Disable 3D View": "3D-Ansicht deaktivieren", + "3D View": "3D-Ansicht", + "Projection": "Darstellung", + "Perspective Projection": "Perspektivische Darstellung", + "Orthographic Projection": "Orthografische Darstellung", + "Display G-code Filename": "G-Code Dateinamen anzeigen", + "Hide Coordinate System": "Koordinatensystem ausblenden", + "Show Coordinate System": "Koordinatensystem einblenden", + "Hide Grid Line Numbers": "Koordinatensystem-Beschriftung einblenden", + "Show Grid Line Numbers": "Koordinatensystem-Beschriftung ausblenden", + "File folder": "Dateiordner", + "{{extname}} File": "{{extname}}-Datei", + "File": "Datei", + "3D rendering": "3D-Rendering", + "Zoom In": "Hineinzoomen", + "Zoom Out": "Herauszoomen", + "Move the camera": "Ansicht bewegen", + "Rotate the camera": "Ansicht drehen", + "Watch Directory": "Ordner beobachten", + "Date modified": "Änderungsdatum", + "Type": "Typ", + "Size": "Größe", + "Load G-code": "G-Code laden", + "Upload G-code": "G-Code hochladen", + "Browse...": "Auswählen...", + "Resume": "Fortfahren", + "Pause": "Pause", + "Webcam": "Webcam", + "Webcam Settings": "Webcam-Einstellungen", + "Media Source": "Medien-Quelle", + "Use a built-in camera or a connected webcam": "Benutze die eingebaut oder verbundene Webcam", + "Use a M-JPEG stream over HTTP": "Benutze einen M-JPEG Stream über HTTP", + "Webcam is off": "Webcam ist aus", + "Rotate Left": "Linksherum drehen", + "Rotate Right": "Rechtsherum drehen", + "Flip Horizontally": "Horizontal umdrehen", + "Flip Vertically": "Vertikal umdrehen", + "Crosshair": "Fadenkreuz", + "Manual Data Input": "", + "MDI": "", + "Button Width": "", + "Order": "", + "Move Up": "", + "Move Down": "", + "Remove": "Entfernen", + "Waiting for the planner to empty...": "", + "No video devices available": "", + "Choose a video device": "", + "Automatic detection": "", + "Front View": "", + "Move Backward": "", + "Move Forward": "", + "Top View": "", + "Zoom to Fit": "", + "Right Side View": "", + "Left Side View": "", + "Custom range...": "Benutzerdefinierter Bereich...", + "Today": "Heute", + "Last {{n}} days": "Letzte {{n}} Tage", + "Apply": "Übernehmen", + "Add": "Hinzufügen", + "Custom Jog Distance (mm)": "", + "Custom Jog Distance (inches)": "", + "Machine Profiles": "", + "No machine profile selected": "", + "Delete machine profile": "", + "Machine Profile": "", + "Limits": "", + "User Accounts": "Benutzerkonten", + "New Account": "Neues Konto", + "Hide Limits": "", + "Show Limits": "", + "WebGL: <1>Enabled": "WebGL: <1>Aktiviert", + "WebGL: <1>Disabled": "WebGL: <1>Deaktiviert", + "Hide Cutting Tool": "", + "Show Cutting Tool": "", + "Ready to start": "" } diff --git a/src/web/i18n/en/controller.json b/src/app/i18n/en/controller.json similarity index 100% rename from src/web/i18n/en/controller.json rename to src/app/i18n/en/controller.json diff --git a/src/web/i18n/en/gcode.json b/src/app/i18n/en/gcode.json similarity index 100% rename from src/web/i18n/en/gcode.json rename to src/app/i18n/en/gcode.json diff --git a/src/app/i18n/en/resource.json b/src/app/i18n/en/resource.json old mode 100755 new mode 100644 index 216760577..2ebf11930 --- a/src/app/i18n/en/resource.json +++ b/src/app/i18n/en/resource.json @@ -1,4 +1,533 @@ { - "loading": "Loading...", - "title": "CNCjs" + "Records: {{from}} - {{to}} / {{total}}": "Records: {{from}} - {{to}} / {{total}}", + "Records: {{total}}": "Records: {{total}}", + "{{pageLength}} per page": "{{pageLength}} per page", + "New update available": "New update available", + "Command succeeded": "Command succeeded", + "Command failed ({{err}})": "Command failed ({{err}})", + "My Account": "My Account", + "Signed in as {{name}}": "Signed in as {{name}}", + "Account": "Account", + "Sign Out": "Sign Out", + "Options": "Options", + "Command": "Command", + "Show notifications": "Show notifications", + "Help": "Help", + "Report an issue": "Report an issue", + "Cycle Start": "Cycle Start", + "Feedhold": "Feedhold", + "Homing": "Homing", + "Sleep": "Sleep", + "Unlock": "Unlock", + "Reset": "Reset", + "Authentication failed.": "Authentication failed.", + "Error": "Error", + "Sign in to {{name}}": "Sign in to {{name}}", + "Username": "Username", + "Password": "Password", + "Sign In": "Sign In", + "Forgot your password?": "Forgot your password?", + "A web-based interface for CNC milling controller running Grbl, Smoothieware, or TinyG": "A web-based interface for CNC milling controller running Grbl, Smoothieware, or TinyG", + "Learn more": "Learn more", + "Downloads": "Downloads", + "Checking for updates...": "Checking for updates...", + "A new version of {{name}} is available": "A new version of {{name}} is available", + "Version {{version}}": "Version {{version}}", + "Latest version": "Latest version", + "You already have the newest version of {{name}}": "You already have the newest version of {{name}}", + "New": "New", + "Account status": "Account status", + "Name": "Name", + "Confirm Password": "Confirm Password", + "Cancel": "Cancel", + "OK": "OK", + "An unexpected error has occurred.": "An unexpected error has occurred.", + "Loading...": "Loading...", + "No data to display": "No data to display", + "Enabled": "Enabled", + "Disabled": "Disabled", + "Date Modified": "Date Modified", + "Action": "Action", + "Edit Account": "Edit Account", + "Delete Account": "Delete Account", + "Settings": "Settings", + "Are you sure you want to delete the account?": "Are you sure you want to delete the account?", + "Update": "Update", + "Old Password": "Old Password", + "Change Password": "Change Password", + "New Password": "New Password", + "Commands": "Commands", + "Title": "Title", + "and more...": "and more...", + "Delete": "Delete", + "Are you sure you want to delete this item?": "Are you sure you want to delete this item?", + "Exception": "Exception", + "Continue execution when an error is detected in the G-code program": "Continue execution when an error is detected in the G-code program", + "Enabling this option may cause machine damage if you don't have an Emergency Stop button to prevent a dangerous situation.": "Enabling this option may cause machine damage if you don't have an Emergency Stop button to prevent a dangerous situation.", + "Save Changes": "Save Changes", + "Events": "Events", + "Event": "Event", + "Choose an event": "Choose an event", + "Startup (System only)": "Startup (System only)", + "Open a serial port (System only)": "Open a serial port (System only)", + "Close a serial port (System only)": "Close a serial port (System only)", + "G-code: Load": "G-code: Load", + "G-code: Unload": "G-code: Unload", + "G-code: Start": "G-code: Start", + "G-code: Stop": "G-code: Stop", + "G-code: Pause": "G-code: Pause", + "G-code: Resume": "G-code: Resume", + "Feed Hold": "Feed Hold", + "Run Macro": "Run Macro", + "Load Macro": "Load Macro", + "Trigger": "Trigger", + "Choose an trigger": "Choose an trigger", + "System": "System", + "G-code": "G-code", + "Automatically check for updates": "Automatically check for updates", + "Language": "Language", + "General": "General", + "Workspace": "Workspace", + "Controller": "Controller", + "About": "About", + "The account name is already being used. Choose another name.": "The account name is already being used. Choose another name.", + "Passwords do not match.": "Passwords do not match.", + "Import": "Import", + "Are you sure you want to overwrite the workspace settings?": "Are you sure you want to overwrite the workspace settings?", + "Restore Defaults": "Restore Defaults", + "Are you sure you want to restore the default settings?": "Are you sure you want to restore the default settings?", + "Import Error": "Import Error", + "Invalid file format.": "Invalid file format.", + "Close": "Close", + "Export": "Export", + "Click the Continue button to resume execution.": "Click the Continue button to resume execution.", + "Stop": "Stop", + "Continue": "Continue", + "Server has stopped working": "Server has stopped working", + "A problem caused the server to stop working correctly. Check out the server status and try again.": "A problem caused the server to stop working correctly. Check out the server status and try again.", + "Reload": "Reload", + "Fork Widget": "Fork Widget", + "Are you sure you want to fork this widget?": "Are you sure you want to fork this widget?", + "Remove Widget": "Remove Widget", + "Are you sure you want to remove this widget?": "Are you sure you want to remove this widget?", + "On": "On", + "Off": "Off", + "Visualizer Widget": "Visualizer Widget", + "This widget visualizes a G-code file and simulates the tool path.": "This widget visualizes a G-code file and simulates the tool path.", + "Connection Widget": "Connection Widget", + "This widget lets you establish a connection to a serial port.": "This widget lets you establish a connection to a serial port.", + "Console Widget": "Console Widget", + "This widget lets you read and write data to the CNC controller connected to a serial port.": "This widget lets you read and write data to the CNC controller connected to a serial port.", + "Grbl Widget": "Grbl Widget", + "This widget shows the Grbl state and provides Grbl specific features.": "This widget shows the Grbl state and provides Grbl specific features.", + "Marlin Widget": "Marlin Widget", + "This widget shows the Marlin state and provides Marlin specific features.": "This widget shows the Marlin state and provides Marlin specific features.", + "Smoothie Widget": "Smoothie Widget", + "This widget shows the Smoothie state and provides Smoothie specific features.": "This widget shows the Smoothie state and provides Smoothie specific features.", + "TinyG Widget": "TinyG Widget", + "This widget shows the TinyG state and provides TinyG specific features.": "This widget shows the TinyG state and provides TinyG specific features.", + "Axes Widget": "Axes Widget", + "This widget shows the XYZ position. It includes jog controls, homing, and axis zeroing.": "This widget shows the XYZ position. It includes jog controls, homing, and axis zeroing.", + "G-code Widget": "G-code Widget", + "This widget shows the current status of G-code commands.": "This widget shows the current status of G-code commands.", + "Laser Widget": "Laser Widget", + "This widget allows you control laser intensity and turn the laser on/off.": "This widget allows you control laser intensity and turn the laser on/off.", + "Macro Widget": "Macro Widget", + "This widget can use macros to automate routine tasks.": "This widget can use macros to automate routine tasks.", + "Probe Widget": "Probe Widget", + "This widget helps you use a touch plate to set your Z zero offset.": "This widget helps you use a touch plate to set your Z zero offset.", + "Spindle Widget": "Spindle Widget", + "This widget provides the spindle control.": "This widget provides the spindle control.", + "Custom Widget": "Custom Widget", + "This widget gives you a communication interface for creating your own widget.": "This widget gives you a communication interface for creating your own widget.", + "Webcam Widget": "Webcam Widget", + "This widget lets you monitor a webcam.": "This widget lets you monitor a webcam.", + "Widgets": "Widgets", + "M0 Program Pause": "M0 Program Pause", + "M1 Program Pause": "M1 Program Pause", + "M2 Program End": "M2 Program End", + "M30 Program End": "M30 Program End", + "M6 Tool Change": "M6 Tool Change", + "M109 Set Extruder Temperature": "M109 Set Extruder Temperature", + "M190 Set Heated Bed Temperature": "M190 Set Heated Bed Temperature", + "Drop G-code file here": "Drop G-code file here", + "Manage Widgets ({{inactiveCount}})": "Manage Widgets ({{inactiveCount}})", + "Collapse All": "Collapse All", + "Expand All": "Expand All", + "Corrupted workspace settings": "Corrupted workspace settings", + "The workspace settings have become corrupted or invalid. Click Restore Defaults to restore default settings and continue.": "The workspace settings have become corrupted or invalid. Click Restore Defaults to restore default settings and continue.", + "Download workspace settings": "Download workspace settings", + "This field is required.": "This field is required.", + "Passwords should be equal.": "Passwords should be equal.", + "Work Coordinate System (G54)": "Work Coordinate System (G54)", + "Work Coordinate System (G55)": "Work Coordinate System (G55)", + "Work Coordinate System (G56)": "Work Coordinate System (G56)", + "Work Coordinate System (G57)": "Work Coordinate System (G57)", + "Work Coordinate System (G58)": "Work Coordinate System (G58)", + "Work Coordinate System (G59)": "Work Coordinate System (G59)", + "Go To Work Zero (G0 X0 Y0 Z0)": "Go To Work Zero (G0 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P1 X0 Y0 Z0)": "Zero Out Work Offsets (G10 L20 P1 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P2 X0 Y0 Z0)": "Zero Out Work Offsets (G10 L20 P2 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P3 X0 Y0 Z0)": "Zero Out Work Offsets (G10 L20 P3 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P4 X0 Y0 Z0)": "Zero Out Work Offsets (G10 L20 P4 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P5 X0 Y0 Z0)": "Zero Out Work Offsets (G10 L20 P5 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P6 X0 Y0 Z0)": "Zero Out Work Offsets (G10 L20 P6 X0 Y0 Z0)", + "Temporary Offsets (G92)": "Temporary Offsets (G92)", + "Zero Out Temporary Offsets (G92 X0 Y0 Z0)": "Zero Out Temporary Offsets (G92 X0 Y0 Z0)", + "Un-Zero Out Temporary Offsets (G92.1 X0 Y0 Z0)": "Un-Zero Out Temporary Offsets (G92.1 X0 Y0 Z0)", + "Machine Coordinate System (G53)": "Machine Coordinate System (G53)", + "Go To Machine Zero (G53 G0 X0 Y0 Z0)": "Go To Machine Zero (G53 G0 X0 Y0 Z0)", + "Set Machine Zero (G28.3 X0 Y0 Z0)": "Set Machine Zero (G28.3 X0 Y0 Z0)", + "Homing Sequence (G28.2 X0 Y0 Z0)": "Homing Sequence (G28.2 X0 Y0 Z0)", + "Go To Work Zero On X Axis (G0 X0)": "Go To Work Zero On X Axis (G0 X0)", + "Zero Out Work X Axis (G10 L20 P1 X0)": "Zero Out Work X Axis (G10 L20 P1 X0)", + "Zero Out Work X Axis (G10 L20 P2 X0)": "Zero Out Work X Axis (G10 L20 P2 X0)", + "Zero Out Work X Axis (G10 L20 P3 X0)": "Zero Out Work X Axis (G10 L20 P3 X0)", + "Zero Out Work X Axis (G10 L20 P4 X0)": "Zero Out Work X Axis (G10 L20 P4 X0)", + "Zero Out Work X Axis (G10 L20 P5 X0)": "Zero Out Work X Axis (G10 L20 P5 X0)", + "Zero Out Work X Axis (G10 L20 P6 X0)": "Zero Out Work X Axis (G10 L20 P6 X0)", + "Zero Out Temporary X Axis (G92 X0)": "Zero Out Temporary X Axis (G92 X0)", + "Un-Zero Out Temporary X Axis (G92.1 X0)": "Un-Zero Out Temporary X Axis (G92.1 X0)", + "Go To Machine Zero On X Axis (G53 G0 X0)": "Go To Machine Zero On X Axis (G53 G0 X0)", + "Zero Out Machine X Axis (G28.3 X0)": "Zero Out Machine X Axis (G28.3 X0)", + "Home Machine X Axis (G28.2 X0)": "Home Machine X Axis (G28.2 X0)", + "Go To Work Zero On Y Axis (G0 Y0)": "Go To Work Zero On Y Axis (G0 Y0)", + "Zero Out Work Y Axis (G10 L20 P1 Y0)": "Zero Out Work Y Axis (G10 L20 P1 Y0)", + "Zero Out Work Y Axis (G10 L20 P2 Y0)": "Zero Out Work Y Axis (G10 L20 P2 Y0)", + "Zero Out Work Y Axis (G10 L20 P3 Y0)": "Zero Out Work Y Axis (G10 L20 P3 Y0)", + "Zero Out Work Y Axis (G10 L20 P4 Y0)": "Zero Out Work Y Axis (G10 L20 P4 Y0)", + "Zero Out Work Y Axis (G10 L20 P5 Y0)": "Zero Out Work Y Axis (G10 L20 P5 Y0)", + "Zero Out Work Y Axis (G10 L20 P6 Y0)": "Zero Out Work Y Axis (G10 L20 P6 Y0)", + "Zero Out Temporary Y Axis (G92 Y0)": "Zero Out Temporary Y Axis (G92 Y0)", + "Un-Zero Out Temporary Y Axis (G92.1 Y0)": "Un-Zero Out Temporary Y Axis (G92.1 Y0)", + "Go To Machine Zero On Y Axis (G53 G0 Y0)": "Go To Machine Zero On Y Axis (G53 G0 Y0)", + "Zero Out Machine Y Axis (G28.3 Y0)": "Zero Out Machine Y Axis (G28.3 Y0)", + "Home Machine Y Axis (G28.2 Y0)": "Home Machine Y Axis (G28.2 Y0)", + "Go To Work Zero On Z Axis (G0 Z0)": "Go To Work Zero On Z Axis (G0 Z0)", + "Zero Out Work Z Axis (G10 L20 P1 Z0)": "Zero Out Work Z Axis (G10 L20 P1 Z0)", + "Zero Out Work Z Axis (G10 L20 P2 Z0)": "Zero Out Work Z Axis (G10 L20 P2 Z0)", + "Zero Out Work Z Axis (G10 L20 P3 Z0)": "Zero Out Work Z Axis (G10 L20 P3 Z0)", + "Zero Out Work Z Axis (G10 L20 P4 Z0)": "Zero Out Work Z Axis (G10 L20 P4 Z0)", + "Zero Out Work Z Axis (G10 L20 P5 Z0)": "Zero Out Work Z Axis (G10 L20 P5 Z0)", + "Zero Out Work Z Axis (G10 L20 P6 Z0)": "Zero Out Work Z Axis (G10 L20 P6 Z0)", + "Zero Out Temporary Z Axis (G92 Z0)": "Zero Out Temporary Z Axis (G92 Z0)", + "Un-Zero Out Temporary Z Axis (G92.1 Z0)": "Un-Zero Out Temporary Z Axis (G92.1 Z0)", + "Go To Machine Zero On Z Axis (G53 G0 Z0)": "Go To Machine Zero On Z Axis (G53 G0 Z0)", + "Zero Out Machine Z Axis (G28.3 Z0)": "Zero Out Machine Z Axis (G28.3 Z0)", + "Home Machine Z Axis (G28.2 Z0)": "Home Machine Z Axis (G28.2 Z0)", + "Go To Work Zero On A Axis (G0 A0)": "Go To Work Zero On A Axis (G0 A0)", + "Zero Out Work A Axis (G10 L20 P1 A0)": "Zero Out Work A Axis (G10 L20 P1 A0)", + "Zero Out Work A Axis (G10 L20 P2 A0)": "Zero Out Work A Axis (G10 L20 P2 A0)", + "Zero Out Work A Axis (G10 L20 P3 A0)": "Zero Out Work A Axis (G10 L20 P3 A0)", + "Zero Out Work A Axis (G10 L20 P4 A0)": "Zero Out Work A Axis (G10 L20 P4 A0)", + "Zero Out Work A Axis (G10 L20 P5 A0)": "Zero Out Work A Axis (G10 L20 P5 A0)", + "Zero Out Work A Axis (G10 L20 P6 A0)": "Zero Out Work A Axis (G10 L20 P6 A0)", + "Zero Out Temporary A Axis (G92 A0)": "Zero Out Temporary A Axis (G92 A0)", + "Un-Zero Out Temporary A Axis (G92.1 A0)": "Un-Zero Out Temporary A Axis (G92.1 A0)", + "Go To Machine Zero On A Axis (G53 G0 A0)": "Go To Machine Zero On A Axis (G53 G0 A0)", + "Zero Out Machine A Axis (G28.3 A0)": "Zero Out Machine A Axis (G28.3 A0)", + "Home Machine A Axis (G28.2 A0)": "Home Machine A Axis (G28.2 A0)", + "Go To Work Zero On B Axis (G0 B0)": "Go To Work Zero On B Axis (G0 B0)", + "Zero Out Work B Axis (G10 L20 P1 B0)": "Zero Out Work B Axis (G10 L20 P1 B0)", + "Zero Out Work B Axis (G10 L20 P2 B0)": "Zero Out Work B Axis (G10 L20 P2 B0)", + "Zero Out Work B Axis (G10 L20 P3 B0)": "Zero Out Work B Axis (G10 L20 P3 B0)", + "Zero Out Work B Axis (G10 L20 P4 B0)": "Zero Out Work B Axis (G10 L20 P4 B0)", + "Zero Out Work B Axis (G10 L20 P5 B0)": "Zero Out Work B Axis (G10 L20 P5 B0)", + "Zero Out Work B Axis (G10 L20 P6 B0)": "Zero Out Work B Axis (G10 L20 P6 B0)", + "Zero Out Temporary B Axis (G92 B0)": "Zero Out Temporary B Axis (G92 B0)", + "Un-Zero Out Temporary B Axis (G92.1 B0)": "Un-Zero Out Temporary B Axis (G92.1 B0)", + "Go To Machine Zero On B Axis (G53 G0 B0)": "Go To Machine Zero On B Axis (G53 G0 B0)", + "Zero Out Machine B Axis (G28.3 B0)": "Zero Out Machine B Axis (G28.3 B0)", + "Home Machine B Axis (G28.2 B0)": "Home Machine B Axis (G28.2 B0)", + "Go To Work Zero On C Axis (G0 C0)": "Go To Work Zero On C Axis (G0 C0)", + "Zero Out Work C Axis (G10 L20 P1 C0)": "Zero Out Work C Axis (G10 L20 P1 C0)", + "Zero Out Work C Axis (G10 L20 P2 C0)": "Zero Out Work C Axis (G10 L20 P2 C0)", + "Zero Out Work C Axis (G10 L20 P3 C0)": "Zero Out Work C Axis (G10 L20 P3 C0)", + "Zero Out Work C Axis (G10 L20 P4 C0)": "Zero Out Work C Axis (G10 L20 P4 C0)", + "Zero Out Work C Axis (G10 L20 P5 C0)": "Zero Out Work C Axis (G10 L20 P5 C0)", + "Zero Out Work C Axis (G10 L20 P6 C0)": "Zero Out Work C Axis (G10 L20 P6 C0)", + "Zero Out Temporary C Axis (G92 C0)": "Zero Out Temporary C Axis (G92 C0)", + "Un-Zero Out Temporary C Axis (G92.1 C0)": "Un-Zero Out Temporary C Axis (G92.1 C0)", + "Go To Machine Zero On C Axis (G53 G0 C0)": "Go To Machine Zero On C Axis (G53 G0 C0)", + "Zero Out Machine C Axis (G28.3 C0)": "Zero Out Machine C Axis (G28.3 C0)", + "Home Machine C Axis (G28.2 C0)": "Home Machine C Axis (G28.2 C0)", + "mm": "mm", + "in": "in", + "deg": "deg", + "Zero Out Machine": "Zero Out Machine", + "Home Machine": "Home Machine", + "Zero Out Work Offsets": "Zero Out Work Offsets", + "Set Work Offsets": "Set Work Offsets", + "Axis": "Axis", + "Machine Position": "Machine Position", + "Work Position": "Work Position", + "Axes": "Axes", + "Keypad jogging": "Keypad jogging", + "Edit": "Edit", + "Expand": "Expand", + "Collapse": "Collapse", + "More": "More", + "Enter Full Screen": "Enter Full Screen", + "Exit Full Screen": "Exit Full Screen", + "Move X- Y+": "Move X- Y+", + "Move Y+": "Move Y+", + "Move X+ Y+": "Move X+ Y+", + "Move Z+": "Move Z+", + "Move X-": "Move X-", + "Move To XY Zero (G0 X0 Y0)": "Move To XY Zero (G0 X0 Y0)", + "Move X+": "Move X+", + "Move To Z Zero (G0 Z0)": "Move To Z Zero (G0 Z0)", + "Move X- Y-": "Move X- Y-", + "Move Y-": "Move Y-", + "Move X+ Y-": "Move X+ Y-", + "Move Z-": "Move Z-", + "Units": "Units", + "G20 (inch)": "G20 (inch)", + "G21 (mm)": "G21 (mm)", + "Imperial": "Imperial", + "Metric": "Metric", + "Right": "Right", + "Left": "Left", + "Up": "Up", + "Down": "Down", + "Page Up": "Page Up", + "Page Down": "Page Down", + "Right Square Bracket": "Right Square Bracket", + "Left Square Bracket": "Left Square Bracket", + "0.1x Move": "0.1x Move", + "Alt": "Alt", + "10x Move": "10x Move", + "⇧ Shift": "⇧ Shift", + "X-axis": "X-axis", + "Y-axis": "Y-axis", + "Z-axis": "Z-axis", + "A-axis": "A-axis", + "B-axis": "B-axis", + "C-axis": "C-axis", + "Custom Commands": "Custom Commands", + "Axes Settings": "Axes Settings", + "ShuttleXpress": "ShuttleXpress", + "Feed Rate Range: {{min}} - {{max}} mm/min": "Feed Rate Range: {{min}} - {{max}} mm/min", + "Repeat Rate: {{hertz}}Hz": "Repeat Rate: {{hertz}}Hz", + "60 Times per Second": "60 Times per Second", + "45 Times per Second": "45 Times per Second", + "30 Times per Second": "30 Times per Second", + "15 Times per Second": "15 Times per Second", + "10 Times per Second": "10 Times per Second", + "5 Times per Second": "5 Times per Second", + "2 Times per Second": "2 Times per Second", + "Once Every Second": "Once Every Second", + "Distance Overshoot: {{overshoot}}x": "Distance Overshoot: {{overshoot}}x", + "Manufacturer: {{manufacturer}}": "Manufacturer: {{manufacturer}}", + "Port": "Port", + "No ports available": "No ports available", + "Choose a port": "Choose a port", + "Refresh": "Refresh", + "Baud rate": "Baud rate", + "Choose a baud rate": "Choose a baud rate", + "Enable hardware flow control": "Enable hardware flow control", + "Connect automatically": "Connect automatically", + "Open": "Open", + "Error opening serial port '{{- port}}'": "Error opening serial port '{{- port}}'", + "Connection": "Connection", + "No serial connection": "No serial connection", + "Connected to {{-port}} with a baud rate of {{baudrate}}": "Connected to {{-port}} with a baud rate of {{baudrate}}", + "Console": "Console", + "Clear all": "Clear all", + "Select All": "Select All", + "Clear Selection": "Clear Selection", + "URL not configured": "URL not configured", + "The widget is currently disabled": "The widget is currently disabled", + "Enable": "Enable", + "Disable": "Disable", + "URL": "URL", + "Min": "Min", + "Max": "Max", + "Dimension": "Dimension", + "Sent": "Sent", + "Received": "Received", + "Start Time": "Start Time", + "Elapsed Time": "Elapsed Time", + "Finish Time": "Finish Time", + "Remaining Time": "Remaining Time", + "Controller State": "Controller State", + "Controller Settings": "Controller Settings", + "Hide": "Hide", + "Show": "Show", + "Queue Reports": "Queue Reports", + "Planner Buffer": "Planner Buffer", + "Receive Buffer": "Receive Buffer", + "Status Reports": "Status Reports", + "State": "State", + "Feed Rate": "Feed Rate", + "Spindle": "Spindle", + "Tool Number": "Tool Number", + "Modal Groups": "Modal Groups", + "Motion": "Motion", + "Coordinate": "Coordinate", + "Plane": "Plane", + "Distance": "Distance", + "Program": "Program", + "Coolant": "Coolant", + "Status Report (?)": "Status Report (?)", + "Check G-code Mode ($C)": "Check G-code Mode ($C)", + "Homing ($H)": "Homing ($H)", + "Kill Alarm Lock ($X)": "Kill Alarm Lock ($X)", + "Sleep ($SLP)": "Sleep ($SLP)", + "Help ($)": "Help ($)", + "Settings ($$)": "Settings ($$)", + "View G-code Parameters ($#)": "View G-code Parameters ($#)", + "View G-code Parser State ($G)": "View G-code Parser State ($G)", + "View Build Info ($I)": "View Build Info ($I)", + "View Startup Blocks ($N)": "View Startup Blocks ($N)", + "Laser": "Laser", + "Laser Intensity Control": "Laser Intensity Control", + "Laser Test": "Laser Test", + "Power (%)": "Power (%)", + "Test duration": "Test duration", + "ms": "ms", + "Maximum value": "Maximum value", + "Laser Off": "Laser Off", + "New Macro": "New Macro", + "Macro Name": "Macro Name", + "Macro Commands": "Macro Commands", + "Macro Variables": "Macro Variables", + "Edit Macro": "Edit Macro", + "Delete Macro": "Delete Macro", + "Are you sure you want to delete this macro?": "Are you sure you want to delete this macro?", + "No": "No", + "Yes": "Yes", + "Macro": "Macro", + "Are you sure you want to load this macro?": "Are you sure you want to load this macro?", + "No macros": "No macros", + "Run": "Run", + "Get Extruder Temperature (M105)": "Get Extruder Temperature (M105)", + "Get Current Position (M114)": "Get Current Position (M114)", + "Get Firmware Version and Capabilities (M115)": "Get Firmware Version and Capabilities (M115)", + "Heater Control": "Heater Control", + "Extruder": "Extruder", + "°C": "°C", + "Set the target temperature for the extruder": "Set the target temperature for the extruder", + "Heated Bed": "Heated Bed", + "Set the target temperature for the heated bed": "Set the target temperature for the heated bed", + "Extruder Temperature": "Extruder Temperature", + "Heated Bed Temperature": "Heated Bed Temperature", + "Extruder Power": "Extruder Power", + "Heated Bed Power": "Heated Bed Power", + "Probe": "Probe", + "mm/min": "mm/min", + "in/min": "in/min", + "Probe Command": "Probe Command", + "G38.2 probe toward workpiece, stop on contact, signal error if failure": "G38.2 probe toward workpiece, stop on contact, signal error if failure", + "G38.3 probe toward workpiece, stop on contact": "G38.3 probe toward workpiece, stop on contact", + "G38.4 probe away from workpiece, stop on loss of contact, signal error if failure": "G38.4 probe away from workpiece, stop on loss of contact, signal error if failure", + "G38.5 probe away from workpiece, stop on loss of contact": "G38.5 probe away from workpiece, stop on loss of contact", + "Probe Depth": "Probe Depth", + "Probe Feedrate": "Probe Feedrate", + "Touch Plate Thickness": "Touch Plate Thickness", + "Retraction Distance": "Retraction Distance", + "Z-Probe": "Z-Probe", + "Apply tool length offset": "Apply tool length offset", + "Run Z-Probe": "Run Z-Probe", + "Spindle Speed": "Spindle Speed", + "RPM": "RPM", + "Queue Flush (%)": "Queue Flush (%)", + "Kill Job (^d)": "Kill Job (^d)", + "Clear Alarm ($clear)": "Clear Alarm ($clear)", + "Show System Settings": "Show System Settings", + "Show All Settings": "Show All Settings", + "List Self Tests": "List Self Tests", + "Power Management": "Power Management", + "Enable Motors": "Enable Motors", + "Disable Motors": "Disable Motors", + "Motor {{n}}": "Motor {{n}}", + "Velocity": "Velocity", + "Line": "Line", + "Path": "Path", + "G-code not loaded": "G-code not loaded", + "Tool Change": "Tool Change", + "Are you sure you want to resume program execution?": "Are you sure you want to resume program execution?", + "Click the Resume button to resume program execution.": "Click the Resume button to resume program execution.", + "Click the Stop button to stop program execution.": "Click the Stop button to stop program execution.", + "Run a tool change macro to change the tool and adjust the Z-axis offset. Afterwards, click the Resume button to resume program execution.": "Run a tool change macro to change the tool and adjust the Z-axis offset. Afterwards, click the Resume button to resume program execution.", + "Waiting for the target temperature to be reached...": "Waiting for the target temperature to be reached...", + "Work Coordinate System": "Work Coordinate System", + "Enable 3D View": "Enable 3D View", + "Disable 3D View": "Disable 3D View", + "3D View": "3D View", + "Projection": "Projection", + "Perspective Projection": "Perspective Projection", + "Orthographic Projection": "Orthographic Projection", + "Display G-code Filename": "Display G-code Filename", + "Hide Coordinate System": "Hide Coordinate System", + "Show Coordinate System": "Show Coordinate System", + "Hide Grid Line Numbers": "Hide Grid Line Numbers", + "Show Grid Line Numbers": "Show Grid Line Numbers", + "File folder": "File folder", + "{{extname}} File": "{{extname}} File", + "File": "File", + "3D rendering": "3D rendering", + "Zoom In": "Zoom In", + "Zoom Out": "Zoom Out", + "Move the camera": "Move the camera", + "Rotate the camera": "Rotate the camera", + "Watch Directory": "Watch Directory", + "Date modified": "Date modified", + "Type": "Type", + "Size": "Size", + "Load G-code": "Load G-code", + "Upload G-code": "Upload G-code", + "Browse...": "Browse...", + "Resume": "Resume", + "Pause": "Pause", + "Webcam": "Webcam", + "Webcam Settings": "Webcam Settings", + "Media Source": "Media Source", + "Use a built-in camera or a connected webcam": "Use a built-in camera or a connected webcam", + "Use a M-JPEG stream over HTTP": "Use a M-JPEG stream over HTTP", + "Webcam is off": "Webcam is off", + "Rotate Left": "Rotate Left", + "Rotate Right": "Rotate Right", + "Flip Horizontally": "Flip Horizontally", + "Flip Vertically": "Flip Vertically", + "Crosshair": "Crosshair", + "Manual Data Input": "Manual Data Input", + "MDI": "MDI", + "Button Width": "Button Width", + "Order": "Order", + "Move Up": "Move Up", + "Move Down": "Move Down", + "Remove": "Remove", + "Waiting for the planner to empty...": "Waiting for the planner to empty...", + "No video devices available": "No video devices available", + "Choose a video device": "Choose a video device", + "Automatic detection": "Automatic detection", + "Front View": "Front View", + "Move Backward": "Move Backward", + "Move Forward": "Move Forward", + "Top View": "Top View", + "Zoom to Fit": "Zoom to Fit", + "Right Side View": "Right Side View", + "Left Side View": "Left Side View", + "Custom range...": "Custom range...", + "Today": "Today", + "Last {{n}} days": "Last {{n}} days", + "Apply": "Apply", + "Add": "Add", + "Custom Jog Distance (mm)": "Custom Jog Distance (mm)", + "Custom Jog Distance (inches)": "Custom Jog Distance (inches)", + "Machine Profiles": "Machine Profiles", + "No machine profile selected": "No machine profile selected", + "Delete machine profile": "Delete machine profile", + "Machine Profile": "Machine Profile", + "Limits": "Limits", + "User Accounts": "User Accounts", + "New Account": "New Account", + "Hide Limits": "Hide Limits", + "Show Limits": "Show Limits", + "WebGL: <1>Enabled": "WebGL: <1>Enabled", + "WebGL: <1>Disabled": "WebGL: <1>Disabled", + "Hide Cutting Tool": "Hide Cutting Tool", + "Show Cutting Tool": "Show Cutting Tool", + "Ready to start": "Ready to start" } diff --git a/src/web/i18n/es/controller.json b/src/app/i18n/es/controller.json similarity index 100% rename from src/web/i18n/es/controller.json rename to src/app/i18n/es/controller.json diff --git a/src/web/i18n/es/gcode.json b/src/app/i18n/es/gcode.json similarity index 100% rename from src/web/i18n/es/gcode.json rename to src/app/i18n/es/gcode.json diff --git a/src/app/i18n/es/resource.json b/src/app/i18n/es/resource.json old mode 100755 new mode 100644 index b4c91f38b..9f7b41d62 --- a/src/app/i18n/es/resource.json +++ b/src/app/i18n/es/resource.json @@ -1,4 +1,533 @@ { - "loading": "Cargando...", - "title": "CNCjs" + "Records: {{from}} - {{to}} / {{total}}": "Registros: {{from}} - {{to}} / {{total}}", + "Records: {{total}}": "Registros: {{total}}", + "{{pageLength}} per page": "{{pageLength}} por página", + "New update available": "Nueva actualización disponible", + "Command succeeded": "Comando exitoso", + "Command failed ({{err}})": "Comando fallido ({{err}})", + "My Account": "Mi cuenta", + "Signed in as {{name}}": "Conectado como {{name}}", + "Account": "Cuenta", + "Sign Out": "Cerrar sesión", + "Options": "Opciones", + "Command": "Comando", + "Show notifications": "Mostrar notificaciones", + "Help": "Ayuda", + "Report an issue": "Señalar un problema", + "Cycle Start": "Inicio de ciclo", + "Feedhold": "Alimentar", + "Homing": "Homing", + "Sleep": "Suspensión", + "Unlock": "Desbloquear", + "Reset": "Resetear", + "Authentication failed.": "Fallo de autenticación", + "Error": "Error", + "Sign in to {{name}}": "Conectarse a {{name}}", + "Username": "Nombre de usuario", + "Password": "Contraseña", + "Sign In": "Iniciar sesión", + "Forgot your password?": "Olvido contraseña?", + "A web-based interface for CNC milling controller running Grbl, Smoothieware, or TinyG": "Una interfaz web para control de fresado CNC que ejecuta Grbl, Smoothieware o TinyG", + "Learn more": "Más información", + "Downloads": "Descargas", + "Checking for updates...": "Buscando actualizaciones...", + "A new version of {{name}} is available": "Hay una nueva versión de {{name}}", + "Version {{version}}": "Versión {{version}}", + "Latest version": "Versión más reciente", + "You already have the newest version of {{name}}": "Ya tiene la versión más reciente de {{name}}", + "New": "Nuevo", + "Account status": "", + "Name": "Nombre", + "Confirm Password": "Confirmar contraseña", + "Cancel": "Cancelar", + "OK": "Si", + "An unexpected error has occurred.": "A ocurrido un error inesperado", + "Loading...": "Cargando...", + "No data to display": "No hay información para mostrar", + "Enabled": "Activada", + "Disabled": "Desactivada", + "Date Modified": "Fecha de modificación", + "Action": "Acción", + "Edit Account": "Editar cuenta", + "Delete Account": "Eliminar cuenta", + "Settings": "Configuración", + "Are you sure you want to delete the account?": "Esta usted seguro de eliminar la cuenta?", + "Update": "Actualizar", + "Old Password": "Contraseña anterior", + "Change Password": "Cambiar contraseña", + "New Password": "Nueva contraseña", + "Commands": "Comandos", + "Title": "Titulo", + "and more...": "y mas...", + "Delete": "Eliminar", + "Are you sure you want to delete this item?": "Esta seguro de eliminar este ítem?", + "Exception": "", + "Continue execution when an error is detected in the G-code program": "", + "Enabling this option may cause machine damage if you don't have an Emergency Stop button to prevent a dangerous situation.": "", + "Save Changes": "Guardar cambios", + "Events": "Eventos", + "Event": "Evento", + "Choose an event": "Elija un evento", + "Startup (System only)": "Iniciar (Solo sistema)", + "Open a serial port (System only)": "Abrir puerto serie (Solo sistema)", + "Close a serial port (System only)": "Cerrar puerto serie(Solo sistema)", + "G-code: Load": "Cargar G-code", + "G-code: Unload": "Subir G-code", + "G-code: Start": "Inciar G-code", + "G-code: Stop": "Detener G-code", + "G-code: Pause": "Pausar G-code", + "G-code: Resume": "Resumir G-code", + "Feed Hold": "Alimentacion", + "Run Macro": "Iniciar Macro", + "Load Macro": "Cargar macro", + "Trigger": "Disparador", + "Choose an trigger": "Elegir disparador", + "System": "Systema", + "G-code": "G-code", + "Automatically check for updates": "Comprobar actualizaciones automaticamente", + "Language": "Idioma", + "General": "General", + "Workspace": "Espacio de trabajo", + "Controller": "", + "About": "Acerca de", + "The account name is already being used. Choose another name.": "El nombre de la cuenta esta siendo usado. Elija otro nombre.", + "Passwords do not match.": "Contraseñas no coinciden.", + "Import": "Importar", + "Are you sure you want to overwrite the workspace settings?": "Esta seguro de sobreescribir la configuración?", + "Restore Defaults": "Restaurar valores predeterminados", + "Are you sure you want to restore the default settings?": "Esta usted seguro de restaurar los parametros por defecto?", + "Import Error": "Error de importación", + "Invalid file format.": "Tipo de archivo invalido.", + "Close": "Cerrar", + "Export": "Exportar", + "Click the Continue button to resume execution.": "", + "Stop": "Parar", + "Continue": "", + "Server has stopped working": "El servido a dejado de funcionar", + "A problem caused the server to stop working correctly. Check out the server status and try again.": "Un problema hizo que el servidor dejara de funcionar correctamente. Compruebe el estado del servidor y vuelva a intentarlo.", + "Reload": "Recargar", + "Fork Widget": "", + "Are you sure you want to fork this widget?": "", + "Remove Widget": "Eliminar widget", + "Are you sure you want to remove this widget?": "Esta seguro de eliminar este widget?", + "On": "Activado", + "Off": "Desactivado", + "Visualizer Widget": "Visualizador de widget", + "This widget visualizes a G-code file and simulates the tool path.": "Este widget permite visualizar el G-code y simula la ruta de la herramienta.", + "Connection Widget": "Widget de conexión", + "This widget lets you establish a connection to a serial port.": "Este widget permite establecer una conexión con un puerto serie.", + "Console Widget": "Widget de la consola", + "This widget lets you read and write data to the CNC controller connected to a serial port.": "Este widget permite leer y escribir datos al controlador CNC conectado a un puerto serie.", + "Grbl Widget": "Grbl Widget", + "This widget shows the Grbl state and provides Grbl specific features.": "Este widget muestra el estado de Grbl y proporciona características específicas de Grbl.", + "Marlin Widget": "", + "This widget shows the Marlin state and provides Marlin specific features.": "", + "Smoothie Widget": "Smoothie Widget", + "This widget shows the Smoothie state and provides Smoothie specific features.": "Este widget muestra el estado Smoothie y proporciona características específicas de Smoothie", + "TinyG Widget": "TinyG Widget", + "This widget shows the TinyG state and provides TinyG specific features.": "Este widget muestra el estado de TinyG y proporciona características específicas de TinyG.", + "Axes Widget": "Widget de Ejes", + "This widget shows the XYZ position. It includes jog controls, homing, and axis zeroing.": "Este widget muestra la posición XYZ. Incluye controles de desplazamiento, homing y reducción a cero del eje.", + "G-code Widget": "G-code Widget", + "This widget shows the current status of G-code commands.": "Este widget muestra el estado actual de comandos G-code.", + "Laser Widget": "Láser widget", + "This widget allows you control laser intensity and turn the laser on/off.": "Este widget permite controlar la intensidad del láser y encender/apagar el láser.", + "Macro Widget": "Macro Widget", + "This widget can use macros to automate routine tasks.": "Este widget utiliza macros para automatizar tareas rutinarias.", + "Probe Widget": "Widget de la Sonda", + "This widget helps you use a touch plate to set your Z zero offset.": "Este widget le ayuda a usar una placa para establecer su desplazamiento con respecto al eje Z.", + "Spindle Widget": "Spindle Widget", + "This widget provides the spindle control.": "Este widget proporciona el control del cabezal(Spindle).", + "Custom Widget": "Widget personalizado", + "This widget gives you a communication interface for creating your own widget.": "Este widget proporciona una interfaz de comunicación para crear su propio widget.", + "Webcam Widget": "Webcam Widget", + "This widget lets you monitor a webcam.": "Este widget permite monitorear una webcam.", + "Widgets": "Widgets", + "M0 Program Pause": "", + "M1 Program Pause": "", + "M2 Program End": "", + "M30 Program End": "", + "M6 Tool Change": "", + "M109 Set Extruder Temperature": "", + "M190 Set Heated Bed Temperature": "", + "Drop G-code file here": "Suelta el archivo G-code aquí", + "Manage Widgets ({{inactiveCount}})": "Administrar widgets ({{inactiveCount}})", + "Collapse All": "Colapsar todos", + "Expand All": "Expandir todos", + "Corrupted workspace settings": "Configuración de espacio de trabajo dañado", + "The workspace settings have become corrupted or invalid. Click Restore Defaults to restore default settings and continue.": "La configuración del área de trabajo se ha corrompido o no es válida. Haga clic en Restaurar valores predeterminados para restaurar la configuración predeterminada y continuar.", + "Download workspace settings": "Descargar configuración del área de trabajo", + "This field is required.": "Este campo es obligatorio", + "Passwords should be equal.": "Las contraseñas deben ser iguales", + "Work Coordinate System (G54)": "Sistema de coordenadas de trabajo (G55)", + "Work Coordinate System (G55)": "Sistema de coordenadas de trabajo (G55)", + "Work Coordinate System (G56)": "Sistema de coordenadas de trabajo (G56)", + "Work Coordinate System (G57)": "Sistema de coordenadas de trabajo (G57)", + "Work Coordinate System (G58)": "Sistema de coordenadas de trabajo (G58)", + "Work Coordinate System (G59)": "Sistema de coordenadas de trabajo (G59)", + "Go To Work Zero (G0 X0 Y0 Z0)": "Ir a cero de las coordenadas de trabajo (G0 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P1 X0 Y0 Z0)": "Compensaciones de trabajo fuera de cero (G10 L20 P1 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P2 X0 Y0 Z0)": "Compensaciones de trabajo fuera de cero (G10 L20 P2 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P3 X0 Y0 Z0)": "Compensaciones de trabajo fuera de cero (G10 L20 P3 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P4 X0 Y0 Z0)": "Compensaciones de trabajo fuera de cero (G10 L20 P4 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P5 X0 Y0 Z0)": "Compensaciones de trabajo fuera de cero (G10 L20 P5 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P6 X0 Y0 Z0)": "Compensaciones de trabajo fuera de cero (G10 L20 P6 X0 Y0 Z0)", + "Temporary Offsets (G92)": "", + "Zero Out Temporary Offsets (G92 X0 Y0 Z0)": "", + "Un-Zero Out Temporary Offsets (G92.1 X0 Y0 Z0)": "", + "Machine Coordinate System (G53)": "Sistema de coordenadas de la máquina (G53)", + "Go To Machine Zero (G53 G0 X0 Y0 Z0)": "Ir al cero las coordenadas de la maquina (G53 G0 X0 Y0 Z0)", + "Set Machine Zero (G28.3 X0 Y0 Z0)": "Establecer cero de la maquina (G28.3 X0 Y0 Z0)", + "Homing Sequence (G28.2 X0 Y0 Z0)": "Secuencia de Homing (G28.2 X0 Y0 Z0)", + "Go To Work Zero On X Axis (G0 X0)": "Ir a cero en el eje X de las coordenadas de trabajo (G0 X0)", + "Zero Out Work X Axis (G10 L20 P1 X0)": "", + "Zero Out Work X Axis (G10 L20 P2 X0)": "", + "Zero Out Work X Axis (G10 L20 P3 X0)": "", + "Zero Out Work X Axis (G10 L20 P4 X0)": "", + "Zero Out Work X Axis (G10 L20 P5 X0)": "", + "Zero Out Work X Axis (G10 L20 P6 X0)": "", + "Zero Out Temporary X Axis (G92 X0)": "", + "Un-Zero Out Temporary X Axis (G92.1 X0)": "", + "Go To Machine Zero On X Axis (G53 G0 X0)": "Ir a cero en el eje X de las coordenadas de la maquina (G53 G0 X0)", + "Zero Out Machine X Axis (G28.3 X0)": "", + "Home Machine X Axis (G28.2 X0)": "", + "Go To Work Zero On Y Axis (G0 Y0)": "Ir a cero en el eje Y de las coordenadas de trabajo (G0 Y0)", + "Zero Out Work Y Axis (G10 L20 P1 Y0)": "", + "Zero Out Work Y Axis (G10 L20 P2 Y0)": "", + "Zero Out Work Y Axis (G10 L20 P3 Y0)": "", + "Zero Out Work Y Axis (G10 L20 P4 Y0)": "", + "Zero Out Work Y Axis (G10 L20 P5 Y0)": "", + "Zero Out Work Y Axis (G10 L20 P6 Y0)": "", + "Zero Out Temporary Y Axis (G92 Y0)": "", + "Un-Zero Out Temporary Y Axis (G92.1 Y0)": "", + "Go To Machine Zero On Y Axis (G53 G0 Y0)": "Ir a cero en el eje Y de las coordenadas de la maquina (G53 G0 Y0)", + "Zero Out Machine Y Axis (G28.3 Y0)": "", + "Home Machine Y Axis (G28.2 Y0)": "", + "Go To Work Zero On Z Axis (G0 Z0)": "Ir a cero en el eje Z de las coordenadas de trabajo (G0 Z0)", + "Zero Out Work Z Axis (G10 L20 P1 Z0)": "", + "Zero Out Work Z Axis (G10 L20 P2 Z0)": "", + "Zero Out Work Z Axis (G10 L20 P3 Z0)": "", + "Zero Out Work Z Axis (G10 L20 P4 Z0)": "", + "Zero Out Work Z Axis (G10 L20 P5 Z0)": "", + "Zero Out Work Z Axis (G10 L20 P6 Z0)": "", + "Zero Out Temporary Z Axis (G92 Z0)": "", + "Un-Zero Out Temporary Z Axis (G92.1 Z0)": "", + "Go To Machine Zero On Z Axis (G53 G0 Z0)": "Ir a cero en el eje Z de las coordenadas de la maquina (G53 G0 Z0)", + "Zero Out Machine Z Axis (G28.3 Z0)": "", + "Home Machine Z Axis (G28.2 Z0)": "", + "Go To Work Zero On A Axis (G0 A0)": "Ir a cero en el eje A de las coordenadas de trabajo (G0 A0)", + "Zero Out Work A Axis (G10 L20 P1 A0)": "", + "Zero Out Work A Axis (G10 L20 P2 A0)": "", + "Zero Out Work A Axis (G10 L20 P3 A0)": "", + "Zero Out Work A Axis (G10 L20 P4 A0)": "", + "Zero Out Work A Axis (G10 L20 P5 A0)": "", + "Zero Out Work A Axis (G10 L20 P6 A0)": "", + "Zero Out Temporary A Axis (G92 A0)": "", + "Un-Zero Out Temporary A Axis (G92.1 A0)": "", + "Go To Machine Zero On A Axis (G53 G0 A0)": "Ir a cero en el eje A de las coordenadas de la maquina (G53 G0 A0)", + "Zero Out Machine A Axis (G28.3 A0)": "", + "Home Machine A Axis (G28.2 A0)": "", + "Go To Work Zero On B Axis (G0 B0)": "", + "Zero Out Work B Axis (G10 L20 P1 B0)": "", + "Zero Out Work B Axis (G10 L20 P2 B0)": "", + "Zero Out Work B Axis (G10 L20 P3 B0)": "", + "Zero Out Work B Axis (G10 L20 P4 B0)": "", + "Zero Out Work B Axis (G10 L20 P5 B0)": "", + "Zero Out Work B Axis (G10 L20 P6 B0)": "", + "Zero Out Temporary B Axis (G92 B0)": "", + "Un-Zero Out Temporary B Axis (G92.1 B0)": "", + "Go To Machine Zero On B Axis (G53 G0 B0)": "", + "Zero Out Machine B Axis (G28.3 B0)": "", + "Home Machine B Axis (G28.2 B0)": "", + "Go To Work Zero On C Axis (G0 C0)": "", + "Zero Out Work C Axis (G10 L20 P1 C0)": "", + "Zero Out Work C Axis (G10 L20 P2 C0)": "", + "Zero Out Work C Axis (G10 L20 P3 C0)": "", + "Zero Out Work C Axis (G10 L20 P4 C0)": "", + "Zero Out Work C Axis (G10 L20 P5 C0)": "", + "Zero Out Work C Axis (G10 L20 P6 C0)": "", + "Zero Out Temporary C Axis (G92 C0)": "", + "Un-Zero Out Temporary C Axis (G92.1 C0)": "", + "Go To Machine Zero On C Axis (G53 G0 C0)": "", + "Zero Out Machine C Axis (G28.3 C0)": "", + "Home Machine C Axis (G28.2 C0)": "", + "mm": "mm", + "in": "in", + "deg": "deg", + "Zero Out Machine": "", + "Home Machine": "", + "Zero Out Work Offsets": "", + "Set Work Offsets": "", + "Axis": "Ejes", + "Machine Position": "Posición de la maquina", + "Work Position": "Posición de trabajo", + "Axes": "Ejes", + "Keypad jogging": "", + "Edit": "Editar", + "Expand": "Expandir", + "Collapse": "Colapsar", + "More": "Más", + "Enter Full Screen": "Entrar pantalla completa", + "Exit Full Screen": "Salir pantalla completa", + "Move X- Y+": "Mover X- Y+", + "Move Y+": "Mover Y+", + "Move X+ Y+": "Mover X+ Y+", + "Move Z+": "Mover Z+", + "Move X-": "Mover X-", + "Move To XY Zero (G0 X0 Y0)": "Mover XY a cero (G0 X0 Y0)", + "Move X+": "Mover X+", + "Move To Z Zero (G0 Z0)": "Mover Z a cero (G0 Z0)", + "Move X- Y-": "Mover X- Y-", + "Move Y-": "Mover Y-", + "Move X+ Y-": "Mover X+ Y-", + "Move Z-": "Mover Z-", + "Units": "Unidades", + "G20 (inch)": "", + "G21 (mm)": "", + "Imperial": "", + "Metric": "", + "Right": "Derecha", + "Left": "Izquierda", + "Up": "Arriba", + "Down": "Abajo", + "Page Up": "Subir página", + "Page Down": "Bajar página", + "Right Square Bracket": "Cierra corchetes", + "Left Square Bracket": "Abre corchetes", + "0.1x Move": "Mover 0.1x", + "Alt": "Alt", + "10x Move": "Mover 10x", + "⇧ Shift": "⇧ Shift", + "X-axis": "Eje-X", + "Y-axis": "Eje-Y", + "Z-axis": "Eje-Z", + "A-axis": "Eje-A", + "B-axis": "", + "C-axis": "", + "Custom Commands": "Comando personalizado", + "Axes Settings": "Configuracion de ejes", + "ShuttleXpress": "", + "Feed Rate Range: {{min}} - {{max}} mm/min": "", + "Repeat Rate: {{hertz}}Hz": "", + "60 Times per Second": "60 veces por segundo", + "45 Times per Second": "45 veces por segundo", + "30 Times per Second": "30 veces por segundo", + "15 Times per Second": "15 veces por segundo", + "10 Times per Second": "10 veces por segundo", + "5 Times per Second": "5 veces por segundo", + "2 Times per Second": "2 veces por segundo", + "Once Every Second": "Cada segundo", + "Distance Overshoot: {{overshoot}}x": "", + "Manufacturer: {{manufacturer}}": "Fabricante: {{manufacturer}}", + "Port": "Puerto", + "No ports available": "No hay puertos disponibles", + "Choose a port": "Elija un puerto", + "Refresh": "Actualizar", + "Baud rate": "Baud rate", + "Choose a baud rate": "Elija", + "Enable hardware flow control": "", + "Connect automatically": "Conectar automaticamente", + "Open": "Abrir", + "Error opening serial port '{{- port}}'": "Error al abrir el puerto serie '{{- port}}'", + "Connection": "Conexión", + "No serial connection": "No hay conexión con el puerto serie", + "Connected to {{-port}} with a baud rate of {{baudrate}}": "Conectado al puerto {{-port}} con un baud rate de {{baudrate}}", + "Console": "Consola", + "Clear all": "Borrar todo", + "Select All": "", + "Clear Selection": "", + "URL not configured": "", + "The widget is currently disabled": "", + "Enable": "Activar", + "Disable": "Desactivar", + "URL": "URL", + "Min": "Min", + "Max": "Max", + "Dimension": "Dimension", + "Sent": "Enviado", + "Received": "Recibido", + "Start Time": "Tiempo de inicio", + "Elapsed Time": "Tiempo transcurrido", + "Finish Time": "Tiempo de finalización", + "Remaining Time": "Tiempo restante", + "Controller State": "Estado del controlador", + "Controller Settings": "Configuración del controlador", + "Hide": "Ocultar", + "Show": "Mostrar", + "Queue Reports": "Informes de cola", + "Planner Buffer": "", + "Receive Buffer": "", + "Status Reports": "Reporte de estado", + "State": "Estado", + "Feed Rate": "", + "Spindle": "Spindle", + "Tool Number": "Numero de herramienta", + "Modal Groups": "", + "Motion": "Movimiento", + "Coordinate": "Coordenada", + "Plane": "Plano", + "Distance": "Distancia", + "Program": "Programa", + "Coolant": "Refrigerante", + "Status Report (?)": "Reporte de estado (?)", + "Check G-code Mode ($C)": "Compruebar modo G-code ($ C)", + "Homing ($H)": "Homing ($H)", + "Kill Alarm Lock ($X)": "", + "Sleep ($SLP)": "Suspensión ($SLP)", + "Help ($)": "Ayuda ($)", + "Settings ($$)": "Configuración ($$)", + "View G-code Parameters ($#)": "Ver parametros del G-code ($#)", + "View G-code Parser State ($G)": "Ver el estado del G-code Parser ($G)", + "View Build Info ($I)": "", + "View Startup Blocks ($N)": "Ver bloques de inicio ($N)", + "Laser": "Laser", + "Laser Intensity Control": "Control de intensidad de laser", + "Laser Test": "Probar laser", + "Power (%)": "", + "Test duration": "Duración del test", + "ms": "ms", + "Maximum value": "Valor maximo", + "Laser Off": "Laser apagado", + "New Macro": "Nuevo Macro", + "Macro Name": "Nombre del Macro", + "Macro Commands": "Comandos del Macro", + "Macro Variables": "Variables del Macro", + "Edit Macro": "Editar Macro", + "Delete Macro": "Eliminar Macro", + "Are you sure you want to delete this macro?": "Esta seguro de borrar este Macro?", + "No": "No", + "Yes": "Sí", + "Macro": "Macro", + "Are you sure you want to load this macro?": "Esta seguro de cargar este macro?", + "No macros": "No hay Macros", + "Run": "Ejecutar", + "Get Extruder Temperature (M105)": "", + "Get Current Position (M114)": "", + "Get Firmware Version and Capabilities (M115)": "", + "Heater Control": "", + "Extruder": "", + "°C": "", + "Set the target temperature for the extruder": "", + "Heated Bed": "", + "Set the target temperature for the heated bed": "", + "Extruder Temperature": "", + "Heated Bed Temperature": "", + "Extruder Power": "", + "Heated Bed Power": "", + "Probe": "", + "mm/min": "mm/min", + "in/min": "in/min", + "Probe Command": "", + "G38.2 probe toward workpiece, stop on contact, signal error if failure": "", + "G38.3 probe toward workpiece, stop on contact": "", + "G38.4 probe away from workpiece, stop on loss of contact, signal error if failure": "", + "G38.5 probe away from workpiece, stop on loss of contact": "", + "Probe Depth": "Profundidad de la sonda", + "Probe Feedrate": "", + "Touch Plate Thickness": "Grosor del plato de prueba", + "Retraction Distance": "Distancia de retracción", + "Z-Probe": "", + "Apply tool length offset": "Aplicar desplazamiento de la longitud de la herramienta", + "Run Z-Probe": "", + "Spindle Speed": "Velocidad del Spindle", + "RPM": "RPM", + "Queue Flush (%)": "", + "Kill Job (^d)": "Detener proceso (^d)", + "Clear Alarm ($clear)": "Borrar alarma ($clear)", + "Show System Settings": "Mostrar configuración del systema", + "Show All Settings": "Mostrar toda la configuración", + "List Self Tests": "Listar autopruebas", + "Power Management": "Administración de energia", + "Enable Motors": "Habilitar motores", + "Disable Motors": "Deshabilitar motores", + "Motor {{n}}": "Motor {{n}}", + "Velocity": "Velocidad", + "Line": "Linea", + "Path": "Ruta", + "G-code not loaded": "G-code no cargado", + "Tool Change": "", + "Are you sure you want to resume program execution?": "", + "Click the Resume button to resume program execution.": "", + "Click the Stop button to stop program execution.": "", + "Run a tool change macro to change the tool and adjust the Z-axis offset. Afterwards, click the Resume button to resume program execution.": "", + "Waiting for the target temperature to be reached...": "", + "Work Coordinate System": "Coordinadas de trabajo del sistema", + "Enable 3D View": "Activar vista 3D", + "Disable 3D View": "Desactivar vista 3D", + "3D View": "Vista 3D", + "Projection": "Proyección", + "Perspective Projection": "Proyección perpectiva", + "Orthographic Projection": "Proyección Ortografica", + "Display G-code Filename": "Mostrar nombre del G-code", + "Hide Coordinate System": "Esconder coordenadas del sistema", + "Show Coordinate System": "Mostrar coordenadas del sistema", + "Hide Grid Line Numbers": "Ocultar números de línea de cuadrícula", + "Show Grid Line Numbers": "Mostrar números de línea de cuadrícula", + "File folder": "Carpeta de archivos", + "{{extname}} File": "Archivo {{extname}}", + "File": "Archivo", + "3D rendering": "Renderización en 3D", + "Zoom In": "Acercar", + "Zoom Out": "Alejar", + "Move the camera": "Mover camara", + "Rotate the camera": "Rotar camara", + "Watch Directory": "Ver directorio", + "Date modified": "Fecha de modificación", + "Type": "Tipo", + "Size": "Tamaño", + "Load G-code": "Cargar G-code", + "Upload G-code": "Subir G-code", + "Browse...": "Buscar...", + "Resume": "", + "Pause": "Pausar", + "Webcam": "Camara web", + "Webcam Settings": "Configuración de la camara web", + "Media Source": "", + "Use a built-in camera or a connected webcam": "Usar camara interna o una camara conectada", + "Use a M-JPEG stream over HTTP": "Usar M-JPEG para transmitir por HTTP", + "Webcam is off": "La camara web esta apagada", + "Rotate Left": "Rotar Izquierda", + "Rotate Right": "Rotar Derecha", + "Flip Horizontally": "Voltear Horizontalmente", + "Flip Vertically": "Voltear Verticalmente", + "Crosshair": "", + "Manual Data Input": "", + "MDI": "", + "Button Width": "", + "Order": "", + "Move Up": "", + "Move Down": "", + "Remove": "Quitar", + "Waiting for the planner to empty...": "", + "No video devices available": "", + "Choose a video device": "", + "Automatic detection": "", + "Front View": "", + "Move Backward": "", + "Move Forward": "", + "Top View": "", + "Zoom to Fit": "", + "Right Side View": "", + "Left Side View": "", + "Custom range...": "Intervalo personalizado...", + "Today": "Hoy", + "Last {{n}} days": "Últimos {{n}} días", + "Apply": "Aplicar", + "Add": "Agregar", + "Custom Jog Distance (mm)": "", + "Custom Jog Distance (inches)": "", + "Machine Profiles": "", + "No machine profile selected": "", + "Delete machine profile": "", + "Machine Profile": "", + "Limits": "", + "User Accounts": "Cuentas de usuario", + "New Account": "Nueva cuenta", + "Hide Limits": "", + "Show Limits": "", + "WebGL: <1>Enabled": "WebGL: <1>Activada", + "WebGL: <1>Disabled": "WebGL: <1>Desactivada", + "Hide Cutting Tool": "", + "Show Cutting Tool": "", + "Ready to start": "" } diff --git a/src/web/i18n/fr/controller.json b/src/app/i18n/fr/controller.json similarity index 100% rename from src/web/i18n/fr/controller.json rename to src/app/i18n/fr/controller.json diff --git a/src/web/i18n/fr/gcode.json b/src/app/i18n/fr/gcode.json similarity index 100% rename from src/web/i18n/fr/gcode.json rename to src/app/i18n/fr/gcode.json diff --git a/src/app/i18n/fr/resource.json b/src/app/i18n/fr/resource.json old mode 100755 new mode 100644 index d8ffd2fb6..43a8996a3 --- a/src/app/i18n/fr/resource.json +++ b/src/app/i18n/fr/resource.json @@ -1,4 +1,533 @@ { - "loading": "Chargement...", - "title": "CNCjs" + "Records: {{from}} - {{to}} / {{total}}": "Enregistrements : {{from}}-{{to}}/{{total}}", + "Records: {{total}}": "Enregistrements : {{total}}", + "{{pageLength}} per page": "{{pageLength}} par page", + "New update available": "Nouvelles mises à jour disponibles", + "Command succeeded": "", + "Command failed ({{err}})": "", + "My Account": "", + "Signed in as {{name}}": "", + "Account": "Compte", + "Sign Out": "Fermeture de session", + "Options": "Options", + "Command": "", + "Show notifications": "", + "Help": "Aide", + "Report an issue": "Signaler un problème", + "Cycle Start": "Cycle de démarrage", + "Feedhold": "", + "Homing": "Origines", + "Sleep": "Veille", + "Unlock": "Déverouiller", + "Reset": "Réinitialiser", + "Authentication failed.": "", + "Error": "", + "Sign in to {{name}}": "", + "Username": "Nom d'utilisateur", + "Password": "Mot de passe", + "Sign In": "Ouverture de session", + "Forgot your password?": "", + "A web-based interface for CNC milling controller running Grbl, Smoothieware, or TinyG": "", + "Learn more": "En savoir plus", + "Downloads": "Téléchargements", + "Checking for updates...": "Recherche en cours des mises à jour...", + "A new version of {{name}} is available": "Une nouvelle version de {{name}} est disponible", + "Version {{version}}": "Version {{version}}", + "Latest version": "Dernière version", + "You already have the newest version of {{name}}": "Vous possédez déjà la version la plus récente de {{name}}", + "New": "", + "Account status": "", + "Name": "Nom", + "Confirm Password": "", + "Cancel": "Annuler", + "OK": "OK", + "An unexpected error has occurred.": "", + "Loading...": "Chargement...", + "No data to display": "", + "Enabled": "Activé", + "Disabled": "Désactivé", + "Date Modified": "", + "Action": "Action", + "Edit Account": "", + "Delete Account": "", + "Settings": "Paramètres", + "Are you sure you want to delete the account?": "", + "Update": "", + "Old Password": "", + "Change Password": "", + "New Password": "", + "Commands": "", + "Title": "", + "and more...": "", + "Delete": "Supprimer", + "Are you sure you want to delete this item?": "", + "Exception": "", + "Continue execution when an error is detected in the G-code program": "", + "Enabling this option may cause machine damage if you don't have an Emergency Stop button to prevent a dangerous situation.": "", + "Save Changes": "Enregistrer les modifications", + "Events": "", + "Event": "", + "Choose an event": "", + "Startup (System only)": "", + "Open a serial port (System only)": "", + "Close a serial port (System only)": "", + "G-code: Load": "", + "G-code: Unload": "", + "G-code: Start": "", + "G-code: Stop": "", + "G-code: Pause": "", + "G-code: Resume": "", + "Feed Hold": "", + "Run Macro": "Exécuter une macro", + "Load Macro": "", + "Trigger": "", + "Choose an trigger": "", + "System": "", + "G-code": "G-code", + "Automatically check for updates": "", + "Language": "Langue", + "General": "Généralités", + "Workspace": "Espace de travail", + "Controller": "", + "About": "À propos de", + "The account name is already being used. Choose another name.": "", + "Passwords do not match.": "Les mots de passe ne correspondent pas.", + "Import": "", + "Are you sure you want to overwrite the workspace settings?": "", + "Restore Defaults": "Restaurer défaut", + "Are you sure you want to restore the default settings?": "Êtes-vous sûr de vouloir restaurer la configuration par défaut?", + "Import Error": "", + "Invalid file format.": "", + "Close": "Fermer", + "Export": "", + "Click the Continue button to resume execution.": "", + "Stop": "Stop", + "Continue": "", + "Server has stopped working": "", + "A problem caused the server to stop working correctly. Check out the server status and try again.": "", + "Reload": "", + "Fork Widget": "", + "Are you sure you want to fork this widget?": "", + "Remove Widget": "", + "Are you sure you want to remove this widget?": "", + "On": "Oui", + "Off": "Non", + "Visualizer Widget": "Module de visualisation", + "This widget visualizes a G-code file and simulates the tool path.": "Ce module affiche le ficher G-code et simule le chemin de l'outil.", + "Connection Widget": "Module de connexion", + "This widget lets you establish a connection to a serial port.": "Ce module vous permet d'établir la connexion au port série.", + "Console Widget": "Module console", + "This widget lets you read and write data to the CNC controller connected to a serial port.": "Ce module vous permet d'envoyer des commandes au contrôlleur CNC connecté au port série.", + "Grbl Widget": "Module Grbl", + "This widget shows the Grbl state and provides Grbl specific features.": "Ce module affiche l'état du Grbl et fournit les fonctionnalités spécifiques à Grbl.", + "Marlin Widget": "", + "This widget shows the Marlin state and provides Marlin specific features.": "", + "Smoothie Widget": "", + "This widget shows the Smoothie state and provides Smoothie specific features.": "", + "TinyG Widget": "Module TinyG", + "This widget shows the TinyG state and provides TinyG specific features.": "Ce module affiche l'état du TinyG et fournit les fonctionnalités spécifiques à TinyG.", + "Axes Widget": "Module Axes", + "This widget shows the XYZ position. It includes jog controls, homing, and axis zeroing.": "Ce module affiche la position XYZ. Il inclut les commandes de déplacement manuel, le homing, remise à zéro des axes.", + "G-code Widget": "Module G-code", + "This widget shows the current status of G-code commands.": "Ce module affiche l'état des commandes G-code.", + "Laser Widget": "", + "This widget allows you control laser intensity and turn the laser on/off.": "", + "Macro Widget": "Module Macro", + "This widget can use macros to automate routine tasks.": "Ce widget peut utiliser des macros pour automatiser les tâches de routine.", + "Probe Widget": "Module de palpage", + "This widget helps you use a touch plate to set your Z zero offset.": "Ce module vous aide à palper le plateau pour définir le décalage en Z.", + "Spindle Widget": "Module Broche", + "This widget provides the spindle control.": "Ce module fournit le contrôle de la broche.", + "Custom Widget": "", + "This widget gives you a communication interface for creating your own widget.": "", + "Webcam Widget": "Module webcam", + "This widget lets you monitor a webcam.": "Ce module vous permet de gérer une webcam", + "Widgets": "Modules", + "M0 Program Pause": "", + "M1 Program Pause": "", + "M2 Program End": "", + "M30 Program End": "", + "M6 Tool Change": "", + "M109 Set Extruder Temperature": "", + "M190 Set Heated Bed Temperature": "", + "Drop G-code file here": "Déposez un fichier G-code", + "Manage Widgets ({{inactiveCount}})": "Gérer les Modules ({{inactiveCount}})", + "Collapse All": "", + "Expand All": "", + "Corrupted workspace settings": "", + "The workspace settings have become corrupted or invalid. Click Restore Defaults to restore default settings and continue.": "", + "Download workspace settings": "", + "This field is required.": "Ce champ est obligatoire.", + "Passwords should be equal.": "", + "Work Coordinate System (G54)": "Système de coordonnées de travail (G54)", + "Work Coordinate System (G55)": "Système de coordonnées de travail (G55)", + "Work Coordinate System (G56)": "Système de coordonnées de travail (G56)", + "Work Coordinate System (G57)": "Système de coordonnées de travail (G57)", + "Work Coordinate System (G58)": "Système de coordonnées de travail (G58)", + "Work Coordinate System (G59)": "Système de coordonnées de travail (G59)", + "Go To Work Zero (G0 X0 Y0 Z0)": "Aller au zéro de travail (G0 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P1 X0 Y0 Z0)": "Définir comme zéro de travail (G10 L20 P1 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P2 X0 Y0 Z0)": "Définir comme zéro de travail (G10 L20 P2 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P3 X0 Y0 Z0)": "Définir comme zéro de travail (G10 L20 P3 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P4 X0 Y0 Z0)": "Définir comme zéro de travail (G10 L20 P4 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P5 X0 Y0 Z0)": "Définir comme zéro de travail (G10 L20 P5 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P6 X0 Y0 Z0)": "Définir comme zéro de travail (G10 L20 P6 X0 Y0 Z0)", + "Temporary Offsets (G92)": "Décallage temporaire (G92)", + "Zero Out Temporary Offsets (G92 X0 Y0 Z0)": "Définir temporairement le zéro (G92 X0 Y0 Z0)", + "Un-Zero Out Temporary Offsets (G92.1 X0 Y0 Z0)": "Supprimer le zéro temporaire (G92.1 X0 Y0 Z0)", + "Machine Coordinate System (G53)": "Système de coordonnées machine (G53)", + "Go To Machine Zero (G53 G0 X0 Y0 Z0)": "Aller au zéro machine (G53 G0 X0 Y0 Z0)", + "Set Machine Zero (G28.3 X0 Y0 Z0)": "", + "Homing Sequence (G28.2 X0 Y0 Z0)": "", + "Go To Work Zero On X Axis (G0 X0)": "Aller au zéro de travail de l'axe X (G0 X0)", + "Zero Out Work X Axis (G10 L20 P1 X0)": "Définir comme zéro de travail pour l'axe X (G10 L20 P1 X0)", + "Zero Out Work X Axis (G10 L20 P2 X0)": "Définir comme zéro de travail pour l'axe X (G10 L20 P2 X0)", + "Zero Out Work X Axis (G10 L20 P3 X0)": "Définir comme zéro de travail pour l'axe X (G10 L20 P3 X0)", + "Zero Out Work X Axis (G10 L20 P4 X0)": "Définir comme zéro de travail pour l'axe X (G10 L20 P4 X0)", + "Zero Out Work X Axis (G10 L20 P5 X0)": "Définir comme zéro de travail pour l'axe X (G10 L20 P5 X0)", + "Zero Out Work X Axis (G10 L20 P6 X0)": "Définir comme zéro de travail pour l'axe X (G10 L20 P6 X0)", + "Zero Out Temporary X Axis (G92 X0)": "Définir temporairement le zéro pour l'axe X (G92 X0)", + "Un-Zero Out Temporary X Axis (G92.1 X0)": "Supprimer le zéro temporaire pour l'axe X (G92.1 X0)", + "Go To Machine Zero On X Axis (G53 G0 X0)": "Aller au zéro machine de l'axe X (G53 G0 X0)", + "Zero Out Machine X Axis (G28.3 X0)": "", + "Home Machine X Axis (G28.2 X0)": "", + "Go To Work Zero On Y Axis (G0 Y0)": "Aller au zéro de travail de l'axe X (G0 Y0)", + "Zero Out Work Y Axis (G10 L20 P1 Y0)": "Définir comme zéro de travail pour l'axe Y (G10 L20 P1 Y0)", + "Zero Out Work Y Axis (G10 L20 P2 Y0)": "Définir comme zéro de travail pour l'axe Y (G10 L20 P2 Y0)", + "Zero Out Work Y Axis (G10 L20 P3 Y0)": "Définir comme zéro de travail pour l'axe Y (G10 L20 P3 Y0)", + "Zero Out Work Y Axis (G10 L20 P4 Y0)": "Définir comme zéro de travail pour l'axe Y (G10 L20 P4 Y0)", + "Zero Out Work Y Axis (G10 L20 P5 Y0)": "Définir comme zéro de travail pour l'axe Y (G10 L20 P5 Y0)", + "Zero Out Work Y Axis (G10 L20 P6 Y0)": "Définir comme zéro de travail pour l'axe Y (G10 L20 P6 Y0)", + "Zero Out Temporary Y Axis (G92 Y0)": "Définir temporairement le zéro pour l'axe Y (G92 Y0)", + "Un-Zero Out Temporary Y Axis (G92.1 Y0)": "Supprimer le zéro temporaire pour l'axe Y (G92.1 Y0)", + "Go To Machine Zero On Y Axis (G53 G0 Y0)": "Aller au zéro machine de l'axe Y (G53 G0 Y0)", + "Zero Out Machine Y Axis (G28.3 Y0)": "", + "Home Machine Y Axis (G28.2 Y0)": "", + "Go To Work Zero On Z Axis (G0 Z0)": "Aller au zéro de travail de l'axe Z (G0 Z0)", + "Zero Out Work Z Axis (G10 L20 P1 Z0)": "Définir comme zéro de travail pour l'axe Z (G10 L20 P1 Z0)", + "Zero Out Work Z Axis (G10 L20 P2 Z0)": "Définir comme zéro de travail pour l'axe Z (G10 L20 P2 Z0)", + "Zero Out Work Z Axis (G10 L20 P3 Z0)": "Définir comme zéro de travail pour l'axe Z (G10 L20 P3 Z0)", + "Zero Out Work Z Axis (G10 L20 P4 Z0)": "Définir comme zéro de travail pour l'axe Z (G10 L20 P4 Z0)", + "Zero Out Work Z Axis (G10 L20 P5 Z0)": "Définir comme zéro de travail pour l'axe Z (G10 L20 P5 Z0)", + "Zero Out Work Z Axis (G10 L20 P6 Z0)": "Définir comme zéro de travail pour l'axe Z (G10 L20 P6 Z0)", + "Zero Out Temporary Z Axis (G92 Z0)": "Définir comme zéro temporaire pour l'axe Z (G92 Z0)", + "Un-Zero Out Temporary Z Axis (G92.1 Z0)": "Supprimer le zéro temporaire pour l'axe Z (G92.1 Z0)", + "Go To Machine Zero On Z Axis (G53 G0 Z0)": "Aller au zéro machine de l'axe Z (G53 G0 Z0)", + "Zero Out Machine Z Axis (G28.3 Z0)": "", + "Home Machine Z Axis (G28.2 Z0)": "", + "Go To Work Zero On A Axis (G0 A0)": "Aller au zéro de travail de l'axe A (G0 A0)", + "Zero Out Work A Axis (G10 L20 P1 A0)": "Définir comme zéro de travail pour l'axe A (G10 L20 P1 A0)", + "Zero Out Work A Axis (G10 L20 P2 A0)": "Définir comme zéro de travail pour l'axe A (G10 L20 P2 A0)", + "Zero Out Work A Axis (G10 L20 P3 A0)": "Définir comme zéro de travail pour l'axe A (G10 L20 P3 A0)", + "Zero Out Work A Axis (G10 L20 P4 A0)": "Définir comme zéro de travail pour l'axe A (G10 L20 P4 A0)", + "Zero Out Work A Axis (G10 L20 P5 A0)": "Définir comme zéro de travail pour l'axe A (G10 L20 P5 A0)", + "Zero Out Work A Axis (G10 L20 P6 A0)": "Définir comme zéro de travail pour l'axe A (G10 L20 P6 A0)", + "Zero Out Temporary A Axis (G92 A0)": "Définir comme zéro temporaire pour l'axe A (G92 A0)", + "Un-Zero Out Temporary A Axis (G92.1 A0)": "Supprimer le zéro temporaire pour l'axe A (G92.1 A0)", + "Go To Machine Zero On A Axis (G53 G0 A0)": "Aller au zéro machine de l'axe A (G53 G0 A0)", + "Zero Out Machine A Axis (G28.3 A0)": "", + "Home Machine A Axis (G28.2 A0)": "", + "Go To Work Zero On B Axis (G0 B0)": "", + "Zero Out Work B Axis (G10 L20 P1 B0)": "", + "Zero Out Work B Axis (G10 L20 P2 B0)": "", + "Zero Out Work B Axis (G10 L20 P3 B0)": "", + "Zero Out Work B Axis (G10 L20 P4 B0)": "", + "Zero Out Work B Axis (G10 L20 P5 B0)": "", + "Zero Out Work B Axis (G10 L20 P6 B0)": "", + "Zero Out Temporary B Axis (G92 B0)": "", + "Un-Zero Out Temporary B Axis (G92.1 B0)": "", + "Go To Machine Zero On B Axis (G53 G0 B0)": "", + "Zero Out Machine B Axis (G28.3 B0)": "", + "Home Machine B Axis (G28.2 B0)": "", + "Go To Work Zero On C Axis (G0 C0)": "", + "Zero Out Work C Axis (G10 L20 P1 C0)": "", + "Zero Out Work C Axis (G10 L20 P2 C0)": "", + "Zero Out Work C Axis (G10 L20 P3 C0)": "", + "Zero Out Work C Axis (G10 L20 P4 C0)": "", + "Zero Out Work C Axis (G10 L20 P5 C0)": "", + "Zero Out Work C Axis (G10 L20 P6 C0)": "", + "Zero Out Temporary C Axis (G92 C0)": "", + "Un-Zero Out Temporary C Axis (G92.1 C0)": "", + "Go To Machine Zero On C Axis (G53 G0 C0)": "", + "Zero Out Machine C Axis (G28.3 C0)": "", + "Home Machine C Axis (G28.2 C0)": "", + "mm": "mm", + "in": "in", + "deg": "", + "Zero Out Machine": "", + "Home Machine": "", + "Zero Out Work Offsets": "", + "Set Work Offsets": "", + "Axis": "Axes", + "Machine Position": "Position de la machine", + "Work Position": "Position de travail", + "Axes": "Axes", + "Keypad jogging": "", + "Edit": "Editer", + "Expand": "", + "Collapse": "", + "More": "Plus", + "Enter Full Screen": "", + "Exit Full Screen": "", + "Move X- Y+": "Déplacer X- Y+", + "Move Y+": "Déplacer Y+", + "Move X+ Y+": "Déplacer X+ Y+", + "Move Z+": "Déplacer Z+", + "Move X-": "Déplacer X-", + "Move To XY Zero (G0 X0 Y0)": "Déplacer à zéro XY (G0 X0 Y0)", + "Move X+": "Déplacer X+", + "Move To Z Zero (G0 Z0)": "Déplacer Z à zéro", + "Move X- Y-": "Déplacer X- Y-", + "Move Y-": "Déplacer Y-", + "Move X+ Y-": "Déplacer X+ Y-", + "Move Z-": "Déplacer Z-", + "Units": "Unités", + "G20 (inch)": "", + "G21 (mm)": "", + "Imperial": "", + "Metric": "", + "Right": "Droite", + "Left": "Gauche", + "Up": "Haut", + "Down": "Bas", + "Page Up": "Page haut", + "Page Down": "Page bas", + "Right Square Bracket": "", + "Left Square Bracket": "", + "0.1x Move": "déplacement 0.1x", + "Alt": "Alt", + "10x Move": "déplacement 10x", + "⇧ Shift": "⇧ Maj", + "X-axis": "", + "Y-axis": "", + "Z-axis": "", + "A-axis": "", + "B-axis": "", + "C-axis": "", + "Custom Commands": "", + "Axes Settings": "Configuration des axes", + "ShuttleXpress": "", + "Feed Rate Range: {{min}} - {{max}} mm/min": "Gamme de vitesses d'usinage: {{min}} - {{max}} mm/min", + "Repeat Rate: {{hertz}}Hz": "Vitesse de répétition: {{hertz}}Hz", + "60 Times per Second": "60 fois par seconde", + "45 Times per Second": "45 fois par seconde", + "30 Times per Second": "30 fois par seconde", + "15 Times per Second": "15 fois par seconde", + "10 Times per Second": "10 fois par seconde", + "5 Times per Second": "5 fois par seconde", + "2 Times per Second": "2 fois par seconde", + "Once Every Second": "Une fos par seconde", + "Distance Overshoot: {{overshoot}}x": "Distance de dépassement: {{overshoot}}x", + "Manufacturer: {{manufacturer}}": "", + "Port": "Port", + "No ports available": "Aucun port disponible", + "Choose a port": "Choisissez un port", + "Refresh": "Actualiser", + "Baud rate": "Vitesse de transmission", + "Choose a baud rate": "Selectionner le 'Baudrate'", + "Enable hardware flow control": "", + "Connect automatically": "Connecter automatiquement", + "Open": "Ouvrir", + "Error opening serial port '{{- port}}'": "", + "Connection": "Connexion", + "No serial connection": "", + "Connected to {{-port}} with a baud rate of {{baudrate}}": "", + "Console": "Console", + "Clear all": "Effacer tout", + "Select All": "", + "Clear Selection": "", + "URL not configured": "", + "The widget is currently disabled": "", + "Enable": "Activer", + "Disable": "Désactiver", + "URL": "", + "Min": "Min", + "Max": "Max", + "Dimension": "Dimension", + "Sent": "Envoyé", + "Received": "", + "Start Time": "Heure de début", + "Elapsed Time": "", + "Finish Time": "", + "Remaining Time": "", + "Controller State": "", + "Controller Settings": "", + "Hide": "Masquer", + "Show": "Montrer", + "Queue Reports": "", + "Planner Buffer": "", + "Receive Buffer": "", + "Status Reports": "", + "State": "État", + "Feed Rate": "Vitesse d'usinage", + "Spindle": "Broche", + "Tool Number": "Numéro d'outil", + "Modal Groups": "Goupes modaux", + "Motion": "Mouvement", + "Coordinate": "", + "Plane": "Plan", + "Distance": "Distance", + "Program": "Programme", + "Coolant": "Refroidissement", + "Status Report (?)": "", + "Check G-code Mode ($C)": "Vérifier le mode G-code ($C)", + "Homing ($H)": "Origines ($H)", + "Kill Alarm Lock ($X)": "Désactiver l'alarme de vérouillage ($X)", + "Sleep ($SLP)": "Veille ($SLP)", + "Help ($)": "Aide ($)", + "Settings ($$)": "Paramètres ($$)", + "View G-code Parameters ($#)": "Afficher les paramètres G-code ($#)", + "View G-code Parser State ($G)": "Afficher l'état du parseur G-code ($G)", + "View Build Info ($I)": "Voir les informations de compilation ($I)", + "View Startup Blocks ($N)": "Afficher les blocs de démarrage ($N)", + "Laser": "", + "Laser Intensity Control": "", + "Laser Test": "", + "Power (%)": "", + "Test duration": "", + "ms": "", + "Maximum value": "", + "Laser Off": "", + "New Macro": "", + "Macro Name": "Nom de macro", + "Macro Commands": "", + "Macro Variables": "", + "Edit Macro": "Modifier une macro", + "Delete Macro": "Supprimer une macro", + "Are you sure you want to delete this macro?": "", + "No": "Non", + "Yes": "Oui", + "Macro": "Macro", + "Are you sure you want to load this macro?": "", + "No macros": "", + "Run": "Exécuter", + "Get Extruder Temperature (M105)": "", + "Get Current Position (M114)": "", + "Get Firmware Version and Capabilities (M115)": "", + "Heater Control": "", + "Extruder": "", + "°C": "", + "Set the target temperature for the extruder": "", + "Heated Bed": "", + "Set the target temperature for the heated bed": "", + "Extruder Temperature": "", + "Heated Bed Temperature": "", + "Extruder Power": "", + "Heated Bed Power": "", + "Probe": "Palpeur", + "mm/min": "mm/min", + "in/min": "in/min", + "Probe Command": "Commande de palpage", + "G38.2 probe toward workpiece, stop on contact, signal error if failure": "G38.2 palper vers la pièce, stopper au contact, signaler une erreur si échec", + "G38.3 probe toward workpiece, stop on contact": "G38.3 palper vers la pièce, stopper au contact", + "G38.4 probe away from workpiece, stop on loss of contact, signal error if failure": "G38.4 palper en s'éloignant de la pièce, stopper à la perte de contact, signaler une erreur si échec", + "G38.5 probe away from workpiece, stop on loss of contact": "G38.5 palper en s'éloignant de la pièce, stopper à la perte de contact", + "Probe Depth": "Résolution de palpage", + "Probe Feedrate": "Vitesse de palpage", + "Touch Plate Thickness": "Largeur du palpeur", + "Retraction Distance": "Distance de retrait", + "Z-Probe": "", + "Apply tool length offset": "", + "Run Z-Probe": "Lancer le palpage en Z", + "Spindle Speed": "Vitesse de broche", + "RPM": "", + "Queue Flush (%)": "", + "Kill Job (^d)": "", + "Clear Alarm ($clear)": "", + "Show System Settings": "", + "Show All Settings": "", + "List Self Tests": "", + "Power Management": "", + "Enable Motors": "", + "Disable Motors": "", + "Motor {{n}}": "", + "Velocity": "", + "Line": "", + "Path": "", + "G-code not loaded": "", + "Tool Change": "", + "Are you sure you want to resume program execution?": "", + "Click the Resume button to resume program execution.": "", + "Click the Stop button to stop program execution.": "", + "Run a tool change macro to change the tool and adjust the Z-axis offset. Afterwards, click the Resume button to resume program execution.": "", + "Waiting for the target temperature to be reached...": "", + "Work Coordinate System": "Système de coordonnées de travail", + "Enable 3D View": "", + "Disable 3D View": "", + "3D View": "", + "Projection": "", + "Perspective Projection": "", + "Orthographic Projection": "", + "Display G-code Filename": "", + "Hide Coordinate System": "", + "Show Coordinate System": "", + "Hide Grid Line Numbers": "", + "Show Grid Line Numbers": "", + "File folder": "Dossier de fichiers", + "{{extname}} File": "Fichier {{extname}}", + "File": "Fichier", + "3D rendering": "Rendu 3D", + "Zoom In": "", + "Zoom Out": "", + "Move the camera": "", + "Rotate the camera": "", + "Watch Directory": "", + "Date modified": "Modifié le", + "Type": "Type", + "Size": "Taille", + "Load G-code": "", + "Upload G-code": "Charger un fichier G-Code", + "Browse...": "", + "Resume": "", + "Pause": "Pause", + "Webcam": "Webcam", + "Webcam Settings": "Paramètres de la webcam", + "Media Source": "", + "Use a built-in camera or a connected webcam": "", + "Use a M-JPEG stream over HTTP": "", + "Webcam is off": "La webam est éteinte", + "Rotate Left": "", + "Rotate Right": "", + "Flip Horizontally": "", + "Flip Vertically": "", + "Crosshair": "", + "Manual Data Input": "", + "MDI": "", + "Button Width": "", + "Order": "", + "Move Up": "", + "Move Down": "", + "Remove": "Supprimer", + "Waiting for the planner to empty...": "", + "No video devices available": "", + "Choose a video device": "", + "Automatic detection": "", + "Front View": "", + "Move Backward": "", + "Move Forward": "", + "Top View": "", + "Zoom to Fit": "", + "Right Side View": "", + "Left Side View": "", + "Custom range...": "Intervalle personnalisé...", + "Today": "Aujourd'hui", + "Last {{n}} days": "{{n}} derniers jours", + "Apply": "Appliquer", + "Add": "Ajouter", + "Custom Jog Distance (mm)": "", + "Custom Jog Distance (inches)": "", + "Machine Profiles": "", + "No machine profile selected": "", + "Delete machine profile": "", + "Machine Profile": "", + "Limits": "", + "User Accounts": "Comptes utilisateurs", + "New Account": "Nouveau compte", + "Hide Limits": "", + "Show Limits": "", + "WebGL: <1>Enabled": "WebGL: <1>Activé", + "WebGL: <1>Disabled": "WebGL: <1>Désactivé", + "Hide Cutting Tool": "", + "Show Cutting Tool": "", + "Ready to start": "" } diff --git a/src/web/i18n/hu/controller.json b/src/app/i18n/hu/controller.json similarity index 100% rename from src/web/i18n/hu/controller.json rename to src/app/i18n/hu/controller.json diff --git a/src/web/i18n/hu/gcode.json b/src/app/i18n/hu/gcode.json similarity index 100% rename from src/web/i18n/hu/gcode.json rename to src/app/i18n/hu/gcode.json diff --git a/src/app/i18n/hu/resource.json b/src/app/i18n/hu/resource.json old mode 100755 new mode 100644 index df17e72bf..e3f0c1e6d --- a/src/app/i18n/hu/resource.json +++ b/src/app/i18n/hu/resource.json @@ -1,4 +1,533 @@ { - "loading": "Töltés...", - "title": "CNCjs" + "Records: {{from}} - {{to}} / {{total}}": "Rögzítés: {{from}} - {{to}} / {{total}}", + "Records: {{total}}": "Rögzítés: {{total}}", + "{{pageLength}} per page": "{{pageLength}} per lap", + "New update available": "Új Frissítés Érhető el", + "Command succeeded": "Parancs Sikeres", + "Command failed ({{err}})": "Parancs Sikertelen ({{err}})", + "My Account": "Én fiókom", + "Signed in as {{name}}": "Bejelentkezés {{name}}", + "Account": "Felhasználó", + "Sign Out": "Kijelentkezés", + "Options": "Beállítások", + "Command": "Parancs", + "Show notifications": "Értesítések megjelenítése", + "Help": "Segítség", + "Report an issue": "Hibabejelentés", + "Cycle Start": "Folyamat Indítás", + "Feedhold": "Előtolás Megállít", + "Homing": "Alphelyzet", + "Sleep": "Alvás", + "Unlock": "Feloldás", + "Reset": "Reset", + "Authentication failed.": "A hitelesítés sikertelen.", + "Error": "", + "Sign in to {{name}}": "Bejelentkezés a {{name}}-be", + "Username": "Felhasználó", + "Password": "Jelszó", + "Sign In": "Bejelentkezés", + "Forgot your password?": "Elfelejtetted a jelszavad?", + "A web-based interface for CNC milling controller running Grbl, Smoothieware, or TinyG": "Web-alapú felület CNC vezérlő: Grbl, Smoothieware, TinyG", + "Learn more": "További információ", + "Downloads": "Letöltés", + "Checking for updates...": "Frissítések keresése ...", + "A new version of {{name}} is available": "Az új verzió {{name}} már elérhető", + "Version {{version}}": "Verzió {{version}}", + "Latest version": "Legutolsó vezió", + "You already have the newest version of {{name}}": "Már van egy újabb verzió {{name}}", + "New": "Új", + "Account status": "Felhasználó státusz", + "Name": "Név", + "Confirm Password": "Jelszó megerősítése", + "Cancel": "Mégse", + "OK": "OK", + "An unexpected error has occurred.": "Váratlan hiba történt.", + "Loading...": "Töltés...", + "No data to display": "Nincs megjeleníthető adat", + "Enabled": "Engedélyezve", + "Disabled": "Tiltva", + "Date Modified": "Módosítás dátuma", + "Action": "Akció", + "Edit Account": "Felhasználó szerkesztés", + "Delete Account": "Felhasználó törlése", + "Settings": "Beállítások", + "Are you sure you want to delete the account?": "Biztos, hogy törölni szeretné a felasználót?", + "Update": "Frissítés", + "Old Password": "Régi Jelszó", + "Change Password": "Jelszó Csere", + "New Password": "Új Jelszó", + "Commands": "Parancs", + "Title": "Cím", + "and more...": "és több...", + "Delete": "Törlés", + "Are you sure you want to delete this item?": "Biztos, hogy törölni akarod ezt a tételt", + "Exception": "", + "Continue execution when an error is detected in the G-code program": "", + "Enabling this option may cause machine damage if you don't have an Emergency Stop button to prevent a dangerous situation.": "", + "Save Changes": "Változások mentése", + "Events": "Események", + "Event": "Esemény", + "Choose an event": "Válassz egy eseményt", + "Startup (System only)": "", + "Open a serial port (System only)": "", + "Close a serial port (System only)": "", + "G-code: Load": "G-code: betőltés", + "G-code: Unload": "G-code: kitörlés", + "G-code: Start": "G-code: indítás", + "G-code: Stop": "G-code: leállítás", + "G-code: Pause": "G-code: megállítás", + "G-code: Resume": "G-code: folytatás", + "Feed Hold": "Előtolás tartás", + "Run Macro": "Macro futtatás", + "Load Macro": "Macro betöltés", + "Trigger": "Kiváltó", + "Choose an trigger": "Válasz egy kiváltót", + "System": "Rendszer", + "G-code": "G-code", + "Automatically check for updates": "Frissítések automatikus ellenőrzése", + "Language": "Nyelv", + "General": "Álltalános", + "Workspace": "Munkaterület", + "Controller": "", + "About": "Névjegy", + "The account name is already being used. Choose another name.": "A felhasználónév már használatban van. Válasszon másik nevet.", + "Passwords do not match.": "A két jelszó nem eggyezik", + "Import": "", + "Are you sure you want to overwrite the workspace settings?": "", + "Restore Defaults": "Alapértelemzett Visszaállítás", + "Are you sure you want to restore the default settings?": "Biztos, hogy vissza akarja állítani az alapértelmezett beállításokat?", + "Import Error": "", + "Invalid file format.": "", + "Close": "bezár", + "Export": "", + "Click the Continue button to resume execution.": "", + "Stop": "Stop", + "Continue": "", + "Server has stopped working": "", + "A problem caused the server to stop working correctly. Check out the server status and try again.": "", + "Reload": "", + "Fork Widget": "", + "Are you sure you want to fork this widget?": "", + "Remove Widget": "", + "Are you sure you want to remove this widget?": "", + "On": "Be", + "Off": "Ki", + "Visualizer Widget": "Megjelenítés widget", + "This widget visualizes a G-code file and simulates the tool path.": "Ez a widget megjeleníti a G-kód fájlt és szimulálja a szerszám pályáját.", + "Connection Widget": "Csatlakozás Widget", + "This widget lets you establish a connection to a serial port.": "Ez a widget segítségével kapcsolatot hozhat létre a soros porton.", + "Console Widget": "Konzol Widget", + "This widget lets you read and write data to the CNC controller connected to a serial port.": "Ennek a widgetnek segítségével írni és olvasni lehet az adatokat a CNC vezérlőről a soros porton keresztűl.", + "Grbl Widget": "Grbl Widget", + "This widget shows the Grbl state and provides Grbl specific features.": "Ez a widget megmuutatja Grbl sajátosságait és jelenlegi helyzetét, értékeit", + "Marlin Widget": "", + "This widget shows the Marlin state and provides Marlin specific features.": "", + "Smoothie Widget": "Smoothie Widget", + "This widget shows the Smoothie state and provides Smoothie specific features.": "Ez a widget megmuutatja Smoothie sajátosságait és jelenlegi helyzetét, értékeit", + "TinyG Widget": "TinyG Widget", + "This widget shows the TinyG state and provides TinyG specific features.": "Ez a widget megmuutatja TinyG sajátosságait és jelenlegi helyzetét, értékeit", + "Axes Widget": "Tengely Widget", + "This widget shows the XYZ position. It includes jog controls, homing, and axis zeroing.": "Ez a widget XYZ pozícióját mutatja, irányító részeket illetve a nullpont beállítást.", + "G-code Widget": "G-code Widget", + "This widget shows the current status of G-code commands.": " Ez a widget mutatja a G-kód aktuális állapotát.", + "Laser Widget": "Lézer Widget", + "This widget allows you control laser intensity and turn the laser on/off.": "Ez a widget ellenőrzi lézer intenzitását és kapcsolja a lézert be / ki.", + "Macro Widget": "Macro Widget", + "This widget can use macros to automate routine tasks.": "Ez a widget használható makrók automatizálására, rutin feladatokat menthetünk el.", + "Probe Widget": "Próba Widget", + "This widget helps you use a touch plate to set your Z zero offset.": "Ez a widget segít az felületen a Z nulla eltolás beállítani", + "Spindle Widget": "Főorsó Widget", + "This widget provides the spindle control.": "Ez a widget a főorsót vezérli.", + "Custom Widget": "", + "This widget gives you a communication interface for creating your own widget.": "", + "Webcam Widget": "Webcam Widget", + "This widget lets you monitor a webcam.": "Ennek a widgetnek a segítségével webkamerát csatlakoztathatsz.", + "Widgets": "Widgetek", + "M0 Program Pause": "", + "M1 Program Pause": "", + "M2 Program End": "", + "M30 Program End": "", + "M6 Tool Change": "", + "M109 Set Extruder Temperature": "", + "M190 Set Heated Bed Temperature": "", + "Drop G-code file here": "Húzd ide a G-codot", + "Manage Widgets ({{inactiveCount}})": "Widget menedzser ({{inactiveCount}})", + "Collapse All": "", + "Expand All": "", + "Corrupted workspace settings": "", + "The workspace settings have become corrupted or invalid. Click Restore Defaults to restore default settings and continue.": "", + "Download workspace settings": "", + "This field is required.": "Ez a mező nem maradhat üresen", + "Passwords should be equal.": "A jelszavak nem eggyeznek.", + "Work Coordinate System (G54)": "A munka koordináta-rendszer (G54)", + "Work Coordinate System (G55)": "A munka koordináta-rendszer (G55)", + "Work Coordinate System (G56)": "A munka koordináta-rendszer (G56)", + "Work Coordinate System (G57)": "A munka koordináta-rendszer (G57)", + "Work Coordinate System (G58)": "A munka koordináta-rendszer (G58)", + "Work Coordinate System (G59)": "A munka koordináta-rendszer (G59)", + "Go To Work Zero (G0 X0 Y0 Z0)": "Go To Work Zero (G0 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P1 X0 Y0 Z0)": "Zero Out Work Offsets (G10 L20 P1 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P2 X0 Y0 Z0)": "Zero Out Work Offsets (G10 L20 P2 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P3 X0 Y0 Z0)": "Zero Out Work Offsets (G10 L20 P3 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P4 X0 Y0 Z0)": "Zero Out Work Offsets (G10 L20 P4 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P5 X0 Y0 Z0)": "Zero Out Work Offsets (G10 L20 P5 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P6 X0 Y0 Z0)": "Zero Out Work Offsets (G10 L20 P6 X0 Y0 Z0)", + "Temporary Offsets (G92)": "Ideiglenes eltolás (G92)", + "Zero Out Temporary Offsets (G92 X0 Y0 Z0)": "Zero Out Temporary Offsets (G92 X0 Y0 Z0)", + "Un-Zero Out Temporary Offsets (G92.1 X0 Y0 Z0)": "Un-Zero Out Temporary Offsets (G92.1 X0 Y0 Z0)", + "Machine Coordinate System (G53)": "Gépi koordináta-rendszer (G53)", + "Go To Machine Zero (G53 G0 X0 Y0 Z0)": "Menjen a Gépi nullpontra (G53 G0 X0 Y0 Z0)", + "Set Machine Zero (G28.3 X0 Y0 Z0)": "", + "Homing Sequence (G28.2 X0 Y0 Z0)": "", + "Go To Work Zero On X Axis (G0 X0)": "Menjen a munka nullpontra X tengelyen (G0 X0)", + "Zero Out Work X Axis (G10 L20 P1 X0)": "Zero Out Work X Axis (G10 L20 P1 X0)", + "Zero Out Work X Axis (G10 L20 P2 X0)": "Zero Out Work X Axis (G10 L20 P2 X0)", + "Zero Out Work X Axis (G10 L20 P3 X0)": "Zero Out Work X Axis (G10 L20 P3 X0)", + "Zero Out Work X Axis (G10 L20 P4 X0)": "Zero Out Work X Axis (G10 L20 P4 X0)", + "Zero Out Work X Axis (G10 L20 P5 X0)": "Zero Out Work X Axis (G10 L20 P5 X0)", + "Zero Out Work X Axis (G10 L20 P6 X0)": "Zero Out Work X Axis (G10 L20 P6 X0)", + "Zero Out Temporary X Axis (G92 X0)": "Ideiglenesen eltolt X tengely nullpontja (G92 X0)", + "Un-Zero Out Temporary X Axis (G92.1 X0)": "Un-Zero Out Temporary X Axis (G92.1 X0)", + "Go To Machine Zero On X Axis (G53 G0 X0)": "Menjen a gépi nullpontra az X tengelyen (G53 G0 X0)", + "Zero Out Machine X Axis (G28.3 X0)": "", + "Home Machine X Axis (G28.2 X0)": "", + "Go To Work Zero On Y Axis (G0 Y0)": "Menjen a munka nullpontra Y tengelyen (G0 Y0)", + "Zero Out Work Y Axis (G10 L20 P1 Y0)": "Zero Out Work Y Axis (G10 L20 P1 Y0)", + "Zero Out Work Y Axis (G10 L20 P2 Y0)": "Zero Out Work Y Axis (G10 L20 P2 Y0)", + "Zero Out Work Y Axis (G10 L20 P3 Y0)": "Zero Out Work Y Axis (G10 L20 P3 Y0)", + "Zero Out Work Y Axis (G10 L20 P4 Y0)": "Zero Out Work Y Axis (G10 L20 P4 Y0)", + "Zero Out Work Y Axis (G10 L20 P5 Y0)": "Zero Out Work Y Axis (G10 L20 P5 Y0)", + "Zero Out Work Y Axis (G10 L20 P6 Y0)": "Zero Out Work Y Axis (G10 L20 P6 Y0)", + "Zero Out Temporary Y Axis (G92 Y0)": "Ideiglenesen eltolt Y tengely nullpontja (G92 Y0)", + "Un-Zero Out Temporary Y Axis (G92.1 Y0)": "Un-Zero Out Temporary Y Axis (G92.1 Y0)", + "Go To Machine Zero On Y Axis (G53 G0 Y0)": "Menjen a gépi nullpontra az Y tengelyen (G53 G0 Y0)", + "Zero Out Machine Y Axis (G28.3 Y0)": "", + "Home Machine Y Axis (G28.2 Y0)": "", + "Go To Work Zero On Z Axis (G0 Z0)": "Menjen a munka nullpontra Z tengelyen (G0 Z0)", + "Zero Out Work Z Axis (G10 L20 P1 Z0)": "Zero Out Work Z Axis (G10 L20 P1 Z0)", + "Zero Out Work Z Axis (G10 L20 P2 Z0)": "Zero Out Work Z Axis (G10 L20 P2 Z0)", + "Zero Out Work Z Axis (G10 L20 P3 Z0)": "Zero Out Work Z Axis (G10 L20 P3 Z0)", + "Zero Out Work Z Axis (G10 L20 P4 Z0)": "Zero Out Work Z Axis (G10 L20 P4 Z0)", + "Zero Out Work Z Axis (G10 L20 P5 Z0)": "Zero Out Work Z Axis (G10 L20 P5 Z0)", + "Zero Out Work Z Axis (G10 L20 P6 Z0)": "Zero Out Work Z Axis (G10 L20 P6 Z0)", + "Zero Out Temporary Z Axis (G92 Z0)": "Ideiglenesen eltolt Z tengely nullpontja (G92 Z0)", + "Un-Zero Out Temporary Z Axis (G92.1 Z0)": "Un-Zero Out Temporary Z Axis (G92.1 Z0)", + "Go To Machine Zero On Z Axis (G53 G0 Z0)": "Menjen a gépi nullpontra az Z tengelyen (G53 G0 Z0)", + "Zero Out Machine Z Axis (G28.3 Z0)": "", + "Home Machine Z Axis (G28.2 Z0)": "", + "Go To Work Zero On A Axis (G0 A0)": "Menjen a munka nullpontra A tengelyen (G0 A0)", + "Zero Out Work A Axis (G10 L20 P1 A0)": "Zero Out Work A Axis (G10 L20 P1 A0)", + "Zero Out Work A Axis (G10 L20 P2 A0)": "Zero Out Work A Axis (G10 L20 P2 A0)", + "Zero Out Work A Axis (G10 L20 P3 A0)": "Zero Out Work A Axis (G10 L20 P3 A0)", + "Zero Out Work A Axis (G10 L20 P4 A0)": "Zero Out Work A Axis (G10 L20 P4 A0)", + "Zero Out Work A Axis (G10 L20 P5 A0)": "Zero Out Work A Axis (G10 L20 P5 A0)", + "Zero Out Work A Axis (G10 L20 P6 A0)": "Zero Out Work A Axis (G10 L20 P6 A0)", + "Zero Out Temporary A Axis (G92 A0)": "Ideiglenesen eltolt A tengely nullpontja (G92 A0)", + "Un-Zero Out Temporary A Axis (G92.1 A0)": "Un-Zero Out Temporary A Axis (G92.1 A0)", + "Go To Machine Zero On A Axis (G53 G0 A0)": "Menjen a gépi nullpontra az A tengelyen(G53 G0 A0)", + "Zero Out Machine A Axis (G28.3 A0)": "", + "Home Machine A Axis (G28.2 A0)": "", + "Go To Work Zero On B Axis (G0 B0)": "", + "Zero Out Work B Axis (G10 L20 P1 B0)": "", + "Zero Out Work B Axis (G10 L20 P2 B0)": "", + "Zero Out Work B Axis (G10 L20 P3 B0)": "", + "Zero Out Work B Axis (G10 L20 P4 B0)": "", + "Zero Out Work B Axis (G10 L20 P5 B0)": "", + "Zero Out Work B Axis (G10 L20 P6 B0)": "", + "Zero Out Temporary B Axis (G92 B0)": "", + "Un-Zero Out Temporary B Axis (G92.1 B0)": "", + "Go To Machine Zero On B Axis (G53 G0 B0)": "", + "Zero Out Machine B Axis (G28.3 B0)": "", + "Home Machine B Axis (G28.2 B0)": "", + "Go To Work Zero On C Axis (G0 C0)": "", + "Zero Out Work C Axis (G10 L20 P1 C0)": "", + "Zero Out Work C Axis (G10 L20 P2 C0)": "", + "Zero Out Work C Axis (G10 L20 P3 C0)": "", + "Zero Out Work C Axis (G10 L20 P4 C0)": "", + "Zero Out Work C Axis (G10 L20 P5 C0)": "", + "Zero Out Work C Axis (G10 L20 P6 C0)": "", + "Zero Out Temporary C Axis (G92 C0)": "", + "Un-Zero Out Temporary C Axis (G92.1 C0)": "", + "Go To Machine Zero On C Axis (G53 G0 C0)": "", + "Zero Out Machine C Axis (G28.3 C0)": "", + "Home Machine C Axis (G28.2 C0)": "", + "mm": "mm", + "in": "inch", + "deg": "szög", + "Zero Out Machine": "", + "Home Machine": "", + "Zero Out Work Offsets": "", + "Set Work Offsets": "", + "Axis": "Tengely", + "Machine Position": "Gép pozíció", + "Work Position": "Munka pozíció", + "Axes": "Tengelyek", + "Keypad jogging": "", + "Edit": "Szerkesztés", + "Expand": "Kinyitás", + "Collapse": "Összecsukás", + "More": "Több", + "Enter Full Screen": "Teljes képernyő", + "Exit Full Screen": "Kilépés a teljesképernyőből", + "Move X- Y+": "Mozgás X- Y+", + "Move Y+": "Mozgás Y+", + "Move X+ Y+": "Mozgás X+ Y+", + "Move Z+": "Mozgás Z+", + "Move X-": "Mozgás X-", + "Move To XY Zero (G0 X0 Y0)": "Mozgás az XY Nullára (G0 X0 Y0)", + "Move X+": "Mozgás X+", + "Move To Z Zero (G0 Z0)": "Mozgás a Z Nullára (G0 Z0)", + "Move X- Y-": "Mozgás X- Y-", + "Move Y-": "Mozgás Y-", + "Move X+ Y-": "Mozgás X+ Y-", + "Move Z-": "Mozgás Z-", + "Units": "Egység", + "G20 (inch)": "", + "G21 (mm)": "", + "Imperial": "", + "Metric": "", + "Right": "Jobb", + "Left": "Bal", + "Up": "Fel", + "Down": "Le", + "Page Up": "Oldal fel", + "Page Down": "Oldal le", + "Right Square Bracket": "", + "Left Square Bracket": "", + "0.1x Move": "0.1x mozgás", + "Alt": "Alt", + "10x Move": "10x mozgás", + "⇧ Shift": "⇧ Shift", + "X-axis": "X-tengely", + "Y-axis": "Y-tengely", + "Z-axis": "Z-tengely", + "A-axis": "A-tengely", + "B-axis": "", + "C-axis": "", + "Custom Commands": "", + "Axes Settings": "Tengelyek beállítása", + "ShuttleXpress": "", + "Feed Rate Range: {{min}} - {{max}} mm/min": "Előtolási határok: {{min}} - {{max}} mm/min", + "Repeat Rate: {{hertz}}Hz": "Ismétlődés mértéke: {{hertz}}Hz", + "60 Times per Second": "60 szor másodpercenként", + "45 Times per Second": "45 szer másodpercenként", + "30 Times per Second": "30 szor másodpercenként", + "15 Times per Second": "15 ször másodpercenként", + "10 Times per Second": "10 szer másodpercenként", + "5 Times per Second": "5 ször másodpercenként", + "2 Times per Second": "2 szer másodpercenként", + "Once Every Second": "Másodpercenként egyszer", + "Distance Overshoot: {{overshoot}}x": "Túllőtt távolság: {{overshoot}}x", + "Manufacturer: {{manufacturer}}": "Gyártó: {{manufacturer}}", + "Port": "Port", + "No ports available": "Nincs elérhető port", + "Choose a port": "Válasszon egy portot", + "Refresh": "Frissítés", + "Baud rate": "Átviteli sebesség", + "Choose a baud rate": "Átviteli sebesség választás", + "Enable hardware flow control": "", + "Connect automatically": "Automatikus csatlakozás", + "Open": "Csatlakozás", + "Error opening serial port '{{- port}}'": "", + "Connection": "Kapcsolat", + "No serial connection": "", + "Connected to {{-port}} with a baud rate of {{baudrate}}": "", + "Console": "Konzol", + "Clear all": "Mindent töröl", + "Select All": "", + "Clear Selection": "", + "URL not configured": "", + "The widget is currently disabled": "", + "Enable": "Engedélyezés", + "Disable": "Tíltás", + "URL": "", + "Min": "Min", + "Max": "Max", + "Dimension": "Dimenzió", + "Sent": "Elküldött", + "Received": "Fogadott", + "Start Time": "Indiítási idő", + "Elapsed Time": "Eltelt idő", + "Finish Time": "Befejezés ideje", + "Remaining Time": "Hátralévő idő", + "Controller State": "Controller állapot", + "Controller Settings": "Controller beállítás", + "Hide": "Elrejtés", + "Show": "Megjelenítés", + "Queue Reports": "Jelentési sor", + "Planner Buffer": "Terv Buffer", + "Receive Buffer": "Vételi Buffer", + "Status Reports": "Státusz jelentés", + "State": "Státusz", + "Feed Rate": "Előtolás", + "Spindle": "Fordulatszám", + "Tool Number": "Szerszám száma", + "Modal Groups": "Modul csoportok", + "Motion": "Mozgás", + "Coordinate": "Koordináta", + "Plane": "Felület", + "Distance": "Távolság", + "Program": "Program", + "Coolant": "Hűtés", + "Status Report (?)": "Állapotjelentés (?)", + "Check G-code Mode ($C)": "G-code ellenőrző mód ($C)", + "Homing ($H)": "Referencia ($H)", + "Kill Alarm Lock ($X)": "Riasztás zárás kikapcsolása ($X)", + "Sleep ($SLP)": "Alvás ($SLP)", + "Help ($)": "Segítség ($)", + "Settings ($$)": "Beállítások ($$)", + "View G-code Parameters ($#)": "G-code Paraméter megtekintése ($#)", + "View G-code Parser State ($G)": "G-code Elemző megtekintése ($G)", + "View Build Info ($I)": "Build Info ($I)", + "View Startup Blocks ($N)": "Indítási Blokkok megtekintése ($N)", + "Laser": "Lézer", + "Laser Intensity Control": "Lézer erősség szabályzás", + "Laser Test": "Lézer teszt", + "Power (%)": "Power (%)", + "Test duration": "Teszt időtartama", + "ms": "ms", + "Maximum value": "Maximális érték", + "Laser Off": "Lézer Kikapcsolás", + "New Macro": "Új macro", + "Macro Name": "Macro neve", + "Macro Commands": "Macro parancs", + "Macro Variables": "Macro változók", + "Edit Macro": "Macro szerkesztés", + "Delete Macro": "Macro törlés", + "Are you sure you want to delete this macro?": "Biztos törölni akarod ezt a macro-t?", + "No": "Nem", + "Yes": "Igen", + "Macro": "Macro", + "Are you sure you want to load this macro?": "Biztos be akarod tölteni ezt a macro-t?", + "No macros": "nincs macro", + "Run": "Futtatás", + "Get Extruder Temperature (M105)": "", + "Get Current Position (M114)": "", + "Get Firmware Version and Capabilities (M115)": "", + "Heater Control": "", + "Extruder": "", + "°C": "", + "Set the target temperature for the extruder": "", + "Heated Bed": "", + "Set the target temperature for the heated bed": "", + "Extruder Temperature": "", + "Heated Bed Temperature": "", + "Extruder Power": "", + "Heated Bed Power": "", + "Probe": "Tapintó", + "mm/min": "mm/min", + "in/min": "in/min", + "Probe Command": "Tapintó parancs", + "G38.2 probe toward workpiece, stop on contact, signal error if failure": "G38.2 tapintó megáll a munadarabál ha valami hiba van.", + "G38.3 probe toward workpiece, stop on contact": "G38.3 tapintó munkadarab felé megáll amikor hozzáér.", + "G38.4 probe away from workpiece, stop on loss of contact, signal error if failure": "G38.4 tapintó eltávolodott a munkadarabtól, kapcsolat elvesztése", + "G38.5 probe away from workpiece, stop on loss of contact": "G38.5 tapintó eltávolodott a munkadarabtól, megállít ha kapcsolat megszünik", + "Probe Depth": "Tapintás mélység", + "Probe Feedrate": "Tapintás Előtolás", + "Touch Plate Thickness": "Tapintási lemez vastagság", + "Retraction Distance": "Visszahuzási távolság", + "Z-Probe": "Z-Probe", + "Apply tool length offset": "", + "Run Z-Probe": "Futtatás Z-tapintó", + "Spindle Speed": "Főorsó sebessége ", + "RPM": "RPM", + "Queue Flush (%)": "Queue Flush (%)", + "Kill Job (^d)": "Munka Kilővés (^d)", + "Clear Alarm ($clear)": "Riasztás törlés ($clear)", + "Show System Settings": "Redszerbeállítások megjelenítése", + "Show All Settings": "Minden beállítás megjelenítése", + "List Self Tests": "Ellenörző teszt lista", + "Power Management": "Energiagazdálkodás", + "Enable Motors": "Motorok engedélyezve", + "Disable Motors": "Motorok tiltva", + "Motor {{n}}": "Motor {{n}}", + "Velocity": "Velocity", + "Line": "Vonal", + "Path": "Pálya", + "G-code not loaded": "G-code nincs betöltve", + "Tool Change": "", + "Are you sure you want to resume program execution?": "", + "Click the Resume button to resume program execution.": "", + "Click the Stop button to stop program execution.": "", + "Run a tool change macro to change the tool and adjust the Z-axis offset. Afterwards, click the Resume button to resume program execution.": "", + "Waiting for the target temperature to be reached...": "", + "Work Coordinate System": "Munka koordináta-rendszer", + "Enable 3D View": "3D megjelenítés BE", + "Disable 3D View": "3D megjelenítés KI", + "3D View": "3D nézet", + "Projection": "Vetítés", + "Perspective Projection": "Perspektív vetítés", + "Orthographic Projection": "Ortografikus vetítzés", + "Display G-code Filename": "Gcode Fájl név", + "Hide Coordinate System": "Koordináta-rendszer Eltüntetése ", + "Show Coordinate System": "Koordináta-rendszer Megjelenítés ", + "Hide Grid Line Numbers": "", + "Show Grid Line Numbers": "", + "File folder": "Fájl Mappa", + "{{extname}} File": "{{extname}} Fájl", + "File": "Fájl", + "3D rendering": "3D renderelés", + "Zoom In": "Közelítés", + "Zoom Out": "Távolítás", + "Move the camera": "Kamera mozgatás", + "Rotate the camera": "Kamera forgatás", + "Watch Directory": "Figyelt Mappa", + "Date modified": "Modosítás Dátuma", + "Type": "Típus", + "Size": "Méret", + "Load G-code": "G-code Betöltés", + "Upload G-code": "G-code Feltöltés", + "Browse...": "Tallózás...", + "Resume": "", + "Pause": "Pause", + "Webcam": "Webkamera", + "Webcam Settings": "Webkamera Beállítása", + "Media Source": "Media Source", + "Use a built-in camera or a connected webcam": "Beépített Kamera vagy Csatlakoztatott Kamera", + "Use a M-JPEG stream over HTTP": "Használj M-JPEG stream egy HTTP címen", + "Webcam is off": "Webkamera Ki Van Kapcsolva", + "Rotate Left": "Forgatás balra", + "Rotate Right": "Forgatás jobbra", + "Flip Horizontally": "Horzontális fordítás", + "Flip Vertically": "Vertikális fordítás", + "Crosshair": "Célkereszt", + "Manual Data Input": "", + "MDI": "", + "Button Width": "", + "Order": "", + "Move Up": "", + "Move Down": "", + "Remove": "", + "Waiting for the planner to empty...": "", + "No video devices available": "", + "Choose a video device": "", + "Automatic detection": "", + "Front View": "", + "Move Backward": "", + "Move Forward": "", + "Top View": "", + "Zoom to Fit": "", + "Right Side View": "", + "Left Side View": "", + "Custom range...": "", + "Today": "", + "Last {{n}} days": "", + "Apply": "", + "Add": "", + "Custom Jog Distance (mm)": "", + "Custom Jog Distance (inches)": "", + "Machine Profiles": "", + "No machine profile selected": "", + "Delete machine profile": "", + "Machine Profile": "", + "Limits": "", + "User Accounts": "Felhasználói fiókok", + "New Account": "Új fiók", + "Hide Limits": "", + "Show Limits": "", + "WebGL: <1>Enabled": "WebGL: <1>Engedélyezve", + "WebGL: <1>Disabled": "WebGL: <1>Tiltva", + "Hide Cutting Tool": "", + "Show Cutting Tool": "", + "Ready to start": "" } diff --git a/src/web/i18n/it/controller.json b/src/app/i18n/it/controller.json similarity index 100% rename from src/web/i18n/it/controller.json rename to src/app/i18n/it/controller.json diff --git a/src/web/i18n/it/gcode.json b/src/app/i18n/it/gcode.json similarity index 100% rename from src/web/i18n/it/gcode.json rename to src/app/i18n/it/gcode.json diff --git a/src/app/i18n/it/resource.json b/src/app/i18n/it/resource.json old mode 100755 new mode 100644 index 65f9c1bfc..151028a95 --- a/src/app/i18n/it/resource.json +++ b/src/app/i18n/it/resource.json @@ -1,4 +1,533 @@ { - "loading": "Caricamento in corso...", - "title": "CNCjs" + "Records: {{from}} - {{to}} / {{total}}": "Record: {{from}} - {{to}} / {{total}}", + "Records: {{total}}": "Record: {{total}}", + "{{pageLength}} per page": "{{pageLength}} per pagina", + "New update available": "Nuovo aggiornamento disponibile", + "Command succeeded": "", + "Command failed ({{err}})": "", + "My Account": "", + "Signed in as {{name}}": "", + "Account": "Account", + "Sign Out": "Esci", + "Options": "Opzioni", + "Command": "", + "Show notifications": "", + "Help": "Guida", + "Report an issue": "Segnala un problema", + "Cycle Start": "Avvia ciclo", + "Feedhold": "Metti in pausa", + "Homing": "Azzera", + "Sleep": "Sospensione", + "Unlock": "Sblocca", + "Reset": "Resetta", + "Authentication failed.": "", + "Error": "", + "Sign in to {{name}}": "", + "Username": "Nome utente", + "Password": "Password", + "Sign In": "Accedi", + "Forgot your password?": "", + "A web-based interface for CNC milling controller running Grbl, Smoothieware, or TinyG": "", + "Learn more": "Ulteriori informazioni", + "Downloads": "Download", + "Checking for updates...": "Ricerca di aggiornamenti in corso...", + "A new version of {{name}} is available": "È disponibile una nuova versione di {{name}}", + "Version {{version}}": "Versione {{version}}", + "Latest version": "Versione più recente", + "You already have the newest version of {{name}}": "Disponi della versione più recente di {{name}}", + "New": "", + "Account status": "", + "Name": "Nome", + "Confirm Password": "", + "Cancel": "Annulla", + "OK": "OK", + "An unexpected error has occurred.": "", + "Loading...": "Caricamento in corso...", + "No data to display": "", + "Enabled": "Attivato", + "Disabled": "Disattivato", + "Date Modified": "", + "Action": "Azione", + "Edit Account": "", + "Delete Account": "", + "Settings": "Impostazioni", + "Are you sure you want to delete the account?": "", + "Update": "", + "Old Password": "", + "Change Password": "", + "New Password": "", + "Commands": "", + "Title": "", + "and more...": "", + "Delete": "Elimina", + "Are you sure you want to delete this item?": "", + "Exception": "", + "Continue execution when an error is detected in the G-code program": "", + "Enabling this option may cause machine damage if you don't have an Emergency Stop button to prevent a dangerous situation.": "", + "Save Changes": "Salva cambiamenti", + "Events": "", + "Event": "", + "Choose an event": "", + "Startup (System only)": "", + "Open a serial port (System only)": "", + "Close a serial port (System only)": "", + "G-code: Load": "", + "G-code: Unload": "", + "G-code: Start": "", + "G-code: Stop": "", + "G-code: Pause": "", + "G-code: Resume": "", + "Feed Hold": "", + "Run Macro": "Avvia Macro", + "Load Macro": "", + "Trigger": "", + "Choose an trigger": "", + "System": "", + "G-code": "", + "Automatically check for updates": "", + "Language": "Lingua", + "General": "Generale", + "Workspace": "Spazio di lavoro", + "Controller": "", + "About": "Riguardo", + "The account name is already being used. Choose another name.": "", + "Passwords do not match.": "Le password non corrispondono.", + "Import": "", + "Are you sure you want to overwrite the workspace settings?": "", + "Restore Defaults": "Ripristina impostazioni predefinite", + "Are you sure you want to restore the default settings?": "Sei sicuro di voler ripristinare i settaggi di default?", + "Import Error": "", + "Invalid file format.": "", + "Close": "Chiudi", + "Export": "", + "Click the Continue button to resume execution.": "", + "Stop": "Stop", + "Continue": "", + "Server has stopped working": "", + "A problem caused the server to stop working correctly. Check out the server status and try again.": "", + "Reload": "", + "Fork Widget": "", + "Are you sure you want to fork this widget?": "", + "Remove Widget": "", + "Are you sure you want to remove this widget?": "", + "On": "Sì", + "Off": "No", + "Visualizer Widget": "Visualizza widget", + "This widget visualizes a G-code file and simulates the tool path.": "Questo widget visualizza un file G-code e simula il percorso utensile.", + "Connection Widget": "Widget connettività", + "This widget lets you establish a connection to a serial port.": "Questo widget permette di stabilire la connessione ad una porta seriale", + "Console Widget": "Widget console", + "This widget lets you read and write data to the CNC controller connected to a serial port.": "Questo widget permette di leggere e scrivere dati al controller CNC collegato a una porta seriale.", + "Grbl Widget": "Widget GRBL", + "This widget shows the Grbl state and provides Grbl specific features.": "Questo widget mostra lo stato di grbl e fornisce a grbl le caratteristiche specifiche.", + "Marlin Widget": "", + "This widget shows the Marlin state and provides Marlin specific features.": "", + "Smoothie Widget": "", + "This widget shows the Smoothie state and provides Smoothie specific features.": "", + "TinyG Widget": "Widget TinyG", + "This widget shows the TinyG state and provides TinyG specific features.": "Questo widget mostra lo stato di TinyG e fornisce a TinyG le caratteristiche specifiche.", + "Axes Widget": "Widget assi", + "This widget shows the XYZ position. It includes jog controls, homing, and axis zeroing.": "Questo widget mostra la posizione di XYZ. Esso include controlli jog , homing , e azzeramento degli assi.", + "G-code Widget": "Widget G-code", + "This widget shows the current status of G-code commands.": "Questo widget mostra lo stato corrente dei comandi G -code.", + "Laser Widget": "", + "This widget allows you control laser intensity and turn the laser on/off.": "", + "Macro Widget": "Widget macro", + "This widget can use macros to automate routine tasks.": "Questo widget può utilizzare le macro per automatizzare le attività di routine.", + "Probe Widget": "Widget sonda", + "This widget helps you use a touch plate to set your Z zero offset.": "Questo widget consente di utilizzare una piastra di tocco per impostare la Z spostamento di origine.", + "Spindle Widget": "Widget elettromandrino", + "This widget provides the spindle control.": "", + "Custom Widget": "", + "This widget gives you a communication interface for creating your own widget.": "", + "Webcam Widget": "Widget webcam", + "This widget lets you monitor a webcam.": "Questo widget consente di monitorare una webcam.", + "Widgets": "Widgets", + "M0 Program Pause": "", + "M1 Program Pause": "", + "M2 Program End": "", + "M30 Program End": "", + "M6 Tool Change": "", + "M109 Set Extruder Temperature": "", + "M190 Set Heated Bed Temperature": "", + "Drop G-code file here": "Trascina qui il G-Code", + "Manage Widgets ({{inactiveCount}})": "Gestisci Widgets ({{inactiveCount}})", + "Collapse All": "", + "Expand All": "", + "Corrupted workspace settings": "", + "The workspace settings have become corrupted or invalid. Click Restore Defaults to restore default settings and continue.": "", + "Download workspace settings": "", + "This field is required.": "Questo campo è richiesto.", + "Passwords should be equal.": "", + "Work Coordinate System (G54)": "Utilizza coordinate di sistema (G54)", + "Work Coordinate System (G55)": "Utilizza coordinate di sistema (G55)", + "Work Coordinate System (G56)": "Utilizza coordinate di sistema (G56)", + "Work Coordinate System (G57)": "Utilizza coordinate di sistema (G57)", + "Work Coordinate System (G58)": "Utilizza coordinate di sistema (G58)", + "Work Coordinate System (G59)": "Utilizza coordinate di sistema (G59)", + "Go To Work Zero (G0 X0 Y0 Z0)": "", + "Zero Out Work Offsets (G10 L20 P1 X0 Y0 Z0)": "", + "Zero Out Work Offsets (G10 L20 P2 X0 Y0 Z0)": "", + "Zero Out Work Offsets (G10 L20 P3 X0 Y0 Z0)": "", + "Zero Out Work Offsets (G10 L20 P4 X0 Y0 Z0)": "", + "Zero Out Work Offsets (G10 L20 P5 X0 Y0 Z0)": "", + "Zero Out Work Offsets (G10 L20 P6 X0 Y0 Z0)": "", + "Temporary Offsets (G92)": "Offsets temporanei (G92)", + "Zero Out Temporary Offsets (G92 X0 Y0 Z0)": "", + "Un-Zero Out Temporary Offsets (G92.1 X0 Y0 Z0)": "", + "Machine Coordinate System (G53)": "Utilizza coordinate macchina (G53)", + "Go To Machine Zero (G53 G0 X0 Y0 Z0)": "", + "Set Machine Zero (G28.3 X0 Y0 Z0)": "", + "Homing Sequence (G28.2 X0 Y0 Z0)": "", + "Go To Work Zero On X Axis (G0 X0)": "Muovi a Zero l'asse di lavoro X (G0 X0)", + "Zero Out Work X Axis (G10 L20 P1 X0)": "", + "Zero Out Work X Axis (G10 L20 P2 X0)": "", + "Zero Out Work X Axis (G10 L20 P3 X0)": "", + "Zero Out Work X Axis (G10 L20 P4 X0)": "", + "Zero Out Work X Axis (G10 L20 P5 X0)": "", + "Zero Out Work X Axis (G10 L20 P6 X0)": "", + "Zero Out Temporary X Axis (G92 X0)": "Azzera temporaneamente asse X (G92 X0)", + "Un-Zero Out Temporary X Axis (G92.1 X0)": "Ripristina da 0 asse X (G92.1 X0)", + "Go To Machine Zero On X Axis (G53 G0 X0)": "Muovi a Zero l'asse macchina X (G53 G0 X0)", + "Zero Out Machine X Axis (G28.3 X0)": "", + "Home Machine X Axis (G28.2 X0)": "", + "Go To Work Zero On Y Axis (G0 Y0)": "Muovi a Zero l'asse di lavoro Y (G0 Y0)", + "Zero Out Work Y Axis (G10 L20 P1 Y0)": "", + "Zero Out Work Y Axis (G10 L20 P2 Y0)": "", + "Zero Out Work Y Axis (G10 L20 P3 Y0)": "", + "Zero Out Work Y Axis (G10 L20 P4 Y0)": "", + "Zero Out Work Y Axis (G10 L20 P5 Y0)": "", + "Zero Out Work Y Axis (G10 L20 P6 Y0)": "", + "Zero Out Temporary Y Axis (G92 Y0)": "", + "Un-Zero Out Temporary Y Axis (G92.1 Y0)": "", + "Go To Machine Zero On Y Axis (G53 G0 Y0)": "Muovi a Zero l'asse macchina Y (G53 G0 Y0)", + "Zero Out Machine Y Axis (G28.3 Y0)": "", + "Home Machine Y Axis (G28.2 Y0)": "", + "Go To Work Zero On Z Axis (G0 Z0)": "Muovi a Zero l'asse di lavoro Z (G0 Z0)", + "Zero Out Work Z Axis (G10 L20 P1 Z0)": "", + "Zero Out Work Z Axis (G10 L20 P2 Z0)": "", + "Zero Out Work Z Axis (G10 L20 P3 Z0)": "", + "Zero Out Work Z Axis (G10 L20 P4 Z0)": "", + "Zero Out Work Z Axis (G10 L20 P5 Z0)": "", + "Zero Out Work Z Axis (G10 L20 P6 Z0)": "", + "Zero Out Temporary Z Axis (G92 Z0)": "", + "Un-Zero Out Temporary Z Axis (G92.1 Z0)": "", + "Go To Machine Zero On Z Axis (G53 G0 Z0)": "Muovi a Zero l'asse macchina Z (G53 G0 Z0)", + "Zero Out Machine Z Axis (G28.3 Z0)": "", + "Home Machine Z Axis (G28.2 Z0)": "", + "Go To Work Zero On A Axis (G0 A0)": "Muovi a Zero l'asse di lavoro A (G0 A0)", + "Zero Out Work A Axis (G10 L20 P1 A0)": "", + "Zero Out Work A Axis (G10 L20 P2 A0)": "", + "Zero Out Work A Axis (G10 L20 P3 A0)": "", + "Zero Out Work A Axis (G10 L20 P4 A0)": "", + "Zero Out Work A Axis (G10 L20 P5 A0)": "", + "Zero Out Work A Axis (G10 L20 P6 A0)": "", + "Zero Out Temporary A Axis (G92 A0)": "", + "Un-Zero Out Temporary A Axis (G92.1 A0)": "", + "Go To Machine Zero On A Axis (G53 G0 A0)": "Muovi a Zero l'asse macchina A (G53 G0 A0)", + "Zero Out Machine A Axis (G28.3 A0)": "", + "Home Machine A Axis (G28.2 A0)": "", + "Go To Work Zero On B Axis (G0 B0)": "", + "Zero Out Work B Axis (G10 L20 P1 B0)": "", + "Zero Out Work B Axis (G10 L20 P2 B0)": "", + "Zero Out Work B Axis (G10 L20 P3 B0)": "", + "Zero Out Work B Axis (G10 L20 P4 B0)": "", + "Zero Out Work B Axis (G10 L20 P5 B0)": "", + "Zero Out Work B Axis (G10 L20 P6 B0)": "", + "Zero Out Temporary B Axis (G92 B0)": "", + "Un-Zero Out Temporary B Axis (G92.1 B0)": "", + "Go To Machine Zero On B Axis (G53 G0 B0)": "", + "Zero Out Machine B Axis (G28.3 B0)": "", + "Home Machine B Axis (G28.2 B0)": "", + "Go To Work Zero On C Axis (G0 C0)": "", + "Zero Out Work C Axis (G10 L20 P1 C0)": "", + "Zero Out Work C Axis (G10 L20 P2 C0)": "", + "Zero Out Work C Axis (G10 L20 P3 C0)": "", + "Zero Out Work C Axis (G10 L20 P4 C0)": "", + "Zero Out Work C Axis (G10 L20 P5 C0)": "", + "Zero Out Work C Axis (G10 L20 P6 C0)": "", + "Zero Out Temporary C Axis (G92 C0)": "", + "Un-Zero Out Temporary C Axis (G92.1 C0)": "", + "Go To Machine Zero On C Axis (G53 G0 C0)": "", + "Zero Out Machine C Axis (G28.3 C0)": "", + "Home Machine C Axis (G28.2 C0)": "", + "mm": "", + "in": "", + "deg": "", + "Zero Out Machine": "", + "Home Machine": "", + "Zero Out Work Offsets": "", + "Set Work Offsets": "", + "Axis": "Asse", + "Machine Position": "Posizione macchina", + "Work Position": "Posizione di lavoro", + "Axes": "Assi", + "Keypad jogging": "", + "Edit": "Modifica", + "Expand": "", + "Collapse": "", + "More": "Altro", + "Enter Full Screen": "", + "Exit Full Screen": "", + "Move X- Y+": "Muovi X- Y+", + "Move Y+": "Muovi Y+", + "Move X+ Y+": "Muovi X+ Y+", + "Move Z+": "Muovi Z+", + "Move X-": "Muovi X-", + "Move To XY Zero (G0 X0 Y0)": "Muovi XY a zero (G0 X0 Y0)", + "Move X+": "Muovi X+", + "Move To Z Zero (G0 Z0)": "Muovi Z a zero (G0 Z0)", + "Move X- Y-": "Muovi X- Y-", + "Move Y-": "Muovi Y-", + "Move X+ Y-": "Muovi X+ Y-", + "Move Z-": "Muovi Z-", + "Units": "Unità", + "G20 (inch)": "", + "G21 (mm)": "", + "Imperial": "", + "Metric": "", + "Right": "Destra", + "Left": "Sinistra", + "Up": "Su", + "Down": "Giù", + "Page Up": "Pagina su", + "Page Down": "Pagina giù", + "Right Square Bracket": "", + "Left Square Bracket": "", + "0.1x Move": "", + "Alt": "", + "10x Move": "", + "⇧ Shift": "", + "X-axis": "", + "Y-axis": "", + "Z-axis": "", + "A-axis": "", + "B-axis": "", + "C-axis": "", + "Custom Commands": "", + "Axes Settings": "Settaggio assi", + "ShuttleXpress": "", + "Feed Rate Range: {{min}} - {{max}} mm/min": "", + "Repeat Rate: {{hertz}}Hz": "", + "60 Times per Second": "60 volte al secondo", + "45 Times per Second": "45 volte al secondo", + "30 Times per Second": "30 volte al secondo", + "15 Times per Second": "15 volte al secondo", + "10 Times per Second": "10 volte al secondo", + "5 Times per Second": "5 volte al secondo", + "2 Times per Second": "2 volte al secondo", + "Once Every Second": "Ogni secondo", + "Distance Overshoot: {{overshoot}}x": "", + "Manufacturer: {{manufacturer}}": "", + "Port": "Porta", + "No ports available": "Nessuna porta disponibile", + "Choose a port": "Scegli una porta", + "Refresh": "Aggiorna", + "Baud rate": "", + "Choose a baud rate": "", + "Enable hardware flow control": "", + "Connect automatically": "Connetti automaticamente", + "Open": "Apri", + "Error opening serial port '{{- port}}'": "", + "Connection": "Connessione", + "No serial connection": "", + "Connected to {{-port}} with a baud rate of {{baudrate}}": "", + "Console": "", + "Clear all": "Cancella", + "Select All": "", + "Clear Selection": "", + "URL not configured": "", + "The widget is currently disabled": "", + "Enable": "Attiva", + "Disable": "Disattiva", + "URL": "", + "Min": "", + "Max": "", + "Dimension": "Dimensione", + "Sent": "Invia", + "Received": "", + "Start Time": "Data di inizio", + "Elapsed Time": "", + "Finish Time": "", + "Remaining Time": "", + "Controller State": "", + "Controller Settings": "", + "Hide": "Nascondi", + "Show": "Mostra", + "Queue Reports": "", + "Planner Buffer": "", + "Receive Buffer": "", + "Status Reports": "Rapporti di stato", + "State": "Stato", + "Feed Rate": "Avanzamento", + "Spindle": "Elettromandrino", + "Tool Number": "Numero utensile", + "Modal Groups": "Gruppi modali", + "Motion": "Movimento", + "Coordinate": "", + "Plane": "Piano", + "Distance": "Distanza", + "Program": "Programma", + "Coolant": "Raffreddamento", + "Status Report (?)": "", + "Check G-code Mode ($C)": "", + "Homing ($H)": "Azzera ($H)", + "Kill Alarm Lock ($X)": "", + "Sleep ($SLP)": "Sospensione ($SLP)", + "Help ($)": "Guida ($)", + "Settings ($$)": "Settaggi ($$)", + "View G-code Parameters ($#)": "Visualizza i parametri G-code ($#)", + "View G-code Parser State ($G)": "", + "View Build Info ($I)": "", + "View Startup Blocks ($N)": "", + "Laser": "", + "Laser Intensity Control": "", + "Laser Test": "", + "Power (%)": "", + "Test duration": "", + "ms": "", + "Maximum value": "", + "Laser Off": "", + "New Macro": "", + "Macro Name": "Nome Macro", + "Macro Commands": "", + "Macro Variables": "", + "Edit Macro": "Modifica Macro", + "Delete Macro": "Cancella Macro", + "Are you sure you want to delete this macro?": "Sei sicuro di voler eliminare questa Macro?", + "No": "No", + "Yes": "Sì", + "Macro": "", + "Are you sure you want to load this macro?": "Sei sicuro di voler caricare questa Macro", + "No macros": "", + "Run": "Esegui", + "Get Extruder Temperature (M105)": "", + "Get Current Position (M114)": "", + "Get Firmware Version and Capabilities (M115)": "", + "Heater Control": "", + "Extruder": "", + "°C": "", + "Set the target temperature for the extruder": "", + "Heated Bed": "", + "Set the target temperature for the heated bed": "", + "Extruder Temperature": "", + "Heated Bed Temperature": "", + "Extruder Power": "", + "Heated Bed Power": "", + "Probe": "Sonda", + "mm/min": "", + "in/min": "", + "Probe Command": "Comandi sonda", + "G38.2 probe toward workpiece, stop on contact, signal error if failure": "G38.2 Sonda verso pezzo, si ferma al contatto , segnala errore se il fallimento", + "G38.3 probe toward workpiece, stop on contact": "G38.3 Sonda verso pezzo, stop a contatto", + "G38.4 probe away from workpiece, stop on loss of contact, signal error if failure": "G38.4 Sonda lontano dal pezzo in lavorazione , si ferma sulla perdita di contatto, segnala errore se il fallimento", + "G38.5 probe away from workpiece, stop on loss of contact": "G38.5 Sonda lontano dal pezzo in lavorazione , si ferma sulla perdita di contatto", + "Probe Depth": "Profondità sonda", + "Probe Feedrate": "Avanzamento sonda", + "Touch Plate Thickness": "Spessore Piastra di tocco", + "Retraction Distance": "Distanza di retrazione", + "Z-Probe": "", + "Apply tool length offset": "", + "Run Z-Probe": "Avvia sonda in Z", + "Spindle Speed": "Velocità rotazione elettromandrino", + "RPM": "", + "Queue Flush (%)": "", + "Kill Job (^d)": "Blocca il lavoro (^d)", + "Clear Alarm ($clear)": "Cancella Alarme ($clear)", + "Show System Settings": "Visualizza i settaggi di sistema", + "Show All Settings": "Visualizza tutti i settaggi", + "List Self Tests": "", + "Power Management": "", + "Enable Motors": "", + "Disable Motors": "", + "Motor {{n}}": "", + "Velocity": "Velocità", + "Line": "", + "Path": "", + "G-code not loaded": "", + "Tool Change": "", + "Are you sure you want to resume program execution?": "", + "Click the Resume button to resume program execution.": "", + "Click the Stop button to stop program execution.": "", + "Run a tool change macro to change the tool and adjust the Z-axis offset. Afterwards, click the Resume button to resume program execution.": "", + "Waiting for the target temperature to be reached...": "", + "Work Coordinate System": "Utilizza coordinate di sistema", + "Enable 3D View": "", + "Disable 3D View": "", + "3D View": "", + "Projection": "", + "Perspective Projection": "", + "Orthographic Projection": "", + "Display G-code Filename": "", + "Hide Coordinate System": "", + "Show Coordinate System": "", + "Hide Grid Line Numbers": "", + "Show Grid Line Numbers": "", + "File folder": "Cartella di file", + "{{extname}} File": "File {{extname}}", + "File": "File", + "3D rendering": "Rendering 3D", + "Zoom In": "", + "Zoom Out": "", + "Move the camera": "", + "Rotate the camera": "", + "Watch Directory": "", + "Date modified": "Ultima modifica", + "Type": "Tipo", + "Size": "Dimensione", + "Load G-code": "", + "Upload G-code": "Carica G-Code", + "Browse...": "", + "Resume": "", + "Pause": "Pausa", + "Webcam": "", + "Webcam Settings": "Impostazioni Webcam", + "Media Source": "", + "Use a built-in camera or a connected webcam": "", + "Use a M-JPEG stream over HTTP": "", + "Webcam is off": "Telecamera spenta", + "Rotate Left": "", + "Rotate Right": "", + "Flip Horizontally": "", + "Flip Vertically": "", + "Crosshair": "", + "Manual Data Input": "", + "MDI": "", + "Button Width": "", + "Order": "", + "Move Up": "", + "Move Down": "", + "Remove": "Rimuovi", + "Waiting for the planner to empty...": "", + "No video devices available": "", + "Choose a video device": "", + "Automatic detection": "", + "Front View": "", + "Move Backward": "", + "Move Forward": "", + "Top View": "", + "Zoom to Fit": "", + "Right Side View": "", + "Left Side View": "", + "Custom range...": "Intervallo personalizzato...", + "Today": "Oggi", + "Last {{n}} days": "Ultimi {{n}} giorni", + "Apply": "Applica", + "Add": "Aggiungi", + "Custom Jog Distance (mm)": "", + "Custom Jog Distance (inches)": "", + "Machine Profiles": "", + "No machine profile selected": "", + "Delete machine profile": "", + "Machine Profile": "", + "Limits": "", + "User Accounts": "Account utente", + "New Account": "Nuovo account", + "Hide Limits": "", + "Show Limits": "", + "WebGL: <1>Enabled": "WebGL: <1>Attivato", + "WebGL: <1>Disabled": "WebGL: <1>Disattivato", + "Hide Cutting Tool": "", + "Show Cutting Tool": "", + "Ready to start": "" } diff --git a/src/web/i18n/ja/controller.json b/src/app/i18n/ja/controller.json similarity index 100% rename from src/web/i18n/ja/controller.json rename to src/app/i18n/ja/controller.json diff --git a/src/web/i18n/ja/gcode.json b/src/app/i18n/ja/gcode.json similarity index 100% rename from src/web/i18n/ja/gcode.json rename to src/app/i18n/ja/gcode.json diff --git a/src/app/i18n/ja/resource.json b/src/app/i18n/ja/resource.json old mode 100755 new mode 100644 index fc1772623..0702592d7 --- a/src/app/i18n/ja/resource.json +++ b/src/app/i18n/ja/resource.json @@ -1,4 +1,533 @@ { - "loading": "ロード中...", - "title": "CNCjs" + "Records: {{from}} - {{to}} / {{total}}": "レコード: {{from}}~{{to}} / {{total}}件", + "Records: {{total}}": "レコード: {{total}}", + "{{pageLength}} per page": "{{pageLength}} 件/ページ", + "New update available": "利用可能な新しいアップデート", + "Command succeeded": "コマンド成功", + "Command failed ({{err}})": "コマンド失敗 ({{err}})", + "My Account": "マイアカウント", + "Signed in as {{name}}": "{{name}} でサインイン", + "Account": "アカウント", + "Sign Out": "サインアウト", + "Options": "オプション", + "Command": "コマンド", + "Show notifications": "通知を表示", + "Help": "ヘルプ", + "Report an issue": "問題を報告する", + "Cycle Start": "サイクル スタート", + "Feedhold": "一時停止", + "Homing": "ホーミング", + "Sleep": "スリープ", + "Unlock": "アンロック", + "Reset": "リセット", + "Authentication failed.": "認証失敗.", + "Error": "エラー", + "Sign in to {{name}}": "{{name}}にサインイン", + "Username": "ユーザ名", + "Password": "パスワード", + "Sign In": "サインイン", + "Forgot your password?": "パスワードを忘れましたか?", + "A web-based interface for CNC milling controller running Grbl, Smoothieware, or TinyG": "", + "Learn more": "詳細情報", + "Downloads": "ダウンロード", + "Checking for updates...": "更新プログラムを確認しています...", + "A new version of {{name}} is available": "新しいバージョンの {{name}} が入手できます", + "Version {{version}}": "バージョン{{version}}", + "Latest version": "最新バージョン", + "You already have the newest version of {{name}}": "すでに最新バージョンの {{name}} を使用しています", + "New": "新規", + "Account status": "アカウントの状態", + "Name": "名前", + "Confirm Password": "パスワードの確認", + "Cancel": "キャンセル", + "OK": "", + "An unexpected error has occurred.": "予期しないエラーが発生しました。", + "Loading...": "ロード中...", + "No data to display": "表示する情報がありません", + "Enabled": "有効", + "Disabled": "無効", + "Date Modified": "変更日時", + "Action": "アクション", + "Edit Account": "アカウントの編集", + "Delete Account": "アカウントの削除", + "Settings": "設定", + "Are you sure you want to delete the account?": "本当にアカウントを削除してもよろしいですか?", + "Update": "アップデート", + "Old Password": "旧パスワード", + "Change Password": "パスワードの変更", + "New Password": "新パスワード", + "Commands": "コマンド", + "Title": "項目", + "and more...": "もっと見る", + "Delete": "削除", + "Are you sure you want to delete this item?": "本当にこの項目を削除しますか?", + "Exception": "例外", + "Continue execution when an error is detected in the G-code program": "Gコードにエラーが検出されても動作を継続する", + "Enabling this option may cause machine damage if you don't have an Emergency Stop button to prevent a dangerous situation.": "このオプションを有効にした場合、危険な状況が発生した場合に緊急停止ボタンがないと、マシンが損傷する可能性があります。", + "Save Changes": "変更を保存", + "Events": "イベント", + "Event": "イベント", + "Choose an event": "イベントを選択", + "Startup (System only)": "スタートアップ (System only)", + "Open a serial port (System only)": "シリアルポートを開く (System only)", + "Close a serial port (System only)": "シリアルポートを閉じる (System only)", + "G-code: Load": "G-code: ロード", + "G-code: Unload": "G-code: アンロード", + "G-code: Start": "G-code: スタート", + "G-code: Stop": "G-code: ストップ", + "G-code: Pause": "G-code: 一時停止", + "G-code: Resume": "G-code: 再開", + "Feed Hold": "フィードホールド", + "Run Macro": "マクロを実行", + "Load Macro": "マクロをロード", + "Trigger": "トリガー", + "Choose an trigger": "トリガーを選択", + "System": "システム", + "G-code": "Gコード", + "Automatically check for updates": "アップデートを自動で確認", + "Language": "言語", + "General": "一般", + "Workspace": "ワークスペース", + "Controller": "コントローラ", + "About": "概要", + "The account name is already being used. Choose another name.": "そのサインイン名は既に使用されています。ほかの名前を使用してください。", + "Passwords do not match.": "パスワードが違います。", + "Import": "インポート", + "Are you sure you want to overwrite the workspace settings?": "本当にワークスペースの設定を上書きしますか?", + "Restore Defaults": "初期設定を復元", + "Are you sure you want to restore the default settings?": "本当に初期設定を復元しますか?", + "Import Error": "インポートエラー", + "Invalid file format.": "無効なファイル形式", + "Close": "閉じる", + "Export": "エクスポート", + "Click the Continue button to resume execution.": "動作を再開するには、続行ボタンをクリックします。", + "Stop": "停止", + "Continue": "続行", + "Server has stopped working": "サーバーは動作を停止しています。", + "A problem caused the server to stop working correctly. Check out the server status and try again.": "サーバーに問題が発生しているために動作を停止しています。サーバーの状態を確認しやり直してください。", + "Reload": "リロード", + "Fork Widget": "ウィジェットの複製", + "Are you sure you want to fork this widget?": "本当にウィジェットを複製しますか?", + "Remove Widget": "ウィジェットの削除", + "Are you sure you want to remove this widget?": "本当にウィジェットを削除しますか?", + "On": "オン", + "Off": "オフ", + "Visualizer Widget": "視覚化 ウィジェット", + "This widget visualizes a G-code file and simulates the tool path.": "このウィジェットはGコードファイルを視覚化し、ツールパスをシミュレートします。", + "Connection Widget": "接続 ウィジェット", + "This widget lets you establish a connection to a serial port.": "このウィジェットを使用すると、シリアルポートへ接続できます。", + "Console Widget": "コンソール ウィジェット", + "This widget lets you read and write data to the CNC controller connected to a serial port.": "このウィジェットを使用すると、シリアルポートに接続されたCNCコントローラにデータを送受信することができます。", + "Grbl Widget": "Grbl ウィジェット", + "This widget shows the Grbl state and provides Grbl specific features.": "このウィジェットはGrblの状態を表示し、Grbl固有の機能を提供します。", + "Marlin Widget": "Marlin ウィジェット", + "This widget shows the Marlin state and provides Marlin specific features.": "このウィジェットはMarlinの状態を表示し、Marlin固有の機能を提供します。", + "Smoothie Widget": "Smoothie ウィジェット", + "This widget shows the Smoothie state and provides Smoothie specific features.": "このウィジェットは Smoothie boardの状態やSmoothie固有の機能を提供します。", + "TinyG Widget": "TinyG ウィジェット", + "This widget shows the TinyG state and provides TinyG specific features.": "このウィジェットは、TinyGの状態を示し、TinyG固有の機能を提供します。", + "Axes Widget": "軸制御 ウィジェット", + "This widget shows the XYZ position. It includes jog controls, homing, and axis zeroing.": "このウィジェットはXYZの位置を表示します。これには、ジョグコントロール、原点復帰、および軸のゼロ調整が含まれます。", + "G-code Widget": "G-code ウィジェット", + "This widget shows the current status of G-code commands.": "このウィジェットは、Gコードコマンドの現在の状態を表示します。", + "Laser Widget": "レーザー ウィジェット", + "This widget allows you control laser intensity and turn the laser on/off.": "このウィジェットはレーザー強度やレーザーのON/OFF制御を提供します。", + "Macro Widget": "マクロ ウィジェット", + "This widget can use macros to automate routine tasks.": "このウィジェットは、マクロを使用してルーチンのタスクを自動化できます。", + "Probe Widget": "プローブ ウィジェット", + "This widget helps you use a touch plate to set your Z zero offset.": "このウィジェットは、タッチプレートを使用してZ軸のゼロオフセットを設定するのに役立ちます。", + "Spindle Widget": "スピンドル ウィジェット", + "This widget provides the spindle control.": "このウィジェットはスピンドル制御を提供します。", + "Custom Widget": "カスタム ウィジェット", + "This widget gives you a communication interface for creating your own widget.": "このウィジェットは自分自身で作成したウィジェットを表示します。", + "Webcam Widget": "ウェブカム ウィジェット", + "This widget lets you monitor a webcam.": "このウィジェットを使用すると、ウェブカメラを監視できます。", + "Widgets": "ウィジェット", + "M0 Program Pause": "M0 プログラムストップ", + "M1 Program Pause": "M1 オプショナルストップ", + "M2 Program End": "M2 プログラムエンド", + "M30 Program End": "M30 プログラムエンド", + "M6 Tool Change": "M6 工具交換", + "M109 Set Extruder Temperature": "M109 エクストルーダー温度設定", + "M190 Set Heated Bed Temperature": "M190 ヒーテッドベッド温度設定", + "Drop G-code file here": "G-codeをここにドラッグ&ドロップ", + "Manage Widgets ({{inactiveCount}})": "ウィジェットの管理 ({{inactiveCount}})", + "Collapse All": "すべて折りたたむ", + "Expand All": "すべて展開する", + "Corrupted workspace settings": "ワークスペースの設定が壊れています", + "The workspace settings have become corrupted or invalid. Click Restore Defaults to restore default settings and continue.": "ワークスペースの設定が壊れているか無効になっています。 デフォルト設定を復元して続行するには、[デフォルトに戻す]をクリックします。", + "Download workspace settings": "ワークスペースの設定をダウンロード", + "This field is required.": "この情報は必須です。", + "Passwords should be equal.": "パスワードが一致する必要があります。", + "Work Coordinate System (G54)": "ワーク座標系P1 (G54)", + "Work Coordinate System (G55)": "ワーク座標系P2 (G55)", + "Work Coordinate System (G56)": "ワーク座標系P3 (G56)", + "Work Coordinate System (G57)": "ワーク座標系P4 (G57)", + "Work Coordinate System (G58)": "ワーク座標系P5 (G58)", + "Work Coordinate System (G59)": "ワーク座標系P6 (G59)", + "Go To Work Zero (G0 X0 Y0 Z0)": "ワーク原点に移動 (G0 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P1 X0 Y0 Z0)": "ワークオフセットP1をゼロにする (G10 L20 P1 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P2 X0 Y0 Z0)": "ワークオフセットP2をゼロにする (G10 L20 P2 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P3 X0 Y0 Z0)": "ワークオフセットP3をゼロにする (G10 L20 P3 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P4 X0 Y0 Z0)": "ワークオフセットP4をゼロにする (G10 L20 P5 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P5 X0 Y0 Z0)": "ワークオフセットP5をゼロにする (G10 L20 P5 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P6 X0 Y0 Z0)": "ワークオフセットP6をゼロにする (G10 L20 P6 X0 Y0 Z0)", + "Temporary Offsets (G92)": "テンポラリ オフセット (G92)", + "Zero Out Temporary Offsets (G92 X0 Y0 Z0)": "オフセットのみをゼロにする", + "Un-Zero Out Temporary Offsets (G92.1 X0 Y0 Z0)": "オフセットをすべてゼロにする", + "Machine Coordinate System (G53)": "機械座標系 (G53)", + "Go To Machine Zero (G53 G0 X0 Y0 Z0)": "機械原点に移動 (G53 G0 X0 Y0 Z0)", + "Set Machine Zero (G28.3 X0 Y0 Z0)": "絶対座標を0に設定 (G28.3 X0 Y0 Z0)", + "Homing Sequence (G28.2 X0 Y0 Z0)": "ホーミングシーケンス (G28.2 X0 Y0 Z0)", + "Go To Work Zero On X Axis (G0 X0)": "X軸をワーク原点へ移動 (G0 X0)", + "Zero Out Work X Axis (G10 L20 P1 X0)": "X軸のP1をゼロにする (G10 L20 P1 X0)", + "Zero Out Work X Axis (G10 L20 P2 X0)": "X軸のP2をゼロにする (G10 L20 P2 X0)", + "Zero Out Work X Axis (G10 L20 P3 X0)": "X軸のP3をゼロにする (G10 L20 P3 X0)", + "Zero Out Work X Axis (G10 L20 P4 X0)": "X軸のP4をゼロにする (G10 L20 P4 X0)", + "Zero Out Work X Axis (G10 L20 P5 X0)": "X軸のP5をゼロにする (G10 L20 P5 X0)", + "Zero Out Work X Axis (G10 L20 P6 X0)": "X軸のP6をゼロにする (G10 L20 P6 X0)", + "Zero Out Temporary X Axis (G92 X0)": "X軸を一時的に0にする (G92 X0)", + "Un-Zero Out Temporary X Axis (G92.1 X0)": "X軸を0から戻す (G92.1 X0)", + "Go To Machine Zero On X Axis (G53 G0 X0)": "X軸を機械原点へ移動 (G53 G0 X0)", + "Zero Out Machine X Axis (G28.3 X0)": "X軸をゼロにする (G28.3 X0)", + "Home Machine X Axis (G28.2 X0)": "X軸をホームに戻す (G28.2 X0)", + "Go To Work Zero On Y Axis (G0 Y0)": "Y軸をワーク原点へ移動 (G0 Y0)", + "Zero Out Work Y Axis (G10 L20 P1 Y0)": "Y軸のP1をゼロにする (G10 L20 P1 Y0)", + "Zero Out Work Y Axis (G10 L20 P2 Y0)": "Y軸のP2をゼロにする (G10 L20 P2 Y0)", + "Zero Out Work Y Axis (G10 L20 P3 Y0)": "Y軸のP3をゼロにする (G10 L20 P3 Y0)", + "Zero Out Work Y Axis (G10 L20 P4 Y0)": "Y軸のP4をゼロにする (G10 L20 P4 Y0)", + "Zero Out Work Y Axis (G10 L20 P5 Y0)": "Y軸のP5をゼロにする (G10 L20 P5 Y0)", + "Zero Out Work Y Axis (G10 L20 P6 Y0)": "Y軸のP6をゼロにする (G10 L20 P6 Y0)", + "Zero Out Temporary Y Axis (G92 Y0)": "Y軸を一時的に0にする (G92 Y0)", + "Un-Zero Out Temporary Y Axis (G92.1 Y0)": "Y軸を0から戻す (G92.1 Y0)", + "Go To Machine Zero On Y Axis (G53 G0 Y0)": "Y軸を機械原点へ移動 (G53 G0 Y0)", + "Zero Out Machine Y Axis (G28.3 Y0)": "Y軸をゼロにする (G28.3 Y0)", + "Home Machine Y Axis (G28.2 Y0)": "Y軸をホームに戻す (G28.2 Y0)", + "Go To Work Zero On Z Axis (G0 Z0)": "Z軸をワーク原点へ移動 (G0 Z0)", + "Zero Out Work Z Axis (G10 L20 P1 Z0)": "Z軸のP1をゼロにする (G10 L20 P1 Z0)", + "Zero Out Work Z Axis (G10 L20 P2 Z0)": "Z軸のP2をゼロにする (G10 L20 P2 Z0)", + "Zero Out Work Z Axis (G10 L20 P3 Z0)": "Z軸のP3をゼロにする (G10 L20 P3 Z0)", + "Zero Out Work Z Axis (G10 L20 P4 Z0)": "Z軸のP4をゼロにする (G10 L20 P4 Z0)", + "Zero Out Work Z Axis (G10 L20 P5 Z0)": "Z軸のP5をゼロにする (G10 L20 P5 Z0)", + "Zero Out Work Z Axis (G10 L20 P6 Z0)": "Z軸のP6をゼロにする (G10 L20 P6 Z0)", + "Zero Out Temporary Z Axis (G92 Z0)": "Z軸を一時的に0にする (G92 Z0)", + "Un-Zero Out Temporary Z Axis (G92.1 Z0)": "Z軸を0から戻す (G92.1 Z0)", + "Go To Machine Zero On Z Axis (G53 G0 Z0)": "Z軸を機械原点へ移動 (G53 G0 Z0)", + "Zero Out Machine Z Axis (G28.3 Z0)": "Z軸をゼロにする (G28.3 Z0)", + "Home Machine Z Axis (G28.2 Z0)": "Z軸をホームに戻す (G28.2 Z0)", + "Go To Work Zero On A Axis (G0 A0)": "A軸をワーク原点へ移動 (G0 A0)", + "Zero Out Work A Axis (G10 L20 P1 A0)": "A軸のP1をゼロにする (G10 L20 P1 A0)", + "Zero Out Work A Axis (G10 L20 P2 A0)": "A軸のP2をゼロにする (G10 L20 P2 A0)", + "Zero Out Work A Axis (G10 L20 P3 A0)": "A軸のP3をゼロにする (G10 L20 P3 A0)", + "Zero Out Work A Axis (G10 L20 P4 A0)": "A軸のP4をゼロにする (G10 L20 P4 A0)", + "Zero Out Work A Axis (G10 L20 P5 A0)": "A軸のP5をゼロにする (G10 L20 P5 A0)", + "Zero Out Work A Axis (G10 L20 P6 A0)": "A軸のP6をゼロにする (G10 L20 P6 A0)", + "Zero Out Temporary A Axis (G92 A0)": "A軸を一時的に0にする (G92 A0)", + "Un-Zero Out Temporary A Axis (G92.1 A0)": "A軸を0から戻す (G92.1 A0)", + "Go To Machine Zero On A Axis (G53 G0 A0)": "A軸を機械原点へ移動 (G53 G0 A0)", + "Zero Out Machine A Axis (G28.3 A0)": "A軸をゼロにする (G28.3 A0)", + "Home Machine A Axis (G28.2 A0)": "A軸をホームに戻す (G28.2 A0)", + "Go To Work Zero On B Axis (G0 B0)": "", + "Zero Out Work B Axis (G10 L20 P1 B0)": "", + "Zero Out Work B Axis (G10 L20 P2 B0)": "", + "Zero Out Work B Axis (G10 L20 P3 B0)": "", + "Zero Out Work B Axis (G10 L20 P4 B0)": "", + "Zero Out Work B Axis (G10 L20 P5 B0)": "", + "Zero Out Work B Axis (G10 L20 P6 B0)": "", + "Zero Out Temporary B Axis (G92 B0)": "", + "Un-Zero Out Temporary B Axis (G92.1 B0)": "", + "Go To Machine Zero On B Axis (G53 G0 B0)": "", + "Zero Out Machine B Axis (G28.3 B0)": "", + "Home Machine B Axis (G28.2 B0)": "", + "Go To Work Zero On C Axis (G0 C0)": "", + "Zero Out Work C Axis (G10 L20 P1 C0)": "", + "Zero Out Work C Axis (G10 L20 P2 C0)": "", + "Zero Out Work C Axis (G10 L20 P3 C0)": "", + "Zero Out Work C Axis (G10 L20 P4 C0)": "", + "Zero Out Work C Axis (G10 L20 P5 C0)": "", + "Zero Out Work C Axis (G10 L20 P6 C0)": "", + "Zero Out Temporary C Axis (G92 C0)": "", + "Un-Zero Out Temporary C Axis (G92.1 C0)": "", + "Go To Machine Zero On C Axis (G53 G0 C0)": "", + "Zero Out Machine C Axis (G28.3 C0)": "", + "Home Machine C Axis (G28.2 C0)": "", + "mm": "mm", + "in": "in", + "deg": "度", + "Zero Out Machine": "", + "Home Machine": "", + "Zero Out Work Offsets": "", + "Set Work Offsets": "", + "Axis": "軸", + "Machine Position": "機械位置", + "Work Position": "ワーク位置", + "Axes": "軸制御", + "Keypad jogging": "キーパッドジョグ", + "Edit": "設定変更", + "Expand": "展開する", + "Collapse": "折りたたむ", + "More": "その他", + "Enter Full Screen": "フルスクリーンに切り替える", + "Exit Full Screen": "フルスクリーンをやめる", + "Move X- Y+": "移動 X- Y+", + "Move Y+": "移動 Y+", + "Move X+ Y+": "移動 X+ Y+", + "Move Z+": "移動 Z+", + "Move X-": "移動 X-", + "Move To XY Zero (G0 X0 Y0)": "XY原点に移動 (G0 X0 Y0)", + "Move X+": "移動 X+", + "Move To Z Zero (G0 Z0)": "Z原点に移動 (G0 Z0)", + "Move X- Y-": "移動 X- Y-", + "Move Y-": "移動 Y-", + "Move X+ Y-": "移動 X+ Y-", + "Move Z-": "移動 Z-", + "Units": "単位", + "G20 (inch)": "", + "G21 (mm)": "", + "Imperial": "", + "Metric": "", + "Right": "", + "Left": "", + "Up": "", + "Down": "", + "Page Up": "", + "Page Down": "", + "Right Square Bracket": "", + "Left Square Bracket": "", + "0.1x Move": "0.1x 移動", + "Alt": "", + "10x Move": "10x移動", + "⇧ Shift": "", + "X-axis": "X軸", + "Y-axis": "Y軸", + "Z-axis": "Z軸", + "A-axis": "A軸", + "B-axis": "", + "C-axis": "", + "Custom Commands": "カスタムコマンド", + "Axes Settings": "軸の設定", + "ShuttleXpress": "シャトルエクスプレス(ShuttleXpress)", + "Feed Rate Range: {{min}} - {{max}} mm/min": "", + "Repeat Rate: {{hertz}}Hz": "繰り返しレート: {{hertz}}Hz", + "60 Times per Second": "60回/秒", + "45 Times per Second": "45回/秒", + "30 Times per Second": "30回/秒", + "15 Times per Second": "15回/秒", + "10 Times per Second": "10回/秒", + "5 Times per Second": "5回/秒", + "2 Times per Second": "2回/秒", + "Once Every Second": "1回/秒", + "Distance Overshoot: {{overshoot}}x": "オーバーシュート距離: {{overshoot}}x", + "Manufacturer: {{manufacturer}}": "メーカー: {{manufacturer}}", + "Port": "ポート", + "No ports available": "ポートが見つかりません", + "Choose a port": "ポートを選択", + "Refresh": "表示更新", + "Baud rate": "ボーレート", + "Choose a baud rate": "ボーレートを選択", + "Enable hardware flow control": "", + "Connect automatically": "自動的に接続", + "Open": "開く", + "Error opening serial port '{{- port}}'": "シリアルポート '{{- port}}' を開くのに失敗しました", + "Connection": "接続", + "No serial connection": "シリアル接続がありません。", + "Connected to {{-port}} with a baud rate of {{baudrate}}": "{{-port}} にボーレート {{baudrate}} で接続中", + "Console": "コンソール", + "Clear all": "全消去", + "Select All": "", + "Clear Selection": "", + "URL not configured": "URLが設定されていません", + "The widget is currently disabled": "ウィジェットは現在無効になっています", + "Enable": "有効", + "Disable": "無効", + "URL": "URL", + "Min": "最小", + "Max": "最大", + "Dimension": "寸法", + "Sent": "送信済み", + "Received": "受信済み", + "Start Time": "開始時間", + "Elapsed Time": "経過時間", + "Finish Time": "終了時間", + "Remaining Time": "残り時間", + "Controller State": "コントローラーの状態", + "Controller Settings": "コントローラーの設定", + "Hide": "非表示", + "Show": "表示", + "Queue Reports": "キューレポート", + "Planner Buffer": "プランナーバッファ", + "Receive Buffer": "受信バッファ", + "Status Reports": "状態表示", + "State": "状態", + "Feed Rate": "送り速度", + "Spindle": "スピンドル", + "Tool Number": "ツール番号", + "Modal Groups": "モーダルグループ", + "Motion": "動作", + "Coordinate": "座標", + "Plane": "平面", + "Distance": "距離", + "Program": "プログラム", + "Coolant": "冷却液", + "Status Report (?)": "", + "Check G-code Mode ($C)": "Gコードモードを確認 ($C)", + "Homing ($H)": "ホーミング ($H)", + "Kill Alarm Lock ($X)": "アラームロックを停止 ($X)", + "Sleep ($SLP)": "スリープ ($SLP)", + "Help ($)": "ヘルプ ($)", + "Settings ($$)": "設定 ($$)", + "View G-code Parameters ($#)": "Gコードパラメータを表示 ($#)", + "View G-code Parser State ($G)": "Gコード解釈状態 ($G)", + "View Build Info ($I)": "ビルド情報を表示する ($I)", + "View Startup Blocks ($N)": "スタートアップブロックの表示 ($N)", + "Laser": "レーザー", + "Laser Intensity Control": "レーザー強度制御", + "Laser Test": "レーザーテスト", + "Power (%)": "パワー (%)", + "Test duration": "テスト時間", + "ms": "", + "Maximum value": "最大値", + "Laser Off": "レーザーオフ", + "New Macro": "新マクロ", + "Macro Name": "マクロ名", + "Macro Commands": "マクロコマンド", + "Macro Variables": "マクロ変数", + "Edit Macro": "マクロの編集", + "Delete Macro": "マクロの削除", + "Are you sure you want to delete this macro?": "本当にこのマクロを削除しますか?", + "No": "いいえ", + "Yes": "はい", + "Macro": "マクロ", + "Are you sure you want to load this macro?": "本当にこのマクロを読み込みますか?", + "No macros": "マクロがありません", + "Run": "実行", + "Get Extruder Temperature (M105)": "エクストルーダーの温度を取得する(M105)", + "Get Current Position (M114)": "現在の位置を取得する(M114)", + "Get Firmware Version and Capabilities (M115)": "ファームウェアのバージョンと機能を取得する(M115)", + "Heater Control": "ヒーターコントロール", + "Extruder": "エクストルーダー", + "°C": "", + "Set the target temperature for the extruder": "エクストルーダーの目標温度を設定", + "Heated Bed": "ヒーテッドベッド", + "Set the target temperature for the heated bed": "ヒーテッドベッドの目標温度を設定", + "Extruder Temperature": "エクストルーダー温度", + "Heated Bed Temperature": "ヒーテッドベッド温度", + "Extruder Power": "エクストルーダー電源", + "Heated Bed Power": "ヒーテッドベッド電源", + "Probe": "プローブ", + "mm/min": "mm/min", + "in/min": "in/min", + "Probe Command": "プローブコマンド", + "G38.2 probe toward workpiece, stop on contact, signal error if failure": "G38.2 プローブをワークピースに近づけ接触したら停止、失敗した場合は信号エラー", + "G38.3 probe toward workpiece, stop on contact": "G38.3 プローブをワークピースに近づけ接触したら停止", + "G38.4 probe away from workpiece, stop on loss of contact, signal error if failure": "G38.4 プローブをワークピースから離し、接触の喪失で停止、失敗した場合は信号エラー", + "G38.5 probe away from workpiece, stop on loss of contact": "G38.5 プローブをワークピースから離し、接触の喪失で停止", + "Probe Depth": "プローブの深さ", + "Probe Feedrate": "プローブの送り速度", + "Touch Plate Thickness": "タッチプレートの厚さ", + "Retraction Distance": "リトラクションの距離", + "Z-Probe": "Zプローブ", + "Apply tool length offset": "工具長のオフセットを適用する", + "Run Z-Probe": "Zプローブの実行", + "Spindle Speed": "スピンドルの速度", + "RPM": "", + "Queue Flush (%)": "キューを流す (%)", + "Kill Job (^d)": "ジョブ削除 (^d)", + "Clear Alarm ($clear)": "アラームクリア ($clear)", + "Show System Settings": "システム設定の表示", + "Show All Settings": "すべての設定を表示", + "List Self Tests": "セルフテストの一覧", + "Power Management": "電源管理", + "Enable Motors": "モーターを有効", + "Disable Motors": "モーターを無効", + "Motor {{n}}": "モーター {{n}}", + "Velocity": "速さ", + "Line": "線", + "Path": "パス", + "G-code not loaded": "Gコードが読み込まれていません", + "Tool Change": "工具交換", + "Are you sure you want to resume program execution?": "本当にプログラムの実行を再開しますか?", + "Click the Resume button to resume program execution.": "プログラムの実行を再開するには、[再開]ボタンをクリックします。", + "Click the Stop button to stop program execution.": "プログラムの実行を停止するには、[停止]ボタンをクリックします。", + "Run a tool change macro to change the tool and adjust the Z-axis offset. Afterwards, click the Resume button to resume program execution.": "工具交換マクロを実行して工具を変更し、Z軸のオフセットを調整します。 その後、[再開]ボタンをクリックしてプログラムの実行を再開します。", + "Waiting for the target temperature to be reached...": "目標温度に到達するのを待機しています...", + "Work Coordinate System": "ワーク座標系", + "Enable 3D View": "3Dビューを有効化する", + "Disable 3D View": "3Dビューを無効化する", + "3D View": "3D表示", + "Projection": "投影方法", + "Perspective Projection": "透視投影", + "Orthographic Projection": "直交射影", + "Display G-code Filename": "Gコードのファイル名を表示", + "Hide Coordinate System": "座標系を非表示にする", + "Show Coordinate System": "座標系を表示する", + "Hide Grid Line Numbers": "罫線のメモリを非表示", + "Show Grid Line Numbers": "罫線のメモリを表示", + "File folder": "ファイル フォルダー", + "{{extname}} File": "{{extname}} ファイル", + "File": "ファイル", + "3D rendering": "3D レンダリング", + "Zoom In": "拡大", + "Zoom Out": "縮小", + "Move the camera": "カメラを移動", + "Rotate the camera": "カメラを回転", + "Watch Directory": "参照ディレクトリ", + "Date modified": "更新日時", + "Type": "種類", + "Size": "サイズ", + "Load G-code": "G-codeの読み込み", + "Upload G-code": "G-codeのアップロード", + "Browse...": "参照", + "Resume": "復帰", + "Pause": "一時停止", + "Webcam": "ウェブカメラ", + "Webcam Settings": "ウェブカメラの設定", + "Media Source": "映像ソース", + "Use a built-in camera or a connected webcam": "組み込まれたカメラモジュールか直接接続されたウェブカメラを使う", + "Use a M-JPEG stream over HTTP": "M-JPEG stream over HTTPを使う", + "Webcam is off": "ウェブカメラはオフ", + "Rotate Left": "左に回転", + "Rotate Right": "右に回転", + "Flip Horizontally": "水平に反転", + "Flip Vertically": "垂直に反転", + "Crosshair": "十字照準", + "Manual Data Input": "", + "MDI": "", + "Button Width": "", + "Order": "", + "Move Up": "", + "Move Down": "", + "Remove": "削除", + "Waiting for the planner to empty...": "", + "No video devices available": "", + "Choose a video device": "", + "Automatic detection": "", + "Front View": "", + "Move Backward": "", + "Move Forward": "", + "Top View": "", + "Zoom to Fit": "", + "Right Side View": "", + "Left Side View": "", + "Custom range...": "カスタム範囲...", + "Today": "今日", + "Last {{n}} days": "過去{{n}}日間", + "Apply": "適用", + "Add": "追加", + "Custom Jog Distance (mm)": "", + "Custom Jog Distance (inches)": "", + "Machine Profiles": "", + "No machine profile selected": "", + "Delete machine profile": "", + "Machine Profile": "", + "Limits": "", + "User Accounts": "ユーザアカウント", + "New Account": "新規アカウント", + "Hide Limits": "", + "Show Limits": "", + "WebGL: <1>Enabled": "WebGL: <1>有効", + "WebGL: <1>Disabled": "WebGL: <1>無効", + "Hide Cutting Tool": "", + "Show Cutting Tool": "", + "Ready to start": "" } diff --git a/src/web/i18n/nl/controller.json b/src/app/i18n/nl/controller.json similarity index 100% rename from src/web/i18n/nl/controller.json rename to src/app/i18n/nl/controller.json diff --git a/src/web/i18n/nl/gcode.json b/src/app/i18n/nl/gcode.json similarity index 100% rename from src/web/i18n/nl/gcode.json rename to src/app/i18n/nl/gcode.json diff --git a/src/app/i18n/nl/resource.json b/src/app/i18n/nl/resource.json old mode 100755 new mode 100644 index 615421bae..d69e7ffdb --- a/src/app/i18n/nl/resource.json +++ b/src/app/i18n/nl/resource.json @@ -1,4 +1,533 @@ { - "loading": "Bezig met laden...", - "title": "CNCjs" + "Records: {{from}} - {{to}} / {{total}}": "Registreren: {{from}} - {{to}} / {{total}}", + "Records: {{total}}": "Registreren: {{total}}", + "{{pageLength}} per page": "{{pageLength}} per pagina", + "New update available": "Nieuwe update beschikbaar", + "Command succeeded": "Commando succesvol", + "Command failed ({{err}})": "Commando mislukt ({{err}})", + "My Account": "Mijn Account", + "Signed in as {{name}}": "Ingelogd als {{name}}", + "Account": "Account", + "Sign Out": "Afmelden", + "Options": "Opties", + "Command": "Commando", + "Show notifications": "Toon meldingen", + "Help": "Help", + "Report an issue": "Rapporteer een probleem", + "Cycle Start": "Start Cyclus", + "Feedhold": "FeedStop", + "Homing": "Homing", + "Sleep": "Slapen", + "Unlock": "Ontsluiten", + "Reset": "Reset", + "Authentication failed.": "Authenticatie mislukt", + "Error": "Fout", + "Sign in to {{name}}": "Log in naar {{name}}", + "Username": "Gebruikersnaam", + "Password": "Paswoord", + "Sign In": "Log in", + "Forgot your password?": "Uw wachtwoord vergeten?", + "A web-based interface for CNC milling controller running Grbl, Smoothieware, or TinyG": "Een op een web browser gebaseerde interface voor CNC frees besturing welke draait op, Grbl, Smoothieware of TinyG", + "Learn more": "Meer weten?", + "Downloads": "Downloads", + "Checking for updates...": "Zoeken of er nieuwe updates zijn...", + "A new version of {{name}} is available": "Een nieuwe versie van {{name}} is beschikbaar", + "Version {{version}}": "Versie {{version}}", + "Latest version": "Laatste versie", + "You already have the newest version of {{name}}": "U heeft al de laatste versie van {{name}}", + "New": "Nieuw", + "Account status": "Account status", + "Name": "Naam", + "Confirm Password": "Bevestig Wachtwoord", + "Cancel": "Afbreken", + "OK": "OK", + "An unexpected error has occurred.": "Er heeft zich een onverwachte fout voorgedaan", + "Loading...": "Laden", + "No data to display": "Geen dat om weer te geven", + "Enabled": "Aanzetten", + "Disabled": "Uitzetten", + "Date Modified": "Datum gemodificeerd", + "Action": "Actie", + "Edit Account": "Pas Account aan", + "Delete Account": "Verwijder Account", + "Settings": "Instellingen", + "Are you sure you want to delete the account?": "Weet U zeker dat U de account wil verwijderen?", + "Update": "Update", + "Old Password": "Oud Paswoord", + "Change Password": "Verander Paswoord", + "New Password": "Nieuw Paswoord", + "Commands": "Commando’s", + "Title": "Titel", + "and more...": "en meer...", + "Delete": "Verwijder", + "Are you sure you want to delete this item?": "Weet U zeker dat U dit item wil verwijderen?", + "Exception": "", + "Continue execution when an error is detected in the G-code program": "", + "Enabling this option may cause machine damage if you don't have an Emergency Stop button to prevent a dangerous situation.": "", + "Save Changes": "Sla veranderingen op", + "Events": "Evenementen", + "Event": "Evenement", + "Choose an event": "Kies een evenement", + "Startup (System only)": "Opstarten (Alleen systeem", + "Open a serial port (System only)": "Open een seriële poort (Alleen systeem", + "Close a serial port (System only)": "Sluit een seriële poort (Alleen systeem)", + "G-code: Load": "G-code: Laad", + "G-code: Unload": "G-code: Ontladen", + "G-code: Start": "G-code: Starten", + "G-code: Stop": "G-code: Stoppen", + "G-code: Pause": "G-code: Pause", + "G-code: Resume": "G-code: Hervatten", + "Feed Hold": "Stop Feed", + "Run Macro": "Run Macro", + "Load Macro": "Laad Macro", + "Trigger": "Trigger", + "Choose an trigger": "Kies een trigger", + "System": "Systeem", + "G-code": "G-code", + "Automatically check for updates": "Automatisch controleren op updates", + "Language": "Taal", + "General": "Algemeel", + "Workspace": "Werkruimte", + "Controller": "", + "About": "Over", + "The account name is already being used. Choose another name.": "Deze account naam is al in gebruik. Kier een andere naam", + "Passwords do not match.": "Paswoorden komen niet overeen", + "Import": "Importeren", + "Are you sure you want to overwrite the workspace settings?": "Weet U zeker dat U de werkruimte settings wil overschrijven?", + "Restore Defaults": "Herstel Standaard", + "Are you sure you want to restore the default settings?": "Weet U zeker dat dat de standaard instellingen worden herstelt?", + "Import Error": "Import Fout", + "Invalid file format.": "Fout bestandsformaat", + "Close": "Sluiten", + "Export": "Exporteer", + "Click the Continue button to resume execution.": "Klik de ga verder knop om verder te gaan met de uitvoering van het programma ", + "Stop": "Stop", + "Continue": "Ga Verder", + "Server has stopped working": "De server is gestopt", + "A problem caused the server to stop working correctly. Check out the server status and try again.": "Een probleem heeft ervoor gezorgd dat de server niet meer correct werkt. Controleer de server status en probeer nog eens.", + "Reload": "Herlaad", + "Fork Widget": "Widget Binnenhalen", + "Are you sure you want to fork this widget?": "Weet U zeker dat U deze widget wil binnenhalen?", + "Remove Widget": "Widget Verwijderen", + "Are you sure you want to remove this widget?": "Weet U zeker dat U deze widget wil verwijderen?", + "On": "Aan", + "Off": "Uit", + "Visualizer Widget": "Visualiseer Widget", + "This widget visualizes a G-code file and simulates the tool path.": "Deze widget visualiseert een G-code bestand en simuleert het pad van het gereedscap", + "Connection Widget": "Verbindings Widget", + "This widget lets you establish a connection to a serial port.": "Deze widget laat U een verbinding maken met een seriële poort", + "Console Widget": "Console Widget", + "This widget lets you read and write data to the CNC controller connected to a serial port.": "Deze widget laat U data lezen en schrijven naar de CNC controller verbonden met een seriële poort.", + "Grbl Widget": "Grbl Widget", + "This widget shows the Grbl state and provides Grbl specific features.": "Deze widget toont de Grbl status en verschaft Grbl specifieke kenmerken", + "Marlin Widget": "", + "This widget shows the Marlin state and provides Marlin specific features.": "", + "Smoothie Widget": "Smoothie Widget", + "This widget shows the Smoothie state and provides Smoothie specific features.": "Deze widget toont de Smoothie status en verschaft Smoothie specifieke kenmerken", + "TinyG Widget": "TinyG Widget", + "This widget shows the TinyG state and provides TinyG specific features.": "Deze widget toont de TinyG status en verschaft TinyG specifieke kenmerken", + "Axes Widget": "Assen Widget", + "This widget shows the XYZ position. It includes jog controls, homing, and axis zeroing.": "Deze Widget toont de XYZ positie. Inclusief bewegings controle, homing, en de assen op Nul uitlijnen", + "G-code Widget": "G-code Wodget", + "This widget shows the current status of G-code commands.": "Deze widget toont de huidige status van de G-code commando’s", + "Laser Widget": "Laser Widget", + "This widget allows you control laser intensity and turn the laser on/off.": "Deze widget staat U toe de laserintensiteit te controleren en de laser aan en uit te zetten", + "Macro Widget": "Macro Widget", + "This widget can use macros to automate routine tasks.": "Deze widget kan macro’s gebruiken om routine taken te automatiseren. ", + "Probe Widget": "Uitpijl Widget", + "This widget helps you use a touch plate to set your Z zero offset.": "Deze widget help U om met een aanraak plaat uw Z offset op Nul uit te lijnen.", + "Spindle Widget": "Spindel Widget", + "This widget provides the spindle control.": "Deze widget zorgt voor spindel controle.", + "Custom Widget": "Eigen Widget", + "This widget gives you a communication interface for creating your own widget.": "Deze widget geeft U een communicatie interface voor het creëren van uw eigen widget.", + "Webcam Widget": "Webcam Widget", + "This widget lets you monitor a webcam.": "Deze widget geeft U controle over een webcam.", + "Widgets": "Widgets", + "M0 Program Pause": "Pauzeer Programma", + "M1 Program Pause": "Pauzeer Programma", + "M2 Program End": "Einde Programma", + "M30 Program End": "Einde Programma", + "M6 Tool Change": "Verwissel Gereedschap", + "M109 Set Extruder Temperature": "", + "M190 Set Heated Bed Temperature": "", + "Drop G-code file here": "Werp uw G-code bestand hier", + "Manage Widgets ({{inactiveCount}})": "Manage Widgets ({{inactiveCount}})", + "Collapse All": "Alles Inklappen", + "Expand All": "Alles Uitklappen", + "Corrupted workspace settings": "Incorrecte werkplaats instellingen", + "The workspace settings have become corrupted or invalid. Click Restore Defaults to restore default settings and continue.": "De werkplaats instellingen zijn corrupt of verkeerd. Klik Herstel Standaard om de standaard instellingen te herstellen en om verder te gaan.", + "Download workspace settings": "Download werkplaats instellingen", + "This field is required.": "Dit veld is nodig of verplicht.", + "Passwords should be equal.": "Paswoorden moeten gelijk zijn.", + "Work Coordinate System (G54)": "Werk Coördinatie systeem (G54)", + "Work Coordinate System (G55)": "Werk Coördinatie systeem (G55)", + "Work Coordinate System (G56)": "Werk Coördinatie systeem (G56)", + "Work Coordinate System (G57)": "Werk Coördinatie systeem (G57)", + "Work Coordinate System (G58)": "Werk Coördinatie systeem (G58)", + "Work Coordinate System (G59)": "Werk Coördinatie systeem (G59)", + "Go To Work Zero (G0 X0 Y0 Z0)": "Ga Naar Werk 0 (G0 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P1 X0 Y0 Z0)": "Werk Offsets Instellen op Nul (G10 L20 P1 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P2 X0 Y0 Z0)": "Werk Offsets Instellen op Nul (G10 L20 P2 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P3 X0 Y0 Z0)": "Werk Offsets Instellen op Nul (G10 L20 P3 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P4 X0 Y0 Z0)": "Werk Offsets Instellen op Nul (G10 L20 P4 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P5 X0 Y0 Z0)": "Werk Offsets Instellen op Nul (G10 L20 P5 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P6 X0 Y0 Z0)": "Werk Offsets Instellen op Nul (G10 L20 P6 X0 Y0 Z0)", + "Temporary Offsets (G92)": "Tijdelijke Offsets (G92)", + "Zero Out Temporary Offsets (G92 X0 Y0 Z0)": "Stel Offsets tijdelijk op Nul in (G92 X0 Y0 Z0)", + "Un-Zero Out Temporary Offsets (G92.1 X0 Y0 Z0)": "Herstel werkelijke Offset (G92.1 X0 Y0 Z0)", + "Machine Coordinate System (G53)": "Machine Coördinatie Systeem (G53)", + "Go To Machine Zero (G53 G0 X0 Y0 Z0)": "Ga Naar Machine 0 (G53 G0 X0 Y0 Z0)", + "Set Machine Zero (G28.3 X0 Y0 Z0)": "Stel Machine in op Nul (G28.3 X0 Y0 Z0)", + "Homing Sequence (G28.2 X0 Y0 Z0)": "Homing Cyclus (G28.2 X0 Y0 Z0)", + "Go To Work Zero On X Axis (G0 X0)": "Ga Naar Werk 0 op de X-As (G0 X0)", + "Zero Out Work X Axis (G10 L20 P1 X0)": "Stel Werk X-As in op Nul (G10 L20 P1 X0)", + "Zero Out Work X Axis (G10 L20 P2 X0)": "Stel Werk X-As in op Nul (G10 L20 P2 X0)", + "Zero Out Work X Axis (G10 L20 P3 X0)": "Stel Werk X-As in op Nul (G10 L20 P3 X0)", + "Zero Out Work X Axis (G10 L20 P4 X0)": "Stel Werk X-As in op Nul (G10 L20 P4 X0)", + "Zero Out Work X Axis (G10 L20 P5 X0)": "Stel Werk X-As in op Nul (G10 L20 P5 X0)", + "Zero Out Work X Axis (G10 L20 P6 X0)": "Stel Werk X-As in op Nul (G10 L20 P6 X0)", + "Zero Out Temporary X Axis (G92 X0)": "Machine X-As Tijdelijk op Nul Zetten (G92 X0)", + "Un-Zero Out Temporary X Axis (G92.1 X0)": "Herstel werkelijke X-As (G92.1 X0)", + "Go To Machine Zero On X Axis (G53 G0 X0)": "Ga Naar Machine 0 op X-As (G53 G0 X0)", + "Zero Out Machine X Axis (G28.3 X0)": "Machine X-As op Nul Zetten (G28.3 X0)", + "Home Machine X Axis (G28.2 X0)": "Home Machine X-As (G28.2 X0)", + "Go To Work Zero On Y Axis (G0 Y0)": "Ga Naar Werk 0 op de Y-As (G0 Y0)", + "Zero Out Work Y Axis (G10 L20 P1 Y0)": "Stel Werk Y-As in op Nul (G10 L20 P1 Y0) ", + "Zero Out Work Y Axis (G10 L20 P2 Y0)": "Stel Werk Y-As in op Nul (G10 L20 P2 Y0)", + "Zero Out Work Y Axis (G10 L20 P3 Y0)": "Stel Werk Y-As in op Nul (G10 L20 P3 Y0)", + "Zero Out Work Y Axis (G10 L20 P4 Y0)": "Stel Werk Y-As in op Nul (G10 L20 P4 Y0)", + "Zero Out Work Y Axis (G10 L20 P5 Y0)": "Stel Werk Y-As in op Nul (G10 L20 P5 Y0)", + "Zero Out Work Y Axis (G10 L20 P6 Y0)": "Stel Werk Y-As in op Nul (G10 L20 P6 Y0)", + "Zero Out Temporary Y Axis (G92 Y0)": "Machine Y-As Tijdelijk op Nul Zetten (G92 Y0)", + "Un-Zero Out Temporary Y Axis (G92.1 Y0)": "Herstel werkelijke Y-As (G92.1 Y0)", + "Go To Machine Zero On Y Axis (G53 G0 Y0)": "Ga Naar Machine 0 op Y-As (G53 G0 Y0)", + "Zero Out Machine Y Axis (G28.3 Y0)": "Machine Y-As op Nul Zetten (G28.3 Y0)", + "Home Machine Y Axis (G28.2 Y0)": "Home Machine Y-As (G28.2 Y0)", + "Go To Work Zero On Z Axis (G0 Z0)": "Ga Naar Werk 0 op de Z-As (G0 Z0)", + "Zero Out Work Z Axis (G10 L20 P1 Z0)": "Stel Werk Z-As in op Nul (G10 L20 P1 Z0) ", + "Zero Out Work Z Axis (G10 L20 P2 Z0)": "Stel Werk Z-As in op Nul (G10 L20 P2 Z0) ", + "Zero Out Work Z Axis (G10 L20 P3 Z0)": "Stel Werk Z-As in op Nul (G10 L20 P3 Z0) ", + "Zero Out Work Z Axis (G10 L20 P4 Z0)": "Stel Werk Z-As in op Nul (G10 L20 P4 Z0) ", + "Zero Out Work Z Axis (G10 L20 P5 Z0)": "Stel Werk Z-As in op Nul (G10 L20 P5 Z0) ", + "Zero Out Work Z Axis (G10 L20 P6 Z0)": "Stel Werk Z-As in op Nul (G10 L20 P6 Z0) ", + "Zero Out Temporary Z Axis (G92 Z0)": "Machine Z-As Tijdelijk op Nul Zetten (G92 Z0)", + "Un-Zero Out Temporary Z Axis (G92.1 Z0)": "Herstel werkelijke Z-As (G92.1 Z0)", + "Go To Machine Zero On Z Axis (G53 G0 Z0)": "Ga Naar Machine 0 op Z-As (G53 G0 Z0)", + "Zero Out Machine Z Axis (G28.3 Z0)": "Machine Z-As op Nul Zetten (G28.3 Z0)", + "Home Machine Z Axis (G28.2 Z0)": "Home Machine Z-As (G28.2 Z0)", + "Go To Work Zero On A Axis (G0 A0)": "Ga Naar Werk 0 op de A-As (G0 A0)", + "Zero Out Work A Axis (G10 L20 P1 A0)": "Stel Werk A-As in op Nul (G10 L20 P1 A0)", + "Zero Out Work A Axis (G10 L20 P2 A0)": "Stel Werk A-As in op Nul (G10 L20 P2 A0)", + "Zero Out Work A Axis (G10 L20 P3 A0)": "Stel Werk A-As in op Nul (G10 L20 P3 A0)", + "Zero Out Work A Axis (G10 L20 P4 A0)": "Stel Werk A-As in op Nul (G10 L20 P4 A0)", + "Zero Out Work A Axis (G10 L20 P5 A0)": "Stel Werk A-As in op Nul (G10 L20 P5 A0)", + "Zero Out Work A Axis (G10 L20 P6 A0)": "Stel Werk A-As in op Nul (G10 L20 P6 A0)", + "Zero Out Temporary A Axis (G92 A0)": "Machine A-As Tijdelijk Op Nul Zetten (G92 A0)", + "Un-Zero Out Temporary A Axis (G92.1 A0)": "Machine A-As Tijdelijk Op Nul Zetten (G92 A0)", + "Go To Machine Zero On A Axis (G53 G0 A0)": "Ga Naar Machine 0 op A-As (G53 G0 A0)", + "Zero Out Machine A Axis (G28.3 A0)": "Machine A-As Op Nul Zetten (G28.3 A0)", + "Home Machine A Axis (G28.2 A0)": "Home Machine A-As (G28.2 A0)", + "Go To Work Zero On B Axis (G0 B0)": "", + "Zero Out Work B Axis (G10 L20 P1 B0)": "", + "Zero Out Work B Axis (G10 L20 P2 B0)": "", + "Zero Out Work B Axis (G10 L20 P3 B0)": "", + "Zero Out Work B Axis (G10 L20 P4 B0)": "", + "Zero Out Work B Axis (G10 L20 P5 B0)": "", + "Zero Out Work B Axis (G10 L20 P6 B0)": "", + "Zero Out Temporary B Axis (G92 B0)": "", + "Un-Zero Out Temporary B Axis (G92.1 B0)": "", + "Go To Machine Zero On B Axis (G53 G0 B0)": "", + "Zero Out Machine B Axis (G28.3 B0)": "", + "Home Machine B Axis (G28.2 B0)": "", + "Go To Work Zero On C Axis (G0 C0)": "", + "Zero Out Work C Axis (G10 L20 P1 C0)": "", + "Zero Out Work C Axis (G10 L20 P2 C0)": "", + "Zero Out Work C Axis (G10 L20 P3 C0)": "", + "Zero Out Work C Axis (G10 L20 P4 C0)": "", + "Zero Out Work C Axis (G10 L20 P5 C0)": "", + "Zero Out Work C Axis (G10 L20 P6 C0)": "", + "Zero Out Temporary C Axis (G92 C0)": "", + "Un-Zero Out Temporary C Axis (G92.1 C0)": "", + "Go To Machine Zero On C Axis (G53 G0 C0)": "", + "Zero Out Machine C Axis (G28.3 C0)": "", + "Home Machine C Axis (G28.2 C0)": "", + "mm": "mm", + "in": "inch", + "deg": "graden", + "Zero Out Machine": "", + "Home Machine": "", + "Zero Out Work Offsets": "", + "Set Work Offsets": "", + "Axis": "Assen", + "Machine Position": "Machine Positie", + "Work Position": "Werk Positie", + "Axes": "Assen", + "Keypad jogging": "Keypad Bewegingen", + "Edit": "Bewerk", + "Expand": "Uitklappen", + "Collapse": "Inklappen", + "More": "Meer", + "Enter Full Screen": "Volledig Scherm", + "Exit Full Screen": "Ga Uit Volledige Scherm", + "Move X- Y+": "Beweeg X- Y+", + "Move Y+": "Beweeg Y+", + "Move X+ Y+": "Beweeg X+ Y+", + "Move Z+": "Beweeg Z+", + "Move X-": "Beweeg X-", + "Move To XY Zero (G0 X0 Y0)": "Beweeg Naar XY Nul (G0 X0 Y0)", + "Move X+": "Beweeg X+", + "Move To Z Zero (G0 Z0)": "Beweeg Naar Z Nul (G0 Z0)", + "Move X- Y-": "Beweeg X- Y-", + "Move Y-": "Beweeg Y-", + "Move X+ Y-": "Beweeg X+ Y-", + "Move Z-": "Beweeg Z-", + "Units": "Units", + "G20 (inch)": "", + "G21 (mm)": "", + "Imperial": "", + "Metric": "", + "Right": "Rechts", + "Left": "Links", + "Up": "Omhoog", + "Down": "Omlaag", + "Page Up": "Pagina Omhoog", + "Page Down": "Pagina Omlaag", + "Right Square Bracket": "Rechts Vierkant Accolade", + "Left Square Bracket": "Links Vierkant Accolade", + "0.1x Move": "0.1x Beweeg", + "Alt": "Alt", + "10x Move": "10x Beweeg", + "⇧ Shift": "⇧ Veschuif", + "X-axis": "X-As", + "Y-axis": "Y-As", + "Z-axis": "Z-As", + "A-axis": "A-As", + "B-axis": "", + "C-axis": "", + "Custom Commands": "Eigen Commando’s", + "Axes Settings": "Instellingen Assen", + "ShuttleXpress": "ShuttleXpress", + "Feed Rate Range: {{min}} - {{max}} mm/min": "Voedingssnelheid bereik: {{min}} - {{max}} mm/min", + "Repeat Rate: {{hertz}}Hz": "Herhaal Snelheid: {{hertz}}Hz", + "60 Times per Second": "60 Maal per Seconde", + "45 Times per Second": "45 Maal per Seconde", + "30 Times per Second": "30 Maal per Seconde", + "15 Times per Second": "15 Maal per Seconde", + "10 Times per Second": "10 Maal per Seconde", + "5 Times per Second": "5 Maal per Seconde", + "2 Times per Second": "2 Maal per Seconde", + "Once Every Second": "Eens Elke Seconde", + "Distance Overshoot: {{overshoot}}x": "Overschiet Afstand: {{overshoot}}x", + "Manufacturer: {{manufacturer}}": "Producent: {{manufacturer}}", + "Port": "Poort", + "No ports available": "Geen poorten beschikbaar", + "Choose a port": "Kies een poort", + "Refresh": "Ververs", + "Baud rate": "Verbindingssnelheid", + "Choose a baud rate": "Kies een verbindingssnelheid", + "Enable hardware flow control": "", + "Connect automatically": "Verbind automatisch", + "Open": "Open", + "Error opening serial port '{{- port}}'": "Fout bij openen seriële poort", + "Connection": "Verbinding", + "No serial connection": "Geen seriële verbinding", + "Connected to {{-port}} with a baud rate of {{baudrate}}": "Verbind met {{-port}} met een verbindingssnelheid van {{baudrate}}", + "Console": "Console", + "Clear all": "Wis alles", + "Select All": "", + "Clear Selection": "", + "URL not configured": "URL is niet geconfigureerd", + "The widget is currently disabled": "De widget is momenteel uitgeschakeld", + "Enable": "Inschakelen", + "Disable": "Uitschakelen", + "URL": "URL", + "Min": "Min", + "Max": "Max", + "Dimension": "Afmeting", + "Sent": "Verzonden", + "Received": "Ontvangen", + "Start Time": "Start Tijd", + "Elapsed Time": "Verstreken Tijd", + "Finish Time": "Eind Tijd", + "Remaining Time": "Resterende Tijd", + "Controller State": "Controller Staat", + "Controller Settings": "Controller Instellingen", + "Hide": "Verberg", + "Show": "Toon", + "Queue Reports": "Queue Rapport", + "Planner Buffer": "Planner Buffer", + "Receive Buffer": "Ontvangst Buffer", + "Status Reports": "Status Rapport", + "State": "Staat", + "Feed Rate": "Voedingssnelheid", + "Spindle": "Spindel", + "Tool Number": "Gereedschap Nummer", + "Modal Groups": "Model Groepen", + "Motion": "Beweging", + "Coordinate": "Coördinatie", + "Plane": "Vlak", + "Distance": "Afstand", + "Program": "Programma", + "Coolant": "Koeling", + "Status Report (?)": "Status Rapport (?)", + "Check G-code Mode ($C)": "Check G-code Modus ($C)", + "Homing ($H)": "Homing ($H)", + "Kill Alarm Lock ($X)": "Verwijder Alarm Slot ($X)", + "Sleep ($SLP)": "Slaap ($SLP)", + "Help ($)": "Help ($)", + "Settings ($$)": "Instellingen ($$)", + "View G-code Parameters ($#)": "Toon G-code Parameters ($#)", + "View G-code Parser State ($G)": "Toon G-code Doorgeef Staat ($G)", + "View Build Info ($I)": "Toon Versie Informatie ($I)", + "View Startup Blocks ($N)": "Toon Start Blokken ($N)", + "Laser": "Laser", + "Laser Intensity Control": "Laser Intensiteit Beheer", + "Laser Test": "Laser Test", + "Power (%)": "Vermogen (%)", + "Test duration": "Test duur", + "ms": "ms", + "Maximum value": "Maximale Waarde", + "Laser Off": "Lase Uir", + "New Macro": "Nieuwe Macro", + "Macro Name": "Macro Naam", + "Macro Commands": "Macro Commando’s", + "Macro Variables": "Macro Variabelen", + "Edit Macro": "Bewerk Macro", + "Delete Macro": "Verwijder Macro", + "Are you sure you want to delete this macro?": "Weet U zeker dat U deze macro wil verwijderen?", + "No": "Nee", + "Yes": "Ja", + "Macro": "Macro", + "Are you sure you want to load this macro?": "Weet U zeker dat U deze macro wil laden?", + "No macros": "Geen macros", + "Run": "Start", + "Get Extruder Temperature (M105)": "", + "Get Current Position (M114)": "", + "Get Firmware Version and Capabilities (M115)": "", + "Heater Control": "", + "Extruder": "", + "°C": "", + "Set the target temperature for the extruder": "", + "Heated Bed": "", + "Set the target temperature for the heated bed": "", + "Extruder Temperature": "", + "Heated Bed Temperature": "", + "Extruder Power": "", + "Heated Bed Power": "", + "Probe": "Peiler", + "mm/min": "mm/min", + "in/min": "inch/min", + "Probe Command": "Peiler Commando", + "G38.2 probe toward workpiece, stop on contact, signal error if failure": "G38.2 peiler richting werkstuk, stop bij contact, signaal fout als het mislukt", + "G38.3 probe toward workpiece, stop on contact": "G38.3 peiler naar werkstuk, stop bij contact", + "G38.4 probe away from workpiece, stop on loss of contact, signal error if failure": "G38.4 peiler weg van werkstuk, stop bij verliezen van contact, signaal fout als het mislukt", + "G38.5 probe away from workpiece, stop on loss of contact": "G38.5 peiler weg van werkstuk, stop bij het verliezen van contact", + "Probe Depth": "Peiler Diepte", + "Probe Feedrate": "Peil Voedingssnelheid ", + "Touch Plate Thickness": "Raak Plaat Afstand", + "Retraction Distance": "Retractie Afstand", + "Z-Probe": "Z-As Peiler", + "Apply tool length offset": "Pas gereedschap lengte offset toe", + "Run Z-Probe": "Start Z-As Uit peilen", + "Spindle Speed": "Spindel Snelheid ", + "RPM": "Toeren Per Minuut", + "Queue Flush (%)": "Queue Flush (%)", + "Kill Job (^d)": "Stop Werk (^d)", + "Clear Alarm ($clear)": "Alarm Uitzetten ($clear)", + "Show System Settings": "Toon Systeem Instellingen", + "Show All Settings": "Toon Alle Instellingen", + "List Self Tests": "Toon Zelf Test", + "Power Management": "Power Management", + "Enable Motors": "Motors Inschakelen", + "Disable Motors": "Motors Uitschakelen", + "Motor {{n}}": "Motor {{n}}", + "Velocity": "Snelheid", + "Line": "Lijn", + "Path": "Pad", + "G-code not loaded": "G-code niet geladen", + "Tool Change": "Gereedschp Wisselen", + "Are you sure you want to resume program execution?": "Weet U zeker dat U het programma wil vervolgen?", + "Click the Resume button to resume program execution.": "Klik de vervolg knop om het programma te vervolgen", + "Click the Stop button to stop program execution.": "Klik op de Stop knop om het programma te stoppen", + "Run a tool change macro to change the tool and adjust the Z-axis offset. Afterwards, click the Resume button to resume program execution.": "Draai een verwissel gereedschap macro om het gereedschap te verwisselen en de offset van de Z-as bij te stellen. Daarna klik de Vervolg knop om het programma te vervolgen", + "Waiting for the target temperature to be reached...": "", + "Work Coordinate System": "Werk Coördinatie Systeem", + "Enable 3D View": "3D Visie Aan", + "Disable 3D View": "3D Visie Uit", + "3D View": "3D Visie", + "Projection": "Projectie", + "Perspective Projection": "Perspectief Projectie ", + "Orthographic Projection": "Orthografische Projectie", + "Display G-code Filename": "Toon G-code Bestandsnaam", + "Hide Coordinate System": "Verberg Coördinatie Systeem", + "Show Coordinate System": "Toon Coördinatie Systeem", + "Hide Grid Line Numbers": "Verberg Grid Lijn Nummers", + "Show Grid Line Numbers": "Toon Grid Lijn Nummers", + "File folder": "Bestandsmap", + "{{extname}} File": "{{extname}} Bestand", + "File": "Bestand", + "3D rendering": "3D rendering", + "Zoom In": "Zoom In", + "Zoom Out": "Zoom Uit", + "Move the camera": "Verplaats de camera", + "Rotate the camera": "Roteer de camera", + "Watch Directory": "Bewaak Map ", + "Date modified": "Datum aangepast", + "Type": "Type", + "Size": "Grootte", + "Load G-code": "Laad G-code", + "Upload G-code": "Upload G-code", + "Browse...": "Bladeren", + "Resume": "Vervolg", + "Pause": "Pause", + "Webcam": "Webcam", + "Webcam Settings": "Webcam Instellingen", + "Media Source": "Media Bron", + "Use a built-in camera or a connected webcam": "Gebruik een ingebouwde camera of een verbonden webcam", + "Use a M-JPEG stream over HTTP": "Gebruik een M-JPEG stroom boven een HTTP", + "Webcam is off": "Webcam is uit", + "Rotate Left": "Roteer Links", + "Rotate Right": "Roteer Rechts", + "Flip Horizontally": "Kantel Horizontaal", + "Flip Vertically": "Kantel Verticaal", + "Crosshair": "Crosshair", + "Manual Data Input": "", + "MDI": "", + "Button Width": "", + "Order": "", + "Move Up": "", + "Move Down": "", + "Remove": "Verwijderen", + "Waiting for the planner to empty...": "", + "No video devices available": "", + "Choose a video device": "", + "Automatic detection": "", + "Front View": "", + "Move Backward": "", + "Move Forward": "", + "Top View": "", + "Zoom to Fit": "", + "Right Side View": "", + "Left Side View": "", + "Custom range...": "Aangepast bereik...", + "Today": "Vandaag", + "Last {{n}} days": "Laatste {{n}} dagen", + "Apply": "Toepassen", + "Add": "Toevoegen", + "Custom Jog Distance (mm)": "", + "Custom Jog Distance (inches)": "", + "Machine Profiles": "", + "No machine profile selected": "", + "Delete machine profile": "", + "Machine Profile": "", + "Limits": "", + "User Accounts": "Gebruikersaccounts", + "New Account": "Nieuw account", + "Hide Limits": "", + "Show Limits": "", + "WebGL: <1>Enabled": "WebGL: <1>Aanzetten", + "WebGL: <1>Disabled": "WebGL: <1>Uitzetten", + "Hide Cutting Tool": "", + "Show Cutting Tool": "", + "Ready to start": "" } diff --git a/src/web/i18n/pt-br/controller.json b/src/app/i18n/pt-br/controller.json similarity index 100% rename from src/web/i18n/pt-br/controller.json rename to src/app/i18n/pt-br/controller.json diff --git a/src/web/i18n/pt-br/gcode.json b/src/app/i18n/pt-br/gcode.json similarity index 100% rename from src/web/i18n/pt-br/gcode.json rename to src/app/i18n/pt-br/gcode.json diff --git a/src/app/i18n/pt-br/resource.json b/src/app/i18n/pt-br/resource.json index 7f2ee1497..029eacff9 100644 --- a/src/app/i18n/pt-br/resource.json +++ b/src/app/i18n/pt-br/resource.json @@ -1,4 +1,533 @@ { - "loading": "Lendo...", - "title": "CNCjs" + "Records: {{from}} - {{to}} / {{total}}": "Registros: {{from}} - {{to}} / {{total}}", + "Records: {{total}}": "Registros: {{total}}", + "{{pageLength}} per page": "{{pageLength}} por página", + "New update available": "Nova atualização disponível", + "Command succeeded": "Comando executado", + "Command failed ({{err}})": "Comando falhou ({{err}})", + "My Account": "Minha Conta", + "Signed in as {{name}}": "Entrou como {{name}}", + "Account": "Conta", + "Sign Out": "Sair", + "Options": "Opções", + "Command": "Comando", + "Show notifications": "Mostrar notificações", + "Help": "Ajuda", + "Report an issue": "Comunicar um problema", + "Cycle Start": "Iniciar Ciclo", + "Feedhold": "Pausar", + "Homing": "Casa", + "Sleep": "Suspender", + "Unlock": "Desbloquear", + "Reset": "Reiniciar", + "Authentication failed.": "Autenticação falhou", + "Error": "Erro", + "Sign in to {{name}}": "Entrar como {{name}}", + "Username": "Nome de Usuário", + "Password": "Senha", + "Sign In": "Entrar", + "Forgot your password?": "Esqueceu sua senha?", + "A web-based interface for CNC milling controller running Grbl, Smoothieware, or TinyG": "Uma interface baseada na web para controlador de fresagem CNC executando Grbl, Smoothieware ou TinyG", + "Learn more": "Saiba mais", + "Downloads": "Downloads", + "Checking for updates...": "Verificando se há atualizações...", + "A new version of {{name}} is available": "Uma nova versão do {{name}} está disponível", + "Version {{version}}": "Versão {{version}}", + "Latest version": "Versão mais recente", + "You already have the newest version of {{name}}": "Você já possui a versão mais recente do {{name}}", + "New": "Novo", + "Account status": "Estado de conta", + "Name": "Nome", + "Confirm Password": "Confirmar Senha", + "Cancel": "Cancelar", + "OK": "OK", + "An unexpected error has occurred.": "Ocorreu um erro inesperado.", + "Loading...": "Lendo...", + "No data to display": "Nenhum dado para exibir", + "Enabled": "Ativado", + "Disabled": "Desativado", + "Date Modified": "Data modificada", + "Action": "Ação", + "Edit Account": "Editar Conta", + "Delete Account": "Excluir Conta", + "Settings": "Configurações", + "Are you sure you want to delete the account?": "Tem certeza de que deseja excluir a conta?", + "Update": "Atualizar", + "Old Password": "Senha Atual", + "Change Password": "Alterar Senha", + "New Password": "Senha Nova", + "Commands": "Comandos", + "Title": "Título", + "and more...": "e mais...", + "Delete": "Excluir", + "Are you sure you want to delete this item?": "Tem certeza de que deseja excluir este ítem?", + "Exception": "Exceção", + "Continue execution when an error is detected in the G-code program": "Continuar a execução quando um erro é detectado no G-code", + "Enabling this option may cause machine damage if you don't have an Emergency Stop button to prevent a dangerous situation.": "A ativação desta opção pode causar danos à máquina se você não tiver um botão de parada de emergência para evitar uma situação perigosa.", + "Save Changes": "Salvar alterações", + "Events": "Eventos", + "Event": "Evento", + "Choose an event": "Escolha um evento", + "Startup (System only)": "Iniciar (somente o sistema)", + "Open a serial port (System only)": "Abre uma porta serial (somente o sistema)", + "Close a serial port (System only)": "Fecha uma porta serial (somente o sistema)", + "G-code: Load": "G-code: Carrega", + "G-code: Unload": "G-code: Descarrega", + "G-code: Start": "G-code: Inicia", + "G-code: Stop": "G-code: Para", + "G-code: Pause": "G-code: Pausa", + "G-code: Resume": "G-code: Continua", + "Feed Hold": "Mantém Avanço", + "Run Macro": "Executar uma macro", + "Load Macro": "Carrega Macro", + "Trigger": "Gatilho", + "Choose an trigger": "Escolha um gatilho", + "System": "Sistema", + "G-code": "G-code", + "Automatically check for updates": "Verificar automaticamente as atualizações", + "Language": "Idioma", + "General": "Geral", + "Workspace": "Espaço de Trabalho", + "Controller": "Controlador", + "About": "Sobre", + "The account name is already being used. Choose another name.": "O nome da conta já está sendo usado. Escolha outro nome.", + "Passwords do not match.": "As senhas não coincidem.", + "Import": "Importar", + "Are you sure you want to overwrite the workspace settings?": "Tem certeza de que deseja substituir as configurações do espaço de trabalho?", + "Restore Defaults": "Restaurar Padrões", + "Are you sure you want to restore the default settings?": "Você tem certeza que deseja restaurar a configuração padrão?", + "Import Error": "Erro de Importação", + "Invalid file format.": "Formato de arquivo inválido.", + "Close": "Fechar", + "Export": "Exportar", + "Click the Continue button to resume execution.": "Clique no botão Continuar para continuar a execução.", + "Stop": "Parar", + "Continue": "Contituar", + "Server has stopped working": "O servidor parou de funcionar", + "A problem caused the server to stop working correctly. Check out the server status and try again.": "Um problema fez com que o servidor pare de funcionar corretamente. Confira o status do servidor e tente novamente.", + "Reload": "Recarregar", + "Fork Widget": "Copiar Módulo", + "Are you sure you want to fork this widget?": "Tem certeza de que deseja copiar esse módulo?", + "Remove Widget": "Remover Módulo", + "Are you sure you want to remove this widget?": "Tem certeza de que deseja remover esse módulo?", + "On": "Ativado", + "Off": "Desativado", + "Visualizer Widget": "Módulo Visualizar", + "This widget visualizes a G-code file and simulates the tool path.": "Este Módulo visualiza um arquivo G-code e simula a trajetória da ferramenta.", + "Connection Widget": "Módulo Conexão", + "This widget lets you establish a connection to a serial port.": "Este Módulo permite estabelecer uma conexão com uma porta serial.", + "Console Widget": "Módulo Console", + "This widget lets you read and write data to the CNC controller connected to a serial port.": "Este Módulo permite ler e gravar dados para o controlador CNC conectado a uma porta serial.", + "Grbl Widget": "Módulo Grbl", + "This widget shows the Grbl state and provides Grbl specific features.": "Este Módulo mostra o estado do Grbl e fornece características específicas do Grbl.", + "Marlin Widget": "Módulo Marlin", + "This widget shows the Marlin state and provides Marlin specific features.": "Este Módulo mostra o estado do Marlin e fornece características específicas do Marlin.", + "Smoothie Widget": "Módulo Smoothie", + "This widget shows the Smoothie state and provides Smoothie specific features.": "Este Módulo mostra o estado do Smoothie e fornece características específicas do Smoothie.", + "TinyG Widget": "Módulo TinyG", + "This widget shows the TinyG state and provides TinyG specific features.": "Este Módulo mostra o estado do TinyG e fornece características específicas do TinyG.", + "Axes Widget": "Módulo Eixos", + "This widget shows the XYZ position. It includes jog controls, homing, and axis zeroing.": "Este Módulo mostra a posição XYZ. Ele inclui controles de movimento, homing e zeragem de eixo.", + "G-code Widget": "Módulo G-code", + "This widget shows the current status of G-code commands.": "Este Módulo mostra o estado atual dos comandos G-code.", + "Laser Widget": "Módulo Laser", + "This widget allows you control laser intensity and turn the laser on/off.": "Este módulo permite ativar/desativar e controlar a intensidade do laser.", + "Macro Widget": "Módulo Macro", + "This widget can use macros to automate routine tasks.": "Este Módulo pode usar macros para automatizar tarefas de rotina.", + "Probe Widget": "Módulo Ajuste de Referência", + "This widget helps you use a touch plate to set your Z zero offset.": "Este Módulo ajuda a usar uma placa de toque para definir o offset para zerar o Z.", + "Spindle Widget": "Módulo Spindle", + "This widget provides the spindle control.": "Este Módulo fornece o controle do spindle.", + "Custom Widget": "Módulo Personalizado", + "This widget gives you a communication interface for creating your own widget.": "Este módulo oferece uma interface de comunicação para criar seu próprio módulo.", + "Webcam Widget": "Módulo Webcam", + "This widget lets you monitor a webcam.": "Este Módulo permite que você monitore uma webcam.", + "Widgets": "Módulos", + "M0 Program Pause": "M0 Pausa o Programa", + "M1 Program Pause": "M1 Pausa o Programa", + "M2 Program End": "M2 Finaliza o Programa", + "M30 Program End": "M30 Finaliza o Programa", + "M6 Tool Change": "M6 Troca de Ferramenta", + "M109 Set Extruder Temperature": "M109 Ajustar a Temperatura da Extrusora", + "M190 Set Heated Bed Temperature": "M190 Ajustar a temperatura da cama aquecida", + "Drop G-code file here": "Solte o arquivo G-code aqui", + "Manage Widgets ({{inactiveCount}})": "Gerenciar Módulos ({{inactiveCount}})", + "Collapse All": "Recolher Todos", + "Expand All": "Expandir Todos", + "Corrupted workspace settings": "Configurações de área de trabalho corrompidas", + "The workspace settings have become corrupted or invalid. Click Restore Defaults to restore default settings and continue.": "As configurações do espaço de trabalho ficaram corrompidas ou inválidas. Clique em Restaurar padrões para restaurar as configurações padrão e continuar.", + "Download workspace settings": "Baixar configurações do espaço de trabalho", + "This field is required.": "Este campo é obrigatório.", + "Passwords should be equal.": "As senhas devem ser iguais.", + "Work Coordinate System (G54)": "Sistema de Coordenadas de Trabalho (G54)", + "Work Coordinate System (G55)": "Sistema de Coordenadas de Trabalho (G55)", + "Work Coordinate System (G56)": "Sistema de Coordenadas de Trabalho (G56)", + "Work Coordinate System (G57)": "Sistema de Coordenadas de Trabalho (G57)", + "Work Coordinate System (G58)": "Sistema de Coordenadas de Trabalho (G58)", + "Work Coordinate System (G59)": "Sistema de Coordenadas de Trabalho (G59)", + "Go To Work Zero (G0 X0 Y0 Z0)": "Vai ao Zero de Trabalho (G0 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P1 X0 Y0 Z0)": "Definir como Zero de Trabalho (G10 L20 P1 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P2 X0 Y0 Z0)": "Definir como Zero de Trabalho (G10 L20 P2 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P3 X0 Y0 Z0)": "Definir como Zero de Trabalho (G10 L20 P3 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P4 X0 Y0 Z0)": "Definir como Zero de Trabalho (G10 L20 P4 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P5 X0 Y0 Z0)": "Definir como Zero de Trabalho (G10 L20 P5 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P6 X0 Y0 Z0)": "Definir como Zero de Trabalho (G10 L20 P6 X0 Y0 Z0)", + "Temporary Offsets (G92)": "Offsets Temporários (G92)", + "Zero Out Temporary Offsets (G92 X0 Y0 Z0)": "Define o Zero Temporário (G92 X0 Y0 Z0)", + "Un-Zero Out Temporary Offsets (G92.1 X0 Y0 Z0)": "Remove o Zero Temporário (G92.1 X0 Y0 Z0)", + "Machine Coordinate System (G53)": "Sistema de Coordenadas da Máquina (G53)", + "Go To Machine Zero (G53 G0 X0 Y0 Z0)": "Vai ao Zero da Máquina (G53 G0 X0 Y0 Z0)", + "Set Machine Zero (G28.3 X0 Y0 Z0)": "Define o Zero da Máquina (G28.3 X0 Y0 Z0)", + "Homing Sequence (G28.2 X0 Y0 Z0)": "Sequência para Origem (G28.2 X0 Y0 Z0)", + "Go To Work Zero On X Axis (G0 X0)": "Vai para o Zero do Eixo X de Trabalho (G0 X0)", + "Zero Out Work X Axis (G10 L20 P1 X0)": "Zera o Eixo X de Trabalho (G10 L20 P1 X0)", + "Zero Out Work X Axis (G10 L20 P2 X0)": "Zera o Eixo X de Trabalho (G10 L20 P2 X0)", + "Zero Out Work X Axis (G10 L20 P3 X0)": "Zera o Eixo X de Trabalho (G10 L20 P3 X0)", + "Zero Out Work X Axis (G10 L20 P4 X0)": "Zera o Eixo X de Trabalho (G10 L20 P4 X0)", + "Zero Out Work X Axis (G10 L20 P5 X0)": "Zera o Eixo X de Trabalho (G10 L20 P5 X0)", + "Zero Out Work X Axis (G10 L20 P6 X0)": "Zera o Eixo X de Trabalho (G10 L20 P6 X0)", + "Zero Out Temporary X Axis (G92 X0)": "Define o Zero Temporário do Eixo X (G92 X0)", + "Un-Zero Out Temporary X Axis (G92.1 X0)": "Remove o Zero Temporário do Eixo X (G92.1 X0)", + "Go To Machine Zero On X Axis (G53 G0 X0)": "Vai para o Zero do Eixo X da Máquina (G53 G0 X0)", + "Zero Out Machine X Axis (G28.3 X0)": "Define o Zero do Eixo X da Máquina (G28.3 X0)", + "Home Machine X Axis (G28.2 X0)": "Origem do Eixo X da Máquina (G28.2 X0)", + "Go To Work Zero On Y Axis (G0 Y0)": "Vai para o Zero do Eixo Y de Trabalho (G0 Y0)", + "Zero Out Work Y Axis (G10 L20 P1 Y0)": "Zera o Eixo Y de Trabalho (G10 L20 P1 Y0)", + "Zero Out Work Y Axis (G10 L20 P2 Y0)": "Zera o Eixo Y de Trabalho (G10 L20 P2 Y0)", + "Zero Out Work Y Axis (G10 L20 P3 Y0)": "Zera o Eixo Y de Trabalho (G10 L20 P3 Y0)", + "Zero Out Work Y Axis (G10 L20 P4 Y0)": "Zera o Eixo Y de Trabalho (G10 L20 P4 Y0)", + "Zero Out Work Y Axis (G10 L20 P5 Y0)": "Zera o Eixo Y de Trabalho (G10 L20 P5 Y0)", + "Zero Out Work Y Axis (G10 L20 P6 Y0)": "Zera o Eixo Y de Trabalho (G10 L20 P6 Y0)", + "Zero Out Temporary Y Axis (G92 Y0)": "Define o Zero Temporário do Eixo Y (G92 Y0)", + "Un-Zero Out Temporary Y Axis (G92.1 Y0)": "Remove o Zero Temporário do Eixo Y (G92.1 Y0)", + "Go To Machine Zero On Y Axis (G53 G0 Y0)": "Vai para o Zero do Eixo Y da Máquina (G53 G0 Y0)", + "Zero Out Machine Y Axis (G28.3 Y0)": "Define o Zero do Eixo Y da Máquina (G28.3 Y0)", + "Home Machine Y Axis (G28.2 Y0)": "Origem do Eixo Y da Máquina (G28.2 Y0)", + "Go To Work Zero On Z Axis (G0 Z0)": "Vai para o Zero do Eixo Z de Trabalho (G0 Z0)", + "Zero Out Work Z Axis (G10 L20 P1 Z0)": "Zera o Eixo Z de Trabalho (G10 L20 P1 Z0)", + "Zero Out Work Z Axis (G10 L20 P2 Z0)": "Zera o Eixo Z de Trabalho (G10 L20 P2 Z0)", + "Zero Out Work Z Axis (G10 L20 P3 Z0)": "Zera o Eixo Z de Trabalho (G10 L20 P3 Z0)", + "Zero Out Work Z Axis (G10 L20 P4 Z0)": "Zera o Eixo Z de Trabalho (G10 L20 P4 Z0)", + "Zero Out Work Z Axis (G10 L20 P5 Z0)": "Zera o Eixo Z de Trabalho (G10 L20 P5 Z0)", + "Zero Out Work Z Axis (G10 L20 P6 Z0)": "Zera o Eixo Z de Trabalho (G10 L20 P6 Z0)", + "Zero Out Temporary Z Axis (G92 Z0)": "Define o Zero Temporário do Eixo Z (G92 Z0)", + "Un-Zero Out Temporary Z Axis (G92.1 Z0)": "Remove o Zero Temporário do Eixo Z (G92.1 Z0)", + "Go To Machine Zero On Z Axis (G53 G0 Z0)": "Vai para o Zero do Eixo Z da Máquina (G53 G0 Z0)", + "Zero Out Machine Z Axis (G28.3 Z0)": "Define o Zero do Eixo Z da Máquina (G28.3 Z0)", + "Home Machine Z Axis (G28.2 Z0)": "Origem do Eixo Z da Máquina (G28.2 Z0)", + "Go To Work Zero On A Axis (G0 A0)": "Vai para o Zero do Eixo A de Trabalho (G0 A0)", + "Zero Out Work A Axis (G10 L20 P1 A0)": "Zera o Eixo A de Trabalho (G10 L20 P1 A0)", + "Zero Out Work A Axis (G10 L20 P2 A0)": "Zera o Eixo A de Trabalho (G10 L20 P2 A0)", + "Zero Out Work A Axis (G10 L20 P3 A0)": "Zera o Eixo A de Trabalho (G10 L20 P3 A0)", + "Zero Out Work A Axis (G10 L20 P4 A0)": "Zera o Eixo A de Trabalho (G10 L20 P4 A0)", + "Zero Out Work A Axis (G10 L20 P5 A0)": "Zera o Eixo A de Trabalho (G10 L20 P5 A0)", + "Zero Out Work A Axis (G10 L20 P6 A0)": "Zera o Eixo A de Trabalho (G10 L20 P6 A0)", + "Zero Out Temporary A Axis (G92 A0)": "Define o Zero Temporário do Eixo A (G92 A0)", + "Un-Zero Out Temporary A Axis (G92.1 A0)": "Remove o Zero Temporário do Eixo A (G92.1 A0)", + "Go To Machine Zero On A Axis (G53 G0 A0)": "Vai para o Zero do Eixo A da Máquina (G53 G0 A0)", + "Zero Out Machine A Axis (G28.3 A0)": "Define o Zero do Eixo A da Máquina (G28.3 A0)", + "Home Machine A Axis (G28.2 A0)": "Origem do Eixo A da Máquina (G28.2 A0)", + "Go To Work Zero On B Axis (G0 B0)": "Vai para o Zero do Eixo B de Trabalho (G0 B0)", + "Zero Out Work B Axis (G10 L20 P1 B0)": "Zera o Eixo B de Trabalho (G10 L20 P1 B0)", + "Zero Out Work B Axis (G10 L20 P2 B0)": "Zera o Eixo B de Trabalho (G10 L20 P2 B0)", + "Zero Out Work B Axis (G10 L20 P3 B0)": "Zera o Eixo B de Trabalho (G10 L20 P3 B0)", + "Zero Out Work B Axis (G10 L20 P4 B0)": "Zera o Eixo B de Trabalho (G10 L20 P4 B0)", + "Zero Out Work B Axis (G10 L20 P5 B0)": "Zera o Eixo B de Trabalho (G10 L20 P5 B0)", + "Zero Out Work B Axis (G10 L20 P6 B0)": "Zera o Eixo B de Trabalho (G10 L20 P6 B0)", + "Zero Out Temporary B Axis (G92 B0)": "Define o Zero Temporário do Eixo B (G92 B0)", + "Un-Zero Out Temporary B Axis (G92.1 B0)": "Remove o Zero Temporário do Eixo B (G92.1 B0)", + "Go To Machine Zero On B Axis (G53 G0 B0)": "Vai para o Zero do Eixo B da Máquina (G53 G0 B0)", + "Zero Out Machine B Axis (G28.3 B0)": "Define o Zero do Eixo B da Máquina (G28.3 B0)", + "Home Machine B Axis (G28.2 B0)": "Origem do Eixo B da Máquina (G28.2 B0)", + "Go To Work Zero On C Axis (G0 C0)": "Vai para o Zero do Eixo C de Trabalho (G0 C0)", + "Zero Out Work C Axis (G10 L20 P1 C0)": "Zera o Eixo C de Trabalho (G10 L20 P1 C0)", + "Zero Out Work C Axis (G10 L20 P2 C0)": "Zera o Eixo C de Trabalho (G10 L20 P2 C0)", + "Zero Out Work C Axis (G10 L20 P3 C0)": "Zera o Eixo C de Trabalho (G10 L20 P3 C0)", + "Zero Out Work C Axis (G10 L20 P4 C0)": "Zera o Eixo C de Trabalho (G10 L20 P4 C0)", + "Zero Out Work C Axis (G10 L20 P5 C0)": "Zera o Eixo C de Trabalho (G10 L20 P5 C0)", + "Zero Out Work C Axis (G10 L20 P6 C0)": "Zera o Eixo C de Trabalho (G10 L20 P6 C0)", + "Zero Out Temporary C Axis (G92 C0)": "Define o Zero Temporário do Eixo C (G92 C0)", + "Un-Zero Out Temporary C Axis (G92.1 C0)": "Remove o Zero Temporário do Eixo C (G92.1 C0)", + "Go To Machine Zero On C Axis (G53 G0 C0)": "Vai para o Zero do Eixo C da Máquina (G53 G0 C0)", + "Zero Out Machine C Axis (G28.3 C0)": "Define o Zero do Eixo C da Máquina (G28.3 C0)", + "Home Machine C Axis (G28.2 C0)": "Origem do Eixo C da Máquina (G28.2 C0)", + "mm": "mm", + "in": "in", + "deg": "deg", + "Zero Out Machine": "Define o Zero da Máquina", + "Home Machine": "Origem da Máquina", + "Zero Out Work Offsets": "", + "Set Work Offsets": "Define deslocamento de Trabalho", + "Axis": "Eixo", + "Machine Position": "Posição da Máquina", + "Work Position": "Posição de Trabalho", + "Axes": "Eixos", + "Keypad jogging": "", + "Edit": "Editar", + "Expand": "Expandir", + "Collapse": "Recolher", + "More": "Mais", + "Enter Full Screen": "Entrar em Tela Cheia", + "Exit Full Screen": "Sair de Tela Cheia", + "Move X- Y+": "Move X- Y+", + "Move Y+": "Move Y+", + "Move X+ Y+": "Move X+ Y+", + "Move Z+": "Move Z+", + "Move X-": "Move X-", + "Move To XY Zero (G0 X0 Y0)": "Move para XY Zero (G0 X0 Y0)", + "Move X+": "Move X+", + "Move To Z Zero (G0 Z0)": "Move para Z Zero (G0 Z0)", + "Move X- Y-": "Move X- Y-", + "Move Y-": "Move Y-", + "Move X+ Y-": "Move X+ Y-", + "Move Z-": "Move Z-", + "Units": "Unidades", + "G20 (inch)": "G20 (polegada)", + "G21 (mm)": "G21 (mm)", + "Imperial": "Imperial", + "Metric": "Métrico", + "Right": "Direita", + "Left": "Esquerda", + "Up": "Acima", + "Down": "Abaixo", + "Page Up": "Página acima", + "Page Down": "Página abaixo", + "Right Square Bracket": "Suporte quadrado direito", + "Left Square Bracket": "Suporte quadrado esquerdo", + "0.1x Move": "Move 0,1x", + "Alt": "Alt", + "10x Move": "Move 10x", + "⇧ Shift": "⇧ Muda", + "X-axis": "Eixo X", + "Y-axis": "Eixo Y", + "Z-axis": "Eixo Z", + "A-axis": "Eixo A", + "B-axis": "Eixo B", + "C-axis": "Eixo C", + "Custom Commands": "Comandos Personalizados", + "Axes Settings": "Configurações de eixos", + "ShuttleXpress": "", + "Feed Rate Range: {{min}} - {{max}} mm/min": "Faixa da Velocidade de usinagem: {{min}} - {{max}} mm/min", + "Repeat Rate: {{hertz}}Hz": "Taxa de repetição: {{hertz}}Hz", + "60 Times per Second": "60 vezes por segundo", + "45 Times per Second": "45 vezes por segundo", + "30 Times per Second": "30 vezes por segundo", + "15 Times per Second": "15 vezes por segundo", + "10 Times per Second": "10 vezes por segundo", + "5 Times per Second": "5 vezes por segundo", + "2 Times per Second": "2 vezes por segundo", + "Once Every Second": "Uma vez por segundo", + "Distance Overshoot: {{overshoot}}x": "Distância de passagem: {{overshoot}}x", + "Manufacturer: {{manufacturer}}": "Fabricante: {{fabricante}}", + "Port": "Porta", + "No ports available": "Não há portas disponíveis", + "Choose a port": "Escolha uma porta", + "Refresh": "Atualizar", + "Baud rate": "Taxa de transmissão", + "Choose a baud rate": "Escolha uma taxa de transmissão (baud rate)", + "Enable hardware flow control": "Ativar controle de fluxo de hardware", + "Connect automatically": "Conectar automaticamente", + "Open": "Abrir", + "Error opening serial port '{{- port}}'": "Erro abrindo porta serial '{{- port}}'", + "Connection": "Conexão", + "No serial connection": "Nenhuma conexão serial", + "Connected to {{-port}} with a baud rate of {{baudrate}}": "Conectado à porta {{-port}} com taxa de transferência de {{baudrate}}", + "Console": "Console", + "Clear all": "Limpar tudo", + "Select All": "Selecionar Tudo", + "Clear Selection": "Limpar Seleção", + "URL not configured": "URL não configurada", + "The widget is currently disabled": "O módulo está desabilitado", + "Enable": "Habilitar", + "Disable": "Desabilitar", + "URL": "URL", + "Min": "Min", + "Max": "Max", + "Dimension": "Dimensão", + "Sent": "Enviado", + "Received": "Recebido", + "Start Time": "Tempo inicial", + "Elapsed Time": "Tempo transcorrido", + "Finish Time": "Tempo final", + "Remaining Time": "Tempo restante", + "Controller State": "Estado do controlador", + "Controller Settings": "Configurações do controlador", + "Hide": "Esconder", + "Show": "Mostrar", + "Queue Reports": "Relatórios de fila", + "Planner Buffer": "", + "Receive Buffer": "", + "Status Reports": "Relatórios de status", + "State": "Estado", + "Feed Rate": "Velocidade de usinagem", + "Spindle": "Spindle", + "Tool Number": "Número da ferramenta", + "Modal Groups": "Grupos modais", + "Motion": "Movimento", + "Coordinate": "Coordenada", + "Plane": "Plano", + "Distance": "Distância", + "Program": "Programa", + "Coolant": "Refrigerante", + "Status Report (?)": "Relatório de status (?)", + "Check G-code Mode ($C)": "Modo Verificar G-code ($C)", + "Homing ($H)": "Casa ($H)", + "Kill Alarm Lock ($X)": "Desativar o Alarme de Bloqueio ($X)", + "Sleep ($SLP)": "Suspender ($SLP)", + "Help ($)": "Ajuda ($)", + "Settings ($$)": "Configurações ($$)", + "View G-code Parameters ($#)": "Ver Parâmetros G-code ($#)", + "View G-code Parser State ($G)": "Ver o estado do Analisador G-code ($G)", + "View Build Info ($I)": "Ver Informações de Compilação ($I)", + "View Startup Blocks ($N)": "Ver Blocos de Inicialização ($N)", + "Laser": "Laser", + "Laser Intensity Control": "Controle de Intensidade do Laser", + "Laser Test": "Testar Laser", + "Power (%)": "Potência (%)", + "Test duration": "Duração do teste", + "ms": "ms", + "Maximum value": "Valor máximo", + "Laser Off": "Desligar Laser", + "New Macro": "Nova Macro", + "Macro Name": "Nome da macro", + "Macro Commands": "Comandos da Macro", + "Macro Variables": "Variáveis da Macro", + "Edit Macro": "Editar uma macro", + "Delete Macro": "Excluir uma macro", + "Are you sure you want to delete this macro?": "Tem certeza de que deseja excluir esta macro?", + "No": "Não", + "Yes": "Sim", + "Macro": "Macro", + "Are you sure you want to load this macro?": "Tem certeza de que deseja carregar essa macro?", + "No macros": "Sem macros", + "Run": "Executar", + "Get Extruder Temperature (M105)": "Obter a temperatura da extrusora (M105)", + "Get Current Position (M114)": "Obter a posição atual (M114)", + "Get Firmware Version and Capabilities (M115)": "Obter versão e capacidades de firmware (M115)", + "Heater Control": "Controle do aquecedor", + "Extruder": "Extrusora", + "°C": "°C", + "Set the target temperature for the extruder": "Defina a temperatura desejada para a extrusora", + "Heated Bed": "Cama aquecida", + "Set the target temperature for the heated bed": "Defina a temperatura desejada para a cama aquecida", + "Extruder Temperature": "Temperatura da extrusora", + "Heated Bed Temperature": "Temperatura da cama aquecida", + "Extruder Power": "Potência da Extrusora", + "Heated Bed Power": "Potência da Cama Aquecida", + "Probe": "Referenciamento e Nivelamento", + "mm/min": "mm/min", + "in/min": "in/min", + "Probe Command": "Comando para Referenciamento", + "G38.2 probe toward workpiece, stop on contact, signal error if failure": "G38.2 avança na direção da placa de toque, para no contato, sinal de erro se falhar", + "G38.3 probe toward workpiece, stop on contact": "G38.3 avança na direção da placa de toque, para no contato", + "G38.4 probe away from workpiece, stop on loss of contact, signal error if failure": "G38.4 se distancia da placa de toque, para na perda de contato, sinal de erro se falhar", + "G38.5 probe away from workpiece, stop on loss of contact": "G38.5 se distancia da placa de toque, para na perda de contato", + "Probe Depth": "Profundidade", + "Probe Feedrate": "Velocidade", + "Touch Plate Thickness": "Espessura da placa de toque", + "Retraction Distance": "Distância de retração", + "Z-Probe": "Sensor Z", + "Apply tool length offset": "Aplicar offset de comprimento da ferramenta", + "Run Z-Probe": "Rodar o referenciamento de Z", + "Spindle Speed": "Velocidade do Spindle", + "RPM": "RPM", + "Queue Flush (%)": "Fluxo da fila (%)", + "Kill Job (^d)": "Matar Trabalho (^d)", + "Clear Alarm ($clear)": "Limpar alarme ($clear)", + "Show System Settings": "Mostrar configurações do sistema", + "Show All Settings": "Mostrar todas as configurações", + "List Self Tests": "Lista autotestes", + "Power Management": "Gerenciamento de energia", + "Enable Motors": "Habilitar Motores", + "Disable Motors": "Desabilitar Motores", + "Motor {{n}}": "Motor {{n}}", + "Velocity": "Velocidade", + "Line": "Linha", + "Path": "Caminho", + "G-code not loaded": "G-code não carregado", + "Tool Change": "Troca de Ferramenta", + "Are you sure you want to resume program execution?": "Tem certeza de que deseja retomar a execução do programa?", + "Click the Resume button to resume program execution.": "Clique no botão Continuar para retomar a execução do programa.", + "Click the Stop button to stop program execution.": "Clique no botão Parar para parar a execução do programa.", + "Run a tool change macro to change the tool and adjust the Z-axis offset. Afterwards, click the Resume button to resume program execution.": "Execute uma macro de mudança de ferramenta para alterar a ferramenta e ajuste o deslocamento do eixo Z. Depois, clique no botão Continuar para retomar a execução do programa.", + "Waiting for the target temperature to be reached...": "Esperando que a temperatura desejada seja alcançada ...", + "Work Coordinate System": "Sistema de Coordenadas de Trabalho", + "Enable 3D View": "Habilitar Visão 3D", + "Disable 3D View": "Desabilitar Visão 3D", + "3D View": "Visão 3D", + "Projection": "Projeção", + "Perspective Projection": "Projeção de Perspectiva", + "Orthographic Projection": "Projeção ortográfica", + "Display G-code Filename": "Exibir o nome do arquivo G-code", + "Hide Coordinate System": "Ocultar sistema de coordenadas", + "Show Coordinate System": "Mostrar sistema de coordenadas", + "Hide Grid Line Numbers": "Ocultar números de linha de grade", + "Show Grid Line Numbers": "Mostrar números de linha de grade", + "File folder": "Pasta de arquivos", + "{{extname}} File": "Arquivo {{extname}}", + "File": "Arquivo", + "3D rendering": "Renderização 3D", + "Zoom In": "Zoom +", + "Zoom Out": "Zoom -", + "Move the camera": "Move a câmera", + "Rotate the camera": "Rotaciona a câmera", + "Watch Directory": "Assistir o Diretório", + "Date modified": "Data de modificação", + "Type": "Tipo", + "Size": "Tamanho", + "Load G-code": "Carregar G-code", + "Upload G-code": "Abrir um arquivo G-code", + "Browse...": "Procurar...", + "Resume": "Continuar", + "Pause": "Pausar", + "Webcam": "Webcam", + "Webcam Settings": "Configurações da Webcam", + "Media Source": "Fonte da Midia", + "Use a built-in camera or a connected webcam": "Use uma câmera embutida ou uma webcam conectada", + "Use a M-JPEG stream over HTTP": "Use um fluxo M-JPEG sobre HTTP", + "Webcam is off": "Webcam desligada", + "Rotate Left": "Virar à esquerda", + "Rotate Right": "Virar à direita", + "Flip Horizontally": "Inverte horizontalmente", + "Flip Vertically": "Inverte verticalmente", + "Crosshair": "Mira", + "Manual Data Input": "Entrada manual de dados", + "MDI": "MDI", + "Button Width": "Largura do botão", + "Order": "Ordem", + "Move Up": "Sobe", + "Move Down": "Desce", + "Remove": "Remover", + "Waiting for the planner to empty...": "Esperando o planejador esvaziar ...", + "No video devices available": "Não há dispositivos de vídeo disponíveis", + "Choose a video device": "Escolha um dispositivo de vídeo", + "Automatic detection": "Detecção automática", + "Move Backward": "", + "Move Forward": "", + "Top View": "", + "Front View": "", + "Zoom to Fit": "", + "Right Side View": "", + "Left Side View": "", + "Custom range...": "Intervalo personalizado...", + "Today": "Hoje", + "Last {{n}} days": "Últimos {{n}} dias", + "Apply": "Aplicar", + "Add": "Adicionar", + "Custom Jog Distance (mm)": "", + "Custom Jog Distance (inches)": "", + "Machine Profiles": "", + "No machine profile selected": "", + "Delete machine profile": "", + "Machine Profile": "", + "Limits": "", + "User Accounts": "Contas de Usuário", + "New Account": "Nova Conta", + "Hide Limits": "", + "Show Limits": "", + "WebGL: <1>Enabled": "WebGL: <1>Ativado", + "WebGL: <1>Disabled": "WebGL: <1>Desativado", + "Hide Cutting Tool": "", + "Show Cutting Tool": "", + "Ready to start": "" } diff --git a/src/web/i18n/ru/controller.json b/src/app/i18n/ru/controller.json similarity index 100% rename from src/web/i18n/ru/controller.json rename to src/app/i18n/ru/controller.json diff --git a/src/web/i18n/ru/gcode.json b/src/app/i18n/ru/gcode.json similarity index 100% rename from src/web/i18n/ru/gcode.json rename to src/app/i18n/ru/gcode.json diff --git a/src/app/i18n/ru/resource.json b/src/app/i18n/ru/resource.json old mode 100755 new mode 100644 index 83071dc86..04932e0e6 --- a/src/app/i18n/ru/resource.json +++ b/src/app/i18n/ru/resource.json @@ -1,4 +1,533 @@ { - "loading": "Загрузка...", - "title": "CNCjs" + "Records: {{from}} - {{to}} / {{total}}": "Записи: {{from}}–{{to}}/{{total}}", + "Records: {{total}}": "Записи: {{total}}", + "{{pageLength}} per page": "{{pageLength}} на страницу", + "New update available": "Доступно новое обновление", + "Command succeeded": "", + "Command failed ({{err}})": "", + "My Account": "", + "Signed in as {{name}}": "", + "Account": "Учётная запись", + "Sign Out": "Выход", + "Options": "Настройки", + "Command": "", + "Show notifications": "", + "Help": "", + "Report an issue": "Сообщить о проблеме", + "Cycle Start": "Пуск", + "Feedhold": "Пауза", + "Homing": "Базировать", + "Sleep": "Сон", + "Unlock": "Разблокировать", + "Reset": "Сброс", + "Authentication failed.": "", + "Error": "", + "Sign in to {{name}}": "", + "Username": "Имя пользователя", + "Password": "Пароль", + "Sign In": "Вход", + "Forgot your password?": "", + "A web-based interface for CNC milling controller running Grbl, Smoothieware, or TinyG": "", + "Learn more": "Подробнее", + "Downloads": "Загрузки", + "Checking for updates...": "Проверка наличия обновлений...", + "A new version of {{name}} is available": "Имеется новая версия {{name}}", + "Version {{version}}": "Версия {{version}}", + "Latest version": "Последней версии", + "You already have the newest version of {{name}}": "Вы уже имеете самую новую версию {{name}}", + "New": "", + "Account status": "", + "Name": "Имя", + "Confirm Password": "", + "Cancel": "Отмена", + "OK": "ОК", + "An unexpected error has occurred.": "", + "Loading...": "Загрузка...", + "No data to display": "", + "Enabled": "Включено", + "Disabled": "Отключено", + "Date Modified": "", + "Action": "Действие", + "Edit Account": "", + "Delete Account": "", + "Settings": "Настройки", + "Are you sure you want to delete the account?": "", + "Update": "", + "Old Password": "", + "Change Password": "", + "New Password": "", + "Commands": "", + "Title": "", + "and more...": "", + "Delete": "Удалить", + "Are you sure you want to delete this item?": "", + "Exception": "", + "Continue execution when an error is detected in the G-code program": "", + "Enabling this option may cause machine damage if you don't have an Emergency Stop button to prevent a dangerous situation.": "", + "Save Changes": "Сохранить изменения", + "Events": "", + "Event": "", + "Choose an event": "", + "Startup (System only)": "", + "Open a serial port (System only)": "", + "Close a serial port (System only)": "", + "G-code: Load": "", + "G-code: Unload": "", + "G-code: Start": "", + "G-code: Stop": "", + "G-code: Pause": "", + "G-code: Resume": "", + "Feed Hold": "", + "Run Macro": "Запуск макроса", + "Load Macro": "", + "Trigger": "", + "Choose an trigger": "", + "System": "", + "G-code": "G-код", + "Automatically check for updates": "", + "Language": "Язык", + "General": "Общие", + "Workspace": "Рабочая область", + "Controller": "", + "About": "О программе", + "The account name is already being used. Choose another name.": "", + "Passwords do not match.": "Пароли не совпадают.", + "Import": "", + "Are you sure you want to overwrite the workspace settings?": "", + "Restore Defaults": "Восстановить настройки по умолчанию", + "Are you sure you want to restore the default settings?": "", + "Import Error": "", + "Invalid file format.": "", + "Close": "Закрыть", + "Export": "", + "Click the Continue button to resume execution.": "", + "Stop": "Стоп", + "Continue": "", + "Server has stopped working": "", + "A problem caused the server to stop working correctly. Check out the server status and try again.": "", + "Reload": "", + "Fork Widget": "", + "Are you sure you want to fork this widget?": "", + "Remove Widget": "", + "Are you sure you want to remove this widget?": "", + "On": "Включено", + "Off": "Выкл.", + "Visualizer Widget": "Виджет визуализации", + "This widget visualizes a G-code file and simulates the tool path.": "Этот виджет отрисовывает G-код и показывает симуляцию инструментов.", + "Connection Widget": "Виджет подключения", + "This widget lets you establish a connection to a serial port.": "Этот виджет позволяет установить подключение по последовательному порту.", + "Console Widget": "Виджет консоли", + "This widget lets you read and write data to the CNC controller connected to a serial port.": "Этот виджет позволяет читать и записывать данные в ЧПУ контроллер, подключенный к последовательному порту.", + "Grbl Widget": "Виджет Grbl", + "This widget shows the Grbl state and provides Grbl specific features.": "Этот виджет показывает состояние Grbl и позволяет управлять настройками Grbl.", + "Marlin Widget": "", + "This widget shows the Marlin state and provides Marlin specific features.": "", + "Smoothie Widget": "", + "This widget shows the Smoothie state and provides Smoothie specific features.": "", + "TinyG Widget": "Виджет TinyG", + "This widget shows the TinyG state and provides TinyG specific features.": "Этот виджет показывает состояние TinyG и позволяет управлять настройками TinyG.", + "Axes Widget": "Виджет осей", + "This widget shows the XYZ position. It includes jog controls, homing, and axis zeroing.": "Этот виджет показывает позицию XYZ, включая управление, базирование и обнуление осей.", + "G-code Widget": "Виджет G-кода", + "This widget shows the current status of G-code commands.": "Этот виджет показывает текущее состояние команд G-кода.", + "Laser Widget": "", + "This widget allows you control laser intensity and turn the laser on/off.": "", + "Macro Widget": "Виджет макрос", + "This widget can use macros to automate routine tasks.": "Этот виджет может использовать макросы для автоматизации рутинных задач.", + "Probe Widget": "Виджет пробы", + "This widget helps you use a touch plate to set your Z zero offset.": "Этот виджет позволяет вам использовать пробник, чтобы настроить ноль и смещение по оси Z.", + "Spindle Widget": "Виджет шпинделя", + "This widget provides the spindle control.": "Этот виджет позволяет управлять шпинделем.", + "Custom Widget": "", + "This widget gives you a communication interface for creating your own widget.": "", + "Webcam Widget": "Виджет камеры", + "This widget lets you monitor a webcam.": "Этот виджет позволяет вам следить за камерой.", + "Widgets": "Виджеты", + "M0 Program Pause": "", + "M1 Program Pause": "", + "M2 Program End": "", + "M30 Program End": "", + "M6 Tool Change": "", + "M109 Set Extruder Temperature": "", + "M190 Set Heated Bed Temperature": "", + "Drop G-code file here": "Перетащите G-код сюда", + "Manage Widgets ({{inactiveCount}})": "Управление виджетами ({{inactiveCount}})", + "Collapse All": "", + "Expand All": "", + "Corrupted workspace settings": "", + "The workspace settings have become corrupted or invalid. Click Restore Defaults to restore default settings and continue.": "", + "Download workspace settings": "", + "This field is required.": "Это поле обязательно.", + "Passwords should be equal.": "", + "Work Coordinate System (G54)": "Рабочая система координат (G54)", + "Work Coordinate System (G55)": "Рабочая система координат (G55)", + "Work Coordinate System (G56)": "Рабочая система координат (G56)", + "Work Coordinate System (G57)": "Рабочая система координат (G57)", + "Work Coordinate System (G58)": "Рабочая система координат (G58)", + "Work Coordinate System (G59)": "Рабочая система координат (G59)", + "Go To Work Zero (G0 X0 Y0 Z0)": "В рабочий ноль (G0 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P1 X0 Y0 Z0)": "Обнулить рабочие оси (G10 L20 P1 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P2 X0 Y0 Z0)": "Обнулить рабочие оси (G10 L20 P2 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P3 X0 Y0 Z0)": "Обнулить рабочие оси (G10 L20 P3 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P4 X0 Y0 Z0)": "Обнулить рабочие оси (G10 L20 P4 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P5 X0 Y0 Z0)": "Обнулить рабочие оси (G10 L20 P5 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P6 X0 Y0 Z0)": "Обнулить рабочие оси (G10 L20 P6 X0 Y0 Z0)", + "Temporary Offsets (G92)": "Временные смещения (G92)", + "Zero Out Temporary Offsets (G92 X0 Y0 Z0)": "Обнулить временные смещения (G92 X0 Y0 Z0)", + "Un-Zero Out Temporary Offsets (G92.1 X0 Y0 Z0)": "Отменить обнуление временных смещений (G92.1 X0 Y0 Z0)", + "Machine Coordinate System (G53)": "Машинная координатная система (G53)", + "Go To Machine Zero (G53 G0 X0 Y0 Z0)": "В машинный ноль (G53 G0 X0 Y0 Z0)", + "Set Machine Zero (G28.3 X0 Y0 Z0)": "", + "Homing Sequence (G28.2 X0 Y0 Z0)": "", + "Go To Work Zero On X Axis (G0 X0)": "В рабочий ноль по оси X (G0 X0)", + "Zero Out Work X Axis (G10 L20 P1 X0)": "Обнулить рабочую ось X (G10 L20 P1 X0)", + "Zero Out Work X Axis (G10 L20 P2 X0)": "Обнулить рабочую ось X (G10 L20 P2 X0)", + "Zero Out Work X Axis (G10 L20 P3 X0)": "Обнулить рабочую ось X (G10 L20 P3 X0)", + "Zero Out Work X Axis (G10 L20 P4 X0)": "Обнулить рабочую ось X (G10 L20 P4 X0)", + "Zero Out Work X Axis (G10 L20 P5 X0)": "Обнулить рабочую ось X (G10 L20 P5 X0)", + "Zero Out Work X Axis (G10 L20 P6 X0)": "Обнулить рабочую ось X (G10 L20 P6 X0)", + "Zero Out Temporary X Axis (G92 X0)": "Обнулить временное смещение по оси X (G92 X0)", + "Un-Zero Out Temporary X Axis (G92.1 X0)": "Отменить обнуление оси X (G92.1 X0)", + "Go To Machine Zero On X Axis (G53 G0 X0)": "В машинный ноль по оси X (G53 G0 X0)", + "Zero Out Machine X Axis (G28.3 X0)": "", + "Home Machine X Axis (G28.2 X0)": "", + "Go To Work Zero On Y Axis (G0 Y0)": "В рабочий ноль по оси Y (G0 Y0)", + "Zero Out Work Y Axis (G10 L20 P1 Y0)": "Обнулить рабочую ось Y (G10 L20 P1 Y0)", + "Zero Out Work Y Axis (G10 L20 P2 Y0)": "Обнулить рабочую ось Y (G10 L20 P2 Y0)", + "Zero Out Work Y Axis (G10 L20 P3 Y0)": "Обнулить рабочую ось Y (G10 L20 P3 Y0)", + "Zero Out Work Y Axis (G10 L20 P4 Y0)": "Обнулить рабочую ось Y (G10 L20 P4 Y0)", + "Zero Out Work Y Axis (G10 L20 P5 Y0)": "Обнулить рабочую ось Y (G10 L20 P5 Y0)", + "Zero Out Work Y Axis (G10 L20 P6 Y0)": "Обнулить рабочую ось Y (G10 L20 P6 Y0)", + "Zero Out Temporary Y Axis (G92 Y0)": "Обнулить временное смещение по оси Y (G92 Y0)", + "Un-Zero Out Temporary Y Axis (G92.1 Y0)": "Отменить обнуление оси Y (G92.1 Y0)", + "Go To Machine Zero On Y Axis (G53 G0 Y0)": "В машинный ноль по оси Y (G53 G0 Y0)", + "Zero Out Machine Y Axis (G28.3 Y0)": "", + "Home Machine Y Axis (G28.2 Y0)": "", + "Go To Work Zero On Z Axis (G0 Z0)": "В рабочий ноль по оси Z (G0 Z0)", + "Zero Out Work Z Axis (G10 L20 P1 Z0)": "Обнулить рабочую ось Z (G10 L20 P1 Z0)", + "Zero Out Work Z Axis (G10 L20 P2 Z0)": "Обнулить рабочую ось Z (G10 L20 P2 Z0)", + "Zero Out Work Z Axis (G10 L20 P3 Z0)": "Обнулить рабочую ось Z (G10 L20 P3 Z0)", + "Zero Out Work Z Axis (G10 L20 P4 Z0)": "Обнулить рабочую ось Z (G10 L20 P4 Z0)", + "Zero Out Work Z Axis (G10 L20 P5 Z0)": "Обнулить рабочую ось Z (G10 L20 P5 Z0)", + "Zero Out Work Z Axis (G10 L20 P6 Z0)": "Обнулить рабочую ось Z (G10 L20 P6 Z0)", + "Zero Out Temporary Z Axis (G92 Z0)": "Обнулить временное смещение по оси Z (G92 Z0)", + "Un-Zero Out Temporary Z Axis (G92.1 Z0)": "Отменить обнуление оси Z (G92.1 Z0)", + "Go To Machine Zero On Z Axis (G53 G0 Z0)": "В машинный ноль по оси Z (G53 G0 Z0)", + "Zero Out Machine Z Axis (G28.3 Z0)": "", + "Home Machine Z Axis (G28.2 Z0)": "", + "Go To Work Zero On A Axis (G0 A0)": "В рабочий ноль по оси A (G0 A0)", + "Zero Out Work A Axis (G10 L20 P1 A0)": "Обнулить рабочую ось A (G10 L20 P1 A0)", + "Zero Out Work A Axis (G10 L20 P2 A0)": "Обнулить рабочую ось A (G10 L20 P2 A0)", + "Zero Out Work A Axis (G10 L20 P3 A0)": "Обнулить рабочую ось A (G10 L20 P3 A0)", + "Zero Out Work A Axis (G10 L20 P4 A0)": "Обнулить рабочую ось A (G10 L20 P4 A0)", + "Zero Out Work A Axis (G10 L20 P5 A0)": "Обнулить рабочую ось A (G10 L20 P5 A0)", + "Zero Out Work A Axis (G10 L20 P6 A0)": "Обнулить рабочую ось A (G10 L20 P6 A0)", + "Zero Out Temporary A Axis (G92 A0)": "Обнулить временное смещение по оси A (G92 A0)", + "Un-Zero Out Temporary A Axis (G92.1 A0)": "Отменить обнуление оси A (G92.1 A0)", + "Go To Machine Zero On A Axis (G53 G0 A0)": "В машинный ноль по оси A (G53 G0 A0)", + "Zero Out Machine A Axis (G28.3 A0)": "", + "Home Machine A Axis (G28.2 A0)": "", + "Go To Work Zero On B Axis (G0 B0)": "", + "Zero Out Work B Axis (G10 L20 P1 B0)": "", + "Zero Out Work B Axis (G10 L20 P2 B0)": "", + "Zero Out Work B Axis (G10 L20 P3 B0)": "", + "Zero Out Work B Axis (G10 L20 P4 B0)": "", + "Zero Out Work B Axis (G10 L20 P5 B0)": "", + "Zero Out Work B Axis (G10 L20 P6 B0)": "", + "Zero Out Temporary B Axis (G92 B0)": "", + "Un-Zero Out Temporary B Axis (G92.1 B0)": "", + "Go To Machine Zero On B Axis (G53 G0 B0)": "", + "Zero Out Machine B Axis (G28.3 B0)": "", + "Home Machine B Axis (G28.2 B0)": "", + "Go To Work Zero On C Axis (G0 C0)": "", + "Zero Out Work C Axis (G10 L20 P1 C0)": "", + "Zero Out Work C Axis (G10 L20 P2 C0)": "", + "Zero Out Work C Axis (G10 L20 P3 C0)": "", + "Zero Out Work C Axis (G10 L20 P4 C0)": "", + "Zero Out Work C Axis (G10 L20 P5 C0)": "", + "Zero Out Work C Axis (G10 L20 P6 C0)": "", + "Zero Out Temporary C Axis (G92 C0)": "", + "Un-Zero Out Temporary C Axis (G92.1 C0)": "", + "Go To Machine Zero On C Axis (G53 G0 C0)": "", + "Zero Out Machine C Axis (G28.3 C0)": "", + "Home Machine C Axis (G28.2 C0)": "", + "mm": "мм", + "in": "дюймы", + "deg": "", + "Zero Out Machine": "", + "Home Machine": "", + "Zero Out Work Offsets": "", + "Set Work Offsets": "", + "Axis": "Ось", + "Machine Position": "Машинная позиция", + "Work Position": "Рабочая позиция", + "Axes": "Оси", + "Keypad jogging": "", + "Edit": "Редактировать", + "Expand": "", + "Collapse": "", + "More": "Больше", + "Enter Full Screen": "", + "Exit Full Screen": "", + "Move X- Y+": "Перемещение X- Y+", + "Move Y+": "Перемещение Y+", + "Move X+ Y+": "Перемещение X+ Y+", + "Move Z+": "Перемещение Z+", + "Move X-": "Перемещение X-", + "Move To XY Zero (G0 X0 Y0)": "В ноль по XY (G0 X0 Y0)", + "Move X+": "Перемещение X+", + "Move To Z Zero (G0 Z0)": "В ноль по Z (G0 Z0)", + "Move X- Y-": "Перемещение X- Y-", + "Move Y-": "Перемещение Y-", + "Move X+ Y-": "Перемещение X+ Y-", + "Move Z-": "Перемещение Z-", + "Units": "Единицы", + "G20 (inch)": "", + "G21 (mm)": "", + "Imperial": "", + "Metric": "", + "Right": "Вправо", + "Left": "Влево", + "Up": "Вверх", + "Down": "Вниз", + "Page Up": "Страницу Вверх", + "Page Down": "Страницу Вниз", + "Right Square Bracket": "", + "Left Square Bracket": "", + "0.1x Move": "0.1-кратного Перемещение", + "Alt": "", + "10x Move": "10-кратного Перемещение", + "⇧ Shift": "", + "X-axis": "", + "Y-axis": "", + "Z-axis": "", + "A-axis": "", + "B-axis": "", + "C-axis": "", + "Custom Commands": "", + "Axes Settings": "Настройки осей", + "ShuttleXpress": "", + "Feed Rate Range: {{min}} - {{max}} mm/min": "Диапазон подачи: {{min}} - {{max}} мм/мин", + "Repeat Rate: {{hertz}}Hz": "Частота повтора: {{hertz}}Гц", + "60 Times per Second": "60 раз в секунду", + "45 Times per Second": "45 раз в секунду", + "30 Times per Second": "30 раз в секунду", + "15 Times per Second": "15 раз в секунду", + "10 Times per Second": "10 раз в секунду", + "5 Times per Second": "5 раз в секунду", + "2 Times per Second": "2 раза в секунду", + "Once Every Second": "Один раз в секунду", + "Distance Overshoot: {{overshoot}}x": "Перелет расстояния: {{overshoot}}x", + "Manufacturer: {{manufacturer}}": "Производитель: {{manufacturer}}", + "Port": "Порт", + "No ports available": "Нет доступных портов", + "Choose a port": "Выберите порт", + "Refresh": "Обновить", + "Baud rate": "Скорость передачи (baud rate)", + "Choose a baud rate": "Выберите скорость (baud rate)", + "Enable hardware flow control": "", + "Connect automatically": "Подключать автоматически", + "Open": "Открыть", + "Error opening serial port '{{- port}}'": "", + "Connection": "Подключение", + "No serial connection": "", + "Connected to {{-port}} with a baud rate of {{baudrate}}": "", + "Console": "Консоль", + "Clear all": "Очистить все", + "Select All": "", + "Clear Selection": "", + "URL not configured": "", + "The widget is currently disabled": "", + "Enable": "Включить", + "Disable": "Отключить", + "URL": "", + "Min": "Мин", + "Max": "Макс", + "Dimension": "Размер", + "Sent": "Загружено", + "Received": "", + "Start Time": "Время запуска", + "Elapsed Time": "", + "Finish Time": "", + "Remaining Time": "", + "Controller State": "", + "Controller Settings": "", + "Hide": "Скрыть", + "Show": "Показать", + "Queue Reports": "", + "Planner Buffer": "", + "Receive Buffer": "", + "Status Reports": "", + "State": "Состояние", + "Feed Rate": "Подача", + "Spindle": "Шпиндель", + "Tool Number": "Номер инструмента", + "Modal Groups": "Модальные группы", + "Motion": "Движение", + "Coordinate": "Система координат", + "Plane": "Плоскость", + "Distance": "Расстояния", + "Program": "Программа", + "Coolant": "СОЖ", + "Status Report (?)": "", + "Check G-code Mode ($C)": "Проверить режим G-кода ($C)", + "Homing ($H)": "Базировать ($H)", + "Kill Alarm Lock ($X)": "Выключить блокировку по тревоге ($X)", + "Sleep ($SLP)": "Сон ($SLP)", + "Help ($)": "Помощь по ($)", + "Settings ($$)": "Настройки ($$)", + "View G-code Parameters ($#)": "Показать параметры G-кода ($#)", + "View G-code Parser State ($G)": "Показать состояние парсера G-кода ($G)", + "View Build Info ($I)": "Показать версию ($I)", + "View Startup Blocks ($N)": "Показать команды при включении ($N)", + "Laser": "", + "Laser Intensity Control": "", + "Laser Test": "", + "Power (%)": "", + "Test duration": "", + "ms": "", + "Maximum value": "", + "Laser Off": "", + "New Macro": "", + "Macro Name": "Имя макроса", + "Macro Commands": "", + "Macro Variables": "", + "Edit Macro": "Редактирование макроса", + "Delete Macro": "Удаление макросов", + "Are you sure you want to delete this macro?": "", + "No": "Нет", + "Yes": "Да", + "Macro": "Макрос", + "Are you sure you want to load this macro?": "", + "No macros": "", + "Run": "Выполнить", + "Get Extruder Temperature (M105)": "", + "Get Current Position (M114)": "", + "Get Firmware Version and Capabilities (M115)": "", + "Heater Control": "", + "Extruder": "", + "°C": "", + "Set the target temperature for the extruder": "", + "Heated Bed": "", + "Set the target temperature for the heated bed": "", + "Extruder Temperature": "", + "Heated Bed Temperature": "", + "Extruder Power": "", + "Heated Bed Power": "", + "Probe": "Проба", + "mm/min": "мм/мин", + "in/min": "дюймы/мин", + "Probe Command": "Команда пробы", + "G38.2 probe toward workpiece, stop on contact, signal error if failure": "G38.2 проба до детали, стоп по контакту, выдать ошибку при неудаче", + "G38.3 probe toward workpiece, stop on contact": "G38.3 проба до детали, стоп по контакту", + "G38.4 probe away from workpiece, stop on loss of contact, signal error if failure": "G38.4 проба от детали, стоп по потере контакта, выдать ошибку при неудаче", + "G38.5 probe away from workpiece, stop on loss of contact": "G38.5 проба от детали, стоп по потере контакта", + "Probe Depth": "Глубина пробы", + "Probe Feedrate": "Подача пробы", + "Touch Plate Thickness": "Толщина пробника", + "Retraction Distance": "Дистанция отвода", + "Z-Probe": "", + "Apply tool length offset": "", + "Run Z-Probe": "Выполнить пробу Z", + "Spindle Speed": "Скорость вращения шпинделя", + "RPM": "", + "Queue Flush (%)": "", + "Kill Job (^d)": "", + "Clear Alarm ($clear)": "", + "Show System Settings": "", + "Show All Settings": "", + "List Self Tests": "", + "Power Management": "", + "Enable Motors": "", + "Disable Motors": "", + "Motor {{n}}": "", + "Velocity": "", + "Line": "", + "Path": "", + "G-code not loaded": "", + "Tool Change": "", + "Are you sure you want to resume program execution?": "", + "Click the Resume button to resume program execution.": "", + "Click the Stop button to stop program execution.": "", + "Run a tool change macro to change the tool and adjust the Z-axis offset. Afterwards, click the Resume button to resume program execution.": "", + "Waiting for the target temperature to be reached...": "", + "Work Coordinate System": "Рабочая система координат", + "Enable 3D View": "", + "Disable 3D View": "", + "3D View": "", + "Projection": "", + "Perspective Projection": "", + "Orthographic Projection": "", + "Display G-code Filename": "", + "Hide Coordinate System": "", + "Show Coordinate System": "", + "Hide Grid Line Numbers": "", + "Show Grid Line Numbers": "", + "File folder": "Папка с файлами", + "{{extname}} File": "файл \"{{extname}}\"", + "File": "файл", + "3D rendering": "3D-визуализация", + "Zoom In": "", + "Zoom Out": "", + "Move the camera": "", + "Rotate the camera": "", + "Watch Directory": "", + "Date modified": "Дата изменения", + "Type": "Тип", + "Size": "Размер", + "Load G-code": "", + "Upload G-code": "Загрузить G-код", + "Browse...": "", + "Resume": "", + "Pause": "Пауза", + "Webcam": "Камера", + "Webcam Settings": "Настройки камеры", + "Media Source": "", + "Use a built-in camera or a connected webcam": "", + "Use a M-JPEG stream over HTTP": "", + "Webcam is off": "Камера выключена", + "Rotate Left": "", + "Rotate Right": "", + "Flip Horizontally": "", + "Flip Vertically": "", + "Crosshair": "", + "Manual Data Input": "", + "MDI": "", + "Button Width": "", + "Order": "", + "Move Up": "", + "Move Down": "", + "Remove": "Удалить", + "Waiting for the planner to empty...": "", + "No video devices available": "", + "Choose a video device": "", + "Automatic detection": "", + "Front View": "", + "Move Backward": "", + "Move Forward": "", + "Top View": "", + "Zoom to Fit": "", + "Right Side View": "", + "Left Side View": "", + "Custom range...": "Пользовательский диапазон...", + "Today": "Сегодня", + "Last {{n}} days": "Последние {{n}} дн.", + "Apply": "Применить", + "Add": "Добавить", + "Custom Jog Distance (mm)": "", + "Custom Jog Distance (inches)": "", + "Machine Profiles": "", + "No machine profile selected": "", + "Delete machine profile": "", + "Machine Profile": "", + "Limits": "", + "User Accounts": "Учетные записи пользователей", + "New Account": "Создать учетную запись", + "Hide Limits": "", + "Show Limits": "", + "WebGL: <1>Enabled": "WebGL: <1>Включено", + "WebGL: <1>Disabled": "WebGL: <1>Отключено", + "Hide Cutting Tool": "", + "Show Cutting Tool": "", + "Ready to start": "" } diff --git a/src/web/i18n/tr/controller.json b/src/app/i18n/tr/controller.json similarity index 100% rename from src/web/i18n/tr/controller.json rename to src/app/i18n/tr/controller.json diff --git a/src/web/i18n/tr/gcode.json b/src/app/i18n/tr/gcode.json similarity index 100% rename from src/web/i18n/tr/gcode.json rename to src/app/i18n/tr/gcode.json diff --git a/src/app/i18n/tr/resource.json b/src/app/i18n/tr/resource.json old mode 100755 new mode 100644 index fcea5dcf6..843dc0581 --- a/src/app/i18n/tr/resource.json +++ b/src/app/i18n/tr/resource.json @@ -1,4 +1,533 @@ { - "loading": "Yükleniyor...", - "title": "CNCjs" + "Records: {{from}} - {{to}} / {{total}}": "Kayıtlar: {{from}} - {{to}} / {{total}}", + "Records: {{total}}": "Kayıtlar: {{total}}", + "{{pageLength}} per page": "{{pageLength}} sayfa başına", + "New update available": "Yeni bir güncelleme var", + "Command succeeded": "Komut Geçerli", + "Command failed ({{err}})": "Komut yanlış ({{err}})", + "My Account": "Hesabım", + "Signed in as {{name}}": "olarak giriş yapıldı {{name}}", + "Account": "Hesap", + "Sign Out": "Oturumu Kapat", + "Options": "Seçenekler", + "Command": "Komut", + "Show notifications": "Bildirimleri Göster", + "Help": "Yardım", + "Report an issue": "Sorun bildir", + "Cycle Start": "İşi Başlat", + "Feedhold": "İşi Beklet", + "Homing": "Başlangıç", + "Sleep": "Uyku", + "Unlock": "Kilidi Aç", + "Reset": "Sıfırla", + "Authentication failed.": "Kimlik Doğrulama Başarısız", + "Error": "Hata", + "Sign in to {{name}}": "Giriş yap {{name}}", + "Username": "Kullanıcı adı", + "Password": "şifre", + "Sign In": "Giriş", + "Forgot your password?": "Parolanızı mı unuttunuz?", + "A web-based interface for CNC milling controller running Grbl, Smoothieware, or TinyG": "Grbl, Smoothieware veya TinyG'yi çalıştıran CNC freze kontrolörü için web tabanlı bir arayüz", + "Learn more": "Daha fazla", + "Downloads": "İndir", + "Checking for updates...": "Güncellemeler Kontrol Ediliyor...", + "A new version of {{name}} is available": "{{name}} Yeni bir sürüm kullanıma sunuldu", + "Version {{version}}": "Version {{version}}", + "Latest version": "Son sürüm", + "You already have the newest version of {{name}}": "Zaten en yeni sürümüne sahipsiniz {{name}}", + "New": "Yeni", + "Account status": "Hesap durumu", + "Name": "İsim", + "Confirm Password": "Şİfreyi onayla", + "Cancel": "İptal", + "OK": "Tamam", + "An unexpected error has occurred.": "Beklenmeyen bir hata oluştu.", + "Loading...": "Bekleyin...", + "No data to display": "Gösterilecek bilgi yok", + "Enabled": "Etkin", + "Disabled": "Engelle", + "Date Modified": "Değiştirilme Tarihi", + "Action": "Action", + "Edit Account": "Hesabı Düzenle", + "Delete Account": "Hesabı Sil", + "Settings": "Ayarlar", + "Are you sure you want to delete the account?": "Hesabı silmek istediğinize emin misiniz?", + "Update": "Güncelle", + "Old Password": "Eski Şifre", + "Change Password": "Şifreyi değiştir", + "New Password": "Yeni şifre", + "Commands": "Komutlar", + "Title": "Başlık", + "and more...": "ve dahası...", + "Delete": "Sil", + "Are you sure you want to delete this item?": "Bu öğeyi silmek istediğinizden emin misiniz?", + "Exception": "İstisna", + "Continue execution when an error is detected in the G-code program": "G-kod programında bir hata tespit edildiğinde yürütmeye devam edin", + "Enabling this option may cause machine damage if you don't have an Emergency Stop button to prevent a dangerous situation.": "Tehlikeli bir durumu önlemek için acil durdurma düğmesi yoksa, bu seçeneğin etkinleştirilmesi makinenin hasar görmesine neden olabilir.", + "Save Changes": "Değişiklikleri Kaydet", + "Events": "Etkinlikler", + "Event": "Etkinlik", + "Choose an event": "Bir etkinlik seçin", + "Startup (System only)": "Başla (Yalnızca sistem)", + "Open a serial port (System only)": "Bir seri bağlantı noktası açın (yalnızca sistem)", + "Close a serial port (System only)": "Bir seri bağlantı noktasını kapatın (yalnızca sistem)", + "G-code: Load": "G-kodu: Yükle", + "G-code: Unload": "G-kodu: Boşalt", + "G-code: Start": "G-kodu: Başlat", + "G-code: Stop": "G-kodu: Durdur", + "G-code: Pause": "G-kodu: Beklet", + "G-code: Resume": "G-kodu: Devam et", + "Feed Hold": "Feed Hold", + "Run Macro": "Makroyu Çalıştır", + "Load Macro": "Makroyu Yükle", + "Trigger": "Tetikleyici", + "Choose an trigger": "Tetikleyici seçin", + "System": "Sistem", + "G-code": "G-kodu", + "Automatically check for updates": "Güncellemeleri otomatik olarak kontrol et", + "Language": "Dil", + "General": "Genel", + "Workspace": "Çalışma Alanı", + "Controller": "Kontroller", + "About": "Hakkında", + "The account name is already being used. Choose another name.": "Hesap adı zaten kullanılıyor. Başka bir isim seçin.", + "Passwords do not match.": "Parolalar uyuşmuyor.", + "Import": "Aç", + "Are you sure you want to overwrite the workspace settings?": "Çalışma alanı ayarlarını üzerine yazmak istediğinizden emin misiniz?", + "Restore Defaults": "Varsayılanları Geri Yükle", + "Are you sure you want to restore the default settings?": "Varsayılan ayarları geri yüklemek istediğinizden emin misiniz?", + "Import Error": "Açma Hatası", + "Invalid file format.": "Geçersiz dosya formatı.", + "Close": "Kapat", + "Export": "Kaydet", + "Click the Continue button to resume execution.": "Uygulamaya devam etmek için Devam düğmesini tıklayın.", + "Stop": "Durdur", + "Continue": "Devam Et", + "Server has stopped working": "Sunucu çalışmayı durdurdu", + "A problem caused the server to stop working correctly. Check out the server status and try again.": "Bir sorun sunucunun doğru çalışmasını durdurmasına neden oldu. Sunucu durumunu kontrol edin ve tekrar deneyin.", + "Reload": "Tekrar yükle", + "Fork Widget": "Pencere Öğesini çoğalt", + "Are you sure you want to fork this widget?": "Bu pencere öğesini çoğaltmak istediğinizden emin misiniz?", + "Remove Widget": "Pencere Öğesini Kaldır", + "Are you sure you want to remove this widget?": "Bu pencere öğesini kaldırmak istediğinizden emin misiniz?", + "On": "Aç", + "Off": "Kapat", + "Visualizer Widget": "Görselleştirme pencere öğesi", + "This widget visualizes a G-code file and simulates the tool path.": "Bu pencere öğesi bir G-kodu dosyasını görselleştirir ve takım yolunu taklit eder.", + "Connection Widget": "Bağlantı pencere öğesi", + "This widget lets you establish a connection to a serial port.": "Bu pencere öğesi, bir seri porta bağlantı kurmanızı sağlar.", + "Console Widget": "Konsol pencere öğesi", + "This widget lets you read and write data to the CNC controller connected to a serial port.": "Bu pencere öğesi, bir seri porta bağlı CNC cihazından veri okumanızı ve yazmanızı sağlar.", + "Grbl Widget": "Grbl pencere öğesi", + "This widget shows the Grbl state and provides Grbl specific features.": "Bu pencere öğesi Grbl durumunu gösterir ve Grbl'e özgü özellikleri sağlar.", + "Marlin Widget": "Marlin pencere öğesi", + "This widget shows the Marlin state and provides Marlin specific features.": "Bu widget, Marlin durumunu gösterir ve Marlin'e özgü özellikler sağlar.", + "Smoothie Widget": "Smoothie pencere öğesi", + "This widget shows the Smoothie state and provides Smoothie specific features.": "Bu widget, smoothie durumunu gösterir ve Smoothie'e özgü özellikler sağlar.", + "TinyG Widget": "TinyG pencere öğesi", + "This widget shows the TinyG state and provides TinyG specific features.": "Bu widget, TinyG durumunu gösterir ve TinyG'e özgü özellikler sağlar.", + "Axes Widget": "Makina Kontrol pencere öğesi", + "This widget shows the XYZ position. It includes jog controls, homing, and axis zeroing.": "Bu widget XYZ konumunu gösterir.Makina kontrolleri, Sıfırlama ve eksen sıfırlama gibi ayarları içerir.", + "G-code Widget": "G-Kod pencere öğesi", + "This widget shows the current status of G-code commands.": "Bu widget, G kod komutlarının geçerli durumunu gösterir.", + "Laser Widget": "Lazer pencere öğesi", + "This widget allows you control laser intensity and turn the laser on/off.": "Bu widget, lazer yoğunluğunu kontrol etmenizi ve lazeri açıp kapatmanızı sağlar.", + "Macro Widget": "Makro pencere öğesi", + "This widget can use macros to automate routine tasks.": "Bu widget, rutin görevleri otomatikleştirmek için makroları kullanmanızı sağlar.", + "Probe Widget": "Z ekseni sıfırlama pencere öğesi", + "This widget helps you use a touch plate to set your Z zero offset.": "Bu widget, Z eksenini sıfırlamak için dokunmatik plaka kullanmanıza yardımcı olur.", + "Spindle Widget": "Freze pencere öğesi", + "This widget provides the spindle control.": "Bu widget, Freze kontrolünü sağlar.", + "Custom Widget": "Özel pencere öğesi", + "This widget gives you a communication interface for creating your own widget.": "Bu pencere öğesi, kendi pencere öğenizi oluşturmanızı sağlar.", + "Webcam Widget": "web kamera pencere öğesi", + "This widget lets you monitor a webcam.": "Bu widget, bir web kamerasını izlemenize olanak tanır.", + "Widgets": "Pencere Öğeleri", + "M0 Program Pause": "M0 Programı beklet", + "M1 Program Pause": "M1 Programı beklet", + "M2 Program End": "M2 Program sonu", + "M30 Program End": "M30 Program sonu", + "M6 Tool Change": "M6 Takım değiştirme", + "M109 Set Extruder Temperature": "M109 Ekstrüder Sıcaklığını Ayarlayın", + "M190 Set Heated Bed Temperature": "M190 Isıtmalı tabla Sıcaklığını Ayarlayın", + "Drop G-code file here": "G-Kodu buraya sürükle", + "Manage Widgets ({{inactiveCount}})": "Pencere öğelerini Yönet ({{inactiveCount}})", + "Collapse All": "Tümünü Kapat", + "Expand All": "Tümünü aç", + "Corrupted workspace settings": "Bozuk çalışma alanı ayarları", + "The workspace settings have become corrupted or invalid. Click Restore Defaults to restore default settings and continue.": "Çalışma alanı ayarları bozuk veya geçersiz hale geldi. Varsayılan ayarları geri yüklemek ve devam etmek için Varsayılanları Geri Yükle'yi tıklayın.", + "Download workspace settings": "Çalışma alanı ayarlarını indir", + "This field is required.": "Bu alan gereklidir.", + "Passwords should be equal.": "Parolalar eşit olmalıdır.", + "Work Coordinate System (G54)": "Çalışma Koordinat Sistemi (G54)", + "Work Coordinate System (G55)": "Çalışma Koordinat Sistemi (G55)", + "Work Coordinate System (G56)": "Çalışma Koordinat Sistemi (G56)", + "Work Coordinate System (G57)": "Çalışma Koordinat Sistemi (G57)", + "Work Coordinate System (G58)": "Çalışma Koordinat Sistemi (G58)", + "Work Coordinate System (G59)": "Çalışma Koordinat Sistemi (G59)", + "Go To Work Zero (G0 X0 Y0 Z0)": "Sıfıra Git (G0 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P1 X0 Y0 Z0)": "Zero Out Work Offsets (G10 L20 P1 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P2 X0 Y0 Z0)": "Zero Out Work Offsets (G10 L20 P2 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P3 X0 Y0 Z0)": "Zero Out Work Offsets (G10 L20 P3 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P4 X0 Y0 Z0)": "Zero Out Work Offsets (G10 L20 P4 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P5 X0 Y0 Z0)": "Zero Out Work Offsets (G10 L20 P5 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P6 X0 Y0 Z0)": "Zero Out Work Offsets (G10 L20 P6 X0 Y0 Z0)", + "Temporary Offsets (G92)": "Temporary Offsets (G92)", + "Zero Out Temporary Offsets (G92 X0 Y0 Z0)": "Zero Out Temporary Offsets (G92 X0 Y0 Z0)", + "Un-Zero Out Temporary Offsets (G92.1 X0 Y0 Z0)": "Un-Zero Out Temporary Offsets (G92.1 X0 Y0 Z0)", + "Machine Coordinate System (G53)": "Makine Koordinat Sistemi (G53)", + "Go To Machine Zero (G53 G0 X0 Y0 Z0)": "Makina Sıfırına Git (G53 G0 X0 Y0 Z0)", + "Set Machine Zero (G28.3 X0 Y0 Z0)": "Makine Sıfırını Ayarla (G28.3 X0 Y0 Z0)", + "Homing Sequence (G28.2 X0 Y0 Z0)": "Başlangıç sırası (G28.2 X0 Y0 Z0)", + "Go To Work Zero On X Axis (G0 X0)": "X Ekseni Üzerinde Sıfıra Git (G0 X0)", + "Zero Out Work X Axis (G10 L20 P1 X0)": "Zero Out Work X Axis (G10 L20 P1 X0)", + "Zero Out Work X Axis (G10 L20 P2 X0)": "Zero Out Work X Axis (G10 L20 P2 X0)", + "Zero Out Work X Axis (G10 L20 P3 X0)": "Zero Out Work X Axis (G10 L20 P3 X0)", + "Zero Out Work X Axis (G10 L20 P4 X0)": "Zero Out Work X Axis (G10 L20 P4 X0)", + "Zero Out Work X Axis (G10 L20 P5 X0)": "Zero Out Work X Axis (G10 L20 P5 X0)", + "Zero Out Work X Axis (G10 L20 P6 X0)": "Zero Out Work X Axis (G10 L20 P6 X0)", + "Zero Out Temporary X Axis (G92 X0)": "Zero Out Temporary X Axis (G92 X0)", + "Un-Zero Out Temporary X Axis (G92.1 X0)": "Un-Zero Out Temporary X Axis (G92.1 X0)", + "Go To Machine Zero On X Axis (G53 G0 X0)": "X Ekseni Üzerinde Makine Sıfırına Git (G53 G0 X0)", + "Zero Out Machine X Axis (G28.3 X0)": "Zero Out Machine X Axis (G28.3 X0)", + "Home Machine X Axis (G28.2 X0)": "Home Machine X Axis (G28.2 X0)", + "Go To Work Zero On Y Axis (G0 Y0)": "Go To Work Zero On Y Axis (G0 Y0)", + "Zero Out Work Y Axis (G10 L20 P1 Y0)": "Zero Out Work Y Axis (G10 L20 P1 Y0)", + "Zero Out Work Y Axis (G10 L20 P2 Y0)": "Zero Out Work Y Axis (G10 L20 P2 Y0)", + "Zero Out Work Y Axis (G10 L20 P3 Y0)": "Zero Out Work Y Axis (G10 L20 P3 Y0)", + "Zero Out Work Y Axis (G10 L20 P4 Y0)": "Zero Out Work Y Axis (G10 L20 P4 Y0)", + "Zero Out Work Y Axis (G10 L20 P5 Y0)": "Zero Out Work Y Axis (G10 L20 P5 Y0)", + "Zero Out Work Y Axis (G10 L20 P6 Y0)": "Zero Out Work Y Axis (G10 L20 P6 Y0)", + "Zero Out Temporary Y Axis (G92 Y0)": "Zero Out Temporary Y Axis (G92 Y0)", + "Un-Zero Out Temporary Y Axis (G92.1 Y0)": "Un-Zero Out Temporary Y Axis (G92.1 Y0)", + "Go To Machine Zero On Y Axis (G53 G0 Y0)": "Go To Machine Zero On Y Axis (G53 G0 Y0)", + "Zero Out Machine Y Axis (G28.3 Y0)": "Zero Out Machine Y Axis (G28.3 Y0)", + "Home Machine Y Axis (G28.2 Y0)": "Home Machine Y Axis (G28.2 Y0)", + "Go To Work Zero On Z Axis (G0 Z0)": "Go To Work Zero On Z Axis (G0 Z0)", + "Zero Out Work Z Axis (G10 L20 P1 Z0)": "Zero Out Work Z Axis (G10 L20 P1 Z0)", + "Zero Out Work Z Axis (G10 L20 P2 Z0)": "Zero Out Work Z Axis (G10 L20 P2 Z0)", + "Zero Out Work Z Axis (G10 L20 P3 Z0)": "Zero Out Work Z Axis (G10 L20 P3 Z0)", + "Zero Out Work Z Axis (G10 L20 P4 Z0)": "Zero Out Work Z Axis (G10 L20 P4 Z0)", + "Zero Out Work Z Axis (G10 L20 P5 Z0)": "Zero Out Work Z Axis (G10 L20 P5 Z0)", + "Zero Out Work Z Axis (G10 L20 P6 Z0)": "Zero Out Work Z Axis (G10 L20 P6 Z0)", + "Zero Out Temporary Z Axis (G92 Z0)": "Zero Out Temporary Z Axis (G92 Z0)", + "Un-Zero Out Temporary Z Axis (G92.1 Z0)": "Un-Zero Out Temporary Z Axis (G92.1 Z0)", + "Go To Machine Zero On Z Axis (G53 G0 Z0)": "Go To Machine Zero On Z Axis (G53 G0 Z0)", + "Zero Out Machine Z Axis (G28.3 Z0)": "Zero Out Machine Z Axis (G28.3 Z0)", + "Home Machine Z Axis (G28.2 Z0)": "Home Machine Z Axis (G28.2 Z0)", + "Go To Work Zero On A Axis (G0 A0)": "Go To Work Zero On A Axis (G0 A0)", + "Zero Out Work A Axis (G10 L20 P1 A0)": "Zero Out Work A Axis (G10 L20 P1 A0)", + "Zero Out Work A Axis (G10 L20 P2 A0)": "Zero Out Work A Axis (G10 L20 P2 A0)", + "Zero Out Work A Axis (G10 L20 P3 A0)": "Zero Out Work A Axis (G10 L20 P3 A0)", + "Zero Out Work A Axis (G10 L20 P4 A0)": "Zero Out Work A Axis (G10 L20 P4 A0)", + "Zero Out Work A Axis (G10 L20 P5 A0)": "Zero Out Work A Axis (G10 L20 P5 A0)", + "Zero Out Work A Axis (G10 L20 P6 A0)": "Zero Out Work A Axis (G10 L20 P6 A0)", + "Zero Out Temporary A Axis (G92 A0)": "Zero Out Temporary A Axis (G92 A0)", + "Un-Zero Out Temporary A Axis (G92.1 A0)": "Un-Zero Out Temporary A Axis (G92.1 A0)", + "Go To Machine Zero On A Axis (G53 G0 A0)": "Go To Machine Zero On A Axis (G53 G0 A0)", + "Zero Out Machine A Axis (G28.3 A0)": "Zero Out Machine A Axis (G28.3 A0)", + "Home Machine A Axis (G28.2 A0)": "Home Machine A Axis (G28.2 A0)", + "Go To Work Zero On B Axis (G0 B0)": "", + "Zero Out Work B Axis (G10 L20 P1 B0)": "", + "Zero Out Work B Axis (G10 L20 P2 B0)": "", + "Zero Out Work B Axis (G10 L20 P3 B0)": "", + "Zero Out Work B Axis (G10 L20 P4 B0)": "", + "Zero Out Work B Axis (G10 L20 P5 B0)": "", + "Zero Out Work B Axis (G10 L20 P6 B0)": "", + "Zero Out Temporary B Axis (G92 B0)": "", + "Un-Zero Out Temporary B Axis (G92.1 B0)": "", + "Go To Machine Zero On B Axis (G53 G0 B0)": "", + "Zero Out Machine B Axis (G28.3 B0)": "", + "Home Machine B Axis (G28.2 B0)": "", + "Go To Work Zero On C Axis (G0 C0)": "", + "Zero Out Work C Axis (G10 L20 P1 C0)": "", + "Zero Out Work C Axis (G10 L20 P2 C0)": "", + "Zero Out Work C Axis (G10 L20 P3 C0)": "", + "Zero Out Work C Axis (G10 L20 P4 C0)": "", + "Zero Out Work C Axis (G10 L20 P5 C0)": "", + "Zero Out Work C Axis (G10 L20 P6 C0)": "", + "Zero Out Temporary C Axis (G92 C0)": "", + "Un-Zero Out Temporary C Axis (G92.1 C0)": "", + "Go To Machine Zero On C Axis (G53 G0 C0)": "", + "Zero Out Machine C Axis (G28.3 C0)": "", + "Home Machine C Axis (G28.2 C0)": "", + "mm": "mm", + "in": "in", + "deg": "deg", + "Zero Out Machine": "", + "Home Machine": "", + "Zero Out Work Offsets": "", + "Set Work Offsets": "", + "Axis": "Eksen", + "Machine Position": "Makina Pozisyonu", + "Work Position": "Çalışma Pozisyonu", + "Axes": "Makina Kontrol", + "Keypad jogging": "Tuşlarla Kontrol", + "Edit": "Düzenle", + "Expand": "Genişlet", + "Collapse": "Daralt", + "More": "Dahası", + "Enter Full Screen": "Tam ekran yap", + "Exit Full Screen": "Tam Ekrandan Çık", + "Move X- Y+": "Git X- Y+", + "Move Y+": "Git Y+", + "Move X+ Y+": "Git X+ Y+", + "Move Z+": "Git Z+", + "Move X-": "Git X-", + "Move To XY Zero (G0 X0 Y0)": "XY Sıfırına git(G0 X0 Y0)", + "Move X+": "Git X+", + "Move To Z Zero (G0 Z0)": "Z Sıfırına git (G0 Z0)", + "Move X- Y-": "Git X- Y-", + "Move Y-": "Git Y-", + "Move X+ Y-": "Git X+ Y-", + "Move Z-": "Git Z-", + "Units": "Birimler", + "G20 (inch)": "", + "G21 (mm)": "", + "Imperial": "", + "Metric": "", + "Right": "Sağ", + "Left": "Sol", + "Up": "Yukarı", + "Down": "Aşağı", + "Page Up": "Yukarı sayfa", + "Page Down": "Aşağı sayfa", + "Right Square Bracket": "Sağ Kare Köşebent", + "Left Square Bracket": "Sol Kare Köşebent", + "0.1x Move": "0.1x Git", + "Alt": "Alt", + "10x Move": "10x Git", + "⇧ Shift": "⇧ Shift", + "X-axis": "X-ekseni", + "Y-axis": "Y-ekseni", + "Z-axis": "Z-ekseni", + "A-axis": "A-ekseni", + "B-axis": "", + "C-axis": "", + "Custom Commands": "Özel Komutlar", + "Axes Settings": "Makina Kontrol Ayarları", + "ShuttleXpress": "ShuttleXpress", + "Feed Rate Range: {{min}} - {{max}} mm/min": "Besleme Hızı Oranı: {{min}} - {{max}} mm/min", + "Repeat Rate: {{hertz}}Hz": "Oranı Tekrarla: {{hertz}}Hz", + "60 Times per Second": "60 Saniyede başa dön", + "45 Times per Second": "45 Saniyede başa dön", + "30 Times per Second": "30 Saniyede başa dön", + "15 Times per Second": "15 Saniyede başa dön", + "10 Times per Second": "10 Saniyede başa dön", + "5 Times per Second": "5 Saniyede başa dön", + "2 Times per Second": "2 Saniyede başa dön", + "Once Every Second": "Her Saniyede Bir", + "Distance Overshoot: {{overshoot}}x": "Mesafeyi ileriye at: {{overshoot}}x", + "Manufacturer: {{manufacturer}}": "Üretici firma: {{manufacturer}}", + "Port": "Port", + "No ports available": "Bağlantı noktası yok", + "Choose a port": "Bir port seçin", + "Refresh": "Yenile", + "Baud rate": "Band hızı", + "Choose a baud rate": "Bir band hızı seçin", + "Enable hardware flow control": "Donanım akış denetimini etkinleştir", + "Connect automatically": "Otomatik bağlan", + "Open": "Aç", + "Error opening serial port '{{- port}}'": "Seri bağlantı noktası açılırken hata oluştu '{{- port}}'", + "Connection": "Bağlantı", + "No serial connection": "Seri bağlantı yok", + "Connected to {{-port}} with a baud rate of {{baudrate}}": "Şuna Bağlan {{-port}} bir band hızı ile {{baudrate}}", + "Console": "Konsol", + "Clear all": "Hepsini temizle", + "Select All": "", + "Clear Selection": "", + "URL not configured": "URL yapılandırılmadı", + "The widget is currently disabled": "Pencere Öğesi şu anda devre dışı", + "Enable": "Etkinleştir", + "Disable": "Devre dışı", + "URL": "URL", + "Min": "Min", + "Max": "Max", + "Dimension": "Boyut", + "Sent": "Gönderilen", + "Received": "Alınan", + "Start Time": "Başlama zamanı", + "Elapsed Time": "Geçen zaman", + "Finish Time": "Bitirme zamanı", + "Remaining Time": "Kalan süre", + "Controller State": "Denetleyici Durumu", + "Controller Settings": "Denetleyici Ayarları", + "Hide": "Gizle", + "Show": "Göster", + "Queue Reports": "Kuyruk Raporları", + "Planner Buffer": "Planlayıcı Arabelleği", + "Receive Buffer": "Alma Arabelleği", + "Status Reports": "Durum Raporları", + "State": "Belirt", + "Feed Rate": "İlerleme hızı", + "Spindle": "Freze Ayarları", + "Tool Number": "Alet Numarası", + "Modal Groups": "Şekilsel Gruplar", + "Motion": "Hareket", + "Coordinate": "Koordinat", + "Plane": "Düzlem", + "Distance": "Mesafe", + "Program": "Program", + "Coolant": "Soğutucu", + "Status Report (?)": "Durum Raporu (?)", + "Check G-code Mode ($C)": "G-kodu Modunu Kontrol Et ($C)", + "Homing ($H)": "Başlangıç ($H)", + "Kill Alarm Lock ($X)": "Alarm Kilidini Öldür ($X)", + "Sleep ($SLP)": "Uyku ($SLP)", + "Help ($)": "Yardım ($)", + "Settings ($$)": "Ayarlar ($$)", + "View G-code Parameters ($#)": "G-kodu Parametrelerini Görüntüle ($#)", + "View G-code Parser State ($G)": "G-kod ayrıştırıcı durumu ($G)", + "View Build Info ($I)": "Yapı Bilgisi Görüntüle ($I)", + "View Startup Blocks ($N)": "Başlangıç Bloklarını Görüntüle ($N)", + "Laser": "Lazer", + "Laser Intensity Control": "Lazer yoğunluk kontrolü", + "Laser Test": "Lazer test", + "Power (%)": "Güç (%)", + "Test duration": "Test süresi", + "ms": "ms", + "Maximum value": "Maksimum değer", + "Laser Off": "Lazeri Kapat", + "New Macro": "Yeni Makro", + "Macro Name": "Makro ismi", + "Macro Commands": "Makro Komutları", + "Macro Variables": "Makro Değişkenleri", + "Edit Macro": "Makro Düzenle", + "Delete Macro": "Makro Sil", + "Are you sure you want to delete this macro?": "Bu makroyu silmek istediğinizden emin misiniz?", + "No": "Hayır", + "Yes": "Evet", + "Macro": "Makro", + "Are you sure you want to load this macro?": "Bu makroyu yüklemek istediğinizden emin misiniz?", + "No macros": "Makro yok", + "Run": "Başla", + "Get Extruder Temperature (M105)": "Ekstrüder Sıcaklığını al (M105)", + "Get Current Position (M114)": "Geçerli Pozisyonu Al (M114)", + "Get Firmware Version and Capabilities (M115)": "Ürün Yazılımı Sürümünü ve Yeteneklerini Öğrenin (M115)", + "Heater Control": "Isıtıcı Kontrolü", + "Extruder": "Extruder", + "°C": "°C", + "Set the target temperature for the extruder": "Ekstrüder için hedeflenen sıcaklığı ayarlayın", + "Heated Bed": "Isıtma Tablası", + "Set the target temperature for the heated bed": "Isıtma tablasının hedeflenen sıcaklığını ayarlayın", + "Extruder Temperature": "Ekstrüder Sıcaklığı", + "Heated Bed Temperature": "Isıtma Tablası Sıcaklığı", + "Extruder Power": "Ekstrüder Gücü", + "Heated Bed Power": "Isıtma Tablası Gücü", + "Probe": "Z ekseni sıfırlama", + "mm/min": "mm/dakika", + "in/min": "in/dakika", + "Probe Command": "Z ekseni sıfırlama Komutu", + "G38.2 probe toward workpiece, stop on contact, signal error if failure": "G38.2 probe toward workpiece, stop on contact, signal error if failure", + "G38.3 probe toward workpiece, stop on contact": "G38.3 probe toward workpiece, stop on contact", + "G38.4 probe away from workpiece, stop on loss of contact, signal error if failure": "G38.4 probe away from workpiece, stop on loss of contact, signal error if failure", + "G38.5 probe away from workpiece, stop on loss of contact": "G38.5 probe away from workpiece, stop on loss of contact", + "Probe Depth": "Prob derinliği", + "Probe Feedrate": "Prob Besleme Hızı", + "Touch Plate Thickness": "D.Tabaka Kalınlığı", + "Retraction Distance": "Geri çekilme Mesafesi", + "Z-Probe": "Z ekseni sıfırlama", + "Apply tool length offset": "Takım uzunluğu Çıkıntısı uygula", + "Run Z-Probe": "Z ekseni sıfırlama çalıştır", + "Spindle Speed": "Freze Hızı", + "RPM": "RPM", + "Queue Flush (%)": "Sıra Sığdır (%)", + "Kill Job (^d)": "İşi iptal et (^d)", + "Clear Alarm ($clear)": "Alarmı Temizle ($clear)", + "Show System Settings": "Sistem Ayarlarını Göster", + "Show All Settings": "Tüm Ayarları Göster", + "List Self Tests": "Kendini Sınamayı Listeleme", + "Power Management": "Güç yönetimi", + "Enable Motors": "Motorları Etkinleştir", + "Disable Motors": "Motorları Devre Dışı Bırak", + "Motor {{n}}": "Motor {{n}}", + "Velocity": "Hız", + "Line": "Çizgi", + "Path": "Yol", + "G-code not loaded": "G-kodu yüklenmedi", + "Tool Change": "Takım Değiştirme", + "Are you sure you want to resume program execution?": "Are you sure you want to resume program execution?", + "Click the Resume button to resume program execution.": "Click the Resume button to resume program execution.", + "Click the Stop button to stop program execution.": "Click the Stop button to stop program execution.", + "Run a tool change macro to change the tool and adjust the Z-axis offset. Afterwards, click the Resume button to resume program execution.": "Run a tool change macro to change the tool and adjust the Z-axis offset. Afterwards, click the Resume button to resume program execution.", + "Waiting for the target temperature to be reached...": "Waiting for the target temperature to be reached...", + "Work Coordinate System": "Work Coordinate System", + "Enable 3D View": "3D Görünümü etkinleştir", + "Disable 3D View": "3D Görünümü Devre Dışı Bırak", + "3D View": "3D Görünüm", + "Projection": "Görünüm", + "Perspective Projection": "Perspektif Görünüm", + "Orthographic Projection": "Ortografik Görünüm", + "Display G-code Filename": "G-kodu dosya adını görüntüle", + "Hide Coordinate System": "Koordinat Sistemini Gizle", + "Show Coordinate System": "Koordinat Sistemini Göster", + "Hide Grid Line Numbers": "Izgara Satırı Sayılarını Gizle", + "Show Grid Line Numbers": "Izgara Satır Numaralarını Göster", + "File folder": "Dosya klasörü", + "{{extname}} File": "{{extname}} Dosya", + "File": "Dosya", + "3D rendering": "3D render", + "Zoom In": "Zoom In", + "Zoom Out": "Zoom Out", + "Move the camera": "Kamerayı hareket ettir", + "Rotate the camera": "Kamerayı döndür", + "Watch Directory": "Dizinin İzlenmesi", + "Date modified": "Değiştirilme tarihi", + "Type": "Tip", + "Size": "Boyut", + "Load G-code": "G kodunu yükle", + "Upload G-code": "G kodunu yükle", + "Browse...": "Araştır...", + "Resume": "Devam et", + "Pause": "Beklet", + "Webcam": "Web Kamera", + "Webcam Settings": "Web Kamera Ayarları", + "Media Source": "Medya Kaynağı", + "Use a built-in camera or a connected webcam": "Yerleşik bir kamera veya bağlı bir web kamerası kullanın", + "Use a M-JPEG stream over HTTP": "HTTP üzerinden bir M-JPEG akışı kullanın", + "Webcam is off": "Web kamerası kapalı", + "Rotate Left": "Sola dön", + "Rotate Right": "Sağa Dön", + "Flip Horizontally": "Yatay olarak çevir", + "Flip Vertically": "Dikey olarak çevir", + "Crosshair": "Merkez Çizgisi", + "Manual Data Input": "", + "MDI": "", + "Button Width": "", + "Order": "", + "Move Up": "", + "Move Down": "", + "Remove": "Kaldır", + "Waiting for the planner to empty...": "", + "No video devices available": "", + "Choose a video device": "", + "Automatic detection": "", + "Front View": "", + "Move Backward": "", + "Move Forward": "", + "Top View": "", + "Zoom to Fit": "", + "Right Side View": "", + "Left Side View": "", + "Custom range...": "Özel aralık...", + "Today": "Bugün", + "Last {{n}} days": "Son {{n}} gün", + "Apply": "Uygula", + "Add": "Ekle", + "Custom Jog Distance (mm)": "", + "Custom Jog Distance (inches)": "", + "Machine Profiles": "", + "No machine profile selected": "", + "Delete machine profile": "", + "Machine Profile": "", + "Limits": "", + "User Accounts": "Kullanıcı Hesapları", + "New Account": "Yeni Hesap", + "Hide Limits": "", + "Show Limits": "", + "WebGL: <1>Enabled": "WebGL: <1>Etkin", + "WebGL: <1>Disabled": "WebGL: <1>Engelle", + "Hide Cutting Tool": "", + "Show Cutting Tool": "", + "Ready to start": "" } diff --git a/src/web/i18n/zh-cn/controller.json b/src/app/i18n/zh-cn/controller.json similarity index 100% rename from src/web/i18n/zh-cn/controller.json rename to src/app/i18n/zh-cn/controller.json diff --git a/src/web/i18n/zh-cn/gcode.json b/src/app/i18n/zh-cn/gcode.json similarity index 100% rename from src/web/i18n/zh-cn/gcode.json rename to src/app/i18n/zh-cn/gcode.json diff --git a/src/app/i18n/zh-cn/resource.json b/src/app/i18n/zh-cn/resource.json old mode 100755 new mode 100644 index 2aecd8e4d..2f3d7e253 --- a/src/app/i18n/zh-cn/resource.json +++ b/src/app/i18n/zh-cn/resource.json @@ -1,4 +1,533 @@ { - "loading": "正在加载...", - "title": "CNCjs" + "Records: {{from}} - {{to}} / {{total}}": "记录: {{from}} - {{to}}/{{total}}", + "Records: {{total}}": "记录: {{total}}", + "{{pageLength}} per page": "{{pageLength}}/页", + "New update available": "有新的更新可用", + "Command succeeded": "命令执行成功", + "Command failed ({{err}})": "命令执行失败({{err}})", + "My Account": "我的账号", + "Signed in as {{name}}": "登录账号{{name}}", + "Account": "帐户", + "Sign Out": "注销", + "Options": "选项", + "Command": "命名", + "Show notifications": "显示通知", + "Help": "帮助", + "Report an issue": "报告问题", + "Cycle Start": "循环启动", + "Feedhold": "进给暂停", + "Homing": "原点复位", + "Sleep": "睡眠", + "Unlock": "解除锁定", + "Reset": "重置", + "Authentication failed.": "授权失败。", + "Error": "错误", + "Sign in to {{name}}": "已登录用户{{name}}", + "Username": "用户名", + "Password": "密码", + "Sign In": "登录", + "Forgot your password?": "忘记密码?", + "A web-based interface for CNC milling controller running Grbl, Smoothieware, or TinyG": "这是一款基于web图形化CNC雕刻机控制器,适用于Grbl,Smoothieware或TinyG等开源固件。", + "Learn more": "了解详情", + "Downloads": "下载", + "Checking for updates...": "正在检查更新...", + "A new version of {{name}} is available": "新版本 {{name}} 已经提供下载了", + "Version {{version}}": "版本{{version}}", + "Latest version": "最新版本", + "You already have the newest version of {{name}}": "您已经在使用最新的 {{name}}版本", + "New": "新建", + "Account status": "账号状态", + "Name": "名称", + "Confirm Password": "确认密码", + "Cancel": "取消", + "OK": "确认", + "An unexpected error has occurred.": "发生未预期的错误。", + "Loading...": "正在加载...", + "No data to display": "没有可显示的数据", + "Enabled": "已启用", + "Disabled": "已关闭", + "Date Modified": "修改日期", + "Action": "操作", + "Edit Account": "编辑账号", + "Delete Account": "删除账号", + "Settings": "设置", + "Are you sure you want to delete the account?": "你确定要删除该账号吗?", + "Update": "更新", + "Old Password": "旧密码", + "Change Password": "更换密码", + "New Password": "新密码", + "Commands": "命令", + "Title": "标题", + "and more...": "更多...", + "Delete": "删除", + "Are you sure you want to delete this item?": "你确定要删除该项吗?", + "Exception": "例外", + "Continue execution when an error is detected in the G-code program": "当检测到错误时依然继续执行", + "Enabling this option may cause machine damage if you don't have an Emergency Stop button to prevent a dangerous situation.": "如果你没有紧急停止按键来防止突发状况,而开启此功能,有可能引起机器损坏。", + "Save Changes": "保存更改", + "Events": "事件", + "Event": "事件", + "Choose an event": "选择事件", + "Startup (System only)": "", + "Open a serial port (System only)": "打开串口(System only)", + "Close a serial port (System only)": "关闭串口(System only)", + "G-code: Load": "加载G-code", + "G-code: Unload": "G-code: 未加载", + "G-code: Start": "G-code: 开始", + "G-code: Stop": "G-code: 停止", + "G-code: Pause": "G-code: 暂停", + "G-code: Resume": "G-code: 恢复", + "Feed Hold": "保持给进", + "Run Macro": "运行宏", + "Load Macro": "加载宏", + "Trigger": "触发器", + "Choose an trigger": "选择触发器", + "System": "系统", + "G-code": "G-code", + "Automatically check for updates": "自动检测更新", + "Language": "语言", + "General": "常规", + "Workspace": "工作区", + "Controller": "控制器", + "About": "关于", + "The account name is already being used. Choose another name.": "该用户名已经被使用过,请换一个用户名。", + "Passwords do not match.": "密码不匹配。", + "Import": "导入", + "Are you sure you want to overwrite the workspace settings?": "你确定要覆盖工作区的设置吗?", + "Restore Defaults": "恢复缺省值", + "Are you sure you want to restore the default settings?": "您确定要恢复默认值吗?", + "Import Error": "导入错误", + "Invalid file format.": "非法文件格式。", + "Close": "关闭", + "Export": "导出", + "Click the Continue button to resume execution.": "按下继续按钮,将继续执行程序。", + "Stop": "停止", + "Continue": "继续", + "Server has stopped working": "服务器已经停止工作", + "A problem caused the server to stop working correctly. Check out the server status and try again.": "服务器无法正常工作,请检查服务器状态并重试。", + "Reload": "重载", + "Fork Widget": "复制组件", + "Are you sure you want to fork this widget?": "你确定需要复制该组件吗?", + "Remove Widget": "移除组件", + "Are you sure you want to remove this widget?": "你确定要移除该组件吗?", + "On": "开启", + "Off": "关闭", + "Visualizer Widget": "可视化组件", + "This widget visualizes a G-code file and simulates the tool path.": "此组件可形象化 G-code 文档以及模拟刀具路径。", + "Connection Widget": "连接组件", + "This widget lets you establish a connection to a serial port.": "此组件可让您建立系列端口的连接", + "Console Widget": "控制台组件", + "This widget lets you read and write data to the CNC controller connected to a serial port.": "此组件可以对连接到系列端口的 CNC 控制器进行数据读写。", + "Grbl Widget": "Grbl 组件", + "This widget shows the Grbl state and provides Grbl specific features.": "此组件可现实 Grbl 状态并提供 Grbl 的相关功能", + "Marlin Widget": "Marlin组件", + "This widget shows the Marlin state and provides Marlin specific features.": "该组件用于显示Marlin状态,并提供Marlin具有的特殊功能。", + "Smoothie Widget": "Smoothie组件", + "This widget shows the Smoothie state and provides Smoothie specific features.": "该组件用于显示Smoothie状态,并提供Smoothie具有的特殊功能。", + "TinyG Widget": "TinyG 组件", + "This widget shows the TinyG state and provides TinyG specific features.": "此组件可现实 TinyG 状态并提供 TinyG 的相关功能", + "Axes Widget": "坐标轴组件", + "This widget shows the XYZ position. It includes jog controls, homing, and axis zeroing.": "此组件可显示XYZ坐标位置。包括点动控制,原点复位和设置原点等功能。", + "G-code Widget": "G-code 组件", + "This widget shows the current status of G-code commands.": "此组件可显示当前 G-code 的执行状态。", + "Laser Widget": "激光组件", + "This widget allows you control laser intensity and turn the laser on/off.": "该组件可以让你控制激光强度和激光开关。", + "Macro Widget": "宏组件", + "This widget can use macros to automate routine tasks.": "此组件可使用巨集来自动执行日常任务。", + "Probe Widget": "探针组件", + "This widget helps you use a touch plate to set your Z zero offset.": "此组件可协助您使用对刀仪去设置 Z 轴原点。", + "Spindle Widget": "主轴组件", + "This widget provides the spindle control.": "此组件提供主轴相关的控制", + "Custom Widget": "自定义组件", + "This widget gives you a communication interface for creating your own widget.": "该组件给您提供一个自定义组件的交互界面。", + "Webcam Widget": "网络摄像机组件", + "This widget lets you monitor a webcam.": "此组件可用来监控一台网络摄像机。", + "Widgets": "组件", + "M0 Program Pause": "M0程序暂停", + "M1 Program Pause": "M1程序暂停", + "M2 Program End": "M2程序结束", + "M30 Program End": "M30程序结束", + "M6 Tool Change": "", + "M109 Set Extruder Temperature": "M109设置挤出头温度", + "M190 Set Heated Bed Temperature": "M190设置热床温度", + "Drop G-code file here": "将 G-code 文档拖拽至此处上传", + "Manage Widgets ({{inactiveCount}})": "管理组件({{inactiveCount}})", + "Collapse All": "折叠全部", + "Expand All": "打开全部", + "Corrupted workspace settings": "", + "The workspace settings have become corrupted or invalid. Click Restore Defaults to restore default settings and continue.": "", + "Download workspace settings": "下载工作区设置", + "This field is required.": "这个字段是必填项。", + "Passwords should be equal.": "两次密码需一致。", + "Work Coordinate System (G54)": "工作坐标系统 (G54)", + "Work Coordinate System (G55)": "工作坐标系统 (G55)", + "Work Coordinate System (G56)": "工作坐标系统 (G56)", + "Work Coordinate System (G57)": "工作坐标系统 (G57)", + "Work Coordinate System (G58)": "工作坐标系统 (G58)", + "Work Coordinate System (G59)": "工作坐标系统 (G59)", + "Go To Work Zero (G0 X0 Y0 Z0)": "前往工作原点 (G0 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P1 X0 Y0 Z0)": "设定工作原点 (G10 L20 P1 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P2 X0 Y0 Z0)": "设定工作原点 (G10 L20 P2 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P3 X0 Y0 Z0)": "设定工作原点 (G10 L20 P3 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P4 X0 Y0 Z0)": "设定工作原点 (G10 L20 P4 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P5 X0 Y0 Z0)": "设定工作原点 (G10 L20 P5 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P6 X0 Y0 Z0)": "设定工作原点 (G10 L20 P6 X0 Y0 Z0)", + "Temporary Offsets (G92)": "临时原点 (G92)", + "Zero Out Temporary Offsets (G92 X0 Y0 Z0)": "设置临时原点 (G92 X0 Y0 Z0)", + "Un-Zero Out Temporary Offsets (G92.1 X0 Y0 Z0)": "取消设置临时原点 (G92.1 X0 Y0 Z0)", + "Machine Coordinate System (G53)": "机器坐标系统 (G53)", + "Go To Machine Zero (G53 G0 X0 Y0 Z0)": "前往机器原点 (G53 G0 X0 Y0 Z0)", + "Set Machine Zero (G28.3 X0 Y0 Z0)": "设置机器原点 (G28.3 X0 Y0 Z0)", + "Homing Sequence (G28.2 X0 Y0 Z0)": "", + "Go To Work Zero On X Axis (G0 X0)": "前往 X 轴工作原点 (G0 X0)", + "Zero Out Work X Axis (G10 L20 P1 X0)": "设置 X 轴工作原点 (G10 L20 P1 X0)", + "Zero Out Work X Axis (G10 L20 P2 X0)": "设置 X 轴工作原点 (G10 L20 P2 X0)", + "Zero Out Work X Axis (G10 L20 P3 X0)": "设置 X 轴工作原点 (G10 L20 P3 X0)", + "Zero Out Work X Axis (G10 L20 P4 X0)": "设置 X 轴工作原点 (G10 L20 P4 X0)", + "Zero Out Work X Axis (G10 L20 P5 X0)": "设置 X 轴工作原点 (G10 L20 P5 X0)", + "Zero Out Work X Axis (G10 L20 P6 X0)": "设置 X 轴工作原点 (G10 L20 P6 X0)", + "Zero Out Temporary X Axis (G92 X0)": "设置 X 轴临时原点 (G92 X0)", + "Un-Zero Out Temporary X Axis (G92.1 X0)": "取消设置 X 轴临时原点 (G92.1 X0)", + "Go To Machine Zero On X Axis (G53 G0 X0)": "前往 X 轴机器原点 (G53 G0 X0)", + "Zero Out Machine X Axis (G28.3 X0)": "设置X轴机器原点(G28.3 X0)", + "Home Machine X Axis (G28.2 X0)": "回到X轴原点(G28.2 X0)", + "Go To Work Zero On Y Axis (G0 Y0)": "前往 Y 轴工作原点 (G0 Y0)", + "Zero Out Work Y Axis (G10 L20 P1 Y0)": "设置 Y 轴工作原点 (G10 L20 P1 Y0)", + "Zero Out Work Y Axis (G10 L20 P2 Y0)": "设置 Y 轴工作原点 (G10 L20 P2 Y0)", + "Zero Out Work Y Axis (G10 L20 P3 Y0)": "设置 Y 轴工作原点 (G10 L20 P3 Y0)", + "Zero Out Work Y Axis (G10 L20 P4 Y0)": "设置 Y 轴工作原点 (G10 L20 P4 Y0)", + "Zero Out Work Y Axis (G10 L20 P5 Y0)": "设置 Y 轴工作原点 (G10 L20 P5 Y0)", + "Zero Out Work Y Axis (G10 L20 P6 Y0)": "设置 Y 轴工作原点 (G10 L20 P6 Y0)", + "Zero Out Temporary Y Axis (G92 Y0)": "设置 Y 轴临时原点 (G92 Y0)", + "Un-Zero Out Temporary Y Axis (G92.1 Y0)": "取消设置 Y 轴临时原点 (G92.1 Y0)", + "Go To Machine Zero On Y Axis (G53 G0 Y0)": "前往 Y 轴机器原点 (G53 G0 Y0)", + "Zero Out Machine Y Axis (G28.3 Y0)": "设置Y轴机器原点(G28.3 Y0)", + "Home Machine Y Axis (G28.2 Y0)": "回到Y轴原点(G28.2 Y0)", + "Go To Work Zero On Z Axis (G0 Z0)": "前往 Z 轴工作原点 (G0 Z0)", + "Zero Out Work Z Axis (G10 L20 P1 Z0)": "设置 Z 轴工作原点 (G10 L20 P1 Z0)", + "Zero Out Work Z Axis (G10 L20 P2 Z0)": "设置 Z 轴工作原点 (G10 L20 P2 Z0)", + "Zero Out Work Z Axis (G10 L20 P3 Z0)": "设置 Z 轴工作原点 (G10 L20 P3 Z0)", + "Zero Out Work Z Axis (G10 L20 P4 Z0)": "设置 Z 轴工作原点 (G10 L20 P4 Z0)", + "Zero Out Work Z Axis (G10 L20 P5 Z0)": "设置 Z 轴工作原点 (G10 L20 P5 Z0)", + "Zero Out Work Z Axis (G10 L20 P6 Z0)": "设置 Z 轴工作原点 (G10 L20 P6 Z0)", + "Zero Out Temporary Z Axis (G92 Z0)": "设置 Z 轴临时原点 (G92 Z0)", + "Un-Zero Out Temporary Z Axis (G92.1 Z0)": "取消设置 Z 轴临时原点 (G92.1 Z0)", + "Go To Machine Zero On Z Axis (G53 G0 Z0)": "前往 Z 轴机器原点 (G53 G0 Z0)", + "Zero Out Machine Z Axis (G28.3 Z0)": "设置Z轴机器原点(G28.3 Z0)", + "Home Machine Z Axis (G28.2 Z0)": "回到Z轴原点(G28.2 Z0)", + "Go To Work Zero On A Axis (G0 A0)": "前往 A 轴工作原点 (G0 A0)", + "Zero Out Work A Axis (G10 L20 P1 A0)": "设置 A 轴工作原点 (G10 L20 P1 A0)", + "Zero Out Work A Axis (G10 L20 P2 A0)": "设置 A 轴工作原点 (G10 L20 P2 A0)", + "Zero Out Work A Axis (G10 L20 P3 A0)": "设置 A 轴工作原点 (G10 L20 P3 A0)", + "Zero Out Work A Axis (G10 L20 P4 A0)": "设置 A 轴工作原点 (G10 L20 P4 A0)", + "Zero Out Work A Axis (G10 L20 P5 A0)": "设置 A 轴工作原点 (G10 L20 P5 A0)", + "Zero Out Work A Axis (G10 L20 P6 A0)": "设置 A 轴工作原点 (G10 L20 P6 A0)", + "Zero Out Temporary A Axis (G92 A0)": "设置 A 轴临时原点 (G92 A0)", + "Un-Zero Out Temporary A Axis (G92.1 A0)": "取消设置 A 轴临时原点 (G92.1 A0)", + "Go To Machine Zero On A Axis (G53 G0 A0)": "前往 A 轴机器原点 (G53 G0 A0)", + "Zero Out Machine A Axis (G28.3 A0)": "设置A轴机器原点(G28.3 A0)", + "Home Machine A Axis (G28.2 A0)": "回到A轴原点(G28.2 A0)", + "Go To Work Zero On B Axis (G0 B0)": "前往B轴工作原点(G0 B0)", + "Zero Out Work B Axis (G10 L20 P1 B0)": "设置B轴工作原点(G10 L20 P1 B0)", + "Zero Out Work B Axis (G10 L20 P2 B0)": "设置B轴工作原点(G10 L20 P2 B0)", + "Zero Out Work B Axis (G10 L20 P3 B0)": "设置B轴工作原点(G10 L20 P3 B0)", + "Zero Out Work B Axis (G10 L20 P4 B0)": "设置B轴工作原点(G10 L20 P4 B0)", + "Zero Out Work B Axis (G10 L20 P5 B0)": "设置B轴工作原点(G10 L20 P5 B0)", + "Zero Out Work B Axis (G10 L20 P6 B0)": "设置B轴工作原点(G10 L20 P6 B0)", + "Zero Out Temporary B Axis (G92 B0)": "设置B轴临时原点(G92 B0)", + "Un-Zero Out Temporary B Axis (G92.1 B0)": "取消B轴临时原点(G92.1 B0)", + "Go To Machine Zero On B Axis (G53 G0 B0)": "前往B轴机器原点(G53 G0 B0)", + "Zero Out Machine B Axis (G28.3 B0)": "设置B轴机器原点(G28.3 B0)", + "Home Machine B Axis (G28.2 B0)": "回到B轴原点(G28.2 B0)", + "Go To Work Zero On C Axis (G0 C0)": "前往C轴工作原点(G0 C0)", + "Zero Out Work C Axis (G10 L20 P1 C0)": "设置C轴工作原点(G10 L20 P1 C0)", + "Zero Out Work C Axis (G10 L20 P2 C0)": "设置C轴工作原点(G10 L20 P2 C0)", + "Zero Out Work C Axis (G10 L20 P3 C0)": "设置C轴工作原点(G10 L20 P3 C0)", + "Zero Out Work C Axis (G10 L20 P4 C0)": "设置C轴工作原点(G10 L20 P4 C0)", + "Zero Out Work C Axis (G10 L20 P5 C0)": "设置C轴工作原点(G10 L20 P5 C0)", + "Zero Out Work C Axis (G10 L20 P6 C0)": "设置C轴工作原点(G10 L20 P6 C0)", + "Zero Out Temporary C Axis (G92 C0)": "设置C轴临时原点(G92 C0)", + "Un-Zero Out Temporary C Axis (G92.1 C0)": "取消C轴临时原点(G92 C0)", + "Go To Machine Zero On C Axis (G53 G0 C0)": "前往C轴机器原点(G53 G0 C0)", + "Zero Out Machine C Axis (G28.3 C0)": "设置C轴机器原点(G28.3 C0)", + "Home Machine C Axis (G28.2 C0)": "回到C轴机器原点(G28.2 C0)", + "mm": "毫米", + "in": "英寸", + "deg": "度", + "Zero Out Machine": "设置机器原点", + "Home Machine": "机器原点", + "Zero Out Work Offsets": "", + "Set Work Offsets": "", + "Axis": "坐标轴", + "Machine Position": "机器位置", + "Work Position": "工作位置", + "Axes": "坐标轴", + "Keypad jogging": "", + "Edit": "编辑", + "Expand": "展开", + "Collapse": "收起", + "More": "更多操作", + "Enter Full Screen": "全屏", + "Exit Full Screen": "退出全屏", + "Move X- Y+": "X 轴逆向 Y 轴正向移动", + "Move Y+": "Y 轴正向移动", + "Move X+ Y+": "X 轴正向 Y 轴正向移动", + "Move Z+": "Z 轴正向移动", + "Move X-": "X 轴逆向移动", + "Move To XY Zero (G0 X0 Y0)": "移动到 XY 轴原点 (G0 X0 Y0)", + "Move X+": "X 轴正向移动", + "Move To Z Zero (G0 Z0)": "移动至 Z 轴原点(G0 Z0)", + "Move X- Y-": "X 轴逆向 Y 轴逆向移动", + "Move Y-": "Y 轴逆向移动", + "Move X+ Y-": "X 轴正向 Y 轴逆向移动", + "Move Z-": "Z 轴逆向移动", + "Units": "单位", + "G20 (inch)": "G20(英寸)", + "G21 (mm)": "G21(毫米)", + "Imperial": "纸张尺寸", + "Metric": "度量单位", + "Right": "向右键 (Right)", + "Left": "向左键 (Left)", + "Up": "向上键 (Up)", + "Down": "向下键 (Down)", + "Page Up": "上页 (Page Up)", + "Page Down": "下页 (Page Down)", + "Right Square Bracket": "右方括号]", + "Left Square Bracket": "左方括号[", + "0.1x Move": "0.1 倍速移动", + "Alt": "Alt 键", + "10x Move": "10 倍速移动", + "⇧ Shift": "Shift 键", + "X-axis": "X轴", + "Y-axis": "Y轴", + "Z-axis": "Z轴", + "A-axis": "A轴", + "B-axis": "B轴", + "C-axis": "C轴", + "Custom Commands": "自定义命令", + "Axes Settings": "坐标轴设置", + "ShuttleXpress": "", + "Feed Rate Range: {{min}} - {{max}} mm/min": "供给率范围:{{min}} - {{max}} mm/min", + "Repeat Rate: {{hertz}}Hz": "重复率:{{hertz}}Hz", + "60 Times per Second": "每秒 60 次", + "45 Times per Second": "每秒 45 次", + "30 Times per Second": "每秒 30 次", + "15 Times per Second": "每秒 15 次", + "10 Times per Second": "每秒 10 次", + "5 Times per Second": "每秒 5 次", + "2 Times per Second": "每秒 2 次", + "Once Every Second": "每秒 1 次", + "Distance Overshoot: {{overshoot}}x": "超调量距离:{{overshoot}}x", + "Manufacturer: {{manufacturer}}": "制造商:{{manufacturer}} ", + "Port": "端口", + "No ports available": "无可用端口", + "Choose a port": "选择端口", + "Refresh": "刷新", + "Baud rate": "波特率", + "Choose a baud rate": "选择波特率", + "Enable hardware flow control": "开启硬件流控制", + "Connect automatically": "自动连接", + "Open": "打开", + "Error opening serial port '{{- port}}'": "打开端口'{{- port}}'失败", + "Connection": "连接", + "No serial connection": "无连接端口", + "Connected to {{-port}} with a baud rate of {{baudrate}}": "已连接端口{{-port}},波特率{{baudrate}}", + "Console": "控制台", + "Clear all": "全部清除", + "Select All": "全选", + "Clear Selection": "取消选择", + "URL not configured": "URL未配置", + "The widget is currently disabled": "该组件当前已禁用", + "Enable": "启用", + "Disable": "禁用", + "URL": "URL", + "Min": "最小值", + "Max": "最大值", + "Dimension": "尺寸", + "Sent": "已发送", + "Received": "已接收", + "Start Time": "开始时间", + "Elapsed Time": "已用时", + "Finish Time": "完成时间", + "Remaining Time": "剩余时间", + "Controller State": "控制器状态", + "Controller Settings": "控制器设置", + "Hide": "隐藏", + "Show": "显示", + "Queue Reports": "工作队列报表", + "Planner Buffer": "规划缓冲区", + "Receive Buffer": "接收缓冲区", + "Status Reports": "状态报表", + "State": "状态", + "Feed Rate": "供给率", + "Spindle": "主轴", + "Tool Number": "工具编号", + "Modal Groups": "模态群组", + "Motion": "运作", + "Coordinate": "坐标系", + "Plane": "平面", + "Distance": "距离", + "Program": "程序", + "Coolant": "冷却", + "Status Report (?)": "状态报告(?)", + "Check G-code Mode ($C)": "检查 G-code 模式 ($C)", + "Homing ($H)": "原点复位 ($H)", + "Kill Alarm Lock ($X)": "解除报警锁定 ($X)", + "Sleep ($SLP)": "睡眠 ($SLP)", + "Help ($)": "帮助($)", + "Settings ($$)": "设置($$)", + "View G-code Parameters ($#)": "查看 G-code 参数($#)", + "View G-code Parser State ($G)": "查看 G-code 解析器状态($G)", + "View Build Info ($I)": "查看版本信息($I)", + "View Startup Blocks ($N)": "查看启动区块($N)", + "Laser": "激光", + "Laser Intensity Control": "激光强度控制", + "Laser Test": "激光测试", + "Power (%)": "强度(%)", + "Test duration": "测试延时", + "ms": "毫秒", + "Maximum value": "最大值", + "Laser Off": "关闭激光", + "New Macro": "新建宏", + "Macro Name": "宏名", + "Macro Commands": "宏命令", + "Macro Variables": "宏变量", + "Edit Macro": "设置宏", + "Delete Macro": "刪除宏", + "Are you sure you want to delete this macro?": "你确定要删除这个宏?", + "No": "否", + "Yes": "是", + "Macro": "宏", + "Are you sure you want to load this macro?": "你确定要加载这个宏?", + "No macros": "没有可用的宏", + "Run": "运行", + "Get Extruder Temperature (M105)": "获取挤出机温度(M105)", + "Get Current Position (M114)": "获取当前位置(M114)", + "Get Firmware Version and Capabilities (M115)": "获取固件版本和功能(M115)", + "Heater Control": "加热器控制", + "Extruder": "挤出机", + "°C": "°C", + "Set the target temperature for the extruder": "设置挤出机目标温度", + "Heated Bed": "热床", + "Set the target temperature for the heated bed": "设置热床目标问题", + "Extruder Temperature": "挤出机温度", + "Heated Bed Temperature": "热床温度", + "Extruder Power": "挤出机电源", + "Heated Bed Power": "热床电源", + "Probe": "探针", + "mm/min": "毫米/分钟", + "in/min": "英尺/分钟", + "Probe Command": "探针指令", + "G38.2 probe toward workpiece, stop on contact, signal error if failure": "G38.2 探针向工作区移动,在接触时停止,若失败会发出错误信号", + "G38.3 probe toward workpiece, stop on contact": "G38.3 探针向工作区移动,在接触时停止", + "G38.4 probe away from workpiece, stop on loss of contact, signal error if failure": "G38.4 探针远离工作区,在未接触时停止,若失败会发出错误信号", + "G38.5 probe away from workpiece, stop on loss of contact": "G38.5 探针远离工作区,在未接触时停止", + "Probe Depth": "探针深度", + "Probe Feedrate": "探针馈送率", + "Touch Plate Thickness": "对刀仪厚度", + "Retraction Distance": "回缩距离", + "Z-Probe": "Z轴探针", + "Apply tool length offset": "", + "Run Z-Probe": "执行Z轴探测", + "Spindle Speed": "主轴转速", + "RPM": "转/分钟", + "Queue Flush (%)": "清除工作队列 (%)", + "Kill Job (^d)": "终止工作 (^d)", + "Clear Alarm ($clear)": "清除报警 ($clear)", + "Show System Settings": "显示系统设置", + "Show All Settings": "显示全部设置", + "List Self Tests": "列出自检测试", + "Power Management": "电源管理", + "Enable Motors": "启用电机", + "Disable Motors": "禁用电机", + "Motor {{n}}": "电机{{n}}", + "Velocity": "速率", + "Line": "行数", + "Path": "路径", + "G-code not loaded": "G-code未加载", + "Tool Change": "", + "Are you sure you want to resume program execution?": "你确定要继续执行程序吗?", + "Click the Resume button to resume program execution.": "单击 继续 按钮,继续执行程序。", + "Click the Stop button to stop program execution.": "单击 停止 按钮,停止执行程序。", + "Run a tool change macro to change the tool and adjust the Z-axis offset. Afterwards, click the Resume button to resume program execution.": "", + "Waiting for the target temperature to be reached...": "等待到达目标温度...", + "Work Coordinate System": "工作坐标系统", + "Enable 3D View": "开启3D视图", + "Disable 3D View": "关闭3D视图", + "3D View": "3D视图", + "Projection": "透视效果", + "Perspective Projection": "透视图", + "Orthographic Projection": "正视图", + "Display G-code Filename": "显示G-code文件名", + "Hide Coordinate System": "隐藏坐标系", + "Show Coordinate System": "显示坐标系", + "Hide Grid Line Numbers": "隐藏刻度数值", + "Show Grid Line Numbers": "显示刻度数值", + "File folder": "文件夹", + "{{extname}} File": "{{extname}} 文件", + "File": "文件", + "3D rendering": "三维渲染", + "Zoom In": "放大", + "Zoom Out": "缩小", + "Move the camera": "移动摄像头", + "Rotate the camera": "旋转摄像头", + "Watch Directory": "查看目录", + "Date modified": "修改日期", + "Type": "类型", + "Size": "大小", + "Load G-code": "加载G-code", + "Upload G-code": "上传 G-code 文档", + "Browse...": "浏览...", + "Resume": "重新开始", + "Pause": "暂停", + "Webcam": "网络摄像机", + "Webcam Settings": "网络摄像机设置", + "Media Source": "媒体源", + "Use a built-in camera or a connected webcam": "使用计算机自带摄像头或外借摄像头", + "Use a M-JPEG stream over HTTP": "使用基于HTTP的M-JPEG流", + "Webcam is off": "网络摄像机未开启", + "Rotate Left": "左转90度", + "Rotate Right": "右转90度", + "Flip Horizontally": "", + "Flip Vertically": "", + "Crosshair": "", + "Manual Data Input": "手动输入数据", + "MDI": "", + "Button Width": "按钮宽度", + "Order": "排序", + "Move Up": "向上移动", + "Move Down": "向下移动", + "Remove": "删除", + "Waiting for the planner to empty...": "", + "No video devices available": "", + "Choose a video device": "", + "Automatic detection": "", + "Front View": "", + "Move Backward": "", + "Move Forward": "", + "Top View": "", + "Zoom to Fit": "", + "Right Side View": "", + "Left Side View": "", + "Custom range...": "自定义范围...", + "Today": "今天", + "Last {{n}} days": "过去 {{n}} 天", + "Apply": "应用", + "Add": "添加", + "Custom Jog Distance (mm)": "", + "Custom Jog Distance (inches)": "", + "Machine Profiles": "", + "No machine profile selected": "", + "Delete machine profile": "", + "Machine Profile": "", + "Limits": "", + "User Accounts": "用户账号", + "New Account": "新账号", + "Hide Limits": "", + "Show Limits": "", + "WebGL: <1>Enabled": "WebGL: <1>已启用", + "WebGL: <1>Disabled": "WebGL: <1>已关闭", + "Hide Cutting Tool": "", + "Show Cutting Tool": "", + "Ready to start": "" } diff --git a/src/web/i18n/zh-tw/controller.json b/src/app/i18n/zh-tw/controller.json similarity index 100% rename from src/web/i18n/zh-tw/controller.json rename to src/app/i18n/zh-tw/controller.json diff --git a/src/web/i18n/zh-tw/gcode.json b/src/app/i18n/zh-tw/gcode.json similarity index 100% rename from src/web/i18n/zh-tw/gcode.json rename to src/app/i18n/zh-tw/gcode.json diff --git a/src/app/i18n/zh-tw/resource.json b/src/app/i18n/zh-tw/resource.json old mode 100755 new mode 100644 index 5cdd73b06..8bcd7ca9f --- a/src/app/i18n/zh-tw/resource.json +++ b/src/app/i18n/zh-tw/resource.json @@ -1,4 +1,533 @@ { - "loading": "載入中...", - "title": "CNCjs" + "Records: {{from}} - {{to}} / {{total}}": "記錄數:{{from}} - {{to}} / {{total}}", + "Records: {{total}}": "記錄數:{{from}} - {{to}} / {{total}}", + "{{pageLength}} per page": "{{pageLength}}/頁", + "New update available": "有新的更新可用", + "Command succeeded": "命令成功", + "Command failed ({{err}})": "命令失敗 ({{err}})", + "My Account": "我的帳戶", + "Signed in as {{name}}": "以 {{name}} 身份登入", + "Account": "帳號", + "Sign Out": "登出", + "Options": "選項", + "Command": "命令", + "Show notifications": "顯示通知", + "Help": "輔助", + "Report an issue": "回報問題", + "Cycle Start": "循環啟動", + "Feedhold": "進給保持", + "Homing": "原點復歸", + "Sleep": "睡眠", + "Unlock": "解除鎖定", + "Reset": "重置", + "Authentication failed.": "認證失敗", + "Error": "", + "Sign in to {{name}}": "登入 {{name}}", + "Username": "使用者名稱", + "Password": "密碼", + "Sign In": "登入", + "Forgot your password?": "忘記密碼?", + "A web-based interface for CNC milling controller running Grbl, Smoothieware, or TinyG": "運行Grbl,Smoothieware或TinyG等CNC銑床控制器的網頁操作介面", + "Learn more": "深入瞭解", + "Downloads": "下載", + "Checking for updates...": "正在檢查更新項目...", + "A new version of {{name}} is available": "已有新版本的 {{name}} 可供下載", + "Version {{version}}": "版本{{version}}", + "Latest version": "最新版本", + "You already have the newest version of {{name}}": "您已有最新版本的 {{name}}", + "New": "新增", + "Account status": "帳戶狀態", + "Name": "名稱", + "Confirm Password": "確認密碼", + "Cancel": "取消", + "OK": "確認", + "An unexpected error has occurred.": "發生未預期的錯誤。", + "Loading...": "載入中...", + "No data to display": "沒有可顯示的資料", + "Enabled": "已啟用", + "Disabled": "已停用", + "Date Modified": "修改日期", + "Action": "動作", + "Edit Account": "編輯帳戶", + "Delete Account": "刪除帳戶", + "Settings": "設定", + "Are you sure you want to delete the account?": "你確定要刪除這個帳戶嗎?", + "Update": "更新", + "Old Password": "舊密碼", + "Change Password": "更改密碼", + "New Password": "新密碼", + "Commands": "命令", + "Title": "標題", + "and more...": "及更多...", + "Delete": "刪除", + "Are you sure you want to delete this item?": "你確定要刪除這個項目?", + "Exception": "", + "Continue execution when an error is detected in the G-code program": "", + "Enabling this option may cause machine damage if you don't have an Emergency Stop button to prevent a dangerous situation.": "", + "Save Changes": "儲存變更", + "Events": "事件", + "Event": "事件", + "Choose an event": "選擇一個事件", + "Startup (System only)": "", + "Open a serial port (System only)": "", + "Close a serial port (System only)": "", + "G-code: Load": "G-code: 載入", + "G-code: Unload": "G-code: 移除", + "G-code: Start": "G-code: 開始", + "G-code: Stop": "G-code: 停止", + "G-code: Pause": "G-code: 暫停", + "G-code: Resume": "G-code: 繼續", + "Feed Hold": "進給保持", + "Run Macro": "執行巨集", + "Load Macro": "載入巨集", + "Trigger": "觸發", + "Choose an trigger": "選擇一個觸發", + "System": "系統", + "G-code": "G-code", + "Automatically check for updates": "自動檢查更新", + "Language": "語言", + "General": "一般", + "Workspace": "工作區", + "Controller": "", + "About": "關於", + "The account name is already being used. Choose another name.": "該帳戶名稱已經被使用,請換用另一個名稱。", + "Passwords do not match.": "密碼不符合。", + "Import": "", + "Are you sure you want to overwrite the workspace settings?": "", + "Restore Defaults": "還原成預設值", + "Are you sure you want to restore the default settings?": "你確定要還原預設值?", + "Import Error": "", + "Invalid file format.": "", + "Close": "關閉", + "Export": "", + "Click the Continue button to resume execution.": "", + "Stop": "停止", + "Continue": "", + "Server has stopped working": "", + "A problem caused the server to stop working correctly. Check out the server status and try again.": "", + "Reload": "", + "Fork Widget": "", + "Are you sure you want to fork this widget?": "", + "Remove Widget": "", + "Are you sure you want to remove this widget?": "", + "On": "開啟", + "Off": "關閉", + "Visualizer Widget": "視覺化元件", + "This widget visualizes a G-code file and simulates the tool path.": "這個元件可用來視覺化 G-code 和模擬刀具路徑等功能。", + "Connection Widget": "連線元件", + "This widget lets you establish a connection to a serial port.": "這個元件可用來建立序列埠連線。", + "Console Widget": "控制台元件", + "This widget lets you read and write data to the CNC controller connected to a serial port.": "這個元件可讀寫序列埠資料至連線的CNC控制器。", + "Grbl Widget": "Grbl元件", + "This widget shows the Grbl state and provides Grbl specific features.": "這個元件可顯示Grbl狀態並提供Grbl相關的功能。", + "Marlin Widget": "", + "This widget shows the Marlin state and provides Marlin specific features.": "", + "Smoothie Widget": "Smoothie元件", + "This widget shows the Smoothie state and provides Smoothie specific features.": "這個元件可顯示Smoothie狀態並提供Smoothie相關的功能。", + "TinyG Widget": "TinyG元件", + "This widget shows the TinyG state and provides TinyG specific features.": "這個元件可顯示TinyG狀態並提供TinyG相關的功能。", + "Axes Widget": "座標軸元件", + "This widget shows the XYZ position. It includes jog controls, homing, and axis zeroing.": "這個元件可顯示XYZ位置,同時也包含了點動控制、原點復歸和設定原點等功能。", + "G-code Widget": "G-code 元件", + "This widget shows the current status of G-code commands.": "這個元件可顯示當前 G-code 的執行狀態。", + "Laser Widget": "雷射元件", + "This widget allows you control laser intensity and turn the laser on/off.": "這個元件可用來控制雷射強度並開關雷射。", + "Macro Widget": "巨集元件", + "This widget can use macros to automate routine tasks.": "這個元件可使用巨集來自動執行例行工作。", + "Probe Widget": "探測元件", + "This widget helps you use a touch plate to set your Z zero offset.": "這個元件可協助使用對刀儀去設定Z軸原點。", + "Spindle Widget": "主軸元件", + "This widget provides the spindle control.": "這個元件提供主軸相關的控制。", + "Custom Widget": "", + "This widget gives you a communication interface for creating your own widget.": "", + "Webcam Widget": "網路攝影機元件", + "This widget lets you monitor a webcam.": "這個元件可用來遠端監控網路攝影機。", + "Widgets": "元件", + "M0 Program Pause": "", + "M1 Program Pause": "", + "M2 Program End": "", + "M30 Program End": "", + "M6 Tool Change": "", + "M109 Set Extruder Temperature": "", + "M190 Set Heated Bed Temperature": "", + "Drop G-code file here": "將 G-code 檔案拖曳至此處", + "Manage Widgets ({{inactiveCount}})": "管理元件 ({{inactiveCount}})", + "Collapse All": "", + "Expand All": "", + "Corrupted workspace settings": "", + "The workspace settings have become corrupted or invalid. Click Restore Defaults to restore default settings and continue.": "", + "Download workspace settings": "", + "This field is required.": "這是必填欄位。", + "Passwords should be equal.": "密碼必須一致。", + "Work Coordinate System (G54)": "工作座標系統 (G54)", + "Work Coordinate System (G55)": "工作座標系統 (G55)", + "Work Coordinate System (G56)": "工作座標系統 (G56)", + "Work Coordinate System (G57)": "工作座標系統 (G57)", + "Work Coordinate System (G58)": "工作座標系統 (G58)", + "Work Coordinate System (G59)": "工作座標系統 (G59)", + "Go To Work Zero (G0 X0 Y0 Z0)": "返回工作原點 (G0 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P1 X0 Y0 Z0)": "設定工作原點 (G10 L20 P1 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P2 X0 Y0 Z0)": "設定工作原點 (G10 L20 P2 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P3 X0 Y0 Z0)": "設定工作原點 (G10 L20 P3 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P4 X0 Y0 Z0)": "設定工作原點 (G10 L20 P4 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P5 X0 Y0 Z0)": "設定工作原點 (G10 L20 P5 X0 Y0 Z0)", + "Zero Out Work Offsets (G10 L20 P6 X0 Y0 Z0)": "設定工作原點 (G10 L20 P6 X0 Y0 Z0)", + "Temporary Offsets (G92)": "程式原點 (G92)", + "Zero Out Temporary Offsets (G92 X0 Y0 Z0)": "設定程式原點 (G92 X0 Y0 Z0)", + "Un-Zero Out Temporary Offsets (G92.1 X0 Y0 Z0)": "取消設定程式原點 (G92.1 X0 Y0 Z0)", + "Machine Coordinate System (G53)": "機器座標系統 (G53)", + "Go To Machine Zero (G53 G0 X0 Y0 Z0)": "返回機器原點 (G53 G0 X0 Y0 Z0)", + "Set Machine Zero (G28.3 X0 Y0 Z0)": "", + "Homing Sequence (G28.2 X0 Y0 Z0)": "", + "Go To Work Zero On X Axis (G0 X0)": "返回X軸工作原點 (G0 X0)", + "Zero Out Work X Axis (G10 L20 P1 X0)": "設定X軸工作原點 (G10 L20 P1 X0)", + "Zero Out Work X Axis (G10 L20 P2 X0)": "設定X軸工作原點 (G10 L20 P2 X0)", + "Zero Out Work X Axis (G10 L20 P3 X0)": "設定X軸工作原點 (G10 L20 P3 X0)", + "Zero Out Work X Axis (G10 L20 P4 X0)": "設定X軸工作原點 (G10 L20 P4 X0)", + "Zero Out Work X Axis (G10 L20 P5 X0)": "設定X軸工作原點 (G10 L20 P5 X0)", + "Zero Out Work X Axis (G10 L20 P6 X0)": "設定X軸工作原點 (G10 L20 P6 X0)", + "Zero Out Temporary X Axis (G92 X0)": "設定X軸程式原點 (G92 X0)", + "Un-Zero Out Temporary X Axis (G92.1 X0)": "取消設定X軸程式原點 (G92.1 X0)", + "Go To Machine Zero On X Axis (G53 G0 X0)": "返回X軸機器原點 (G53 G0 X0)", + "Zero Out Machine X Axis (G28.3 X0)": "", + "Home Machine X Axis (G28.2 X0)": "", + "Go To Work Zero On Y Axis (G0 Y0)": "返回Y軸工作原點 (G0 Y0)", + "Zero Out Work Y Axis (G10 L20 P1 Y0)": "設定Y軸工作原點 (G10 L20 P1 Y0)", + "Zero Out Work Y Axis (G10 L20 P2 Y0)": "設定Y軸工作原點 (G10 L20 P2 Y0)", + "Zero Out Work Y Axis (G10 L20 P3 Y0)": "設定Y軸工作原點 (G10 L20 P3 Y0)", + "Zero Out Work Y Axis (G10 L20 P4 Y0)": "設定Y軸工作原點 (G10 L20 P4 Y0)", + "Zero Out Work Y Axis (G10 L20 P5 Y0)": "設定Y軸工作原點 (G10 L20 P5 Y0)", + "Zero Out Work Y Axis (G10 L20 P6 Y0)": "設定Y軸工作原點 (G10 L20 P6 Y0)", + "Zero Out Temporary Y Axis (G92 Y0)": "設定Y軸程式原點 (G92 Y0)", + "Un-Zero Out Temporary Y Axis (G92.1 Y0)": "取消設定Y軸程式原點 (G92.1 Y0)", + "Go To Machine Zero On Y Axis (G53 G0 Y0)": "返回Y軸機器原點 (G53 G0 Y0)", + "Zero Out Machine Y Axis (G28.3 Y0)": "", + "Home Machine Y Axis (G28.2 Y0)": "", + "Go To Work Zero On Z Axis (G0 Z0)": "返回Z軸工作原點 (G0 Z0)", + "Zero Out Work Z Axis (G10 L20 P1 Z0)": "設定Z軸工作原點 (G10 L20 P1 Z0)", + "Zero Out Work Z Axis (G10 L20 P2 Z0)": "設定Z軸工作原點 (G10 L20 P2 Z0)", + "Zero Out Work Z Axis (G10 L20 P3 Z0)": "設定Z軸工作原點 (G10 L20 P3 Z0)", + "Zero Out Work Z Axis (G10 L20 P4 Z0)": "設定Z軸工作原點 (G10 L20 P4 Z0)", + "Zero Out Work Z Axis (G10 L20 P5 Z0)": "設定Z軸工作原點 (G10 L20 P5 Z0)", + "Zero Out Work Z Axis (G10 L20 P6 Z0)": "設定Z軸工作原點 (G10 L20 P6 Z0)", + "Zero Out Temporary Z Axis (G92 Z0)": "設定Z軸程式原點 (G92 Z0)", + "Un-Zero Out Temporary Z Axis (G92.1 Z0)": "取消設定Z軸程式原點 (G92.1 Z0)", + "Go To Machine Zero On Z Axis (G53 G0 Z0)": "返回Z軸機器原點 (G53 G0 Z0)", + "Zero Out Machine Z Axis (G28.3 Z0)": "", + "Home Machine Z Axis (G28.2 Z0)": "", + "Go To Work Zero On A Axis (G0 A0)": "返回A軸工作原點 (G0 A0)", + "Zero Out Work A Axis (G10 L20 P1 A0)": "設定A軸工作原點 (G10 L20 P1 A0)", + "Zero Out Work A Axis (G10 L20 P2 A0)": "設定A軸工作原點 (G10 L20 P2 A0)", + "Zero Out Work A Axis (G10 L20 P3 A0)": "設定A軸工作原點 (G10 L20 P3 A0)", + "Zero Out Work A Axis (G10 L20 P4 A0)": "設定A軸工作原點 (G10 L20 P4 A0)", + "Zero Out Work A Axis (G10 L20 P5 A0)": "設定A軸工作原點 (G10 L20 P5 A0)", + "Zero Out Work A Axis (G10 L20 P6 A0)": "設定A軸工作原點 (G10 L20 P6 A0)", + "Zero Out Temporary A Axis (G92 A0)": "設定A軸程式原點 (G92 A0)", + "Un-Zero Out Temporary A Axis (G92.1 A0)": "取消設定A軸程式原點 (G92.1 A0)", + "Go To Machine Zero On A Axis (G53 G0 A0)": "返回A軸機器原點 (G53 G0 A0)", + "Zero Out Machine A Axis (G28.3 A0)": "", + "Home Machine A Axis (G28.2 A0)": "", + "Go To Work Zero On B Axis (G0 B0)": "", + "Zero Out Work B Axis (G10 L20 P1 B0)": "", + "Zero Out Work B Axis (G10 L20 P2 B0)": "", + "Zero Out Work B Axis (G10 L20 P3 B0)": "", + "Zero Out Work B Axis (G10 L20 P4 B0)": "", + "Zero Out Work B Axis (G10 L20 P5 B0)": "", + "Zero Out Work B Axis (G10 L20 P6 B0)": "", + "Zero Out Temporary B Axis (G92 B0)": "", + "Un-Zero Out Temporary B Axis (G92.1 B0)": "", + "Go To Machine Zero On B Axis (G53 G0 B0)": "", + "Zero Out Machine B Axis (G28.3 B0)": "", + "Home Machine B Axis (G28.2 B0)": "", + "Go To Work Zero On C Axis (G0 C0)": "", + "Zero Out Work C Axis (G10 L20 P1 C0)": "", + "Zero Out Work C Axis (G10 L20 P2 C0)": "", + "Zero Out Work C Axis (G10 L20 P3 C0)": "", + "Zero Out Work C Axis (G10 L20 P4 C0)": "", + "Zero Out Work C Axis (G10 L20 P5 C0)": "", + "Zero Out Work C Axis (G10 L20 P6 C0)": "", + "Zero Out Temporary C Axis (G92 C0)": "", + "Un-Zero Out Temporary C Axis (G92.1 C0)": "", + "Go To Machine Zero On C Axis (G53 G0 C0)": "", + "Zero Out Machine C Axis (G28.3 C0)": "", + "Home Machine C Axis (G28.2 C0)": "", + "mm": "mm", + "in": "in", + "deg": "deg", + "Zero Out Machine": "", + "Home Machine": "", + "Zero Out Work Offsets": "", + "Set Work Offsets": "", + "Axis": "座標軸", + "Machine Position": "機器位置", + "Work Position": "工作位置", + "Axes": "座標軸", + "Keypad jogging": "", + "Edit": "編輯", + "Expand": "", + "Collapse": "", + "More": "更多", + "Enter Full Screen": "", + "Exit Full Screen": "", + "Move X- Y+": "X軸逆向Y軸正向移動", + "Move Y+": "Y軸正向移動", + "Move X+ Y+": "X軸正向Y軸正向移動", + "Move Z+": "Z軸正向移動", + "Move X-": "X軸逆向移動", + "Move To XY Zero (G0 X0 Y0)": "移動至XY軸原點 (G0 X0 Y0)", + "Move X+": "X軸正向移動", + "Move To Z Zero (G0 Z0)": "移動至Z軸原點 (G0 Z0)", + "Move X- Y-": "X軸逆向Y軸逆向移動", + "Move Y-": "Y軸逆向移動", + "Move X+ Y-": "X軸正向Y軸逆向移動", + "Move Z-": "Z軸逆向移動", + "Units": "單位", + "G20 (inch)": "", + "G21 (mm)": "", + "Imperial": "", + "Metric": "", + "Right": "右鍵 (Right)", + "Left": "左鍵 (Left)", + "Up": "上鍵 (Up)", + "Down": "下鍵 (Down)", + "Page Up": "上頁 (Page Up)", + "Page Down": "下頁 (Page Down)", + "Right Square Bracket": "", + "Left Square Bracket": "", + "0.1x Move": "0.1倍速移動", + "Alt": "Alt 鍵", + "10x Move": "10倍速移動", + "⇧ Shift": "Shift 鍵", + "X-axis": "X軸", + "Y-axis": "Y軸", + "Z-axis": "Z軸", + "A-axis": "A軸", + "B-axis": "", + "C-axis": "", + "Custom Commands": "", + "Axes Settings": "座標軸設定", + "ShuttleXpress": "", + "Feed Rate Range: {{min}} - {{max}} mm/min": "進給率範圍:{{min}} - {{max}} mm/min", + "Repeat Rate: {{hertz}}Hz": "重複率:{{hertz}}Hz", + "60 Times per Second": "每秒60次", + "45 Times per Second": "每秒45次", + "30 Times per Second": "每秒30次", + "15 Times per Second": "每秒15次", + "10 Times per Second": "每秒10次", + "5 Times per Second": "每秒5次", + "2 Times per Second": "每秒2次", + "Once Every Second": "每秒1次", + "Distance Overshoot: {{overshoot}}x": "超調量距離:{{overshoot}}x", + "Manufacturer: {{manufacturer}}": "製造商:{{manufacturer}}", + "Port": "序列埠", + "No ports available": "找不到可用的序列埠", + "Choose a port": "選擇序列埠", + "Refresh": "重新整理", + "Baud rate": "鮑率", + "Choose a baud rate": "選擇鮑率", + "Enable hardware flow control": "", + "Connect automatically": "自動連線", + "Open": "開啟", + "Error opening serial port '{{- port}}'": "", + "Connection": "連線", + "No serial connection": "", + "Connected to {{-port}} with a baud rate of {{baudrate}}": "", + "Console": "控制台", + "Clear all": "全部清除", + "Select All": "", + "Clear Selection": "", + "URL not configured": "", + "The widget is currently disabled": "", + "Enable": "啟動", + "Disable": "關閉", + "URL": "", + "Min": "最小值", + "Max": "最大值", + "Dimension": "尺寸", + "Sent": "已傳送", + "Received": "已接收", + "Start Time": "起始時間", + "Elapsed Time": "執行時間", + "Finish Time": "結束時間", + "Remaining Time": "剩餘時間", + "Controller State": "", + "Controller Settings": "", + "Hide": "隱藏", + "Show": "顯示", + "Queue Reports": "工作佇列報表", + "Planner Buffer": "規劃緩衝區", + "Receive Buffer": "接收緩衝區", + "Status Reports": "狀態報表", + "State": "狀態", + "Feed Rate": "進給率", + "Spindle": "主軸", + "Tool Number": "刀具編號", + "Modal Groups": "狀態群組", + "Motion": "運作", + "Coordinate": "座標系", + "Plane": "平面", + "Distance": "距離", + "Program": "程序", + "Coolant": "冷卻", + "Status Report (?)": "狀態報告 (?)", + "Check G-code Mode ($C)": "檢查 G-code 模式 ($C)", + "Homing ($H)": "原點復歸 ($H)", + "Kill Alarm Lock ($X)": "解除警報鎖定 ($X)", + "Sleep ($SLP)": "睡眠 ($SLP)", + "Help ($)": "輔助 ($)", + "Settings ($$)": "設定 ($$)", + "View G-code Parameters ($#)": "檢視 G-code 參數 ($#)", + "View G-code Parser State ($G)": "檢視 G-code 解析器狀態 ($G)", + "View Build Info ($I)": "檢視版本資訊 ($I)", + "View Startup Blocks ($N)": "檢視啟動區塊 ($N)", + "Laser": "雷射", + "Laser Intensity Control": "雷射強度控制", + "Laser Test": "雷射測試", + "Power (%)": "", + "Test duration": "", + "ms": "毫秒", + "Maximum value": "", + "Laser Off": "關閉雷射", + "New Macro": "新巨集", + "Macro Name": "巨集名稱", + "Macro Commands": "巨集命令", + "Macro Variables": "巨集變數", + "Edit Macro": "編輯巨集", + "Delete Macro": "刪除巨集", + "Are you sure you want to delete this macro?": "你確定要刪除這個巨集?", + "No": "否", + "Yes": "是", + "Macro": "巨集", + "Are you sure you want to load this macro?": "你確定要載入這個巨集?", + "No macros": "沒有可用的巨集", + "Run": "執行", + "Get Extruder Temperature (M105)": "", + "Get Current Position (M114)": "", + "Get Firmware Version and Capabilities (M115)": "", + "Heater Control": "", + "Extruder": "", + "°C": "", + "Set the target temperature for the extruder": "", + "Heated Bed": "", + "Set the target temperature for the heated bed": "", + "Extruder Temperature": "", + "Heated Bed Temperature": "", + "Extruder Power": "", + "Heated Bed Power": "", + "Probe": "探測", + "mm/min": "mm/min", + "in/min": "in/min", + "Probe Command": "探測指令", + "G38.2 probe toward workpiece, stop on contact, signal error if failure": "G38.2 朝接近工件方向移動,在接觸時停止,若失敗會發出錯誤信號", + "G38.3 probe toward workpiece, stop on contact": "G38.3 朝接近工件方向移動,在接觸時停止", + "G38.4 probe away from workpiece, stop on loss of contact, signal error if failure": "G38.4 朝遠離工件方向移動,在未接觸時停止,若失敗會發出錯誤信號", + "G38.5 probe away from workpiece, stop on loss of contact": "G38.5 朝遠離工件方向移動,在未接觸時停止", + "Probe Depth": "探測深度", + "Probe Feedrate": "探測進給率", + "Touch Plate Thickness": "對刀儀厚度", + "Retraction Distance": "回縮距離", + "Z-Probe": "", + "Apply tool length offset": "", + "Run Z-Probe": "執行Z軸探測", + "Spindle Speed": "主軸轉速", + "RPM": "每分鐘轉速", + "Queue Flush (%)": "清除工作佇列", + "Kill Job (^d)": "終止工作 (^d)", + "Clear Alarm ($clear)": "解除警報 ($clear)", + "Show System Settings": "顯示系統設定", + "Show All Settings": "顯示全部設定", + "List Self Tests": "列出自檢測試", + "Power Management": "", + "Enable Motors": "", + "Disable Motors": "", + "Motor {{n}}": "", + "Velocity": "速率", + "Line": "行數", + "Path": "路徑", + "G-code not loaded": "未載入 G-code", + "Tool Change": "", + "Are you sure you want to resume program execution?": "", + "Click the Resume button to resume program execution.": "", + "Click the Stop button to stop program execution.": "", + "Run a tool change macro to change the tool and adjust the Z-axis offset. Afterwards, click the Resume button to resume program execution.": "", + "Waiting for the target temperature to be reached...": "", + "Work Coordinate System": "工作座標系統", + "Enable 3D View": "啟用3D視圖", + "Disable 3D View": "禁用3D視圖", + "3D View": "3D視圖", + "Projection": "投影", + "Perspective Projection": "透視投影", + "Orthographic Projection": "正投影", + "Display G-code Filename": "顯示 G-code 檔名", + "Hide Coordinate System": "隱藏座標系統", + "Show Coordinate System": "顯示座標系統", + "Hide Grid Line Numbers": "", + "Show Grid Line Numbers": "", + "File folder": "檔案資料夾", + "{{extname}} File": "{{extname}} 檔案", + "File": "檔案", + "3D rendering": "3D 彩現", + "Zoom In": "放大", + "Zoom Out": "縮小", + "Move the camera": "移動視角", + "Rotate the camera": "旋轉視角", + "Watch Directory": "監視目錄", + "Date modified": "修改日期", + "Type": "類型", + "Size": "大小", + "Load G-code": "載入 G-code", + "Upload G-code": "上傳 G-code", + "Browse...": "瀏覽", + "Resume": "", + "Pause": "暫停", + "Webcam": "網路攝影機", + "Webcam Settings": "網路攝影機設定", + "Media Source": "媒體來源", + "Use a built-in camera or a connected webcam": "使用內置相機或連接的網路攝影機", + "Use a M-JPEG stream over HTTP": "使用 M-JPEG 影像串流", + "Webcam is off": "網路攝影機未開啟", + "Rotate Left": "向左旋轉", + "Rotate Right": "向右旋轉", + "Flip Horizontally": "水平翻轉", + "Flip Vertically": "垂直翻轉", + "Crosshair": "十字準線", + "Manual Data Input": "", + "MDI": "", + "Button Width": "", + "Order": "", + "Move Up": "", + "Move Down": "", + "Remove": "移除", + "Waiting for the planner to empty...": "", + "No video devices available": "", + "Choose a video device": "", + "Automatic detection": "", + "Front View": "", + "Move Backward": "", + "Move Forward": "", + "Top View": "", + "Zoom to Fit": "", + "Right Side View": "", + "Left Side View": "", + "Custom range...": "自訂範圍...", + "Today": "今天", + "Last {{n}} days": "最近 {{n}} 天", + "Apply": "套用", + "Add": "新增", + "Custom Jog Distance (mm)": "", + "Custom Jog Distance (inches)": "", + "Machine Profiles": "", + "No machine profile selected": "", + "Delete machine profile": "", + "Machine Profile": "", + "Limits": "", + "User Accounts": "使用者帳號", + "New Account": "新增帳號", + "Hide Limits": "", + "Show Limits": "", + "WebGL: <1>Enabled": "WebGL: <1>已啟用", + "WebGL: <1>Disabled": "WebGL: <1>已停用", + "Hide Cutting Tool": "", + "Show Cutting Tool": "", + "Ready to start": "" } diff --git a/src/web/images/32x32/loading.gif b/src/app/images/32x32/loading.gif similarity index 100% rename from src/web/images/32x32/loading.gif rename to src/app/images/32x32/loading.gif diff --git a/src/web/images/logo-badge-256x256.png b/src/app/images/logo-badge-256x256.png similarity index 100% rename from src/web/images/logo-badge-256x256.png rename to src/app/images/logo-badge-256x256.png diff --git a/src/web/images/logo-badge-32x32.png b/src/app/images/logo-badge-32x32.png similarity index 100% rename from src/web/images/logo-badge-32x32.png rename to src/app/images/logo-badge-32x32.png diff --git a/src/web/images/logo-square-256x256.png b/src/app/images/logo-square-256x256.png similarity index 100% rename from src/web/images/logo-square-256x256.png rename to src/app/images/logo-square-256x256.png diff --git a/src/web/index.jsx b/src/app/index.jsx similarity index 98% rename from src/web/index.jsx rename to src/app/index.jsx index 1fcaabe10..c0924fe5a 100644 --- a/src/web/index.jsx +++ b/src/app/index.jsx @@ -13,7 +13,7 @@ import i18next from 'i18next'; import LanguageDetector from 'i18next-browser-languagedetector'; import XHR from 'i18next-xhr-backend'; import { TRACE, DEBUG, INFO, WARN, ERROR } from 'universal-logger'; -import { Provider as GridSystemProvider } from 'web/components/GridSystem'; +import { Provider as GridSystemProvider } from 'app/components/GridSystem'; import settings from './config/settings'; import portal from './lib/portal'; import controller from './lib/controller'; @@ -21,7 +21,7 @@ import i18n from './lib/i18n'; import log from './lib/log'; import series from './lib/promise-series'; import promisify from './lib/promisify'; -import user from './lib/user'; +import * as user from './lib/user'; import store from './store'; import defaultState from './store/defaultState'; import App from './containers/App'; diff --git a/src/web/lib/ResizeObserver.js b/src/app/lib/ResizeObserver.js similarity index 100% rename from src/web/lib/ResizeObserver.js rename to src/app/lib/ResizeObserver.js diff --git a/src/web/lib/analytics.js b/src/app/lib/analytics.js similarity index 88% rename from src/web/lib/analytics.js rename to src/app/lib/analytics.js index 7b594b09e..0c890ff02 100644 --- a/src/web/lib/analytics.js +++ b/src/app/lib/analytics.js @@ -1,5 +1,5 @@ import GoogleAnalytics from 'react-ga'; -import settings from '../config/settings'; +import settings from 'app/config/settings'; // https://github.com/ReactTraining/react-router/issues/4278#issuecomment-299692502 GoogleAnalytics.initialize(settings.analytics.trackingId, { diff --git a/src/web/lib/combokeys.js b/src/app/lib/combokeys.js similarity index 100% rename from src/web/lib/combokeys.js rename to src/app/lib/combokeys.js diff --git a/src/web/lib/controller.js b/src/app/lib/controller.js similarity index 100% rename from src/web/lib/controller.js rename to src/app/lib/controller.js diff --git a/src/web/lib/dom-events.js b/src/app/lib/dom-events.js similarity index 100% rename from src/web/lib/dom-events.js rename to src/app/lib/dom-events.js diff --git a/src/web/lib/gcode-text.js b/src/app/lib/gcode-text.js similarity index 100% rename from src/web/lib/gcode-text.js rename to src/app/lib/gcode-text.js diff --git a/src/web/lib/i18n.js b/src/app/lib/i18n.js similarity index 100% rename from src/web/lib/i18n.js rename to src/app/lib/i18n.js index 3d17f0850..fecc2b002 100644 --- a/src/web/lib/i18n.js +++ b/src/app/lib/i18n.js @@ -1,5 +1,5 @@ -import i18next from 'i18next'; import sha1 from 'sha1'; +import i18next from 'i18next'; const t = (...args) => { const key = args[0]; diff --git a/src/web/lib/immutable-store.js b/src/app/lib/immutable-store.js similarity index 100% rename from src/web/lib/immutable-store.js rename to src/app/lib/immutable-store.js diff --git a/src/web/lib/log.js b/src/app/lib/log.js similarity index 100% rename from src/web/lib/log.js rename to src/app/lib/log.js diff --git a/src/web/lib/normalize-range.js b/src/app/lib/normalize-range.js similarity index 100% rename from src/web/lib/normalize-range.js rename to src/app/lib/normalize-range.js diff --git a/src/web/lib/numeral.js b/src/app/lib/numeral.js similarity index 100% rename from src/web/lib/numeral.js rename to src/app/lib/numeral.js diff --git a/src/web/lib/portal.jsx b/src/app/lib/portal.jsx similarity index 100% rename from src/web/lib/portal.jsx rename to src/app/lib/portal.jsx diff --git a/src/web/lib/promise-series.js b/src/app/lib/promise-series.js similarity index 89% rename from src/web/lib/promise-series.js rename to src/app/lib/promise-series.js index 187833bc2..bcd143702 100644 --- a/src/web/lib/promise-series.js +++ b/src/app/lib/promise-series.js @@ -5,4 +5,4 @@ const promiseSeries = (tasks, initialValue) => { return tasks.reduce((p, task) => p.then(task), Promise.resolve(initialValue)); }; -module.exports = promiseSeries; +export default promiseSeries; diff --git a/src/web/lib/promisify.js b/src/app/lib/promisify.js similarity index 96% rename from src/web/lib/promisify.js rename to src/app/lib/promisify.js index a2059a74e..51d92bd04 100644 --- a/src/web/lib/promisify.js +++ b/src/app/lib/promisify.js @@ -33,4 +33,4 @@ const promisify = (fn, options) => function (...args) { }); }; -module.exports = promisify; +export default promisify; diff --git a/src/app/lib/three/CombinedCamera.js b/src/app/lib/three/CombinedCamera.js new file mode 100644 index 000000000..69d76f939 --- /dev/null +++ b/src/app/lib/three/CombinedCamera.js @@ -0,0 +1,234 @@ +/** + * @author zz85 / http://twitter.com/blurspline / http://www.lab4games.net/zz85/blog + * + * A general perpose camera, for setting FOV, Lens Focal Length, + * and switching between perspective and orthographic views easily. + * Use this only if you do not wish to manage + * both a Orthographic and Perspective Camera + * + */ + +import * as THREE from 'three'; + +class CombinedCamera extends THREE.Camera { + constructor(width, height, fov, near, far, orthoNear, orthoFar) { + super(); + + this.fov = fov; + + this.far = far; + this.near = near; + + this.left = -(width / 2); + this.right = (width / 2); + this.top = (height / 2); + this.bottom = -(height / 2); + + this.aspect = width / height; + this.zoom = 1; + this.view = null; + // We could also handle the projectionMatrix internally, but just wanted to test nested camera objects + + this.cameraO = new THREE.OrthographicCamera(this.left, this.right, this.top, this.bottom, orthoNear, orthoFar); + this.cameraP = new THREE.PerspectiveCamera(fov, width / height, near, far); + + this.toPerspective(); + } + + toPerspective() { + // Switches to the Perspective Camera + + this.near = this.cameraP.near; + this.far = this.cameraP.far; + + this.cameraP.aspect = this.aspect; + this.cameraP.fov = this.fov / this.zoom; + this.cameraP.view = this.view; + + this.cameraP.updateProjectionMatrix(); + + this.projectionMatrix = this.cameraP.projectionMatrix; + + this.inPerspectiveMode = true; + this.inOrthographicMode = false; + } + + toOrthographic() { + // Switches to the Orthographic camera estimating viewport from Perspective + + const fov = this.fov; + const aspect = this.cameraP.aspect; + const near = this.cameraP.near; + const far = this.cameraP.far; + + // The size that we set is the mid plane of the viewing frustum + + const hyperfocus = (near + far) / 2; + + let halfHeight = Math.tan(fov * Math.PI / 180 / 2) * hyperfocus; + let halfWidth = halfHeight * aspect; + + halfHeight /= this.zoom; + halfWidth /= this.zoom; + + this.cameraO.left = -halfWidth; + this.cameraO.right = halfWidth; + this.cameraO.top = halfHeight; + this.cameraO.bottom = -halfHeight; + this.cameraO.view = this.view; + + this.cameraO.updateProjectionMatrix(); + + this.near = this.cameraO.near; + this.far = this.cameraO.far; + this.projectionMatrix = this.cameraO.projectionMatrix; + + this.inPerspectiveMode = false; + this.inOrthographicMode = true; + } + + copy(source) { + super.copy(source); + + this.fov = source.fov; + this.far = source.far; + this.near = source.near; + + this.left = source.left; + this.right = source.right; + this.top = source.top; + this.bottom = source.bottom; + + this.zoom = source.zoom; + this.view = source.view === null ? null : Object.assign({}, source.view); + this.aspect = source.aspect; + + this.cameraO.copy(source.cameraO); + this.cameraP.copy(source.cameraP); + + this.inOrthographicMode = source.inOrthographicMode; + this.inPerspectiveMode = source.inPerspectiveMode; + + return this; + } + + setViewOffset(fullWidth, fullHeight, x, y, width, height) { + this.view = { + fullWidth: fullWidth, + fullHeight: fullHeight, + offsetX: x, + offsetY: y, + width: width, + height: height + }; + + if (this.inPerspectiveMode) { + this.aspect = fullWidth / fullHeight; + this.toPerspective(); + } else { + this.toOrthographic(); + } + } + + clearViewOffset() { + this.view = null; + this.updateProjectionMatrix(); + } + + setSize(width, height) { + this.cameraP.aspect = width / height; + this.left = -(width / 2); + this.right = (width / 2); + this.top = (height / 2); + this.bottom = -(height / 2); + } + + setFov(fov) { + this.fov = fov; + + if (this.inPerspectiveMode) { + this.toPerspective(); + } else { + this.toOrthographic(); + } + } + + // For maintaining similar API with PerspectiveCamera + updateProjectionMatrix() { + if (this.inPerspectiveMode) { + this.toPerspective(); + } else { + this.toPerspective(); + this.toOrthographic(); + } + } + + /* + * Uses Focal Length (in mm) to estimate and set FOV + * 35mm (full frame) camera is used if frame size is not specified; + * Formula based on http://www.bobatkins.com/photography/technical/field_of_view.html + */ + setLens(focalLength, filmGauge) { + if (filmGauge === undefined) { + filmGauge = 35; + } + + const vExtentSlope = 0.5 * filmGauge / + (focalLength * Math.max(this.cameraP.aspect, 1)); + + const fov = THREE.Math.RAD2DEG * 2 * Math.atan(vExtentSlope); + + this.setFov(fov); + + return fov; + } + + setZoom(zoom) { + this.zoom = zoom; + + if (this.inPerspectiveMode) { + this.toPerspective(); + } else { + this.toOrthographic(); + } + } + + toFrontView() { + this.rotation.x = 0; + this.rotation.y = 0; + this.rotation.z = 0; + // should we be modifing the matrix instead? + } + + toBackView() { + this.rotation.x = 0; + this.rotation.y = Math.PI; + this.rotation.z = 0; + } + + toLeftView() { + this.rotation.x = 0; + this.rotation.y = -(Math.PI / 2); + this.rotation.z = 0; + } + + toRightView() { + this.rotation.x = 0; + this.rotation.y = (Math.PI / 2); + this.rotation.z = 0; + } + + toTopView() { + this.rotation.x = -(Math.PI / 2); + this.rotation.y = 0; + this.rotation.z = 0; + } + + toBottomView() { + this.rotation.x = (Math.PI / 2); + this.rotation.y = 0; + this.rotation.z = 0; + } +} + +export default CombinedCamera; diff --git a/src/app/lib/three/STLLoader.js b/src/app/lib/three/STLLoader.js new file mode 100644 index 000000000..4c0c22b13 --- /dev/null +++ b/src/app/lib/three/STLLoader.js @@ -0,0 +1,345 @@ +/* eslint-disable */ +/** + * @author aleeper / http://adamleeper.com/ + * @author mrdoob / http://mrdoob.com/ + * @author gero3 / https://github.com/gero3 + * @author Mugen87 / https://github.com/Mugen87 + * + * Description: A THREE loader for STL ASCII files, as created by Solidworks and other CAD programs. + * + * Supports both binary and ASCII encoded files, with automatic detection of type. + * + * The loader returns a non-indexed buffer geometry. + * + * Limitations: + * Binary decoding supports "Magics" color format (http://en.wikipedia.org/wiki/STL_(file_format)#Color_in_binary_STL). + * There is perhaps some question as to how valid it is to always assume little-endian-ness. + * ASCII decoding assumes file is UTF-8. + * + * Usage: + * var loader = new THREE.STLLoader(); + * loader.load( './models/stl/slotted_disk.stl', function ( geometry ) { + * scene.add( new THREE.Mesh( geometry ) ); + * }); + * + * For binary STLs geometry might contain colors for vertices. To use it: + * // use the same code to load STL as above + * if (geometry.hasColors) { + * material = new THREE.MeshPhongMaterial({ opacity: geometry.alpha, vertexColors: THREE.VertexColors }); + * } else { .... } + * var mesh = new THREE.Mesh( geometry, material ); + */ + +import * as THREE from 'three'; + +THREE.STLLoader = function ( manager ) { + + this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; + +}; + +THREE.STLLoader.prototype = { + + constructor: THREE.STLLoader, + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var loader = new THREE.FileLoader( scope.manager ); + loader.setPath( scope.path ); + loader.setResponseType( 'arraybuffer' ); + loader.load( url, function ( text ) { + + try { + + onLoad( scope.parse( text ) ); + + } catch ( exception ) { + + if ( onError ) { + + onError( exception ); + + } + + } + + }, onProgress, onError ); + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + }, + + parse: function ( data ) { + + function isBinary( data ) { + + var expect, face_size, n_faces, reader; + reader = new DataView( data ); + face_size = ( 32 / 8 * 3 ) + ( ( 32 / 8 * 3 ) * 3 ) + ( 16 / 8 ); + n_faces = reader.getUint32( 80, true ); + expect = 80 + ( 32 / 8 ) + ( n_faces * face_size ); + + if ( expect === reader.byteLength ) { + + return true; + + } + + // An ASCII STL data must begin with 'solid ' as the first six bytes. + // However, ASCII STLs lacking the SPACE after the 'd' are known to be + // plentiful. So, check the first 5 bytes for 'solid'. + + // Several encodings, such as UTF-8, precede the text with up to 5 bytes: + // https://en.wikipedia.org/wiki/Byte_order_mark#Byte_order_marks_by_encoding + // Search for "solid" to start anywhere after those prefixes. + + // US-ASCII ordinal values for 's', 'o', 'l', 'i', 'd' + + var solid = [ 115, 111, 108, 105, 100 ]; + + for ( var off = 0; off < 5; off ++ ) { + + // If "solid" text is matched to the current offset, declare it to be an ASCII STL. + + if ( matchDataViewAt ( solid, reader, off ) ) return false; + + } + + // Couldn't find "solid" text at the beginning; it is binary STL. + + return true; + + } + + function matchDataViewAt( query, reader, offset ) { + + // Check if each byte in query matches the corresponding byte from the current offset + + for ( var i = 0, il = query.length; i < il; i ++ ) { + + if ( query[ i ] !== reader.getUint8( offset + i, false ) ) return false; + + } + + return true; + + } + + function parseBinary( data ) { + + var reader = new DataView( data ); + var faces = reader.getUint32( 80, true ); + + var r, g, b, hasColors = false, colors; + var defaultR, defaultG, defaultB, alpha; + + // process STL header + // check for default color in header ("COLOR=rgba" sequence). + + for ( var index = 0; index < 80 - 10; index ++ ) { + + if ( ( reader.getUint32( index, false ) == 0x434F4C4F /*COLO*/ ) && + ( reader.getUint8( index + 4 ) == 0x52 /*'R'*/ ) && + ( reader.getUint8( index + 5 ) == 0x3D /*'='*/ ) ) { + + hasColors = true; + colors = []; + + defaultR = reader.getUint8( index + 6 ) / 255; + defaultG = reader.getUint8( index + 7 ) / 255; + defaultB = reader.getUint8( index + 8 ) / 255; + alpha = reader.getUint8( index + 9 ) / 255; + + } + + } + + var dataOffset = 84; + var faceLength = 12 * 4 + 2; + + var geometry = new THREE.BufferGeometry(); + + var vertices = []; + var normals = []; + + for ( var face = 0; face < faces; face ++ ) { + + var start = dataOffset + face * faceLength; + var normalX = reader.getFloat32( start, true ); + var normalY = reader.getFloat32( start + 4, true ); + var normalZ = reader.getFloat32( start + 8, true ); + + if ( hasColors ) { + + var packedColor = reader.getUint16( start + 48, true ); + + if ( ( packedColor & 0x8000 ) === 0 ) { + + // facet has its own unique color + + r = ( packedColor & 0x1F ) / 31; + g = ( ( packedColor >> 5 ) & 0x1F ) / 31; + b = ( ( packedColor >> 10 ) & 0x1F ) / 31; + + } else { + + r = defaultR; + g = defaultG; + b = defaultB; + + } + + } + + for ( var i = 1; i <= 3; i ++ ) { + + var vertexstart = start + i * 12; + + vertices.push( reader.getFloat32( vertexstart, true ) ); + vertices.push( reader.getFloat32( vertexstart + 4, true ) ); + vertices.push( reader.getFloat32( vertexstart + 8, true ) ); + + normals.push( normalX, normalY, normalZ ); + + if ( hasColors ) { + + colors.push( r, g, b ); + + } + + } + + } + + geometry.addAttribute( 'position', new THREE.BufferAttribute( new Float32Array( vertices ), 3 ) ); + geometry.addAttribute( 'normal', new THREE.BufferAttribute( new Float32Array( normals ), 3 ) ); + + if ( hasColors ) { + + geometry.addAttribute( 'color', new THREE.BufferAttribute( new Float32Array( colors ), 3 ) ); + geometry.hasColors = true; + geometry.alpha = alpha; + + } + + return geometry; + + } + + function parseASCII( data ) { + + var geometry = new THREE.BufferGeometry(); + var patternFace = /facet([\s\S]*?)endfacet/g; + var faceCounter = 0; + + var patternFloat = /[\s]+([+-]?(?:\d*)(?:\.\d*)?(?:[eE][+-]?\d+)?)/.source; + var patternVertex = new RegExp( 'vertex' + patternFloat + patternFloat + patternFloat, 'g' ); + var patternNormal = new RegExp( 'normal' + patternFloat + patternFloat + patternFloat, 'g' ); + + var vertices = []; + var normals = []; + + var normal = new THREE.Vector3(); + + var result; + + while ( ( result = patternFace.exec( data ) ) !== null ) { + + var vertexCountPerFace = 0; + var normalCountPerFace = 0; + + var text = result[ 0 ]; + + while ( ( result = patternNormal.exec( text ) ) !== null ) { + + normal.x = parseFloat( result[ 1 ] ); + normal.y = parseFloat( result[ 2 ] ); + normal.z = parseFloat( result[ 3 ] ); + normalCountPerFace ++; + + } + + while ( ( result = patternVertex.exec( text ) ) !== null ) { + + vertices.push( parseFloat( result[ 1 ] ), parseFloat( result[ 2 ] ), parseFloat( result[ 3 ] ) ); + normals.push( normal.x, normal.y, normal.z ); + vertexCountPerFace ++; + + } + + // every face have to own ONE valid normal + + if ( normalCountPerFace !== 1 ) { + + console.error( 'THREE.STLLoader: Something isn\'t right with the normal of face number ' + faceCounter ); + + } + + // each face have to own THREE valid vertices + + if ( vertexCountPerFace !== 3 ) { + + console.error( 'THREE.STLLoader: Something isn\'t right with the vertices of face number ' + faceCounter ); + + } + + faceCounter ++; + + } + + geometry.addAttribute( 'position', new THREE.Float32BufferAttribute( vertices, 3 ) ); + geometry.addAttribute( 'normal', new THREE.Float32BufferAttribute( normals, 3 ) ); + + return geometry; + + } + + function ensureString( buffer ) { + + if ( typeof buffer !== 'string' ) { + + return THREE.LoaderUtils.decodeText( new Uint8Array( buffer ) ); + + } + + return buffer; + + } + + function ensureBinary( buffer ) { + + if ( typeof buffer === 'string' ) { + + var array_buffer = new Uint8Array( buffer.length ); + for ( var i = 0; i < buffer.length; i ++ ) { + + array_buffer[ i ] = buffer.charCodeAt( i ) & 0xff; // implicitly assumes little-endian + + } + return array_buffer.buffer || array_buffer; + + } else { + + return buffer; + + } + + } + + // start + + var binData = ensureBinary( data ); + + return isBinary( binData ) ? parseBinary( binData ) : parseASCII( ensureString( data ) ); + + } +}; + +export default THREE.STLLoader; diff --git a/src/web/widgets/Visualizer/TrackballControls.js b/src/app/lib/three/TrackballControls.js similarity index 98% rename from src/web/widgets/Visualizer/TrackballControls.js rename to src/app/lib/three/TrackballControls.js index 2fa4ea71d..843160d84 100644 --- a/src/web/widgets/Visualizer/TrackballControls.js +++ b/src/app/lib/three/TrackballControls.js @@ -8,7 +8,7 @@ import * as THREE from 'three'; * @author Luca Antiga / http://lantiga.github.io */ -THREE.TrackballControls = function ( object, domElement ) { +const TrackballControls = function ( object, domElement ) { var _this = this; var STATE = { NONE: -1, ROTATE: 0, ZOOM: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_ZOOM_PAN: 4 }; @@ -141,16 +141,6 @@ THREE.TrackballControls = function ( object, domElement ) { }; - this.handleEvent = function ( event ) { - - if ( typeof this[ event.type ] == 'function' ) { - - this[ event.type ]( event ); - - } - - }; - var getMouseOnScreen = ( function () { var vector = new THREE.Vector2(); @@ -598,6 +588,8 @@ THREE.TrackballControls = function ( object, domElement ) { if ( _this.enabled === false ) return; + event.preventDefault(); + switch ( event.touches.length ) { case 1: @@ -716,5 +708,7 @@ THREE.TrackballControls = function ( object, domElement ) { }; -THREE.TrackballControls.prototype = Object.create( THREE.EventDispatcher.prototype ); -THREE.TrackballControls.prototype.constructor = THREE.TrackballControls; +TrackballControls.prototype = Object.create( THREE.EventDispatcher.prototype ); +TrackballControls.prototype.constructor = TrackballControls; + +export default TrackballControls; diff --git a/src/app/lib/three/WebGL.js b/src/app/lib/three/WebGL.js new file mode 100644 index 000000000..36184ed1f --- /dev/null +++ b/src/app/lib/three/WebGL.js @@ -0,0 +1,71 @@ +import memoize from 'memoize-one'; + +/** + * @author alteredq / http://alteredqualia.com/ + * @author mr.doob / http://mrdoob.com/ + */ + +// Memoize the result to mitigate the issue of WebGL context lost and restored +export const isWebGLAvailable = memoize(() => { + try { + var canvas = document.createElement('canvas'); + return !!(window.WebGLRenderingContext && (canvas.getContext('webgl') || canvas.getContext('experimental-webgl'))); + } catch (e) { + return false; + } +}); + +// Memoize the result to mitigate the issue of WebGL context lost and restored +export const isWebGL2Available = memoize(() => { + try { + const canvas = document.createElement('canvas'); + return !!(window.WebGL2RenderingContext && canvas.getContext('webgl2')); + } catch (e) { + return false; + } +}); + +export const getWebGLErrorMessage = () => { + return getErrorMessage(1); +}; + +export const getWebGL2ErrorMessage = () => { + return getErrorMessage(2); +}; + +export const getErrorMessage = (version) => { + const names = { + 1: 'WebGL', + 2: 'WebGL 2' + }; + + const contexts = { + 1: window.WebGLRenderingContext, + 2: window.WebGL2RenderingContext + }; + + let message = 'Your $0 does not seem to support $1'; + + const element = document.createElement('div'); + element.id = 'webglmessage'; + element.style.fontFamily = 'monospace'; + element.style.fontSize = '14px'; + element.style.fontWeight = 'normal'; + element.style.textAlign = 'center'; + element.style.background = '#fff'; + element.style.color = '#000'; + element.style.padding = '1.5em'; + element.style.width = '400px'; + element.style.margin = '5em auto 0'; + + if (contexts[version]) { + message = message.replace('$0', 'graphics card'); + } else { + message = message.replace('$0', 'browser'); + } + + message = message.replace('$1', names[version]); + element.innerHTML = message; + + return element; +}; diff --git a/src/web/lib/units.js b/src/app/lib/units.js similarity index 100% rename from src/web/lib/units.js rename to src/app/lib/units.js diff --git a/src/app/lib/user.js b/src/app/lib/user.js new file mode 100644 index 000000000..6202d7419 --- /dev/null +++ b/src/app/lib/user.js @@ -0,0 +1,36 @@ +import api from 'app/api'; +import config from 'app/store'; + +let _authenticated = false; + +export const signin = ({ token, name, password }) => new Promise((resolve, reject) => { + api.signin({ token, name, password }) + .then((res) => { + const { enabled = false, token = '', name = '' } = { ...res.body }; + + config.set('session.enabled', enabled); + config.set('session.token', token); + config.set('session.name', name); + + // Persist data after successful login to prevent debounced update + config.persist(); + + _authenticated = true; + resolve({ authenticated: true, token: token }); + }) + .catch((res) => { + // Do not unset session token so it won't trigger an update to the store + _authenticated = false; + resolve({ authenticated: false, token: null }); + }); +}); + +export const signout = () => new Promise((resolve, reject) => { + config.unset('session.token'); + _authenticated = false; + resolve(); +}); + +export const isAuthenticated = () => { + return _authenticated; +}; diff --git a/src/web/lib/validations.jsx b/src/app/lib/validations.jsx similarity index 100% rename from src/web/lib/validations.jsx rename to src/app/lib/validations.jsx diff --git a/src/web/polyfill/console.js b/src/app/polyfill/console.js similarity index 100% rename from src/web/polyfill/console.js rename to src/app/polyfill/console.js diff --git a/src/web/polyfill/index.js b/src/app/polyfill/index.js similarity index 100% rename from src/web/polyfill/index.js rename to src/app/polyfill/index.js diff --git a/src/web/store/defaultState.js b/src/app/store/defaultState.js similarity index 99% rename from src/web/store/defaultState.js rename to src/app/store/defaultState.js index f6ac74fe3..daa3710b1 100644 --- a/src/web/store/defaultState.js +++ b/src/app/store/defaultState.js @@ -200,7 +200,7 @@ const defaultState = { gridLineNumbers: { visible: true }, - toolhead: { + cuttingTool: { visible: true } } diff --git a/src/app/store/index.js b/src/app/store/index.js index d7ef85f3e..ac97178f0 100644 --- a/src/app/store/index.js +++ b/src/app/store/index.js @@ -1,9 +1,197 @@ -import ImmutableStore from '../lib/ImmutableStore'; +import isElectron from 'is-electron'; +import ensureArray from 'ensure-array'; +import debounce from 'lodash/debounce'; +import difference from 'lodash/difference'; +import get from 'lodash/get'; +import set from 'lodash/set'; +import merge from 'lodash/merge'; +import uniq from 'lodash/uniq'; +import semver from 'semver'; +import settings from '../config/settings'; +import ImmutableStore from '../lib/immutable-store'; +import log from '../lib/log'; +import defaultState from './defaultState'; -const defaultState = { - controllers: {} +const store = new ImmutableStore(defaultState); + +let userData = null; + +// Check whether the code is running in Electron renderer process +if (isElectron()) { + const electron = window.require('electron'); + const path = window.require('path'); // Require the path module within Electron + const app = electron.remote.app; + userData = { + path: path.join(app.getPath('userData'), 'cnc.json') + }; +} + +const getConfig = () => { + let content = ''; + + // Check whether the code is running in Electron renderer process + if (isElectron()) { + const fs = window.require('fs'); // Require the fs module within Electron + if (fs.existsSync(userData.path)) { + content = fs.readFileSync(userData.path, 'utf8') || '{}'; + } + } else { + content = localStorage.getItem('cnc') || '{}'; + } + + return content; }; -const store = new ImmutableStore(defaultState); +const persist = (data) => { + const { version, state } = { ...data }; + + data = { + version: version || settings.version, + state: { + ...store.state, + ...state + } + }; + + try { + const value = JSON.stringify(data, null, 2); + + // Check whether the code is running in Electron renderer process + if (isElectron()) { + const fs = window.require('fs'); // Use window.require to require fs module in Electron + fs.writeFileSync(userData.path, value); + } else { + localStorage.setItem('cnc', value); + } + } catch (e) { + log.error(e); + } +}; + +const normalizeState = (state) => { + // + // Normalize workspace widgets + // + + // Keep default widgets unchanged + const defaultList = get(defaultState, 'workspace.container.default.widgets'); + set(state, 'workspace.container.default.widgets', defaultList); + + // Update primary widgets + let primaryList = get(cnc.state, 'workspace.container.primary.widgets'); + if (primaryList) { + set(state, 'workspace.container.primary.widgets', primaryList); + } else { + primaryList = get(state, 'workspace.container.primary.widgets'); + } + + // Update secondary widgets + let secondaryList = get(cnc.state, 'workspace.container.secondary.widgets'); + if (secondaryList) { + set(state, 'workspace.container.secondary.widgets', secondaryList); + } else { + secondaryList = get(state, 'workspace.container.secondary.widgets'); + } + + primaryList = uniq(ensureArray(primaryList)); // Use the same order in primaryList + primaryList = difference(primaryList, defaultList); // Exclude defaultList + + secondaryList = uniq(ensureArray(secondaryList)); // Use the same order in secondaryList + secondaryList = difference(secondaryList, primaryList); // Exclude primaryList + secondaryList = difference(secondaryList, defaultList); // Exclude defaultList + + set(state, 'workspace.container.primary.widgets', primaryList); + set(state, 'workspace.container.secondary.widgets', secondaryList); + + // + // Remember configured axes (#416) + // + const configuredAxes = ensureArray(get(cnc.state, 'widgets.axes.axes')); + const defaultAxes = ensureArray(get(defaultState, 'widgets.axes.axes')); + if (configuredAxes.length > 0) { + set(state, 'widgets.axes.axes', configuredAxes); + } else { + set(state, 'widgets.axes.axes', defaultAxes); + } + + return state; +}; + +const cnc = { + version: settings.version, + state: {} +}; + +try { + const text = getConfig(); + const data = JSON.parse(text); + cnc.version = get(data, 'version', settings.version); + cnc.state = get(data, 'state', {}); +} catch (e) { + set(settings, 'error.corruptedWorkspaceSettings', true); + log.error(e); +} + +store.state = normalizeState(merge({}, defaultState, cnc.state || {})); + +// Debouncing enforces that a function not be called again until a certain amount of time (e.g. 100ms) has passed without it being called. +store.on('change', debounce((state) => { + persist({ state: state }); +}, 100)); + +// +// Migration +// +const migrateStore = () => { + if (!cnc.version) { + return; + } + + // 1.9.0 + // * Renamed "widgets.probe.tlo" to "widgets.probe.touchPlateHeight" + // * Removed "widgets.webcam.scale" + if (semver.lt(cnc.version, '1.9.0')) { + // Probe widget + const tlo = store.get('widgets.probe.tlo'); + if (tlo !== undefined) { + store.set('widgets.probe.touchPlateHeight', Number(tlo)); + store.unset('widgets.probe.tlo'); + } + + // Webcam widget + store.unset('widgets.webcam.scale'); + } + + // 1.9.13 + // Removed "widgets.axes.wzero" + // Removed "widgets.axes.mzero" + // Removed "widgets.axes.jog.customDistance" + // Removed "widgets.axes.jog.selectedDistance" + if (semver.lt(cnc.version, '1.9.13')) { + // Axes widget + store.unset('widgets.axes.wzero'); + store.unset('widgets.axes.mzero'); + store.unset('widgets.axes.jog.customDistance'); + store.unset('widgets.axes.jog.selectedDistance'); + } + + // 1.9.16 + // Removed "widgets.axes.wzero" + // Removed "widgets.axes.mzero" + // Removed "widgets.axes.jog.customDistance" + // Removed "widgets.axes.jog.selectedDistance" + if (semver.lt(cnc.version, '1.9.16')) { + store.unset('widgets.axes.jog.step'); + } +}; + +try { + migrateStore(); +} catch (err) { + log.error(err); +} + +store.getConfig = getConfig; +store.persist = persist; export default store; diff --git a/src/web/styles/app.styl b/src/app/styles/app.styl similarity index 100% rename from src/web/styles/app.styl rename to src/app/styles/app.styl diff --git a/src/web/styles/base.styl b/src/app/styles/base.styl similarity index 100% rename from src/web/styles/base.styl rename to src/app/styles/base.styl diff --git a/src/web/styles/bootstrap-btn-select.styl b/src/app/styles/bootstrap-btn-select.styl similarity index 100% rename from src/web/styles/bootstrap-btn-select.styl rename to src/app/styles/bootstrap-btn-select.styl diff --git a/src/web/styles/bootstrap-col-height.styl b/src/app/styles/bootstrap-col-height.styl similarity index 100% rename from src/web/styles/bootstrap-col-height.styl rename to src/app/styles/bootstrap-col-height.styl diff --git a/src/web/styles/bootstrap-no-gutters.styl b/src/app/styles/bootstrap-no-gutters.styl similarity index 100% rename from src/web/styles/bootstrap-no-gutters.styl rename to src/app/styles/bootstrap-no-gutters.styl diff --git a/src/web/styles/bootstrap-override.styl b/src/app/styles/bootstrap-override.styl similarity index 100% rename from src/web/styles/bootstrap-override.styl rename to src/app/styles/bootstrap-override.styl diff --git a/src/web/styles/bootstrap-vertical-spacing.styl b/src/app/styles/bootstrap-vertical-spacing.styl similarity index 100% rename from src/web/styles/bootstrap-vertical-spacing.styl rename to src/app/styles/bootstrap-vertical-spacing.styl diff --git a/src/web/styles/font-awesome.styl b/src/app/styles/font-awesome.styl similarity index 100% rename from src/web/styles/font-awesome.styl rename to src/app/styles/font-awesome.styl diff --git a/src/web/styles/has-error.styl b/src/app/styles/has-error.styl similarity index 100% rename from src/web/styles/has-error.styl rename to src/app/styles/has-error.styl diff --git a/src/web/styles/helper.styl b/src/app/styles/helper.styl similarity index 100% rename from src/web/styles/helper.styl rename to src/app/styles/helper.styl diff --git a/src/web/styles/ie.styl b/src/app/styles/ie.styl similarity index 100% rename from src/web/styles/ie.styl rename to src/app/styles/ie.styl diff --git a/src/web/styles/infinite-tree.styl b/src/app/styles/infinite-tree.styl similarity index 100% rename from src/web/styles/infinite-tree.styl rename to src/app/styles/infinite-tree.styl diff --git a/src/web/styles/perfect-scrollbar.styl b/src/app/styles/perfect-scrollbar.styl similarity index 100% rename from src/web/styles/perfect-scrollbar.styl rename to src/app/styles/perfect-scrollbar.styl diff --git a/src/web/styles/scaffolding-bootstrap.styl b/src/app/styles/scaffolding-bootstrap.styl similarity index 100% rename from src/web/styles/scaffolding-bootstrap.styl rename to src/app/styles/scaffolding-bootstrap.styl diff --git a/src/web/styles/scaffolding.styl b/src/app/styles/scaffolding.styl similarity index 100% rename from src/web/styles/scaffolding.styl rename to src/app/styles/scaffolding.styl diff --git a/src/web/styles/table-form.styl b/src/app/styles/table-form.styl similarity index 100% rename from src/web/styles/table-form.styl rename to src/app/styles/table-form.styl diff --git a/src/web/styles/typography.styl b/src/app/styles/typography.styl similarity index 100% rename from src/web/styles/typography.styl rename to src/app/styles/typography.styl diff --git a/src/web/styles/variables.styl b/src/app/styles/variables.styl similarity index 100% rename from src/web/styles/variables.styl rename to src/app/styles/variables.styl diff --git a/src/web/styles/vendor.styl b/src/app/styles/vendor.styl similarity index 100% rename from src/web/styles/vendor.styl rename to src/app/styles/vendor.styl diff --git a/src/web/styles/xterm.styl b/src/app/styles/xterm.styl similarity index 100% rename from src/web/styles/xterm.styl rename to src/app/styles/xterm.styl diff --git a/src/web/widgets/Axes/Axes.jsx b/src/app/widgets/Axes/Axes.jsx similarity index 100% rename from src/web/widgets/Axes/Axes.jsx rename to src/app/widgets/Axes/Axes.jsx diff --git a/src/web/widgets/Axes/DisplayPanel.jsx b/src/app/widgets/Axes/DisplayPanel.jsx similarity index 99% rename from src/web/widgets/Axes/DisplayPanel.jsx rename to src/app/widgets/Axes/DisplayPanel.jsx index 32c4ad89d..6bfae3e6d 100644 --- a/src/web/widgets/Axes/DisplayPanel.jsx +++ b/src/app/widgets/Axes/DisplayPanel.jsx @@ -4,11 +4,11 @@ import includes from 'lodash/includes'; import noop from 'lodash/noop'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Dropdown, { MenuItem } from 'web/components/Dropdown'; -import Image from 'web/components/Image'; -import { Tooltip } from 'web/components/Tooltip'; -import controller from 'web/lib/controller'; -import i18n from 'web/lib/i18n'; +import Dropdown, { MenuItem } from 'app/components/Dropdown'; +import Image from 'app/components/Image'; +import { Tooltip } from 'app/components/Tooltip'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; import AxisLabel from './components/AxisLabel'; import AxisSubscript from './components/AxisSubscript'; import Panel from './components/Panel'; diff --git a/src/web/widgets/Axes/Keypad.jsx b/src/app/widgets/Axes/Keypad.jsx similarity index 99% rename from src/web/widgets/Axes/Keypad.jsx rename to src/app/widgets/Axes/Keypad.jsx index 513091e69..bc5fabaf5 100644 --- a/src/web/widgets/Axes/Keypad.jsx +++ b/src/app/widgets/Axes/Keypad.jsx @@ -7,11 +7,11 @@ import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; import Repeatable from 'react-repeatable'; import styled from 'styled-components'; -import { Button } from 'web/components/Buttons'; -import Dropdown, { MenuItem } from 'web/components/Dropdown'; -import Space from 'web/components/Space'; -import controller from 'web/lib/controller'; -import i18n from 'web/lib/i18n'; +import { Button } from 'app/components/Buttons'; +import Dropdown, { MenuItem } from 'app/components/Dropdown'; +import Space from 'app/components/Space'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; import Fraction from './components/Fraction'; import { IMPERIAL_UNITS, diff --git a/src/web/widgets/Axes/KeypadOverlay.jsx b/src/app/widgets/Axes/KeypadOverlay.jsx similarity index 98% rename from src/web/widgets/Axes/KeypadOverlay.jsx rename to src/app/widgets/Axes/KeypadOverlay.jsx index 4dd307ac3..ffd6ab591 100644 --- a/src/web/widgets/Axes/KeypadOverlay.jsx +++ b/src/app/widgets/Axes/KeypadOverlay.jsx @@ -1,7 +1,7 @@ import React from 'react'; import { Tooltip, OverlayTrigger } from 'react-bootstrap'; -import Space from '../../components/Space'; -import i18n from '../../lib/i18n'; +import Space from 'app/components/Space'; +import i18n from 'app/lib/i18n'; const keypadTooltip = () => { const styles = { diff --git a/src/web/widgets/Axes/MDI.jsx b/src/app/widgets/Axes/MDI.jsx similarity index 91% rename from src/web/widgets/Axes/MDI.jsx rename to src/app/widgets/Axes/MDI.jsx index aaafb9875..077d03fd5 100644 --- a/src/web/widgets/Axes/MDI.jsx +++ b/src/app/widgets/Axes/MDI.jsx @@ -1,8 +1,8 @@ import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import { Container, Row, Col } from '../../components/GridSystem'; -import { Button } from '../../components/Buttons'; -import controller from '../../lib/controller'; +import { Container, Row, Col } from 'app/components/GridSystem'; +import { Button } from 'app/components/Buttons'; +import controller from 'app/lib/controller'; class MDI extends PureComponent { static propTypes = { diff --git a/src/web/widgets/Axes/Settings/General.jsx b/src/app/widgets/Axes/Settings/General.jsx similarity index 96% rename from src/web/widgets/Axes/Settings/General.jsx rename to src/app/widgets/Axes/Settings/General.jsx index 2878914df..3d6ece33e 100644 --- a/src/web/widgets/Axes/Settings/General.jsx +++ b/src/app/widgets/Axes/Settings/General.jsx @@ -5,14 +5,14 @@ import PropTypes from 'prop-types'; import _uniqueId from 'lodash/uniqueId'; import React, { PureComponent } from 'react'; import ForEach from 'react-foreach'; -import { Button } from 'web/components/Buttons'; -import { Checkbox } from 'web/components/Checkbox'; -import { Input } from 'web/components/Forms'; -import FormGroup from 'web/components/FormGroup'; -import { FlexContainer, Row, Col } from 'web/components/GridSystem'; -import Margin from 'web/components/Margin'; -import Space from 'web/components/Space'; -import i18n from 'web/lib/i18n'; +import { Button } from 'app/components/Buttons'; +import { Checkbox } from 'app/components/Checkbox'; +import { Input } from 'app/components/Forms'; +import FormGroup from 'app/components/FormGroup'; +import { FlexContainer, Row, Col } from 'app/components/GridSystem'; +import Margin from 'app/components/Margin'; +import Space from 'app/components/Space'; +import i18n from 'app/lib/i18n'; const IMPERIAL_JOG_DISTANCES_MAX = 5; const METRIC_JOG_DISTANCES_MAX = 5; diff --git a/src/web/widgets/Axes/Settings/MDI/CreateRecord.jsx b/src/app/widgets/Axes/Settings/MDI/CreateRecord.jsx similarity index 93% rename from src/web/widgets/Axes/Settings/MDI/CreateRecord.jsx rename to src/app/widgets/Axes/Settings/MDI/CreateRecord.jsx index f02513f4d..2d494bec1 100644 --- a/src/web/widgets/Axes/Settings/MDI/CreateRecord.jsx +++ b/src/app/widgets/Axes/Settings/MDI/CreateRecord.jsx @@ -2,14 +2,14 @@ import cx from 'classnames'; import PropTypes from 'prop-types'; import Slider from 'rc-slider'; import React, { PureComponent } from 'react'; -import { Button } from 'web/components/Buttons'; -import Modal from 'web/components/Modal'; -import Space from 'web/components/Space'; -import { ToastNotification } from 'web/components/Notifications'; -import { Form, Input, Textarea } from 'web/components/Validation'; -import FormGroup from 'web/components/FormGroup'; -import i18n from 'web/lib/i18n'; -import * as validations from 'web/lib/validations'; +import { Button } from 'app/components/Buttons'; +import Modal from 'app/components/Modal'; +import Space from 'app/components/Space'; +import { ToastNotification } from 'app/components/Notifications'; +import { Form, Input, Textarea } from 'app/components/Validation'; +import FormGroup from 'app/components/FormGroup'; +import i18n from 'app/lib/i18n'; +import * as validations from 'app/lib/validations'; import styles from '../form.styl'; class CreateRecord extends PureComponent { diff --git a/src/web/widgets/Axes/Settings/MDI/MDI.jsx b/src/app/widgets/Axes/Settings/MDI/MDI.jsx similarity index 99% rename from src/web/widgets/Axes/Settings/MDI/MDI.jsx rename to src/app/widgets/Axes/Settings/MDI/MDI.jsx index 20955f9e9..f44d4d500 100644 --- a/src/web/widgets/Axes/Settings/MDI/MDI.jsx +++ b/src/app/widgets/Axes/Settings/MDI/MDI.jsx @@ -1,7 +1,7 @@ import findIndex from 'lodash/findIndex'; import React, { PureComponent } from 'react'; import uuid from 'uuid'; -import api from 'web/api'; +import api from 'app/api'; import CreateRecord from './CreateRecord'; import UpdateRecord from './UpdateRecord'; import TableRecords from './TableRecords'; diff --git a/src/web/widgets/Axes/Settings/MDI/TableRecords.jsx b/src/app/widgets/Axes/Settings/MDI/TableRecords.jsx similarity index 97% rename from src/web/widgets/Axes/Settings/MDI/TableRecords.jsx rename to src/app/widgets/Axes/Settings/MDI/TableRecords.jsx index da0bcf162..b7413f945 100644 --- a/src/web/widgets/Axes/Settings/MDI/TableRecords.jsx +++ b/src/app/widgets/Axes/Settings/MDI/TableRecords.jsx @@ -2,10 +2,10 @@ import get from 'lodash/get'; import take from 'lodash/take'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import { Button, ButtonGroup } from 'web/components/Buttons'; -import Space from 'web/components/Space'; -import Table from 'web/components/Table'; -import i18n from 'web/lib/i18n'; +import { Button, ButtonGroup } from 'app/components/Buttons'; +import Space from 'app/components/Space'; +import Table from 'app/components/Table'; +import i18n from 'app/lib/i18n'; import { MODAL_CREATE_RECORD, MODAL_UPDATE_RECORD diff --git a/src/web/widgets/Axes/Settings/MDI/UpdateRecord.jsx b/src/app/widgets/Axes/Settings/MDI/UpdateRecord.jsx similarity index 94% rename from src/web/widgets/Axes/Settings/MDI/UpdateRecord.jsx rename to src/app/widgets/Axes/Settings/MDI/UpdateRecord.jsx index 2c502caec..9ff8f16a7 100644 --- a/src/web/widgets/Axes/Settings/MDI/UpdateRecord.jsx +++ b/src/app/widgets/Axes/Settings/MDI/UpdateRecord.jsx @@ -2,14 +2,14 @@ import cx from 'classnames'; import PropTypes from 'prop-types'; import Slider from 'rc-slider'; import React, { PureComponent } from 'react'; -import { Button } from 'web/components/Buttons'; -import Modal from 'web/components/Modal'; -import Space from 'web/components/Space'; -import { ToastNotification } from 'web/components/Notifications'; -import { Form, Input, Textarea } from 'web/components/Validation'; -import FormGroup from 'web/components/FormGroup'; -import i18n from 'web/lib/i18n'; -import * as validations from 'web/lib/validations'; +import { Button } from 'app/components/Buttons'; +import Modal from 'app/components/Modal'; +import Space from 'app/components/Space'; +import { ToastNotification } from 'app/components/Notifications'; +import { Form, Input, Textarea } from 'app/components/Validation'; +import FormGroup from 'app/components/FormGroup'; +import i18n from 'app/lib/i18n'; +import * as validations from 'app/lib/validations'; import styles from '../form.styl'; class UpdateRecord extends PureComponent { diff --git a/src/web/widgets/Axes/Settings/MDI/constants.js b/src/app/widgets/Axes/Settings/MDI/constants.js similarity index 58% rename from src/web/widgets/Axes/Settings/MDI/constants.js rename to src/app/widgets/Axes/Settings/MDI/constants.js index a5389c6aa..a96f5a2bc 100644 --- a/src/web/widgets/Axes/Settings/MDI/constants.js +++ b/src/app/widgets/Axes/Settings/MDI/constants.js @@ -1,7 +1,10 @@ import constants from 'namespace-constants'; import uuid from 'uuid'; -module.exports = constants(uuid.v4(), [ +export const { + MODAL_CREATE_RECORD, + MODAL_UPDATE_RECORD +} = constants(uuid.v4(), [ 'MODAL_CREATE_RECORD', 'MODAL_UPDATE_RECORD' ]); diff --git a/src/web/widgets/Axes/Settings/MDI/index.js b/src/app/widgets/Axes/Settings/MDI/index.js similarity index 100% rename from src/web/widgets/Axes/Settings/MDI/index.js rename to src/app/widgets/Axes/Settings/MDI/index.js diff --git a/src/web/widgets/Axes/Settings/ShuttleXpress.jsx b/src/app/widgets/Axes/Settings/ShuttleXpress.jsx similarity index 97% rename from src/web/widgets/Axes/Settings/ShuttleXpress.jsx rename to src/app/widgets/Axes/Settings/ShuttleXpress.jsx index 2042c1af2..63e388b50 100644 --- a/src/web/widgets/Axes/Settings/ShuttleXpress.jsx +++ b/src/app/widgets/Axes/Settings/ShuttleXpress.jsx @@ -1,8 +1,8 @@ import Slider from 'rc-slider'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import i18n from 'web/lib/i18n'; -import FormGroup from 'web/components/FormGroup'; +import i18n from 'app/lib/i18n'; +import FormGroup from 'app/components/FormGroup'; const FEEDRATE_RANGE = [100, 2500]; const FEEDRATE_STEP = 50; diff --git a/src/web/widgets/Axes/Settings/form.styl b/src/app/widgets/Axes/Settings/form.styl similarity index 100% rename from src/web/widgets/Axes/Settings/form.styl rename to src/app/widgets/Axes/Settings/form.styl diff --git a/src/web/widgets/Axes/Settings/index.jsx b/src/app/widgets/Axes/Settings/index.jsx similarity index 96% rename from src/web/widgets/Axes/Settings/index.jsx rename to src/app/widgets/Axes/Settings/index.jsx index e35b193d2..b85490919 100644 --- a/src/web/widgets/Axes/Settings/index.jsx +++ b/src/app/widgets/Axes/Settings/index.jsx @@ -3,11 +3,11 @@ import styled from 'styled-components'; import noop from 'lodash/noop'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import api from '../../../api'; -import { Button } from '../../../components/Buttons'; -import Modal from '../../../components/Modal'; -import { Nav, NavItem } from '../../../components/Navs'; -import i18n from '../../../lib/i18n'; +import api from 'app/api'; +import { Button } from 'app/components/Buttons'; +import Modal from 'app/components/Modal'; +import { Nav, NavItem } from 'app/components/Navs'; +import i18n from 'app/lib/i18n'; import General from './General'; import MDI from './MDI'; import ShuttleXpress from './ShuttleXpress'; diff --git a/src/web/widgets/Axes/ShuttleControl.js b/src/app/widgets/Axes/ShuttleControl.js similarity index 100% rename from src/web/widgets/Axes/ShuttleControl.js rename to src/app/widgets/Axes/ShuttleControl.js diff --git a/src/web/widgets/Axes/components/AxisLabel.jsx b/src/app/widgets/Axes/components/AxisLabel.jsx similarity index 100% rename from src/web/widgets/Axes/components/AxisLabel.jsx rename to src/app/widgets/Axes/components/AxisLabel.jsx diff --git a/src/web/widgets/Axes/components/AxisSubscript.jsx b/src/app/widgets/Axes/components/AxisSubscript.jsx similarity index 100% rename from src/web/widgets/Axes/components/AxisSubscript.jsx rename to src/app/widgets/Axes/components/AxisSubscript.jsx diff --git a/src/web/widgets/Axes/components/Fraction.jsx b/src/app/widgets/Axes/components/Fraction.jsx similarity index 100% rename from src/web/widgets/Axes/components/Fraction.jsx rename to src/app/widgets/Axes/components/Fraction.jsx diff --git a/src/web/widgets/Axes/components/Panel.jsx b/src/app/widgets/Axes/components/Panel.jsx similarity index 100% rename from src/web/widgets/Axes/components/Panel.jsx rename to src/app/widgets/Axes/components/Panel.jsx diff --git a/src/web/widgets/Axes/components/PositionInput.jsx b/src/app/widgets/Axes/components/PositionInput.jsx similarity index 100% rename from src/web/widgets/Axes/components/PositionInput.jsx rename to src/app/widgets/Axes/components/PositionInput.jsx diff --git a/src/web/widgets/Axes/components/PositionLabel.jsx b/src/app/widgets/Axes/components/PositionLabel.jsx similarity index 100% rename from src/web/widgets/Axes/components/PositionLabel.jsx rename to src/app/widgets/Axes/components/PositionLabel.jsx diff --git a/src/web/widgets/Axes/components/Taskbar.jsx b/src/app/widgets/Axes/components/Taskbar.jsx similarity index 100% rename from src/web/widgets/Axes/components/Taskbar.jsx rename to src/app/widgets/Axes/components/Taskbar.jsx diff --git a/src/web/widgets/Axes/components/TaskbarButton.jsx b/src/app/widgets/Axes/components/TaskbarButton.jsx similarity index 100% rename from src/web/widgets/Axes/components/TaskbarButton.jsx rename to src/app/widgets/Axes/components/TaskbarButton.jsx diff --git a/src/web/widgets/Axes/constants.js b/src/app/widgets/Axes/constants.js similarity index 100% rename from src/web/widgets/Axes/constants.js rename to src/app/widgets/Axes/constants.js diff --git a/src/web/widgets/Axes/display-panel.styl b/src/app/widgets/Axes/display-panel.styl similarity index 100% rename from src/web/widgets/Axes/display-panel.styl rename to src/app/widgets/Axes/display-panel.styl diff --git a/src/web/widgets/Axes/images/home.svg b/src/app/widgets/Axes/images/home.svg similarity index 100% rename from src/web/widgets/Axes/images/home.svg rename to src/app/widgets/Axes/images/home.svg diff --git a/src/web/widgets/Axes/images/minus.svg b/src/app/widgets/Axes/images/minus.svg similarity index 100% rename from src/web/widgets/Axes/images/minus.svg rename to src/app/widgets/Axes/images/minus.svg diff --git a/src/web/widgets/Axes/images/move-backward.svg b/src/app/widgets/Axes/images/move-backward.svg similarity index 100% rename from src/web/widgets/Axes/images/move-backward.svg rename to src/app/widgets/Axes/images/move-backward.svg diff --git a/src/web/widgets/Axes/images/move-forward.svg b/src/app/widgets/Axes/images/move-forward.svg similarity index 100% rename from src/web/widgets/Axes/images/move-forward.svg rename to src/app/widgets/Axes/images/move-forward.svg diff --git a/src/web/widgets/Axes/images/pencil.svg b/src/app/widgets/Axes/images/pencil.svg similarity index 100% rename from src/web/widgets/Axes/images/pencil.svg rename to src/app/widgets/Axes/images/pencil.svg diff --git a/src/web/widgets/Axes/images/pin.svg b/src/app/widgets/Axes/images/pin.svg similarity index 100% rename from src/web/widgets/Axes/images/pin.svg rename to src/app/widgets/Axes/images/pin.svg diff --git a/src/web/widgets/Axes/images/plus.svg b/src/app/widgets/Axes/images/plus.svg similarity index 100% rename from src/web/widgets/Axes/images/plus.svg rename to src/app/widgets/Axes/images/plus.svg diff --git a/src/web/widgets/Axes/index.jsx b/src/app/widgets/Axes/index.jsx similarity index 98% rename from src/web/widgets/Axes/index.jsx rename to src/app/widgets/Axes/index.jsx index 0c06326e3..7c0b05da7 100644 --- a/src/web/widgets/Axes/index.jsx +++ b/src/app/widgets/Axes/index.jsx @@ -6,16 +6,16 @@ import map from 'lodash/map'; import mapValues from 'lodash/mapValues'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import api from 'web/api'; -import Space from 'web/components/Space'; -import Widget from 'web/components/Widget'; -import combokeys from 'web/lib/combokeys'; -import controller from 'web/lib/controller'; -import { preventDefault } from 'web/lib/dom-events'; -import i18n from 'web/lib/i18n'; -import { in2mm, mapPositionToUnits } from 'web/lib/units'; -import { limit } from 'web/lib/normalize-range'; -import WidgetConfig from 'web/widgets/WidgetConfig'; +import api from 'app/api'; +import Space from 'app/components/Space'; +import Widget from 'app/components/Widget'; +import combokeys from 'app/lib/combokeys'; +import controller from 'app/lib/controller'; +import { preventDefault } from 'app/lib/dom-events'; +import i18n from 'app/lib/i18n'; +import { in2mm, mapPositionToUnits } from 'app/lib/units'; +import { limit } from 'app/lib/normalize-range'; +import WidgetConfig from 'app/widgets/WidgetConfig'; import Axes from './Axes'; import KeypadOverlay from './KeypadOverlay'; import Settings from './Settings'; diff --git a/src/web/widgets/Axes/index.styl b/src/app/widgets/Axes/index.styl similarity index 100% rename from src/web/widgets/Axes/index.styl rename to src/app/widgets/Axes/index.styl diff --git a/src/web/widgets/Axes/keypad.styl b/src/app/widgets/Axes/keypad.styl similarity index 100% rename from src/web/widgets/Axes/keypad.styl rename to src/app/widgets/Axes/keypad.styl diff --git a/src/web/widgets/Axes/rotate.styl b/src/app/widgets/Axes/rotate.styl similarity index 100% rename from src/web/widgets/Axes/rotate.styl rename to src/app/widgets/Axes/rotate.styl diff --git a/src/web/widgets/Connection/Connection.jsx b/src/app/widgets/Connection/Connection.jsx similarity index 98% rename from src/web/widgets/Connection/Connection.jsx rename to src/app/widgets/Connection/Connection.jsx index 5786e9f78..6ace20570 100644 --- a/src/web/widgets/Connection/Connection.jsx +++ b/src/app/widgets/Connection/Connection.jsx @@ -6,10 +6,10 @@ import cx from 'classnames'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; import Select from 'react-select'; -import Space from '../../components/Space'; -import { ToastNotification } from '../../components/Notifications'; -import controller from '../../lib/controller'; -import i18n from '../../lib/i18n'; +import Space from 'app/components/Space'; +import { ToastNotification } from 'app/components/Notifications'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; import { GRBL, MARLIN, diff --git a/src/web/widgets/Connection/index.jsx b/src/app/widgets/Connection/index.jsx similarity index 98% rename from src/web/widgets/Connection/index.jsx rename to src/app/widgets/Connection/index.jsx index b0e94fba6..c4fe0a0ed 100644 --- a/src/web/widgets/Connection/index.jsx +++ b/src/app/widgets/Connection/index.jsx @@ -7,11 +7,11 @@ import includes from 'lodash/includes'; import map from 'lodash/map'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Space from '../../components/Space'; -import Widget from '../../components/Widget'; -import controller from '../../lib/controller'; -import i18n from '../../lib/i18n'; -import log from '../../lib/log'; +import Space from 'app/components/Space'; +import Widget from 'app/components/Widget'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; +import log from 'app/lib/log'; import WidgetConfig from '../WidgetConfig'; import Connection from './Connection'; import styles from './index.styl'; diff --git a/src/web/widgets/Connection/index.styl b/src/app/widgets/Connection/index.styl similarity index 100% rename from src/web/widgets/Connection/index.styl rename to src/app/widgets/Connection/index.styl diff --git a/src/web/widgets/Console/Console.jsx b/src/app/widgets/Console/Console.jsx similarity index 97% rename from src/web/widgets/Console/Console.jsx rename to src/app/widgets/Console/Console.jsx index 603c7f9ac..0048406b9 100644 --- a/src/web/widgets/Console/Console.jsx +++ b/src/app/widgets/Console/Console.jsx @@ -1,6 +1,6 @@ import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import i18n from '../../lib/i18n'; +import i18n from 'app/lib/i18n'; import Terminal from './Terminal'; import styles from './index.styl'; diff --git a/src/web/widgets/Console/History.js b/src/app/widgets/Console/History.js similarity index 100% rename from src/web/widgets/Console/History.js rename to src/app/widgets/Console/History.js diff --git a/src/web/widgets/Console/Terminal.jsx b/src/app/widgets/Console/Terminal.jsx similarity index 99% rename from src/web/widgets/Console/Terminal.jsx rename to src/app/widgets/Console/Terminal.jsx index 7755fc3d2..6f6fb373e 100644 --- a/src/web/widgets/Console/Terminal.jsx +++ b/src/app/widgets/Console/Terminal.jsx @@ -7,7 +7,7 @@ import React, { PureComponent } from 'react'; import ReactDOM from 'react-dom'; import { Terminal } from 'xterm'; import * as fit from 'xterm/lib/addons/fit/fit'; -import log from '../../lib/log'; +import log from 'app/lib/log'; import History from './History'; import styles from './index.styl'; diff --git a/src/web/widgets/Console/images/select-all.svg b/src/app/widgets/Console/images/select-all.svg similarity index 100% rename from src/web/widgets/Console/images/select-all.svg rename to src/app/widgets/Console/images/select-all.svg diff --git a/src/web/widgets/Console/index.jsx b/src/app/widgets/Console/index.jsx similarity index 98% rename from src/web/widgets/Console/index.jsx rename to src/app/widgets/Console/index.jsx index 405a81ecf..968e4f3a1 100644 --- a/src/web/widgets/Console/index.jsx +++ b/src/app/widgets/Console/index.jsx @@ -4,11 +4,11 @@ import PropTypes from 'prop-types'; import pubsub from 'pubsub-js'; import React, { PureComponent } from 'react'; import uuid from 'uuid'; -import settings from '../../config/settings'; -import Space from '../../components/Space'; -import Widget from '../../components/Widget'; -import controller from '../../lib/controller'; -import i18n from '../../lib/i18n'; +import settings from 'app/config/settings'; +import Space from 'app/components/Space'; +import Widget from 'app/components/Widget'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; import WidgetConfig from '../WidgetConfig'; import Console from './Console'; import styles from './index.styl'; diff --git a/src/web/widgets/Console/index.styl b/src/app/widgets/Console/index.styl similarity index 100% rename from src/web/widgets/Console/index.styl rename to src/app/widgets/Console/index.styl diff --git a/src/web/widgets/Custom/Custom.jsx b/src/app/widgets/Custom/Custom.jsx similarity index 95% rename from src/web/widgets/Custom/Custom.jsx rename to src/app/widgets/Custom/Custom.jsx index c6eeb32b9..10d431c71 100644 --- a/src/web/widgets/Custom/Custom.jsx +++ b/src/app/widgets/Custom/Custom.jsx @@ -4,13 +4,13 @@ import pubsub from 'pubsub-js'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; import ReactDOM from 'react-dom'; -import settings from '../../config/settings'; -import store from '../../store'; -import Iframe from '../../components/Iframe'; -import ResizeObserver from '../../lib/ResizeObserver'; -import controller from '../../lib/controller'; -import i18n from '../../lib/i18n'; -import log from '../../lib/log'; +import settings from 'app/config/settings'; +import store from 'app/store'; +import Iframe from 'app/components/Iframe'; +import ResizeObserver from 'app/lib/ResizeObserver'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; +import log from 'app/lib/log'; import styles from './index.styl'; class Custom extends PureComponent { diff --git a/src/web/widgets/Custom/Settings.jsx b/src/app/widgets/Custom/Settings.jsx similarity index 97% rename from src/web/widgets/Custom/Settings.jsx rename to src/app/widgets/Custom/Settings.jsx index 95e0f1383..4353a66d2 100644 --- a/src/web/widgets/Custom/Settings.jsx +++ b/src/app/widgets/Custom/Settings.jsx @@ -1,8 +1,8 @@ import noop from 'lodash/noop'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Modal from '../../components/Modal'; -import i18n from '../../lib/i18n'; +import Modal from 'app/components/Modal'; +import i18n from 'app/lib/i18n'; class Settings extends PureComponent { static propTypes = { diff --git a/src/web/widgets/Custom/constants.js b/src/app/widgets/Custom/constants.js similarity index 100% rename from src/web/widgets/Custom/constants.js rename to src/app/widgets/Custom/constants.js diff --git a/src/web/widgets/Custom/index.jsx b/src/app/widgets/Custom/index.jsx similarity index 98% rename from src/web/widgets/Custom/index.jsx rename to src/app/widgets/Custom/index.jsx index 6af332a70..9fc8b5e9b 100644 --- a/src/web/widgets/Custom/index.jsx +++ b/src/app/widgets/Custom/index.jsx @@ -1,10 +1,10 @@ import cx from 'classnames'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Space from '../../components/Space'; -import Widget from '../../components/Widget'; -import controller from '../../lib/controller'; -import i18n from '../../lib/i18n'; +import Space from 'app/components/Space'; +import Widget from 'app/components/Widget'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; import WidgetConfig from '../WidgetConfig'; import Custom from './Custom'; import Settings from './Settings'; diff --git a/src/web/widgets/Custom/index.styl b/src/app/widgets/Custom/index.styl similarity index 100% rename from src/web/widgets/Custom/index.styl rename to src/app/widgets/Custom/index.styl diff --git a/src/web/widgets/GCode/GCode.jsx b/src/app/widgets/GCode/GCode.jsx similarity index 100% rename from src/web/widgets/GCode/GCode.jsx rename to src/app/widgets/GCode/GCode.jsx diff --git a/src/web/widgets/GCode/GCodeStats.jsx b/src/app/widgets/GCode/GCodeStats.jsx similarity index 99% rename from src/web/widgets/GCode/GCodeStats.jsx rename to src/app/widgets/GCode/GCodeStats.jsx index d1b17144c..3dc6ecba3 100644 --- a/src/web/widgets/GCode/GCodeStats.jsx +++ b/src/app/widgets/GCode/GCodeStats.jsx @@ -1,7 +1,7 @@ import moment from 'moment'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import i18n from '../../lib/i18n'; +import i18n from 'app/lib/i18n'; import { METRIC_UNITS } from '../../constants'; diff --git a/src/web/widgets/GCode/index.jsx b/src/app/widgets/GCode/index.jsx similarity index 98% rename from src/web/widgets/GCode/index.jsx rename to src/app/widgets/GCode/index.jsx index 9cac0a1ae..d52caca8c 100644 --- a/src/web/widgets/GCode/index.jsx +++ b/src/app/widgets/GCode/index.jsx @@ -3,11 +3,11 @@ import mapValues from 'lodash/mapValues'; import pubsub from 'pubsub-js'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Space from '../../components/Space'; -import Widget from '../../components/Widget'; -import controller from '../../lib/controller'; -import i18n from '../../lib/i18n'; -import { mapPositionToUnits } from '../../lib/units'; +import Space from 'app/components/Space'; +import Widget from 'app/components/Widget'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; +import { mapPositionToUnits } from 'app/lib/units'; import WidgetConfig from '../WidgetConfig'; import GCode from './GCode'; import { diff --git a/src/web/widgets/GCode/index.styl b/src/app/widgets/GCode/index.styl similarity index 100% rename from src/web/widgets/GCode/index.styl rename to src/app/widgets/GCode/index.styl diff --git a/src/web/widgets/Grbl/Controller.jsx b/src/app/widgets/Grbl/Controller.jsx similarity index 92% rename from src/web/widgets/Grbl/Controller.jsx rename to src/app/widgets/Grbl/Controller.jsx index bc4036542..b4f3436e2 100644 --- a/src/web/widgets/Grbl/Controller.jsx +++ b/src/app/widgets/Grbl/Controller.jsx @@ -1,10 +1,10 @@ import PropTypes from 'prop-types'; import React from 'react'; -import { Button } from '../../components/Buttons'; -import Modal from '../../components/Modal'; -import { Nav, NavItem } from '../../components/Navs'; -import controller from '../../lib/controller'; -import i18n from '../../lib/i18n'; +import { Button } from 'app/components/Buttons'; +import Modal from 'app/components/Modal'; +import { Nav, NavItem } from 'app/components/Navs'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; import styles from './index.styl'; const Controller = (props) => { diff --git a/src/web/widgets/Grbl/DigitalReadout.jsx b/src/app/widgets/Grbl/DigitalReadout.jsx similarity index 100% rename from src/web/widgets/Grbl/DigitalReadout.jsx rename to src/app/widgets/Grbl/DigitalReadout.jsx diff --git a/src/web/widgets/Grbl/Grbl.jsx b/src/app/widgets/Grbl/Grbl.jsx similarity index 98% rename from src/web/widgets/Grbl/Grbl.jsx rename to src/app/widgets/Grbl/Grbl.jsx index 0766b5086..b0fe71142 100644 --- a/src/web/widgets/Grbl/Grbl.jsx +++ b/src/app/widgets/Grbl/Grbl.jsx @@ -3,10 +3,10 @@ import _ from 'lodash'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; import { ProgressBar } from 'react-bootstrap'; -import mapGCodeToText from '../../lib/gcode-text'; -import i18n from '../../lib/i18n'; -import Panel from '../../components/Panel'; -import Toggler from '../../components/Toggler'; +import mapGCodeToText from 'app/lib/gcode-text'; +import i18n from 'app/lib/i18n'; +import Panel from 'app/components/Panel'; +import Toggler from 'app/components/Toggler'; import Overrides from './Overrides'; import styles from './index.styl'; diff --git a/src/web/widgets/Grbl/Overrides.jsx b/src/app/widgets/Grbl/Overrides.jsx similarity index 97% rename from src/web/widgets/Grbl/Overrides.jsx rename to src/app/widgets/Grbl/Overrides.jsx index 56453959d..fc4caf4bc 100644 --- a/src/web/widgets/Grbl/Overrides.jsx +++ b/src/app/widgets/Grbl/Overrides.jsx @@ -1,8 +1,8 @@ import PropTypes from 'prop-types'; import React from 'react'; -import Space from '../../components/Space'; -import RepeatButton from '../../components/RepeatButton'; -import controller from '../../lib/controller'; +import Space from 'app/components/Space'; +import RepeatButton from 'app/components/RepeatButton'; +import controller from 'app/lib/controller'; import DigitalReadout from './DigitalReadout'; import styles from './index.styl'; diff --git a/src/web/widgets/Grbl/constants.js b/src/app/widgets/Grbl/constants.js similarity index 52% rename from src/web/widgets/Grbl/constants.js rename to src/app/widgets/Grbl/constants.js index 8f3deb7c6..74b70e296 100644 --- a/src/web/widgets/Grbl/constants.js +++ b/src/app/widgets/Grbl/constants.js @@ -1,6 +1,9 @@ import constants from 'namespace-constants'; -module.exports = constants('widgets/Grbl', [ +export const { + MODAL_NONE, + MODAL_CONTROLLER +} = constants('widgets/Grbl', [ 'MODAL_NONE', 'MODAL_CONTROLLER' ]); diff --git a/src/web/widgets/Grbl/index.jsx b/src/app/widgets/Grbl/index.jsx similarity index 98% rename from src/web/widgets/Grbl/index.jsx rename to src/app/widgets/Grbl/index.jsx index f7e82c6a7..debe9cee3 100644 --- a/src/web/widgets/Grbl/index.jsx +++ b/src/app/widgets/Grbl/index.jsx @@ -1,10 +1,10 @@ import classNames from 'classnames'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Space from '../../components/Space'; -import Widget from '../../components/Widget'; -import i18n from '../../lib/i18n'; -import controller from '../../lib/controller'; +import Space from 'app/components/Space'; +import Widget from 'app/components/Widget'; +import i18n from 'app/lib/i18n'; +import controller from 'app/lib/controller'; import WidgetConfig from '../WidgetConfig'; import Grbl from './Grbl'; import Controller from './Controller'; diff --git a/src/web/widgets/Grbl/index.styl b/src/app/widgets/Grbl/index.styl similarity index 100% rename from src/web/widgets/Grbl/index.styl rename to src/app/widgets/Grbl/index.styl diff --git a/src/web/widgets/Laser/Laser.jsx b/src/app/widgets/Laser/Laser.jsx similarity index 98% rename from src/web/widgets/Laser/Laser.jsx rename to src/app/widgets/Laser/Laser.jsx index 9912347b4..47907ae32 100644 --- a/src/web/widgets/Laser/Laser.jsx +++ b/src/app/widgets/Laser/Laser.jsx @@ -2,11 +2,11 @@ import _ from 'lodash'; import Slider from 'rc-slider'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Panel from '../../components/Panel'; -import Toggler from '../../components/Toggler'; -import RepeatButton from '../../components/RepeatButton'; -import controller from '../../lib/controller'; -import i18n from '../../lib/i18n'; +import Panel from 'app/components/Panel'; +import Toggler from 'app/components/Toggler'; +import RepeatButton from 'app/components/RepeatButton'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; import { // Grbl GRBL, diff --git a/src/web/widgets/Laser/index.jsx b/src/app/widgets/Laser/index.jsx similarity index 97% rename from src/web/widgets/Laser/index.jsx rename to src/app/widgets/Laser/index.jsx index 069b1edd8..610d4e3a5 100644 --- a/src/web/widgets/Laser/index.jsx +++ b/src/app/widgets/Laser/index.jsx @@ -3,11 +3,11 @@ import isNumber from 'lodash/isNumber'; import classNames from 'classnames'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Space from '../../components/Space'; -import Widget from '../../components/Widget'; -import controller from '../../lib/controller'; -import ensurePositiveNumber from '../../lib/ensure-positive-number'; -import i18n from '../../lib/i18n'; +import Space from 'app/components/Space'; +import Widget from 'app/components/Widget'; +import controller from 'app/lib/controller'; +import ensurePositiveNumber from 'app/lib/ensure-positive-number'; +import i18n from 'app/lib/i18n'; import WidgetConfig from '../WidgetConfig'; import Laser from './Laser'; import { diff --git a/src/web/widgets/Laser/index.styl b/src/app/widgets/Laser/index.styl similarity index 100% rename from src/web/widgets/Laser/index.styl rename to src/app/widgets/Laser/index.styl diff --git a/src/web/widgets/Macro/AddMacro.jsx b/src/app/widgets/Macro/AddMacro.jsx similarity index 95% rename from src/web/widgets/Macro/AddMacro.jsx rename to src/app/widgets/Macro/AddMacro.jsx index e5ef45b3c..82ac5e0ca 100644 --- a/src/web/widgets/Macro/AddMacro.jsx +++ b/src/app/widgets/Macro/AddMacro.jsx @@ -3,12 +3,12 @@ import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; import ReactDOM from 'react-dom'; import { Dropdown, MenuItem } from 'react-bootstrap'; -import { Button } from '../../components/Buttons'; -import Modal from '../../components/Modal'; -import Space from '../../components/Space'; -import { Form, Input, Textarea } from '../../components/Validation'; -import i18n from '../../lib/i18n'; -import * as validations from '../../lib/validations'; +import { Button } from 'app/components/Buttons'; +import Modal from 'app/components/Modal'; +import Space from 'app/components/Space'; +import { Form, Input, Textarea } from 'app/components/Validation'; +import i18n from 'app/lib/i18n'; +import * as validations from 'app/lib/validations'; import insertAtCaret from './insertAtCaret'; import variables from './variables'; import styles from './index.styl'; diff --git a/src/web/widgets/Macro/EditMacro.jsx b/src/app/widgets/Macro/EditMacro.jsx similarity index 96% rename from src/web/widgets/Macro/EditMacro.jsx rename to src/app/widgets/Macro/EditMacro.jsx index 7fad4f909..22b189eae 100644 --- a/src/web/widgets/Macro/EditMacro.jsx +++ b/src/app/widgets/Macro/EditMacro.jsx @@ -5,13 +5,13 @@ import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; import ReactDOM from 'react-dom'; import { Dropdown, MenuItem } from 'react-bootstrap'; -import { Button } from '../../components/Buttons'; -import Modal from '../../components/Modal'; -import Space from '../../components/Space'; -import { Form, Input, Textarea } from '../../components/Validation'; -import i18n from '../../lib/i18n'; -import portal from '../../lib/portal'; -import * as validations from '../../lib/validations'; +import { Button } from 'app/components/Buttons'; +import Modal from 'app/components/Modal'; +import Space from 'app/components/Space'; +import { Form, Input, Textarea } from 'app/components/Validation'; +import i18n from 'app/lib/i18n'; +import portal from 'app/lib/portal'; +import * as validations from 'app/lib/validations'; import insertAtCaret from './insertAtCaret'; import variables from './variables'; import styles from './index.styl'; diff --git a/src/web/widgets/Macro/Macro.jsx b/src/app/widgets/Macro/Macro.jsx similarity index 96% rename from src/web/widgets/Macro/Macro.jsx rename to src/app/widgets/Macro/Macro.jsx index ef54db02e..4c1ea63a5 100644 --- a/src/web/widgets/Macro/Macro.jsx +++ b/src/app/widgets/Macro/Macro.jsx @@ -3,11 +3,11 @@ import ensureArray from 'ensure-array'; import includes from 'lodash/includes'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import { Button } from '../../components/Buttons'; -import Modal from '../../components/Modal'; -import Space from '../../components/Space'; -import i18n from '../../lib/i18n'; -import portal from '../../lib/portal'; +import { Button } from 'app/components/Buttons'; +import Modal from 'app/components/Modal'; +import Space from 'app/components/Space'; +import i18n from 'app/lib/i18n'; +import portal from 'app/lib/portal'; import { // Workflow WORKFLOW_STATE_IDLE, diff --git a/src/web/widgets/Macro/RunMacro.jsx b/src/app/widgets/Macro/RunMacro.jsx similarity index 92% rename from src/web/widgets/Macro/RunMacro.jsx rename to src/app/widgets/Macro/RunMacro.jsx index bd6f7a4f1..89bcbec13 100644 --- a/src/web/widgets/Macro/RunMacro.jsx +++ b/src/app/widgets/Macro/RunMacro.jsx @@ -1,8 +1,8 @@ import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import i18n from '../../lib/i18n'; -import { Button } from '../../components/Buttons'; -import Modal from '../../components/Modal'; +import i18n from 'app/lib/i18n'; +import { Button } from 'app/components/Buttons'; +import Modal from 'app/components/Modal'; class RunMacro extends PureComponent { static propTypes = { diff --git a/src/web/widgets/Macro/constants.js b/src/app/widgets/Macro/constants.js similarity index 51% rename from src/web/widgets/Macro/constants.js rename to src/app/widgets/Macro/constants.js index 0799b8de6..d1ffbfa45 100644 --- a/src/web/widgets/Macro/constants.js +++ b/src/app/widgets/Macro/constants.js @@ -1,6 +1,11 @@ import constants from 'namespace-constants'; -module.exports = constants('widgets/macro', [ +export const { + MODAL_NONE, + MODAL_ADD_MACRO, + MODAL_EDIT_MACRO, + MODAL_RUN_MACRO +} = constants('widgets/macro', [ 'MODAL_NONE', 'MODAL_ADD_MACRO', 'MODAL_EDIT_MACRO', diff --git a/src/web/widgets/Macro/index.jsx b/src/app/widgets/Macro/index.jsx similarity index 98% rename from src/web/widgets/Macro/index.jsx rename to src/app/widgets/Macro/index.jsx index 481d24d3a..9cc8ba4c4 100644 --- a/src/web/widgets/Macro/index.jsx +++ b/src/app/widgets/Macro/index.jsx @@ -3,12 +3,12 @@ import PropTypes from 'prop-types'; import get from 'lodash/get'; import includes from 'lodash/includes'; import React, { PureComponent } from 'react'; -import api from '../../api'; -import Space from '../../components/Space'; -import Widget from '../../components/Widget'; -import controller from '../../lib/controller'; -import i18n from '../../lib/i18n'; -import log from '../../lib/log'; +import api from 'app/api'; +import Space from 'app/components/Space'; +import Widget from 'app/components/Widget'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; +import log from 'app/lib/log'; import WidgetConfig from '../WidgetConfig'; import Macro from './Macro'; import AddMacro from './AddMacro'; diff --git a/src/web/widgets/Macro/index.styl b/src/app/widgets/Macro/index.styl similarity index 100% rename from src/web/widgets/Macro/index.styl rename to src/app/widgets/Macro/index.styl diff --git a/src/web/widgets/Macro/insertAtCaret.js b/src/app/widgets/Macro/insertAtCaret.js similarity index 100% rename from src/web/widgets/Macro/insertAtCaret.js rename to src/app/widgets/Macro/insertAtCaret.js diff --git a/src/web/widgets/Macro/variables.js b/src/app/widgets/Macro/variables.js similarity index 100% rename from src/web/widgets/Macro/variables.js rename to src/app/widgets/Macro/variables.js diff --git a/src/web/widgets/Marlin/Controller.jsx b/src/app/widgets/Marlin/Controller.jsx similarity index 92% rename from src/web/widgets/Marlin/Controller.jsx rename to src/app/widgets/Marlin/Controller.jsx index bc4036542..b4f3436e2 100644 --- a/src/web/widgets/Marlin/Controller.jsx +++ b/src/app/widgets/Marlin/Controller.jsx @@ -1,10 +1,10 @@ import PropTypes from 'prop-types'; import React from 'react'; -import { Button } from '../../components/Buttons'; -import Modal from '../../components/Modal'; -import { Nav, NavItem } from '../../components/Navs'; -import controller from '../../lib/controller'; -import i18n from '../../lib/i18n'; +import { Button } from 'app/components/Buttons'; +import Modal from 'app/components/Modal'; +import { Nav, NavItem } from 'app/components/Navs'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; import styles from './index.styl'; const Controller = (props) => { diff --git a/src/web/widgets/Marlin/DigitalReadout.jsx b/src/app/widgets/Marlin/DigitalReadout.jsx similarity index 100% rename from src/web/widgets/Marlin/DigitalReadout.jsx rename to src/app/widgets/Marlin/DigitalReadout.jsx diff --git a/src/web/widgets/Marlin/FadeInOut.jsx b/src/app/widgets/Marlin/FadeInOut.jsx similarity index 100% rename from src/web/widgets/Marlin/FadeInOut.jsx rename to src/app/widgets/Marlin/FadeInOut.jsx diff --git a/src/web/widgets/Marlin/Marlin.jsx b/src/app/widgets/Marlin/Marlin.jsx similarity index 98% rename from src/web/widgets/Marlin/Marlin.jsx rename to src/app/widgets/Marlin/Marlin.jsx index 2613fae1b..88ab5f863 100644 --- a/src/web/widgets/Marlin/Marlin.jsx +++ b/src/app/widgets/Marlin/Marlin.jsx @@ -5,13 +5,13 @@ import mapValues from 'lodash/mapValues'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; import { ProgressBar } from 'react-bootstrap'; -import controller from '../../lib/controller'; -import mapGCodeToText from '../../lib/gcode-text'; -import i18n from '../../lib/i18n'; -import { Button } from '../../components/Buttons'; -import Panel from '../../components/Panel'; -import Space from '../../components/Space'; -import Toggler from '../../components/Toggler'; +import controller from 'app/lib/controller'; +import mapGCodeToText from 'app/lib/gcode-text'; +import i18n from 'app/lib/i18n'; +import { Button } from 'app/components/Buttons'; +import Panel from 'app/components/Panel'; +import Space from 'app/components/Space'; +import Toggler from 'app/components/Toggler'; import FadeInOut from './FadeInOut'; import Overrides from './Overrides'; import styles from './index.styl'; diff --git a/src/web/widgets/Marlin/Overrides.jsx b/src/app/widgets/Marlin/Overrides.jsx similarity index 98% rename from src/web/widgets/Marlin/Overrides.jsx rename to src/app/widgets/Marlin/Overrides.jsx index 8b0ba47bf..8f7b47389 100644 --- a/src/web/widgets/Marlin/Overrides.jsx +++ b/src/app/widgets/Marlin/Overrides.jsx @@ -1,7 +1,7 @@ import PropTypes from 'prop-types'; import React from 'react'; -import RepeatButton from '../../components/RepeatButton'; -import controller from '../../lib/controller'; +import RepeatButton from 'app/components/RepeatButton'; +import controller from 'app/lib/controller'; import DigitalReadout from './DigitalReadout'; import styles from './index.styl'; diff --git a/src/web/widgets/Smoothie/constants.js b/src/app/widgets/Marlin/constants.js similarity index 52% rename from src/web/widgets/Smoothie/constants.js rename to src/app/widgets/Marlin/constants.js index bbdd419b6..74b70e296 100644 --- a/src/web/widgets/Smoothie/constants.js +++ b/src/app/widgets/Marlin/constants.js @@ -1,6 +1,9 @@ import constants from 'namespace-constants'; -module.exports = constants('widgets/Smoothie', [ +export const { + MODAL_NONE, + MODAL_CONTROLLER +} = constants('widgets/Grbl', [ 'MODAL_NONE', 'MODAL_CONTROLLER' ]); diff --git a/src/web/widgets/Marlin/icons/extruder.jsx b/src/app/widgets/Marlin/icons/extruder.jsx similarity index 100% rename from src/web/widgets/Marlin/icons/extruder.jsx rename to src/app/widgets/Marlin/icons/extruder.jsx diff --git a/src/web/widgets/Marlin/icons/extruder.svg b/src/app/widgets/Marlin/icons/extruder.svg similarity index 100% rename from src/web/widgets/Marlin/icons/extruder.svg rename to src/app/widgets/Marlin/icons/extruder.svg diff --git a/src/web/widgets/Marlin/icons/heated-bed.jsx b/src/app/widgets/Marlin/icons/heated-bed.jsx similarity index 100% rename from src/web/widgets/Marlin/icons/heated-bed.jsx rename to src/app/widgets/Marlin/icons/heated-bed.jsx diff --git a/src/web/widgets/Marlin/icons/heated-bed.svg b/src/app/widgets/Marlin/icons/heated-bed.svg similarity index 100% rename from src/web/widgets/Marlin/icons/heated-bed.svg rename to src/app/widgets/Marlin/icons/heated-bed.svg diff --git a/src/web/widgets/Marlin/index.jsx b/src/app/widgets/Marlin/index.jsx similarity index 98% rename from src/web/widgets/Marlin/index.jsx rename to src/app/widgets/Marlin/index.jsx index a020cf995..a85fa5fd5 100644 --- a/src/web/widgets/Marlin/index.jsx +++ b/src/app/widgets/Marlin/index.jsx @@ -2,11 +2,11 @@ import isNumber from 'lodash/isNumber'; import classNames from 'classnames'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Space from '../../components/Space'; -import Widget from '../../components/Widget'; -import i18n from '../../lib/i18n'; -import controller from '../../lib/controller'; -import ensurePositiveNumber from '../../lib/ensure-positive-number'; +import Space from 'app/components/Space'; +import Widget from 'app/components/Widget'; +import i18n from 'app/lib/i18n'; +import controller from 'app/lib/controller'; +import ensurePositiveNumber from 'app/lib/ensure-positive-number'; import WidgetConfig from '../WidgetConfig'; import Marlin from './Marlin'; import Controller from './Controller'; diff --git a/src/web/widgets/Marlin/index.styl b/src/app/widgets/Marlin/index.styl similarity index 100% rename from src/web/widgets/Marlin/index.styl rename to src/app/widgets/Marlin/index.styl diff --git a/src/web/widgets/Probe/Probe.jsx b/src/app/widgets/Probe/Probe.jsx similarity index 99% rename from src/web/widgets/Probe/Probe.jsx rename to src/app/widgets/Probe/Probe.jsx index cecd74363..1407a1365 100644 --- a/src/web/widgets/Probe/Probe.jsx +++ b/src/app/widgets/Probe/Probe.jsx @@ -1,7 +1,7 @@ import classNames from 'classnames'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import i18n from '../../lib/i18n'; +import i18n from 'app/lib/i18n'; import { METRIC_UNITS } from '../../constants'; diff --git a/src/web/widgets/Probe/ZProbe.jsx b/src/app/widgets/Probe/ZProbe.jsx similarity index 93% rename from src/web/widgets/Probe/ZProbe.jsx rename to src/app/widgets/Probe/ZProbe.jsx index d15bc56b4..3e6ac1bdd 100644 --- a/src/web/widgets/Probe/ZProbe.jsx +++ b/src/app/widgets/Probe/ZProbe.jsx @@ -1,8 +1,8 @@ import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Modal from '../../components/Modal'; -import ToggleSwitch from '../../components/ToggleSwitch'; -import i18n from '../../lib/i18n'; +import Modal from 'app/components/Modal'; +import ToggleSwitch from 'app/components/ToggleSwitch'; +import i18n from 'app/lib/i18n'; class ZProbe extends PureComponent { static propTypes = { diff --git a/src/web/widgets/Probe/constants.js b/src/app/widgets/Probe/constants.js similarity index 51% rename from src/web/widgets/Probe/constants.js rename to src/app/widgets/Probe/constants.js index 5c6d9337c..d29fd6593 100644 --- a/src/web/widgets/Probe/constants.js +++ b/src/app/widgets/Probe/constants.js @@ -1,6 +1,9 @@ import constants from 'namespace-constants'; -module.exports = constants('widgets/Probe', [ +export const { + MODAL_NONE, + MODAL_PREVIEW +} = constants('widgets/Probe', [ 'MODAL_NONE', 'MODAL_PREVIEW' ]); diff --git a/src/web/widgets/Probe/index.jsx b/src/app/widgets/Probe/index.jsx similarity index 98% rename from src/web/widgets/Probe/index.jsx rename to src/app/widgets/Probe/index.jsx index 9fe2fdafd..2163a5e3b 100644 --- a/src/web/widgets/Probe/index.jsx +++ b/src/app/widgets/Probe/index.jsx @@ -4,11 +4,11 @@ import map from 'lodash/map'; import classNames from 'classnames'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Space from '../../components/Space'; -import Widget from '../../components/Widget'; -import controller from '../../lib/controller'; -import i18n from '../../lib/i18n'; -import { in2mm, mapValueToUnits } from '../../lib/units'; +import Space from 'app/components/Space'; +import Widget from 'app/components/Widget'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; +import { in2mm, mapValueToUnits } from 'app/lib/units'; import WidgetConfig from '../WidgetConfig'; import Probe from './Probe'; import ZProbe from './ZProbe'; diff --git a/src/web/widgets/Probe/index.styl b/src/app/widgets/Probe/index.styl similarity index 100% rename from src/web/widgets/Probe/index.styl rename to src/app/widgets/Probe/index.styl diff --git a/src/web/widgets/Smoothie/Controller.jsx b/src/app/widgets/Smoothie/Controller.jsx similarity index 92% rename from src/web/widgets/Smoothie/Controller.jsx rename to src/app/widgets/Smoothie/Controller.jsx index 1e97b0e5f..019cfbbf0 100644 --- a/src/web/widgets/Smoothie/Controller.jsx +++ b/src/app/widgets/Smoothie/Controller.jsx @@ -1,10 +1,10 @@ import PropTypes from 'prop-types'; import React from 'react'; -import { Button } from '../../components/Buttons'; -import Modal from '../../components/Modal'; -import { Nav, NavItem } from '../../components/Navs'; -import controller from '../../lib/controller'; -import i18n from '../../lib/i18n'; +import { Button } from 'app/components/Buttons'; +import Modal from 'app/components/Modal'; +import { Nav, NavItem } from 'app/components/Navs'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; import styles from './index.styl'; const Controller = (props) => { diff --git a/src/web/widgets/Smoothie/DigitalReadout.jsx b/src/app/widgets/Smoothie/DigitalReadout.jsx similarity index 100% rename from src/web/widgets/Smoothie/DigitalReadout.jsx rename to src/app/widgets/Smoothie/DigitalReadout.jsx diff --git a/src/web/widgets/Smoothie/Overrides.jsx b/src/app/widgets/Smoothie/Overrides.jsx similarity index 98% rename from src/web/widgets/Smoothie/Overrides.jsx rename to src/app/widgets/Smoothie/Overrides.jsx index c77205e40..4956c626b 100644 --- a/src/web/widgets/Smoothie/Overrides.jsx +++ b/src/app/widgets/Smoothie/Overrides.jsx @@ -1,7 +1,7 @@ import PropTypes from 'prop-types'; import React from 'react'; -import RepeatButton from '../../components/RepeatButton'; -import controller from '../../lib/controller'; +import RepeatButton from 'app/components/RepeatButton'; +import controller from 'app/lib/controller'; import DigitalReadout from './DigitalReadout'; import styles from './index.styl'; diff --git a/src/web/widgets/Smoothie/Smoothie.jsx b/src/app/widgets/Smoothie/Smoothie.jsx similarity index 98% rename from src/web/widgets/Smoothie/Smoothie.jsx rename to src/app/widgets/Smoothie/Smoothie.jsx index 12d57923c..301575478 100644 --- a/src/web/widgets/Smoothie/Smoothie.jsx +++ b/src/app/widgets/Smoothie/Smoothie.jsx @@ -2,10 +2,10 @@ import ensureArray from 'ensure-array'; import _ from 'lodash'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import mapGCodeToText from '../../lib/gcode-text'; -import i18n from '../../lib/i18n'; -import Panel from '../../components/Panel'; -import Toggler from '../../components/Toggler'; +import mapGCodeToText from 'app/lib/gcode-text'; +import i18n from 'app/lib/i18n'; +import Panel from 'app/components/Panel'; +import Toggler from 'app/components/Toggler'; import Overrides from './Overrides'; import styles from './index.styl'; diff --git a/src/web/widgets/TinyG/constants.js b/src/app/widgets/Smoothie/constants.js similarity index 50% rename from src/web/widgets/TinyG/constants.js rename to src/app/widgets/Smoothie/constants.js index 07069edf5..31c8cb3b4 100644 --- a/src/web/widgets/TinyG/constants.js +++ b/src/app/widgets/Smoothie/constants.js @@ -1,6 +1,9 @@ import constants from 'namespace-constants'; -module.exports = constants('widgets/TinyG', [ +export const { + MODAL_NONE, + MODAL_CONTROLLER +} = constants('widgets/Smoothie', [ 'MODAL_NONE', 'MODAL_CONTROLLER' ]); diff --git a/src/web/widgets/Smoothie/index.jsx b/src/app/widgets/Smoothie/index.jsx similarity index 98% rename from src/web/widgets/Smoothie/index.jsx rename to src/app/widgets/Smoothie/index.jsx index e0a6002de..80509ca43 100644 --- a/src/web/widgets/Smoothie/index.jsx +++ b/src/app/widgets/Smoothie/index.jsx @@ -1,10 +1,10 @@ import classNames from 'classnames'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Space from '../../components/Space'; -import Widget from '../../components/Widget'; -import controller from '../../lib/controller'; -import i18n from '../../lib/i18n'; +import Space from 'app/components/Space'; +import Widget from 'app/components/Widget'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; import WidgetConfig from '../WidgetConfig'; import Smoothie from './Smoothie'; import Controller from './Controller'; diff --git a/src/web/widgets/Smoothie/index.styl b/src/app/widgets/Smoothie/index.styl similarity index 100% rename from src/web/widgets/Smoothie/index.styl rename to src/app/widgets/Smoothie/index.styl diff --git a/src/web/widgets/Spindle/Spindle.jsx b/src/app/widgets/Spindle/Spindle.jsx similarity index 98% rename from src/web/widgets/Spindle/Spindle.jsx rename to src/app/widgets/Spindle/Spindle.jsx index bcad54a90..1fe932d73 100644 --- a/src/web/widgets/Spindle/Spindle.jsx +++ b/src/app/widgets/Spindle/Spindle.jsx @@ -3,9 +3,9 @@ import ensureArray from 'ensure-array'; import get from 'lodash/get'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Space from '../../components/Space'; -import controller from '../../lib/controller'; -import i18n from '../../lib/i18n'; +import Space from 'app/components/Space'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; import styles from './index.styl'; class Spindle extends PureComponent { diff --git a/src/web/widgets/Spindle/images/coolant.svg b/src/app/widgets/Spindle/images/coolant.svg similarity index 100% rename from src/web/widgets/Spindle/images/coolant.svg rename to src/app/widgets/Spindle/images/coolant.svg diff --git a/src/web/widgets/Spindle/images/fan.svg b/src/app/widgets/Spindle/images/fan.svg similarity index 100% rename from src/web/widgets/Spindle/images/fan.svg rename to src/app/widgets/Spindle/images/fan.svg diff --git a/src/web/widgets/Spindle/index.jsx b/src/app/widgets/Spindle/index.jsx similarity index 98% rename from src/web/widgets/Spindle/index.jsx rename to src/app/widgets/Spindle/index.jsx index b07fb5ac2..dfc192525 100644 --- a/src/web/widgets/Spindle/index.jsx +++ b/src/app/widgets/Spindle/index.jsx @@ -3,10 +3,10 @@ import includes from 'lodash/includes'; import get from 'lodash/get'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Space from '../../components/Space'; -import Widget from '../../components/Widget'; -import controller from '../../lib/controller'; -import i18n from '../../lib/i18n'; +import Space from 'app/components/Space'; +import Widget from 'app/components/Widget'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; import WidgetConfig from '../WidgetConfig'; import Spindle from './Spindle'; import { diff --git a/src/web/widgets/Spindle/index.styl b/src/app/widgets/Spindle/index.styl similarity index 100% rename from src/web/widgets/Spindle/index.styl rename to src/app/widgets/Spindle/index.styl diff --git a/src/web/widgets/TinyG/Controller.jsx b/src/app/widgets/TinyG/Controller.jsx similarity index 91% rename from src/web/widgets/TinyG/Controller.jsx rename to src/app/widgets/TinyG/Controller.jsx index dfd969047..ef49f77d2 100644 --- a/src/web/widgets/TinyG/Controller.jsx +++ b/src/app/widgets/TinyG/Controller.jsx @@ -1,9 +1,9 @@ import PropTypes from 'prop-types'; import React from 'react'; -import { Button } from '../../components/Buttons'; -import Modal from '../../components/Modal'; -import { Nav, NavItem } from '../../components/Navs'; -import i18n from '../../lib/i18n'; +import { Button } from 'app/components/Buttons'; +import Modal from 'app/components/Modal'; +import { Nav, NavItem } from 'app/components/Navs'; +import i18n from 'app/lib/i18n'; import styles from './index.styl'; const Controller = (props) => { diff --git a/src/web/widgets/TinyG/DigitalReadout.jsx b/src/app/widgets/TinyG/DigitalReadout.jsx similarity index 100% rename from src/web/widgets/TinyG/DigitalReadout.jsx rename to src/app/widgets/TinyG/DigitalReadout.jsx diff --git a/src/web/widgets/TinyG/Overrides.jsx b/src/app/widgets/TinyG/Overrides.jsx similarity index 97% rename from src/web/widgets/TinyG/Overrides.jsx rename to src/app/widgets/TinyG/Overrides.jsx index 2e430ad05..ba1850f7d 100644 --- a/src/web/widgets/TinyG/Overrides.jsx +++ b/src/app/widgets/TinyG/Overrides.jsx @@ -1,8 +1,8 @@ import PropTypes from 'prop-types'; import React from 'react'; -import RepeatButton from '../../components/RepeatButton'; -import Space from '../../components/Space'; -import controller from '../../lib/controller'; +import RepeatButton from 'app/components/RepeatButton'; +import Space from 'app/components/Space'; +import controller from 'app/lib/controller'; import DigitalReadout from './DigitalReadout'; import styles from './index.styl'; diff --git a/src/web/widgets/TinyG/TinyG.jsx b/src/app/widgets/TinyG/TinyG.jsx similarity index 98% rename from src/web/widgets/TinyG/TinyG.jsx rename to src/app/widgets/TinyG/TinyG.jsx index d58afdad9..b7329178b 100644 --- a/src/web/widgets/TinyG/TinyG.jsx +++ b/src/app/widgets/TinyG/TinyG.jsx @@ -5,12 +5,12 @@ import mapValues from 'lodash/mapValues'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; import { ProgressBar } from 'react-bootstrap'; -import controller from '../../lib/controller'; -import mapGCodeToText from '../../lib/gcode-text'; -import i18n from '../../lib/i18n'; -import { Button } from '../../components/Buttons'; -import Panel from '../../components/Panel'; -import Toggler from '../../components/Toggler'; +import controller from 'app/lib/controller'; +import mapGCodeToText from 'app/lib/gcode-text'; +import i18n from 'app/lib/i18n'; +import { Button } from 'app/components/Buttons'; +import Panel from 'app/components/Panel'; +import Toggler from 'app/components/Toggler'; import Overrides from './Overrides'; import { TINYG_MACHINE_STATE_INITIALIZING, diff --git a/src/web/widgets/Marlin/constants.js b/src/app/widgets/TinyG/constants.js similarity index 51% rename from src/web/widgets/Marlin/constants.js rename to src/app/widgets/TinyG/constants.js index 8f3deb7c6..3df2725d0 100644 --- a/src/web/widgets/Marlin/constants.js +++ b/src/app/widgets/TinyG/constants.js @@ -1,6 +1,9 @@ import constants from 'namespace-constants'; -module.exports = constants('widgets/Grbl', [ +export const { + MODAL_NONE, + MODAL_CONTROLLER +} = constants('widgets/TinyG', [ 'MODAL_NONE', 'MODAL_CONTROLLER' ]); diff --git a/src/web/widgets/TinyG/index.jsx b/src/app/widgets/TinyG/index.jsx similarity index 98% rename from src/web/widgets/TinyG/index.jsx rename to src/app/widgets/TinyG/index.jsx index 1e0dc191d..aff071f4f 100644 --- a/src/web/widgets/TinyG/index.jsx +++ b/src/app/widgets/TinyG/index.jsx @@ -1,10 +1,10 @@ import classNames from 'classnames'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Space from '../../components/Space'; -import Widget from '../../components/Widget'; -import controller from '../../lib/controller'; -import i18n from '../../lib/i18n'; +import Space from 'app/components/Space'; +import Widget from 'app/components/Widget'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; import WidgetConfig from '../WidgetConfig'; import TinyG from './TinyG'; import Controller from './Controller'; diff --git a/src/web/widgets/TinyG/index.styl b/src/app/widgets/TinyG/index.styl similarity index 100% rename from src/web/widgets/TinyG/index.styl rename to src/app/widgets/TinyG/index.styl diff --git a/src/web/widgets/Visualizer/CoordinateAxes.js b/src/app/widgets/Visualizer/CoordinateAxes.js similarity index 100% rename from src/web/widgets/Visualizer/CoordinateAxes.js rename to src/app/widgets/Visualizer/CoordinateAxes.js diff --git a/src/web/widgets/Visualizer/Cuboid.js b/src/app/widgets/Visualizer/Cuboid.js similarity index 100% rename from src/web/widgets/Visualizer/Cuboid.js rename to src/app/widgets/Visualizer/Cuboid.js diff --git a/src/web/widgets/Visualizer/Cutter.jsx b/src/app/widgets/Visualizer/CuttingPointer.jsx similarity index 86% rename from src/web/widgets/Visualizer/Cutter.jsx rename to src/app/widgets/Visualizer/CuttingPointer.jsx index c4476d2d6..39f535f90 100644 --- a/src/web/widgets/Visualizer/Cutter.jsx +++ b/src/app/widgets/Visualizer/CuttingPointer.jsx @@ -1,6 +1,6 @@ import * as THREE from 'three'; -class Cutter { +class CuttingPointer { constructor(options) { const { color = 0xffffff, @@ -24,13 +24,11 @@ class Cutter { thetaLength ); const material = new THREE.MeshBasicMaterial({ - color: color, - opacity: 0.9, - transparent: true + color: color }); return new THREE.Mesh(geometry, material); } } -export default Cutter; +export default CuttingPointer; diff --git a/src/web/widgets/Visualizer/Dashboard.jsx b/src/app/widgets/Visualizer/Dashboard.jsx similarity index 96% rename from src/web/widgets/Visualizer/Dashboard.jsx rename to src/app/widgets/Visualizer/Dashboard.jsx index e508274a2..d5e995811 100644 --- a/src/web/widgets/Visualizer/Dashboard.jsx +++ b/src/app/widgets/Visualizer/Dashboard.jsx @@ -7,11 +7,11 @@ import React, { PureComponent } from 'react'; import ReactDOM from 'react-dom'; import { ProgressBar } from 'react-bootstrap'; import VirtualList from 'react-tiny-virtual-list'; -import api from '../../api'; -import Anchor from '../../components/Anchor'; -import Panel from '../../components/Panel'; -import i18n from '../../lib/i18n'; -import { formatBytes } from '../../lib/numeral'; +import api from 'app/api'; +import Anchor from 'app/components/Anchor'; +import Panel from 'app/components/Panel'; +import i18n from 'app/lib/i18n'; +import { formatBytes } from 'app/lib/numeral'; import styles from './dashboard.styl'; class Dashboard extends PureComponent { diff --git a/src/web/widgets/Visualizer/GCodeVisualizer.js b/src/app/widgets/Visualizer/GCodeVisualizer.js similarity index 99% rename from src/web/widgets/Visualizer/GCodeVisualizer.js rename to src/app/widgets/Visualizer/GCodeVisualizer.js index dcd3a4e2f..4ab4106ce 100644 --- a/src/web/widgets/Visualizer/GCodeVisualizer.js +++ b/src/app/widgets/Visualizer/GCodeVisualizer.js @@ -1,7 +1,7 @@ import colornames from 'colornames'; import Toolpath from 'gcode-toolpath'; import * as THREE from 'three'; -import log from '../../lib/log'; +import log from 'app/lib/log'; const defaultColor = new THREE.Color(colornames('lightgrey')); const motionColor = { diff --git a/src/web/widgets/Visualizer/GridLine.js b/src/app/widgets/Visualizer/GridLine.js similarity index 100% rename from src/web/widgets/Visualizer/GridLine.js rename to src/app/widgets/Visualizer/GridLine.js diff --git a/src/web/widgets/Visualizer/Loading.jsx b/src/app/widgets/Visualizer/Loading.jsx similarity index 90% rename from src/web/widgets/Visualizer/Loading.jsx rename to src/app/widgets/Visualizer/Loading.jsx index 9bfb60799..6e7a31e4d 100644 --- a/src/web/widgets/Visualizer/Loading.jsx +++ b/src/app/widgets/Visualizer/Loading.jsx @@ -1,5 +1,5 @@ import React from 'react'; -import i18n from '../../lib/i18n'; +import i18n from 'app/lib/i18n'; import styles from './loader.styl'; export default () => ( diff --git a/src/web/widgets/Visualizer/Notifications.js b/src/app/widgets/Visualizer/Notifications.js similarity index 95% rename from src/web/widgets/Visualizer/Notifications.js rename to src/app/widgets/Visualizer/Notifications.js index f09ccb21d..a5daaf3d5 100644 --- a/src/web/widgets/Visualizer/Notifications.js +++ b/src/app/widgets/Visualizer/Notifications.js @@ -1,9 +1,9 @@ import PropTypes from 'prop-types'; import React from 'react'; -import Anchor from '../../components/Anchor'; -import { ToastNotification } from '../../components/Notifications'; -import Space from '../../components/Space'; -import i18n from '../../lib/i18n'; +import Anchor from 'app/components/Anchor'; +import { ToastNotification } from 'app/components/Notifications'; +import Space from 'app/components/Space'; +import i18n from 'app/lib/i18n'; import { NOTIFICATION_PROGRAM_ERROR, NOTIFICATION_M0_PROGRAM_PAUSE, diff --git a/src/web/widgets/Visualizer/PivotPoint3.js b/src/app/widgets/Visualizer/PivotPoint3.js similarity index 100% rename from src/web/widgets/Visualizer/PivotPoint3.js rename to src/app/widgets/Visualizer/PivotPoint3.js diff --git a/src/web/widgets/Visualizer/PrimaryToolbar.jsx b/src/app/widgets/Visualizer/PrimaryToolbar.jsx similarity index 89% rename from src/web/widgets/Visualizer/PrimaryToolbar.jsx rename to src/app/widgets/Visualizer/PrimaryToolbar.jsx index b12adc660..2e35917ca 100644 --- a/src/web/widgets/Visualizer/PrimaryToolbar.jsx +++ b/src/app/widgets/Visualizer/PrimaryToolbar.jsx @@ -3,13 +3,13 @@ import classNames from 'classnames'; import colornames from 'colornames'; import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; -import Detector from 'three/examples/js/Detector'; -import controller from '../../lib/controller'; -import { Button } from '../../components/Buttons'; -import Dropdown, { MenuItem } from '../../components/Dropdown'; -import Interpolate from '../../components/Interpolate'; -import Space from '../../components/Space'; -import i18n from '../../lib/i18n'; +import { Button } from 'app/components/Buttons'; +import Dropdown, { MenuItem } from 'app/components/Dropdown'; +import I18n from 'app/components/I18n'; +import Space from 'app/components/Space'; +import controller from 'app/lib/controller'; +import i18n from 'app/lib/i18n'; +import * as WebGL from 'app/lib/three/WebGL'; import { // Grbl GRBL, @@ -50,7 +50,7 @@ import { TINYG_MACHINE_STATE_PANIC, // Workflow WORKFLOW_STATE_IDLE -} from '../../constants'; +} from 'app/constants'; import styles from './index.styl'; class PrimaryToolbar extends PureComponent { @@ -224,7 +224,7 @@ class PrimaryToolbar extends PureComponent { const { state, actions } = this.props; const { disabled, gcode, projection, objects } = state; const canSendCommand = this.canSendCommand(); - const canToggleOptions = Detector.webgl && !disabled; + const canToggleOptions = WebGL.isWebGLAvailable() && !disabled; const wcs = this.getWorkCoordinateSystem(); return ( @@ -306,13 +306,13 @@ class PrimaryToolbar extends PureComponent {