From b059a36e668a278df89749db5804f8e7900fd0fb Mon Sep 17 00:00:00 2001 From: rmarops Date: Wed, 16 Nov 2022 20:50:34 -0500 Subject: [PATCH 01/73] added MongoDB ping monitor --- package-lock.json | 2181 +++++++++++++++++++++++++++++++++++++ package.json | 1 + server/model/monitor.js | 10 +- server/util-server.js | 22 + src/pages/EditMonitor.vue | 14 + 5 files changed, 2227 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index e2e1f5d1b..93118feb4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,6 +38,7 @@ "jsonwebtoken": "~8.5.1", "jwt-decode": "~3.1.2", "limiter": "~2.1.0", + "mongodb": "^4.12.0", "mqtt": "~4.3.7", "mssql": "~8.1.4", "node-cloudflared-tunnel": "~1.0.9", @@ -167,6 +168,1050 @@ "node": ">=6.0.0" } }, + "node_modules/@aws-crypto/ie11-detection": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-2.0.2.tgz", + "integrity": "sha512-5XDMQY98gMAf/WRTic5G++jfmS/VLM0rwpiOpaainKi4L0nqWMSB1SzsrEG5rjFZGYN6ZAefO+/Yta2dFM0kMw==", + "optional": true, + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + }, + "node_modules/@aws-crypto/sha256-browser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz", + "integrity": "sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A==", + "optional": true, + "dependencies": { + "@aws-crypto/ie11-detection": "^2.0.0", + "@aws-crypto/sha256-js": "^2.0.0", + "@aws-crypto/supports-web-crypto": "^2.0.0", + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz", + "integrity": "sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig==", + "optional": true, + "dependencies": { + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + }, + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.2.tgz", + "integrity": "sha512-6mbSsLHwZ99CTOOswvCRP3C+VCWnzBf+1SnbWxzzJ9lR0mA0JnY2JEAhp8rqmTE0GPFy88rrM27ffgp62oErMQ==", + "optional": true, + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + }, + "node_modules/@aws-crypto/util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-2.0.2.tgz", + "integrity": "sha512-Lgu5v/0e/BcrZ5m/IWqzPUf3UYFTy/PpeED+uc9SWUR1iZQL8XXbGQg10UfllwwBryO3hFF5dizK+78aoXC1eA==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "^3.110.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/util/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + }, + "node_modules/@aws-sdk/abort-controller": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.212.0.tgz", + "integrity": "sha512-mXeBSuDi0Fpul4zk9VH2z0VKN+/+6hyJ9SXSRhn3LpMcyj3GeZtXyTB2wCsfxXYGxeGbV+bIzbPbhZza6wNfWg==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.212.0.tgz", + "integrity": "sha512-0yt6lyYUYng5Nnn5EyTnoVZuVXD3r6eaDjrIZQTc8yhNkbTg+eRLlGnJVkrn/O9NPRS52XqxLCbJc/Wk2SSH+w==", + "optional": true, + "dependencies": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/client-sts": "3.212.0", + "@aws-sdk/config-resolver": "3.212.0", + "@aws-sdk/credential-provider-node": "3.212.0", + "@aws-sdk/fetch-http-handler": "3.212.0", + "@aws-sdk/hash-node": "3.212.0", + "@aws-sdk/invalid-dependency": "3.212.0", + "@aws-sdk/middleware-content-length": "3.212.0", + "@aws-sdk/middleware-endpoint": "3.212.0", + "@aws-sdk/middleware-host-header": "3.212.0", + "@aws-sdk/middleware-logger": "3.212.0", + "@aws-sdk/middleware-recursion-detection": "3.212.0", + "@aws-sdk/middleware-retry": "3.212.0", + "@aws-sdk/middleware-serde": "3.212.0", + "@aws-sdk/middleware-signing": "3.212.0", + "@aws-sdk/middleware-stack": "3.212.0", + "@aws-sdk/middleware-user-agent": "3.212.0", + "@aws-sdk/node-config-provider": "3.212.0", + "@aws-sdk/node-http-handler": "3.212.0", + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/smithy-client": "3.212.0", + "@aws-sdk/types": "3.212.0", + "@aws-sdk/url-parser": "3.212.0", + "@aws-sdk/util-base64": "3.208.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.212.0", + "@aws-sdk/util-defaults-mode-node": "3.212.0", + "@aws-sdk/util-endpoints": "3.212.0", + "@aws-sdk/util-user-agent-browser": "3.212.0", + "@aws-sdk/util-user-agent-node": "3.212.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.212.0.tgz", + "integrity": "sha512-b9lFI8Uz6YxIzAlS2uq62y5fX097lwcdkiq2N8YN2U7YgHQaKMIFnV8ZqkDdhZi2eUKwhSdUZzQy0tF6en2Ubg==", + "optional": true, + "dependencies": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.212.0", + "@aws-sdk/fetch-http-handler": "3.212.0", + "@aws-sdk/hash-node": "3.212.0", + "@aws-sdk/invalid-dependency": "3.212.0", + "@aws-sdk/middleware-content-length": "3.212.0", + "@aws-sdk/middleware-endpoint": "3.212.0", + "@aws-sdk/middleware-host-header": "3.212.0", + "@aws-sdk/middleware-logger": "3.212.0", + "@aws-sdk/middleware-recursion-detection": "3.212.0", + "@aws-sdk/middleware-retry": "3.212.0", + "@aws-sdk/middleware-serde": "3.212.0", + "@aws-sdk/middleware-stack": "3.212.0", + "@aws-sdk/middleware-user-agent": "3.212.0", + "@aws-sdk/node-config-provider": "3.212.0", + "@aws-sdk/node-http-handler": "3.212.0", + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/smithy-client": "3.212.0", + "@aws-sdk/types": "3.212.0", + "@aws-sdk/url-parser": "3.212.0", + "@aws-sdk/util-base64": "3.208.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.212.0", + "@aws-sdk/util-defaults-mode-node": "3.212.0", + "@aws-sdk/util-endpoints": "3.212.0", + "@aws-sdk/util-user-agent-browser": "3.212.0", + "@aws-sdk/util-user-agent-node": "3.212.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.212.0.tgz", + "integrity": "sha512-Co0AU+y9KEAZUraT36ttFZlmwARsr82q2nQji5E8zg3zlUHtqGvMJqxArudz3iOb2E9WRi75MwAQmLO2xEk45A==", + "optional": true, + "dependencies": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.212.0", + "@aws-sdk/fetch-http-handler": "3.212.0", + "@aws-sdk/hash-node": "3.212.0", + "@aws-sdk/invalid-dependency": "3.212.0", + "@aws-sdk/middleware-content-length": "3.212.0", + "@aws-sdk/middleware-endpoint": "3.212.0", + "@aws-sdk/middleware-host-header": "3.212.0", + "@aws-sdk/middleware-logger": "3.212.0", + "@aws-sdk/middleware-recursion-detection": "3.212.0", + "@aws-sdk/middleware-retry": "3.212.0", + "@aws-sdk/middleware-serde": "3.212.0", + "@aws-sdk/middleware-stack": "3.212.0", + "@aws-sdk/middleware-user-agent": "3.212.0", + "@aws-sdk/node-config-provider": "3.212.0", + "@aws-sdk/node-http-handler": "3.212.0", + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/smithy-client": "3.212.0", + "@aws-sdk/types": "3.212.0", + "@aws-sdk/url-parser": "3.212.0", + "@aws-sdk/util-base64": "3.208.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.212.0", + "@aws-sdk/util-defaults-mode-node": "3.212.0", + "@aws-sdk/util-endpoints": "3.212.0", + "@aws-sdk/util-user-agent-browser": "3.212.0", + "@aws-sdk/util-user-agent-node": "3.212.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sts": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.212.0.tgz", + "integrity": "sha512-Zl8665HT1Do/yfiFEtqEjLkHSkAo5Isg2QU65Kbknj2W2DFj92a1cRvMlHanDLxlpuoryGP9/u1efYZeWeIdlg==", + "optional": true, + "dependencies": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.212.0", + "@aws-sdk/credential-provider-node": "3.212.0", + "@aws-sdk/fetch-http-handler": "3.212.0", + "@aws-sdk/hash-node": "3.212.0", + "@aws-sdk/invalid-dependency": "3.212.0", + "@aws-sdk/middleware-content-length": "3.212.0", + "@aws-sdk/middleware-endpoint": "3.212.0", + "@aws-sdk/middleware-host-header": "3.212.0", + "@aws-sdk/middleware-logger": "3.212.0", + "@aws-sdk/middleware-recursion-detection": "3.212.0", + "@aws-sdk/middleware-retry": "3.212.0", + "@aws-sdk/middleware-sdk-sts": "3.212.0", + "@aws-sdk/middleware-serde": "3.212.0", + "@aws-sdk/middleware-signing": "3.212.0", + "@aws-sdk/middleware-stack": "3.212.0", + "@aws-sdk/middleware-user-agent": "3.212.0", + "@aws-sdk/node-config-provider": "3.212.0", + "@aws-sdk/node-http-handler": "3.212.0", + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/smithy-client": "3.212.0", + "@aws-sdk/types": "3.212.0", + "@aws-sdk/url-parser": "3.212.0", + "@aws-sdk/util-base64": "3.208.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.212.0", + "@aws-sdk/util-defaults-mode-node": "3.212.0", + "@aws-sdk/util-endpoints": "3.212.0", + "@aws-sdk/util-user-agent-browser": "3.212.0", + "@aws-sdk/util-user-agent-node": "3.212.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.208.0", + "fast-xml-parser": "4.0.11", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/config-resolver": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.212.0.tgz", + "integrity": "sha512-hIP/Izpv6GCsDTnHCd/X9Ro7Mw5le+gr2VbkZHWR0c8+3xZWp8N5S0QnUBogF3Dv2KwPbmHP+bs/vqqo3miUjQ==", + "optional": true, + "dependencies": { + "@aws-sdk/signature-v4": "3.212.0", + "@aws-sdk/types": "3.212.0", + "@aws-sdk/util-config-provider": "3.208.0", + "@aws-sdk/util-middleware": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-cognito-identity": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.212.0.tgz", + "integrity": "sha512-0BEML2iBGXyFnD1HNQ28B+9Ev7NGcu9itYcJue5mBkCOka3mW55xAPYwp3es0rhQ1oeBziqCjHIIRsp7wGIvsQ==", + "optional": true, + "dependencies": { + "@aws-sdk/client-cognito-identity": "3.212.0", + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.212.0.tgz", + "integrity": "sha512-HNYoqetLqTxwl0Grl4ez8Dx3I3hJfskxH2PTHYI1/iAqrY/gSB2oBOusvBeksbYrScnQM2IGqEcMJ4lzGLOH+w==", + "optional": true, + "dependencies": { + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-imds": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.212.0.tgz", + "integrity": "sha512-Bg7cX2N5pJ//ft3Y8HWtpDSEMMgRTNMaNlIvTlDbAKYp7HBZRWSf9ZJnz2slT7qbyaJyRP5pSJC4XRm83g4leA==", + "optional": true, + "dependencies": { + "@aws-sdk/node-config-provider": "3.212.0", + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/types": "3.212.0", + "@aws-sdk/url-parser": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.212.0.tgz", + "integrity": "sha512-H7qRIP8qV7tRrCSJx2p5oQVMJASQWZUmi4l699hDMejmCO/m4pUMQFmWn2FXtZv8gTfzlkmp3wMixD5jnfL7pw==", + "optional": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.212.0", + "@aws-sdk/credential-provider-imds": "3.212.0", + "@aws-sdk/credential-provider-sso": "3.212.0", + "@aws-sdk/credential-provider-web-identity": "3.212.0", + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/shared-ini-file-loader": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.212.0.tgz", + "integrity": "sha512-T44hoU3GCYHS+4GDVs7S/v2bBHmmYpnPayQsYXhDElQKXP0cFzQ78F8et4IU5lM94hwK+ISRQPrKaq4p77evkw==", + "optional": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.212.0", + "@aws-sdk/credential-provider-imds": "3.212.0", + "@aws-sdk/credential-provider-ini": "3.212.0", + "@aws-sdk/credential-provider-process": "3.212.0", + "@aws-sdk/credential-provider-sso": "3.212.0", + "@aws-sdk/credential-provider-web-identity": "3.212.0", + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/shared-ini-file-loader": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.212.0.tgz", + "integrity": "sha512-bGaVKSm5Tf5VZtlM2V6k+M9nSKzlb14ldCcH0PGGMaK/dqnEJDVSxXPu3fWyomaxbLt7Is3AUMh6L2bq3kuXyA==", + "optional": true, + "dependencies": { + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/shared-ini-file-loader": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.212.0.tgz", + "integrity": "sha512-OGatVUnWLp7PePs2H2RyYmTrwurl0tAfW+LWfVAPgYyvi2RQgTmSK5LJ3pXKxz3TvaSHkCvsT0NWNqdWY+iKWQ==", + "optional": true, + "dependencies": { + "@aws-sdk/client-sso": "3.212.0", + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/shared-ini-file-loader": "3.212.0", + "@aws-sdk/token-providers": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.212.0.tgz", + "integrity": "sha512-zPF3KiVT14aeu4cRyEUelAJEAzFp++9ULLigQXhKBbFYaiOZMAHKRASO/WUK1ixYBC+ax4G1rbihLfQimXMtVA==", + "optional": true, + "dependencies": { + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.212.0.tgz", + "integrity": "sha512-ea1KFqSpGsXcAD5IdDxKsWimLQ2/HiKQnlJUpXyDEP1Sk3if/Gtnn17Hk6GgXByaqppDqful9Lu9esxc3mNDkg==", + "optional": true, + "dependencies": { + "@aws-sdk/client-cognito-identity": "3.212.0", + "@aws-sdk/client-sso": "3.212.0", + "@aws-sdk/client-sts": "3.212.0", + "@aws-sdk/credential-provider-cognito-identity": "3.212.0", + "@aws-sdk/credential-provider-env": "3.212.0", + "@aws-sdk/credential-provider-imds": "3.212.0", + "@aws-sdk/credential-provider-ini": "3.212.0", + "@aws-sdk/credential-provider-node": "3.212.0", + "@aws-sdk/credential-provider-process": "3.212.0", + "@aws-sdk/credential-provider-sso": "3.212.0", + "@aws-sdk/credential-provider-web-identity": "3.212.0", + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/shared-ini-file-loader": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/fetch-http-handler": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.212.0.tgz", + "integrity": "sha512-u7ehnpAVN8D0asWhyQitNVf1j5LdzCuxP/14Dx8+PvrUdZxQNVq2FVB+tkQvOs9pDHE/oROjVo7GNO42bmkitA==", + "optional": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/querystring-builder": "3.212.0", + "@aws-sdk/types": "3.212.0", + "@aws-sdk/util-base64": "3.208.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/hash-node": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.212.0.tgz", + "integrity": "sha512-pwZkz83EvXHGURBYjBYS7Cr+gSr6pi23RDlP/aXREjJGs9QUQyixBh78oX5a3p6bB8JeizPcZS1dXKJ9OKCHAw==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.212.0", + "@aws-sdk/util-buffer-from": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/invalid-dependency": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.212.0.tgz", + "integrity": "sha512-zKVx+4Silmsr5Nvv9aGL5FmuHvdP9Dcvy/22fmWa3RRvCSNRpvFDeXtcDB5FvNpbWbO+qJyGj/OeqB/XejV13w==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/is-array-buffer": { + "version": "3.201.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.201.0.tgz", + "integrity": "sha512-UPez5qLh3dNgt0DYnPD/q0mVJY84rA17QE26hVNOW3fAji8W2wrwrxdacWOxyXvlxWsVRcKmr+lay1MDqpAMfg==", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-content-length": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.212.0.tgz", + "integrity": "sha512-gR6jeKGYNYqNLFRcuX3vv5PN1POLlB/9LDVYl3k/NNaCg8L1EKqqEtG84Gmn1AXH+2s6zMNs+gt5ygeqZQe2Cw==", + "optional": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-endpoint": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.212.0.tgz", + "integrity": "sha512-6ntKYehjxLun8hPXIPHSI2pGr/pHuQ6jcyO5wBq1kydSIIGiESl8H84DEt+yRvroCiYgbU+I8cACnRE0uv0bLA==", + "optional": true, + "dependencies": { + "@aws-sdk/middleware-serde": "3.212.0", + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/signature-v4": "3.212.0", + "@aws-sdk/types": "3.212.0", + "@aws-sdk/url-parser": "3.212.0", + "@aws-sdk/util-config-provider": "3.208.0", + "@aws-sdk/util-middleware": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.212.0.tgz", + "integrity": "sha512-W00mxzK2OXy91Ncxri3cZJIxxSBzE72bX8FDa3xgC0ujbj49lw+rol6aV/Fw8Nda3CZ5xxulvJ4sXHt2eOtXSA==", + "optional": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.212.0.tgz", + "integrity": "sha512-BSQqzKp4abf2wXvJEstB0zdr68yJMZXA14h53eSvtzykZLfvvFixR1nyVgKq+PKm1VaJ2fuZr10tjWRVQg1pYA==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.212.0.tgz", + "integrity": "sha512-ATHPNtnd7nlm0jRXvr/c2xbxcna5ZGXEWTM5tUjIflOK9Rl3PCRce/hoQnHs45kv4l3daC53sPuRvTQ8O7K67A==", + "optional": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-retry": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.212.0.tgz", + "integrity": "sha512-lIi/JkYXalY6CYw2dJbQ/Xo64Ah3wfJ63BMTFQHQk1htnIDBnLd9a6ng96JgXJQMSO4ZEqRW/709NBlC157hbw==", + "optional": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/service-error-classification": "3.212.0", + "@aws-sdk/types": "3.212.0", + "@aws-sdk/util-middleware": "3.212.0", + "tslib": "^2.3.1", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-sts": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.212.0.tgz", + "integrity": "sha512-IcMfno3RJEXXS1Ch5lY0hgdSkGn9XW9m3XoKu1DjhEqR34ENDzvUmEN2PimIcZnz+9W59CU9UAMs/amRhwhlmw==", + "optional": true, + "dependencies": { + "@aws-sdk/middleware-signing": "3.212.0", + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/signature-v4": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-serde": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.212.0.tgz", + "integrity": "sha512-KwRpwi/8vNDV0l8uvu1DPk0q3WR2pnp9VtUNZ6u9zU54hvVL+Z1PtQh/WfzJzNvtCHvtc/gVMs3Daqb/Ecrm5Q==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-signing": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.212.0.tgz", + "integrity": "sha512-pth95aEsxqQO0lrRAHZNVI5hrMtA14nEUPFjiLaXtOssZrjD6mBzXPRy1nKob6XWXOp/Vy0mnyI/FT/NnMflFw==", + "optional": true, + "dependencies": { + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/signature-v4": "3.212.0", + "@aws-sdk/types": "3.212.0", + "@aws-sdk/util-middleware": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-stack": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.212.0.tgz", + "integrity": "sha512-AZ5f9ChioHsxGUojlzqI57sYyM9oW9SN/7AuiNafXU02j9jw7DKiYRn43lRUhgYnb/REhedHA5SsqIBF5eut/w==", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.212.0.tgz", + "integrity": "sha512-CVSY2kt+RaP6CVqSKp+1sPUAQFusTLZLFHVK0YPFzcIySJMqJC0l0/BzLhaIf5Bs3JHa/VGym8oDpp881yimHA==", + "optional": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/node-config-provider": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.212.0.tgz", + "integrity": "sha512-8AfOEDPe/D9DccUgredYg07GH2jrw07FCTyA1Pug5Hgbas7w14zbhLyQB0l6gcOJEuh34e/7oV9hN3s1hctnJg==", + "optional": true, + "dependencies": { + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/shared-ini-file-loader": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/node-http-handler": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.212.0.tgz", + "integrity": "sha512-wt4jK8HeYMjuQbWB4+Xt/nGyTvIwtLhm0SHcRgcoTsUjEiaPio/xNanyBWhPSUM87jpyG6bQMCzUtDbPeLqhkA==", + "optional": true, + "dependencies": { + "@aws-sdk/abort-controller": "3.212.0", + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/querystring-builder": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/property-provider": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.212.0.tgz", + "integrity": "sha512-NMCIABfw3VZ7Vtn6iSeZRuSToRLxIHq0eGoUgO7T4fUp3U5vqYt28A5UY65KB9ifUPpNSllEG3EhEqs5qFw5+w==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/protocol-http": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.212.0.tgz", + "integrity": "sha512-EhkLPQC2TeqC3RGKfW87zoKj/gsWS4JJlRl5U6KMXejBMKQPzuopUiF9gQJ2iuou9BT8B+RsG2qgSHzrxp6lKw==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/querystring-builder": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.212.0.tgz", + "integrity": "sha512-4CaQstj0Aki3vc96Z0d481raNagmy9gnJtIv6yveATJ/57lk/RUv2WtTUOzpFKv/oNx5khix2tpbRqK9nCUxVg==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.212.0", + "@aws-sdk/util-uri-escape": "3.201.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/querystring-parser": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.212.0.tgz", + "integrity": "sha512-ttarfAHMOYKgFHeBdgXID9SlNS7erH4gavN3fvf5R1RliCytUnzsTTvqa7CmVBFy0Xc/2yA+/6FFDKlOsS8tRg==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/service-error-classification": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.212.0.tgz", + "integrity": "sha512-jCv+uuFq4yGjP8FoCmoOGqnKNHHREDOFf7OxVSCluGMg2LXHfGxxqkqNFJlT3p+QdEp323GSWFY+PUsMJy7BLQ==", + "optional": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/shared-ini-file-loader": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.212.0.tgz", + "integrity": "sha512-wKWqCA1oU57V//D3uAjQKGGj6rm6YKH4pWIU38Ypb/xNafiB7C51KtwpQVsS2HCNfmGrD03sGLKEZCSy9jvIlA==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.212.0.tgz", + "integrity": "sha512-tCrzWA60AWGDRmY9OyUrG0BzD+dDbAtHSqcY2LchGHOlMmv501/WXBIvn9fDfKp8GJj6Lb3VcG9cY1jCuKKcmg==", + "optional": true, + "dependencies": { + "@aws-sdk/is-array-buffer": "3.201.0", + "@aws-sdk/types": "3.212.0", + "@aws-sdk/util-hex-encoding": "3.201.0", + "@aws-sdk/util-middleware": "3.212.0", + "@aws-sdk/util-uri-escape": "3.201.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/smithy-client": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.212.0.tgz", + "integrity": "sha512-dQUlM/eltp9JVEVQWGxU/6Or8jGQWK5mgmbP+BUHkfDgoMIeOFksIYon211KhE18EjoGgav1mr4/HHlcnekI2w==", + "optional": true, + "dependencies": { + "@aws-sdk/middleware-stack": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.212.0.tgz", + "integrity": "sha512-pTe4PM14b58nbfvIP9B0zW5dUIxEb/ALVzSLuxpJwJRI51E5QZmXJMT3P77MUd6niqKw0cRrnEHIgznD67JHSg==", + "optional": true, + "dependencies": { + "@aws-sdk/client-sso-oidc": "3.212.0", + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/shared-ini-file-loader": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.212.0.tgz", + "integrity": "sha512-uXBXB1PBYxfPyIvgmjbGdYBlS7rdeMG58uCaY3Ga5scY2xQnj7HU7knATKuIKk2DH1lLT0inqtsRVJS25zRK5w==", + "optional": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/url-parser": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.212.0.tgz", + "integrity": "sha512-mTUQQRcVYqur7aHDuDMDKxN7Yr/5kIZB1RtMjIwtimTcf7TZaskN6sLTPo42YgASM6XQQhJECZaOE7Ow16i6Mg==", + "optional": true, + "dependencies": { + "@aws-sdk/querystring-parser": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/util-base64": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.208.0.tgz", + "integrity": "sha512-PQniZph5A6N7uuEOQi+1hnMz/FSOK/8kMFyFO+4DgA1dZ5pcKcn5wiFwHkcTb/BsgVqQa3Jx0VHNnvhlS8JyTg==", + "optional": true, + "dependencies": { + "@aws-sdk/util-buffer-from": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-body-length-browser": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.188.0.tgz", + "integrity": "sha512-8VpnwFWXhnZ/iRSl9mTf+VKOX9wDE8QtN4bj9pBfxwf90H1X7E8T6NkiZD3k+HubYf2J94e7DbeHs7fuCPW5Qg==", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/util-body-length-node": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.208.0.tgz", + "integrity": "sha512-3zj50e5g7t/MQf53SsuuSf0hEELzMtD8RX8C76f12OSRo2Bca4FLLYHe0TZbxcfQHom8/hOaeZEyTyMogMglqg==", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-buffer-from": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.208.0.tgz", + "integrity": "sha512-7L0XUixNEFcLUGPeBF35enCvB9Xl+K6SQsmbrPk1P3mlV9mguWSDQqbOBwY1Ir0OVbD6H/ZOQU7hI/9RtRI0Zw==", + "optional": true, + "dependencies": { + "@aws-sdk/is-array-buffer": "3.201.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-config-provider": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.208.0.tgz", + "integrity": "sha512-DSRqwrERUsT34ug+anlMBIFooBEGwM8GejC7q00Y/9IPrQy50KnG5PW2NiTjuLKNi7pdEOlwTSEocJE15eDZIg==", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-defaults-mode-browser": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.212.0.tgz", + "integrity": "sha512-tAs9+/lTtil545kyCqy7qjnnCq4S2S+4kBhHXgwRNPT85Nx5XCEEheWH6VZ45YufRaiRNFfX0n+odDwzDaev6g==", + "optional": true, + "dependencies": { + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/types": "3.212.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@aws-sdk/util-defaults-mode-node": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.212.0.tgz", + "integrity": "sha512-fNl1IDqn1mAoiM2Xv5KGAczXHy2+tPlouunIEePnQKTq0pzT3WqR13qleTfu1EcEz1oyGnDRoK91aP61Jxh3OQ==", + "optional": true, + "dependencies": { + "@aws-sdk/config-resolver": "3.212.0", + "@aws-sdk/credential-provider-imds": "3.212.0", + "@aws-sdk/node-config-provider": "3.212.0", + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.212.0.tgz", + "integrity": "sha512-/ADfvrZwhzUphre3pliO290IFOflvHyBBEaKn9WfRQ5veZxl+CuOEjxkwTJfHUrfWbh+xpCuOewWVLCptmoC4A==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-hex-encoding": { + "version": "3.201.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.201.0.tgz", + "integrity": "sha512-7t1vR1pVxKx0motd3X9rI3m/xNp78p3sHtP5yo4NP4ARpxyJ0fokBomY8ScaH2D/B+U5o9ARxldJUdMqyBlJcA==", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.208.0.tgz", + "integrity": "sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg==", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-middleware": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.212.0.tgz", + "integrity": "sha512-621glUpwVKJRB8QxRG/5cAKIq8LKPdl/l8CS7vDg34f6j9BJmP5YVPcTzzQ6iskQAblkndiBAnSjp7kGujxuGg==", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-uri-escape": { + "version": "3.201.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.201.0.tgz", + "integrity": "sha512-TeTWbGx4LU2c5rx0obHeDFeO9HvwYwQtMh1yniBz00pQb6Qt6YVOETVQikRZ+XRQwEyCg/dA375UplIpiy54mA==", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.212.0.tgz", + "integrity": "sha512-xXz16ge9NdKCwlD+952rfvgHdDe+pbCavbVMNdR60joHq5KYGR1e02l0LRNVe48/C9dAo2ezeJ+YnTPaw3Yl8Q==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.212.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.212.0.tgz", + "integrity": "sha512-HE8VwtMtTXGkwUjryNpy+qyg7wrQxCGplDP59yo0YVn86B5f9nhRi/2jRAsKo9yf94iP7PXAz65TY9+KJC8UIg==", + "optional": true, + "dependencies": { + "@aws-sdk/node-config-provider": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/util-utf8-browser": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.188.0.tgz", + "integrity": "sha512-jt627x0+jE+Ydr9NwkFstg3cUvgWh56qdaqAMDsqgRlKD21md/6G226z/Qxl7lb1VEW2LlmCx43ai/37Qwcj2Q==", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/util-utf8-node": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.208.0.tgz", + "integrity": "sha512-jKY87Acv0yWBdFxx6bveagy5FYjz+dtV8IPT7ay1E2WPWH1czoIdMAkc8tSInK31T6CRnHWkLZ1qYwCbgRfERQ==", + "optional": true, + "dependencies": { + "@aws-sdk/util-buffer-from": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@azure/abort-controller": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", @@ -3715,6 +4760,20 @@ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" + }, + "node_modules/@types/whatwg-url": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "dependencies": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, "node_modules/@types/yargs": { "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", @@ -4840,6 +5899,12 @@ "@popperjs/core": "^2.10.2" } }, + "node_modules/bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "optional": true + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -4925,6 +5990,17 @@ "node-int64": "^0.4.0" } }, + "node_modules/bson": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.0.tgz", + "integrity": "sha512-VrlEE4vuiO1WTpfof4VmaVolCVYkYTgB9iWgYNOrVlnifpME/06fhFRmONgBhClD5pFC1t9ZWqFUQEQAzY43bA==", + "dependencies": { + "buffer": "^5.6.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -7804,6 +8880,22 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "node_modules/fast-xml-parser": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.11.tgz", + "integrity": "sha512-4aUg3aNRR/WjQAcpceODG1C3x3lFANXRo8+1biqfieHmg9pyMt7qB4lQV/Ta6sJCTbA5vfD8fnA8S54JATiFUA==", + "optional": true, + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + }, + "funding": { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + }, "node_modules/fastest-levenshtein": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", @@ -11999,6 +13091,12 @@ "node": ">= 0.6" } }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, "node_modules/meow": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", @@ -12199,6 +13297,63 @@ "node": ">=10" } }, + "node_modules/mongodb": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.12.0.tgz", + "integrity": "sha512-ssWod7DqVE4faluZESdOqYhV1BI5CQA5c31sr+zxDLJDBX9EA5VJLo8RNSItPTwxExmuGn/T6MbETQWjywNehA==", + "dependencies": { + "bson": "^4.7.0", + "mongodb-connection-string-url": "^2.5.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">=12.9.0" + }, + "optionalDependencies": { + "@aws-sdk/credential-providers": "^3.186.0", + "saslprep": "^1.0.3" + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.4.tgz", + "integrity": "sha512-SeAxuWs0ez3iI3vvmLk/j2y+zHwigTDKQhtdxTgt5ZCOQQS5+HW4g45/Xw5vzzbn7oQXCNQ24Z40AkJsizEy7w==", + "dependencies": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/mqemitter": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/mqemitter/-/mqemitter-4.5.0.tgz", @@ -14482,6 +15637,18 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "node_modules/saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/sass": { "version": "1.42.1", "resolved": "https://registry.npmjs.org/sass/-/sass-1.42.1.tgz", @@ -14809,6 +15976,15 @@ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "optional": true, + "dependencies": { + "memory-pager": "^1.0.2" + } + }, "node_modules/spawn-command": { "version": "0.0.2-1", "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", @@ -15069,6 +16245,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "optional": true + }, "node_modules/style-search": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", @@ -16878,6 +18060,893 @@ } } }, + "@aws-crypto/ie11-detection": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-2.0.2.tgz", + "integrity": "sha512-5XDMQY98gMAf/WRTic5G++jfmS/VLM0rwpiOpaainKi4L0nqWMSB1SzsrEG5rjFZGYN6ZAefO+/Yta2dFM0kMw==", + "optional": true, + "requires": { + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + } + } + }, + "@aws-crypto/sha256-browser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz", + "integrity": "sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A==", + "optional": true, + "requires": { + "@aws-crypto/ie11-detection": "^2.0.0", + "@aws-crypto/sha256-js": "^2.0.0", + "@aws-crypto/supports-web-crypto": "^2.0.0", + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + } + } + }, + "@aws-crypto/sha256-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz", + "integrity": "sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig==", + "optional": true, + "requires": { + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + } + } + }, + "@aws-crypto/supports-web-crypto": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.2.tgz", + "integrity": "sha512-6mbSsLHwZ99CTOOswvCRP3C+VCWnzBf+1SnbWxzzJ9lR0mA0JnY2JEAhp8rqmTE0GPFy88rrM27ffgp62oErMQ==", + "optional": true, + "requires": { + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + } + } + }, + "@aws-crypto/util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-2.0.2.tgz", + "integrity": "sha512-Lgu5v/0e/BcrZ5m/IWqzPUf3UYFTy/PpeED+uc9SWUR1iZQL8XXbGQg10UfllwwBryO3hFF5dizK+78aoXC1eA==", + "optional": true, + "requires": { + "@aws-sdk/types": "^3.110.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + } + } + }, + "@aws-sdk/abort-controller": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.212.0.tgz", + "integrity": "sha512-mXeBSuDi0Fpul4zk9VH2z0VKN+/+6hyJ9SXSRhn3LpMcyj3GeZtXyTB2wCsfxXYGxeGbV+bIzbPbhZza6wNfWg==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/client-cognito-identity": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.212.0.tgz", + "integrity": "sha512-0yt6lyYUYng5Nnn5EyTnoVZuVXD3r6eaDjrIZQTc8yhNkbTg+eRLlGnJVkrn/O9NPRS52XqxLCbJc/Wk2SSH+w==", + "optional": true, + "requires": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/client-sts": "3.212.0", + "@aws-sdk/config-resolver": "3.212.0", + "@aws-sdk/credential-provider-node": "3.212.0", + "@aws-sdk/fetch-http-handler": "3.212.0", + "@aws-sdk/hash-node": "3.212.0", + "@aws-sdk/invalid-dependency": "3.212.0", + "@aws-sdk/middleware-content-length": "3.212.0", + "@aws-sdk/middleware-endpoint": "3.212.0", + "@aws-sdk/middleware-host-header": "3.212.0", + "@aws-sdk/middleware-logger": "3.212.0", + "@aws-sdk/middleware-recursion-detection": "3.212.0", + "@aws-sdk/middleware-retry": "3.212.0", + "@aws-sdk/middleware-serde": "3.212.0", + "@aws-sdk/middleware-signing": "3.212.0", + "@aws-sdk/middleware-stack": "3.212.0", + "@aws-sdk/middleware-user-agent": "3.212.0", + "@aws-sdk/node-config-provider": "3.212.0", + "@aws-sdk/node-http-handler": "3.212.0", + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/smithy-client": "3.212.0", + "@aws-sdk/types": "3.212.0", + "@aws-sdk/url-parser": "3.212.0", + "@aws-sdk/util-base64": "3.208.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.212.0", + "@aws-sdk/util-defaults-mode-node": "3.212.0", + "@aws-sdk/util-endpoints": "3.212.0", + "@aws-sdk/util-user-agent-browser": "3.212.0", + "@aws-sdk/util-user-agent-node": "3.212.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.208.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/client-sso": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.212.0.tgz", + "integrity": "sha512-b9lFI8Uz6YxIzAlS2uq62y5fX097lwcdkiq2N8YN2U7YgHQaKMIFnV8ZqkDdhZi2eUKwhSdUZzQy0tF6en2Ubg==", + "optional": true, + "requires": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.212.0", + "@aws-sdk/fetch-http-handler": "3.212.0", + "@aws-sdk/hash-node": "3.212.0", + "@aws-sdk/invalid-dependency": "3.212.0", + "@aws-sdk/middleware-content-length": "3.212.0", + "@aws-sdk/middleware-endpoint": "3.212.0", + "@aws-sdk/middleware-host-header": "3.212.0", + "@aws-sdk/middleware-logger": "3.212.0", + "@aws-sdk/middleware-recursion-detection": "3.212.0", + "@aws-sdk/middleware-retry": "3.212.0", + "@aws-sdk/middleware-serde": "3.212.0", + "@aws-sdk/middleware-stack": "3.212.0", + "@aws-sdk/middleware-user-agent": "3.212.0", + "@aws-sdk/node-config-provider": "3.212.0", + "@aws-sdk/node-http-handler": "3.212.0", + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/smithy-client": "3.212.0", + "@aws-sdk/types": "3.212.0", + "@aws-sdk/url-parser": "3.212.0", + "@aws-sdk/util-base64": "3.208.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.212.0", + "@aws-sdk/util-defaults-mode-node": "3.212.0", + "@aws-sdk/util-endpoints": "3.212.0", + "@aws-sdk/util-user-agent-browser": "3.212.0", + "@aws-sdk/util-user-agent-node": "3.212.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.208.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/client-sso-oidc": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.212.0.tgz", + "integrity": "sha512-Co0AU+y9KEAZUraT36ttFZlmwARsr82q2nQji5E8zg3zlUHtqGvMJqxArudz3iOb2E9WRi75MwAQmLO2xEk45A==", + "optional": true, + "requires": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.212.0", + "@aws-sdk/fetch-http-handler": "3.212.0", + "@aws-sdk/hash-node": "3.212.0", + "@aws-sdk/invalid-dependency": "3.212.0", + "@aws-sdk/middleware-content-length": "3.212.0", + "@aws-sdk/middleware-endpoint": "3.212.0", + "@aws-sdk/middleware-host-header": "3.212.0", + "@aws-sdk/middleware-logger": "3.212.0", + "@aws-sdk/middleware-recursion-detection": "3.212.0", + "@aws-sdk/middleware-retry": "3.212.0", + "@aws-sdk/middleware-serde": "3.212.0", + "@aws-sdk/middleware-stack": "3.212.0", + "@aws-sdk/middleware-user-agent": "3.212.0", + "@aws-sdk/node-config-provider": "3.212.0", + "@aws-sdk/node-http-handler": "3.212.0", + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/smithy-client": "3.212.0", + "@aws-sdk/types": "3.212.0", + "@aws-sdk/url-parser": "3.212.0", + "@aws-sdk/util-base64": "3.208.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.212.0", + "@aws-sdk/util-defaults-mode-node": "3.212.0", + "@aws-sdk/util-endpoints": "3.212.0", + "@aws-sdk/util-user-agent-browser": "3.212.0", + "@aws-sdk/util-user-agent-node": "3.212.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.208.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/client-sts": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.212.0.tgz", + "integrity": "sha512-Zl8665HT1Do/yfiFEtqEjLkHSkAo5Isg2QU65Kbknj2W2DFj92a1cRvMlHanDLxlpuoryGP9/u1efYZeWeIdlg==", + "optional": true, + "requires": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.212.0", + "@aws-sdk/credential-provider-node": "3.212.0", + "@aws-sdk/fetch-http-handler": "3.212.0", + "@aws-sdk/hash-node": "3.212.0", + "@aws-sdk/invalid-dependency": "3.212.0", + "@aws-sdk/middleware-content-length": "3.212.0", + "@aws-sdk/middleware-endpoint": "3.212.0", + "@aws-sdk/middleware-host-header": "3.212.0", + "@aws-sdk/middleware-logger": "3.212.0", + "@aws-sdk/middleware-recursion-detection": "3.212.0", + "@aws-sdk/middleware-retry": "3.212.0", + "@aws-sdk/middleware-sdk-sts": "3.212.0", + "@aws-sdk/middleware-serde": "3.212.0", + "@aws-sdk/middleware-signing": "3.212.0", + "@aws-sdk/middleware-stack": "3.212.0", + "@aws-sdk/middleware-user-agent": "3.212.0", + "@aws-sdk/node-config-provider": "3.212.0", + "@aws-sdk/node-http-handler": "3.212.0", + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/smithy-client": "3.212.0", + "@aws-sdk/types": "3.212.0", + "@aws-sdk/url-parser": "3.212.0", + "@aws-sdk/util-base64": "3.208.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.212.0", + "@aws-sdk/util-defaults-mode-node": "3.212.0", + "@aws-sdk/util-endpoints": "3.212.0", + "@aws-sdk/util-user-agent-browser": "3.212.0", + "@aws-sdk/util-user-agent-node": "3.212.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.208.0", + "fast-xml-parser": "4.0.11", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/config-resolver": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.212.0.tgz", + "integrity": "sha512-hIP/Izpv6GCsDTnHCd/X9Ro7Mw5le+gr2VbkZHWR0c8+3xZWp8N5S0QnUBogF3Dv2KwPbmHP+bs/vqqo3miUjQ==", + "optional": true, + "requires": { + "@aws-sdk/signature-v4": "3.212.0", + "@aws-sdk/types": "3.212.0", + "@aws-sdk/util-config-provider": "3.208.0", + "@aws-sdk/util-middleware": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-cognito-identity": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.212.0.tgz", + "integrity": "sha512-0BEML2iBGXyFnD1HNQ28B+9Ev7NGcu9itYcJue5mBkCOka3mW55xAPYwp3es0rhQ1oeBziqCjHIIRsp7wGIvsQ==", + "optional": true, + "requires": { + "@aws-sdk/client-cognito-identity": "3.212.0", + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-env": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.212.0.tgz", + "integrity": "sha512-HNYoqetLqTxwl0Grl4ez8Dx3I3hJfskxH2PTHYI1/iAqrY/gSB2oBOusvBeksbYrScnQM2IGqEcMJ4lzGLOH+w==", + "optional": true, + "requires": { + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-imds": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.212.0.tgz", + "integrity": "sha512-Bg7cX2N5pJ//ft3Y8HWtpDSEMMgRTNMaNlIvTlDbAKYp7HBZRWSf9ZJnz2slT7qbyaJyRP5pSJC4XRm83g4leA==", + "optional": true, + "requires": { + "@aws-sdk/node-config-provider": "3.212.0", + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/types": "3.212.0", + "@aws-sdk/url-parser": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-ini": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.212.0.tgz", + "integrity": "sha512-H7qRIP8qV7tRrCSJx2p5oQVMJASQWZUmi4l699hDMejmCO/m4pUMQFmWn2FXtZv8gTfzlkmp3wMixD5jnfL7pw==", + "optional": true, + "requires": { + "@aws-sdk/credential-provider-env": "3.212.0", + "@aws-sdk/credential-provider-imds": "3.212.0", + "@aws-sdk/credential-provider-sso": "3.212.0", + "@aws-sdk/credential-provider-web-identity": "3.212.0", + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/shared-ini-file-loader": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-node": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.212.0.tgz", + "integrity": "sha512-T44hoU3GCYHS+4GDVs7S/v2bBHmmYpnPayQsYXhDElQKXP0cFzQ78F8et4IU5lM94hwK+ISRQPrKaq4p77evkw==", + "optional": true, + "requires": { + "@aws-sdk/credential-provider-env": "3.212.0", + "@aws-sdk/credential-provider-imds": "3.212.0", + "@aws-sdk/credential-provider-ini": "3.212.0", + "@aws-sdk/credential-provider-process": "3.212.0", + "@aws-sdk/credential-provider-sso": "3.212.0", + "@aws-sdk/credential-provider-web-identity": "3.212.0", + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/shared-ini-file-loader": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-process": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.212.0.tgz", + "integrity": "sha512-bGaVKSm5Tf5VZtlM2V6k+M9nSKzlb14ldCcH0PGGMaK/dqnEJDVSxXPu3fWyomaxbLt7Is3AUMh6L2bq3kuXyA==", + "optional": true, + "requires": { + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/shared-ini-file-loader": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-sso": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.212.0.tgz", + "integrity": "sha512-OGatVUnWLp7PePs2H2RyYmTrwurl0tAfW+LWfVAPgYyvi2RQgTmSK5LJ3pXKxz3TvaSHkCvsT0NWNqdWY+iKWQ==", + "optional": true, + "requires": { + "@aws-sdk/client-sso": "3.212.0", + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/shared-ini-file-loader": "3.212.0", + "@aws-sdk/token-providers": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-web-identity": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.212.0.tgz", + "integrity": "sha512-zPF3KiVT14aeu4cRyEUelAJEAzFp++9ULLigQXhKBbFYaiOZMAHKRASO/WUK1ixYBC+ax4G1rbihLfQimXMtVA==", + "optional": true, + "requires": { + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-providers": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.212.0.tgz", + "integrity": "sha512-ea1KFqSpGsXcAD5IdDxKsWimLQ2/HiKQnlJUpXyDEP1Sk3if/Gtnn17Hk6GgXByaqppDqful9Lu9esxc3mNDkg==", + "optional": true, + "requires": { + "@aws-sdk/client-cognito-identity": "3.212.0", + "@aws-sdk/client-sso": "3.212.0", + "@aws-sdk/client-sts": "3.212.0", + "@aws-sdk/credential-provider-cognito-identity": "3.212.0", + "@aws-sdk/credential-provider-env": "3.212.0", + "@aws-sdk/credential-provider-imds": "3.212.0", + "@aws-sdk/credential-provider-ini": "3.212.0", + "@aws-sdk/credential-provider-node": "3.212.0", + "@aws-sdk/credential-provider-process": "3.212.0", + "@aws-sdk/credential-provider-sso": "3.212.0", + "@aws-sdk/credential-provider-web-identity": "3.212.0", + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/shared-ini-file-loader": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/fetch-http-handler": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.212.0.tgz", + "integrity": "sha512-u7ehnpAVN8D0asWhyQitNVf1j5LdzCuxP/14Dx8+PvrUdZxQNVq2FVB+tkQvOs9pDHE/oROjVo7GNO42bmkitA==", + "optional": true, + "requires": { + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/querystring-builder": "3.212.0", + "@aws-sdk/types": "3.212.0", + "@aws-sdk/util-base64": "3.208.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/hash-node": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.212.0.tgz", + "integrity": "sha512-pwZkz83EvXHGURBYjBYS7Cr+gSr6pi23RDlP/aXREjJGs9QUQyixBh78oX5a3p6bB8JeizPcZS1dXKJ9OKCHAw==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.212.0", + "@aws-sdk/util-buffer-from": "3.208.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/invalid-dependency": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.212.0.tgz", + "integrity": "sha512-zKVx+4Silmsr5Nvv9aGL5FmuHvdP9Dcvy/22fmWa3RRvCSNRpvFDeXtcDB5FvNpbWbO+qJyGj/OeqB/XejV13w==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/is-array-buffer": { + "version": "3.201.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.201.0.tgz", + "integrity": "sha512-UPez5qLh3dNgt0DYnPD/q0mVJY84rA17QE26hVNOW3fAji8W2wrwrxdacWOxyXvlxWsVRcKmr+lay1MDqpAMfg==", + "optional": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-content-length": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.212.0.tgz", + "integrity": "sha512-gR6jeKGYNYqNLFRcuX3vv5PN1POLlB/9LDVYl3k/NNaCg8L1EKqqEtG84Gmn1AXH+2s6zMNs+gt5ygeqZQe2Cw==", + "optional": true, + "requires": { + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-endpoint": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.212.0.tgz", + "integrity": "sha512-6ntKYehjxLun8hPXIPHSI2pGr/pHuQ6jcyO5wBq1kydSIIGiESl8H84DEt+yRvroCiYgbU+I8cACnRE0uv0bLA==", + "optional": true, + "requires": { + "@aws-sdk/middleware-serde": "3.212.0", + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/signature-v4": "3.212.0", + "@aws-sdk/types": "3.212.0", + "@aws-sdk/url-parser": "3.212.0", + "@aws-sdk/util-config-provider": "3.208.0", + "@aws-sdk/util-middleware": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-host-header": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.212.0.tgz", + "integrity": "sha512-W00mxzK2OXy91Ncxri3cZJIxxSBzE72bX8FDa3xgC0ujbj49lw+rol6aV/Fw8Nda3CZ5xxulvJ4sXHt2eOtXSA==", + "optional": true, + "requires": { + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-logger": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.212.0.tgz", + "integrity": "sha512-BSQqzKp4abf2wXvJEstB0zdr68yJMZXA14h53eSvtzykZLfvvFixR1nyVgKq+PKm1VaJ2fuZr10tjWRVQg1pYA==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-recursion-detection": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.212.0.tgz", + "integrity": "sha512-ATHPNtnd7nlm0jRXvr/c2xbxcna5ZGXEWTM5tUjIflOK9Rl3PCRce/hoQnHs45kv4l3daC53sPuRvTQ8O7K67A==", + "optional": true, + "requires": { + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-retry": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.212.0.tgz", + "integrity": "sha512-lIi/JkYXalY6CYw2dJbQ/Xo64Ah3wfJ63BMTFQHQk1htnIDBnLd9a6ng96JgXJQMSO4ZEqRW/709NBlC157hbw==", + "optional": true, + "requires": { + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/service-error-classification": "3.212.0", + "@aws-sdk/types": "3.212.0", + "@aws-sdk/util-middleware": "3.212.0", + "tslib": "^2.3.1", + "uuid": "^8.3.2" + } + }, + "@aws-sdk/middleware-sdk-sts": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.212.0.tgz", + "integrity": "sha512-IcMfno3RJEXXS1Ch5lY0hgdSkGn9XW9m3XoKu1DjhEqR34ENDzvUmEN2PimIcZnz+9W59CU9UAMs/amRhwhlmw==", + "optional": true, + "requires": { + "@aws-sdk/middleware-signing": "3.212.0", + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/signature-v4": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-serde": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.212.0.tgz", + "integrity": "sha512-KwRpwi/8vNDV0l8uvu1DPk0q3WR2pnp9VtUNZ6u9zU54hvVL+Z1PtQh/WfzJzNvtCHvtc/gVMs3Daqb/Ecrm5Q==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-signing": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.212.0.tgz", + "integrity": "sha512-pth95aEsxqQO0lrRAHZNVI5hrMtA14nEUPFjiLaXtOssZrjD6mBzXPRy1nKob6XWXOp/Vy0mnyI/FT/NnMflFw==", + "optional": true, + "requires": { + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/signature-v4": "3.212.0", + "@aws-sdk/types": "3.212.0", + "@aws-sdk/util-middleware": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-stack": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.212.0.tgz", + "integrity": "sha512-AZ5f9ChioHsxGUojlzqI57sYyM9oW9SN/7AuiNafXU02j9jw7DKiYRn43lRUhgYnb/REhedHA5SsqIBF5eut/w==", + "optional": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-user-agent": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.212.0.tgz", + "integrity": "sha512-CVSY2kt+RaP6CVqSKp+1sPUAQFusTLZLFHVK0YPFzcIySJMqJC0l0/BzLhaIf5Bs3JHa/VGym8oDpp881yimHA==", + "optional": true, + "requires": { + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/node-config-provider": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.212.0.tgz", + "integrity": "sha512-8AfOEDPe/D9DccUgredYg07GH2jrw07FCTyA1Pug5Hgbas7w14zbhLyQB0l6gcOJEuh34e/7oV9hN3s1hctnJg==", + "optional": true, + "requires": { + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/shared-ini-file-loader": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/node-http-handler": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.212.0.tgz", + "integrity": "sha512-wt4jK8HeYMjuQbWB4+Xt/nGyTvIwtLhm0SHcRgcoTsUjEiaPio/xNanyBWhPSUM87jpyG6bQMCzUtDbPeLqhkA==", + "optional": true, + "requires": { + "@aws-sdk/abort-controller": "3.212.0", + "@aws-sdk/protocol-http": "3.212.0", + "@aws-sdk/querystring-builder": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/property-provider": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.212.0.tgz", + "integrity": "sha512-NMCIABfw3VZ7Vtn6iSeZRuSToRLxIHq0eGoUgO7T4fUp3U5vqYt28A5UY65KB9ifUPpNSllEG3EhEqs5qFw5+w==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/protocol-http": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.212.0.tgz", + "integrity": "sha512-EhkLPQC2TeqC3RGKfW87zoKj/gsWS4JJlRl5U6KMXejBMKQPzuopUiF9gQJ2iuou9BT8B+RsG2qgSHzrxp6lKw==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/querystring-builder": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.212.0.tgz", + "integrity": "sha512-4CaQstj0Aki3vc96Z0d481raNagmy9gnJtIv6yveATJ/57lk/RUv2WtTUOzpFKv/oNx5khix2tpbRqK9nCUxVg==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.212.0", + "@aws-sdk/util-uri-escape": "3.201.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/querystring-parser": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.212.0.tgz", + "integrity": "sha512-ttarfAHMOYKgFHeBdgXID9SlNS7erH4gavN3fvf5R1RliCytUnzsTTvqa7CmVBFy0Xc/2yA+/6FFDKlOsS8tRg==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/service-error-classification": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.212.0.tgz", + "integrity": "sha512-jCv+uuFq4yGjP8FoCmoOGqnKNHHREDOFf7OxVSCluGMg2LXHfGxxqkqNFJlT3p+QdEp323GSWFY+PUsMJy7BLQ==", + "optional": true + }, + "@aws-sdk/shared-ini-file-loader": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.212.0.tgz", + "integrity": "sha512-wKWqCA1oU57V//D3uAjQKGGj6rm6YKH4pWIU38Ypb/xNafiB7C51KtwpQVsS2HCNfmGrD03sGLKEZCSy9jvIlA==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/signature-v4": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.212.0.tgz", + "integrity": "sha512-tCrzWA60AWGDRmY9OyUrG0BzD+dDbAtHSqcY2LchGHOlMmv501/WXBIvn9fDfKp8GJj6Lb3VcG9cY1jCuKKcmg==", + "optional": true, + "requires": { + "@aws-sdk/is-array-buffer": "3.201.0", + "@aws-sdk/types": "3.212.0", + "@aws-sdk/util-hex-encoding": "3.201.0", + "@aws-sdk/util-middleware": "3.212.0", + "@aws-sdk/util-uri-escape": "3.201.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/smithy-client": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.212.0.tgz", + "integrity": "sha512-dQUlM/eltp9JVEVQWGxU/6Or8jGQWK5mgmbP+BUHkfDgoMIeOFksIYon211KhE18EjoGgav1mr4/HHlcnekI2w==", + "optional": true, + "requires": { + "@aws-sdk/middleware-stack": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/token-providers": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.212.0.tgz", + "integrity": "sha512-pTe4PM14b58nbfvIP9B0zW5dUIxEb/ALVzSLuxpJwJRI51E5QZmXJMT3P77MUd6niqKw0cRrnEHIgznD67JHSg==", + "optional": true, + "requires": { + "@aws-sdk/client-sso-oidc": "3.212.0", + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/shared-ini-file-loader": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/types": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.212.0.tgz", + "integrity": "sha512-uXBXB1PBYxfPyIvgmjbGdYBlS7rdeMG58uCaY3Ga5scY2xQnj7HU7knATKuIKk2DH1lLT0inqtsRVJS25zRK5w==", + "optional": true + }, + "@aws-sdk/url-parser": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.212.0.tgz", + "integrity": "sha512-mTUQQRcVYqur7aHDuDMDKxN7Yr/5kIZB1RtMjIwtimTcf7TZaskN6sLTPo42YgASM6XQQhJECZaOE7Ow16i6Mg==", + "optional": true, + "requires": { + "@aws-sdk/querystring-parser": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-base64": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.208.0.tgz", + "integrity": "sha512-PQniZph5A6N7uuEOQi+1hnMz/FSOK/8kMFyFO+4DgA1dZ5pcKcn5wiFwHkcTb/BsgVqQa3Jx0VHNnvhlS8JyTg==", + "optional": true, + "requires": { + "@aws-sdk/util-buffer-from": "3.208.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-body-length-browser": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.188.0.tgz", + "integrity": "sha512-8VpnwFWXhnZ/iRSl9mTf+VKOX9wDE8QtN4bj9pBfxwf90H1X7E8T6NkiZD3k+HubYf2J94e7DbeHs7fuCPW5Qg==", + "optional": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-body-length-node": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.208.0.tgz", + "integrity": "sha512-3zj50e5g7t/MQf53SsuuSf0hEELzMtD8RX8C76f12OSRo2Bca4FLLYHe0TZbxcfQHom8/hOaeZEyTyMogMglqg==", + "optional": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-buffer-from": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.208.0.tgz", + "integrity": "sha512-7L0XUixNEFcLUGPeBF35enCvB9Xl+K6SQsmbrPk1P3mlV9mguWSDQqbOBwY1Ir0OVbD6H/ZOQU7hI/9RtRI0Zw==", + "optional": true, + "requires": { + "@aws-sdk/is-array-buffer": "3.201.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-config-provider": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.208.0.tgz", + "integrity": "sha512-DSRqwrERUsT34ug+anlMBIFooBEGwM8GejC7q00Y/9IPrQy50KnG5PW2NiTjuLKNi7pdEOlwTSEocJE15eDZIg==", + "optional": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-defaults-mode-browser": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.212.0.tgz", + "integrity": "sha512-tAs9+/lTtil545kyCqy7qjnnCq4S2S+4kBhHXgwRNPT85Nx5XCEEheWH6VZ45YufRaiRNFfX0n+odDwzDaev6g==", + "optional": true, + "requires": { + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/types": "3.212.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-defaults-mode-node": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.212.0.tgz", + "integrity": "sha512-fNl1IDqn1mAoiM2Xv5KGAczXHy2+tPlouunIEePnQKTq0pzT3WqR13qleTfu1EcEz1oyGnDRoK91aP61Jxh3OQ==", + "optional": true, + "requires": { + "@aws-sdk/config-resolver": "3.212.0", + "@aws-sdk/credential-provider-imds": "3.212.0", + "@aws-sdk/node-config-provider": "3.212.0", + "@aws-sdk/property-provider": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-endpoints": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.212.0.tgz", + "integrity": "sha512-/ADfvrZwhzUphre3pliO290IFOflvHyBBEaKn9WfRQ5veZxl+CuOEjxkwTJfHUrfWbh+xpCuOewWVLCptmoC4A==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-hex-encoding": { + "version": "3.201.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.201.0.tgz", + "integrity": "sha512-7t1vR1pVxKx0motd3X9rI3m/xNp78p3sHtP5yo4NP4ARpxyJ0fokBomY8ScaH2D/B+U5o9ARxldJUdMqyBlJcA==", + "optional": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-locate-window": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.208.0.tgz", + "integrity": "sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg==", + "optional": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-middleware": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.212.0.tgz", + "integrity": "sha512-621glUpwVKJRB8QxRG/5cAKIq8LKPdl/l8CS7vDg34f6j9BJmP5YVPcTzzQ6iskQAblkndiBAnSjp7kGujxuGg==", + "optional": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-uri-escape": { + "version": "3.201.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.201.0.tgz", + "integrity": "sha512-TeTWbGx4LU2c5rx0obHeDFeO9HvwYwQtMh1yniBz00pQb6Qt6YVOETVQikRZ+XRQwEyCg/dA375UplIpiy54mA==", + "optional": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-user-agent-browser": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.212.0.tgz", + "integrity": "sha512-xXz16ge9NdKCwlD+952rfvgHdDe+pbCavbVMNdR60joHq5KYGR1e02l0LRNVe48/C9dAo2ezeJ+YnTPaw3Yl8Q==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.212.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-user-agent-node": { + "version": "3.212.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.212.0.tgz", + "integrity": "sha512-HE8VwtMtTXGkwUjryNpy+qyg7wrQxCGplDP59yo0YVn86B5f9nhRi/2jRAsKo9yf94iP7PXAz65TY9+KJC8UIg==", + "optional": true, + "requires": { + "@aws-sdk/node-config-provider": "3.212.0", + "@aws-sdk/types": "3.212.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-utf8-browser": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.188.0.tgz", + "integrity": "sha512-jt627x0+jE+Ydr9NwkFstg3cUvgWh56qdaqAMDsqgRlKD21md/6G226z/Qxl7lb1VEW2LlmCx43ai/37Qwcj2Q==", + "optional": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-utf8-node": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.208.0.tgz", + "integrity": "sha512-jKY87Acv0yWBdFxx6bveagy5FYjz+dtV8IPT7ay1E2WPWH1czoIdMAkc8tSInK31T6CRnHWkLZ1qYwCbgRfERQ==", + "optional": true, + "requires": { + "@aws-sdk/util-buffer-from": "3.208.0", + "tslib": "^2.3.1" + } + }, "@azure/abort-controller": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", @@ -19581,6 +21650,20 @@ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, + "@types/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" + }, + "@types/whatwg-url": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "requires": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, "@types/yargs": { "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", @@ -20506,6 +22589,12 @@ "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", "dev": true }, + "bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "optional": true + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -20569,6 +22658,14 @@ "node-int64": "^0.4.0" } }, + "bson": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.0.tgz", + "integrity": "sha512-VrlEE4vuiO1WTpfof4VmaVolCVYkYTgB9iWgYNOrVlnifpME/06fhFRmONgBhClD5pFC1t9ZWqFUQEQAzY43bA==", + "requires": { + "buffer": "^5.6.0" + } + }, "buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -22622,6 +24719,15 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "fast-xml-parser": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.11.tgz", + "integrity": "sha512-4aUg3aNRR/WjQAcpceODG1C3x3lFANXRo8+1biqfieHmg9pyMt7qB4lQV/Ta6sJCTbA5vfD8fnA8S54JATiFUA==", + "optional": true, + "requires": { + "strnum": "^1.0.5" + } + }, "fastest-levenshtein": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", @@ -25742,6 +27848,12 @@ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" }, + "memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, "meow": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", @@ -25884,6 +27996,51 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" }, + "mongodb": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.12.0.tgz", + "integrity": "sha512-ssWod7DqVE4faluZESdOqYhV1BI5CQA5c31sr+zxDLJDBX9EA5VJLo8RNSItPTwxExmuGn/T6MbETQWjywNehA==", + "requires": { + "@aws-sdk/credential-providers": "^3.186.0", + "bson": "^4.7.0", + "mongodb-connection-string-url": "^2.5.4", + "saslprep": "^1.0.3", + "socks": "^2.7.1" + } + }, + "mongodb-connection-string-url": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.4.tgz", + "integrity": "sha512-SeAxuWs0ez3iI3vvmLk/j2y+zHwigTDKQhtdxTgt5ZCOQQS5+HW4g45/Xw5vzzbn7oQXCNQ24Z40AkJsizEy7w==", + "requires": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + }, + "dependencies": { + "tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "requires": { + "punycode": "^2.1.1" + } + }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" + }, + "whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "requires": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + } + } + } + }, "mqemitter": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/mqemitter/-/mqemitter-4.5.0.tgz", @@ -27611,6 +29768,15 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "requires": { + "sparse-bitfield": "^3.0.3" + } + }, "sass": { "version": "1.42.1", "resolved": "https://registry.npmjs.org/sass/-/sass-1.42.1.tgz", @@ -27873,6 +30039,15 @@ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, + "sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "optional": true, + "requires": { + "memory-pager": "^1.0.2" + } + }, "spawn-command": { "version": "0.0.2-1", "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", @@ -28069,6 +30244,12 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, + "strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "optional": true + }, "style-search": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", diff --git a/package.json b/package.json index 6166d9e9d..cb7db40f9 100644 --- a/package.json +++ b/package.json @@ -93,6 +93,7 @@ "jsonwebtoken": "~8.5.1", "jwt-decode": "~3.1.2", "limiter": "~2.1.0", + "mongodb": "^4.12.0", "mqtt": "~4.3.7", "mssql": "~8.1.4", "node-cloudflared-tunnel": "~1.0.9", diff --git a/server/model/monitor.js b/server/model/monitor.js index 51c6c1812..0a8a6ea49 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -3,7 +3,7 @@ const dayjs = require("dayjs"); const axios = require("axios"); const { Prometheus } = require("../prometheus"); const { log, UP, DOWN, PENDING, MAINTENANCE, flipStatus, TimeLogger } = require("../../src/util"); -const { tcping, ping, dnsResolve, checkCertificate, checkStatusCode, getTotalClientInRoom, setting, mssqlQuery, postgresQuery, mqttAsync, setSetting, httpNtlm, radius, grpcQuery } = require("../util-server"); +const { tcping, ping, dnsResolve, checkCertificate, checkStatusCode, getTotalClientInRoom, setting, mssqlQuery, postgresQuery, mongodbPing, mqttAsync, setSetting, httpNtlm, radius, grpcQuery } = require("../util-server"); const { R } = require("redbean-node"); const { BeanModel } = require("redbean-node/dist/bean-model"); const { Notification } = require("../notification"); @@ -578,6 +578,14 @@ class Monitor extends BeanModel { await postgresQuery(this.databaseConnectionString, this.databaseQuery); + bean.msg = ""; + bean.status = UP; + bean.ping = dayjs().valueOf() - startTime; + } else if (this.type === "mongodb") { + let startTime = dayjs().valueOf(); + + await mongodbPing(this.databaseConnectionString); + bean.msg = ""; bean.status = UP; bean.ping = dayjs().valueOf() - startTime; diff --git a/server/util-server.js b/server/util-server.js index 8f242b7a2..9b55864e9 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -13,6 +13,7 @@ const { badgeConstants } = require("./config"); const mssql = require("mssql"); const { Client } = require("pg"); const postgresConParse = require("pg-connection-string").parse; +const { MongoClient } = require("mongodb"); const { NtlmClient } = require("axios-ntlm"); const { Settings } = require("./settings"); const grpc = require("@grpc/grpc-js"); @@ -294,6 +295,27 @@ exports.postgresQuery = function (connectionString, query) { }); }; +/** + * Connect to and Ping a MongoDB database + * @param {string} connectionString The database connection string + * @returns {Promise<(string[]|Object[]|Object)>} + */ +exports.mongodbPing = async function (connectionString) { + let client, db; + try { + client = await MongoClient.connect(connectionString, {useNewUrlParser: true}) + db = client.db(); + dbping = await db.command({ ping: 1 }); + if (dbping["ok"] === 1) { + return 'UP' + } + throw Error("failed"); + } + catch(err){ console.error(err); } + finally{ client.close(); } +} + + /** * Query radius server * @param {string} hostname Hostname of radius server diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 88e5aef9a..ed606bde4 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -54,6 +54,9 @@ + @@ -262,6 +265,17 @@ + + +
From 2103edb6044edc635e620a6c2ecb3d3ba33546c3 Mon Sep 17 00:00:00 2001 From: rmarops Date: Wed, 16 Nov 2022 22:21:15 -0500 Subject: [PATCH 02/73] moved client close out of finally block and fixed linting errors --- server/util-server.js | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/server/util-server.js b/server/util-server.js index 9b55864e9..ef15f7c3b 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -301,20 +301,23 @@ exports.postgresQuery = function (connectionString, query) { * @returns {Promise<(string[]|Object[]|Object)>} */ exports.mongodbPing = async function (connectionString) { - let client, db; - try { - client = await MongoClient.connect(connectionString, {useNewUrlParser: true}) - db = client.db(); - dbping = await db.command({ ping: 1 }); - if (dbping["ok"] === 1) { - return 'UP' - } - throw Error("failed"); - } - catch(err){ console.error(err); } - finally{ client.close(); } -} + let client; + try { + client = await MongoClient.connect(connectionString, { useNewUrlParser: true }); + let db = client.db(); + let dbping = await db.command({ ping: 1 }); + await client.close(); + if (dbping["ok"] === 1) { + return "UP"; + } else { + throw Error("failed"); + } + } catch (err) { + console.error(err); + throw Error(err) + } +}; /** * Query radius server From 0e30843a75fbe8194d224f0e196fb7507e4fd5ee Mon Sep 17 00:00:00 2001 From: rmarops Date: Wed, 16 Nov 2022 22:27:18 -0500 Subject: [PATCH 03/73] fixed lint check missing semicolon --- server/util-server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/util-server.js b/server/util-server.js index ef15f7c3b..b96a1f4eb 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -315,7 +315,7 @@ exports.mongodbPing = async function (connectionString) { } } catch (err) { console.error(err); - throw Error(err) + throw Error(err); } }; From c196c34840f39bb97ba094dc8f642d6f77ce84e1 Mon Sep 17 00:00:00 2001 From: David Twigger Date: Thu, 5 Jan 2023 08:57:48 +0100 Subject: [PATCH 04/73] Add mqtt, mqtts, ws and wss protocols to the mqtt monitor --- server/util-server.js | 9 +++++---- src/pages/EditMonitor.vue | 3 ++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/server/util-server.js b/server/util-server.js index ffd171b40..fb96abe72 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -135,7 +135,7 @@ exports.mqttAsync = function (hostname, topic, okMessage, options = {}) { const { port, username, password, interval = 20 } = options; // Adds MQTT protocol to the hostname if not already present - if (!/^(?:http|mqtt)s?:\/\//.test(hostname)) { + if (!/^(?:http|mqtt|ws)s?:\/\//.test(hostname)) { hostname = "mqtt://" + hostname; } @@ -145,10 +145,11 @@ exports.mqttAsync = function (hostname, topic, okMessage, options = {}) { reject(new Error("Timeout")); }, interval * 1000 * 0.8); - log.debug("mqtt", "MQTT connecting"); + const mqttUrl = `${hostname}:${port}` + + log.debug("mqtt", `MQTT connecting to ${mqttUrl}`); - let client = mqtt.connect(hostname, { - port, + let client = mqtt.connect(mqttUrl, { username, password }); diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index c9d5ad2f1..315d1e6c2 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -604,7 +604,8 @@ export default { // Source: https://digitalfortress.tech/tips/top-15-commonly-used-regex/ ipRegexPattern: "((^\\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\\s*$)|(^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$))", // Source: https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address - hostnameRegexPattern: "^(([a-zA-Z0-9_]|[a-zA-Z0-9_][a-zA-Z0-9\\-_]*[a-zA-Z0-9_])\\.)*([A-Za-z0-9_]|[A-Za-z0-9_][A-Za-z0-9\\-_]*[A-Za-z0-9_])$" + // Modified to accept http, https, mqtt, mqtts, ws and wss protocols accepted by mqtt.js (https://github.com/mqttjs/MQTT.js/#connect) + hostnameRegexPattern: "^((http|mqtt|ws)s?:\/\/)?([a-zA-Z0-9])?(([a-zA-Z0-9_]|[a-zA-Z0-9_][a-zA-Z0-9\\-_]*[a-zA-Z0-9_])\\.)*([A-Za-z0-9_]|[A-Za-z0-9_][A-Za-z0-9\\-_]*[A-Za-z0-9_])$" }; }, From fc1914bccd802783a24a46ffb99b5004baf967f2 Mon Sep 17 00:00:00 2001 From: David Twigger Date: Thu, 5 Jan 2023 11:42:19 +0100 Subject: [PATCH 05/73] Fix lint --- server/util-server.js | 4 ++-- src/pages/EditMonitor.vue | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/server/util-server.js b/server/util-server.js index fb96abe72..3a48b5ed1 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -145,8 +145,8 @@ exports.mqttAsync = function (hostname, topic, okMessage, options = {}) { reject(new Error("Timeout")); }, interval * 1000 * 0.8); - const mqttUrl = `${hostname}:${port}` - + const mqttUrl = `${hostname}:${port}`; + log.debug("mqtt", `MQTT connecting to ${mqttUrl}`); let client = mqtt.connect(mqttUrl, { diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 315d1e6c2..ab477a7e3 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -605,7 +605,7 @@ export default { ipRegexPattern: "((^\\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\\s*$)|(^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$))", // Source: https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address // Modified to accept http, https, mqtt, mqtts, ws and wss protocols accepted by mqtt.js (https://github.com/mqttjs/MQTT.js/#connect) - hostnameRegexPattern: "^((http|mqtt|ws)s?:\/\/)?([a-zA-Z0-9])?(([a-zA-Z0-9_]|[a-zA-Z0-9_][a-zA-Z0-9\\-_]*[a-zA-Z0-9_])\\.)*([A-Za-z0-9_]|[A-Za-z0-9_][A-Za-z0-9\\-_]*[A-Za-z0-9_])$" + hostnameRegexPattern: "^((http|mqtt|ws)s?:\\/\\/)?([a-zA-Z0-9])?(([a-zA-Z0-9_]|[a-zA-Z0-9_][a-zA-Z0-9\\-_]*[a-zA-Z0-9_])\\.)*([A-Za-z0-9_]|[A-Za-z0-9_][A-Za-z0-9\\-_]*[A-Za-z0-9_])$" }; }, From 5362aab0e5648a942314fcf468c3e9f127e958fd Mon Sep 17 00:00:00 2001 From: David Twigger Date: Thu, 5 Jan 2023 14:06:13 +0100 Subject: [PATCH 06/73] specify scheme for mqtt monitor type only --- src/pages/EditMonitor.vue | 19 ++++++++++++------- test/cypress/videos/setup.cy.js.mp4 | Bin 0 -> 64989 bytes 2 files changed, 12 insertions(+), 7 deletions(-) create mode 100644 test/cypress/videos/setup.cy.js.mp4 diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index ab477a7e3..302ec6fd0 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -105,7 +105,7 @@
- +
@@ -590,6 +590,15 @@ export default { }, data() { + const mqttSchemePartialRegexPattern = "((mqtt|ws)s?:\\/\\/)?"; + // Source: https://digitalfortress.tech/tips/top-15-commonly-used-regex/ + const ipRegexPattern = "((^\\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\\s*$)|(^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$))"; + const hostnameRegexPattern = "^([a-zA-Z0-9])?(([a-zA-Z0-9_]|[a-zA-Z0-9_][a-zA-Z0-9\\-_]*[a-zA-Z0-9_])\\.)*([A-Za-z0-9_]|[A-Za-z0-9_][A-Za-z0-9\\-_]*[A-Za-z0-9_])$"; + + // Modified to accept mqtt, mqtts, ws and wss protocols accepted by mqtt.js (https://github.com/mqttjs/MQTT.js/#connect) + const mqttIpRegexPattern = `((^\\s*${mqttSchemePartialRegexPattern}((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\\s*$)|(^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$))`; + const mqttHostNameRegexPattern = `^${mqttSchemePartialRegexPattern}([a-zA-Z0-9])?(([a-zA-Z0-9_]|[a-zA-Z0-9_][a-zA-Z0-9\\-_]*[a-zA-Z0-9_])\\.)*([A-Za-z0-9_]|[A-Za-z0-9_][A-Za-z0-9\\-_]*[A-Za-z0-9_])$`; + return { minInterval: MIN_INTERVAL_SECOND, maxInterval: MAX_INTERVAL_SECOND, @@ -600,12 +609,8 @@ export default { }, acceptedStatusCodeOptions: [], dnsresolvetypeOptions: [], - - // Source: https://digitalfortress.tech/tips/top-15-commonly-used-regex/ - ipRegexPattern: "((^\\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\\s*$)|(^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$))", - // Source: https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address - // Modified to accept http, https, mqtt, mqtts, ws and wss protocols accepted by mqtt.js (https://github.com/mqttjs/MQTT.js/#connect) - hostnameRegexPattern: "^((http|mqtt|ws)s?:\\/\\/)?([a-zA-Z0-9])?(([a-zA-Z0-9_]|[a-zA-Z0-9_][a-zA-Z0-9\\-_]*[a-zA-Z0-9_])\\.)*([A-Za-z0-9_]|[A-Za-z0-9_][A-Za-z0-9\\-_]*[A-Za-z0-9_])$" + ipOrHostnameRegexPattern: `${ipRegexPattern}|${hostnameRegexPattern}`, + mqttIpOrHostnameRegexPattern: `${mqttIpRegexPattern}|${mqttHostNameRegexPattern}` }; }, diff --git a/test/cypress/videos/setup.cy.js.mp4 b/test/cypress/videos/setup.cy.js.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..59fb3971a2a2764c11552877131bc4019218211e GIT binary patch literal 64989 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�XVoO(MNxMc+Yp*cXF{n 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 literal 0 HcmV?d00001 From 8a372201f1dc323667c52db7eed86fa7553b2e51 Mon Sep 17 00:00:00 2001 From: David Twigger Date: Thu, 5 Jan 2023 14:23:05 +0100 Subject: [PATCH 07/73] clean up --- src/pages/EditMonitor.vue | 2 +- test/cypress/videos/setup.cy.js.mp4 | Bin 64989 -> 0 bytes 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 test/cypress/videos/setup.cy.js.mp4 diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 302ec6fd0..13e0be544 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -590,12 +590,12 @@ export default { }, data() { - const mqttSchemePartialRegexPattern = "((mqtt|ws)s?:\\/\\/)?"; // Source: https://digitalfortress.tech/tips/top-15-commonly-used-regex/ const ipRegexPattern = "((^\\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\\s*$)|(^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$))"; const hostnameRegexPattern = "^([a-zA-Z0-9])?(([a-zA-Z0-9_]|[a-zA-Z0-9_][a-zA-Z0-9\\-_]*[a-zA-Z0-9_])\\.)*([A-Za-z0-9_]|[A-Za-z0-9_][A-Za-z0-9\\-_]*[A-Za-z0-9_])$"; // Modified to accept mqtt, mqtts, ws and wss protocols accepted by mqtt.js (https://github.com/mqttjs/MQTT.js/#connect) + const mqttSchemePartialRegexPattern = "((mqtt|ws)s?:\\/\\/)?"; const mqttIpRegexPattern = `((^\\s*${mqttSchemePartialRegexPattern}((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\\s*$)|(^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$))`; const mqttHostNameRegexPattern = `^${mqttSchemePartialRegexPattern}([a-zA-Z0-9])?(([a-zA-Z0-9_]|[a-zA-Z0-9_][a-zA-Z0-9\\-_]*[a-zA-Z0-9_])\\.)*([A-Za-z0-9_]|[A-Za-z0-9_][A-Za-z0-9\\-_]*[A-Za-z0-9_])$`; diff --git a/test/cypress/videos/setup.cy.js.mp4 b/test/cypress/videos/setup.cy.js.mp4 deleted file mode 100644 index 59fb3971a2a2764c11552877131bc4019218211e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64989 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�XVoO(MNxMc+Yp*cXF{n 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 From abf5e435fe4e18b86521a58a9f763d221501cf07 Mon Sep 17 00:00:00 2001 From: David Twigger Date: Thu, 5 Jan 2023 14:48:12 +0100 Subject: [PATCH 08/73] move to utility function --- src/pages/EditMonitor.vue | 15 +++------------ src/util.ts | 11 +++++++++++ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 13e0be544..124c96604 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -575,7 +575,7 @@ import NotificationDialog from "../components/NotificationDialog.vue"; import DockerHostDialog from "../components/DockerHostDialog.vue"; import ProxyDialog from "../components/ProxyDialog.vue"; import TagsManager from "../components/TagsManager.vue"; -import { genSecret, isDev, MAX_INTERVAL_SECOND, MIN_INTERVAL_SECOND } from "../util.ts"; +import { genSecret, isDev, MAX_INTERVAL_SECOND, MIN_INTERVAL_SECOND, hostNameRegexPattern } from "../util.ts"; const toast = useToast(); @@ -590,15 +590,6 @@ export default { }, data() { - // Source: https://digitalfortress.tech/tips/top-15-commonly-used-regex/ - const ipRegexPattern = "((^\\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\\s*$)|(^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$))"; - const hostnameRegexPattern = "^([a-zA-Z0-9])?(([a-zA-Z0-9_]|[a-zA-Z0-9_][a-zA-Z0-9\\-_]*[a-zA-Z0-9_])\\.)*([A-Za-z0-9_]|[A-Za-z0-9_][A-Za-z0-9\\-_]*[A-Za-z0-9_])$"; - - // Modified to accept mqtt, mqtts, ws and wss protocols accepted by mqtt.js (https://github.com/mqttjs/MQTT.js/#connect) - const mqttSchemePartialRegexPattern = "((mqtt|ws)s?:\\/\\/)?"; - const mqttIpRegexPattern = `((^\\s*${mqttSchemePartialRegexPattern}((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\\s*$)|(^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$))`; - const mqttHostNameRegexPattern = `^${mqttSchemePartialRegexPattern}([a-zA-Z0-9])?(([a-zA-Z0-9_]|[a-zA-Z0-9_][a-zA-Z0-9\\-_]*[a-zA-Z0-9_])\\.)*([A-Za-z0-9_]|[A-Za-z0-9_][A-Za-z0-9\\-_]*[A-Za-z0-9_])$`; - return { minInterval: MIN_INTERVAL_SECOND, maxInterval: MAX_INTERVAL_SECOND, @@ -609,8 +600,8 @@ export default { }, acceptedStatusCodeOptions: [], dnsresolvetypeOptions: [], - ipOrHostnameRegexPattern: `${ipRegexPattern}|${hostnameRegexPattern}`, - mqttIpOrHostnameRegexPattern: `${mqttIpRegexPattern}|${mqttHostNameRegexPattern}` + ipOrHostnameRegexPattern: hostNameRegexPattern(), + mqttIpOrHostnameRegexPattern: hostNameRegexPattern(true) }; }, diff --git a/src/util.ts b/src/util.ts index 99038c8d3..4b8f1624d 100644 --- a/src/util.ts +++ b/src/util.ts @@ -427,3 +427,14 @@ export function utcToLocal(input : string, format = SQL_DATETIME_FORMAT) { export function localToUTC(input : string, format = SQL_DATETIME_FORMAT) { return dayjs(input).utc().format(format); } + +export function hostNameRegexPattern(mqtt = false) { + // mqtt, mqtts, ws and wss schemes accepted by mqtt.js (https://github.com/mqttjs/MQTT.js/#connect) + const mqttSchemeRegexPattern = "((mqtt|ws)s?:\\/\\/)?"; + // Source: https://digitalfortress.tech/tips/top-15-commonly-used-regex/ + const ipRegexPattern = `((^\\s*${mqtt ? mqttSchemeRegexPattern : ""}((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\\s*$)|(^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$))`; + // Source: https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address + const hostNameRegexPattern = `^${mqtt ? mqttSchemeRegexPattern : ""}([a-zA-Z0-9])?(([a-zA-Z0-9_]|[a-zA-Z0-9_][a-zA-Z0-9\\-_]*[a-zA-Z0-9_])\\.)*([A-Za-z0-9_]|[A-Za-z0-9_][A-Za-z0-9\\-_]*[A-Za-z0-9_])$`; + + return `${ipRegexPattern}|${hostNameRegexPattern}`; +} \ No newline at end of file From 40ebc2df792ec23dc64098eb0f7e94e9d887cf96 Mon Sep 17 00:00:00 2001 From: long2ice Date: Thu, 5 Jan 2023 22:58:24 +0800 Subject: [PATCH 09/73] feat: support redis monitor --- db/patch-redis-monitor.sql | 6 ++ package-lock.json | 153 +++++++++++++++++++++++++++++++++++++ package.json | 1 + server/database.js | 1 + server/model/monitor.js | 11 ++- server/util-server.js | 14 ++++ src/pages/EditMonitor.vue | 11 ++- 7 files changed, 195 insertions(+), 2 deletions(-) create mode 100644 db/patch-redis-monitor.sql diff --git a/db/patch-redis-monitor.sql b/db/patch-redis-monitor.sql new file mode 100644 index 000000000..e82f24fec --- /dev/null +++ b/db/patch-redis-monitor.sql @@ -0,0 +1,6 @@ +BEGIN TRANSACTION; + +ALTER TABLE monitor + ADD redis_connection_string VARCHAR(255); + +COMMIT diff --git a/package-lock.json b/package-lock.json index 7e88d1269..364d94369 100644 --- a/package-lock.json +++ b/package-lock.json @@ -53,6 +53,7 @@ "prometheus-api-metrics": "~3.2.1", "protobufjs": "~7.1.1", "redbean-node": "0.1.4", + "redis": "~4.5.1", "socket.io": "~4.5.3", "socket.io-client": "~4.5.3", "socks-proxy-agent": "6.1.1", @@ -3442,6 +3443,64 @@ "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, + "node_modules/@redis/bloom": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.1.0.tgz", + "integrity": "sha512-9QovlxmpRtvxVbN0UBcv8WfdSMudNZZTFqCsnBszcQXqaZb/TVe30ScgGEO7u1EAIacTPAo7/oCYjYAxiHLanQ==", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/client": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.4.2.tgz", + "integrity": "sha512-oUdEjE0I7JS5AyaAjkD3aOXn9NhO7XKyPyXEyrgFDu++VrVBHUPnV6dgEya9TcMuj5nIJRuCzCm8ZP+c9zCHPw==", + "dependencies": { + "cluster-key-slot": "1.1.1", + "generic-pool": "3.9.0", + "yallist": "4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@redis/client/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/@redis/graph": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.0.tgz", + "integrity": "sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg==", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/json": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.4.tgz", + "integrity": "sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw==", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/search": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.0.tgz", + "integrity": "sha512-NyFZEVnxIJEybpy+YskjgOJRNsfTYqaPbK/Buv6W2kmFNaRk85JiqjJZA5QkRmWvGbyQYwoO5QfDi2wHskKrQQ==", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/time-series": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.4.tgz", + "integrity": "sha512-ThUIgo2U/g7cCuZavucQTQzA9g9JbDDY2f64u3AbAoz/8vE2lt2U37LamDUVChhaDA3IRT9R6VvJwqnUfTJzng==", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, "node_modules/@sideway/address": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", @@ -5386,6 +5445,14 @@ "node": ">=6" } }, + "node_modules/cluster-key-slot": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.1.tgz", + "integrity": "sha512-rwHwUfXL40Chm1r08yrhU3qpUvdVlgkKNeyeGPOxnW8/SyVDvgRaed/Uz54AqWNaTCAThlj6QAs3TZcKI0xDEw==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -8304,6 +8371,14 @@ "is-property": "^1.0.2" } }, + "node_modules/generic-pool": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", + "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==", + "engines": { + "node": ">= 4" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -14282,6 +14357,19 @@ "node": ">=8" } }, + "node_modules/redis": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/redis/-/redis-4.5.1.tgz", + "integrity": "sha512-oxXSoIqMJCQVBTfxP6BNTCtDMyh9G6Vi5wjdPdV/sRKkufyZslDqCScSGcOr6XGR/reAWZefz7E4leM31RgdBA==", + "dependencies": { + "@redis/bloom": "1.1.0", + "@redis/client": "1.4.2", + "@redis/graph": "1.1.0", + "@redis/json": "1.0.4", + "@redis/search": "1.1.0", + "@redis/time-series": "1.0.4" + } + }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -19703,6 +19791,48 @@ "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, + "@redis/bloom": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.1.0.tgz", + "integrity": "sha512-9QovlxmpRtvxVbN0UBcv8WfdSMudNZZTFqCsnBszcQXqaZb/TVe30ScgGEO7u1EAIacTPAo7/oCYjYAxiHLanQ==" + }, + "@redis/client": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.4.2.tgz", + "integrity": "sha512-oUdEjE0I7JS5AyaAjkD3aOXn9NhO7XKyPyXEyrgFDu++VrVBHUPnV6dgEya9TcMuj5nIJRuCzCm8ZP+c9zCHPw==", + "requires": { + "cluster-key-slot": "1.1.1", + "generic-pool": "3.9.0", + "yallist": "4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "@redis/graph": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.0.tgz", + "integrity": "sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg==" + }, + "@redis/json": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.4.tgz", + "integrity": "sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw==" + }, + "@redis/search": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.0.tgz", + "integrity": "sha512-NyFZEVnxIJEybpy+YskjgOJRNsfTYqaPbK/Buv6W2kmFNaRk85JiqjJZA5QkRmWvGbyQYwoO5QfDi2wHskKrQQ==" + }, + "@redis/time-series": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.4.tgz", + "integrity": "sha512-ThUIgo2U/g7cCuZavucQTQzA9g9JbDDY2f64u3AbAoz/8vE2lt2U37LamDUVChhaDA3IRT9R6VvJwqnUfTJzng==" + }, "@sideway/address": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", @@ -21305,6 +21435,11 @@ "is-regexp": "^2.0.0" } }, + "cluster-key-slot": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.1.tgz", + "integrity": "sha512-rwHwUfXL40Chm1r08yrhU3qpUvdVlgkKNeyeGPOxnW8/SyVDvgRaed/Uz54AqWNaTCAThlj6QAs3TZcKI0xDEw==" + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -23422,6 +23557,11 @@ "is-property": "^1.0.2" } }, + "generic-pool": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", + "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==" + }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -27900,6 +28040,19 @@ "strip-indent": "^3.0.0" } }, + "redis": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/redis/-/redis-4.5.1.tgz", + "integrity": "sha512-oxXSoIqMJCQVBTfxP6BNTCtDMyh9G6Vi5wjdPdV/sRKkufyZslDqCScSGcOr6XGR/reAWZefz7E4leM31RgdBA==", + "requires": { + "@redis/bloom": "1.1.0", + "@redis/client": "1.4.2", + "@redis/graph": "1.1.0", + "@redis/json": "1.0.4", + "@redis/search": "1.1.0", + "@redis/time-series": "1.0.4" + } + }, "regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", diff --git a/package.json b/package.json index ebe305f92..e233af9e0 100644 --- a/package.json +++ b/package.json @@ -108,6 +108,7 @@ "prometheus-api-metrics": "~3.2.1", "protobufjs": "~7.1.1", "redbean-node": "0.1.4", + "redis": "~4.5.1", "socket.io": "~4.5.3", "socket.io-client": "~4.5.3", "socks-proxy-agent": "6.1.1", diff --git a/server/database.js b/server/database.js index 2544f1972..1ab1f441d 100644 --- a/server/database.js +++ b/server/database.js @@ -66,6 +66,7 @@ class Database { "patch-add-radius-monitor.sql": true, "patch-monitor-add-resend-interval.sql": true, "patch-maintenance-table2.sql": true, + "patch-redis-monitor.sql": true, }; /** diff --git a/server/model/monitor.js b/server/model/monitor.js index 9f8c8300a..76a18520d 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -3,7 +3,9 @@ const dayjs = require("dayjs"); const axios = require("axios"); const { Prometheus } = require("../prometheus"); const { log, UP, DOWN, PENDING, MAINTENANCE, flipStatus, TimeLogger, MAX_INTERVAL_SECOND, MIN_INTERVAL_SECOND } = require("../../src/util"); -const { tcping, ping, dnsResolve, checkCertificate, checkStatusCode, getTotalClientInRoom, setting, mssqlQuery, postgresQuery, mysqlQuery, mqttAsync, setSetting, httpNtlm, radius, grpcQuery } = require("../util-server"); +const { tcping, ping, dnsResolve, checkCertificate, checkStatusCode, getTotalClientInRoom, setting, mssqlQuery, postgresQuery, mysqlQuery, mqttAsync, setSetting, httpNtlm, radius, grpcQuery, + redisPingAsync +} = require("../util-server"); const { R } = require("redbean-node"); const { BeanModel } = require("redbean-node/dist/bean-model"); const { Notification } = require("../notification"); @@ -120,6 +122,7 @@ class Monitor extends BeanModel { basic_auth_pass: this.basic_auth_pass, pushToken: this.pushToken, databaseConnectionString: this.databaseConnectionString, + redisConnectionString: this.redisConnectionString, radiusUsername: this.radiusUsername, radiusPassword: this.radiusPassword, radiusSecret: this.radiusSecret, @@ -617,6 +620,12 @@ class Monitor extends BeanModel { } } bean.ping = dayjs().valueOf() - startTime; + } else if (this.type === "redis") { + let startTime = dayjs().valueOf(); + + bean.msg = await redisPingAsync(this.redisConnectionString); + bean.status = UP; + bean.ping = dayjs().valueOf() - startTime; } else { bean.msg = "Unknown Monitor Type"; bean.status = PENDING; diff --git a/server/util-server.js b/server/util-server.js index 4a30017a4..f3d01b10e 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -19,6 +19,7 @@ const { Settings } = require("./settings"); const grpc = require("@grpc/grpc-js"); const protojs = require("protobufjs"); const radiusClient = require("node-radius-client"); +const redis = require("redis"); const { dictionaries: { rfc2865: { file, attributes }, @@ -353,6 +354,19 @@ exports.radius = function ( ], }); }; +/** + * Redis server ping + * @param {string} dsn The redis connection string + */ +exports.redisPingAsync = async function (dsn) { + const client = redis.createClient({ + url: dsn, + }); + await client.connect(); + const pong = await client.ping(); + await client.disconnect(); + return pong; +}; /** * Retrieve value of setting based on key diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index c9d5ad2f1..6ae204bac 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -60,6 +60,9 @@ +

@@ -267,7 +270,13 @@ - + +
From c7eb72e73b09ddf7f02f355086cbdbe29ceb66c3 Mon Sep 17 00:00:00 2001 From: Matthew Nickson Date: Thu, 5 Jan 2023 19:57:28 +0000 Subject: [PATCH 10/73] JSDoc for extra/ Signed-off-by: Matthew Nickson --- extra/beta/update-version.js | 13 +++++++++++++ extra/download-cloudflared.js | 4 ++++ extra/remove-2fa.js | 5 +++++ extra/reset-password.js | 5 +++++ extra/simple-dns-server.js | 5 +++++ extra/simple-mqtt-server.js | 1 + extra/update-version.js | 17 +++++++++-------- extra/update-wiki-version.js | 8 ++++++++ 8 files changed, 50 insertions(+), 8 deletions(-) diff --git a/extra/beta/update-version.js b/extra/beta/update-version.js index df2cb40a6..7abac5efe 100644 --- a/extra/beta/update-version.js +++ b/extra/beta/update-version.js @@ -32,6 +32,10 @@ if (! exists) { process.exit(1); } +/** + * Commit updated files + * @param {string} version Version to update to + */ function commit(version) { let msg = "Update to " + version; @@ -47,6 +51,10 @@ function commit(version) { console.log(res.stdout.toString().trim()); } +/** + * Create a tag with the specified version + * @param {string} version Tag to create + */ function tag(version) { let res = childProcess.spawnSync("git", [ "tag", version ]); console.log(res.stdout.toString().trim()); @@ -55,6 +63,11 @@ function tag(version) { console.log(res.stdout.toString().trim()); } +/** + * Check if a tag exists for the specified version + * @param {string} version Version to check + * @returns {boolean} Does the tag already exist + */ function tagExists(version) { if (! version) { throw new Error("invalid version"); diff --git a/extra/download-cloudflared.js b/extra/download-cloudflared.js index 41519b7ca..74b9bad2a 100644 --- a/extra/download-cloudflared.js +++ b/extra/download-cloudflared.js @@ -25,6 +25,10 @@ if (platform === "linux/amd64") { const file = fs.createWriteStream("cloudflared.deb"); get("https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-" + arch + ".deb"); +/** + * Download specified file + * @param {string} url URL to request + */ function get(url) { http.get(url, function (res) { if (res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) { diff --git a/extra/remove-2fa.js b/extra/remove-2fa.js index 0f3f63462..f88c43fca 100644 --- a/extra/remove-2fa.js +++ b/extra/remove-2fa.js @@ -43,6 +43,11 @@ const main = async () => { console.log("Finished."); }; +/** + * Ask question of user + * @param {string} question Question to ask + * @returns {Promise} Users response + */ function question(question) { return new Promise((resolve) => { rl.question(question, (answer) => { diff --git a/extra/reset-password.js b/extra/reset-password.js index 8036a4566..168983312 100644 --- a/extra/reset-password.js +++ b/extra/reset-password.js @@ -53,6 +53,11 @@ const main = async () => { console.log("Finished."); }; +/** + * Ask question of user + * @param {string} question Question to ask + * @returns {Promise} Users response + */ function question(question) { return new Promise((resolve) => { rl.question(question, (answer) => { diff --git a/extra/simple-dns-server.js b/extra/simple-dns-server.js index 376dbdd04..a6946dcb3 100644 --- a/extra/simple-dns-server.js +++ b/extra/simple-dns-server.js @@ -135,6 +135,11 @@ server.listen({ udp: 5300 }); +/** + * Get human readable request type from request code + * @param {number} code Request code to translate + * @returns {string} Human readable request type + */ function type(code) { for (let name in Packet.TYPE) { if (Packet.TYPE[name] === code) { diff --git a/extra/simple-mqtt-server.js b/extra/simple-mqtt-server.js index 238d27726..b970a380e 100644 --- a/extra/simple-mqtt-server.js +++ b/extra/simple-mqtt-server.js @@ -11,6 +11,7 @@ class SimpleMqttServer { this.port = port; } + /** Start the MQTT server */ start() { this.server.listen(this.port, () => { console.log("server started and listening on port ", this.port); diff --git a/extra/update-version.js b/extra/update-version.js index d5c2ee5ca..246e1c1c4 100644 --- a/extra/update-version.js +++ b/extra/update-version.js @@ -36,10 +36,8 @@ if (! exists) { } /** - * Updates the version number in package.json and commits it to git. - * @param {string} version - The new version number - * - * Generated by Trelent + * Commit updated files + * @param {string} version Version to update to */ function commit(version) { let msg = "Update to " + version; @@ -53,16 +51,19 @@ function commit(version) { } } +/** + * Create a tag with the specified version + * @param {string} version Tag to create + */ function tag(version) { let res = childProcess.spawnSync("git", [ "tag", version ]); console.log(res.stdout.toString().trim()); } /** - * Checks if a given version is already tagged in the git repository. - * @param {string} version - The version to check for. - * - * Generated by Trelent + * Check if a tag exists for the specified version + * @param {string} version Version to check + * @returns {boolean} Does the tag already exist */ function tagExists(version) { if (! version) { diff --git a/extra/update-wiki-version.js b/extra/update-wiki-version.js index 65b7e7b08..880bc5568 100644 --- a/extra/update-wiki-version.js +++ b/extra/update-wiki-version.js @@ -10,6 +10,10 @@ if (!newVersion) { updateWiki(newVersion); +/** + * Update the wiki with new version number + * @param {string} newVersion Version to update to + */ function updateWiki(newVersion) { const wikiDir = "./tmp/wiki"; const howToUpdateFilename = "./tmp/wiki/🆙-How-to-Update.md"; @@ -39,6 +43,10 @@ function updateWiki(newVersion) { safeDelete(wikiDir); } +/** + * Check if a directory exists before deleting + * @param {string} dir Directory to delete + */ function safeDelete(dir) { if (fs.existsSync(dir)) { fs.rm(dir, { From caff9ca736228e833fcab0ecfef8ebb551f9d0ef Mon Sep 17 00:00:00 2001 From: Matthew Nickson Date: Thu, 5 Jan 2023 22:19:05 +0000 Subject: [PATCH 11/73] Added JSDoc for server/ Signed-off-by: Matthew Nickson --- server/auth.js | 6 ++++ server/cacheable-dns-http-agent.js | 4 +++ server/jobs.js | 1 + server/model/maintenance.js | 23 +++++++++++++++ server/model/maintenance_timeslot.js | 9 ++++++ server/model/monitor.js | 8 ++++++ server/notification-providers/serverchan.js | 6 ++++ server/prometheus.js | 1 + server/uptime-cache-list.js | 18 +++++++++--- server/uptime-kuma-server.js | 32 +++++++++++++++++++++ 10 files changed, 104 insertions(+), 4 deletions(-) diff --git a/server/auth.js b/server/auth.js index 3ce1a6041..fd19b0e44 100644 --- a/server/auth.js +++ b/server/auth.js @@ -63,6 +63,12 @@ function myAuthorizer(username, password, callback) { }); } +/** + * Use basic auth if auth is not disabled + * @param {express.Request} req Express request object + * @param {express.Response} res Express response object + * @param {express.NextFunction} next + */ exports.basicAuth = async function (req, res, next) { const middleware = basicAuth({ authorizer: myAuthorizer, diff --git a/server/cacheable-dns-http-agent.js b/server/cacheable-dns-http-agent.js index 301367918..cc067f72b 100644 --- a/server/cacheable-dns-http-agent.js +++ b/server/cacheable-dns-http-agent.js @@ -37,6 +37,10 @@ class CacheableDnsHttpAgent { this.enable = isEnable; } + /** + * Attach cacheable to HTTP agent + * @param {http.Agent} agent Agent to install + */ static install(agent) { this.cacheable.install(agent); } diff --git a/server/jobs.js b/server/jobs.js index f9c7f86e9..66a276064 100644 --- a/server/jobs.js +++ b/server/jobs.js @@ -32,6 +32,7 @@ const initBackgroundJobs = function (args) { return bree; }; +/** Stop all background jobs if running */ const stopBackgroundJobs = function () { if (bree) { bree.stop(); diff --git a/server/model/maintenance.js b/server/model/maintenance.js index d9be34273..45db63d13 100644 --- a/server/model/maintenance.js +++ b/server/model/maintenance.js @@ -112,6 +112,11 @@ class Maintenance extends BeanModel { return this.toPublicJSON(timezone); } + /** + * Get a list of weekdays that the maintenance is active for + * Monday=1, Tuesday=2 etc. + * @returns {number[]} Array of active weekdays + */ getDayOfWeekList() { log.debug("timeslot", "List: " + this.weekdays); return JSON.parse(this.weekdays).sort(function (a, b) { @@ -119,12 +124,20 @@ class Maintenance extends BeanModel { }); } + /** + * Get a list of days in month that maintenance is active for + * @returns {number[]} Array of active days in month + */ getDayOfMonthList() { return JSON.parse(this.days_of_month).sort(function (a, b) { return a - b; }); } + /** + * Get the start date and time for maintenance + * @returns {dayjs.Dayjs} Start date and time + */ getStartDateTime() { let startOfTheDay = dayjs.utc(this.start_date).format("HH:mm"); log.debug("timeslot", "startOfTheDay: " + startOfTheDay); @@ -137,6 +150,10 @@ class Maintenance extends BeanModel { return dayjs.utc(this.start_date).add(startTimeSecond, "second"); } + /** + * Get the duraction of maintenance in seconds + * @returns {number} Duration of maintenance + */ getDuration() { let duration = dayjs.utc(this.end_time, "HH:mm").diff(dayjs.utc(this.start_time, "HH:mm"), "second"); // Add 24hours if it is across day @@ -146,6 +163,12 @@ class Maintenance extends BeanModel { return duration; } + /** + * Convert data from socket to bean + * @param {Bean} bean Bean to fill in + * @param {Object} obj Data to fill bean with + * @returns {Bean} Filled bean + */ static jsonToBean(bean, obj) { if (obj.id) { bean.id = obj.id; diff --git a/server/model/maintenance_timeslot.js b/server/model/maintenance_timeslot.js index 2babe6bca..77643c2cf 100644 --- a/server/model/maintenance_timeslot.js +++ b/server/model/maintenance_timeslot.js @@ -6,6 +6,11 @@ const { UptimeKumaServer } = require("../uptime-kuma-server"); class MaintenanceTimeslot extends BeanModel { + /** + * Return an object that ready to parse to JSON for public + * Only show necessary data to public + * @returns {Object} + */ async toPublicJSON() { const serverTimezoneOffset = UptimeKumaServer.getInstance().getTimezoneOffset(); @@ -21,6 +26,10 @@ class MaintenanceTimeslot extends BeanModel { return obj; } + /** + * Return an object that ready to parse to JSON + * @returns {Object} + */ async toJSON() { return await this.toPublicJSON(); } diff --git a/server/model/monitor.js b/server/model/monitor.js index 9f8c8300a..e6332b8f4 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -748,6 +748,13 @@ class Monitor extends BeanModel { } } + /** + * Make a request using axios + * @param {Object} options Options for Axios + * @param {boolean} finalCall Should this be the final call i.e + * don't retry on faliure + * @returns {Object} Axios response + */ async makeAxiosRequest(options, finalCall = false) { try { let res; @@ -1229,6 +1236,7 @@ class Monitor extends BeanModel { return maintenance.count !== 0; } + /** Make sure monitor interval is between bounds */ validate() { if (this.interval > MAX_INTERVAL_SECOND) { throw new Error(`Interval cannot be more than ${MAX_INTERVAL_SECOND} seconds`); diff --git a/server/notification-providers/serverchan.js b/server/notification-providers/serverchan.js index fbf99f80d..d631c8e61 100644 --- a/server/notification-providers/serverchan.js +++ b/server/notification-providers/serverchan.js @@ -21,6 +21,12 @@ class ServerChan extends NotificationProvider { } } + /** + * Get the formatted title for message + * @param {?Object} monitorJSON Monitor details (For Up/Down only) + * @param {?Object} heartbeatJSON Heartbeat details (For Up/Down only) + * @returns {string} Formatted title + */ checkStatus(heartbeatJSON, monitorJSON) { let title = "UptimeKuma Message"; if (heartbeatJSON != null && heartbeatJSON["status"] === UP) { diff --git a/server/prometheus.js b/server/prometheus.js index 1473ab7a9..aeba95f80 100644 --- a/server/prometheus.js +++ b/server/prometheus.js @@ -99,6 +99,7 @@ class Prometheus { } } + /** Remove monitor from prometheus */ remove() { try { monitorCertDaysRemaining.remove(this.monitorLabelValues); diff --git a/server/uptime-cache-list.js b/server/uptime-cache-list.js index 1347968fa..d88a9cbf8 100644 --- a/server/uptime-cache-list.js +++ b/server/uptime-cache-list.js @@ -6,10 +6,10 @@ class UptimeCacheList { static list = {}; /** - * - * @param monitorID - * @param duration - * @return number + * Get the uptime for a specific period + * @param {number} monitorID + * @param {number} duration + * @return {number} */ static getUptime(monitorID, duration) { if (UptimeCacheList.list[monitorID] && UptimeCacheList.list[monitorID][duration]) { @@ -20,6 +20,12 @@ class UptimeCacheList { } } + /** + * Add uptime for specified monitor + * @param {number} monitorID + * @param {number} duration + * @param {number} uptime Uptime to add + */ static addUptime(monitorID, duration, uptime) { log.debug("UptimeCacheList", "addUptime: " + monitorID + " " + duration); if (!UptimeCacheList.list[monitorID]) { @@ -28,6 +34,10 @@ class UptimeCacheList { UptimeCacheList.list[monitorID][duration] = uptime; } + /** + * Clear cache for specified monitor + * @param {number} monitorID + */ static clearCache(monitorID) { log.debug("UptimeCacheList", "clearCache: " + monitorID); delete UptimeCacheList.list[monitorID]; diff --git a/server/uptime-kuma-server.js b/server/uptime-kuma-server.js index 062375626..147121764 100644 --- a/server/uptime-kuma-server.js +++ b/server/uptime-kuma-server.js @@ -86,6 +86,7 @@ class UptimeKumaServer { this.io = new Server(this.httpServer); } + /** Initialise app after the dabase has been set up */ async initAfterDatabaseReady() { await CacheableDnsHttpAgent.update(); @@ -98,6 +99,11 @@ class UptimeKumaServer { this.generateMaintenanceTimeslotsInterval = setInterval(this.generateMaintenanceTimeslots, 60 * 1000); } + /** + * Send list of monitors to client + * @param {Socket} socket + * @returns {Object} List of monitors + */ async sendMonitorList(socket) { let list = await this.getMonitorJSONList(socket.userID); this.io.to(socket.userID).emit("monitorList", list); @@ -134,6 +140,11 @@ class UptimeKumaServer { return await this.sendMaintenanceListByUserID(socket.userID); } + /** + * Send list of maintenances to user + * @param {number} userID + * @returns {Object} + */ async sendMaintenanceListByUserID(userID) { let list = await this.getMaintenanceJSONList(userID); this.io.to(userID).emit("maintenanceList", list); @@ -185,6 +196,11 @@ class UptimeKumaServer { errorLogStream.end(); } + /** + * Get the IP of the client connected to the socket + * @param {Socket} socket + * @returns {string} + */ async getClientIP(socket) { let clientIP = socket.client.conn.remoteAddress; @@ -203,6 +219,12 @@ class UptimeKumaServer { } } + /** + * Attempt to get the current server timezone + * If this fails, fall back to environment variables and then make a + * guess. + * @returns {string} + */ async getTimezone() { let timezone = await Settings.get("serverTimezone"); if (timezone) { @@ -214,16 +236,25 @@ class UptimeKumaServer { } } + /** + * Get the current offset + * @returns {string} + */ getTimezoneOffset() { return dayjs().format("Z"); } + /** + * Set the current server timezone and environment variables + * @param {string} timezone + */ async setTimezone(timezone) { await Settings.set("serverTimezone", timezone, "general"); process.env.TZ = timezone; dayjs.tz.setDefault(timezone); } + /** Load the timeslots for maintenance */ async generateMaintenanceTimeslots() { let list = await R.find("maintenance_timeslot", " generated_next = 0 AND start_date <= DATETIME('now') "); @@ -237,6 +268,7 @@ class UptimeKumaServer { } + /** Stop the server */ async stop() { clearTimeout(this.generateMaintenanceTimeslotsInterval); } From dc8289df12e8c30861a38a15e3a39d277b5c9178 Mon Sep 17 00:00:00 2001 From: Matthew Nickson Date: Thu, 5 Jan 2023 22:55:51 +0000 Subject: [PATCH 12/73] Added JSDoc for src/ Signed-off-by: Matthew Nickson --- src/components/DockerHostDialog.vue | 8 +++++ src/components/notifications/Telegram.vue | 7 +++++ src/components/settings/Security.vue | 1 + src/mixins/datetime.js | 10 +++++++ src/mixins/socket.js | 36 +++++++++++++++++++++++ src/pages/EditMaintenance.vue | 12 ++++++++ src/pages/MaintenanceDetails.vue | 3 ++ src/pages/ManageMaintenance.vue | 10 +++++++ src/util.js | 16 ++++++++++ src/util.ts | 17 ++++++++++- 10 files changed, 119 insertions(+), 1 deletion(-) diff --git a/src/components/DockerHostDialog.vue b/src/components/DockerHostDialog.vue index 50ffa49c1..fc9aea498 100644 --- a/src/components/DockerHostDialog.vue +++ b/src/components/DockerHostDialog.vue @@ -91,11 +91,16 @@ export default { }, methods: { + /** Confirm deletion of docker host */ deleteConfirm() { this.modal.hide(); this.$refs.confirmDelete.show(); }, + /** + * Show specified docker host + * @param {number} dockerHostID + */ show(dockerHostID) { if (dockerHostID) { let found = false; @@ -126,6 +131,7 @@ export default { this.modal.show(); }, + /** Add docker host */ submit() { this.processing = true; this.$root.getSocket().emit("addDockerHost", this.dockerHost, this.id, (res) => { @@ -144,6 +150,7 @@ export default { }); }, + /** Test the docker host */ test() { this.processing = true; this.$root.getSocket().emit("testDockerHost", this.dockerHost, (res) => { @@ -152,6 +159,7 @@ export default { }); }, + /** Delete this docker host */ deleteDockerHost() { this.processing = true; this.$root.getSocket().emit("deleteDockerHost", this.id, (res) => { diff --git a/src/components/notifications/Telegram.vue b/src/components/notifications/Telegram.vue index 9daf31ac6..723bd1be6 100644 --- a/src/components/notifications/Telegram.vue +++ b/src/components/notifications/Telegram.vue @@ -42,6 +42,11 @@ export default { HiddenInput, }, methods: { + /** + * Get the URL for telegram updates + * @param {string} [mode=masked] Should the token be masked? + * @returns {string} formatted URL + */ telegramGetUpdatesURL(mode = "masked") { let token = `<${this.$t("YOUR BOT TOKEN HERE")}>`; @@ -55,6 +60,8 @@ export default { return `https://api.telegram.org/bot${token}/getUpdates`; }, + + /** Get the telegram chat ID */ async autoGetTelegramChatID() { try { let res = await axios.get(this.telegramGetUpdatesURL("withToken")); diff --git a/src/components/settings/Security.vue b/src/components/settings/Security.vue index 330fe9ca5..7d13ea90e 100644 --- a/src/components/settings/Security.vue +++ b/src/components/settings/Security.vue @@ -191,6 +191,7 @@ export default { location.reload(); }, + /** Show confirmation dialog for disable auth */ confirmDisableAuth() { this.$refs.confirmDisableAuth.show(); }, diff --git a/src/mixins/datetime.js b/src/mixins/datetime.js index 4fa2fa831..5a282ad03 100644 --- a/src/mixins/datetime.js +++ b/src/mixins/datetime.js @@ -12,6 +12,11 @@ export default { }, methods: { + /** + * Convert value to UTC + * @param {string | number | Date | dayjs.Dayjs} value + * @returns {dayjs.Dayjs} + */ toUTC(value) { return dayjs.tz(value, this.timezone).utc().format(); }, @@ -34,6 +39,11 @@ export default { return this.datetimeFormat(value, "YYYY-MM-DD HH:mm:ss"); }, + /** + * Get time for maintenance + * @param {string | number | Date | dayjs.Dayjs} value + * @returns {string} + */ datetimeMaintenance(value) { const inputDate = new Date(value); const now = new Date(Date.now()); diff --git a/src/mixins/socket.js b/src/mixins/socket.js index 378af06a5..0121eb153 100644 --- a/src/mixins/socket.js +++ b/src/mixins/socket.js @@ -454,6 +454,10 @@ export default { socket.emit("getMonitorList", callback); }, + /** + * Get list of maintenances + * @param {socketCB} callback + */ getMaintenanceList(callback) { if (! callback) { callback = () => { }; @@ -470,22 +474,49 @@ export default { socket.emit("add", monitor, callback); }, + /** + * Adds a maintenace + * @param {Object} maintenance + * @param {socketCB} callback + */ addMaintenance(maintenance, callback) { socket.emit("addMaintenance", maintenance, callback); }, + /** + * Add monitors to maintenance + * @param {number} maintenanceID + * @param {number[]} monitors + * @param {socketCB} callback + */ addMonitorMaintenance(maintenanceID, monitors, callback) { socket.emit("addMonitorMaintenance", maintenanceID, monitors, callback); }, + /** + * Add status page to maintenance + * @param {number} maintenanceID + * @param {number} statusPages + * @param {socketCB} callback + */ addMaintenanceStatusPage(maintenanceID, statusPages, callback) { socket.emit("addMaintenanceStatusPage", maintenanceID, statusPages, callback); }, + /** + * Get monitors affected by maintenance + * @param {number} maintenanceID + * @param {socketCB} callback + */ getMonitorMaintenance(maintenanceID, callback) { socket.emit("getMonitorMaintenance", maintenanceID, callback); }, + /** + * Get status pages where maintenance is shown + * @param {number} maintenanceID + * @param {socketCB} callback + */ getMaintenanceStatusPage(maintenanceID, callback) { socket.emit("getMaintenanceStatusPage", maintenanceID, callback); }, @@ -499,6 +530,11 @@ export default { socket.emit("deleteMonitor", monitorID, callback); }, + /** + * Delete specified maintenance + * @param {number} maintenanceID + * @param {socketCB} callback + */ deleteMaintenance(maintenanceID, callback) { socket.emit("deleteMaintenance", maintenanceID, callback); }, diff --git a/src/pages/EditMaintenance.vue b/src/pages/EditMaintenance.vue index d668d1ad1..f0d87fe5a 100644 --- a/src/pages/EditMaintenance.vue +++ b/src/pages/EditMaintenance.vue @@ -356,6 +356,7 @@ export default { }); }, methods: { + /** Initialise page */ init() { this.affectedMonitors = []; this.selectedStatusPages = []; @@ -414,6 +415,7 @@ export default { } }, + /** Create new maintenance */ async submit() { this.processing = true; @@ -458,6 +460,11 @@ export default { } }, + /** + * Add monitor to maintenance + * @param {number} maintenanceID + * @param {socketCB} callback + */ async addMonitorMaintenance(maintenanceID, callback) { await this.$root.addMonitorMaintenance(maintenanceID, this.affectedMonitors, async (res) => { if (!res.ok) { @@ -470,6 +477,11 @@ export default { }); }, + /** + * Add status page to maintenance + * @param {number} maintenanceID + * @param {socketCB} callback + */ async addMaintenanceStatusPage(maintenanceID, callback) { await this.$root.addMaintenanceStatusPage(maintenanceID, (this.showOnAllPages) ? this.selectedStatusPagesOptions : this.selectedStatusPages, async (res) => { if (!res.ok) { diff --git a/src/pages/MaintenanceDetails.vue b/src/pages/MaintenanceDetails.vue index 04c216915..0cf9283d3 100644 --- a/src/pages/MaintenanceDetails.vue +++ b/src/pages/MaintenanceDetails.vue @@ -65,6 +65,7 @@ export default { this.init(); }, methods: { + /** Initialise page */ init() { this.$root.getSocket().emit("getMonitorMaintenance", this.$route.params.id, (res) => { if (res.ok) { @@ -83,10 +84,12 @@ export default { }); }, + /** Confirm deletion */ deleteDialog() { this.$refs.confirmDelete.show(); }, + /** Delete maintenance after showing confirmation */ deleteMaintenance() { this.$root.deleteMaintenance(this.maintenance.id, (res) => { if (res.ok) { diff --git a/src/pages/ManageMaintenance.vue b/src/pages/ManageMaintenance.vue index dd36c9505..aaffbbf93 100644 --- a/src/pages/ManageMaintenance.vue +++ b/src/pages/ManageMaintenance.vue @@ -133,15 +133,25 @@ export default { } }, + /** + * Get maintenance URL + * @param {number} id + * @returns {string} Relative URL + */ maintenanceURL(id) { return getMaintenanceRelativeURL(id); }, + /** + * Show delete confirmation + * @param {number} maintenanceID + */ deleteDialog(maintenanceID) { this.selectedMaintenanceID = maintenanceID; this.$refs.confirmDelete.show(); }, + /** Delete maintenance after showing confirmation dialog */ deleteMaintenance() { this.$root.deleteMaintenance(this.selectedMaintenanceID, (res) => { if (res.ok) { diff --git a/src/util.js b/src/util.js index 09e6d0ee7..6b8f8f374 100644 --- a/src/util.js +++ b/src/util.js @@ -315,6 +315,11 @@ function getMonitorRelativeURL(id) { return "/dashboard/" + id; } exports.getMonitorRelativeURL = getMonitorRelativeURL; +/** + * Get relative path for maintenance + * @param id ID of maintenance + * @returns Formatted relative path + */ function getMaintenanceRelativeURL(id) { return "/maintenance/" + id; } @@ -361,6 +366,11 @@ function parseTimeFromTimeObject(obj) { return result; } exports.parseTimeFromTimeObject = parseTimeFromTimeObject; +/** + * Convert ISO date to UTC + * @param input Date + * @returns ISO Date time + */ function isoToUTCDateTime(input) { return dayjs(input).utc().format(exports.SQL_DATETIME_FORMAT); } @@ -379,6 +389,12 @@ function utcToLocal(input, format = exports.SQL_DATETIME_FORMAT) { return dayjs.utc(input).local().format(format); } exports.utcToLocal = utcToLocal; +/** + * Convert local datetime to UTC + * @param input Local date + * @param format Format to return + * @returns Date in requested format + */ function localToUTC(input, format = exports.SQL_DATETIME_FORMAT) { return dayjs(input).utc().format(format); } diff --git a/src/util.ts b/src/util.ts index 99038c8d3..e8a2706e3 100644 --- a/src/util.ts +++ b/src/util.ts @@ -352,6 +352,11 @@ export function getMonitorRelativeURL(id: string) { return "/dashboard/" + id; } +/** + * Get relative path for maintenance + * @param id ID of maintenance + * @returns Formatted relative path + */ export function getMaintenanceRelativeURL(id: string) { return "/maintenance/" + id; } @@ -405,7 +410,11 @@ export function parseTimeFromTimeObject(obj : any) { return result; } - +/** + * Convert ISO date to UTC + * @param input Date + * @returns ISO Date time + */ export function isoToUTCDateTime(input : string) { return dayjs(input).utc().format(SQL_DATETIME_FORMAT); } @@ -424,6 +433,12 @@ export function utcToLocal(input : string, format = SQL_DATETIME_FORMAT) { return dayjs.utc(input).local().format(format); } +/** + * Convert local datetime to UTC + * @param input Local date + * @param format Format to return + * @returns Date in requested format + */ export function localToUTC(input : string, format = SQL_DATETIME_FORMAT) { return dayjs(input).utc().format(format); } From e490ec6d29a88a10979656a877fb4a7e3eeda2ee Mon Sep 17 00:00:00 2001 From: David Twigger Date: Fri, 6 Jan 2023 11:00:20 +0100 Subject: [PATCH 13/73] move hostname regex pattern function to frontend-utils --- src/pages/EditMonitor.vue | 3 ++- src/util-frontend.js | 16 ++++++++++++++++ src/util.ts | 11 ----------- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 124c96604..2ab9acc7e 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -575,7 +575,8 @@ import NotificationDialog from "../components/NotificationDialog.vue"; import DockerHostDialog from "../components/DockerHostDialog.vue"; import ProxyDialog from "../components/ProxyDialog.vue"; import TagsManager from "../components/TagsManager.vue"; -import { genSecret, isDev, MAX_INTERVAL_SECOND, MIN_INTERVAL_SECOND, hostNameRegexPattern } from "../util.ts"; +import { genSecret, isDev, MAX_INTERVAL_SECOND, MIN_INTERVAL_SECOND } from "../util.ts"; +import { hostNameRegexPattern } from "../util-frontend"; const toast = useToast(); diff --git a/src/util-frontend.js b/src/util-frontend.js index 3323f3279..23b4ec95f 100644 --- a/src/util-frontend.js +++ b/src/util-frontend.js @@ -78,3 +78,19 @@ export function getResBaseURL() { return ""; } } + +/** + * + * @param {} mqtt wheather or not the regex should take into account the fact that it is an mqtt uri + * @returns RegExp The requested regex + */ +export function hostNameRegexPattern(mqtt = false) { + // mqtt, mqtts, ws and wss schemes accepted by mqtt.js (https://github.com/mqttjs/MQTT.js/#connect) + const mqttSchemeRegexPattern = "((mqtt|ws)s?:\\/\\/)?"; + // Source: https://digitalfortress.tech/tips/top-15-commonly-used-regex/ + const ipRegexPattern = `((^\\s*${mqtt ? mqttSchemeRegexPattern : ""}((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\\s*$)|(^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$))`; + // Source: https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address + const hostNameRegexPattern = `^${mqtt ? mqttSchemeRegexPattern : ""}([a-zA-Z0-9])?(([a-zA-Z0-9_]|[a-zA-Z0-9_][a-zA-Z0-9\\-_]*[a-zA-Z0-9_])\\.)*([A-Za-z0-9_]|[A-Za-z0-9_][A-Za-z0-9\\-_]*[A-Za-z0-9_])$`; + + return `${ipRegexPattern}|${hostNameRegexPattern}`; +} diff --git a/src/util.ts b/src/util.ts index 4b8f1624d..99038c8d3 100644 --- a/src/util.ts +++ b/src/util.ts @@ -427,14 +427,3 @@ export function utcToLocal(input : string, format = SQL_DATETIME_FORMAT) { export function localToUTC(input : string, format = SQL_DATETIME_FORMAT) { return dayjs(input).utc().format(format); } - -export function hostNameRegexPattern(mqtt = false) { - // mqtt, mqtts, ws and wss schemes accepted by mqtt.js (https://github.com/mqttjs/MQTT.js/#connect) - const mqttSchemeRegexPattern = "((mqtt|ws)s?:\\/\\/)?"; - // Source: https://digitalfortress.tech/tips/top-15-commonly-used-regex/ - const ipRegexPattern = `((^\\s*${mqtt ? mqttSchemeRegexPattern : ""}((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\\s*$)|(^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$))`; - // Source: https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address - const hostNameRegexPattern = `^${mqtt ? mqttSchemeRegexPattern : ""}([a-zA-Z0-9])?(([a-zA-Z0-9_]|[a-zA-Z0-9_][a-zA-Z0-9\\-_]*[a-zA-Z0-9_])\\.)*([A-Za-z0-9_]|[A-Za-z0-9_][A-Za-z0-9\\-_]*[A-Za-z0-9_])$`; - - return `${ipRegexPattern}|${hostNameRegexPattern}`; -} \ No newline at end of file From 21c19218677e0d8941d480401853c2ff417d6f8a Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Fri, 6 Jan 2023 23:04:02 +0800 Subject: [PATCH 14/73] Update server/uptime-kuma-server.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 琚致远 / Zhiyuan Ju --- server/uptime-kuma-server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/uptime-kuma-server.js b/server/uptime-kuma-server.js index 147121764..faffb98be 100644 --- a/server/uptime-kuma-server.js +++ b/server/uptime-kuma-server.js @@ -86,7 +86,7 @@ class UptimeKumaServer { this.io = new Server(this.httpServer); } - /** Initialise app after the dabase has been set up */ + /** Initialise app after the database has been set up */ async initAfterDatabaseReady() { await CacheableDnsHttpAgent.update(); From 675806829cc2548091350834b0d8b7efaf870bd9 Mon Sep 17 00:00:00 2001 From: Matthew Nickson Date: Fri, 6 Jan 2023 17:17:37 +0000 Subject: [PATCH 15/73] Changed wording for safeDelete function JSDoc --- extra/update-wiki-version.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/update-wiki-version.js b/extra/update-wiki-version.js index 880bc5568..f551db41b 100644 --- a/extra/update-wiki-version.js +++ b/extra/update-wiki-version.js @@ -44,7 +44,7 @@ function updateWiki(newVersion) { } /** - * Check if a directory exists before deleting + * Check if a directory exists and then delete it * @param {string} dir Directory to delete */ function safeDelete(dir) { From e8e4361e0940437a8ba858fa317aeb1af634d922 Mon Sep 17 00:00:00 2001 From: DimitriDR Date: Sat, 7 Jan 2023 13:10:25 +0100 Subject: [PATCH 16/73] Adding translations for Kook & ZohoCliq --- src/languages/fr-FR.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/languages/fr-FR.js b/src/languages/fr-FR.js index aeb847314..6a6323a96 100644 --- a/src/languages/fr-FR.js +++ b/src/languages/fr-FR.js @@ -209,6 +209,7 @@ export default { here: "ici", Required: "Requis", telegram: "Telegram", + "ZohoCliq": "ZohoCliq", "Bot Token": "Jeton du robot", wayToGetTelegramToken: "Vous pouvez obtenir un token depuis {0}.", "Chat ID": "Chat ID", @@ -240,7 +241,8 @@ export default { "Hello @everyone is...": "Bonjour {'@'}everyone il...", teams: "Microsoft Teams", "Webhook URL": "URL vers le webhook", - wayToGetTeamsURL: "Vous pouvez apprendre comment créer un Webhook {0}.", + wayToGetTeamsURL: "Vous pouvez apprendre comment créer une URL Webhook {0}.", + wayToGetZohoCliqURL: "Vous pouvez apprendre comment créer une URL Webhook {0}.", signal: "Signal", Number: "Numéro", Recipients: "Destinataires", @@ -270,6 +272,10 @@ export default { apprise: "Apprise (prend en charge plus de 50 services de notification)", GoogleChat: "Google Chat (Google Workspace uniquement)", pushbullet: "Pushbullet", + Kook: "Kook", + wayToGetKookBotToken: "Créez une application et récupérer le jeton de robot à l'addresse {0}", + wayToGetKookGuildID: "Passez en « mode développeur » dans les paramètres de Kook, et cliquez droit sur le Guild pour obtenir son identifiant", + "Guild ID": "Identifiant de Guild", line: "Line Messenger", mattermost: "Mattermost", "User Key": "Clé d'utilisateur", From f8658d6160e280827fe6f35b6cc825bd771b73f5 Mon Sep 17 00:00:00 2001 From: SlothCroissant Date: Thu, 5 Jan 2023 10:53:41 -0600 Subject: [PATCH 17/73] Removed redundant title in Pushover notification --- server/notification-providers/pushover.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/notification-providers/pushover.js b/server/notification-providers/pushover.js index ebcb88c4f..bafde56e0 100644 --- a/server/notification-providers/pushover.js +++ b/server/notification-providers/pushover.js @@ -10,7 +10,7 @@ class Pushover extends NotificationProvider { let pushoverlink = "https://api.pushover.net/1/messages.json"; let data = { - "message": "Uptime Kuma Alert\n\nMessage:" + msg, + "message": "Message:" + msg, "user": notification.pushoveruserkey, "token": notification.pushoverapptoken, "sound": notification.pushoversounds, From 32f7a0084acbf7c5f0984d55082b320e32a63fb0 Mon Sep 17 00:00:00 2001 From: Matthew Nickson Date: Sun, 8 Jan 2023 19:09:06 +0000 Subject: [PATCH 18/73] Fixed negative retention time values Signed-off-by: Matthew Nickson --- server/jobs/clear-old-data.js | 21 ++++++++----- src/components/settings/MonitorHistory.vue | 6 +++- src/languages/en.js | 2 ++ src/pages/Settings.vue | 36 +++++++++++++++++----- 4 files changed, 49 insertions(+), 16 deletions(-) diff --git a/server/jobs/clear-old-data.js b/server/jobs/clear-old-data.js index 0ec5ffa5f..ed80b0f74 100644 --- a/server/jobs/clear-old-data.js +++ b/server/jobs/clear-old-data.js @@ -25,15 +25,20 @@ const DEFAULT_KEEP_PERIOD = 180; parsedPeriod = DEFAULT_KEEP_PERIOD; } - log(`Clearing Data older than ${parsedPeriod} days...`); + if (parsedPeriod < 1) { + log(`Data deletion has been disabled as period is less than 1. Period is ${parsedPeriod} days.`); + } else { - try { - await R.exec( - "DELETE FROM heartbeat WHERE time < DATETIME('now', '-' || ? || ' days') ", - [ parsedPeriod ] - ); - } catch (e) { - log(`Failed to clear old data: ${e.message}`); + log(`Clearing Data older than ${parsedPeriod} days...`); + + try { + await R.exec( + "DELETE FROM heartbeat WHERE time < DATETIME('now', '-' || ? || ' days') ", + [ parsedPeriod ] + ); + } catch (e) { + log(`Failed to clear old data: ${e.message}`); + } } exit(); diff --git a/src/components/settings/MonitorHistory.vue b/src/components/settings/MonitorHistory.vue index c78c6aaf7..afcb7bc9e 100644 --- a/src/components/settings/MonitorHistory.vue +++ b/src/components/settings/MonitorHistory.vue @@ -7,6 +7,7 @@ settings.keepDataPeriodDays, ]) }} + {{ $t("infiniteRetention") }} +
+ {{ $t("dataRetentionTimeError") }} +
+
+ + +
+ + diff --git a/src/components/TagsManager.vue b/src/components/TagsManager.vue index 8481fdfeb..b302cd20f 100644 --- a/src/components/TagsManager.vue +++ b/src/components/TagsManager.vue @@ -130,6 +130,7 @@ import { Modal } from "bootstrap"; import VueMultiselect from "vue-multiselect"; import { useToast } from "vue-toastification"; +import { colorOptions } from "../util-frontend"; import Tag from "../components/Tag.vue"; const toast = useToast(); @@ -176,24 +177,7 @@ export default { return this.preSelectedTags.concat(this.newTags).filter(tag => !this.deleteTags.find(monitorTag => monitorTag.id === tag.id)); }, colorOptions() { - return [ - { name: this.$t("Gray"), - color: "#4B5563" }, - { name: this.$t("Red"), - color: "#DC2626" }, - { name: this.$t("Orange"), - color: "#D97706" }, - { name: this.$t("Green"), - color: "#059669" }, - { name: this.$t("Blue"), - color: "#2563EB" }, - { name: this.$t("Indigo"), - color: "#4F46E5" }, - { name: this.$t("Purple"), - color: "#7C3AED" }, - { name: this.$t("Pink"), - color: "#DB2777" }, - ]; + return colorOptions(this); }, validateDraftTag() { let nameInvalid = false; diff --git a/src/components/settings/Tags.vue b/src/components/settings/Tags.vue new file mode 100644 index 000000000..347a6ef29 --- /dev/null +++ b/src/components/settings/Tags.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/src/languages/en.js b/src/languages/en.js index 7a48d0d0c..d35883218 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -74,6 +74,7 @@ export default { Current: "Current", Uptime: "Uptime", "Cert Exp.": "Cert Exp.", + Monitor: "Monitor | Monitors", day: "day | days", "-day": "-day", hour: "hour", @@ -190,6 +191,7 @@ export default { Indigo: "Indigo", Purple: "Purple", Pink: "Pink", + Custom: "Custom", "Search...": "Search...", "Avg. Ping": "Avg. Ping", "Avg. Response": "Avg. Response", @@ -677,4 +679,5 @@ export default { "Specific Monitor Type": "Specific Monitor Type", dataRetentionTimeError: "Retention period must be 0 or greater", infiniteRetention: "Set to 0 for infinite retention.", + confirmDeleteTagMsg: "Are you sure you want to delete this tag? Monitors associated with this tag will not be deleted.", }; diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue index f2dd3475c..f5d32e0eb 100644 --- a/src/pages/Settings.vue +++ b/src/pages/Settings.vue @@ -95,6 +95,9 @@ export default { "reverse-proxy": { title: this.$t("Reverse Proxy"), }, + tags: { + title: this.$t("Tags"), + }, "monitor-history": { title: this.$t("Monitor History"), }, diff --git a/src/router.js b/src/router.js index 380488264..b5b46c307 100644 --- a/src/router.js +++ b/src/router.js @@ -24,6 +24,7 @@ import Appearance from "./components/settings/Appearance.vue"; import General from "./components/settings/General.vue"; const Notifications = () => import("./components/settings/Notifications.vue"); import ReverseProxy from "./components/settings/ReverseProxy.vue"; +import Tags from "./components/settings/Tags.vue"; import MonitorHistory from "./components/settings/MonitorHistory.vue"; const Security = () => import("./components/settings/Security.vue"); import Proxies from "./components/settings/Proxies.vue"; @@ -95,6 +96,10 @@ const routes = [ path: "reverse-proxy", component: ReverseProxy, }, + { + path: "tags", + component: Tags, + }, { path: "monitor-history", component: MonitorHistory, diff --git a/src/util-frontend.js b/src/util-frontend.js index 3323f3279..3ff751fff 100644 --- a/src/util-frontend.js +++ b/src/util-frontend.js @@ -78,3 +78,29 @@ export function getResBaseURL() { return ""; } } + +/** + * Get the tag color options + * Shared between components + * @returns {Object[]} + */ +export function colorOptions(self) { + return [ + { name: self.$t("Gray"), + color: "#4B5563" }, + { name: self.$t("Red"), + color: "#DC2626" }, + { name: self.$t("Orange"), + color: "#D97706" }, + { name: self.$t("Green"), + color: "#059669" }, + { name: self.$t("Blue"), + color: "#2563EB" }, + { name: self.$t("Indigo"), + color: "#4F46E5" }, + { name: self.$t("Purple"), + color: "#7C3AED" }, + { name: self.$t("Pink"), + color: "#DB2777" }, + ]; +} From 9c1ba97e7d362cb30eb2c9e70df6ff40fe60477e Mon Sep 17 00:00:00 2001 From: Nelson Chan Date: Tue, 3 Jan 2023 12:16:25 +0800 Subject: [PATCH 36/73] Chore: Fix typo --- src/components/DockerHostDialog.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/DockerHostDialog.vue b/src/components/DockerHostDialog.vue index 50ffa49c1..193b30128 100644 --- a/src/components/DockerHostDialog.vue +++ b/src/components/DockerHostDialog.vue @@ -73,7 +73,7 @@ export default { emits: [ "added" ], data() { return { - model: null, + modal: null, processing: false, id: null, connectionTypes: [ "socket", "tcp" ], From 4dcf31621e36be9af2fc3151fadd18ed51e3fdd7 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Fri, 13 Jan 2023 15:34:48 +0800 Subject: [PATCH 37/73] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1f26da8bf..b1a0928c8 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,9 @@ -It is a self-hosted monitoring tool like "Uptime Robot". +Uptime Kuma is an easy-to-use self-hosted monitoring tool. - + ## 🥔 Live Demo From db757123ba1ae0f41557d4d3a6c41858ef7b9053 Mon Sep 17 00:00:00 2001 From: long2ice Date: Fri, 13 Jan 2023 16:32:49 +0800 Subject: [PATCH 38/73] refactor: reuse databaseConnectionString --- db/patch-redis-monitor.sql | 6 ------ server/database.js | 1 - server/model/monitor.js | 3 +-- src/pages/EditMonitor.vue | 2 +- 4 files changed, 2 insertions(+), 10 deletions(-) delete mode 100644 db/patch-redis-monitor.sql diff --git a/db/patch-redis-monitor.sql b/db/patch-redis-monitor.sql deleted file mode 100644 index e82f24fec..000000000 --- a/db/patch-redis-monitor.sql +++ /dev/null @@ -1,6 +0,0 @@ -BEGIN TRANSACTION; - -ALTER TABLE monitor - ADD redis_connection_string VARCHAR(255); - -COMMIT diff --git a/server/database.js b/server/database.js index 1ab1f441d..2544f1972 100644 --- a/server/database.js +++ b/server/database.js @@ -66,7 +66,6 @@ class Database { "patch-add-radius-monitor.sql": true, "patch-monitor-add-resend-interval.sql": true, "patch-maintenance-table2.sql": true, - "patch-redis-monitor.sql": true, }; /** diff --git a/server/model/monitor.js b/server/model/monitor.js index 76a18520d..db1bca81a 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -122,7 +122,6 @@ class Monitor extends BeanModel { basic_auth_pass: this.basic_auth_pass, pushToken: this.pushToken, databaseConnectionString: this.databaseConnectionString, - redisConnectionString: this.redisConnectionString, radiusUsername: this.radiusUsername, radiusPassword: this.radiusPassword, radiusSecret: this.radiusSecret, @@ -623,7 +622,7 @@ class Monitor extends BeanModel { } else if (this.type === "redis") { let startTime = dayjs().valueOf(); - bean.msg = await redisPingAsync(this.redisConnectionString); + bean.msg = await redisPingAsync(this.databaseConnectionString); bean.status = UP; bean.ping = dayjs().valueOf() - startTime; } else { diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 6ae204bac..b54b0a20f 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -274,7 +274,7 @@ From 21cd4d64c353b528bac115a6175664983b0112d2 Mon Sep 17 00:00:00 2001 From: long2ice Date: Fri, 13 Jan 2023 19:10:07 +0800 Subject: [PATCH 39/73] fix: redisPingAsync --- server/util-server.js | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/server/util-server.js b/server/util-server.js index f3d01b10e..c443f859a 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -358,14 +358,24 @@ exports.radius = function ( * Redis server ping * @param {string} dsn The redis connection string */ -exports.redisPingAsync = async function (dsn) { - const client = redis.createClient({ - url: dsn, +exports.redisPingAsync = function (dsn) { + return new Promise((resolve, reject) => { + const client = redis.createClient({ + url: dsn, + }); + client.on("error", (err) => { + reject(err); + }); + client.connect().then(() => { + client.ping().then((res, err) => { + if (err) { + reject(err); + } else { + resolve(res); + } + }); + }); }); - await client.connect(); - const pong = await client.ping(); - await client.disconnect(); - return pong; }; /** From 3b5893ea60a101059335698073929d4538e08f74 Mon Sep 17 00:00:00 2001 From: long2ice Date: Fri, 13 Jan 2023 21:30:10 +0800 Subject: [PATCH 40/73] fix: add preserve line in redisPingAsync --- server/util-server.js | 1 + 1 file changed, 1 insertion(+) diff --git a/server/util-server.js b/server/util-server.js index c443f859a..8e1c33cbb 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -354,6 +354,7 @@ exports.radius = function ( ], }); }; + /** * Redis server ping * @param {string} dsn The redis connection string From 0ef686ac2f61914679be1812762c0cd6e0238bcc Mon Sep 17 00:00:00 2001 From: black23 Date: Fri, 13 Jan 2023 14:52:03 +0100 Subject: [PATCH 41/73] Update cs-CZ.js new string --- src/languages/cs-CZ.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/cs-CZ.js b/src/languages/cs-CZ.js index 99ae9ef0a..3396e97b9 100644 --- a/src/languages/cs-CZ.js +++ b/src/languages/cs-CZ.js @@ -591,7 +591,7 @@ export default { "You can divide numbers with": "Čísla můžete dělit pomocí", "or": "nebo", recurringInterval: "Interval", - "Recurring": "Recurring", + "Recurring": "Opakující se", strategyManual: "Aktivní/Neaktivní Ručně", warningTimezone: "Používá se časové pásmo serveru", weekdayShortMon: "Po", From f7d41a30fa7c37e9cc48be3dbf0829ac37e7420d Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Fri, 13 Jan 2023 23:15:41 +0800 Subject: [PATCH 42/73] Update src/components/TagEditDialog.vue Co-authored-by: Matthew Nickson --- src/components/TagEditDialog.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/TagEditDialog.vue b/src/components/TagEditDialog.vue index 182efcbf3..2f6afbed4 100644 --- a/src/components/TagEditDialog.vue +++ b/src/components/TagEditDialog.vue @@ -192,7 +192,6 @@ export default { methods: { /** * Show confirmation for deleting a tag - * @returns {void} */ deleteConfirm() { this.$refs.confirmDelete.show(); From e9497ac1ab66f72fe350521d5fdde307563cbb95 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Sat, 14 Jan 2023 20:49:34 +0800 Subject: [PATCH 43/73] Fix knex.js issue --- package-lock.json | 308 ++++++++++++---------------------------------- package.json | 2 +- 2 files changed, 79 insertions(+), 231 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3fed4f5b6..fbfcebe61 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52,7 +52,7 @@ "prom-client": "~13.2.0", "prometheus-api-metrics": "~3.2.1", "protobufjs": "~7.1.1", - "redbean-node": "0.1.4", + "redbean-node": "~0.2.0", "socket.io": "~4.5.3", "socket.io-client": "~4.5.3", "socks-proxy-agent": "6.1.1", @@ -394,12 +394,12 @@ } }, "node_modules/@azure/msal-node": { - "version": "1.14.5", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.14.5.tgz", - "integrity": "sha512-NcVdMfn8Z3ogN+9RjOSF7uwf2Gki5DEJl0BdDSL83KUAgVAobtkZi5W8EqxbJLrTO/ET0jv5DregrcR5qg2pEA==", + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.14.6.tgz", + "integrity": "sha512-em/qqFL5tLMxMPl9vormAs13OgZpmQoJbiQ/GlWr+BA77eCLoL+Ehr5xRHowYo+LFe5b+p+PJVkRvT+mLvOkwA==", "dependencies": { - "@azure/msal-common": "^9.0.1", - "jsonwebtoken": "^8.5.1", + "@azure/msal-common": "^9.0.2", + "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" }, "engines": { @@ -407,42 +407,13 @@ } }, "node_modules/@azure/msal-node/node_modules/@azure/msal-common": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.1.tgz", - "integrity": "sha512-eNNHIW/cwPTZDWs9KtYgb1X6gtQ+cC+FGX2YN+t4AUVsBdUbqlMTnUs6/c/VBxC2AAGIhgLREuNnO3F66AN2zQ==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.2.tgz", + "integrity": "sha512-qzwxuF8kZAp+rNUactMCgJh8fblq9D4lSqrrIxMDzLjgSZtjN32ix7r/HBe8QdOr76II9SVVPcMkX4sPzPfQ7w==", "engines": { "node": ">=0.8.0" } }, - "node_modules/@azure/msal-node/node_modules/jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", - "dependencies": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=4", - "npm": ">=1.4.28" - } - }, - "node_modules/@azure/msal-node/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, "node_modules/@babel/code-frame": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", @@ -5456,8 +5427,7 @@ "node_modules/colorette": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" }, "node_modules/combine-errors": { "version": "3.0.3", @@ -8351,7 +8321,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, "engines": { "node": ">=8.0.0" } @@ -8399,9 +8368,9 @@ } }, "node_modules/getopts": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.2.5.tgz", - "integrity": "sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz", + "integrity": "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==" }, "node_modules/getos": { "version": "3.2.1", @@ -11670,31 +11639,35 @@ } }, "node_modules/knex": { - "version": "0.95.15", - "resolved": "https://registry.npmjs.org/knex/-/knex-0.95.15.tgz", - "integrity": "sha512-Loq6WgHaWlmL2bfZGWPsy4l8xw4pOE+tmLGkPG0auBppxpI0UcK+GYCycJcqz9W54f2LiGewkCVLBm3Wq4ur/w==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/knex/-/knex-2.4.0.tgz", + "integrity": "sha512-i0GWwqYp1Hs2yvc2rlDO6nzzkLhwdyOZKRdsMTB8ZxOs2IXQyL5rBjSbS1krowCh6V65T4X9CJaKtuIfkaPGSA==", "dependencies": { - "colorette": "2.0.16", - "commander": "^7.1.0", - "debug": "4.3.2", + "colorette": "2.0.19", + "commander": "^9.1.0", + "debug": "4.3.4", "escalade": "^3.1.1", "esm": "^3.2.25", - "getopts": "2.2.5", + "get-package-type": "^0.1.0", + "getopts": "2.3.0", "interpret": "^2.2.0", "lodash": "^4.17.21", "pg-connection-string": "2.5.0", - "rechoir": "0.7.0", + "rechoir": "^0.8.0", "resolve-from": "^5.0.0", - "tarn": "^3.0.1", + "tarn": "^3.0.2", "tildify": "2.0.0" }, "bin": { "knex": "bin/cli.js" }, "engines": { - "node": ">=10" + "node": ">=12" }, "peerDependenciesMeta": { + "better-sqlite3": { + "optional": true + }, "mysql": { "optional": true }, @@ -11715,40 +11688,14 @@ } } }, - "node_modules/knex/node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" - }, "node_modules/knex/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "engines": { - "node": ">= 10" + "node": "^12.20.0 || >=14" } }, - "node_modules/knex/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/knex/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/knex/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -11913,36 +11860,6 @@ "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" }, - "node_modules/lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" - }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" - }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -11952,7 +11869,8 @@ "node_modules/lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true }, "node_modules/lodash.truncate": { "version": "4.4.2", @@ -14242,26 +14160,26 @@ } }, "node_modules/rechoir": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", - "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dependencies": { - "resolve": "^1.9.0" + "resolve": "^1.20.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/redbean-node": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/redbean-node/-/redbean-node-0.1.4.tgz", - "integrity": "sha512-c1U6wnTeWS0c44tn9hkJWzjGgckLNJ8sN1E2bxnnnQsULOfvEVFLf8dLMjqhyyMrZ1L1mp8UvV4OfhRtH/ZrgQ==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/redbean-node/-/redbean-node-0.2.0.tgz", + "integrity": "sha512-bHbNgVpkLOn7i/kvfvGDVGzfDgvf20qVRm4EvQV9tD2V2nhcegYUITzAF3XSL2XVirrb5vmWy85vxM44faBnYw==", "dependencies": { "@types/node": "^14.18.12", "await-lock": "^2.1.0", "dayjs": "^1.11.0", "glob": "^7.2.0", - "knex": "^0.95.15", + "knex": "^2.4.0", "lodash": "^4.17.21" } }, @@ -17469,41 +17387,19 @@ "integrity": "sha512-XqfbglUTVLdkHQ8F9UQJtKseRr3sSnr9ysboxtoswvaMVaEfvyLtMoHv9XdKUfOc0qKGzNgRFd9yRjIWVepl6Q==" }, "@azure/msal-node": { - "version": "1.14.5", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.14.5.tgz", - "integrity": "sha512-NcVdMfn8Z3ogN+9RjOSF7uwf2Gki5DEJl0BdDSL83KUAgVAobtkZi5W8EqxbJLrTO/ET0jv5DregrcR5qg2pEA==", + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.14.6.tgz", + "integrity": "sha512-em/qqFL5tLMxMPl9vormAs13OgZpmQoJbiQ/GlWr+BA77eCLoL+Ehr5xRHowYo+LFe5b+p+PJVkRvT+mLvOkwA==", "requires": { - "@azure/msal-common": "^9.0.1", - "jsonwebtoken": "^8.5.1", + "@azure/msal-common": "^9.0.2", + "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" }, "dependencies": { "@azure/msal-common": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.1.tgz", - "integrity": "sha512-eNNHIW/cwPTZDWs9KtYgb1X6gtQ+cC+FGX2YN+t4AUVsBdUbqlMTnUs6/c/VBxC2AAGIhgLREuNnO3F66AN2zQ==" - }, - "jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", - "requires": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^5.6.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.2.tgz", + "integrity": "sha512-qzwxuF8kZAp+rNUactMCgJh8fblq9D4lSqrrIxMDzLjgSZtjN32ix7r/HBe8QdOr76II9SVVPcMkX4sPzPfQ7w==" } } }, @@ -21363,8 +21259,7 @@ "colorette": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" }, "combine-errors": { "version": "3.0.3", @@ -23457,8 +23352,7 @@ "get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" }, "get-stdin": { "version": "8.0.0", @@ -23485,9 +23379,9 @@ } }, "getopts": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.2.5.tgz", - "integrity": "sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz", + "integrity": "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==" }, "getos": { "version": "3.2.1", @@ -25905,47 +25799,30 @@ "dev": true }, "knex": { - "version": "0.95.15", - "resolved": "https://registry.npmjs.org/knex/-/knex-0.95.15.tgz", - "integrity": "sha512-Loq6WgHaWlmL2bfZGWPsy4l8xw4pOE+tmLGkPG0auBppxpI0UcK+GYCycJcqz9W54f2LiGewkCVLBm3Wq4ur/w==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/knex/-/knex-2.4.0.tgz", + "integrity": "sha512-i0GWwqYp1Hs2yvc2rlDO6nzzkLhwdyOZKRdsMTB8ZxOs2IXQyL5rBjSbS1krowCh6V65T4X9CJaKtuIfkaPGSA==", "requires": { - "colorette": "2.0.16", - "commander": "^7.1.0", - "debug": "4.3.2", + "colorette": "2.0.19", + "commander": "^9.1.0", + "debug": "4.3.4", "escalade": "^3.1.1", "esm": "^3.2.25", - "getopts": "2.2.5", + "get-package-type": "^0.1.0", + "getopts": "2.3.0", "interpret": "^2.2.0", "lodash": "^4.17.21", "pg-connection-string": "2.5.0", - "rechoir": "0.7.0", + "rechoir": "^0.8.0", "resolve-from": "^5.0.0", - "tarn": "^3.0.1", + "tarn": "^3.0.2", "tildify": "2.0.0" }, "dependencies": { - "colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" - }, "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==" }, "resolve-from": { "version": "5.0.0", @@ -26087,36 +25964,6 @@ "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" }, - "lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" - }, - "lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" - }, - "lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" - }, - "lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" - }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -26126,7 +25973,8 @@ "lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true }, "lodash.truncate": { "version": "4.4.2", @@ -27865,23 +27713,23 @@ } }, "rechoir": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", - "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "requires": { - "resolve": "^1.9.0" + "resolve": "^1.20.0" } }, "redbean-node": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/redbean-node/-/redbean-node-0.1.4.tgz", - "integrity": "sha512-c1U6wnTeWS0c44tn9hkJWzjGgckLNJ8sN1E2bxnnnQsULOfvEVFLf8dLMjqhyyMrZ1L1mp8UvV4OfhRtH/ZrgQ==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/redbean-node/-/redbean-node-0.2.0.tgz", + "integrity": "sha512-bHbNgVpkLOn7i/kvfvGDVGzfDgvf20qVRm4EvQV9tD2V2nhcegYUITzAF3XSL2XVirrb5vmWy85vxM44faBnYw==", "requires": { "@types/node": "^14.18.12", "await-lock": "^2.1.0", "dayjs": "^1.11.0", "glob": "^7.2.0", - "knex": "^0.95.15", + "knex": "^2.4.0", "lodash": "^4.17.21" }, "dependencies": { diff --git a/package.json b/package.json index 8093bec59..b87eb0e2a 100644 --- a/package.json +++ b/package.json @@ -109,7 +109,7 @@ "prom-client": "~13.2.0", "prometheus-api-metrics": "~3.2.1", "protobufjs": "~7.1.1", - "redbean-node": "0.1.4", + "redbean-node": "~0.2.0", "socket.io": "~4.5.3", "socket.io-client": "~4.5.3", "socks-proxy-agent": "6.1.1", From 712a3c29d48521ef7148807bdc1e69674339a4be Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Sat, 14 Jan 2023 21:06:10 +0800 Subject: [PATCH 44/73] Fix Postgres monitor do not handle some error cases correctly --- server/util-server.js | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/server/util-server.js b/server/util-server.js index 60d8baac7..f66b10399 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -280,18 +280,23 @@ exports.postgresQuery = function (connectionString, query) { const client = new Client({ connectionString }); - client.connect(); - - return client.query(query) - .then(res => { - resolve(res); - }) - .catch(err => { + client.connect((err) => { + if (err) { reject(err); - }) - .finally(() => { client.end(); - }); + } else { + // Connected here + client.query(query, (err, res) => { + if (err) { + reject(err); + } else { + resolve(res); + } + client.end(); + }); + } + }); + }); }; From 1326761a8a92b307f194d3bf92d70ac43674f206 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Sun, 15 Jan 2023 01:36:49 +0800 Subject: [PATCH 45/73] Update mongodb and simplify the logic of mongodbPing --- package-lock.json | 14 +++++++------- package.json | 2 +- server/util-server.js | 21 +++++++-------------- 3 files changed, 15 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index a03e3956f..c510233ed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,7 +39,7 @@ "jsonwebtoken": "~9.0.0", "jwt-decode": "~3.1.2", "limiter": "~2.1.0", - "mongodb": "^4.12.0", + "mongodb": "~4.13.0", "mqtt": "~4.3.7", "mssql": "~8.1.4", "mysql2": "~2.3.3", @@ -13611,9 +13611,9 @@ } }, "node_modules/mongodb": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.12.0.tgz", - "integrity": "sha512-ssWod7DqVE4faluZESdOqYhV1BI5CQA5c31sr+zxDLJDBX9EA5VJLo8RNSItPTwxExmuGn/T6MbETQWjywNehA==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.13.0.tgz", + "integrity": "sha512-+taZ/bV8d1pYuHL4U+gSwkhmDrwkWbH1l4aah4YpmpscMwgFBkufIKxgP/G7m87/NUuQzc2Z75ZTI7ZOyqZLbw==", "dependencies": { "bson": "^4.7.0", "mongodb-connection-string-url": "^2.5.4", @@ -28738,9 +28738,9 @@ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" }, "mongodb": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.12.0.tgz", - "integrity": "sha512-ssWod7DqVE4faluZESdOqYhV1BI5CQA5c31sr+zxDLJDBX9EA5VJLo8RNSItPTwxExmuGn/T6MbETQWjywNehA==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.13.0.tgz", + "integrity": "sha512-+taZ/bV8d1pYuHL4U+gSwkhmDrwkWbH1l4aah4YpmpscMwgFBkufIKxgP/G7m87/NUuQzc2Z75ZTI7ZOyqZLbw==", "requires": { "@aws-sdk/credential-providers": "^3.186.0", "bson": "^4.7.0", diff --git a/package.json b/package.json index b3d1a656f..276c43823 100644 --- a/package.json +++ b/package.json @@ -96,7 +96,7 @@ "jsonwebtoken": "~9.0.0", "jwt-decode": "~3.1.2", "limiter": "~2.1.0", - "mongodb": "^4.12.0", + "mongodb": "~4.13.0", "mqtt": "~4.3.7", "mssql": "~8.1.4", "mysql2": "~2.3.3", diff --git a/server/util-server.js b/server/util-server.js index a28b99ad9..a0ed03d71 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -325,21 +325,14 @@ exports.mysqlQuery = function (connectionString, query) { * @returns {Promise<(string[]|Object[]|Object)>} */ exports.mongodbPing = async function (connectionString) { - let client; + let client = await MongoClient.connect(connectionString); + let dbPing = await client.db().command({ ping: 1 }); + await client.close(); - try { - client = await MongoClient.connect(connectionString, { useNewUrlParser: true }); - let db = client.db(); - let dbping = await db.command({ ping: 1 }); - await client.close(); - if (dbping["ok"] === 1) { - return "UP"; - } else { - throw Error("failed"); - } - } catch (err) { - console.error(err); - throw Error(err); + if (dbPing["ok"] === 1) { + return "UP"; + } else { + throw Error("failed"); } }; From ae3a543b3b2ef4c48c09e0d633f91231e4292ed4 Mon Sep 17 00:00:00 2001 From: 401Unauthorized Date: Tue, 27 Dec 2022 18:11:53 +0800 Subject: [PATCH 46/73] convert language files to json format --- src/i18n.js | 2 +- src/lang/bg-BG.json | 672 +++++++++++++++++++++++++++++++++++++++++ src/lang/cs-CZ.json | 626 ++++++++++++++++++++++++++++++++++++++ src/lang/da-DK.json | 355 ++++++++++++++++++++++ src/lang/de-CH.json | 634 +++++++++++++++++++++++++++++++++++++++ src/lang/de-DE.json | 641 +++++++++++++++++++++++++++++++++++++++ src/lang/el-GR.json | 587 ++++++++++++++++++++++++++++++++++++ src/lang/en.json | 678 +++++++++++++++++++++++++++++++++++++++++ src/lang/es-ES.json | 209 +++++++++++++ src/lang/et-EE.json | 209 +++++++++++++ src/lang/eu.json | 541 +++++++++++++++++++++++++++++++++ src/lang/fa.json | 208 +++++++++++++ src/lang/fr-FR.json | 672 +++++++++++++++++++++++++++++++++++++++++ src/lang/he-IL.json | 672 +++++++++++++++++++++++++++++++++++++++++ src/lang/hr-HR.json | 581 +++++++++++++++++++++++++++++++++++ src/lang/hu.json | 376 +++++++++++++++++++++++ src/lang/id-ID.json | 585 ++++++++++++++++++++++++++++++++++++ src/lang/it-IT.json | 367 +++++++++++++++++++++++ src/lang/ja.json | 201 +++++++++++++ src/lang/ko-KR.json | 531 ++++++++++++++++++++++++++++++++ src/lang/nb-NO.json | 285 ++++++++++++++++++ src/lang/nl-NL.json | 531 ++++++++++++++++++++++++++++++++ src/lang/pl.json | 644 +++++++++++++++++++++++++++++++++++++++ src/lang/pt-BR.json | 203 +++++++++++++ src/lang/pt-PT.json | 203 +++++++++++++ src/lang/ru-RU.json | 581 +++++++++++++++++++++++++++++++++++ src/lang/sl-SI.json | 357 ++++++++++++++++++++++ src/lang/sr-latn.json | 204 +++++++++++++ src/lang/sr.json | 204 +++++++++++++ src/lang/sv-SE.json | 110 +++++++ src/lang/th-TH.json | 580 +++++++++++++++++++++++++++++++++++ src/lang/tr-TR.json | 678 +++++++++++++++++++++++++++++++++++++++++ src/lang/uk-UA.json | 530 ++++++++++++++++++++++++++++++++ src/lang/vi-VN.json | 469 +++++++++++++++++++++++++++++ src/lang/zh-CN.json | 683 ++++++++++++++++++++++++++++++++++++++++++ src/lang/zh-HK.json | 388 ++++++++++++++++++++++++ src/lang/zh-TW.json | 672 +++++++++++++++++++++++++++++++++++++++++ src/mixins/lang.js | 4 +- 38 files changed, 16670 insertions(+), 3 deletions(-) create mode 100644 src/lang/bg-BG.json create mode 100644 src/lang/cs-CZ.json create mode 100644 src/lang/da-DK.json create mode 100644 src/lang/de-CH.json create mode 100644 src/lang/de-DE.json create mode 100644 src/lang/el-GR.json create mode 100644 src/lang/en.json create mode 100644 src/lang/es-ES.json create mode 100644 src/lang/et-EE.json create mode 100644 src/lang/eu.json create mode 100644 src/lang/fa.json create mode 100644 src/lang/fr-FR.json create mode 100644 src/lang/he-IL.json create mode 100644 src/lang/hr-HR.json create mode 100644 src/lang/hu.json create mode 100644 src/lang/id-ID.json create mode 100644 src/lang/it-IT.json create mode 100644 src/lang/ja.json create mode 100644 src/lang/ko-KR.json create mode 100644 src/lang/nb-NO.json create mode 100644 src/lang/nl-NL.json create mode 100644 src/lang/pl.json create mode 100644 src/lang/pt-BR.json create mode 100644 src/lang/pt-PT.json create mode 100644 src/lang/ru-RU.json create mode 100644 src/lang/sl-SI.json create mode 100644 src/lang/sr-latn.json create mode 100644 src/lang/sr.json create mode 100644 src/lang/sv-SE.json create mode 100644 src/lang/th-TH.json create mode 100644 src/lang/tr-TR.json create mode 100644 src/lang/uk-UA.json create mode 100644 src/lang/vi-VN.json create mode 100644 src/lang/zh-CN.json create mode 100644 src/lang/zh-HK.json create mode 100644 src/lang/zh-TW.json diff --git a/src/i18n.js b/src/i18n.js index aff60c75f..0a6874b60 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -1,5 +1,5 @@ import { createI18n } from "vue-i18n/dist/vue-i18n.esm-browser.prod.js"; -import en from "./languages/en"; +import en from "./lang/en.json"; const languageList = { "cs-CZ": "Čeština", diff --git a/src/lang/bg-BG.json b/src/lang/bg-BG.json new file mode 100644 index 000000000..2c4ce95fb --- /dev/null +++ b/src/lang/bg-BG.json @@ -0,0 +1,672 @@ +{ + "languageName": "Български", + "checkEverySecond": "Ще се извършва на всеки {0} секунди", + "retryCheckEverySecond": "Ще се извършва на всеки {0} секунди", + "retriesDescription": "Максимален брой опити преди маркиране на услугата като недостъпна и изпращане на известие", + "ignoreTLSError": "Игнорирай TLS/SSL грешки за HTTPS уеб сайтове", + "upsideDownModeDescription": "Обръща статуса от достъпен на недостъпен. Ако услугата е достъпна, ще се вижда като НЕДОСТЪПНА.", + "maxRedirectDescription": "Максимален брой пренасочвания, които да бъдат следвани. Въведете 0 за да изключите пренасочване.", + "acceptedStatusCodesDescription": "Изберете статус кодове, които да се считат за успешен отговор.", + "passwordNotMatchMsg": "Повторената парола не съвпада.", + "notificationDescription": "Моля, задайте известието към монитор(и), за да функционира.", + "keywordDescription": "Търси ключова дума в чист html или JSON отговор - чувствителна е към регистъра", + "pauseDashboardHome": "Пауза", + "deleteMonitorMsg": "Наистина ли желаете да изтриете този монитор?", + "deleteNotificationMsg": "Наистина ли желаете да изтриете това известие за всички монитори?", + "resolverserverDescription": "Cloudflare е сървърът по подразбиране, но можете да го промените по всяко време.", + "rrtypeDescription": "Изберете ресурсния запис, който желаете да наблюдавате", + "pauseMonitorMsg": "Наистина ли желаете да поставите в режим пауза?", + "enableDefaultNotificationDescription": "За всеки нов монитор това известие ще бъде активирано по подразбиране. Можете да го изключите за всеки отделен монитор.", + "clearEventsMsg": "Наистина ли желаете да изтриете всички събития за този монитор?", + "clearHeartbeatsMsg": "Наистина ли желаете да изтриете всички записи за честотни проверки на този монитор?", + "confirmClearStatisticsMsg": "Наистина ли желаете да изтриете всички статистически данни?", + "importHandleDescription": "Изберете 'Пропусни съществуващите', ако желаете да пропуснете всеки монитор или известие със същото име. 'Презапис' ще изтрие всеки съществуващ монитор и известие.", + "confirmImportMsg": "Сигурни ли сте, че желаете импортирането на архива? Моля, уверете се, че сте избрали правилната опция за импортиране.", + "twoFAVerifyLabel": "Моля, въведете вашия токен код, за да проверите дали 2FA работи", + "tokenValidSettingsMsg": "Токен кодът е валиден! Вече можете да запазите настройките за 2FA.", + "confirmEnableTwoFAMsg": "Сигурни ли сте, че желаете да активирате 2FA?", + "confirmDisableTwoFAMsg": "Сигурни ли сте, че желаете да изключите 2FA?", + "Settings": "Настройки", + "Dashboard": "Табло", + "New Update": "Налична е актуализация", + "Language": "Език", + "Appearance": "Изглед", + "Theme": "Тема", + "General": "Общи", + "Version": "Версия", + "Check Update On GitHub": "Проверка за актуализация в GitHub", + "List": "Списък", + "Add": "Добави", + "Add New Monitor": "Добави монитор", + "Quick Stats": "Кратка статистика", + "Up": "Достъпен", + "Down": "Недостъпен", + "Pending": "Изчаква", + "Unknown": "Неизвестен", + "Pause": "Пауза", + "Name": "Име", + "Status": "Статус", + "DateTime": "Дата и час", + "Message": "Отговор", + "No important events": "Все още няма събития", + "Resume": "Възобнови", + "Edit": "Редактирай", + "Delete": "Изтрий", + "Current": "Текущ", + "Uptime": "Достъпност", + "Cert Exp.": "Вал. сертификат", + "day": "ден | дни", + "-day": "-дни", + "hour": "час", + "-hour": "-часa", + "Response": "Отговор", + "Ping": "Пинг", + "Monitor Type": "Монитор тип", + "Keyword": "Ключова дума", + "Friendly Name": "Псевдоним", + "URL": "URL Адрес", + "Hostname": "Име на хост", + "Port": "Порт", + "Heartbeat Interval": "Честота на проверка", + "Retries": "Повторни опити", + "Heartbeat Retry Interval": "Честота на повторните опити", + "Advanced": "Разширени", + "Upside Down Mode": "Обърнат режим", + "Max. Redirects": "Макс. брой пренасочвания", + "Accepted Status Codes": "Допустими статус кодове", + "Save": "Запази", + "Notifications": "Известия", + "Not available, please setup.": "Не са налични. Моля, настройте.", + "Setup Notification": "Настрой известие", + "Light": "Светла", + "Dark": "Тъмна", + "Auto": "Автоматично", + "Theme - Heartbeat Bar": "Тема - поле проверки", + "Normal": "Нормално", + "Bottom": "Долу", + "None": "Без", + "Timezone": "Часова зона", + "Search Engine Visibility": "Видимост за търсачки", + "Allow indexing": "Разреши индексиране", + "Discourage search engines from indexing site": "Не позволявай на търсачките да индексират този сайт", + "Change Password": "Промяна на парола", + "Current Password": "Текуща парола", + "New Password": "Нова парола", + "Repeat New Password": "Повторете новата парола", + "Update Password": "Актуализирай паролата", + "Disable Auth": "Изключи удостоверяване", + "Enable Auth": "Активирай удостоверяване", + "disableauth.message1": "Сигурни ли сте, че желаете да изключите удостоверяването?", + "disableauth.message2": "Използва се в случаите, когато има настроен алтернативен метод за удостоверяване преди Uptime Kuma, например Cloudflare Access, Authelia или друг механизъм за удостоверяване.", + "Please use this option carefully!": "Моля, използвайте с повишено внимание.", + "Logout": "Изход от профила", + "Leave": "Отказ", + "I understand, please disable": "Разбирам. Моля, изключи", + "Confirm": "Потвърдете", + "Yes": "Да", + "No": "Не", + "Username": "Потребител", + "Password": "Парола", + "Remember me": "Запомни ме", + "Login": "Вход", + "No Monitors, please": "Все още няма монитори. Моля, добавете поне ", + "add one": "един.", + "Notification Type": "Тип известие", + "Email": "Имейл", + "Test": "Тест", + "Certificate Info": "Информация за сертификат", + "Resolver Server": "Преобразуващ (DNS) сървър", + "Resource Record Type": "Тип запис", + "Last Result": "Последен резултат", + "Create your admin account": "Създаване на администриращ акаунт", + "Repeat Password": "Повторете паролата", + "Import Backup": "Импорт на архив", + "Export Backup": "Експорт на архив", + "Export": "Експорт", + "Import": "Импорт", + "respTime": "Време за отговор (ms)", + "notAvailableShort": "Няма", + "Default enabled": "Активирано по подразбиране", + "Apply on all existing monitors": "Приложи върху всички съществуващи монитори", + "Create": "Създай", + "Clear Data": "Изтрий данни", + "Events": "Събития", + "Heartbeats": "Проверки", + "Auto Get": "Авт. попълване", + "backupDescription": "Можете да архивирате всички монитори и всички известия в JSON файл.", + "backupDescription2": "PS: Имайте предвид, че данните за история и събития няма да бъдат включени.", + "backupDescription3": "Чувствителни данни, като токен кодове за известия, се съдържат в експортирания файл. Моля, бъдете внимателни с неговото съхранение.", + "alertNoFile": "Моля, изберете файл за импортиране.", + "alertWrongFileType": "Моля, изберете JSON файл.", + "Clear all statistics": "Изтрий цялата статистика", + "Skip existing": "Пропусни съществуващите", + "Overwrite": "Презапиши", + "Options": "Опции", + "Keep both": "Запази двете", + "Verify Token": "Провери токен код", + "Setup 2FA": "Настройка 2FA", + "Enable 2FA": "Активирай 2FA", + "Disable 2FA": "Деактивирай 2FA", + "2FA Settings": "Настройка за 2FA", + "Two Factor Authentication": "Двуфакторно удостоверяване", + "Active": "Активно", + "Inactive": "Неактивно", + "Token": "Токен код", + "Show URI": "Покажи URI", + "Tags": "Етикети", + "Add New below or Select...": "Добавете нов по-долу или изберете...", + "Tag with this name already exist.": "Етикет с това име вече съществува.", + "Tag with this value already exist.": "Етикет с тази стойност вече съществува.", + "color": "цвят", + "value (optional)": "стойност (по желание)", + "Gray": "Сиво", + "Red": "Червено", + "Orange": "Оранжево", + "Green": "Зелено", + "Blue": "Синьо", + "Indigo": "Индиго", + "Purple": "Лилаво", + "Pink": "Розово", + "Search...": "Търси...", + "Avg. Ping": "Ср. пинг", + "Avg. Response": "Ср. отговор", + "Entry Page": "Основна страница", + "statusPageNothing": "Все още няма нищо тук. Моля, добавете група или монитор.", + "No Services": "Няма Услуги", + "All Systems Operational": "Всички услуги са достъпни", + "Partially Degraded Service": "Част от услугите са недостъпни", + "Degraded Service": "Всички услуги са недостъпни", + "Add Group": "Добави група", + "Add a monitor": "Добави монитор", + "Edit Status Page": "Редактиране Статус страница", + "Go to Dashboard": "Към Таблото", + "telegram": "Telegram", + "webhook": "Уеб кука", + "smtp": "Имейл (SMTP)", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Поддържа 50+ услуги за известяване)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "Status Page": "Статус страница", + "Status Pages": "Статус страници", + "Primary Base URL": "Основен базов URL адрес", + "Push URL": "Генериран Push URL адрес", + "needPushEvery": "Необходимо е да извършвате заявка към този URL адрес на всеки {0} секунди", + "pushOptionalParams": "Допълнителни, но не задължителни параметри: {0}", + "defaultNotificationName": "Моето {notification} известие ({number})", + "here": "тук", + "Required": "Задължително поле", + "Bot Token": "Бот токен", + "wayToGetTelegramToken": "Можете да получите токен от {0}.", + "Chat ID": "Чат ID", + "supportTelegramChatID": "Поддържа Direct Chat / Group / Channel's Chat ID", + "wayToGetTelegramChatID": "Можете да получите вашето чат ID, като изпратите съобщение на бота, след което е нужно да посетите този URL адрес за да го видите:", + "YOUR BOT TOKEN HERE": "ВАШИЯТ БОТ ТОКЕН ТУК", + "chatIDNotFound": "Чат ID не е намерено. Моля, първо изпратете съобщение до този бот", + "Post URL": "Post URL адрес", + "Content Type": "Тип съдържание", + "webhookJsonDesc": "{0} е подходящ за всички съвременни http сървъри, като например express.js", + "webhookFormDataDesc": "{multipart} е подходящ за PHP, нужно е да анализирате json чрез {decodeFunction}", + "secureOptionNone": "Няма (25) / STARTTLS (587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Игнорирай TLS грешките", + "From Email": "От имейл адрес", + "emailCustomSubject": "Модифициране на тема", + "To Email": "Получател имейл адрес", + "smtpCC": "Явно копие до имейл адрес:", + "smtpBCC": "Скрито копие до имейл адрес:", + "Discord Webhook URL": "Discord URL адрес на уеб кука", + "wayToGetDiscordURL": "Може да създадете, от меню \"Настройки на сървъра\" -> \"Интеграции\" -> \"Уеб куки\" -> \"Нова уеб кука\"", + "Bot Display Name": "Име на бота, което да се показва", + "Prefix Custom Message": "Модифицирано обръщение", + "Hello @everyone is...": "Здравейте, {'@'}everyone е...", + "Webhook URL": "Уеб кука URL адрес", + "wayToGetTeamsURL": "Можете да научите как се създава URL адрес за уеб кука {0}.", + "Number": "Номер", + "Recipients": "Получатели", + "needSignalAPI": "Необходимо е да разполагате със Signal клиент с REST API.", + "wayToCheckSignalURL": "Може да посетите този URL адрес, ако се нуждаете от помощ при настройването:", + "signalImportant": "ВАЖНО: Не може да смесвате \"Групи\" и \"Номера\" в поле \"Получатели\"!", + "Application Token": "Токен код за приложението", + "Server URL": "URL адрес на сървъра", + "Priority": "Приоритет", + "Icon Emoji": "Иконка Емотикон", + "Channel Name": "Канал име", + "Uptime Kuma URL": "Uptime Kuma URL адрес", + "aboutWebhooks": "Повече информация относно уеб куки на: {0}", + "aboutChannelName": "Въведете името на канала в поле {0} \"Канал име\", ако желаете да заобиколите канала от уеб куката. Например: #other-channel", + "aboutKumaURL": "Ако оставите празно полето \"Uptime Kuma URL адрес\", по подразбиране ще се използва GitHub страницата на проекта.", + "emojiCheatSheet": "Подсказки за емотикони: {0}", + "User Key": "Потребителски ключ", + "Device": "Устройство", + "Message Title": "Заглавие на съобщението", + "Notification Sound": "Звуков сигнал", + "More info on:": "Повече информация на: {0}", + "pushoverDesc1": "Приоритет Спешно (2) по подразбиране изчаква 30 секунди между повторните опити и изтича след 1 час.", + "pushoverDesc2": "Ако желаете да изпратите известия до различни устройства, попълнете полето Устройство.", + "SMS Type": "SMS тип", + "octopushTypePremium": "Премиум (Бърз - препоръчителен в случай на тревога)", + "octopushTypeLowCost": "Евтин (Бавен - понякога бива блокиран от оператора)", + "checkPrice": "Тарифни планове на {0}:", + "octopushLegacyHint": "Дали използвате съвместима версия на Octopush (2011-2020) или нова версия?", + "Check octopush prices": "Тарифни планове на octopush {0}.", + "octopushPhoneNumber": "Телефонен номер (в международен формат, например: +33612345678) ", + "octopushSMSSender": "SMS подател Име: 3-11 знака - букви, цифри и интервал (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea ID на устройство", + "Apprise URL": "Apprise URL адрес", + "Example:": "Пример: {0}", + "Read more:": "Научете повече: {0}", + "Status:": "Статус: {0}", + "Read more": "Научете повече", + "appriseInstalled": "Apprise е инсталиран.", + "appriseNotInstalled": "Apprise не е инсталиран. {0}", + "Access Token": "Токен код за достъп", + "Channel access token": "Канал токен код", + "Line Developers Console": "Line - Конзола за разработчици", + "lineDevConsoleTo": "Line - Конзола за разработчици - {0}", + "Basic Settings": "Основни настройки", + "User ID": "Потребител ID", + "Messaging API": "API за съобщаване", + "wayToGetLineChannelToken": "Необходимо е първо да посетите {0}, за да създадете (Messaging API) за доставчик и канал, след което може да вземете токен кода за канал и потребителско ID от споменатите по-горе елементи на менюто.", + "Icon URL": "URL адрес за иконка", + "aboutIconURL": "Може да предоставите линк към картинка в поле \"URL Адрес за иконка\" за да отмените картинката на профила по подразбиране. Няма да се използва, ако вече сте настроили емотикон.", + "aboutMattermostChannelName": "Може да замените канала по подразбиране, към който публикува уеб куката, като въведете името на канала в полето \"Канал име\". Трябва да бъде активирано в настройките за уеб кука на Mattermost. Например: #other-channel", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - евтин, но бавен. Често е претоварен. Само за получатели от Полша.", + "promosmsTypeFlash": "SMS FLASH - Съобщението автоматично се показва на устройството на получателя. Само за получатели от Полша.", + "promosmsTypeFull": "SMS FULL - Високо ниво на SMS услуга. Може да използвате Вашето име като подател (Необходимо е първо да регистрирате името). Надежден метод за съобщения тип тревога.", + "promosmsTypeSpeed": "SMS SPEED - Най-висок приоритет в системата. Много бърза и надеждна, но същевременно скъпа услуга. (Около два пъти по-висока цена в сравнение с SMS FULL).", + "promosmsPhoneNumber": "Телефонен номер (за получатели от Полша, може да пропуснете въвеждането на код за населено място)", + "promosmsSMSSender": "SMS Подател име: Предварително регистрирано име или някое от имената по подразбиране: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu URL адрес за уеб кука", + "matrixHomeserverURL": "Сървър URL адрес (започва с http(s):// и порт по желание)", + "Internal Room Id": "ID на вътрешна стая", + "matrixDesc1": "Може да намерите \"ID на вътрешна стая\" в разширените настройки на стаята във вашия Matrix клиент. Примерен изглед: !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Силно препоръчваме да създадете НОВ потребител и да НЕ използвате токен кодът на вашия личен Matrix потребител, т.к. той позволява пълен достъп до вашия акаунт и всички стаи към които сте се присъединили. Вместо това създайте нов потребител и го поканете само в стаята, където желаете да получавате известията. Токен код за достъп ще получите изпълнявайки {0}", + "Method": "Метод", + "Body": "Съобщение", + "Headers": "Хедъри", + "PushUrl": "Push URL адрес", + "HeadersInvalidFormat": "Заявените хедъри не са валидни JSON: ", + "BodyInvalidFormat": "Заявеното съобщение не е валиден JSON: ", + "Monitor History": "История на мониторите", + "clearDataOlderThan": "Ще се съхранява за {0} дни.", + "records": "записа", + "One record": "Един запис", + "steamApiKeyDescription": "За да мониторирате Steam Gameserver се нуждаете от Steam Web-API ключ. Може да регистрирате Вашия API ключ тук: ", + "clicksendsms": "ClickSend SMS", + "apiCredentials": "API удостоверяване", + "PasswordsDoNotMatch": "Паролите не съвпадат.", + "Current User": "Текущ потребител", + "recent": "Скорошни", + "shrinkDatabaseDescription": "Инициира \"VACUUM\" за \"SQLite\" база данни. Ако Вашата база данни е създадена след версия 1.10.0, \"AUTO_VACUUM\" функцията е активна и това действие не е нужно.", + "Done": "Готово", + "Info": "Информация", + "Security": "Сигурност", + "Steam API Key": "Steam API ключ", + "Shrink Database": "Редуцирай базата данни", + "Pick a RR-Type...": "Изберете вида на ресурсния запис за мониториране...", + "Pick Accepted Status Codes...": "Изберете статус кодове, които да се считат за успешен отговор...", + "Default": "По подразбиране", + "HTTP Options": "HTTP Опции", + "Create Incident": "Създаване на инцидент", + "Title": "Заглавие", + "Content": "Съдържание", + "Style": "Стил", + "info": "информация", + "warning": "предупреждение", + "danger": "опасност", + "primary": "основен", + "light": "светъл", + "dark": "тъмен", + "Post": "Публикувай", + "Please input title and content": "Моля, въведете заглавие и съдържание", + "Created": "Създаден", + "Last Updated": "Последно обновен", + "Unpin": "Откачи", + "Switch to Light Theme": "Превключи към светла тема", + "Switch to Dark Theme": "Превключи към тъмна тема", + "Show Tags": "Покажи етикети", + "Hide Tags": "Скрий етикети", + "Description": "Описание", + "No monitors available.": "Няма налични монитори.", + "Add one": "Добави един", + "No Monitors": "Няма монитори", + "Untitled Group": "Група без заглавие", + "Services": "Услуги", + "Discard": "Отмени", + "Cancel": "Отмени", + "Powered by": "Създадено чрез", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API Потребителско име (вкл. webapi_ prefix)", + "serwersmsAPIPassword": "API Парола", + "serwersmsPhoneNumber": "Телефон номер", + "serwersmsSenderName": "SMS Подател име (регистриран през клиентския портал)", + "stackfield": "Stackfield", + "smtpDkimSettings": "DKIM Настройки", + "smtpDkimDesc": "Моля, вижте {0} на Nodemailer DKIM за инструкции.", + "documentation": "документацията", + "smtpDkimDomain": "Домейн", + "smtpDkimKeySelector": "Селектор на ключ", + "smtpDkimPrivateKey": "Частен ключ", + "smtpDkimHashAlgo": "Хеш алгоритъм (по желание)", + "smtpDkimheaderFieldNames": "Хедър ключове за подписване (по желание)", + "smtpDkimskipFields": "Хедър ключове, които да не се подписват (по желание)", + "PushByTechulus": "Push от Techulus", + "GoogleChat": "Google Chat (Само за работното пространство на Google)", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "Крайна точка на API", + "alertaEnvironment": "Среда", + "alertaApiKey": "API Ключ", + "alertaAlertState": "Състояние на тревога", + "alertaRecoverState": "Състояние на възстановяване", + "deleteStatusPageMsg": "Сигурни ли сте, че желаете да изтриете тази статус страница?", + "Proxies": "Прокси", + "default": "По подразбиране", + "enabled": "Активирано", + "setAsDefault": "Зададен по подразбиране", + "deleteProxyMsg": "Сигурни ли сте, че желаете да изтриете това прокси за всички монитори?", + "proxyDescription": "За да функционират трябва да бъдат зададени към монитор.", + "enableProxyDescription": "Това прокси няма да има ефект върху заявките за мониторинг, докато не бъде активирано. Може да контролирате временното деактивиране на проксито от всички монитори чрез статуса на активиране.", + "setAsDefaultProxyDescription": "Това прокси ще бъде активно по подразбиране за новите монитори. Може да го изключите по отделно за всеки един монитор.", + "Certificate Chain": "Верига на сертификата", + "Valid": "Валиден", + "Invalid": "Невалиден", + "AccessKeyId": "ID на ключ за достъп", + "SecretAccessKey": "Тайна на ключа за достъп", + "PhoneNumbers": "Телефонни номера", + "TemplateCode": "Шаблон Код", + "SignName": "Знак име", + "Sms template must contain parameters: ": "SMS шаблонът трябва да съдържа следните параметри: ", + "Bark Endpoint": "Bark крайна точка", + "WebHookUrl": "URL адрес на уеб кука", + "SecretKey": "Таен ключ", + "For safety, must use secret key": "За сигурност, трябва да се използва таен ключ", + "Device Token": "Токен за устройство", + "Platform": "Платформа", + "iOS": "iOS", + "Android": "Android", + "Huawei": "Huawei", + "High": "Висок", + "Retry": "Повтори", + "Topic": "Тема", + "WeCom Bot Key": "WeCom бот ключ", + "Setup Proxy": "Настрой прокси", + "Proxy Protocol": "Прокси протокол", + "Proxy Server": "Прокси сървър", + "Proxy server has authentication": "Прокси сървърът е с удостоверяване", + "User": "Потребител", + "Installed": "Инсталиран", + "Not installed": "Не е инсталиран", + "Running": "Работи", + "Not running": "Не работи", + "Remove Token": "Премахни токен", + "Start": "Стартирай", + "Stop": "Спри", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "Добави нова статус страница", + "Slug": "Слъг", + "Accept characters:": "Приеми символи:", + "startOrEndWithOnly": "Започва или завършва само с {0}", + "No consecutive dashes": "Без последователни тирета", + "Next": "Следващ", + "The slug is already taken. Please choose another slug.": "Този слъг вече се използва. Моля изберете друг.", + "No Proxy": "Без прокси", + "Authentication": "Удостоверяване", + "HTTP Basic Auth": "HTTP основно удостоверяване", + "New Status Page": "Нова статус страница", + "Page Not Found": "Страницата не е открита", + "Reverse Proxy": "Ревърс прокси", + "Backup": "Архивиране", + "About": "Относно", + "wayToGetCloudflaredURL": "(Свалете \"cloudflared\" от {0})", + "cloudflareWebsite": "Cloudflare уеб сайт", + "Message:": "Съобщение:", + "Don't know how to get the token? Please read the guide:": "Не знаете как да вземете токен? Моля, прочетете ръководството:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Текущата връзка може да прекъсне ако в момента сте свързани чрез \"Cloudflare Tunnel\". Сигурни ли сте, че желаете да го спрете? Въведете Вашата текуща парола за да потвърдите.", + "Other Software": "Друг софтуер", + "For example: nginx, Apache and Traefik.": "Например: Nginx, Apache и Traefik.", + "Please read": "Моля, прочетете", + "Subject:": "Тема:", + "Valid To:": "Валиден до:", + "Days Remaining:": "Оставащи дни:", + "Issuer:": "Издател:", + "Fingerprint:": "Пръстов отпечатък:", + "No status pages": "Няма статус страници", + "topic": "Тема", + "topicExplanation": "MQTT тема за мониториране", + "successMessage": "Съобщение при успех", + "successMessageExplanation": "MQTT съобщение, което ще бъде считано за успех", + "Customize": "Персонализирай", + "Custom Footer": "Персонализиран долен колонтитул", + "Custom CSS": "Потребителски CSS", + "Domain Name Expiry Notification": "Известие при изтичащ домейн", + "Proxy": "Прокси", + "Date Created": "Дата на създаване", + "onebotHttpAddress": "OneBot HTTP адрес", + "onebotMessageType": "OneBot тип съобщение", + "onebotGroupMessage": "Група", + "onebotPrivateMessage": "Лично", + "onebotUserOrGroupId": "Група/Потребител ID", + "onebotSafetyTips": "С цел безопасност трябва да зададете токен код за достъп", + "PushDeer Key": "PushDeer ключ", + "Footer Text": "Текст долен колонтитул", + "Show Powered By": "Покажи \"Създадено чрез\"", + "Domain Names": "Домейни", + "signedInDisp": "Вписан като {0}", + "signedInDispDisabled": "Удостоверяването е изключено.", + "Certificate Expiry Notification": "Известие за изтичане валидността на сертификата", + "API Username": "API Потребител", + "API Key": "API Ключ", + "Recipient Number": "Номер на получателя", + "From Name/Number": "От Име/Номер", + "Leave blank to use a shared sender number.": "Оставете празно, за да използвате споделен номер на подател.", + "Octopush API Version": "Octopush API версия", + "Legacy Octopush-DM": "Octopush-DM старa версия", + "endpoint": "крайна точка", + "octopushAPIKey": "\"API ключ\" от HTTP API удостоверяване в контролния панел", + "octopushLogin": "\"Вписване\" от HTTP API удостоверяване в контролния панел", + "promosmsLogin": "API Потребителско име", + "promosmsPassword": "API Парола", + "pushoversounds pushover": "Pushover (по подразбиране)", + "pushoversounds bike": "Велосипед", + "pushoversounds bugle": "Тромпет", + "pushoversounds cashregister": "Касов апарат", + "pushoversounds classical": "Класическа музика", + "pushoversounds cosmic": "Космически", + "pushoversounds falling": "Падащ", + "pushoversounds gamelan": "Игра в мрежа", + "pushoversounds incoming": "Входящ", + "pushoversounds intermission": "Прекъсване", + "pushoversounds magic": "Магия", + "pushoversounds mechanical": "Механичен", + "pushoversounds pianobar": "Пиано бар", + "pushoversounds siren": "Сирена", + "pushoversounds spacealarm": "Космическа аларма", + "pushoversounds tugboat": "Буксир", + "pushoversounds alien": "Извънземна аларма (дълъг)", + "pushoversounds climb": "Изкачване (дълъг)", + "pushoversounds persistent": "Постоянен (дълъг)", + "pushoversounds echo": "Pushover ехо (дълъг)", + "pushoversounds updown": "Горе долу (дълъг)", + "pushoversounds vibrate": "Само вибрация", + "pushoversounds none": "Без (тих)", + "pushyAPIKey": "Таен API ключ", + "pushyToken": "Токен на устройство", + "Show update if available": "Покажи актуализация, ако е налична", + "Also check beta release": "Проверявай и за бета версии", + "Using a Reverse Proxy?": "Използвате ревърс прокси?", + "Check how to config it for WebSocket": "Проверете как да го конфигурирате за WebSocket", + "Steam Game Server": "Steam Game сървър", + "Most likely causes:": "Най-вероятни причини:", + "The resource is no longer available.": "Ресурсът вече не е наличен.", + "There might be a typing error in the address.": "Възможно е да е допусната грешка при изписването на адреса.", + "What you can try:": "Може да опитате:", + "Retype the address.": "Повторно въвеждане на адреса.", + "Go back to the previous page.": "Да се върнете към предишната страница.", + "Coming Soon": "Очаквайте скоро", + "wayToGetClickSendSMSToken": "Може да получите API потребителско име и API ключ от {0} .", + "dnsPortDescription": "DNS порт на сървъра. По подразбиране е 53, но може да бъде променен по всяко време.", + "error": "грешка", + "critical": "критично", + "wayToGetPagerDutyKey": "Може да го получите като посетите Service -> Service Directory -> (Select a service) -> Integrations -> Add integration. Тук трябва да потърсите \"Events API V2\". Повече информация {0}", + "Integration Key": "Ключ за интегриране", + "Integration URL": "URL адрес за интеграция", + "Auto resolve or acknowledged": "Автоматично разрешаване или потвърждаване", + "do nothing": "не прави нищо", + "auto acknowledged": "автоматично потвърждаване", + "auto resolve": "автоматично разрешаване", + "Connection String": "Стринг за връзка", + "Query": "Заявка", + "settingsCertificateExpiry": "Изтичане валидността на TLS сертификата", + "certificationExpiryDescription": "HTTPS мониторите ще задействат известие, ако е наличен изтичащ TLS сертификат, през следващите:", + "ntfy Topic": "ntfy Тема", + "Domain": "Домейн", + "Workstation": "Работна станция", + "disableCloudflaredNoAuthMsg": "Тъй като сте в режим \"No Auth mode\", парола не се изисква.", + "wayToGetLineNotifyToken": "Може да получите токен код за достъп от {0}", + "resendEveryXTimes": "Изпращай повторно на всеки {0} пъти", + "resendDisabled": "Повторното изпращане е изключено", + "Resend Notification if Down X times consequently": "Повторно изпращане на известие, ако е недостъпен X пъти последователно", + "Bark Group": "Bark група", + "Bark Sound": "Bark звук", + "HTTP Headers": "HTTP хедъри", + "Trust Proxy": "Trust Proxy", + "HomeAssistant": "Home Assistant", + "RadiusSecret": "Radius таен код", + "RadiusSecretDescription": "Споделен таен код между клиент и сървър", + "RadiusCalledStationId": "Повиквана станция ID", + "RadiusCalledStationIdDescription": "Идентификатор на повикваното устройство", + "RadiusCallingStationId": "Повикваща станция ID", + "RadiusCallingStationIdDescription": "Идентификатор на повикващото устройство", + "Setup Docker Host": "Настройка на Docker хост", + "Connection Type": "Тип свързване", + "Docker Daemon": "Docker демон", + "deleteDockerHostMsg": "Сигурни ли сте, че желаете да изтриете този Docker хост за всички монитори?", + "socket": "Сокет", + "tcp": "TCP / HTTP", + "Docker Container": "Docker контейнер", + "Container Name / ID": "Име на контейнер / ID", + "Docker Host": "Docker хост", + "Docker Hosts": "Docker хостове", + "trustProxyDescription": "Trust 'X-Forwarded-*' headers. Ако искате да получавате правилния IP адрес на клиента, а Uptime Kuma е зад системи като Nginx или Apache, трябва да разрешите тази опция.", + "Examples": "Примери", + "Home Assistant URL": "Home Assistant URL адрес", + "Long-Lived Access Token": "Long-Lived Access Token", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Long-Lived Access Token можете да създадете, като кликнете върху името на профила си (долу ляво) и превъртите до най-долу, след това кликнете върху Създаване на токен. ", + "Notification Service": "Услуга за известяване", + "default: notify all devices": "по подразбиране: извести всички устройства", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Списък с услугите за известяване може да бъде намерен в Home Assistant под \"Developer Tools > Services\", там потърсете \"notification\", за да намерите името на вашето устройство/телефон.", + "Automations can optionally be triggered in Home Assistant:": "Автоматизациите могат да се задействат при нужда в Home Assistant:", + "Trigger type:": "Задействане тип:", + "Event type:": "Събитие тип:", + "Event data:": "Събитие данни:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "След което изберете действие, например да превключите сцената, където RGB светлината е червена.", + "Frontend Version": "Фронтенд версия", + "Frontend Version do not match backend version!": "Фронтенд версията не съвпада с Бекенд версията!", + "Base URL": "Базов URL адрес", + "goAlertInfo": "GoAlert е приложение с отворен код за планиране на повиквания, автоматизирани ескалации и известия (като SMS или гласови повиквания). Автоматично ангажирайте точния човек, по точния начин и в точното време! {0}", + "goAlertIntegrationKeyInfo": "Вземете общ API интеграционен ключ за услугата във формат \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" обикновено стойността на параметъра token на копирания URL адрес.", + "goAlert": "GoAlert", + "backupOutdatedWarning": "Отпаднало: Тъй като са добавени много функции, тази опция за архивиране не е достатъчно поддържана и не може да генерира или възстанови пълен архив.", + "backupRecommend": "Моля, архивирайте дяла или папката (./data/) директно вместо това.", + "Maintenance": "Поддръжка", + "statusMaintenance": "Поддръжка", + "Schedule maintenance": "Планиране на поддръжка", + "Affected Monitors": "Засегнати монитори", + "Pick Affected Monitors...": "Изберете засегнати монитори...", + "Start of maintenance": "Стартирай поддръжка", + "All Status Pages": "Всички статус страници", + "Select status pages...": "Изберете статус страници...", + "recurringIntervalMessage": "Изпълнявай ежедневно | Изпълнявай всеки {0} дни", + "affectedMonitorsDescription": "Изберете монитори, засегнати от текущата поддръжка", + "affectedStatusPages": "Покажи това съобщение за поддръжка на избрани статус страници", + "atLeastOneMonitor": "Изберете поне един засегнат монитор", + "deleteMaintenanceMsg": "Сигурни ли сте, че желаете да изтриете тази поддръжка?", + "Optional": "По желание", + "squadcast": "Squadcast", + "SendKey": "SendKey", + "SMSManager API Docs": "SMSManager API Документация ", + "Gateway Type": "Тип на шлюза", + "SMSManager": "SMSManager", + "You can divide numbers with": "Може да разделяте числата с", + "or": "или", + "recurringInterval": "Интервал", + "Recurring": "Повтаряне", + "strategyManual": "Активен/Неактивен ръчно", + "warningTimezone": "Използва се часовата зона на сървъра", + "weekdayShortMon": "Пон", + "weekdayShortTue": "Вт", + "weekdayShortWed": "Ср", + "weekdayShortThu": "Чет", + "weekdayShortFri": "Пет", + "weekdayShortSat": "Съб", + "weekdayShortSun": "Нед", + "dayOfWeek": "Ден", + "dayOfMonth": "Дата", + "lastDay": "Последен ден", + "lastDay1": "Последен ден от месеца", + "lastDay2": "2-ри последен ден на месеца", + "lastDay3": "3-ти последен ден на месеца", + "lastDay4": "4-ти последен ден на месеца", + "No Maintenance": "Няма поддръжка", + "pauseMaintenanceMsg": "Сигурни ли сте, че желаете да направите пауза?", + "maintenanceStatus-under-maintenance": "В режим поддръжка", + "maintenanceStatus-inactive": "Неактивна", + "maintenanceStatus-scheduled": "Планирана", + "maintenanceStatus-ended": "Приключена", + "maintenanceStatus-unknown": "Неизвестна", + "Display Timezone": "Покажи часова зона", + "Server Timezone": "Часова зона на сървъра", + "statusPageMaintenanceEndDate": "Край", + "enableGRPCTls": "Разреши изпращане на gRPC заявка с TLS връзка", + "grpcMethodDescription": "Името на метода се форматира в \"cammelCase\", например sayHello, check, и т.н.", + "smseagle": "SMSEagle", + "smseagleTo": "Тел. номер(а)", + "smseagleGroup": "Име на група/и от тел. указател", + "smseagleContact": "Име(на) от тел. указател", + "smseagleRecipientType": "Получател тип", + "smseagleRecipient": "Получател(и) (при повече от един разделете със запетая)", + "smseagleToken": "API токен за достъп", + "smseagleUrl": "Вашият SMSEagle URL на устройството", + "smseagleEncoding": "Изпрати като Unicode", + "smseaglePriority": "Приоритет на съобщението (0-9, по подразбиране = 0)", + "IconUrl": "Икона URL адрес", + "webhookAdditionalHeadersTitle": "Допълнителни хедъри", + "webhookAdditionalHeadersDesc": "Задава допълнителни хедъри, изпратени с уеб куката.", + "Enable DNS Cache": "Активирай DNS кеширане", + "Enable": "Активирай", + "Disable": "Деактивирай", + "dnsCacheDescription": "Възможно е да не работи в IPv6 среда - деактивирайте, ако срещнете проблеми.", + "Single Maintenance Window": "Единичен времеви интервал за поддръжка", + "Maintenance Time Window of a Day": "Времеви интервал от деня за поддръжка", + "Effective Date Range": "Интервал от дни на влизане в сила", + "Schedule Maintenance": "Планирай поддръжка", + "Date and Time": "Дата и час", + "DateTime Range": "Изтрий времеви интервал", + "Strategy": "Стратегия", + "Free Mobile User Identifier": "Free Mobile потребителски идентификатор", + "Free Mobile API Key": "Free Mobile API ключ", + "Enable TLS": "Активирай TLS", + "Proto Service Name": "Proto име на услугата", + "Proto Method": "Proto метод", + "Proto Content": "Proto съдържание", + "Economy": "Икономичен", + "Lowcost": "Евтин", + "high": "висок", + "General Monitor Type": "Общ тип монитор", + "Passive Monitor Type": "Пасивет тип монитор", + "Specific Monitor Type": "Специфичен тип монитор" +} diff --git a/src/lang/cs-CZ.json b/src/lang/cs-CZ.json new file mode 100644 index 000000000..4df2650e4 --- /dev/null +++ b/src/lang/cs-CZ.json @@ -0,0 +1,626 @@ +{ + "languageName": "Czech", + "checkEverySecond": "Kontrolovat každých {0} sekund", + "retryCheckEverySecond": "Opakovat každých {0} sekund", + "resendEveryXTimes": "Znovu zaslat {0}krát", + "resendDisabled": "Opakované zasílání je vypnuté", + "retriesDescription": "Maximální počet pokusů před označením služby jako nedostupné a odesláním oznámení", + "ignoreTLSError": "Ignorovat TLS/SSL chyby na HTTPS stránkách", + "upsideDownModeDescription": "Pomocí této možnosti změníte způsob vyhodnocování stavu. Pokud je služba dosažitelná, je NEDOSTUPNÁ.", + "maxRedirectDescription": "Maximální počet přesměrování, která se mají následovat. Nastavením hodnoty 0 zakážete přesměrování.", + "acceptedStatusCodesDescription": "Vyberte stavové kódy, které jsou považovány za úspěšnou odpověď.", + "passwordNotMatchMsg": "Hesla se neshodují", + "notificationDescription": "Pro zajištění funkčnosti oznámení je nutné jej přiřadit dohledu.", + "keywordDescription": "Vyhledat klíčové slovo v prosté odpovědi HTML nebo JSON. Při hledání se rozlišuje velikost písmen.", + "pauseDashboardHome": "Pozastavit", + "deleteMonitorMsg": "Opravdu chcete odstranit tento dohled?", + "deleteNotificationMsg": "Opravdu chcete odstranit toto oznámení pro všechny dohledy?", + "dnsPortDescription": "Port DNS serveru. Standardně běží na portu 53. V případě potřeby jej můžete kdykoli změnit.", + "resolverserverDescription": "Cloudflare je výchozí server. V případě potřeby můžete Resolver server kdykoli změnit.", + "rrtypeDescription": "Vyberte typ záznamu o prostředku, který chcete monitorovat", + "pauseMonitorMsg": "Opravdu chcete dohled pozastavit?", + "enableDefaultNotificationDescription": "Toto oznámení bude standardně aktivní pro nové dohledy. V případě potřeby můžete oznámení stále zakázat na úrovni jednotlivých dohledů.", + "clearEventsMsg": "Opravdu chcete odstranit všechny události pro tento dohled?", + "clearHeartbeatsMsg": "Opravdu chcete odstranit všechny heartbeaty pro tento dohled?", + "confirmClearStatisticsMsg": "Opravdu chcete smazat VŠECHNY statistiky?", + "importHandleDescription": "Možnost 'Přeskočit existující' vyberte v případě, že chcete přeskočit všechny dohledy nebo oznámení se stejným názvem. Vybráním možnosti 'Přepsat' dojde k odstranění všech existujících dohledů a oznámení.", + "confirmImportMsg": "Opravdu chcete importovat zálohu? Prosím ověřte, zda jste vybrali správnou možnost importu.", + "twoFAVerifyLabel": "Prosím, zadejte svůj token pro ověření 2FA:", + "tokenValidSettingsMsg": "Token je platný! Nyní můžete uložit nastavení 2FA.", + "confirmEnableTwoFAMsg": "Opravdu chcete zapnout 2FA?", + "confirmDisableTwoFAMsg": "Opravdu chcete deaktivovat 2FA?", + "Settings": "Nastavení", + "Dashboard": "Nástěnka", + "New Update": "Nová aktualizace", + "Language": "Jazyk", + "Appearance": "Vzhled", + "Theme": "Motiv", + "General": "Obecné", + "Primary Base URL": "Primární URL adresa", + "Version": "Verze", + "Check Update On GitHub": "Zkontrolovat aktualizace na GitHubu", + "List": "Seznam", + "Add": "Přidat", + "Add New Monitor": "Přidat nový dohled", + "Quick Stats": "Rychlé statistiky", + "Up": "Běží", + "Down": "Nedostupný", + "Pending": "Čekám", + "Unknown": "Neznámý", + "Pause": "Pozastaveno", + "Name": "Název", + "Status": "Stav", + "DateTime": "Časové razítko", + "Message": "Zpráva", + "No important events": "Žádné důležité události", + "Resume": "Pokračovat", + "Edit": "Změnit", + "Delete": "Vymazat", + "Current": "Aktuální", + "Uptime": "Doba provozu", + "Cert Exp.": "Platnost certifikátu", + "day": "den | dny/í", + "-day": "-dní", + "hour": "hodina", + "-hour": "-hodin", + "Response": "Odpověď", + "Ping": "Ping", + "Monitor Type": "Typ dohledu", + "Keyword": "Klíčové slovo", + "Friendly Name": "Obecný název", + "URL": "URL", + "Hostname": "Adresa serveru", + "Port": "Port", + "Heartbeat Interval": "Heartbeat interval", + "Retries": "Počet pokusů", + "Heartbeat Retry Interval": "Interval opakování heartbeatu", + "Resend Notification if Down X times consequently": "Znovu zaslat oznámení, pokud je služba nedostupná Xkrát za sebou", + "Advanced": "Rozšířené", + "Upside Down Mode": "Inverzní režim", + "Max. Redirects": "Max. přesměrování", + "Accepted Status Codes": "Akceptované stavové kódy", + "Push URL": "Push URL", + "needPushEvery": "Tuto URL adresu byste měli volat každých {0} sekund.", + "pushOptionalParams": "Volitelné parametry: {0}", + "Save": "Uložit", + "Notifications": "Oznámení", + "Not available, please setup.": "Není k dispozici, prosím nastavte.", + "Setup Notification": "Nastavení oznámení", + "Light": "Světlý", + "Dark": "Tmavý", + "Auto": "Automaticky", + "Theme - Heartbeat Bar": "Motiv – Heartbeat panel", + "Normal": "Normální", + "Bottom": "Dole", + "None": "Žádné", + "Timezone": "Časové pásmo", + "Search Engine Visibility": "Viditelnost pro vyhledávače", + "Allow indexing": "Povolit indexování", + "Discourage search engines from indexing site": "Zabránit vyhledávačům v indexování stránky", + "Change Password": "Změnit heslo", + "Current Password": "Aktuální heslo", + "New Password": "Nové heslo", + "Repeat New Password": "Znovu zadat nové heslo", + "Update Password": "Aktualizovat heslo", + "Disable Auth": "Deaktivovat ověřování", + "Enable Auth": "Povolit ověřování", + "disableauth.message1": "Opravdu chcete deaktivovat autentifikaci?", + "disableauth.message2": "Tato možnost je určena pro případy, kdy máte autentifikaci zajištěnou třetí stranou ještě před přístupem do Uptime Kuma, například prostřednictvím Cloudflare Access.", + "Please use this option carefully!": "Používejte ji prosím s rozmyslem.", + "Logout": "Odhlásit", + "Leave": "Odejít", + "I understand, please disable": "Rozumím, chci ji deaktivovat", + "Confirm": "Potvrzení", + "Yes": "Ano", + "No": "Ne", + "Username": "Uživatelské jméno", + "Password": "Heslo", + "Remember me": "Zapamatovat si mě", + "Login": "Přihlášení", + "No Monitors, please": "Žádné dohledy, prosím", + "add one": "přidat jeden", + "Notification Type": "Typ oznámení", + "Email": "E-mail", + "Test": "Test", + "Certificate Info": "Informace o certifikátu", + "Resolver Server": "Resolver Server", + "Resource Record Type": "Typ záznamu o prostředku", + "Last Result": "Poslední výsledek", + "Create your admin account": "Vytvořit účet administrátora", + "Repeat Password": "Znovu zadat heslo", + "Import Backup": "Importovat zálohu", + "Export Backup": "Exportovat zálohu", + "Export": "Exportovat", + "Import": "Importovat", + "respTime": "Doba odezvy (ms)", + "notAvailableShort": "N/A", + "Default enabled": "Standardně povoleno", + "Apply on all existing monitors": "Použít pro všechny existující dohledy", + "Create": "Vytvořit", + "Clear Data": "Vymazat data", + "Events": "Události", + "Heartbeats": "Heartbeaty", + "Auto Get": "Získat automaticky", + "backupDescription": "Všechny dohledy a oznámení můžete zálohovat do souboru ve formátu JSON.", + "backupDescription2": "Poznámka: Nezahrnuje historii a data událostí.", + "backupDescription3": "Součástí exportovaného souboru jsou citlivá data jako tokeny oznámení; export si prosím bezpečně uložte.", + "alertNoFile": "Vyberte soubor, který chcete importovat.", + "alertWrongFileType": "Vyberte soubor ve formátu JSON.", + "Clear all statistics": "Vymazat všechny statistiky", + "Skip existing": "Přeskočit existující", + "Overwrite": "Přepsat", + "Options": "Možnosti", + "Keep both": "Ponechat obojí", + "Verify Token": "Ověřit token", + "Setup 2FA": "Nastavení 2FA", + "Enable 2FA": "Povolit 2FA", + "Disable 2FA": "Deaktivovat 2FA", + "2FA Settings": "Nastavení 2FA", + "Two Factor Authentication": "Dvoufaktorová autentifikace", + "Active": "Zapnuto", + "Inactive": "Neaktivní", + "Token": "Token", + "Show URI": "Zobrazit URI", + "Tags": "Štítky", + "Add New below or Select...": "Níže přidejte nový nebo vyberte existující…", + "Tag with this name already exist.": "Štítek s tímto názvem již existuje.", + "Tag with this value already exist.": "Štítek touto hodnotou již existuje.", + "color": "barva", + "value (optional)": "hodnota (volitelné)", + "Gray": "Šedá", + "Red": "Červená", + "Orange": "Oranžová", + "Green": "Zelená", + "Blue": "Modrá", + "Indigo": "Indigo", + "Purple": "Purpurová", + "Pink": "Růžová", + "Search...": "Hledat…", + "Avg. Ping": "Průměr Ping", + "Avg. Response": "Průměr Odpověď", + "Entry Page": "Vstupní stránka", + "statusPageNothing": "Nic tady není, přidejte prosím skupinu nebo dohled.", + "No Services": "Žádné služby", + "All Systems Operational": "Všechny systémy běží", + "Partially Degraded Service": "Částečně zhoršená služba", + "Degraded Service": "Zhoršená služba", + "Add Group": "Přidat skupinu", + "Add a monitor": "Přidání dohledu", + "Edit Status Page": "Upravit stavovou stránku", + "Go to Dashboard": "Přejít na nástěnku", + "Status Page": "Stavová stránka", + "Status Pages": "Stavová stránka", + "defaultNotificationName": "Moje {notification} upozornění ({číslo})", + "here": "sem", + "Required": "Vyžadováno", + "telegram": "Telegram", + "Bot Token": "Token robota", + "wayToGetTelegramToken": "Token můžete získat od {0}.", + "Chat ID": "ID chatu", + "supportTelegramChatID": "Podpora přímého chatu / skupiny / ID chatu kanálu", + "wayToGetTelegramChatID": "ID chatu můžete získat tak, že robotovi zašlete zprávu a přejdete na tuto adresu URL, kde zobrazíte chat_id:", + "YOUR BOT TOKEN HERE": "SEM ZADEJTE TOKEN VAŠEHO CHATBOTA", + "chatIDNotFound": "ID chatu nebylo nalezeno; nejprve tomuto robotovi zašlete zprávu", + "webhook": "Webhook", + "Post URL": "URL adresa příspěvku", + "Content Type": "Typ obsahu", + "webhookJsonDesc": "{0} je vhodný pro všechny moderní servery HTTP, jako je Express.js", + "webhookFormDataDesc": "{multipart} je vhodné pro PHP. JSON bude nutné analyzovat prostřednictvím {decodeFunction}", + "smtp": "E-mail (SMTP)", + "secureOptionNone": "Žádné / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Ignorovat chybu TLS", + "From Email": "Odesílatel", + "emailCustomSubject": "Vlastní předmět", + "To Email": "Příjemce", + "smtpCC": "Kopie", + "smtpBCC": "Skrytá kopie", + "discord": "Discord", + "Discord Webhook URL": "Discord Webhook URL", + "wayToGetDiscordURL": "Získáte tak, že přejdete do Nastavení serveru - > Integrace - > Vytvořit Webhook", + "Bot Display Name": "Zobrazované jméno robota", + "Prefix Custom Message": "Předpona vlastní zprávy", + "Hello @everyone is...": "Dobrý den, {'@'}všichni jsou…", + "teams": "Microsoft Teams", + "Webhook URL": "URL adresa webhooku", + "wayToGetTeamsURL": "Informace o tom, jak vytvořit URL adresu webhooku naleznete {0}.", + "signal": "Signal", + "Number": "Číslo", + "Recipients": "Příjemci", + "needSignalAPI": "Musíte mít Signal klienta s REST API.", + "wayToCheckSignalURL": "Pro zobrazení instrukcí, jak službu nastavit, přejděte na následující adresu:", + "signalImportant": "Důležité V seznamu příjemců není možné současně použít skupiny a čísla!", + "gotify": "Gotify", + "Application Token": "Token aplikace", + "Server URL": "URL adresa serveru", + "Priority": "Priorita", + "slack": "Slack", + "Icon Emoji": "Ikona smajlíka", + "Channel Name": "Název kanálu", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "Více informací o Webhoocích naleznete na adrese: {0}", + "aboutChannelName": "Pro vynechání Webhook kanálu zadejte jeho název do pole Název kanálu {0}. Příklad: #jiny-kanal", + "aboutKumaURL": "Pokud ponecháte pole URL adresa Uptime Kuma prázdné, použije se domovská stránka GitHub projektu.", + "emojiCheatSheet": "Tahák smajlíků: {0}", + "rocket.chat": "Rocket.Chat", + "pushover": "Pushover", + "pushy": "Pushy", + "PushByTechulus": "Push by Techulus", + "octopush": "Octopush", + "promosms": "PromoSMS", + "clicksendsms": "ClickSend SMS", + "lunasea": "LunaSea", + "apprise": "Apprise (podpora více než 50 oznamovacích služeb)", + "GoogleChat": "Google Chat (pouze Google Workspace)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "User Key": "Klíč uživatele", + "Device": "Zařízení", + "Message Title": "Nadpis zprávy", + "Notification Sound": "Zvuk oznámení", + "More info on:": "Více informací naleznete na adrese: {0}", + "pushoverDesc1": "Výchozí časový limit pro emergency prioritu (2) je 30 sekund mezi opakovanými pokusy a vyprší po 1 hodině.", + "pushoverDesc2": "Pokud chcete odesílat oznámení do různých zařízení, vyplňte pole Zařízení.", + "SMS Type": "Typ SMS", + "octopushTypePremium": "Premium (rychlé – doporučeno pro upozornění)", + "octopushTypeLowCost": "Nízké náklady (pomalé – někdy blokované operátorem)", + "checkPrice": "Ceny {0} zjistíte na adrese:", + "apiCredentials": "API přihlašovací údaje", + "octopushLegacyHint": "Používáte starší verzi Octopush (2011-2020) nebo novou verzi?", + "Check octopush prices": "Ceny octopush naleznete na adrese {0}.", + "octopushPhoneNumber": "Telefonní číslo (v mezinárodním formátu, např: +42012345678) ", + "octopushSMSSender": "Odesílatel SMS: 3-11 alfanumerických znaků a mezera (a-zA-Z0-9)", + "LunaSea Device ID": "ID zařízení LunaSea", + "Apprise URL": "Apprise URL", + "Example:": "Příklad: {0}", + "Read more:": "Více informací: {0}", + "Status:": "Stav: {0}", + "Read more": "Více informací", + "appriseInstalled": "Apprise je nainstalován.", + "appriseNotInstalled": "Apprise není nainstalován. {0}", + "Access Token": "Přístupový token", + "Channel access token": "Přístupový token ke kanálu", + "Line Developers Console": "Konzole Line Developers", + "lineDevConsoleTo": "Konzole Line Developers - {0}", + "Basic Settings": "Obecné nastavení", + "User ID": "ID uživatele", + "Messaging API": "Messaging API", + "wayToGetLineChannelToken": "Nejprve otevřete {0}, vytvořte poskytovatele a kanál (Messaging API). Poté můžete získat přístupový token ke kanálu a ID uživatele, v sekci uvedené výše.", + "Icon URL": "URL adresa ikony", + "aboutIconURL": "Pro přepsání výchozího profilového obrázku můžete do pole \"URL adresa ikony\" zadat odkaz na obrázek. Nebude použito, pokud je nastavena ikona smajlíka.", + "aboutMattermostChannelName": "Výchozí kanál, do kterého jsou zasílány Webhook příspěvky, můžete přepsat zadáním názvu kanálu do pole \"Název kanálu\". Tato možnost musí být povolena v nastavení Mattermost Webhooku. Příklad: #jiny-kanal", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO – levné, ale pomalé a často přetížené. Omezeno pouze na polské příjemce.", + "promosmsTypeFlash": "SMS FLASH –zpráva se automaticky zobrazí na zařízení příjemce. Omezeno pouze na polské příjemce.", + "promosmsTypeFull": "SMS FULL – prémiová úroveň SMS. Můžete definovat odesílatele (vyžadována registrace jména). Spolehlivý pro výstrahy.", + "promosmsTypeSpeed": "SMS SPEED – nejvyšší priorita v systému. Velmi rychlé a spolehlivé, ale nákladné (přibližně dvojnásobek ceny SMS FULL).", + "promosmsPhoneNumber": "Telefonní číslo (polští příjemci mohou vynechat telefonní předvolbu)", + "promosmsSMSSender": "Odesílatel SMS: Předem zaregistrovaný název nebo jeden z výchozích: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + "matrixHomeserverURL": "URL adresa domácího serveru (s http(s):// a volitelně portem)", + "Internal Room Id": "ID interní místnosti", + "matrixDesc1": "ID interní místnosti naleznete v Matrix klientovi v rozšířeném nastavení místnosti. Mělo by být ve tvaru !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Důrazně doporučujeme vytvořit nového uživatele a nepoužívat váš vlastní přístupový token uživatele Matrix. Pomocí něj je možné získat přístup k vašemu účtu a všem místnostem, ke kterým jste se připojili. Místo toho vytvořte nového uživatele a pozvěte jej pouze do místnosti, do které chcete oznámení dostávat. Přístupový token můžete získat spuštěním {0}", + "Method": "Metoda", + "Body": "Tělo", + "Headers": "Hlavičky", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "Hlaviča žádosti není platný JSON: ", + "BodyInvalidFormat": "Text žádosti není platný JSON: ", + "Monitor History": "Historie dohledu", + "clearDataOlderThan": "Historie dohledu bude uchovávána po dobu {0} dní.", + "PasswordsDoNotMatch": "Hesla se neshodují.", + "records": "záznamů", + "One record": "Jeden záznam", + "steamApiKeyDescription": "Pro monitorování Steam Game Serveru je nutné zadat Steam Web-API klíč. Svůj API klíč získáte na následující stránce: ", + "Current User": "Aktuálně přihlášený uživatel", + "topic": "Topic", + "topicExplanation": "MQTT topic, který chcete sledovat", + "successMessage": "Zpráva o úspěchu", + "successMessageExplanation": "MQTT zpráva považovaná za úspěšnou", + "recent": "Poslední", + "Done": "Hotovo", + "Info": "Informace", + "Security": "Bezpečnost", + "Steam API Key": "API klíč služby Steam", + "Shrink Database": "Zmenšit databázi", + "Pick a RR-Type...": "Vyberte typ záznamu o prostředku…", + "Pick Accepted Status Codes...": "Vyberte stavové kódy, které chcete akceptovat…", + "Default": "Výchozí", + "HTTP Options": "Možnosti protokolu HTTP", + "Create Incident": "Vytvořit incident", + "Title": "Předmět", + "Content": "Obsah", + "Style": "Styl", + "info": "informace", + "warning": "upozornění", + "danger": "riziko", + "error": "chyba", + "critical": "kritické", + "primary": "primární", + "light": "světlý", + "dark": "tmavý", + "Post": "Publikovat", + "Please input title and content": "Zadejte prosím název a obsah", + "Created": "Vytvořen", + "Last Updated": "Poslední aktualizace", + "Unpin": "Odepnout", + "Switch to Light Theme": "Přepnout na světlý motiv", + "Switch to Dark Theme": "Přepnout na tmavý motiv", + "Show Tags": "Zobrazit štítky", + "Hide Tags": "Skrýt štítky", + "Description": "Popis", + "No monitors available.": "Není dostupný žádný dohled.", + "Add one": "Přidat jeden", + "No Monitors": "Žádný dohled", + "Untitled Group": "Skupina bez názvu", + "Services": "Služby", + "Discard": "Zahodit", + "Cancel": "Zrušit", + "Powered by": "Poskytuje", + "shrinkDatabaseDescription": "Pomocí této možnosti provedete příkaz VACUUM nad SQLite databází. Pokud byla databáze vytvořena po vydání verze 1.10.0, AUTO_VACUUM je již povolena a tato akce není vyžadována.", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API uživatelské jméno (včetně předpony webapi_)", + "serwersmsAPIPassword": "API heslo", + "serwersmsPhoneNumber": "Telefonní číslo", + "serwersmsSenderName": "Odesílatel SMS (registrováno prostřednictvím zákaznického portálu)", + "stackfield": "Stackfield", + "Customize": "Přizpůsobit", + "Custom Footer": "Vlastní patička", + "Custom CSS": "Vlastní CSS", + "smtpDkimSettings": "Nastavení DKIM", + "smtpDkimDesc": "Informace o použití naleznete v {0} Nodemailer DKIM.", + "documentation": "dokumentaci", + "smtpDkimDomain": "Název domény", + "smtpDkimKeySelector": "Selektor klíče", + "smtpDkimPrivateKey": "Privátní klíč", + "smtpDkimHashAlgo": "Hashovací algoritmus (volitelné)", + "smtpDkimheaderFieldNames": "Podepisovat tyto hlavičky (volitelné)", + "smtpDkimskipFields": "Nepodepisovat tyto hlavičky (volitelné)", + "wayToGetPagerDutyKey": "Získat jej můžete v sekci Service -> Service Directory -> (vyberte službu) -> Integrations -> Add integration. Následně vyhledejte \"Events API V2\". Více informace naleznete na adrese {0}", + "Integration Key": "Integration Key", + "Integration URL": "Integration URL", + "Auto resolve or acknowledged": "Auto resolve or acknowledged", + "do nothing": "do nothing", + "auto acknowledged": "auto acknowledged", + "auto resolve": "auto resolve", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API Endpoint", + "alertaEnvironment": "Prostředí", + "alertaApiKey": "API Key", + "alertaAlertState": "Stav upozornění", + "alertaRecoverState": "Stav obnovení", + "deleteStatusPageMsg": "Opravdu chcete odstranit tuto stavovou stránku?", + "Proxies": "Proxy", + "default": "Výchozí", + "enabled": "Zapnuto", + "setAsDefault": "Nastavit jako výchozí", + "deleteProxyMsg": "Opravdu chcete odstranit tuto proxy ze všech dohledů?", + "proxyDescription": "Pro zajištění funkčnosti musí být proxy přiřazena dohledům.", + "enableProxyDescription": "Tato proxy neovlivní žádosti dohledu do doby, než ji aktivujete. Změnou tohoto nastavení dočasně zakážete použití proxy ve všech dohledech.", + "setAsDefaultProxyDescription": "Tato proxy se použije pro všechny nové dohledy. V případě potřeby můžete její využívání zakázat v konkrétním dohledu.", + "Certificate Chain": "Řetězec certifikátu", + "Valid": "Platný", + "Invalid": "Neplatný", + "AccessKeyId": "AccessKey ID", + "SecretAccessKey": "AccessKey Secret", + "PhoneNumbers": "PhoneNumbers", + "TemplateCode": "TemplateCode", + "SignName": "SignName", + "Sms template must contain parameters: ": "Sms template must contain parameters: ", + "Bark Endpoint": "Bark Endpoint", + "Bark Group": "Bark Group", + "Bark Sound": "Bark Sound", + "WebHookUrl": "WebHookUrl", + "SecretKey": "SecretKey", + "For safety, must use secret key": "Z důvodu bezpečnosti použijte secret key", + "Device Token": "Token zařízení", + "Platform": "Platforma", + "iOS": "iOS", + "Android": "Android", + "Huawei": "Huawei", + "High": "Vysoký", + "Retry": "Opakovat", + "Topic": "Topic", + "WeCom Bot Key": "WeCom Bot Key", + "Setup Proxy": "Nastavit proxy", + "Proxy Protocol": "Protokol proxy", + "Proxy Server": "Proxy Server", + "Proxy server has authentication": "Proxy server vyžaduje ověření", + "User": "Uživatel", + "Installed": "Nainstalováno", + "Not installed": "Nenainstalováno", + "Running": "Běží", + "Not running": "Neběží", + "Remove Token": "Odstranit token", + "Start": "Spustit", + "Stop": "Zastavit", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "Přidat novou stavovou stránku", + "Slug": "Slug", + "Accept characters:": "Přípustné znaky:", + "startOrEndWithOnly": "Počáteční a koncový znak může být pouze {0}", + "No consecutive dashes": "Nesmí se opakovat pomlčky", + "Next": "Další", + "The slug is already taken. Please choose another slug.": "Slug s tímto názvem již existuje. Prosím, zadejte jiný název.", + "No Proxy": "Žádná proxy", + "Authentication": "Ověření", + "HTTP Basic Auth": "HTTP Basic ověření", + "New Status Page": "Nová stavová stránka", + "Page Not Found": "Stránka nenalezena", + "Reverse Proxy": "Reverzní proxy", + "Backup": "Záloha", + "About": "O programu", + "wayToGetCloudflaredURL": "(Stáhnout cloudflared z {0})", + "cloudflareWebsite": "Webová stránka Cloudflare", + "Message:": "Zpráva:", + "Don't know how to get the token? Please read the guide:": "Nevíte jak získat? Prosím, přečtěte si tuto příručku:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Stávající připojení mohlo být ztraceno, pokud jste připojeni prostřednictvím Cloudflare tunelu. Opravdu jej chcete zastavit? Pro potvrzení zadejte své současné heslo.", + "HTTP Headers": "HTTP hlavičky", + "Trust Proxy": "Důvěryhodná proxy", + "Other Software": "Jiný software", + "For example: nginx, Apache and Traefik.": "Například nginx, Apache nebo Traefik.", + "Please read": "Prosím, přečtěte si informace na adrese", + "Subject:": "Předmět:", + "Valid To:": "Platnost do:", + "Days Remaining:": "Počet zbývajících dní:", + "Issuer:": "Vydavatel:", + "Fingerprint:": "Otisk:", + "No status pages": "Žádná stavová stránka", + "Domain Name Expiry Notification": "Oznámení na blížící se konec platnosti doménového jména", + "Proxy": "Proxy", + "Date Created": "Datum vytvoření", + "HomeAssistant": "Home Assistant", + "onebotHttpAddress": "OneBot HTTP adresa", + "onebotMessageType": "Typ OneBot zprávy", + "onebotGroupMessage": "Skupinová", + "onebotPrivateMessage": "Soukromá", + "onebotUserOrGroupId": "ID skupiny/uživatele", + "onebotSafetyTips": "Z důvodu bezpečnosti je nutné zadat přístupový token", + "PushDeer Key": "PushDeer klíč", + "Footer Text": "Text v patičce", + "Show Powered By": "Zobrazit \"Poskytuje\"", + "Domain Names": "Názvy domén", + "signedInDisp": "Přihlášen jako {0}", + "signedInDispDisabled": "Ověření je vypnuté.", + "RadiusSecret": "Radius Secret", + "RadiusSecretDescription": "Sdílený tajný klíč mezi klientem a serverem", + "RadiusCalledStationId": "ID volaného zařízení", + "RadiusCalledStationIdDescription": "Identifikátor volaného zařízení", + "RadiusCallingStationId": "ID volajícího zařízení", + "RadiusCallingStationIdDescription": "Identifikátor volajícího zařízení", + "Certificate Expiry Notification": "Oznámení na blížící se konec platnosti certifikátu", + "API Username": "API Username", + "API Key": "API Key", + "Recipient Number": "Číslo příjemce", + "From Name/Number": "Jméno/číslo odesílatele", + "Leave blank to use a shared sender number.": "Ponechte prázdné, pokud chcete použít číslo sdíleného příjemce.", + "Octopush API Version": "Octopush API verze", + "Legacy Octopush-DM": "Legacy Octopush-DM", + "endpoint": "endpoint", + "octopushAPIKey": "\"API key\" ze sekce HTTP API credentials na nástěnce", + "octopushLogin": "\"Login\" ze sekce HTTP API credentials na nástěnce", + "promosmsLogin": "API Login Name", + "promosmsPassword": "API Password", + "pushoversounds pushover": "Pushover (výchozí)", + "pushoversounds bike": "Bike", + "pushoversounds bugle": "Bugle", + "pushoversounds cashregister": "Cash Register", + "pushoversounds classical": "Classical", + "pushoversounds cosmic": "Cosmic", + "pushoversounds falling": "Falling", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Incoming", + "pushoversounds intermission": "Intermission", + "pushoversounds magic": "Magic", + "pushoversounds mechanical": "Mechanical", + "pushoversounds pianobar": "Piano Bar", + "pushoversounds siren": "Siren", + "pushoversounds spacealarm": "Space Alarm", + "pushoversounds tugboat": "Tug Boat", + "pushoversounds alien": "Alien Alarm (dlouhý)", + "pushoversounds climb": "Climb (dlouhý)", + "pushoversounds persistent": "Persistent (dlouhý)", + "pushoversounds echo": "Pushover Echo (dlouhý)", + "pushoversounds updown": "Up Down (dlouhý)", + "pushoversounds vibrate": "Pouze vibrace", + "pushoversounds none": "Žádný (ticho)", + "pushyAPIKey": "Secret API Key", + "pushyToken": "Token zařízení", + "Show update if available": "Upozornit na aktualizace, pokud jsou k dispozici", + "Also check beta release": "Kontrolovat také dostupnost beta verzí", + "Using a Reverse Proxy?": "Používáte reverzní proxy?", + "Check how to config it for WebSocket": "Zjistěte, jak ji nakonfigurovat pro WebSockety", + "Steam Game Server": "Steam Game Server", + "Most likely causes:": "Nejčastější důvody:", + "The resource is no longer available.": "Zdroj již není k dispozici.", + "There might be a typing error in the address.": "Při zadávání adresy jste udělali chybu.", + "What you can try:": "Co můžete vyzkoušet:", + "Retype the address.": "Znovu zadat adresu.", + "Go back to the previous page.": "Vrátit se na předchozí stránku.", + "Coming Soon": "Připravujeme", + "wayToGetClickSendSMSToken": "API Username a API Key získáte na adrese {0} .", + "Connection String": "Connection String", + "Query": "Dotaz", + "settingsCertificateExpiry": "Platnost TLS certifikátu", + "certificationExpiryDescription": "Aktivovat oznámení nad HTTPS dohledy, pokud platnost TLS certifikátu vyprší za:", + "Setup Docker Host": "Nastavit Docker hostitele", + "Connection Type": "Typ připojení", + "Docker Daemon": "Docker Daemon", + "deleteDockerHostMsg": "Opravdu chcete odstranit tohoto docker hostitele ze všech dohledů?", + "socket": "Socket", + "tcp": "TCP / HTTP", + "Docker Container": "Docker kontejner", + "Container Name / ID": "ID / název kontejneru", + "Docker Host": "Docker hostitel", + "Docker Hosts": "Docker hostitelé", + "ntfy Topic": "ntfy Topic", + "Domain": "Doména", + "Workstation": "Pracovní stanice", + "disableCloudflaredNoAuthMsg": "Používáte režim bez ověření, heslo není vyžadováno.", + "trustProxyDescription": "Důvěřovat 'X-Forwarded-*' hlavičkám. Pokud chcete získat správnou IP adresu klientů a vaše instance Uptime Kuma je schována za Nginx nebo Apache, měli byste tuto možnost zapnout.", + "wayToGetLineNotifyToken": "Přístupový token můžete získat na adrese {0}", + "Examples": "Příklady", + "Home Assistant URL": "Home Assistant URL", + "Long-Lived Access Token": "Dlouhodobý přístupový token", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Pro vytvoření dlouhodobého přístupový tokenu klikněte na název svého profilu (v levém dolním rohu) a následně v dolní části stránky klikněte na tlačítko Create Token. ", + "Notification Service": "Oznamovací služba", + "default: notify all devices": "výchozí: upozornit všechny zařízení", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Seznam dostupných oznamovacích služeb naleznete v Home Assistant v sekci \"Developer Tools > Services\", kde vyhledejte \"notification\" pro zjištění názvu zařízení.", + "Automations can optionally be triggered in Home Assistant:": "Automatizaci můžete volitelně aktivovat prostřednictvím Home Assistant:", + "Trigger type:": "Typ podmínky spuštění:", + "Event type:": "Typ události:", + "Event data:": "Data události:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Následně vyberte akci, například přepnutí scény z RGB světla na červenou.", + "Frontend Version": "Verze frontendu", + "Frontend Version do not match backend version!": "Verze frontendu neodpovídá verzi backendu!", + "Base URL": "Primární URL adresa", + "goAlertInfo": "GoAlert je aplikace s otevřeným zdrojovým kódem pro plánování hovorů, automatické eskalace a upozornění (jako jsou SMS nebo hlasové hovory). Automaticky zapojte správnou osobu, správným způsobem a ve správný čas! {0}", + "goAlertIntegrationKeyInfo": "Obecný API integrační klíč pro danou službu ve formátu \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" se obvykle nachází ve zkopírované URL jako hodnota parametru token.", + "goAlert": "GoAlert", + "backupOutdatedWarning": "Zastaralé: V poslední době byla funkčnost aplikace značně rozšířena, nicméně součást pro zálohování nepokrývá všechny možnosti. Z tohoto důvodu není možné vygenerovat úplnou zálohu a zajistit obnovení všech dat.", + "backupRecommend": "Prosím, zálohujte si ručně celý svazek nebo datovou složku (./data/).", + "Optional": "Volitelný", + "squadcast": "Squadcast", + "SendKey": "SendKey", + "SMSManager API Docs": "SMSManager API Docs ", + "Gateway Type": "Gateway Typ", + "SMSManager": "SMSManager", + "You can divide numbers with": "Čísla můžete dělit pomocí", + "or": "nebo", + "recurringInterval": "Interval", + "Recurring": "Recurring", + "strategyManual": "Aktivní/Neaktivní Ručně", + "warningTimezone": "Používá se časové pásmo serveru", + "weekdayShortMon": "Po", + "weekdayShortTue": "Út", + "weekdayShortWed": "St", + "weekdayShortThu": "Čt", + "weekdayShortFri": "Pá", + "weekdayShortSat": "So", + "weekdayShortSun": "Ne", + "dayOfWeek": "Den v týdnu", + "dayOfMonth": "Den v měsíci", + "lastDay": "Poslední den", + "lastDay1": "1. poslední den v měsíci", + "lastDay2": "2. poslední den v měsíci", + "lastDay3": "3. poslední den v měsíci", + "lastDay4": "4. poslední den v měsíci", + "No Maintenance": "Žádna údržba", + "pauseMaintenanceMsg": "Jsi si jistý, že chceš pozastavit údržbu?", + "maintenanceStatus-under-maintenance": "Údržba", + "maintenanceStatus-inactive": "Neaktivní", + "maintenanceStatus-scheduled": "Naplánováno", + "maintenanceStatus-ended": "Ukončeno", + "maintenanceStatus-unknown": "Neznámý", + "Display Timezone": "Zobrazit časové pásmo", + "Server Timezone": "Časové pásmo serveru", + "statusPageMaintenanceEndDate": "Konec", + "IconUrl": "Adresa URL ikony", + "Enable DNS Cache": "Povolit DNS Cache", + "Enable": "Povolit", + "Disable": "Zakázat", + "dnsCacheDescription": "V některých prostředích IPv6 nemusí fungovat. Pokud narazíte na nějaké problémy, vypněte jej." +} diff --git a/src/lang/da-DK.json b/src/lang/da-DK.json new file mode 100644 index 000000000..9cd1a4634 --- /dev/null +++ b/src/lang/da-DK.json @@ -0,0 +1,355 @@ +{ + "languageName": "Danish (Danmark)", + "Settings": "Indstillinger", + "Dashboard": "Betjeningspanel", + "New Update": "Opdatering tilgængelig", + "Language": "Sprog", + "Appearance": "Udseende", + "Theme": "Tema", + "General": "Generelt", + "Version": "Version", + "Check Update On GitHub": "Tjek efter opdateringer på Github", + "List": "Liste", + "Add": "Tilføj", + "Add New Monitor": "Tilføj ny Overvåger", + "Quick Stats": "Oversigt", + "Up": "Aktiv", + "Down": "Inaktiv", + "Pending": "Afventer", + "Unknown": "Ukendt", + "Pause": "Stands", + "pauseDashboardHome": "Standset", + "Name": "Navn", + "Status": "Status", + "DateTime": "Dato / Tid", + "Message": "Beskeder", + "No important events": "Inden vigtige begivenheder", + "Resume": "Fortsæt", + "Edit": "Rediger", + "Delete": "Slet", + "Current": "Aktuelt", + "Uptime": "Oppetid", + "Cert Exp.": "Certifikatets udløb", + "day": "Dag | Dage", + "-day": "-Dage", + "hour": "Timer", + "-hour": "-Timer", + "checkEverySecond": "Tjek hvert {0} sekund", + "Response": "Respons", + "Ping": "Ping", + "Monitor Type": "Overvåger Type", + "Keyword": "Nøgleord", + "Friendly Name": "Visningsnavn", + "URL": "URL", + "Hostname": "Hostname", + "Port": "Port", + "Heartbeat Interval": "Taktinterval", + "Retries": "Gentagelser", + "retriesDescription": "Maksimalt antal gentagelser, før tjenesten markeres som inaktiv og sender en meddelelse.", + "Advanced": "Avanceret", + "ignoreTLSError": "Ignorere TLS/SSL web fejl", + "Upside Down Mode": "Omvendt tilstand", + "upsideDownModeDescription": "Håndter tilstanden omvendt. Hvis tjenesten er tilgængelig, vises den som inaktiv.", + "Max. Redirects": "Maks. Omdirigeringer", + "maxRedirectDescription": "Maksimalt antal omdirigeringer, der skal følges. Indstil til 0 for at deaktivere omdirigeringer.", + "Accepted Status Codes": "Tilladte HTTP-Statuskoder", + "acceptedStatusCodesDescription": "Vælg de statuskoder, der stadig skal vurderes som vellykkede.", + "Save": "Gem", + "Notifications": "Underretninger", + "Not available, please setup.": "Ikke tilgængelige, opsæt venligst.", + "Setup Notification": "Opsæt underretninger", + "Light": "Lys", + "Dark": "Mørk", + "Auto": "Auto", + "Theme - Heartbeat Bar": "Tema - Tidslinje", + "Normal": "Normal", + "Bottom": "Bunden", + "None": "Ingen", + "Timezone": "Tidszone", + "Search Engine Visibility": "Søgemaskine synlighed", + "Allow indexing": "Tillad indeksering", + "Discourage search engines from indexing site": "Frabed søgemaskiner at indeksere webstedet", + "Change Password": "Ændre adgangskode", + "Current Password": "Nuværende adgangskode", + "New Password": "Ny adgangskode", + "Repeat New Password": "Gentag den nye adgangskode", + "passwordNotMatchMsg": "Adgangskoderne er ikke ens.", + "Update Password": "Opdater adgangskode", + "Disable Auth": "Deaktiver autentificering", + "Enable Auth": "Aktiver autentificering", + "Logout": "Log ud", + "notificationDescription": "Tildel underretninger til Overvåger(e), så denne funktion træder i kraft.", + "Leave": "Verlassen", + "I understand, please disable": "Jeg er indforstået, deaktiver venligst", + "Confirm": "Bekræft", + "Yes": "Ja", + "No": "Nej", + "Username": "Brugernavn", + "Password": "Adgangskode", + "Remember me": "Husk mig", + "Login": "Log ind", + "No Monitors, please": "Ingen Overvågere", + "add one": "tilføj en", + "Notification Type": "Underretningstype", + "Email": "E-Mail", + "Test": "Test", + "Certificate Info": "Certifikatoplysninger", + "keywordDescription": "Søg efter et søgeord i almindelig HTML- eller JSON -output. Bemærk, at der skelnes mellem store og små bogstaver.", + "deleteMonitorMsg": "Er du sikker på, at du vil slette overvågeren?", + "deleteNotificationMsg": "Er du sikker på, at du vil slette denne underretning for alle overvågere? ", + "resolverserverDescription": "Cloudflare er standardserveren, den kan til enhver tid ændres.", + "Resolver Server": "Navne-server", + "rrtypeDescription": "Vælg den type RR, du vil overvåge.", + "Last Result": "Seneste resultat", + "pauseMonitorMsg": "Er du sikker på, at du vil standse Overvågeren?", + "Create your admin account": "Opret din administratorkonto", + "Repeat Password": "Gentag adgangskoden", + "Resource Record Type": "Resource Record Type", + "respTime": "Resp. Tid (ms)", + "notAvailableShort": "N/A", + "Create": "Opret", + "clearEventsMsg": "Er du sikker på vil slette alle events for denne Overvåger?", + "clearHeartbeatsMsg": "Er du sikker på vil slette alle hjerteslag for denne Overvåger?", + "confirmClearStatisticsMsg": "Vil du helt sikkert slette ALLE statistikker?", + "Clear Data": "Ryd Data", + "Events": "Events", + "Heartbeats": "Hjerteslag", + "Auto Get": "Auto-hent", + "enableDefaultNotificationDescription": "For hver ny overvåger aktiveres denne underretning som standard. Du kan stadig deaktivere underretningen separat for hver skærm.", + "Default enabled": "Standard aktiveret", + "Also apply to existing monitors": "Anvend også på eksisterende overvågere", + "Export": "Eksport", + "Import": "Import", + "backupDescription": "Du kan sikkerhedskopiere alle Overvågere og alle underretninger til en JSON-fil.", + "backupDescription2": "PS: Historik og hændelsesdata er ikke inkluderet.", + "backupDescription3": "Følsom data, f.eks. underretnings-tokener, er inkluderet i eksportfilen. Gem den sikkert.", + "alertNoFile": "Vælg en fil der skal importeres.", + "alertWrongFileType": "Vælg venligst en JSON-fil.", + "twoFAVerifyLabel": "Indtast venligst dit token for at bekræfte, at 2FA fungerer", + "tokenValidSettingsMsg": "Token er gyldigt! Du kan nu gemme 2FA -indstillingerne.", + "confirmEnableTwoFAMsg": "Er du sikker på at du vil aktivere 2FA?", + "confirmDisableTwoFAMsg": "Er du sikker på at du vil deaktivere 2FA?", + "Apply on all existing monitors": "Anvend på alle eksisterende overvågere", + "Verify Token": "Verificere Token", + "Setup 2FA": "Opsæt 2FA", + "Enable 2FA": "Aktiver 2FA", + "Disable 2FA": "Deaktiver 2FA", + "2FA Settings": "2FA Indstillinger", + "Two Factor Authentication": "To-Faktor Autentificering", + "Active": "Aktive", + "Inactive": "Inaktive", + "Token": "Token", + "Show URI": "Vis URI", + "Clear all statistics": "Ryd alle Statistikker", + "retryCheckEverySecond": "Prøv igen hvert {0} sekund.", + "importHandleDescription": "Vælg 'Spring over eksisterende', hvis du vil springe over hver overvåger eller underretning med samme navn. 'Overskriv' sletter alle eksisterende overvågere og underretninger.", + "confirmImportMsg": "Er du sikker på at importere sikkerhedskopien? Sørg for, at du har valgt den rigtige importindstilling.", + "Heartbeat Retry Interval": "Hjerteslag Gentagelsesinterval", + "Import Backup": "Importer Backup", + "Export Backup": "Eksporter Backup", + "Skip existing": "Spring over eksisterende", + "Overwrite": "Overskriv", + "Options": "Valgmuligheder", + "Keep both": "Behold begge", + "Tags": "Etiketter", + "Add New below or Select...": "Tilføj Nyt nedenfor eller Vælg ...", + "Tag with this name already exist.": "Et Tag med dette navn findes allerede.", + "Tag with this value already exist.": "Et Tag med denne værdi findes allerede.", + "color": "farve", + "value (optional)": "værdi (valgfri)", + "Gray": "Grå", + "Red": "Rød", + "Orange": "Orange", + "Green": "Grøn", + "Blue": "Blå", + "Indigo": "Indigo", + "Purple": "Lilla", + "Pink": "Pink", + "Search...": "Søg...", + "Avg. Ping": "Gns. Ping", + "Avg. Response": "Gns. Respons", + "Entry Page": "Entry Side", + "statusPageNothing": "Intet her, tilføj venligst en Gruppe eller en Overvåger.", + "No Services": "Ingen Tjenester", + "All Systems Operational": "Alle Systemer i Drift", + "Partially Degraded Service": "Delvist Forringet Service", + "Degraded Service": "Forringet Service", + "Add Group": "Tilføj Gruppe", + "Add a monitor": "Tilføj en Overvåger", + "Edit Status Page": "Rediger Statusside", + "Go to Dashboard": "Gå til Betjeningspanel", + "Status Page": "Statusside", + "Status Pages": "Statusside", + "telegram": "Telegram", + "webhook": "Webhook", + "smtp": "Email (SMTP)", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Understøtter 50+ Notifikationstjenester)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "Primary Base URL": "Primær Basis-URL", + "Push URL": "Push URL", + "needPushEvery": "Du bør kalde denne webadresse hvert {0} sekund.", + "pushOptionalParams": "Valgfrie parametre: {0}", + "defaultNotificationName": "Min {notification} Advarsel ({number})", + "here": "her", + "Required": "Påkrævet", + "Bot Token": "Bot Token", + "wayToGetTelegramToken": "Du kan få et token fra {0}.", + "Chat ID": "Chat ID", + "supportTelegramChatID": "Support Direct Chat / Group / Channel's Chat ID", + "wayToGetTelegramChatID": "Du kan få dit chat-ID ved at sende en besked til bot'en og gå til denne URL for at se chat_id'et:", + "YOUR BOT TOKEN HERE": "DIT BOT TOKEN HER", + "chatIDNotFound": "Chat-ID blev ikke fundet; send venligst en besked til denne bot først ", + "Post URL": "Post URL", + "Content Type": "Indholdstype", + "webhookJsonDesc": "{0} er god til alle moderne HTTP-servere som f.eks Express.js", + "webhookFormDataDesc": "{multipart} er god til PHP. JSON'en skal parses med {decodeFunction}", + "secureOptionNone": "Ingen / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Ignorer TLS-fejl", + "From Email": "Afsender Email", + "emailCustomSubject": "Brugerdefineret Emne", + "To Email": "Modtager Email", + "smtpCC": "CC", + "smtpBCC": "BCC", + "Discord Webhook URL": "Discord Webhook URL", + "wayToGetDiscordURL": "Du kan få dette ved at gå til Serverindstillinger -> Integrationer -> Opret webhook ", + "Bot Display Name": "Bot Visningsnavn", + "Prefix Custom Message": "Præfiks Brugerdefineret Besked", + "Hello @everyone is...": "Hello {'@'}everyone is...", + "Webhook URL": "Webhook URL", + "wayToGetTeamsURL": "Du kan lære, hvordan du laver en webhook URL {0}.", + "Number": "Nummer", + "Recipients": "Modtagere", + "needSignalAPI": "Du skal have en Signal-klient med REST API.", + "wayToCheckSignalURL": "Du kan tjekke denne URL for at se, hvordan du konfigurerer en:", + "signalImportant": "VIGTIGT: Du kan ikke blande grupper og numre i modtagere!", + "Application Token": "Program Token", + "Server URL": "Server URL", + "Priority": "Prioritet", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Kanalnavn", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "Mere info om Webhooks på: {0}", + "aboutChannelName": "Indtast kanalnavnet i {0} Kanalnavn feltet, hvis du vil omgå Webhook-kanalen. Eks: #anden-kanal", + "aboutKumaURL": "Hvis du efterlader Uptime Kuma URL-feltet tomt, vil det som standard gå til projektets GitHub-siden.", + "emojiCheatSheet": "Emoji cheat sheet: {0}", + "clicksendsms": "ClickSend SMS", + "User Key": "Bruger-Nøgle", + "Device": "Enhed", + "Message Title": "Besked Titel", + "Notification Sound": "Notifikationslyd", + "More info on:": "Mere info på: {0}", + "pushoverDesc1": "Nødprioritet (2) har som standard 30 sekunders timeout mellem genforsøg og udløber efter 1 time.", + "pushoverDesc2": "Hvis du vil sende meddelelser til forskellige enheder, skal du udfylde feltet Enhed.", + "SMS Type": "SMS Type", + "octopushTypePremium": "Premium (Hurtig - anbefales til advarsel)", + "octopushTypeLowCost": "Lavpris (Langsom - nogle gange blokeret af operatøren)", + "checkPrice": "Tjek {0} priser:", + "apiCredentials": "API legitimationsoplysninger", + "octopushLegacyHint": "Bruger du den ældre version af Octopush (2011-2020) eller den nye version?", + "Check octopush prices": "Tjek octopush priser {0}.", + "octopushPhoneNumber": "Telefonnummer (intl format, f.eks : +4512345678) ", + "octopushSMSSender": "SMS Afsender Navn : 3-11 alfanumeriske tegn og mellemrum (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Enhed-ID", + "Apprise URL": "Apprise URL", + "Example:": "Eksempel: {0}", + "Read more:": "Læs mere: {0}", + "Status:": "Status: {0}", + "Read more": "Læs mere", + "appriseInstalled": "Apprise er installeret.", + "appriseNotInstalled": "Apprise er ikke installeret. {0}", + "Access Token": "Access Token", + "Channel access token": "kanaladgangstoken", + "Line Developers Console": "Line Udviklerkonsol", + "lineDevConsoleTo": "Line Udviklerkonsol - {0}", + "Basic Settings": "Basisindstillinger", + "User ID": "Bruger-ID", + "Messaging API": "Messaging API", + "wayToGetLineChannelToken": "Tilgå først {0}, opret en udbyder og kanal (Messaging API), så kan du få kanaladgangstoken'et og bruger-ID'et fra de ovennævnte menupunkter.", + "Icon URL": "Ikon URL", + "aboutIconURL": "Du kan angive et link til et billede i \"Ikon URL\" for at tilsidesætte standardprofilbilledet. Vil ikke blive brugt, hvis Ikon Emoji er angivet.", + "aboutMattermostChannelName": "Du kan tilsidesætte standardkanalen, som Webhoo'en sender til ved at indtaste kanalnavnet i feltet \"Kanalnavn\". Dette skal aktiveres i Mattermost Webhook-indstillingerne. Eks: #anden-kanal", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - billig, men langsom og ofte overbelastet. Begrænset kun til polske modtagere.", + "promosmsTypeFlash": "SMS FLASH - Beskeden vises automatisk på modtagerenheden. Begrænset kun til polske modtagere.", + "promosmsTypeFull": "SMS FULL - Premium-niveau af SMS, Du kan bruge dit \"Sender Name\" (Du skal først registrere navn). Pålidelig til advarsler.", + "promosmsTypeSpeed": "SMS SPEED - Højeste prioritet i systemet. Meget hurtig og pålidelig, men dyr (ca. to gange af SMS FULL pris).", + "promosmsPhoneNumber": "Telefonnummer (polske numre behøver ikke angive områdenumre)", + "promosmsSMSSender": "SMS Sender Name : Forudregistreret navn eller en af standarderne: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + "matrixHomeserverURL": "Hjemmeserver-URL (med http(s):// og eventuel port)", + "Internal Room Id": "Intern Rum-ID", + "matrixDesc1": "Du kan finde det interne rum-ID ved at se i det avancerede afsnit af rumindstillingerne i din Matrix-klient. Det skulle ligne !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Det anbefales stærkt, at du opretter en ny bruger og ikke bruger din egen Matrix-brugers adgangstoken, da det giver fuld adgang til din konto og alle de rum, du har tilsluttet dig. I stedet skal du oprette en ny bruger og kun invitere den til det rum, du vil modtage meddelelsen i. Du kan få adgangstokenet ved at køre {0}", + "Method": "Metode", + "Body": "Body", + "Headers": "Headers", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "\"request headers\"-erne er ikke gyldige JSON: ", + "BodyInvalidFormat": "\"request body\"-en er ikke gyldige JSON: ", + "Monitor History": "Overvåger Historik", + "clearDataOlderThan": "Gem overvågningshistorikdata i {0} dage.", + "PasswordsDoNotMatch": "Adgangskoderne stemmer ikke overens.", + "records": "forekomster", + "One record": "Én forekomst", + "steamApiKeyDescription": "For at overvåge en Steam Game Server skal du bruge en Steam Web-API nøgle. Du kan registrere din API-nøgle her: ", + "Current User": "Nuværende Bruger", + "recent": "Seneste", + "Done": "Færdig", + "Info": "Info", + "Security": "Sikkerhed", + "Steam API Key": "Steam API-nøgle", + "Shrink Database": "Krymp Database", + "Pick a RR-Type...": "Vælg en RR-Type...", + "Pick Accepted Status Codes...": "Vælg Accepterede Statuskoder...", + "Default": "Standard", + "HTTP Options": "HTTP Valgmuligheder", + "Create Incident": "Opret Annoncering", + "Title": "Titel", + "Content": "Indhold", + "Style": "Type", + "info": "info", + "warning": "advarsel", + "danger": "fare", + "primary": "primær", + "light": "lys", + "dark": "mørk", + "Post": "Udgiv", + "Please input title and content": "Indtast venligst titel og indhold", + "Created": "Oprettet", + "Last Updated": "Sidst Opdateret", + "Unpin": "Frigør", + "Switch to Light Theme": "Skift til Lys Tema", + "Switch to Dark Theme": "Skift til Mørkt Tema", + "Show Tags": "Vis Etiketter", + "Hide Tags": "Skjul Etiketter", + "Description": "Beskrivelse", + "No monitors available.": "No monitors available.", + "Add one": "Tilføj en", + "No Monitors": "Ingen Overvågere", + "Untitled Group": "Unavngivet Gruppe", + "Services": "Tjenester", + "Discard": "Kassér", + "Cancel": "Annullér", + "Powered by": "Drevet af", + "shrinkDatabaseDescription": "Udfør database VACUUM for SQLite. Hvis din database er oprettet efter 1.10.0, er AUTO_VACUUM allerede aktiveret, og denne handling er ikke nødvendig.", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API Brugernavn (inkl. webapi_ prefix)", + "serwersmsAPIPassword": "API Adgangskode", + "serwersmsPhoneNumber": "Telefonnummer", + "serwersmsSenderName": "SMS Afsender Navn (registreret via kundeportal)", + "stackfield": "Stackfield" +} diff --git a/src/lang/de-CH.json b/src/lang/de-CH.json new file mode 100644 index 000000000..c3e4d3d51 --- /dev/null +++ b/src/lang/de-CH.json @@ -0,0 +1,634 @@ +{ + "languageName": "Deutsch (Schweiz)", + "Settings": "Einstellungen", + "Dashboard": "Dashboard", + "New Update": "Update verfügbar", + "Language": "Sprache", + "Appearance": "Erscheinungsbild", + "Theme": "Erscheinungsbild", + "General": "Allgemein", + "Version": "Version", + "Check Update On GitHub": "Auf GitHub nach Updates suchen", + "List": "Liste", + "Add": "Hinzufügen", + "Add New Monitor": "Neuen Monitor hinzufügen", + "Quick Stats": "Übersicht", + "Up": "Aktiv", + "Down": "Inaktiv", + "Pending": "Ausstehend", + "Unknown": "Unbekannt", + "Pause": "Pausieren", + "pauseDashboardHome": "Pausiert", + "Name": "Name", + "Status": "Status", + "DateTime": "Datum / Uhrzeit", + "Message": "Nachricht", + "No important events": "Keine wichtigen Ereignisse", + "Resume": "Fortsetzen", + "Edit": "Bearbeiten", + "Delete": "Löschen", + "Current": "Aktuell", + "Uptime": "Verfügbarkeit", + "Cert Exp.": "Zertifikatsablauf", + "day": "Tag | Tage", + "-day": "-Tage", + "hour": "Stunde", + "-hour": "-Stunden", + "checkEverySecond": "Überprüfe alle {0} Sekunden", + "Response": "Antwortzeit", + "Ping": "Ping", + "Monitor Type": "Monitor-Typ", + "Keyword": "Suchwort", + "Friendly Name": "Anzeigename", + "URL": "URL", + "Hostname": "Hostname", + "Port": "Port", + "Heartbeat Interval": "Prüfintervall", + "Retries": "Wiederholungen", + "retriesDescription": "Maximale Anzahl von Wiederholungen, bevor der Dienst als inaktiv markiert und eine Benachrichtigung gesendet wird.", + "Advanced": "Erweitert", + "ignoreTLSError": "Ignoriere TLS-/SSL-Fehler von Webseiten", + "Upside Down Mode": "Umgekehrter Modus", + "upsideDownModeDescription": "Im umgekehrten Modus wird der Dienst als inaktiv angezeigt, wenn er erreichbar ist.", + "Max. Redirects": "Max. Weiterleitungen", + "maxRedirectDescription": "Maximale Anzahl von Weiterleitungen, denen gefolgt werden soll. Auf 0 setzen, um Weiterleitungen zu deaktivieren.", + "Accepted Status Codes": "Erlaubte HTTP-Statuscodes", + "acceptedStatusCodesDescription": "Statuscodes auswählen, die als erfolgreiche Verbindung gelten sollen.", + "Save": "Speichern", + "Notifications": "Benachrichtigungen", + "Not available, please setup.": "Nicht verfügbar, bitte einrichten.", + "Setup Notification": "Benachrichtigung einrichten", + "Light": "Hell", + "Dark": "Dunkel", + "Auto": "Auto", + "Theme - Heartbeat Bar": "Erscheinungsbild - Zeitleiste", + "Normal": "Normal", + "Bottom": "Unten", + "None": "Keine", + "Timezone": "Zeitzone", + "Search Engine Visibility": "Sichtbarkeit für Suchmaschinen", + "Allow indexing": "Indizierung zulassen", + "Discourage search engines from indexing site": "Suchmaschinen darum bitten, die Seite nicht zu indizieren", + "Change Password": "Passwort ändern", + "Current Password": "Aktuelles Passwort", + "New Password": "Neues Passwort", + "Repeat New Password": "Neues Passwort wiederholen", + "passwordNotMatchMsg": "Passwörter stimmen nicht überein.", + "Update Password": "Passwort aktualisieren", + "Disable Auth": "Authentifizierung deaktivieren", + "Enable Auth": "Authentifizierung aktivieren", + "disableauth.message1": "Bist du sicher das du die Authentifizierung deaktivieren möchtest?", + "disableauth.message2": "Dies ist für Szenarien gedacht, in denen man eine externe Authentifizierung vor Uptime Kuma geschaltet hat, wie z.B. Cloudflare Access, Authelia oder andere Authentifizierungsmechanismen.", + "Please use this option carefully!": "Bitte mit Vorsicht nutzen.", + "Logout": "Ausloggen", + "notificationDescription": "Benachrichtigungen müssen einem Monitor zugewiesen werden, damit diese funktionieren.", + "Leave": "Verlassen", + "I understand, please disable": "Ich verstehe, bitte deaktivieren", + "Confirm": "Bestätigen", + "Yes": "Ja", + "No": "Nein", + "Username": "Benutzername", + "Password": "Passwort", + "Remember me": "Angemeldet bleiben", + "Login": "Einloggen", + "No Monitors, please": "Keine Monitore, bitte", + "add one": "hinzufügen", + "Notification Type": "Benachrichtigungsdienst", + "Email": "E-Mail", + "Test": "Test", + "Certificate Info": "Zertifikatsinformation", + "keywordDescription": "Ein Suchwort in der HTML- oder JSON-Ausgabe finden. Bitte beachte: es wird zwischen Gross-/Kleinschreibung unterschieden.", + "deleteMonitorMsg": "Bist du sicher, dass du den Monitor löschen möchtest?", + "deleteNotificationMsg": "Möchtest du diese Benachrichtigung wirklich für alle Monitore löschen?", + "resolverserverDescription": "Cloudflare ist als der Standardserver festgelegt. Dieser kann jederzeit geändert werden.", + "Resolver Server": "Auflösungsserver", + "rrtypeDescription": "Wähle den RR-Typ aus, welchen du überwachen möchtest.", + "Last Result": "Letztes Ergebnis", + "pauseMonitorMsg": "Bist du sicher, dass du den Monitor pausieren möchtest?", + "clearEventsMsg": "Bist du sicher, dass du alle Ereignisse für diesen Monitor löschen möchtest?", + "clearHeartbeatsMsg": "Bist du sicher, dass du alle Statistiken für diesen Monitor löschen möchtest?", + "Clear Data": "Lösche Daten", + "Events": "Ereignisse", + "Heartbeats": "Statistiken", + "confirmClearStatisticsMsg": "Bist du dir sicher, dass du ALLE Statistiken löschen möchtest?", + "Create your admin account": "Erstelle dein Admin-Konto", + "Repeat Password": "Passwort erneut eingeben", + "Resource Record Type": "Ressourcen Record Typ", + "Export": "Export", + "Import": "Import", + "respTime": "Antw.-Zeit (ms)", + "notAvailableShort": "N/A", + "Default enabled": "Standardmässig aktiviert", + "Apply on all existing monitors": "Auf alle existierenden Monitore anwenden", + "enableDefaultNotificationDescription": "Für jeden neuen Monitor wird diese Benachrichtigung standardmässig aktiviert. Die Benachrichtigung kann weiterhin für jeden Monitor separat deaktiviert werden.", + "Create": "Erstellen", + "Auto Get": "Auto Get", + "backupDescription": "Es können alle Monitore und Benachrichtigungen in einer JSON-Datei gesichert werden.", + "backupDescription2": "PS: Verlaufs- und Ereignisdaten sind nicht enthalten.", + "backupDescription3": "Sensible Daten wie Benachrichtigungs-Token sind in der Exportdatei enthalten, bitte bewahre sie sorgfältig auf.", + "alertNoFile": "Bitte wähle eine Datei zum Importieren aus.", + "alertWrongFileType": "Bitte wähle eine JSON-Datei aus.", + "Clear all statistics": "Lösche alle Statistiken", + "importHandleDescription": "Wähle 'Vorhandene überspringen' aus, wenn jeder Monitor oder jede Benachrichtigung mit demselben Namen übersprungen werden soll. 'Überschreiben' löscht jeden vorhandenen Monitor sowie Benachrichtigungen.", + "Skip existing": "Vorhandene überspringen", + "Overwrite": "Überschreiben", + "Options": "Optionen", + "confirmImportMsg": "Möchtest du das Backup wirklich importieren? Bitte stelle sicher, dass die richtige Import-Option ausgewählt ist.", + "Keep both": "Beide behalten", + "twoFAVerifyLabel": "Bitte trage deinen Token ein, um zu verifizieren, dass 2FA funktioniert", + "Verify Token": "Token verifizieren", + "Setup 2FA": "2FA einrichten", + "Enable 2FA": "2FA aktivieren", + "Disable 2FA": "2FA deaktivieren", + "2FA Settings": "2FA-Einstellungen", + "confirmEnableTwoFAMsg": "Bist du sicher, dass du 2FA aktivieren möchtest?", + "confirmDisableTwoFAMsg": "Bist du sicher, dass du 2FA deaktivieren möchtest?", + "tokenValidSettingsMsg": "Token gültig! Du kannst jetzt die 2FA-Einstellungen speichern.", + "Two Factor Authentication": "Zwei-Faktor-Authentifizierung", + "Active": "Aktiv", + "Inactive": "Inaktiv", + "Token": "Token", + "Show URI": "URI anzeigen", + "Tags": "Tags", + "Add New below or Select...": "Einen bestehenden Tag auswählen oder neuen hinzufügen...", + "Tag with this name already exist.": "Ein Tag mit diesem Namen existiert bereits.", + "Tag with this value already exist.": "Ein Tag mit diesem Wert existiert bereits.", + "color": "Farbe", + "value (optional)": "Wert (optional)", + "Gray": "Grau", + "Red": "Rot", + "Orange": "Orange", + "Green": "Grün", + "Blue": "Blau", + "Indigo": "Indigo", + "Purple": "Lila", + "Pink": "Pink", + "Search...": "Suchen...", + "Heartbeat Retry Interval": "Überprüfungsintervall", + "Resend Notification if Down X times consequently": "Benachrichtigung erneut senden, wenn Inaktiv X mal hintereinander", + "retryCheckEverySecond": "Alle {0} Sekunden neu versuchen", + "resendEveryXTimes": "Erneut versenden alle {0} mal", + "resendDisabled": "Erneut versenden deaktiviert", + "Import Backup": "Backup importieren", + "Export Backup": "Backup exportieren", + "Avg. Ping": "Ping ø", + "Avg. Response": "Antwortzeit ø", + "Entry Page": "Einstiegsseite", + "statusPageNothing": "Noch ist hier nichts. Bitte füge eine Gruppe oder einen Monitor hinzu.", + "No Services": "Keine Dienste", + "All Systems Operational": "Alle Systeme betriebsbereit", + "Partially Degraded Service": "Teilweise beeinträchtigter Dienst", + "Degraded Service": "Eingeschränkter Dienst", + "Add Group": "Gruppe hinzufügen", + "Add a monitor": "Monitor hinzufügen", + "Edit Status Page": "Bearbeite Status-Seite", + "Go to Dashboard": "Gehe zum Dashboard", + "Status Page": "Status-Seite", + "Status Pages": "Status-Seiten", + "telegram": "Telegram", + "webhook": "Webhook", + "smtp": "E-Mail (SMTP)", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Unterstützung für 50+ Benachrichtigungsdienste)", + "GoogleChat": "Google Chat (nur Google Workspace)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "Primary Base URL": "Primär URL", + "Push URL": "Push URL", + "needPushEvery": "Du solltest diese URL alle {0} Sekunden aufrufen", + "pushOptionalParams": "Optionale Parameter: {0}", + "defaultNotificationName": "Mein {notification} Alarm ({number})", + "here": "hier", + "Required": "Erforderlich", + "Bot Token": "Bot Token", + "wayToGetTelegramToken": "Hier kannst du einen Token erhalten {0}.", + "Chat ID": "Chat ID", + "supportTelegramChatID": "Unterstützt Direkt Chat / Gruppe / Kanal Chat-ID's", + "wayToGetTelegramChatID": "Du kannst die Chat-ID erhalten, indem du eine Nachricht an den Bot sendest und zu dieser URL gehst, um die chat_id: zu sehen.", + "YOUR BOT TOKEN HERE": "HIER DEIN BOT TOKEN", + "chatIDNotFound": "Chat-ID wurde nicht gefunden: bitte sende zuerst eine Nachricht an diesen Bot", + "Post URL": "Post URL", + "Content Type": "Content Type", + "webhookJsonDesc": "{0} ist gut für alle modernen HTTP-Server, wie z.B. Express.js, geeignet", + "webhookFormDataDesc": "{multipart} ist gut für PHP. Das JSON muss mit {decodeFunction} verarbeitet werden", + "secureOptionNone": "Keine / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "TLS-Fehler ignorieren", + "From Email": "Absender E-Mail", + "emailCustomSubject": "Benutzerdefinierter Betreff", + "To Email": "Empfänger E-Mail", + "smtpCC": "CC", + "smtpBCC": "BCC", + "Discord Webhook URL": "Discord Webhook URL", + "wayToGetDiscordURL": "Du kannst diese erhalten, indem du zu den Servereinstellungen gehst -> Integrationen -> Neuer Webhook", + "Bot Display Name": "Bot-Anzeigename", + "Prefix Custom Message": "Benutzerdefinierter Nachrichten Präfix", + "Hello @everyone is...": "Hallo {'@'}everyone ist...", + "Webhook URL": "Webhook URL", + "wayToGetTeamsURL": "Wie eine Webhook-URL erstellt werden kann, erfährst du {0}.", + "Number": "Nummer", + "Recipients": "Empfänger", + "needSignalAPI": "Es wird ein Signal Client mit REST-API benötigt.", + "wayToCheckSignalURL": "Du kannst diese URL aufrufen, um zu sehen, wie du eine einrichtest:", + "signalImportant": "WICHTIG: Gruppen und Nummern können in Empfängern nicht gemischt werden!", + "Application Token": "Anwendungstoken", + "Server URL": "Server URL", + "Priority": "Priorität", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Kanalname", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "Weitere Informationen zu Webhooks auf: {0}", + "aboutChannelName": "Gebe den Kanalnamen ein in {0} Feld Kanalname, falls du den Webhook-Kanal umgehen möchtest. Ex: #other-channel", + "aboutKumaURL": "Wenn das Feld für die Uptime Kuma URL leer gelassen wird, wird standardmässig die GitHub Projekt Seite verwendet.", + "emojiCheatSheet": "Emoji Cheat Sheet: {0}", + "User Key": "Benutzerschlüssel", + "Device": "Gerät", + "Message Title": "Nachrichtentitel", + "Notification Sound": "Benachrichtigungston", + "More info on:": "Mehr Infos auf: {0}", + "pushoverDesc1": "Notfallpriorität (2) hat standardmässig 30 Sekunden Auszeit zwischen den Versuchen und läuft nach 1 Stunde ab.", + "pushoverDesc2": "Fülle das Geräte Feld aus, wenn du Benachrichtigungen an verschiedene Geräte senden möchtest.", + "SMS Type": "SMS Typ", + "octopushTypePremium": "Premium (Schnell - zur Benachrichtigung empfohlen)", + "octopushTypeLowCost": "Kostengünstig (Langsam - manchmal vom Betreiber gesperrt)", + "checkPrice": "Prüfe {0} Preise:", + "octopushLegacyHint": "Verwendest du die Legacy-Version von Octopush (2011-2020) oder die neue Version?", + "Check octopush prices": "Vergleiche die Oktopush Preise {0}.", + "octopushPhoneNumber": "Telefonnummer (Internationales Format, z.B : +49612345678) ", + "octopushSMSSender": "Name des SMS-Absenders : 3-11 alphanumerische Zeichen und Leerzeichen (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Geräte ID", + "Apprise URL": "Apprise URL", + "Example:": "Beispiel: {0}", + "Read more:": "Weiterlesen: {0}", + "Status:": "Status: {0}", + "Read more": "Weiterlesen", + "appriseInstalled": "Apprise ist installiert.", + "appriseNotInstalled": "Apprise ist nicht installiert. {0}", + "Access Token": "Access Token", + "Channel access token": "Channel access token", + "Line Developers Console": "Line Developers Console", + "lineDevConsoleTo": "Line Developers Console - {0}", + "Basic Settings": "Basic Settings", + "User ID": "User ID", + "Messaging API": "Messaging API", + "wayToGetLineChannelToken": "Rufe zuerst {0} auf, erstelle dann einen Provider und Channel (Messaging API). Als nächstes kannst du den Channel access token und die User ID aus den oben genannten Menüpunkten abrufen.", + "Icon URL": "Icon URL", + "aboutIconURL": "Du kannst einen Link zu einem Bild in 'Icon URL' übergeben um das Standardprofilbild zu überschreiben. Wird nicht verwendet, wenn ein Icon Emoji gesetzt ist.", + "aboutMattermostChannelName": "Du kannst den Standardkanal, auf dem der Webhook gesendet wird überschreiben, indem der Kanalnamen in das Feld 'Channel Name' eingeben wird. Dies muss in den Mattermost Webhook-Einstellungen aktiviert werden. Ex: #other-channel", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - billig, aber langsam und oft überladen. Auf polnische Empfänger beschränkt.", + "promosmsTypeFlash": "SMS FLASH - Die Nachricht wird automatisch auf dem Empfängergerät angezeigt. Auf polnische Empfänger beschränkt.", + "promosmsTypeFull": "SMS FULL - Premium Stufe von SMS, es kann der Absendernamen verwendet werden (Der Name musst zuerst registriert werden). Zuverlässig für Warnungen.", + "promosmsTypeSpeed": "SMS SPEED - Höchste Priorität im System. Sehr schnell und zuverlässig, aber teuer (Ungefähr das doppelte von SMS FULL).", + "promosmsPhoneNumber": "Telefonnummer (für polnische Empfänger können die Vorwahlen übersprungen werden)", + "promosmsSMSSender": "Name des SMS-Absenders : vorregistrierter Name oder einer der Standardwerte: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu Webhook URL", + "matrixHomeserverURL": "Heimserver URL (mit http(s):// und optionalen Ports)", + "Internal Room Id": "Interne Raum-ID", + "matrixDesc1": "Die interne Raum-ID findest du im erweiterten Bereich der Raumeinstellungen im Matrix-Client. Es sollte aussehen wie z.B. !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Es wird dringend empfohlen einen neuen Benutzer anzulegen und nicht den Zugriffstoken deines eigenen Matrix-Benutzers zu verwenden. Anderenfalls ermöglicht es vollen Zugriff auf dein Konto und alle Räume, denen du beigetreten bist. Erstelle stattdessen einen neuen Benutzer und lade ihn nur in den Raum ein, in dem du die Benachrichtigung erhalten möchtest. Du kannst den Zugriffstoken erhalten, indem du Folgendes ausführst {0}", + "Method": "Method", + "Body": "Body", + "Headers": "Headers", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "Der Header ist kein gültiges JSON: ", + "BodyInvalidFormat": "Der Body ist kein gültiges JSON: ", + "Monitor History": "Monitor Verlauf", + "clearDataOlderThan": "Bewahre die Aufzeichnungsdaten für {0} Tage auf.", + "PasswordsDoNotMatch": "Passwörter stimmen nicht überein.", + "records": "Einträge", + "One record": "Ein Eintrag", + "steamApiKeyDescription": "Um einen Steam Game Server zu überwachen, wird ein Steam Web-API-Schlüssel benötigt. Dieser kann hier registriert werden: ", + "Current User": "Aktueller Benutzer", + "recent": "Letzte", + "Done": "Fertig", + "Info": "Info", + "Security": "Sicherheit", + "Steam API Key": "Steam API Key", + "Shrink Database": "Datenbank verkleinern", + "Pick a RR-Type...": "Wähle ein RR-Typ aus...", + "Pick Accepted Status Codes...": "Wähle akzeptierte Statuscodes aus...", + "Default": "Standard", + "HTTP Options": "HTTP Optionen", + "Create Incident": "Vorfall erstellen", + "Title": "Titel", + "Content": "Inhalt", + "Style": "Stil", + "info": "info", + "warning": "warnung", + "danger": "gefahr", + "primary": "primär", + "light": "hell", + "dark": "dunkel", + "Post": "Eintrag", + "Please input title and content": "Bitte Titel und Inhalt eingeben", + "Created": "Erstellt", + "Last Updated": "Zuletzt aktualisiert", + "Unpin": "Loslösen", + "Switch to Light Theme": "Zu hellem Thema wechseln", + "Switch to Dark Theme": "Zum dunklen Thema wechseln", + "Show Tags": "Tags anzeigen", + "Hide Tags": "Tags ausblenden", + "Description": "Beschreibung", + "No monitors available.": "Keine Monitore verfügbar.", + "Add one": "Hinzufügen", + "No Monitors": "Keine Monitore", + "Untitled Group": "Gruppe ohne Titel", + "Services": "Dienste", + "Discard": "Verwerfen", + "Cancel": "Abbrechen", + "Powered by": "Powered by", + "shrinkDatabaseDescription": "Löse VACUUM für die SQLite Datenbank aus. Wenn die Datenbank nach 1.10.0 erstellt wurde, ist AUTO_VACUUM bereits aktiviert und diese Aktion ist nicht erforderlich.", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API Benutzername (inkl. webapi_ prefix)", + "serwersmsAPIPassword": "API Passwort", + "serwersmsPhoneNumber": "Telefonnummer", + "serwersmsSenderName": "Name des SMS-Absenders (über Kundenportal registriert)", + "stackfield": "Stackfield", + "clicksendsms": "ClickSend SMS", + "apiCredentials": "API Zugangsdaten", + "smtpDkimSettings": "DKIM Einstellungen", + "smtpDkimDesc": "Details zur Konfiguration sind in der Nodemailer DKIM {0} zu finden.", + "documentation": "Dokumentation", + "smtpDkimDomain": "Domain Name", + "smtpDkimKeySelector": "Schlüssel Auswahl", + "smtpDkimPrivateKey": "Privater Schlüssel", + "smtpDkimHashAlgo": "Hash-Algorithmus (Optional)", + "smtpDkimheaderFieldNames": "Zu validierende Header-Schlüssel (optional)", + "smtpDkimskipFields": "Zu ignorierende Header Schlüssel (optional)", + "PushByTechulus": "Push by Techulus", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API Endpunkt", + "alertaEnvironment": "Umgebung", + "alertaApiKey": "API Schlüssel", + "alertaAlertState": "Alarmstatus", + "alertaRecoverState": "Wiederherstellungsstatus", + "deleteStatusPageMsg": "Bist du sicher, dass du diese Status-Seite löschen willst?", + "Proxies": "Proxies", + "default": "Standard", + "enabled": "Aktiviert", + "setAsDefault": "Als Standard setzen", + "deleteProxyMsg": "Bist du sicher, dass du diesen Proxy für alle Monitore löschen willst?", + "proxyDescription": "Proxies müssen einem Monitor zugewiesen werden, um zu funktionieren.", + "enableProxyDescription": "Dieser Proxy wird keinen Effekt auf Monitor-Anfragen haben, bis er aktiviert ist. Du kannst ihn temporär von allen Monitoren nach Aktivierungsstatus deaktivieren.", + "setAsDefaultProxyDescription": "Dieser Proxy wird standardmässig für alle neuen Monitore aktiviert sein. Du kannst den Proxy immer noch für jeden Monitor einzeln deaktivieren.", + "Certificate Chain": "Zertifikatskette", + "Valid": "Gültig", + "Invalid": "Ungültig", + "AccessKeyId": "AccessKey ID", + "SecretAccessKey": "AccessKey Secret", + "PhoneNumbers": "Telefonnummern", + "TemplateCode": "Vorlagencode", + "SignName": "Signaturname", + "Sms template must contain parameters: ": "SMS Vorlage muss folgende Parameter enthalten: ", + "Bark Endpoint": "Bark Endpunkt", + "WebHookUrl": "Webhook URL", + "SecretKey": "Geheimer Schlüssel", + "For safety, must use secret key": "Zur Sicherheit muss ein geheimer Schlüssel verwendet werden", + "Device Token": "Gerätetoken", + "Platform": "Platform", + "iOS": "iOS", + "Android": "Android", + "Huawei": "Huawei", + "High": "Hoch", + "Retry": "Wiederholungen", + "Topic": "Thema", + "WeCom Bot Key": "WeCom Bot Schlüssel", + "Setup Proxy": "Proxy einrichten", + "Proxy Protocol": "Proxy Protokoll", + "Proxy Server": "Proxy-Server", + "Proxy server has authentication": "Proxy-Server hat Authentifizierung", + "User": "Benutzer", + "Installed": "Installiert", + "Not installed": "Nicht installiert", + "Running": "Läuft", + "Not running": "Gestoppt", + "Remove Token": "Token entfernen", + "Start": "Start", + "Stop": "Stop", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "Neue Status-Seite hinzufügen", + "Slug": "Slug", + "Accept characters:": "Akzeptierte Zeichen:", + "startOrEndWithOnly": "Nur mit {0} anfangen und enden", + "No consecutive dashes": "Keine aufeinanderfolgenden Bindestriche", + "Next": "Weiter", + "The slug is already taken. Please choose another slug.": "Der Slug ist bereits in Verwendung. Bitte wähle einen anderen.", + "No Proxy": "Kein Proxy", + "Authentication": "Authentifizierung", + "HTTP Basic Auth": "HTTP Basisauthentifizierung", + "New Status Page": "Neue Status-Seite", + "Page Not Found": "Seite nicht gefunden", + "Reverse Proxy": "Reverse Proxy", + "Backup": "Sicherung", + "About": "Über", + "wayToGetCloudflaredURL": "(Lade Cloudflare von {0} herunter)", + "cloudflareWebsite": "Cloudflare Website", + "Message:": "Nachricht:", + "Don't know how to get the token? Please read the guide:": "Du weisst nicht, wie man den Token bekommt? Lies die Anleitung dazu:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Die aktuelle Verbindung kann unterbrochen werden, wenn du aktuell über Cloudflare Tunnel verbunden bist. Bist du sicher, dass du es stoppen willst? Gib zur Bestätigung dein aktuelles Passwort ein.", + "Other Software": "Andere Software", + "For example: nginx, Apache and Traefik.": "Zum Beispiel: nginx, Apache und Traefik.", + "Please read": "Bitte lesen", + "Subject:": "Betreff:", + "Valid To:": "Gültig bis:", + "Days Remaining:": "Tage verbleibend:", + "Issuer:": "Aussteller:", + "Fingerprint:": "Fingerabdruck:", + "No status pages": "Keine Status-Seiten", + "Domain Name Expiry Notification": "Benachrichtigung bei Ablauf des Domainnamens", + "Customize": "Anpassen", + "Custom Footer": "Eigener Footer", + "Custom CSS": "Eigenes CSS", + "Footer Text": "Fusszeile", + "Show Powered By": "Zeige 'Powered By'", + "Date Created": "Erstellt am", + "Domain Names": "Domainnamen", + "signedInDisp": "Angemeldet als {0}", + "signedInDispDisabled": "Authentifizierung deaktiviert.", + "dnsPortDescription": "DNS server port. Standard ist 53. Der Port kann jederzeit geändert werden.", + "topic": "Thema", + "topicExplanation": "MQTT Thema für den monitor", + "successMessage": "Erfolgsnachricht", + "successMessageExplanation": "MQTT Nachricht, die als Erfolg angesehen wird", + "error": "Fehler", + "critical": "kritisch", + "wayToGetPagerDutyKey": "Dieser kann unter Service -> Service Directory -> (Select a service) -> Integrations -> Add integration gefunden werden. Hier muss nach \"Events API V2\" gesucht werden. Mehr informationen {0}", + "Integration Key": "Schlüssel der Integration", + "Integration URL": "URL der Integration", + "Auto resolve or acknowledged": "Automatisch lösen oder bestätigen", + "do nothing": "nichts tun", + "auto acknowledged": "automatisch bestätigen", + "auto resolve": "automatisch lösen", + "Bark Group": "Bark Gruppe", + "Bark Sound": "Bark Klang", + "HTTP Headers": "HTTP Kopfzeilen", + "Trust Proxy": "Vertrauenswürdiger Proxy", + "Proxy": "Proxy", + "HomeAssistant": "Home Assistant", + "onebotHttpAddress": "OneBot HTTP Adresse", + "onebotMessageType": "OneBot Nachrichtentyp", + "onebotGroupMessage": "Gruppe", + "onebotPrivateMessage": "Privat", + "onebotUserOrGroupId": "Gruppe/Nutzer ID", + "onebotSafetyTips": "Zur Sicherheit ein access token setzen", + "PushDeer Key": "PushDeer Schlüssel", + "RadiusSecret": "Radius Geheimnis", + "RadiusSecretDescription": "Geteiltes Geheimnis zwischen Client und Server", + "RadiusCalledStationId": "ID der angesprochenen Station", + "RadiusCalledStationIdDescription": "Identifikation des angesprochenen Geräts", + "RadiusCallingStationId": "ID der ansprechenden Station", + "RadiusCallingStationIdDescription": "Identifikation des ansprechenden Geräts", + "Certificate Expiry Notification": "Benachrichtigung ablaufendes Zertifikat", + "API Username": "API Nutzername", + "API Key": "API Schlüssel", + "Recipient Number": "Empfängernummer", + "From Name/Number": "Von Name/Nummer", + "Leave blank to use a shared sender number.": "Leer lassen um eine geteilte Absendernummer zu nutzen.", + "Octopush API Version": "Octopush API Version", + "Legacy Octopush-DM": "Legacy Octopush-DM", + "endpoint": "Endpunkt", + "octopushAPIKey": "\"API Schlüssel\" der HTTP API Zugangsdaten im control panel", + "octopushLogin": "\"Login\" der HTTP API Zugangsdaten im control panel", + "promosmsLogin": "API Login Name", + "promosmsPassword": "API Password", + "pushoversounds pushover": "Pushover (Standard)", + "pushoversounds bike": "Fahrrad", + "pushoversounds bugle": "Signalhorn", + "pushoversounds cashregister": "Kasse", + "pushoversounds classical": "Klassisch", + "pushoversounds cosmic": "Kosmisch", + "pushoversounds falling": "Abfallend", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Eingang", + "pushoversounds intermission": "Pause", + "pushoversounds magic": "Magisch", + "pushoversounds mechanical": "Mechanisch", + "pushoversounds pianobar": "Piano Bar", + "pushoversounds siren": "Sirene", + "pushoversounds spacealarm": "Space Alarm", + "pushoversounds tugboat": "Schlepper Horn", + "pushoversounds alien": "Ausserirdisch (lang)", + "pushoversounds climb": "Ansteigende (lang)", + "pushoversounds persistent": "Hartnäckig (lang)", + "pushoversounds echo": "Pushover Echo (lang)", + "pushoversounds updown": "Auf und Ab (lang)", + "pushoversounds vibrate": "Nur vibrieren", + "pushoversounds none": "Nichts (Stille)", + "pushyAPIKey": "Geheimer API Schlüssel", + "pushyToken": "Gerätetoken", + "Show update if available": "Verfügbare Updates anzeigen", + "Also check beta release": "Auch nach beta Versionen schauen", + "Using a Reverse Proxy?": "Wird ein Reverse Proxy genutzt?", + "Check how to config it for WebSocket": "Prüfen, wie er für die Nutzung mit WebSocket konfiguriert wird", + "Steam Game Server": "Steam Game Server", + "Most likely causes:": "Wahrscheinliche Ursachen:", + "The resource is no longer available.": "Die Quelle ist nicht mehr verfügbar.", + "There might be a typing error in the address.": "Es gibt einen Tippfehler in der Adresse.", + "What you can try:": "Was du versuchen kannst:", + "Retype the address.": "Schreibe die Adresse erneut.", + "Go back to the previous page.": "Gehe zur vorigen Seite.", + "Coming Soon": "Kommt bald", + "wayToGetClickSendSMSToken": "Du kannst einen API Nutzernamen und Schlüssel unter {0} erhalten.", + "Connection String": "Verbindungstext", + "Query": "Abfrage", + "settingsCertificateExpiry": "TLS Zertifikatsablauf", + "certificationExpiryDescription": "HTTPS Monitore senden eine Benachrichtigung, wenn das Zertifikat abläuft in:", + "Setup Docker Host": "Docker Host einrichten", + "Connection Type": "Verbindungstyp", + "Docker Daemon": "Docker Daemon", + "deleteDockerHostMsg": "Bist du sicher diesen docker host für alle Monitore zu löschen?", + "socket": "Socket", + "tcp": "TCP / HTTP", + "Docker Container": "Docker Container", + "Container Name / ID": "Container Name / ID", + "Docker Host": "Docker Host", + "Docker Hosts": "Docker Hosts", + "ntfy Topic": "ntfy Thema", + "Domain": "Domain", + "Workstation": "Workstation", + "disableCloudflaredNoAuthMsg": "Du bist im nicht-authentifizieren Modus, ein Passwort wird nicht benötigt.", + "trustProxyDescription": "Vertraue 'X-Forwarded-*' headern. Wenn man die richtige client IP haben möchte und Uptime Kuma hinter einem Proxy wie Nginx or Apache läuft, wollte dies aktiviert werden.", + "wayToGetLineNotifyToken": "Du kannst hier ein Token erhalten: {0}", + "Examples": "Beispiele", + "Home Assistant URL": "Home Assistant URL", + "Long-Lived Access Token": "Lange gültiges Access Token", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Lange gültige Access Token können durch klicken auf den Profilnamen (unten links) und dann einen Klick auf Create Token am Ende erstellt werden. ", + "Notification Service": "Benachrichtigungsdienst", + "default: notify all devices": "standard: Alle Geräte benachrichtigen", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Eine Liste der Benachrichtigungsdienste kann im Home Assistant unter \"Developer Tools > Services\" gefunden werden, wnen man nach \"notification\" sucht um den Geräte-/Telefonnamen zu finden.", + "Automations can optionally be triggered in Home Assistant:": "Automatisierungen können optional im Home Assistant ausgelöst werden:", + "Trigger type:": "Auslöser:", + "Event type:": "Ereignistyp:", + "Event data:": "Ereignis daten:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Dann eine Aktion wählen, zum Beispiel eine Scene wählen in der ein RGB Licht rot ist.", + "Frontend Version": "Frontend Version", + "Frontend Version do not match backend version!": "Die Frontend Version stimmt nicht mit der backend version überein!", + "Maintenance": "Wartung", + "statusMaintenance": "Wartung", + "Schedule maintenance": "Geplante Wartung", + "Affected Monitors": "Betroffene Monitore", + "Pick Affected Monitors...": "Wähle betroffene Monitore...", + "Start of maintenance": "Beginn der Wartung", + "All Status Pages": "Alle Status Seiten", + "Select status pages...": "Wähle Status Seiten...", + "recurringIntervalMessage": "einmal pro Tag ausgeführt | Wird alle {0} Tage ausgführt", + "affectedMonitorsDescription": "Wähle alle Monitore die von der Wartung betroffen sind", + "affectedStatusPages": "Zeige diese Nachricht auf ausgewählten Status Seiten", + "atLeastOneMonitor": "Wähle mindestens einen Monitor", + "deleteMaintenanceMsg": "Möchtest du diese Wartung löschen?", + "Base URL": "Basis URL", + "goAlertInfo": "GoAlert ist eine Open-Source Applikation für Rufbereitschaftsplanung, automatische Eskalation und Benachrichtigung (z.B. SMS oder Telefonanrufe). Beauftragen Sie automatisch die richtige Person, auf die richtige Art und Weise und zum richtigen Zeitpunkt. {0}", + "goAlertIntegrationKeyInfo": "Bekommt einen generischen API Schlüssel in folgenden Format \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\". Normalerweise entspricht dies dem Wert des Token aus der URL.", + "goAlert": "GoAlert", + "backupOutdatedWarning": "Veraltet: Eine menge Neuerungen sind eingeflossen und diese Funktion wurde etwas vernachlässigt worden. Es kann kein vollständiges Backup erstellt oder eingespielt werden.", + "backupRecommend": "Bitte Backup das Volume oder den Ordner (./ data /) selbst.", + "Optional": "Optional", + "squadcast": "Squadcast", + "SendKey": "SendKey", + "SMSManager API Docs": "SMSManager API Dokumente", + "Gateway Type": "Gateway Type", + "SMSManager": "SMSManager", + "You can divide numbers with": "Du kannst Zahlen teilen mit", + "or": "oder", + "recurringInterval": "Intervall", + "Recurring": "Wiederkehrend", + "strategyManual": "Active/Inactive Manually", + "warningTimezone": "Es wird die Zeitzone des Servers genutzt", + "weekdayShortMon": "Mo", + "weekdayShortTue": "Di", + "weekdayShortWed": "Mi", + "weekdayShortThu": "Do", + "weekdayShortFri": "Fr", + "weekdayShortSat": "Sa", + "weekdayShortSun": "So", + "dayOfWeek": "Tag der Woche", + "dayOfMonth": "Tag im Monat", + "lastDay": "Letzter Tag", + "lastDay1": "Letzter Tag im Monat", + "lastDay2": "Vorletzer Tag im Monat", + "lastDay3": "3. letzter Tag im Monat", + "lastDay4": "4. letzter Tag im Monat", + "No Maintenance": "Keine Wartung", + "pauseMaintenanceMsg": "Möchtest du wirklich pausieren?", + "maintenanceStatus-under-maintenance": "Unter Wartung", + "maintenanceStatus-inactive": "Inaktiv", + "maintenanceStatus-scheduled": "Geplant", + "maintenanceStatus-ended": "Ende", + "maintenanceStatus-unknown": "Unbekannt", + "Display Timezone": "Zeitzone anzeigen", + "Server Timezone": "Server Zeitzone", + "statusPageMaintenanceEndDate": "Ende" +} diff --git a/src/lang/de-DE.json b/src/lang/de-DE.json new file mode 100644 index 000000000..e44721113 --- /dev/null +++ b/src/lang/de-DE.json @@ -0,0 +1,641 @@ +{ + "languageName": "Deutsch (Deutschland)", + "Settings": "Einstellungen", + "Dashboard": "Dashboard", + "New Update": "Update verfügbar", + "Language": "Sprache", + "Appearance": "Erscheinungsbild", + "Theme": "Erscheinungsbild", + "General": "Allgemein", + "Version": "Version", + "Check Update On GitHub": "Auf GitHub nach Updates suchen", + "List": "Liste", + "Add": "Hinzufügen", + "Add New Monitor": "Neuen Monitor hinzufügen", + "Quick Stats": "Übersicht", + "Up": "Aktiv", + "Down": "Inaktiv", + "Pending": "Ausstehend", + "Unknown": "Unbekannt", + "Pause": "Pausieren", + "pauseDashboardHome": "Pausiert", + "Name": "Name", + "Status": "Status", + "DateTime": "Datum / Uhrzeit", + "Message": "Nachricht", + "No important events": "Keine wichtigen Ereignisse", + "Resume": "Fortsetzen", + "Edit": "Bearbeiten", + "Delete": "Löschen", + "Current": "Aktuell", + "Uptime": "Verfügbarkeit", + "Cert Exp.": "Zertifikatsablauf", + "day": "Tag | Tage", + "-day": "-Tage", + "hour": "Stunde", + "-hour": "-Stunden", + "checkEverySecond": "Überprüfe alle {0} Sekunden", + "Response": "Antwortzeit", + "Ping": "Ping", + "Monitor Type": "Monitor-Typ", + "Keyword": "Suchwort", + "Friendly Name": "Anzeigename", + "URL": "URL", + "Hostname": "Hostname", + "Port": "Port", + "Heartbeat Interval": "Prüfintervall", + "Retries": "Wiederholungen", + "retriesDescription": "Maximale Anzahl von Wiederholungen, bevor der Dienst als inaktiv markiert und eine Benachrichtigung gesendet wird.", + "Advanced": "Erweitert", + "ignoreTLSError": "Ignoriere TLS-/SSL-Fehler von Webseiten", + "Upside Down Mode": "Umgekehrter Modus", + "upsideDownModeDescription": "Im umgekehrten Modus wird der Dienst als inaktiv angezeigt, wenn er erreichbar ist.", + "Max. Redirects": "Max. Weiterleitungen", + "maxRedirectDescription": "Maximale Anzahl von Weiterleitungen, denen gefolgt werden soll. Auf 0 setzen, um Weiterleitungen zu deaktivieren.", + "Accepted Status Codes": "Erlaubte HTTP-Statuscodes", + "acceptedStatusCodesDescription": "Statuscodes auswählen, die als erfolgreiche Verbindung gelten sollen.", + "Save": "Speichern", + "Notifications": "Benachrichtigungen", + "Not available, please setup.": "Nicht verfügbar, bitte einrichten.", + "Setup Notification": "Benachrichtigung einrichten", + "Light": "Hell", + "Dark": "Dunkel", + "Auto": "Auto", + "Theme - Heartbeat Bar": "Erscheinungsbild - Zeitleiste", + "Normal": "Normal", + "Bottom": "Unten", + "None": "Keine", + "Timezone": "Zeitzone", + "Search Engine Visibility": "Sichtbarkeit für Suchmaschinen", + "Allow indexing": "Indizierung zulassen", + "Discourage search engines from indexing site": "Suchmaschinen darum bitten, die Seite nicht zu indizieren", + "Change Password": "Passwort ändern", + "Current Password": "Aktuelles Passwort", + "New Password": "Neues Passwort", + "Repeat New Password": "Neues Passwort wiederholen", + "passwordNotMatchMsg": "Passwörter stimmen nicht überein.", + "Update Password": "Passwort aktualisieren", + "Disable Auth": "Authentifizierung deaktivieren", + "Enable Auth": "Authentifizierung aktivieren", + "disableauth.message1": "Bist du sicher das du die Authentifizierung deaktivieren möchtest?", + "disableauth.message2": "Dies ist für Szenarien gedacht, in denen man eine externe Authentifizierung vor Uptime Kuma geschaltet hat, wie z.B. Cloudflare Access, Authelia oder andere Authentifizierungsmechanismen.", + "Please use this option carefully!": "Bitte mit Vorsicht nutzen.", + "Logout": "Ausloggen", + "notificationDescription": "Benachrichtigungen müssen einem Monitor zugewiesen werden, damit diese funktionieren.", + "Leave": "Verlassen", + "I understand, please disable": "Ich verstehe, bitte deaktivieren", + "Confirm": "Bestätigen", + "Yes": "Ja", + "No": "Nein", + "Username": "Benutzername", + "Password": "Passwort", + "Remember me": "Angemeldet bleiben", + "Login": "Einloggen", + "No Monitors, please": "Keine Monitore, bitte", + "add one": "hinzufügen", + "Notification Type": "Benachrichtigungsdienst", + "Email": "E-Mail", + "Test": "Test", + "Certificate Info": "Zertifikatsinformation", + "keywordDescription": "Ein Suchwort in der HTML- oder JSON-Ausgabe finden. Bitte beachte: es wird zwischen Groß-/Kleinschreibung unterschieden.", + "deleteMonitorMsg": "Bist du sicher, dass du den Monitor löschen möchtest?", + "deleteNotificationMsg": "Möchtest du diese Benachrichtigung wirklich für alle Monitore löschen?", + "resolverserverDescription": "Cloudflare ist als der Standardserver festgelegt. Dieser kann jederzeit geändert werden.", + "Resolver Server": "Auflösungsserver", + "rrtypeDescription": "Wähle den RR-Typ aus, welchen du überwachen möchtest.", + "Last Result": "Letztes Ergebnis", + "pauseMonitorMsg": "Bist du sicher, dass du den Monitor pausieren möchtest?", + "clearEventsMsg": "Bist du sicher, dass du alle Ereignisse für diesen Monitor löschen möchtest?", + "clearHeartbeatsMsg": "Bist du sicher, dass du alle Statistiken für diesen Monitor löschen möchtest?", + "Clear Data": "Lösche Daten", + "Events": "Ereignisse", + "Heartbeats": "Statistiken", + "confirmClearStatisticsMsg": "Bist du dir sicher, dass du ALLE Statistiken löschen möchtest?", + "Create your admin account": "Erstelle dein Admin-Konto", + "Repeat Password": "Passwort erneut eingeben", + "Resource Record Type": "Ressourcen Record Typ", + "Export": "Export", + "Import": "Import", + "respTime": "Antw.-Zeit (ms)", + "notAvailableShort": "N/A", + "Default enabled": "Standardmäßig aktiviert", + "Apply on all existing monitors": "Auf alle existierenden Monitore anwenden", + "enableDefaultNotificationDescription": "Für jeden neuen Monitor wird diese Benachrichtigung standardmäßig aktiviert. Die Benachrichtigung kann weiterhin für jeden Monitor separat deaktiviert werden.", + "Create": "Erstellen", + "Auto Get": "Auto Get", + "backupDescription": "Es können alle Monitore und Benachrichtigungen in einer JSON-Datei gesichert werden.", + "backupDescription2": "PS: Verlaufs- und Ereignisdaten sind nicht enthalten.", + "backupDescription3": "Sensible Daten wie Benachrichtigungstoken sind in der Exportdatei enthalten, bitte bewahre sie sorgfältig auf.", + "alertNoFile": "Bitte wähle eine Datei zum Importieren aus.", + "alertWrongFileType": "Bitte wähle eine JSON-Datei aus.", + "Clear all statistics": "Lösche alle Statistiken", + "importHandleDescription": "Wähle 'Vorhandene überspringen' aus, wenn jeder Monitor oder jede Benachrichtigung mit demselben Namen übersprungen werden soll. 'Überschreiben' löscht jeden vorhandenen Monitor sowie Benachrichtigungen.", + "Skip existing": "Vorhandene überspringen", + "Overwrite": "Überschreiben", + "Options": "Optionen", + "confirmImportMsg": "Möchtest du das Backup wirklich importieren? Bitte stelle sicher, dass die richtige Import-Option ausgewählt ist.", + "Keep both": "Beide behalten", + "twoFAVerifyLabel": "Bitte trage deinen Token ein, um zu verifizieren, dass 2FA funktioniert", + "Verify Token": "Token verifizieren", + "Setup 2FA": "2FA einrichten", + "Enable 2FA": "2FA aktivieren", + "Disable 2FA": "2FA deaktivieren", + "2FA Settings": "2FA-Einstellungen", + "confirmEnableTwoFAMsg": "Bist du sicher, dass du 2FA aktivieren möchtest?", + "confirmDisableTwoFAMsg": "Bist du sicher, dass du 2FA deaktivieren möchtest?", + "tokenValidSettingsMsg": "Token gültig! Du kannst jetzt die 2FA-Einstellungen speichern.", + "Two Factor Authentication": "Zwei-Faktor-Authentifizierung", + "Active": "Aktiv", + "Inactive": "Inaktiv", + "Token": "Token", + "Show URI": "URI anzeigen", + "Tags": "Tags", + "Add New below or Select...": "Einen bestehenden Tag auswählen oder neuen hinzufügen...", + "Tag with this name already exist.": "Ein Tag mit diesem Namen existiert bereits.", + "Tag with this value already exist.": "Ein Tag mit diesem Wert existiert bereits.", + "color": "Farbe", + "value (optional)": "Wert (optional)", + "Gray": "Grau", + "Red": "Rot", + "Orange": "Orange", + "Green": "Grün", + "Blue": "Blau", + "Indigo": "Indigo", + "Purple": "Lila", + "Pink": "Pink", + "Search...": "Suchen...", + "Heartbeat Retry Interval": "Überprüfungsintervall", + "Resend Notification if Down X times consequently": "Benachrichtigung erneut senden, wenn Inaktiv X mal hintereinander", + "retryCheckEverySecond": "Alle {0} Sekunden neu versuchen", + "resendEveryXTimes": "Erneut versenden alle {0} mal", + "resendDisabled": "Erneut versenden deaktiviert", + "Import Backup": "Backup importieren", + "Export Backup": "Backup exportieren", + "Avg. Ping": "Durchschn. Ping", + "Avg. Response": "Durchschn. Antwort", + "Entry Page": "Einstiegsseite", + "statusPageNothing": "Noch ist hier nichts. Bitte füge eine Gruppe oder einen Monitor hinzu.", + "No Services": "Keine Dienste", + "All Systems Operational": "Alle Systeme betriebsbereit", + "Partially Degraded Service": "Teilweise beeinträchtigter Dienst", + "Degraded Service": "Eingeschränkter Dienst", + "Add Group": "Gruppe hinzufügen", + "Add a monitor": "Monitor hinzufügen", + "Edit Status Page": "Statusseite bearbeiten", + "Go to Dashboard": "Gehe zum Dashboard", + "Status Page": "Status-Seite", + "Status Pages": "Status-Seiten", + "telegram": "Telegram", + "webhook": "Webhook", + "smtp": "E-Mail (SMTP)", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Unterstützung für 50+ Benachrichtigungsdienste)", + "GoogleChat": "Google Chat (nur Google Workspace)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "Primary Base URL": "Primäre Basis-URL", + "Push URL": "Push URL", + "needPushEvery": "Du solltest diese URL alle {0} Sekunden aufrufen", + "pushOptionalParams": "Optionale Parameter: {0}", + "defaultNotificationName": "Mein {notification} Alarm ({number})", + "here": "hier", + "Required": "Erforderlich", + "Bot Token": "Bot Token", + "wayToGetTelegramToken": "Hier kannst du einen Token erhalten {0}.", + "Chat ID": "Chat ID", + "supportTelegramChatID": "Unterstützt Direkt Chat / Gruppe / Kanal Chat-ID's", + "wayToGetTelegramChatID": "Du kannst die Chat-ID erhalten, indem du eine Nachricht an den Bot sendest und zu dieser URL gehst, um die chat_id: zu sehen.", + "YOUR BOT TOKEN HERE": "HIER DEIN BOT TOKEN", + "chatIDNotFound": "Chat-ID wurde nicht gefunden: bitte sende zuerst eine Nachricht an diesen Bot", + "Post URL": "Post URL", + "Content Type": "Content Type", + "webhookJsonDesc": "{0} ist gut für alle modernen HTTP-Server, wie z.B. Express.js, geeignet", + "webhookFormDataDesc": "{multipart} ist gut für PHP. Das JSON muss mit {decodeFunction} verarbeitet werden", + "secureOptionNone": "Keine / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "TLS-Fehler ignorieren", + "From Email": "Absender E-Mail", + "emailCustomSubject": "Benutzerdefinierter Betreff", + "To Email": "Empfänger E-Mail", + "smtpCC": "CC", + "smtpBCC": "BCC", + "Discord Webhook URL": "Discord Webhook URL", + "wayToGetDiscordURL": "Du kannst diese erhalten, indem du zu den Servereinstellungen gehst -> Integrationen -> Neuer Webhook", + "Bot Display Name": "Bot-Anzeigename", + "Prefix Custom Message": "Benutzerdefinierter Nachrichten Präfix", + "Hello @everyone is...": "Hallo {'@'}everyone ist...", + "Webhook URL": "Webhook URL", + "wayToGetTeamsURL": "Wie eine Webhook-URL erstellt werden kann, erfährst du {0}.", + "Number": "Nummer", + "Recipients": "Empfänger", + "needSignalAPI": "Es wird ein Signal Client mit REST-API benötigt.", + "wayToCheckSignalURL": "Du kannst diese URL aufrufen, um zu sehen, wie du eine einrichtest:", + "signalImportant": "WICHTIG: Gruppen und Nummern können in Empfängern nicht gemischt werden!", + "Application Token": "Anwendungs Token", + "Server URL": "Server URL", + "Priority": "Priorität", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Kanalname", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "Weitere Informationen zu Webhooks auf: {0}", + "aboutChannelName": "Gebe den Kanalnamen ein in {0} Feld Kanalname, falls du den Webhook-Kanal umgehen möchtest. Ex: #other-channel", + "aboutKumaURL": "Wenn das Feld für die Uptime Kuma URL leer gelassen wird, wird standardmäßig die GitHub Projekt Seite verwendet.", + "emojiCheatSheet": "Emoji Cheat Sheet: {0}", + "User Key": "Benutzerschlüssel", + "Device": "Gerät", + "Message Title": "Nachrichtentitel", + "Notification Sound": "Benachrichtigungston", + "More info on:": "Mehr Infos auf: {0}", + "pushoverDesc1": "Notfallpriorität (2) hat standardmäßig 30 Sekunden Auszeit zwischen den Versuchen und läuft nach 1 Stunde ab.", + "pushoverDesc2": "Fülle das Geräte Feld aus, wenn du Benachrichtigungen an verschiedene Geräte senden möchtest.", + "SMS Type": "SMS Typ", + "octopushTypePremium": "Premium (Schnell - zur Benachrichtigung empfohlen)", + "octopushTypeLowCost": "Kostengünstig (Langsam - manchmal vom Betreiber gesperrt)", + "checkPrice": "Prüfe {0} Preise:", + "octopushLegacyHint": "Verwendest du die Legacy-Version von Octopush (2011-2020) oder die neue Version?", + "Check octopush prices": "Vergleiche die Oktopush Preise {0}.", + "octopushPhoneNumber": "Telefonnummer (Internationales Format, z.B : +49612345678) ", + "octopushSMSSender": "Name des SMS-Absenders : 3-11 alphanumerische Zeichen und Leerzeichen (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Geräte ID", + "Apprise URL": "Apprise URL", + "Example:": "Beispiel: {0}", + "Read more:": "Weiterlesen: {0}", + "Status:": "Status: {0}", + "Read more": "Weiterlesen", + "appriseInstalled": "Apprise ist installiert.", + "appriseNotInstalled": "Apprise ist nicht installiert. {0}", + "Access Token": "Access Token", + "Channel access token": "Channel access token", + "Line Developers Console": "Line Developers Console", + "lineDevConsoleTo": "Line Developers Console - {0}", + "Basic Settings": "Basic Settings", + "User ID": "User ID", + "Messaging API": "Messaging API", + "wayToGetLineChannelToken": "Rufe zuerst {0} auf, erstelle dann einen Provider und Channel (Messaging API). Als nächstes kannst du den Channel access token und die User ID aus den oben genannten Menüpunkten abrufen.", + "Icon URL": "Icon URL", + "aboutIconURL": "Du kannst einen Link zu einem Bild in 'Icon URL' übergeben um das Standardprofilbild zu überschreiben. Wird nicht verwendet, wenn ein Icon Emoji gesetzt ist.", + "aboutMattermostChannelName": "Du kannst den Standardkanal, auf dem der Webhook gesendet wird überschreiben, indem der Kanalnamen in das Feld 'Channel Name' eingeben wird. Dies muss in den Mattermost Webhook-Einstellungen aktiviert werden. Ex: #other-channel", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - billig, aber langsam und oft überladen. Auf polnische Empfänger beschränkt.", + "promosmsTypeFlash": "SMS FLASH - Die Nachricht wird automatisch auf dem Empfängergerät angezeigt. Auf polnische Empfänger beschränkt.", + "promosmsTypeFull": "SMS FULL - Premium Stufe von SMS, es kann der Absendernamen verwendet werden (Der Name musst zuerst registriert werden). Zuverlässig für Warnungen.", + "promosmsTypeSpeed": "SMS SPEED - Höchste Priorität im System. Sehr schnell und zuverlässig, aber teuer (Ungefähr das doppelte von SMS FULL).", + "promosmsPhoneNumber": "Telefonnummer (für polnische Empfänger können die Vorwahlen übersprungen werden)", + "promosmsSMSSender": "Name des SMS-Absenders : vorregistrierter Name oder einer der Standardwerte: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu Webhook URL", + "matrixHomeserverURL": "Heimserver URL (mit http(s):// und optionalen Ports)", + "Internal Room Id": "Interne Raum-ID", + "matrixDesc1": "Die interne Raum-ID findest du im erweiterten Bereich der Raumeinstellungen im Matrix-Client. Es sollte aussehen wie z.B. !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Es wird dringend empfohlen einen neuen Benutzer anzulegen und nicht den Zugriffstoken deines eigenen Matrix-Benutzers zu verwenden. Anderenfalls ermöglicht es vollen Zugriff auf dein Konto und alle Räume, denen du beigetreten bist. Erstelle stattdessen einen neuen Benutzer und lade ihn nur in den Raum ein, in dem du die Benachrichtigung erhalten möchtest. Du kannst den Zugriffstoken erhalten, indem du Folgendes ausführst {0}", + "Method": "Method", + "Body": "Body", + "Headers": "Headers", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "Der Header ist kein gültiges JSON: ", + "BodyInvalidFormat": "Der Body ist kein gültiges JSON: ", + "Monitor History": "Monitor Verlauf", + "clearDataOlderThan": "Bewahre die Monitor-Verlaufsdaten für {0} Tage auf.", + "PasswordsDoNotMatch": "Passwörter stimmen nicht überein.", + "records": "Einträge", + "One record": "Ein Eintrag", + "steamApiKeyDescription": "Um einen Steam Game Server zu überwachen, wird ein Steam Web-API-Schlüssel benötigt. Dieser kann hier registriert werden: ", + "Current User": "Aktueller Benutzer", + "recent": "Letzte", + "Done": "Fertig", + "Info": "Info", + "Security": "Sicherheit", + "Steam API Key": "Steam API Key", + "Shrink Database": "Datenbank verkleinern", + "Pick a RR-Type...": "Wähle ein RR-Typ aus...", + "Pick Accepted Status Codes...": "Wähle akzeptierte Statuscodes aus...", + "Default": "Standard", + "HTTP Options": "HTTP Optionen", + "Create Incident": "Vorfall erstellen", + "Title": "Titel", + "Content": "Inhalt", + "Style": "Stil", + "info": "info", + "warning": "warnung", + "danger": "gefahr", + "primary": "primär", + "light": "hell", + "dark": "dunkel", + "Post": "Eintrag", + "Please input title and content": "Bitte Titel und Inhalt eingeben", + "Created": "Erstellt", + "Last Updated": "Zuletzt aktualisiert", + "Unpin": "Loslösen", + "Switch to Light Theme": "Zu hellem Thema wechseln", + "Switch to Dark Theme": "Zum dunklen Thema wechseln", + "Show Tags": "Tags anzeigen", + "Hide Tags": "Tags ausblenden", + "Description": "Beschreibung", + "No monitors available.": "Keine Monitore verfügbar.", + "Add one": "Hinzufügen", + "No Monitors": "Keine Monitore", + "Untitled Group": "Gruppe ohne Titel", + "Services": "Dienste", + "Discard": "Verwerfen", + "Cancel": "Abbrechen", + "Powered by": "Powered by", + "shrinkDatabaseDescription": "Löse VACUUM für die SQLite Datenbank aus. Wenn die Datenbank nach 1.10.0 erstellt wurde, ist AUTO_VACUUM bereits aktiviert und diese Aktion ist nicht erforderlich.", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API Benutzername (inkl. webapi_ prefix)", + "serwersmsAPIPassword": "API Passwort", + "serwersmsPhoneNumber": "Telefonnummer", + "serwersmsSenderName": "Name des SMS-Absenders (über Kundenportal registriert)", + "stackfield": "Stackfield", + "clicksendsms": "ClickSend SMS", + "apiCredentials": "API Zugangsdaten", + "smtpDkimSettings": "DKIM Einstellungen", + "smtpDkimDesc": "Details zur Konfiguration sind in der Nodemailer DKIM {0} zu finden.", + "documentation": "Dokumentation", + "smtpDkimDomain": "Domain Name", + "smtpDkimKeySelector": "Schlüssel Auswahl", + "smtpDkimPrivateKey": "Privater Schlüssel", + "smtpDkimHashAlgo": "Hash-Algorithmus (Optional)", + "smtpDkimheaderFieldNames": "Zu validierende Header-Schlüssel (optional)", + "smtpDkimskipFields": "Zu ignorierende Header Schlüssel (optional)", + "PushByTechulus": "Push by Techulus", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API Endpunkt", + "alertaEnvironment": "Umgebung", + "alertaApiKey": "API Schlüssel", + "alertaAlertState": "Alarmstatus", + "alertaRecoverState": "Wiederherstellungsstatus", + "deleteStatusPageMsg": "Bist du sicher, dass du diese Status-Seite löschen willst?", + "Proxies": "Proxies", + "default": "Standard", + "enabled": "Aktiviert", + "setAsDefault": "Als Standard setzen", + "deleteProxyMsg": "Bist du sicher, dass du diesen Proxy für alle Monitore löschen willst?", + "proxyDescription": "Proxies müssen einem Monitor zugewiesen werden, um zu funktionieren.", + "enableProxyDescription": "Dieser Proxy wird keinen Effekt auf Monitor-Anfragen haben, bis er aktiviert ist. Du kannst ihn temporär von allen Monitoren nach Aktivierungsstatus deaktivieren.", + "setAsDefaultProxyDescription": "Dieser Proxy wird standardmäßig für alle neuen Monitore aktiviert sein. Du kannst den Proxy immer noch für jeden Monitor einzeln deaktivieren.", + "Certificate Chain": "Zertifikatskette", + "Valid": "Gültig", + "Invalid": "Ungültig", + "AccessKeyId": "AccessKey ID", + "SecretAccessKey": "AccessKey Secret", + "PhoneNumbers": "Telefonnummern", + "TemplateCode": "Vorlagencode", + "SignName": "Signaturname", + "Sms template must contain parameters: ": "SMS Vorlage muss folgende Parameter enthalten: ", + "Bark Endpoint": "Bark Endpunkt", + "WebHookUrl": "Webhook URL", + "SecretKey": "Geheimer Schlüssel", + "For safety, must use secret key": "Zur Sicherheit muss ein geheimer Schlüssel verwendet werden", + "Device Token": "Gerätetoken", + "Platform": "Platform", + "iOS": "iOS", + "Android": "Android", + "Huawei": "Huawei", + "High": "Hoch", + "Retry": "Wiederholungen", + "Topic": "Thema", + "WeCom Bot Key": "WeCom Bot Schlüssel", + "Setup Proxy": "Proxy einrichten", + "Proxy Protocol": "Proxy Protokoll", + "Proxy Server": "Proxy-Server", + "Proxy server has authentication": "Proxy-Server hat Authentifizierung", + "User": "Benutzer", + "Installed": "Installiert", + "Not installed": "Nicht installiert", + "Running": "Läuft", + "Not running": "Gestoppt", + "Remove Token": "Token entfernen", + "Start": "Start", + "Stop": "Stop", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "Neue Status-Seite hinzufügen", + "Slug": "Slug", + "Accept characters:": "Akzeptierte Zeichen:", + "startOrEndWithOnly": "Nur mit {0} anfangen und enden", + "No consecutive dashes": "Keine aufeinanderfolgenden Bindestriche", + "Next": "Weiter", + "The slug is already taken. Please choose another slug.": "Der Slug ist bereits in Verwendung. Bitte wähle einen anderen.", + "No Proxy": "Kein Proxy", + "Authentication": "Authentifizierung", + "HTTP Basic Auth": "HTTP Basisauthentifizierung", + "New Status Page": "Neue Status-Seite", + "Page Not Found": "Seite nicht gefunden", + "Reverse Proxy": "Reverse Proxy", + "Backup": "Sicherung", + "About": "Über", + "wayToGetCloudflaredURL": "(Lade cloudflared von {0} herunter)", + "cloudflareWebsite": "Cloudflare Website", + "Message:": "Nachricht:", + "Don't know how to get the token? Please read the guide:": "Du weißt nicht, wie man den Token bekommt? Lies die Anleitung dazu:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Die aktuelle Verbindung kann unterbrochen werden, wenn du aktuell über Cloudflare Tunnel verbunden bist. Bist du sicher, dass du es stoppen willst? Gib zur Bestätigung dein aktuelles Passwort ein.", + "Other Software": "Andere Software", + "For example: nginx, Apache and Traefik.": "Zum Beispiel: nginx, Apache und Traefik.", + "Please read": "Bitte lesen", + "Subject:": "Betreff:", + "Valid To:": "Gültig bis:", + "Days Remaining:": "Tage verbleibend:", + "Issuer:": "Aussteller:", + "Fingerprint:": "Fingerabdruck:", + "No status pages": "Keine Status-Seiten", + "Domain Name Expiry Notification": "Benachrichtigung bei Ablauf des Domainnamens", + "Customize": "Anpassen", + "Custom Footer": "Eigener Footer", + "Custom CSS": "Eigenes CSS", + "Footer Text": "Fußzeile", + "Show Powered By": "Zeige 'Powered By'", + "Date Created": "Erstellt am", + "Domain Names": "Domainnamen", + "signedInDisp": "Angemeldet als {0}", + "signedInDispDisabled": "Authentifizierung deaktiviert.", + "dnsPortDescription": "DNS server port. Standard ist 53. Der Port kann jederzeit geändert werden.", + "topic": "Thema", + "topicExplanation": "MQTT Thema für den monitor", + "successMessage": "Erfolgsnachricht", + "successMessageExplanation": "MQTT Nachricht, die als Erfolg angesehen wird", + "error": "Fehler", + "critical": "kritisch", + "wayToGetPagerDutyKey": "Dieser kann unter Service -> Service Directory -> (Select a service) -> Integrations -> Add integration gefunden werden. Hier muss nach \"Events API V2\" gesucht werden. Mehr informationen {0}", + "Integration Key": "Schlüssel der Integration", + "Integration URL": "URL der Integration", + "Auto resolve or acknowledged": "Automatisch lösen oder bestätigen", + "do nothing": "nichts tun", + "auto acknowledged": "automatisch bestätigen", + "auto resolve": "automatisch lösen", + "Bark Group": "Bark Gruppe", + "Bark Sound": "Bark Klang", + "HTTP Headers": "HTTP Kopfzeilen", + "Trust Proxy": "Vertrauenswürdiger Proxy", + "Proxy": "Proxy", + "HomeAssistant": "Home Assistant", + "onebotHttpAddress": "OneBot HTTP Adresse", + "onebotMessageType": "OneBot Nachrichtentyp", + "onebotGroupMessage": "Gruppe", + "onebotPrivateMessage": "Privat", + "onebotUserOrGroupId": "Gruppe/Nutzer ID", + "onebotSafetyTips": "Zur Sicherheit ein access token setzen", + "PushDeer Key": "PushDeer Schlüssel", + "RadiusSecret": "Radius Geheimnis", + "RadiusSecretDescription": "Geteiltes Geheimnis zwischen Client und Server", + "RadiusCalledStationId": "ID der angesprochenen Station", + "RadiusCalledStationIdDescription": "Identifikation des angesprochenen Geräts", + "RadiusCallingStationId": "ID der ansprechenden Station", + "RadiusCallingStationIdDescription": "Identifikation des ansprechenden Geräts", + "Certificate Expiry Notification": "Benachrichtigung ablaufendes Zertifikat", + "API Username": "API Nutzername", + "API Key": "API Schlüssel", + "Recipient Number": "Empfängernummer", + "From Name/Number": "Von Name/Nummer", + "Leave blank to use a shared sender number.": "Leer lassen um eine geteilte Absendernummer zu nutzen.", + "Octopush API Version": "Octopush API Version", + "Legacy Octopush-DM": "Legacy Octopush-DM", + "endpoint": "Endpunkt", + "octopushAPIKey": "\"API Schlüssel\" der HTTP API Zugangsdaten im control panel", + "octopushLogin": "\"Login\" der HTTP API Zugangsdaten im control panel", + "promosmsLogin": "API Login Name", + "promosmsPassword": "API Password", + "pushoversounds pushover": "Pushover (Standard)", + "pushoversounds bike": "Fahrrad", + "pushoversounds bugle": "Signalhorn", + "pushoversounds cashregister": "Kasse", + "pushoversounds classical": "Klassisch", + "pushoversounds cosmic": "Kosmisch", + "pushoversounds falling": "Abfallend", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Eingang", + "pushoversounds intermission": "Pause", + "pushoversounds magic": "Magisch", + "pushoversounds mechanical": "Mechanisch", + "pushoversounds pianobar": "Piano Bar", + "pushoversounds siren": "Sirene", + "pushoversounds spacealarm": "Space Alarm", + "pushoversounds tugboat": "Schlepper Horn", + "pushoversounds alien": "Außerirdisch (lang)", + "pushoversounds climb": "Ansteigende (lang)", + "pushoversounds persistent": "Hartnäckig (lang)", + "pushoversounds echo": "Pushover Echo (lang)", + "pushoversounds updown": "Auf und Ab (lang)", + "pushoversounds vibrate": "Nur vibrieren", + "pushoversounds none": "Nichts (Stille)", + "pushyAPIKey": "Geheimer API Schlüssel", + "pushyToken": "Gerätetoken", + "Show update if available": "Verfügbare Updates anzeigen", + "Also check beta release": "Auch nach Beta Versionen schauen", + "Using a Reverse Proxy?": "Wird ein Reverse Proxy genutzt?", + "Check how to config it for WebSocket": "Prüfen, wie er für die Nutzung mit WebSocket konfiguriert wird", + "Steam Game Server": "Steam Game Server", + "Most likely causes:": "Wahrscheinliche Ursachen:", + "The resource is no longer available.": "Die Quelle ist nicht mehr verfügbar.", + "There might be a typing error in the address.": "Es gibt einen Tippfehler in der Adresse.", + "What you can try:": "Was du versuchen kannst:", + "Retype the address.": "Schreibe die Adresse erneut.", + "Go back to the previous page.": "Gehe zur vorigen Seite.", + "Coming Soon": "Kommt bald", + "wayToGetClickSendSMSToken": "Du kannst einen API Nutzernamen und Schlüssel unter {0} erhalten.", + "Connection String": "Verbindungstext", + "Query": "Abfrage", + "settingsCertificateExpiry": "TLS Zertifikatsablauf", + "certificationExpiryDescription": "HTTPS Monitore senden eine Benachrichtigung, wenn das Zertifikat abläuft in:", + "Setup Docker Host": "Docker Host einrichten", + "Connection Type": "Verbindungstyp", + "Docker Daemon": "Docker Daemon", + "deleteDockerHostMsg": "Bist du sicher diesen docker host für alle Monitore zu löschen?", + "socket": "Socket", + "tcp": "TCP / HTTP", + "Docker Container": "Docker Container", + "Container Name / ID": "Container Name / ID", + "Docker Host": "Docker Host", + "Docker Hosts": "Docker Hosts", + "ntfy Topic": "ntfy Thema", + "Domain": "Domain", + "Workstation": "Workstation", + "disableCloudflaredNoAuthMsg": "Du bist im nicht-authentifizieren Modus, ein Passwort wird nicht benötigt.", + "trustProxyDescription": "Vertraue 'X-Forwarded-*' headern. Wenn man die richtige client IP haben möchte und Uptime Kuma hinter einem Proxy wie Nginx or Apache läuft, wollte dies aktiviert werden.", + "wayToGetLineNotifyToken": "Du kannst hier ein Token erhalten: {0}", + "Examples": "Beispiele", + "Home Assistant URL": "Home Assistant URL", + "Long-Lived Access Token": "Lange gültiges Access Token", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Lange gültige Access Token können durch klicken auf den Profilnamen (unten links) und dann einen Klick auf Create Token am Ende erstellt werden. ", + "Notification Service": "Benachrichtigungsdienst", + "default: notify all devices": "standard: Alle Geräte benachrichtigen", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Eine Liste der Benachrichtigungsdienste kann im Home Assistant unter \"Developer Tools > Services\" gefunden werden, wnen man nach \"notification\" sucht um den Geräte-/Telefonnamen zu finden.", + "Automations can optionally be triggered in Home Assistant:": "Automatisierungen können optional im Home Assistant ausgelöst werden:", + "Trigger type:": "Auslöser:", + "Event type:": "Ereignistyp:", + "Event data:": "Ereignis daten:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Dann eine Aktion wählen, zum Beispiel eine Scene wählen in der ein RGB Licht rot ist.", + "Frontend Version": "Frontend Version", + "Frontend Version do not match backend version!": "Die Frontend Version stimmt nicht mit der backend version überein!", + "Maintenance": "Wartung", + "statusMaintenance": "Wartung", + "Schedule maintenance": "Geplante Wartung", + "Affected Monitors": "Betroffene Monitore", + "Pick Affected Monitors...": "Wähle betroffene Monitore...", + "Start of maintenance": "Beginn der Wartung", + "All Status Pages": "Alle Status Seiten", + "Select status pages...": "Statusseiten auswählen...", + "recurringIntervalMessage": "Einmal pro Tag ausgeführt | Wird alle {0} Tage ausgführt", + "affectedMonitorsDescription": "Wähle Monitore aus, die von der aktuellen Wartung betroffen sind", + "affectedStatusPages": "Diese Wartungsmeldung auf ausgewählten Statusseiten anzeigen", + "atLeastOneMonitor": "Wähle mindestens einen Monitor", + "deleteMaintenanceMsg": "Möchtest du diese Wartung löschen?", + "Base URL": "Basis URL", + "goAlertInfo": "GoAlert ist eine Open-Source Applikation für Rufbereitschaftsplanung, automatische Eskalation und Benachrichtigung (z.B. SMS oder Telefonanrufe). Beauftragen Sie automatisch die richtige Person, auf die richtige Art und Weise und zum richtigen Zeitpunkt. {0}", + "goAlertIntegrationKeyInfo": "Bekommt einen generischen API Schlüssel in folgenden Format \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\". Normalerweise entspricht dies dem Wert des Token aus der URL.", + "goAlert": "GoAlert", + "backupOutdatedWarning": "Veraltet: Da viele Funktionen hinzugefügt wurden und diese Sicherungsfunktion nicht mehr gepflegt wird, kann sie keine vollständige Sicherung erstellen oder wiederherstellen.", + "backupRecommend": "Bitte sichere stattdessen das Volume oder den Datenordner (./data/) direkt.", + "Optional": "Optional", + "squadcast": "Squadcast", + "SendKey": "SendKey", + "SMSManager API Docs": "SMSManager API Dokumente", + "Gateway Type": "Gateway Type", + "SMSManager": "SMSManager", + "You can divide numbers with": "Du kannst Zahlen teilen mit", + "or": "oder", + "recurringInterval": "Intervall", + "Recurring": "Wiederkehrend", + "Single Maintenance Window": "Einzigartiges Wartungsfenster", + "Maintenance Time Window of a Day": "Zeitfenster für die Wartung", + "Effective Date Range": "Bereich der Wirksamkeitsdaten", + "strategyManual": "Aktiv/Inaktiv Manuell", + "warningTimezone": "Es wird die Zeitzone des Servers verwendet", + "weekdayShortMon": "Mo", + "weekdayShortTue": "Di", + "weekdayShortWed": "Mi", + "weekdayShortThu": "Do", + "weekdayShortFri": "Fr", + "weekdayShortSat": "Sa", + "weekdayShortSun": "So", + "dayOfWeek": "Tag der Woche", + "dayOfMonth": "Tag im Monat", + "lastDay": "Letzter Tag", + "lastDay1": "Letzter Tag im Monat", + "lastDay2": "Vorletzer Tag im Monat", + "lastDay3": "3. letzter Tag im Monat", + "lastDay4": "4. letzter Tag im Monat", + "No Maintenance": "Keine Wartung", + "Schedule Maintenance": "Wartung planen", + "pauseMaintenanceMsg": "Möchtest du wirklich pausieren?", + "maintenanceStatus-under-maintenance": "Unter Wartung", + "maintenanceStatus-inactive": "Inaktiv", + "maintenanceStatus-scheduled": "Geplant", + "maintenanceStatus-ended": "Ende", + "maintenanceStatus-unknown": "Unbekannt", + "Display Timezone": "Zeitzone anzeigen", + "Server Timezone": "Server Zeitzone", + "Date and Time": "Datum und Zeit", + "DateTime Range": "Datums- und Zeitbereich", + "Strategy": "Strategie", + "statusPageMaintenanceEndDate": "Ende" +} diff --git a/src/lang/el-GR.json b/src/lang/el-GR.json new file mode 100644 index 000000000..c77d61588 --- /dev/null +++ b/src/lang/el-GR.json @@ -0,0 +1,587 @@ +{ + "languageName": "Ελληνικά", + "checkEverySecond": "Έλεγχος κάθε {0} δευτερόλεπτα", + "retryCheckEverySecond": "Επανάληψη κάθε {0} δευτερόλεπτα", + "resendEveryXTimes": "Επανάληψη αποστολής ειδοποίησης κάθε {0} φορές", + "resendDisabled": "Η επανάληψη αποστολής ειδοποίησης είναι απενεργοποιημένη", + "retriesDescription": "Μέγιστες επαναλήψεις προτού η υπηρεσία επισημανθεί ως κατω και σταλεί μια ειδοποίηση", + "ignoreTLSError": "Παράβλεψη σφάλματος TLS/SSL για ιστότοπους HTTPS", + "upsideDownModeDescription": "Αναποδογυρίστε την κατάσταση. Εάν η υπηρεσία είναι προσβάσιμη, είναι ΚΑΤΩ.", + "maxRedirectDescription": "Μέγιστος αριθμός redirect που θα ακολουθήσουν. Ρυθμίστε το 0 για να απενεργοποιήσετε τα redirect.", + "acceptedStatusCodesDescription": "Επιλέξτε κωδικούς κατάστασης που θεωρούνται επιτυχή.", + "passwordNotMatchMsg": "Ο κωδικός δεν ταιριάζει.", + "notificationDescription": "Οι ειδοποιήσεις πρέπει να εκχωρηθούν σε μια παρακολούθηση για να λειτουργήσουν.", + "keywordDescription": "Αναζήτηση λέξης-κλειδιού σε απλή απόκριση HTML ή JSON. Η αναζήτηση είναι διάκριση πεζών-κεφαλαίων.", + "pauseDashboardHome": "Παύση", + "deleteMonitorMsg": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την παρακολούθηση;", + "deleteNotificationMsg": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την ειδοποίηση για όλες τις παρακολούθησης?", + "dnsPortDescription": "Θύρα διακομιστή DNS. Προεπιλογή σε 53. Μπορείτε να αλλάξετε τη θύρα ανά πάσα στιγμή.", + "resolverserverDescription": "Το Cloudflare είναι ο προεπιλεγμένος διακομιστής. Μπορείτε να αλλάξετε τον διακομιστή επίλυσης ανά πάσα στιγμήhe default server. You can change the resolver server anytime.", + "rrtypeDescription": "Επιλέξτε τον τύπο RR που θέλετε να παρακολουθήσετε", + "pauseMonitorMsg": "Είστε βέβαιοι ότι θέλετε να κάνετε παύση;", + "enableDefaultNotificationDescription": "Αυτή η ειδοποίηση θα είναι ενεργοποιημένη από προεπιλογή για νέες παρακολούθησης. Μπορείτε ακόμα να απενεργοποιήσετε την ειδοποίηση ξεχωριστά για κάθε παρακολούθηση.", + "clearEventsMsg": "Είστε βέβαιοι ότι θέλετε να διαγράψετε όλα τα συμβάντα για αυτήν την παρακολούθηση;", + "clearHeartbeatsMsg": "Είστε βέβαιοι ότι θέλετε να διαγράψετε όλους τους καρδιακούς παλμούς για αυτήν την παρακολούθηση;", + "confirmClearStatisticsMsg": "Είστε βέβαιοι ότι θέλετε να διαγράψετε ΟΛΑ τα στατιστικά στοιχεία;?", + "importHandleDescription": "Επιλέξτε «Παράλειψη υπάρχοντος» εάν θέλετε να παραλείψετε κάθε παρακολούθηση ή ειδοποίηση με το ίδιο όνομα. Το 'Overwrite' θα διαγράψει κάθε υπάρχουσα παρακολούθηση και ειδοποίηση.", + "confirmImportMsg": "Είστε βέβαιοι ότι θέλετε να εισαγάγετε το αντίγραφο ασφαλείας; Επαληθεύστε ότι έχετε επιλέξει τη σωστή επιλογή.", + "twoFAVerifyLabel": "Εισαγάγετε το 2FA κωδικό για να επαληθεύσετε: ", + "tokenValidSettingsMsg": "Ο κωδικός 2FA είναι έγκυρο! Τώρα μπορείτε να αποθηκεύσετε τις ρυθμίσεις 2FA", + "confirmEnableTwoFAMsg": "Είστε βέβαιοι ότι θέλετε να ενεργοποιήσετε το 2FA;", + "confirmDisableTwoFAMsg": "Είστε βέβαιοι ότι θέλετε να απενεργοποιήσετε το 2FA;", + "Settings": "Ρυθμίσεις", + "Dashboard": "Πίνακας", + "New Update": "Νέα αναβάθμιση", + "Language": "Γλώσσα", + "Appearance": "Εμφάνιση", + "Theme": "Θέμα", + "General": "Γενικά", + "Primary Base URL": "Κύρια βασική διεύθυνση URL", + "Version": "Εκδοχή", + "Check Update On GitHub": "Ελέγξτε για Ενημέρωση στο GitHub", + "List": "Λίστα", + "Add": "Προσθήκη", + "Add New Monitor": "Προσθήκη νέας παρακολούθησης", + "Quick Stats": "Γρήγορα στατιστικά", + "Up": "Πάνω", + "Down": "Κάτω", + "Pending": "Εκκρεμεί", + "Unknown": "Άγνωστο", + "Pause": "Παύση", + "Name": "Ονομα", + "Status": "Κατάσταση", + "DateTime": "ΗμερομηνίαΏρα", + "Message": "Μήνυμα", + "No important events": "Δεν υπάρχουν σημαντικά γεγονότα", + "Resume": "Συνέχιση", + "Edit": "Επεξεργασία", + "Delete": "Διαγράφη", + "Current": "Current", + "Uptime": "Χρόνος λειτουργίας", + "Cert Exp.": "Cert Exp.", + "day": "ημέρα | ημέρες", + "-day": "-ημέρα", + "hour": "ώρα", + "-hour": "-ώρα", + "Response": "Απάντηση", + "Ping": "Ping", + "Monitor Type": "Τύπος παρακολούθησης", + "Keyword": "Λέξη-κλειδί", + "Friendly Name": "Φιλικό όνομα", + "URL": "URL", + "Hostname": "Hostname", + "Port": "Port", + "Heartbeat Interval": "Διάστημα καρδιακών παλμών", + "Retries": "Επαναλήψεις", + "Heartbeat Retry Interval": "Διάστημα επανάληψης παλμών καρδιάς", + "Resend Notification if Down X times consequently": "Αποστολή νέας ειδοποίησης εάν κατω X φορές κατά συνέχεια", + "Advanced": "Προχωρημένα", + "Upside Down Mode": "Ανάποδη λειτουργία", + "Max. Redirects": "Μέγιστη. Ανακατευθύνσεις", + "Accepted Status Codes": "Αποδεκτοί Κωδικοί Κατάστασης", + "Push URL": "Push URL", + "needPushEvery": "Θα πρέπει να καλείτε αυτήν τη διεύθυνση URL κάθε {0} δευτερόλεπτα.", + "pushOptionalParams": "Προαιρετικές παράμετροι: {0}", + "Save": "Αποθηκεύση", + "Notifications": "Ειδοποιήσεις", + "Not available, please setup.": "Μη διαθέσιμο, παρακαλώ ρυθμίστε.", + "Setup Notification": "Δημιουργία ειδοποίησης", + "Light": "Φωτεινό", + "Dark": "Σκοτεινό", + "Auto": "Αυτόματο", + "Theme - Heartbeat Bar": "Θέμα - Μπάρα καρδιακών παλμών", + "Normal": "Κανονικό", + "Bottom": "Κάτω μέρος", + "None": "Τίποτα", + "Timezone": "Ζώνη ώρας", + "Search Engine Visibility": "Ορατότητα μηχανών αναζήτησης", + "Allow indexing": "Να επιτρέπεται η ευρετηρίαση", + "Discourage search engines from indexing site": "Αποθαρρύνετε τις μηχανές αναζήτησης από την ευρετηρίαση ιστότοπου", + "Change Password": "Αλλαγή κωδικού πρόσβασης", + "Current Password": "Τρέχων κωδικός πρόσβασης", + "New Password": "Νέος κωδικός πρόσβασης", + "Repeat New Password": "Επαναλάβετε τον νέο κωδικό πρόσβασης", + "Update Password": "Ενημέρωση κωδικού πρόσβασης", + "Disable Auth": "Απενεργοποίηση ελέγχου ταυτότητας", + "Enable Auth": "Ενεργοποίηση ελέγχου ταυτότητας", + "disableauth.message1": "Είστε βέβαιοι ότι θέλετε να απενεργοποιήσετε τον έλεγχο ταυτότητας;", + "disableauth.message2": "Έχει σχεδιαστεί για σενάρια όπου σκοπεύετε να εφαρμόσετε έλεγχο ταυτότητας τρίτου μέρους μπροστά από το Uptime Kuma, όπως το Cloudflare Access, Authelia ή άλλους μηχανισμούς ελέγχου ταυτότητας.", + "Please use this option carefully!": "Χρησιμοποιήστε αυτή την επιλογή προσεκτικά!", + "Logout": "Αποσύνδεση", + "Leave": "Φύγετε", + "I understand, please disable": "Καταλαβαίνω, απενεργοποιήστε", + "Confirm": "Επιβεβαίωση", + "Yes": "Ναί", + "No": "Οχι", + "Username": "Όνομα χρήστη", + "Password": "Κωδικός πρόσβασης", + "Remember me": "Θυμήσου με", + "Login": "Σύνδεση", + "No Monitors, please": "Δεν υπάρχουν παρακολούθησης παρακαλώ", + "add one": "προσθέστε ένα", + "Notification Type": "Είδος ειδοποίησης", + "Email": "Email", + "Test": "Δοκιμή", + "Certificate Info": "Πληροφορίες πιστοποιητικού", + "Resolver Server": "Διακομιστής επίλυσης", + "Resource Record Type": "Τύπος εγγραφής πόρων", + "Last Result": "Τελευταίο Αποτέλεσμα", + "Create your admin account": "Δημιουργήστε τον λογαριασμό διαχειριστή σας", + "Repeat Password": "Επαναλάβετε τον κωδικό πρόσβασης", + "Import Backup": "Εισαγωγή αντιγράφων ασφαλείας", + "Export Backup": "Εξαγωγή αντιγράφων ασφαλείας", + "Export": "Εξαγωγή", + "Import": "Εισαγωγή", + "respTime": "Χρόν. Aπό (ms)", + "notAvailableShort": "N/A", + "Default enabled": "Προεπιλογή ενεργοποιημένη", + "Apply on all existing monitors": "Εφαρμόστε σε όλες τις υπάρχουσες παρακολούθησης", + "Create": "Δημιουργία", + "Clear Data": "Καθαρισμός δεδομένων", + "Events": "Γεγονότα", + "Heartbeats": "Παλμοι καρδιας", + "Auto Get": "Αυτόματη λήψη", + "backupDescription": "Μπορείτε να δημιουργήσετε αντίγραφα ασφαλείας γία ολλες της παρακολούθησης και ειδοποιήσης σε ένα αρχείο JSON.", + "backupDescription2": "Σημείωση: δεν περιλαμβάνονται δεδομένα ιστορικού και συμβάντων.", + "backupDescription3": "Στο αρχείο εξαγωγής περιλαμβάνονται ευαίσθητα δεδομένα, όπως token ειδοποιήσεων. Aποθηκεύστε την εξαγωγή με ασφάλεια.", + "alertNoFile": "Επιλέξτε ένα αρχείο για εισαγωγή.", + "alertWrongFileType": "Επιλέξτε ένα αρχείο JSON.", + "Clear all statistics": "Εκκαθάριση όλων των στατιστικών", + "Skip existing": "Παράβλεψη υπάρχοντος", + "Overwrite": "Αντικατάσταση", + "Options": "Επιλογές", + "Keep both": "Κράτα και τα δύο", + "Verify Token": "Επαλήθευση Token", + "Setup 2FA": "Ρύθμιση 2FA", + "Enable 2FA": "Ενεργοποίηση 2FA", + "Disable 2FA": "Απενεργοποίηση 2FA", + "2FA Settings": "Ρυθμίσεις 2FA", + "Two Factor Authentication": "Έλεγχος ταυτότητας δύο παραγόντων", + "Active": "Ενεργός", + "Inactive": "Ανενεργό", + "Token": "Token", + "Show URI": "Εμφάνιση URI", + "Tags": "Ετικέτες", + "Add New below or Select...": "Προσθήκη νέου παρακάτω ή Επιλέξτε...", + "Tag with this name already exist.": "Υπάρχει ήδη η ετικέτα με αυτό το όνομα.", + "Tag with this value already exist.": "Υπάρχει ήδη ετικέτα με αυτό το value.", + "color": "χρώμα", + "value (optional)": "value (optional)", + "Gray": "Γκρί", + "Red": "Κόκκινο", + "Orange": "Πορτοκάλι", + "Green": "Πράσινο", + "Blue": "Μπλε", + "Indigo": "Indigo", + "Purple": "Μωβ", + "Pink": "Ροζ", + "Search...": "Αναζήτηση...", + "Avg. Ping": "Μέσo.Ping", + "Avg. Response": "Μέσo. Aπάντηση", + "Entry Page": "Σελίδα εισαγωγής", + "statusPageNothing": "Δεν υπάρχει τίποτα εδώ, προσθέστε μια ομάδα ή μια παρακολούθηση.", + "No Services": "Δεν υπάρχουν υπηρεσίες", + "All Systems Operational": "Όλα τα συστήματα λειτουργούν", + "Partially Degraded Service": "Μερικώς υποβαθμισμένη υπηρεσία", + "Degraded Service": "Υποβαθμισμένη υπηρεσία", + "Add Group": "Προσθήκη γρουπ", + "Add a monitor": "Προσθήκη παρακολούθησης", + "Edit Status Page": "Επεξεργασία σελίδας κατάστασης", + "Go to Dashboard": "Μεταβείτε στον Πίνακα ελέγχου", + "Status Page": "Σελίδα κατάστασης", + "Status Pages": "Σελίδες κατάστασης", + "defaultNotificationName": "Η ειδοποίηση μου {notification} ({number})", + "here": "εδώ", + "Required": "Απαιτείται", + "telegram": "Telegram", + "ZohoCliq": "ZohoCliq", + "Bot Token": "Διακριτικό Bot", + "wayToGetTelegramToken": "Μπορείτε να πάρετε ένα διακριτικό από {0}.", + "Chat ID": "Chat ID", + "supportTelegramChatID": "Support Direct Chat / Group / Channel's Chat ID", + "wayToGetTelegramChatID": "Μπορείτε να λάβετε το αναγνωριστικό συνομιλίας σας στέλνοντας ένα μήνυμα στο bot και μεταβαίνοντας σε αυτήν τη διεύθυνση URL για να προβάλετε το chat_id:", + "YOUR BOT TOKEN HERE": "ΤΟ BOT ΣΑΣ ΔΙΑΚΡΙΤΙΚΌ ΕΔΩ", + "chatIDNotFound": "Το Chat ID δεν βρέθηκε. Στείλτε πρώτα ένα μήνυμα σε αυτό το bot", + "webhook": "Webhook", + "Post URL": "Post URL", + "Content Type": "Τύπος περιεχομένου", + "webhookJsonDesc": "{0} είναι καλό για οποιονδήποτε σύγχρονο διακομιστή HTTP όπως το Express.js", + "webhookFormDataDesc": "{multipart} είναι καλό για την PHP. Το JSON θα πρέπει να αναλυθεί με {decodeFunction}", + "smtp": "Email (SMTP)", + "secureOptionNone": "None / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Παράβλεψη σφάλματος TLS", + "From Email": "Από Email", + "emailCustomSubject": "Προσαρμοσμένο θέμα", + "To Email": "Προς Email", + "smtpCC": "CC", + "smtpBCC": "BCC", + "discord": "Discord", + "Discord Webhook URL": "Discord Webhook URL", + "wayToGetDiscordURL": "Μπορείτε να το αποκτήσετε μεταβαίνοντας στις Ρυθμίσεις διακομιστή -> Ενσωματώσεις -> Δημιουργία Webhook", + "Bot Display Name": "Εμφανιζόμενο όνομα bot", + "Prefix Custom Message": "Προσαρμοσμένο μήνυμα", + "Hello @everyone is...": "Γεια {'@'}everyone ειναι...", + "teams": "Microsoft Teams", + "Webhook URL": "Webhook URL", + "wayToGetTeamsURL": "Μπορείτε να μάθετε πώς να δημιουργείτε μια διεύθυνση URL webhook {0}.", + "wayToGetZohoCliqURL": "Μπορείτε να μάθετε πώς να δημιουργείτε μια διεύθυνση URL webhook {0}.", + "signal": "Signal", + "Number": "Αριθμός", + "Recipients": "Αποδέκτες", + "needSignalAPI": "Πρέπει να έχετε ένα signal client με REST API..", + "wayToCheckSignalURL": "Μπορείτε να ελέγξετε αυτό το URL για να δείτε πώς να ρυθμίσετε ένα:", + "signalImportant": "ΣΗΜΑΝΤΙΚΟ: Δεν μπορείτε να συνδυάσετε ομάδες και αριθμούς στους παραλήπτες!", + "gotify": "Gotify", + "Application Token": "Token εφαρμογής", + "Server URL": "URL διακομιστή", + "Priority": "Προτεραιότητα", + "slack": "Slack", + "Icon Emoji": "Εικονίδιο Emoji", + "Channel Name": "Όνομα καναλιού", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "Περισσότερες πληροφορίες σχετικά με τα Webhooks στο: {0}", + "aboutChannelName": "Εισαγάγετε το όνομα του καναλιού στο {0} Όνομα καναλιού εάν θέλετε να παρακάμψετε το κανάλι Webhook. Π.χ.: #other-channel", + "aboutKumaURL": "Εάν αφήσετε κενό το πεδίο URL Uptime Kuma, θα είναι προεπιλεγμένο στη σελίδα Project GitHub..", + "emojiCheatSheet": "Φύλλο εξαπάτησης emoji: {0}", + "rocket.chat": "Rocket.Chat", + "pushover": "Pushover", + "pushy": "Pushy", + "PushByTechulus": "Push by Techulus", + "octopush": "Octopush", + "promosms": "PromoSMS", + "clicksendsms": "ClickSend SMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Support 50+ Notification services)", + "GoogleChat": "Google Chat (Google Workspace only)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "User Key": "Κλειδί χρήστη", + "Device": "Συσκευή", + "Message Title": "Τίτλος μηνύματος", + "Notification Sound": "Ήχος ειδοποίησης", + "More info on:": "Περισσότερες πληροφορίες στο: {0}", + "pushoverDesc1": "Η προτεραιότητα έκτακτης ανάγκης (2) έχει προεπιλεγμένο χρονικό όριο 30 δευτερολέπτων μεταξύ των επαναλήψεων και θα λήξει μετά από 1 ώρα.", + "pushoverDesc2": "Εάν θέλετε να στέλνετε ειδοποιήσεις σε διαφορετικές συσκευές, συμπληρώστε το πεδίο Συσκευή.", + "SMS Type": "Τύπος SMS", + "octopushTypePremium": "Premium (Γρήγορη - συνιστάται για ειδοποίηση)", + "octopushTypeLowCost": "Χαμηλό κόστος (Αργό - μερικές φορές μπλοκάρεται από τον χειριστή)", + "checkPrice": "Ελέγξτε τις τιμές {0}:", + "apiCredentials": "API credentials", + "octopushLegacyHint": "Χρησιμοποιείτε την παλαιού τύπου έκδοση του Octopush (2011-2020) ή τη νέα έκδοση;", + "Check octopush prices": "Ελέγξτε τις τιμές OctoPush {0}.", + "octopushPhoneNumber": "Αριθμός τηλεφώνου (διεθνής μορφή, π.χ.: +30694345678)", + "octopushSMSSender": "Όνομα αποστολέα SMS: 3-11 αλφαριθμητικοί χαρακτήρες και διάστημα (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Device ID", + "Apprise URL": "Apprise URL", + "Example:": "Παράδειγμα: {0}", + "Read more:": "Διαβάστε περισσότερα: {0}", + "Status:": "Κατάσταση: {0}", + "Read more": "Διαβάστε περισσότερα", + "appriseInstalled": "Το Apprise έχει εγκατασταθεί.", + "appriseNotInstalled": "Το Apprise δεν έχει εγκατασταθεί. {0}", + "Access Token": "Access Token", + "Channel access token": "Channel Access Token", + "Line Developers Console": "Line Developers Console", + "lineDevConsoleTo": "Line Developers Console - {0}", + "Basic Settings": "Βασικές ρυθμίσεις", + "User ID": "User ID", + "Messaging API": "Messaging API", + "wayToGetLineChannelToken": "Πρώτα αποκτήστε πρόσβαση στο {0}, δημιουργήστε έναν πάροχο και ένα κανάλι (Messanging API) και, στη συνέχεια, μπορείτε να λάβετε το channel access token και το user ID από τα παραπάνω στοιχεία μενού.", + "Icon URL": "Διεύθυνση URL εικονιδίου", + "aboutIconURL": "Μπορείτε να παρέχετε έναν σύνδεσμο προς μια εικόνα στο \"Icon URL\" για να παρακάμψετε την προεπιλεγμένη εικόνα προφίλ. Δεν θα χρησιμοποιηθεί εάν έχει οριστεί το εικονίδιο Emoji.", + "aboutMattermostChannelName": "Μπορείτε να παρακάμψετε το προεπιλεγμένο κανάλι στο οποίο δημοσιεύει το Webhook εισάγοντας το όνομα του καναλιού στο πεδίο \"Όνομα καναλιού\". Αυτό πρέπει να ενεργοποιηθεί στις ρυθμίσεις του Mattermost Webhook. Π.χ.: #other-channel", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - φθηνό αλλά αργό και συχνά υπερφορτωμένο. Περιορίζεται μόνο σε Πολωνούς παραλήπτες.", + "promosmsTypeFlash": "SMS FLASH - Το μήνυμα θα εμφανίζεται αυτόματα στη συσκευή του παραλήπτη. Περιορίζεται μόνο σε Πολωνούς παραλήπτες.", + "promosmsTypeFull": "SMS FULL - Premium επίπεδο SMS, Μπορείτε να χρησιμοποιήσετε το Όνομα Αποστολέα σας (Πρέπει πρώτα να καταχωρήσετε το όνομα). Αξιόπιστο για ειδοποιήσεις.", + "promosmsTypeSpeed": "SMS SPEED - Υψηλότερη προτεραιότητα στο σύστημα. Πολύ γρήγορο και αξιόπιστο αλλά ακριβό (περίπου διπλάσια τιμή SMS FULL).", + "promosmsPhoneNumber": "Αριθμός τηλεφώνου (για πολωνούς παραλήπτες Μπορείτε να παραλείψετε τους κωδικούς περιοχής)", + "promosmsSMSSender": "Όνομα αποστολέα SMS: Προεγγεγραμμένο όνομα ή ένα από τα προεπιλεγμένα: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + "matrixHomeserverURL": "Homeserver URL (με http(s):// και προαιρετικά θύρα)", + "Internal Room Id": "Internal Room ID", + "matrixDesc1": "Μπορείτε να βρείτε το internal room ID ανατρέχοντας στην ενότητα για προχωρημένους των ρυθμίσεων δωματίου στο πρόγραμμα-πελάτη Matrix. Θα πρέπει να μοιάζει με !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Συνιστάται ανεπιφύλακτα να δημιουργήσετε έναν νέο χρήστη και να μην χρησιμοποιήσετε το διακριτικό πρόσβασης του χρήστη Matrix, καθώς θα επιτρέψει την πλήρη πρόσβαση στον λογαριασμό σας και σε όλα τα δωμάτια στα οποία συμμετέχετε. Αντίθετα, δημιουργήστε έναν νέο χρήστη και προσκαλέστε τον μόνο στο δωμάτιο στο οποίο θέλετε να λαμβάνετε την ειδοποίηση. Μπορείτε να λάβετε το access token εκτελώντας {0}", + "Method": "Μέθοδος", + "Body": "Σώμα", + "Headers": "Headers", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "The request headers are not valid JSON: ", + "BodyInvalidFormat": "The request body is not valid JSON: ", + "Monitor History": "Ιστορικο Παρακολούθησης", + "clearDataOlderThan": "Διατηρήστε τα δεδομένα ιστορικού παρακολούθησης για {0} ημέρες.", + "PasswordsDoNotMatch": "Οι κωδικοί πρόσβασης δεν ταιριάζουν.", + "records": "εγγραφές", + "One record": "Μία εγγραφή", + "steamApiKeyDescription": "Για την παρακολούθηση ενός διακομιστή παιχνιδιών Steam χρειάζεστε ένα κλειδί Steam Web-API. Μπορείτε να καταχωρήσετε το κλειδί API σας εδώ: ", + "Current User": "Τρέχων χρήστης", + "topic": "Θέμα", + "topicExplanation": "Θέμα MQTT προς παρακολούθηση", + "successMessage": "Μήνυμα επιτυχίας", + "successMessageExplanation": "Μήνυμα MQTT που θα θεωρηθεί επιτυχές", + "recent": "Πρόσφατος", + "Done": "Ολοκληρώθηκε", + "Info": "Πληροφορίες", + "Security": "Ασφάλεια", + "Steam API Key": "Steam API Key", + "Shrink Database": "Συρρίκνωση βάσης δεδομένων", + "Pick a RR-Type...": "Επιλέξτε έναν τύπο RR...", + "Pick Accepted Status Codes...": "Επιλέξτε Αποδεκτούς κωδικούς κατάστασης...", + "Default": "Προκαθορισμένο", + "HTTP Options": "Επιλογές HTTP", + "Create Incident": "Δημιουργία περιστατικού", + "Title": "Τίτλος", + "Content": "Περιεχόμενο", + "Style": "Στυλ", + "info": "πληροφορίες", + "warning": "προειδοποίηση", + "danger": "κίνδυνος", + "error": "σφάλμα", + "critical": "κριτικό", + "primary": "primary", + "light": "light", + "dark": "dark", + "Post": "Δημοσίευση", + "Please input title and content": "Παρακαλούμε εισαγάγετε τίτλο και περιεχόμενο", + "Created": "Δημιουργήθηκε", + "Last Updated": "Τελευταία ενημέρωση", + "Unpin": "Ξεκαρφιτσώστε", + "Switch to Light Theme": "Μετάβαση σε Ανιχτό θέμα", + "Switch to Dark Theme": "Μετάβαση σε Σκούρο θέμα", + "Show Tags": "Εμφάνιση ετικετών", + "Hide Tags": "Απόκρυψη ετικετών", + "Description": "Περιγραφή", + "No monitors available.": "Δεν υπάρχουν διαθέσιμες παρακολουθήσεις.", + "Add one": "Προσθέστε ένα", + "No Monitors": "Χωρίς παρακολουθήσεις", + "Untitled Group": "Ομάδα χωρίς τίτλο", + "Services": "Υπηρεσίες", + "Discard": "Απορρίψει", + "Cancel": "Ακυρο", + "Powered by": "Με την υποστήριξη του", + "shrinkDatabaseDescription": "Ενεργοποίηση βάσης δεδομένων VACUUM για SQLite. Εάν η βάση δεδομένων σας έχει δημιουργηθεί μετά την έκδοση 1.10.0, το AUTO_VACUUM είναι ήδη ενεργοποιημένο και αυτή η ενέργεια δεν χρειάζεται.", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API Username (incl. webapi_ prefix)", + "serwersmsAPIPassword": "API κωδικός πρόσβασης", + "serwersmsPhoneNumber": "Αριθμός τηλεφώνου", + "serwersmsSenderName": "Όνομα αποστολέα SMS (καταχωρήθηκε μέσω της πύλης πελατών)", + "stackfield": "Stackfield", + "Customize": "Προσαρμογή", + "Custom Footer": "Προσαρμογή Footer", + "Custom CSS": "Προσαρμογή CSS", + "smtpDkimSettings": "Ρυθμίσεις DKIM", + "smtpDkimDesc": "Ανατρέξτε στο Nodemailer DKIM {0} για χρήση.", + "documentation": "documentation", + "smtpDkimDomain": "Domain Name", + "smtpDkimKeySelector": "Key Selector", + "smtpDkimPrivateKey": "Private Key", + "smtpDkimHashAlgo": "Hash Algorithm (Optional)", + "smtpDkimheaderFieldNames": "Header Keys to sign (Optional)", + "smtpDkimskipFields": "Header Keys not to sign (Optional)", + "wayToGetPagerDutyKey": "Μπορείτε να το λάβετε μεταβαίνοντας στο Service -> Service Directory -> (Επιλέξτε μια υπηρεσία) -> Integrations -> Add integration. Εδώ μπορείτε να κάνετε αναζήτηση για \"Events API V2\". Περισσότερες πληροφορίες {0}", + "Integration Key": "Integration Key", + "Integration URL": "Integration URL", + "Auto resolve or acknowledged": "Αυτόματη επίλυση ή αναγνώριση", + "do nothing": "μην κάνεις τίποτα", + "auto acknowledged": "αυτόματη αναγνώριση", + "auto resolve": "αυτόματη επίλυση", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API Endpoint", + "alertaEnvironment": "Environment", + "alertaApiKey": "API Key", + "alertaAlertState": "Alert State", + "alertaRecoverState": "Recover State", + "deleteStatusPageMsg": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν τη σελίδα κατάστασης?", + "Proxies": "Proxies", + "default": "Προκαθορισμένο", + "enabled": "Ενεργοποιημένο", + "setAsDefault": "Ορίσετε ως προεπιλογή", + "deleteProxyMsg": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το proxy για όλες τις παρακολουθήσεις;", + "proxyDescription": "Πρέπει να εκχωρηθούν proxies σε μια οθπαρακολουθή για να λειτουργήσουν..", + "enableProxyDescription": "Το proxy δεν θα επηρεάσει τα αιτήματα της παρακολουθήσεις μέχρι να ενεργοποιηθεί. Μπορείτε να ελέγξετε την προσωρινή απενεργοποίηση του proxy από όλες τις παρακολουθήσεις βάσει κατάστασης ενεργοποίησης.", + "setAsDefaultProxyDescription": "Αυτός το proxy θα είναι ενεργοποιημένο από προεπιλογή για νέες παρακολουθήσεις. Μπορείτε ακόμα να απενεργοποιήσετε το proxy ξεχωριστά για κάθε οθόνη.", + "Certificate Chain": "Certificate Chain", + "Valid": "Εγκυρο", + "Invalid": "Μη έγκυρο", + "AccessKeyId": "AccessKey ID", + "SecretAccessKey": "AccessKey Secret", + "PhoneNumbers": "PhoneNumbers", + "TemplateCode": "TemplateCode", + "SignName": "SignName", + "Sms template must contain parameters: ": "Το πρότυπο SMS πρέπει να περιέχει παραμέτρους: ", + "Bark Endpoint": "Bark Endpoint", + "Bark Group": "Bark Ομάδα", + "Bark Sound": "Bark Ήχος", + "WebHookUrl": "WebHookUrl", + "SecretKey": "SecretKey", + "For safety, must use secret key": "Για ασφάλεια, πρέπει να χρησιμοποιήσετε secret key", + "Device Token": "Device Token", + "Platform": "Platform", + "iOS": "iOS", + "Android": "Android", + "Huawei": "Huawei", + "High": "High", + "Retry": "Ξαναδοκιμάσετε", + "Topic": "Θέμα", + "WeCom Bot Key": "WeCom Bot Key", + "Setup Proxy": "Ρύθμιση Proxy", + "Proxy Protocol": "Πρωτόκολλο Proxy", + "Proxy Server": "Proxy Server", + "Proxy server has authentication": "Το Proxy διαθέτει έλεγχο ταυτότητας", + "User": "Χρήστης", + "Installed": "Εγκατεστημένο", + "Not installed": "Μη εγκατεστημενο", + "Running": "Τρέχη", + "Not running": "Δεν τρεχη", + "Remove Token": "Κατάργηση Token", + "Start": "Αρχή", + "Stop": "Στάση", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "Προσθήκη νέας σελίδας κατάστασης", + "Slug": "Slug", + "Accept characters:": "Αποδοχή χαρακτήρων:", + "startOrEndWithOnly": "Ξεκινήστε ή τελειώστε μόνο με {0}", + "No consecutive dashes": "Χωρίς διαδοχικές παύλες", + "Next": "Επόμενο", + "The slug is already taken. Please choose another slug.": "Ο slug έχει ήδη πιαστεί. Επιλέξτε άλλο slug.", + "No Proxy": "Οχι Proxy", + "Authentication": "Authentication", + "HTTP Basic Auth": "HTTP Basic Auth", + "New Status Page": "Νέας Σελίδα κατάστασης", + "Page Not Found": "Η σελίδα δεν βρέθηκε", + "Reverse Proxy": "Αντίστροφο Proxy", + "Backup": "Αντιγράφων ασφαλείας", + "About": "Σχετικά με το Uptime Kuma", + "wayToGetCloudflaredURL": "(Λήψη cloudflared από {0})", + "cloudflareWebsite": "Ιστοσελίδα Cloudflare", + "Message:": "Μήνυμα:", + "Don't know how to get the token? Please read the guide:": "Δεν ξέρετε πώς να αποκτήσετε το token; Διαβάστε τον οδηγό:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Η τρέχουσα σύνδεση μπορεί να χαθεί εάν αυτή τη στιγμή συνδέεστε μέσω του Cloudflare Tunnel. Θέλετε σίγουρα να το σταματήσετε; Πληκτρολογήστε τον τρέχοντα κωδικό πρόσβασής σας για να τον επιβεβαιώσετε.", + "HTTP Headers": "HTTP Headers", + "Trust Proxy": "Εμπιστοσύνη του Proxy", + "Other Software": "Other Software", + "For example: nginx, Apache and Traefik.": "Για παράδειγμα: nginx, Apache και Traefik.", + "Please read": "Παρακαλώ διαβάστε", + "Subject:": "Θέμα:", + "Valid To:": "Εγκυρο για:", + "Days Remaining:": "Ημέρες που απομένουν:", + "Issuer:": "Εκδότης:", + "Fingerprint:": "Δακτυλικό αποτύπωμα:", + "No status pages": "Δεν υπάρχουν σελίδες κατάστασης", + "Domain Name Expiry Notification": "Ειδοποίηση λήξης ονόματος τομέα", + "Proxy": "Proxy", + "Date Created": "Ημερομηνία Δημιουργίας", + "HomeAssistant": "Home Assistant", + "onebotHttpAddress": "OneBot HTTP Address", + "onebotMessageType": "OneBot Message Type", + "onebotGroupMessage": "Group", + "onebotPrivateMessage": "Private", + "onebotUserOrGroupId": "Group/User ID", + "onebotSafetyTips": "Για ασφάλεια, πρέπει να ορίσετε το acess token", + "PushDeer Key": "PushDeer Key", + "Footer Text": "Κείμενο υποσέλιδου", + "Show Powered By": "Εμφάνιση Powered By", + "Domain Names": "Ονόματα Τομέα", + "signedInDisp": "Συνδεθήκατε ως {0}", + "signedInDispDisabled": "Εξουσιοδότηση είναι απενεργοποιημένη.", + "RadiusSecret": "Radius Secret", + "RadiusSecretDescription": "Shared Secret μεταξύ client και το server", + "RadiusCalledStationId": "Called Station Id", + "RadiusCalledStationIdDescription": "Identifier της καλούμενης συσκευής", + "RadiusCallingStationId": "Calling Station Id", + "RadiusCallingStationIdDescription": "Identifier oτης συσκευής κλήσης", + "Certificate Expiry Notification": "Ειδοποίηση Λήξης Πιστοποιητικού", + "API Username": "API Username", + "API Key": "API Key", + "Recipient Number": "Αριθμός Παραλήπτη", + "From Name/Number": "Από Όνομα/Αριθμός", + "Leave blank to use a shared sender number.": "Αφήστε το κενό για να χρησιμοποιήσετε έναν κοινόχρηστο αριθμό αποστολέα.", + "Octopush API Version": "Octopush API Version", + "Legacy Octopush-DM": "Legacy Octopush-DM", + "endpoint": "endpoint", + "octopushAPIKey": "\"API key\" από το HTTP API credentials στον πίνακα ελέγχου", + "octopushLogin": "\"Login\" από το HTTP API credentials στον πίνακα ελέγχου", + "promosmsLogin": "API Login Name", + "promosmsPassword": "API Password", + "pushoversounds pushover": "Pushover (default)", + "pushoversounds bike": "Bike", + "pushoversounds bugle": "Bugle", + "pushoversounds cashregister": "Cash Register", + "pushoversounds classical": "Classical", + "pushoversounds cosmic": "Cosmic", + "pushoversounds falling": "Falling", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Incoming", + "pushoversounds intermission": "Intermission", + "pushoversounds magic": "Magic", + "pushoversounds mechanical": "Mechanical", + "pushoversounds pianobar": "Piano Bar", + "pushoversounds siren": "Siren", + "pushoversounds spacealarm": "Space Alarm", + "pushoversounds tugboat": "Tug Boat", + "pushoversounds alien": "Alien Alarm (long)", + "pushoversounds climb": "Climb (long)", + "pushoversounds persistent": "Persistent (long)", + "pushoversounds echo": "Pushover Echo (long)", + "pushoversounds updown": "Up Down (long)", + "pushoversounds vibrate": "Vibrate Only", + "pushoversounds none": "None (silent)", + "pushyAPIKey": "Μυστικό API Key", + "pushyToken": "Τoken Συσκευής", + "Show update if available": "Εμφάνιση ενημέρωσης εάν είναι διαθέσιμη", + "Also check beta release": "Ελέγξτε επίσης την έκδοση beta", + "Using a Reverse Proxy?": "Χρησιμοποιείτε reverse proxy;", + "Check how to config it for WebSocket": "Ελέγξτε πώς να το ρυθμίσετε για το WebSocket", + "Steam Game Server": "Διακομιστής παιχνιδιών Steam", + "Most likely causes:": "Πιο πιθανές αιτίες:", + "The resource is no longer available.": "Ο πόρος δεν είναι πλέον διαθέσιμος.", + "There might be a typing error in the address.": "Μπορεί να υπάρχει σφάλμα πληκτρολόγησης στη διεύθυνση.", + "What you can try:": "Τι μπορείτε να δοκιμάσετε:", + "Retype the address.": "Πληκτρολογήστε ξανά τη διεύθυνση.", + "Go back to the previous page.": "Επιστρέψτε στην προηγούμενη σελίδα.", + "Coming Soon": "Ερχεται σύντομα", + "wayToGetClickSendSMSToken": "Μπορείτε να πάρετε το API Username και API Key απο {0} .", + "Connection String": "Connection String", + "Query": "Query", + "settingsCertificateExpiry": "Λήξη πιστοποιητικού TLS", + "certificationExpiryDescription": "Οι παρακολουθήσεις HTTPS ενεργοποιούν ειδοποίηση όταν λήξει το πιστοποιητικό TLS σε:", + "Setup Docker Host": "Ρύθμιση Docker Host", + "Connection Type": "Τύπος σύνδεσης", + "Docker Daemon": "Docker Daemon", + "deleteDockerHostMsg": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτόν τον κεντρικό υπολογιστή βάσης για όλες τις παρακολουθήσεις;", + "socket": "Socket", + "tcp": "TCP / HTTP", + "Docker Container": "Docker Container", + "Container Name / ID": "Container Name / ID", + "Docker Host": "Docker Host", + "Docker Hosts": "Docker Hosts", + "ntfy Topic": "ntfy Topic", + "Domain": "Domain", + "Workstation": "Workstation", + "disableCloudflaredNoAuthMsg": "Βρίσκεστε σε λειτουργία No Auth, δεν απαιτείται κωδικός πρόσβασης.", + "trustProxyDescription": "Εμπιστευτείτε τις κεφαλίδες 'X-Forwarded-*'. Εάν θέλετε να λάβετε τη σωστή IP πελάτη και το Uptime Kuma σας βρίσκεται πίσω το Nginx ή το Apache, θα πρέπει να το ενεργοποιήσετε.", + "wayToGetLineNotifyToken": "Μπορείτε να λάβετε ένα access token από το {0}", + "Examples": "Παραδείγματα", + "Home Assistant URL": "Home Assistant URL", + "Long-Lived Access Token": "Long-Lived Access Token", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Long-Lived Access Token μπορεί να δημιουργηθεί κάνοντας κλικ στο όνομα του προφίλ σας (κάτω αριστερά) και κάνοντας κύλιση προς τα κάτω και, στη συνέχεια, κάντε κλικ στο Create Token. ", + "Notification Service": "Υπηρεσία ειδοποιήσεων", + "default: notify all devices": "προεπιλογή: ειδοποίηση όλων των συσκευών", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Μπορείτε να βρείτε μια λίστα με τις Υπηρεσίες ειδοποιήσεων στον Home assistant στην περιοχή \"Developer Tools > Services\" αναζήτηση για \"notification\" για να βρείτε το όνομα της συσκευής/τηλεφώνου σας.", + "Automations can optionally be triggered in Home Assistant:": "Οι αυτοματισμοί μπορούν προαιρετικά να ενεργοποιηθούν στο Home Assistant:", + "Trigger type:": "Τύπος ενεργοποίησης:", + "Event type:": "Τύπος συμβάντος:", + "Event data:": "Δεδομένα συμβάντος:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Στη συνέχεια, επιλέξτε μια ενέργεια, για παράδειγμα αλλάξτε τη σκηνή στο σημείο όπου ένα φως RGB είναι κόκκινο.", + "Frontend Version": "Έκδοση Frontend", + "Frontend Version do not match backend version!": "Η Frontend έκδοση δεν ταιριάζει με την έκδοση backend!", + "Base URL": "Βασική διεύθυνση URL", + "goAlertInfo": "Το GoAlert είναι μια εφαρμογή ανοιχτού κώδικα για προγραμματισμό κλήσεων, αυτοματοποιημένες κλιμακώσεις και ειδοποιήσεις (όπως SMS ή φωνητικές κλήσεις). Αλληλεπιδράστε αυτόματα με το σωστό άτομο, με τον σωστό τρόπο και τη σωστή στιγμή! {0}", + "goAlertIntegrationKeyInfo": "Λάβετε το generic API integration key για την υπηρεσία σε αυτήν τη μορφή \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" συνήθως την τιμή της παραμέτρου διακριτικού της αντιγραμμένης διεύθυνσης URL.", + "goAlert": "GoAlert", + "backupOutdatedWarning": "Καταργήθηκε: Επειδή προστέθηκαν πολλές δυνατότητες και αυτή η δυνατότητα δημιουργίας αντιγράφων ασφαλείας δεν διατηρείται πολη, δεν μπορεί να δημιουργήσει ή να επαναφέρει ένα πλήρες αντίγραφο ασφαλείας.", + "backupRecommend": "Παρακαλούμε δημιουργήστε αντίγραφα ασφαλείας του volume ή του φακέλου δεδομένων (./data/) απευθείας." +} diff --git a/src/lang/en.json b/src/lang/en.json new file mode 100644 index 000000000..897b28f5b --- /dev/null +++ b/src/lang/en.json @@ -0,0 +1,678 @@ +{ + "languageName": "English", + "checkEverySecond": "Check every {0} seconds", + "retryCheckEverySecond": "Retry every {0} seconds", + "resendEveryXTimes": "Resend every {0} times", + "resendDisabled": "Resend disabled", + "retriesDescription": "Maximum retries before the service is marked as down and a notification is sent", + "ignoreTLSError": "Ignore TLS/SSL error for HTTPS websites", + "upsideDownModeDescription": "Flip the status upside down. If the service is reachable, it is DOWN.", + "maxRedirectDescription": "Maximum number of redirects to follow. Set to 0 to disable redirects.", + "enableGRPCTls": "Allow to send gRPC request with TLS connection", + "grpcMethodDescription": "Method name is convert to cammelCase format such as sayHello, check, etc.", + "acceptedStatusCodesDescription": "Select status codes which are considered as a successful response.", + "Maintenance": "Maintenance", + "statusMaintenance": "Maintenance", + "Schedule maintenance": "Schedule maintenance", + "Affected Monitors": "Affected Monitors", + "Pick Affected Monitors...": "Pick Affected Monitors...", + "Start of maintenance": "Start of maintenance", + "All Status Pages": "All Status Pages", + "Select status pages...": "Select status pages...", + "recurringIntervalMessage": "Run once every day | Run once every {0} days", + "affectedMonitorsDescription": "Select monitors that are affected by current maintenance", + "affectedStatusPages": "Show this maintenance message on selected status pages", + "atLeastOneMonitor": "Select at least one affected monitor", + "passwordNotMatchMsg": "The repeat password does not match.", + "notificationDescription": "Notifications must be assigned to a monitor to function.", + "keywordDescription": "Search keyword in plain HTML or JSON response. The search is case-sensitive.", + "pauseDashboardHome": "Pause", + "deleteMonitorMsg": "Are you sure want to delete this monitor?", + "deleteMaintenanceMsg": "Are you sure want to delete this maintenance?", + "deleteNotificationMsg": "Are you sure want to delete this notification for all monitors?", + "dnsPortDescription": "DNS server port. Defaults to 53. You can change the port at any time.", + "resolverserverDescription": "Cloudflare is the default server. You can change the resolver server anytime.", + "rrtypeDescription": "Select the RR type you want to monitor", + "pauseMonitorMsg": "Are you sure want to pause?", + "enableDefaultNotificationDescription": "This notification will be enabled by default for new monitors. You can still disable the notification separately for each monitor.", + "clearEventsMsg": "Are you sure want to delete all events for this monitor?", + "clearHeartbeatsMsg": "Are you sure want to delete all heartbeats for this monitor?", + "confirmClearStatisticsMsg": "Are you sure you want to delete ALL statistics?", + "importHandleDescription": "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.", + "confirmImportMsg": "Are you sure you want to import the backup? Please verify you've selected the correct import option.", + "twoFAVerifyLabel": "Please enter your token to verify 2FA:", + "tokenValidSettingsMsg": "Token is valid! You can now save the 2FA settings.", + "confirmEnableTwoFAMsg": "Are you sure you want to enable 2FA?", + "confirmDisableTwoFAMsg": "Are you sure you want to disable 2FA?", + "Settings": "Settings", + "Dashboard": "Dashboard", + "New Update": "New Update", + "Language": "Language", + "Appearance": "Appearance", + "Theme": "Theme", + "General": "General", + "Primary Base URL": "Primary Base URL", + "Version": "Version", + "Check Update On GitHub": "Check Update On GitHub", + "List": "List", + "Add": "Add", + "Add New Monitor": "Add New Monitor", + "Quick Stats": "Quick Stats", + "Up": "Up", + "Down": "Down", + "Pending": "Pending", + "Unknown": "Unknown", + "Pause": "Pause", + "Name": "Name", + "Status": "Status", + "DateTime": "DateTime", + "Message": "Message", + "No important events": "No important events", + "Resume": "Resume", + "Edit": "Edit", + "Delete": "Delete", + "Current": "Current", + "Uptime": "Uptime", + "Cert Exp.": "Cert Exp.", + "day": "day | days", + "-day": "-day", + "hour": "hour", + "-hour": "-hour", + "Response": "Response", + "Ping": "Ping", + "Monitor Type": "Monitor Type", + "Keyword": "Keyword", + "Friendly Name": "Friendly Name", + "URL": "URL", + "Hostname": "Hostname", + "Port": "Port", + "Heartbeat Interval": "Heartbeat Interval", + "Retries": "Retries", + "Heartbeat Retry Interval": "Heartbeat Retry Interval", + "Resend Notification if Down X times consequently": "Resend Notification if Down X times consequently", + "Advanced": "Advanced", + "Upside Down Mode": "Upside Down Mode", + "Max. Redirects": "Max. Redirects", + "Accepted Status Codes": "Accepted Status Codes", + "Push URL": "Push URL", + "needPushEvery": "You should call this URL every {0} seconds.", + "pushOptionalParams": "Optional parameters: {0}", + "Save": "Save", + "Notifications": "Notifications", + "Not available, please setup.": "Not available, please setup.", + "Setup Notification": "Setup Notification", + "Light": "Light", + "Dark": "Dark", + "Auto": "Auto", + "Theme - Heartbeat Bar": "Theme - Heartbeat Bar", + "Normal": "Normal", + "Bottom": "Bottom", + "None": "None", + "Timezone": "Timezone", + "Search Engine Visibility": "Search Engine Visibility", + "Allow indexing": "Allow indexing", + "Discourage search engines from indexing site": "Discourage search engines from indexing site", + "Change Password": "Change Password", + "Current Password": "Current Password", + "New Password": "New Password", + "Repeat New Password": "Repeat New Password", + "Update Password": "Update Password", + "Disable Auth": "Disable Auth", + "Enable Auth": "Enable Auth", + "disableauth.message1": "Are you sure want to disable authentication?", + "disableauth.message2": "It is designed for scenarios where you intend to implement third-party authentication in front of Uptime Kuma such as Cloudflare Access, Authelia or other authentication mechanisms.", + "Please use this option carefully!": "Please use this option carefully!", + "Logout": "Logout", + "Leave": "Leave", + "I understand, please disable": "I understand, please disable", + "Confirm": "Confirm", + "Yes": "Yes", + "No": "No", + "Username": "Username", + "Password": "Password", + "Remember me": "Remember me", + "Login": "Login", + "No Monitors, please": "No Monitors, please", + "add one": "add one", + "Notification Type": "Notification Type", + "Email": "Email", + "Test": "Test", + "Certificate Info": "Certificate Info", + "Resolver Server": "Resolver Server", + "Resource Record Type": "Resource Record Type", + "Last Result": "Last Result", + "Create your admin account": "Create your admin account", + "Repeat Password": "Repeat Password", + "Import Backup": "Import Backup", + "Export Backup": "Export Backup", + "Export": "Export", + "Import": "Import", + "respTime": "Resp. Time (ms)", + "notAvailableShort": "N/A", + "Default enabled": "Default enabled", + "Apply on all existing monitors": "Apply on all existing monitors", + "Create": "Create", + "Clear Data": "Clear Data", + "Events": "Events", + "Heartbeats": "Heartbeats", + "Auto Get": "Auto Get", + "backupDescription": "You can backup all monitors and notifications into a JSON file.", + "backupDescription2": "Note: history and event data is not included.", + "backupDescription3": "Sensitive data such as notification tokens are included in the export file; please store export securely.", + "alertNoFile": "Please select a file to import.", + "alertWrongFileType": "Please select a JSON file.", + "Clear all statistics": "Clear all Statistics", + "Skip existing": "Skip existing", + "Overwrite": "Overwrite", + "Options": "Options", + "Keep both": "Keep both", + "Verify Token": "Verify Token", + "Setup 2FA": "Setup 2FA", + "Enable 2FA": "Enable 2FA", + "Disable 2FA": "Disable 2FA", + "2FA Settings": "2FA Settings", + "Two Factor Authentication": "Two Factor Authentication", + "Active": "Active", + "Inactive": "Inactive", + "Token": "Token", + "Show URI": "Show URI", + "Tags": "Tags", + "Add New below or Select...": "Add New below or Select...", + "Tag with this name already exist.": "Tag with this name already exists.", + "Tag with this value already exist.": "Tag with this value already exists.", + "color": "color", + "value (optional)": "value (optional)", + "Gray": "Gray", + "Red": "Red", + "Orange": "Orange", + "Green": "Green", + "Blue": "Blue", + "Indigo": "Indigo", + "Purple": "Purple", + "Pink": "Pink", + "Search...": "Search...", + "Avg. Ping": "Avg. Ping", + "Avg. Response": "Avg. Response", + "Entry Page": "Entry Page", + "statusPageNothing": "Nothing here, please add a group or a monitor.", + "No Services": "No Services", + "All Systems Operational": "All Systems Operational", + "Partially Degraded Service": "Partially Degraded Service", + "Degraded Service": "Degraded Service", + "Add Group": "Add Group", + "Add a monitor": "Add a monitor", + "Edit Status Page": "Edit Status Page", + "Go to Dashboard": "Go to Dashboard", + "Status Page": "Status Page", + "Status Pages": "Status Pages", + "defaultNotificationName": "My {notification} Alert ({number})", + "here": "here", + "Required": "Required", + "telegram": "Telegram", + "ZohoCliq": "ZohoCliq", + "Bot Token": "Bot Token", + "wayToGetTelegramToken": "You can get a token from {0}.", + "Chat ID": "Chat ID", + "supportTelegramChatID": "Support Direct Chat / Group / Channel's Chat ID", + "wayToGetTelegramChatID": "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", + "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", + "chatIDNotFound": "Chat ID is not found; please send a message to this bot first", + "webhook": "Webhook", + "Post URL": "Post URL", + "Content Type": "Content Type", + "webhookJsonDesc": "{0} is good for any modern HTTP servers such as Express.js", + "webhookFormDataDesc": "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", + "webhookAdditionalHeadersTitle": "Additional Headers", + "webhookAdditionalHeadersDesc": "Sets additional headers sent with the webhook.", + "smtp": "Email (SMTP)", + "secureOptionNone": "None / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Ignore TLS Error", + "From Email": "From Email", + "emailCustomSubject": "Custom Subject", + "To Email": "To Email", + "smtpCC": "CC", + "smtpBCC": "BCC", + "discord": "Discord", + "Discord Webhook URL": "Discord Webhook URL", + "wayToGetDiscordURL": "You can get this by going to Server Settings -> Integrations -> Create Webhook", + "Bot Display Name": "Bot Display Name", + "Prefix Custom Message": "Prefix Custom Message", + "Hello @everyone is...": "Hello {'@'}everyone is...", + "teams": "Microsoft Teams", + "Webhook URL": "Webhook URL", + "wayToGetTeamsURL": "You can learn how to create a webhook URL {0}.", + "wayToGetZohoCliqURL": "You can learn how to create a webhook URL {0}.", + "signal": "Signal", + "Number": "Number", + "Recipients": "Recipients", + "needSignalAPI": "You need to have a signal client with REST API.", + "wayToCheckSignalURL": "You can check this URL to view how to set one up:", + "signalImportant": "IMPORTANT: You cannot mix groups and numbers in recipients!", + "gotify": "Gotify", + "Application Token": "Application Token", + "Server URL": "Server URL", + "Priority": "Priority", + "slack": "Slack", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Channel Name", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "More info about Webhooks on: {0}", + "aboutChannelName": "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", + "aboutKumaURL": "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", + "emojiCheatSheet": "Emoji cheat sheet: {0}", + "rocket.chat": "Rocket.Chat", + "pushover": "Pushover", + "pushy": "Pushy", + "PushByTechulus": "Push by Techulus", + "octopush": "Octopush", + "promosms": "PromoSMS", + "clicksendsms": "ClickSend SMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Support 50+ Notification services)", + "GoogleChat": "Google Chat (Google Workspace only)", + "pushbullet": "Pushbullet", + "Kook": "Kook", + "wayToGetKookBotToken": "Create application and get your bot token at {0}", + "wayToGetKookGuildID": "Switch on 'Developer Mode' in Kook setting, and right click the guild to get its ID", + "Guild ID": "Guild ID", + "line": "Line Messenger", + "mattermost": "Mattermost", + "User Key": "User Key", + "Device": "Device", + "Message Title": "Message Title", + "Notification Sound": "Notification Sound", + "More info on:": "More info on: {0}", + "pushoverDesc1": "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", + "pushoverDesc2": "If you want to send notifications to different devices, fill out Device field.", + "SMS Type": "SMS Type", + "octopushTypePremium": "Premium (Fast - recommended for alerting)", + "octopushTypeLowCost": "Low Cost (Slow - sometimes blocked by operator)", + "checkPrice": "Check {0} prices:", + "apiCredentials": "API credentials", + "octopushLegacyHint": "Do you use the legacy version of Octopush (2011-2020) or the new version?", + "Check octopush prices": "Check octopush prices {0}.", + "octopushPhoneNumber": "Phone number (intl format, eg : +33612345678) ", + "octopushSMSSender": "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Device ID", + "Apprise URL": "Apprise URL", + "Example:": "Example: {0}", + "Read more:": "Read more: {0}", + "Status:": "Status: {0}", + "Read more": "Read more", + "appriseInstalled": "Apprise is installed.", + "appriseNotInstalled": "Apprise is not installed. {0}", + "Access Token": "Access Token", + "Channel access token": "Channel access token", + "Line Developers Console": "Line Developers Console", + "lineDevConsoleTo": "Line Developers Console - {0}", + "Basic Settings": "Basic Settings", + "User ID": "User ID", + "Messaging API": "Messaging API", + "wayToGetLineChannelToken": "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", + "Icon URL": "Icon URL", + "aboutIconURL": "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", + "aboutMattermostChannelName": "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", + "promosmsTypeFlash": "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", + "promosmsTypeFull": "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", + "promosmsTypeSpeed": "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", + "promosmsPhoneNumber": "Phone number (for Polish recipient You can skip area codes)", + "promosmsSMSSender": "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + "matrixHomeserverURL": "Homeserver URL (with http(s):// and optionally port)", + "Internal Room Id": "Internal Room ID", + "matrixDesc1": "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", + "Method": "Method", + "Body": "Body", + "Headers": "Headers", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "The request headers are not valid JSON: ", + "BodyInvalidFormat": "The request body is not valid JSON: ", + "Monitor History": "Monitor History", + "clearDataOlderThan": "Keep monitor history data for {0} days.", + "PasswordsDoNotMatch": "Passwords do not match.", + "records": "records", + "One record": "One record", + "steamApiKeyDescription": "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", + "Current User": "Current User", + "topic": "Topic", + "topicExplanation": "MQTT topic to monitor", + "successMessage": "Success Message", + "successMessageExplanation": "MQTT message that will be considered as success", + "recent": "Recent", + "Done": "Done", + "Info": "Info", + "Security": "Security", + "Steam API Key": "Steam API Key", + "Shrink Database": "Shrink Database", + "Pick a RR-Type...": "Pick a RR-Type...", + "Pick Accepted Status Codes...": "Pick Accepted Status Codes...", + "Default": "Default", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Title": "Title", + "Content": "Content", + "Style": "Style", + "info": "info", + "warning": "warning", + "danger": "danger", + "error": "error", + "critical": "critical", + "primary": "primary", + "light": "light", + "dark": "dark", + "Post": "Post", + "Please input title and content": "Please input title and content", + "Created": "Created", + "Last Updated": "Last Updated", + "Unpin": "Unpin", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + "Description": "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + "Services": "Services", + "Discard": "Discard", + "Cancel": "Cancel", + "Powered by": "Powered by", + "shrinkDatabaseDescription": "Trigger database VACUUM for SQLite. If your database is created after 1.10.0, AUTO_VACUUM is already enabled and this action is not needed.", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API Username (incl. webapi_ prefix)", + "serwersmsAPIPassword": "API Password", + "serwersmsPhoneNumber": "Phone number", + "serwersmsSenderName": "SMS Sender Name (registered via customer portal)", + "smseagle": "SMSEagle", + "smseagleTo": "Phone number(s)", + "smseagleGroup": "Phonebook group name(s)", + "smseagleContact": "Phonebook contact name(s)", + "smseagleRecipientType": "Recipient type", + "smseagleRecipient": "Recipient(s) (multiple must be separated with comma)", + "smseagleToken": "API Access token", + "smseagleUrl": "Your SMSEagle device URL", + "smseagleEncoding": "Send as Unicode", + "smseaglePriority": "Message priority (0-9, default = 0)", + "stackfield": "Stackfield", + "Customize": "Customize", + "Custom Footer": "Custom Footer", + "Custom CSS": "Custom CSS", + "smtpDkimSettings": "DKIM Settings", + "smtpDkimDesc": "Please refer to the Nodemailer DKIM {0} for usage.", + "documentation": "documentation", + "smtpDkimDomain": "Domain Name", + "smtpDkimKeySelector": "Key Selector", + "smtpDkimPrivateKey": "Private Key", + "smtpDkimHashAlgo": "Hash Algorithm (Optional)", + "smtpDkimheaderFieldNames": "Header Keys to sign (Optional)", + "smtpDkimskipFields": "Header Keys not to sign (Optional)", + "wayToGetPagerDutyKey": "You can get this by going to Service -> Service Directory -> (Select a service) -> Integrations -> Add integration. Here you can search for \"Events API V2\". More info {0}", + "Integration Key": "Integration Key", + "Integration URL": "Integration URL", + "Auto resolve or acknowledged": "Auto resolve or acknowledged", + "do nothing": "do nothing", + "auto acknowledged": "auto acknowledged", + "auto resolve": "auto resolve", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API Endpoint", + "alertaEnvironment": "Environment", + "alertaApiKey": "API Key", + "alertaAlertState": "Alert State", + "alertaRecoverState": "Recover State", + "deleteStatusPageMsg": "Are you sure want to delete this status page?", + "Proxies": "Proxies", + "default": "Default", + "enabled": "Enabled", + "setAsDefault": "Set As Default", + "deleteProxyMsg": "Are you sure want to delete this proxy for all monitors?", + "proxyDescription": "Proxies must be assigned to a monitor to function.", + "enableProxyDescription": "This proxy will not effect on monitor requests until it is activated. You can control temporarily disable the proxy from all monitors by activation status.", + "setAsDefaultProxyDescription": "This proxy will be enabled by default for new monitors. You can still disable the proxy separately for each monitor.", + "Certificate Chain": "Certificate Chain", + "Valid": "Valid", + "Invalid": "Invalid", + "AccessKeyId": "AccessKey ID", + "SecretAccessKey": "AccessKey Secret", + "PhoneNumbers": "PhoneNumbers", + "TemplateCode": "TemplateCode", + "SignName": "SignName", + "Sms template must contain parameters: ": "Sms template must contain parameters: ", + "Bark Endpoint": "Bark Endpoint", + "Bark Group": "Bark Group", + "Bark Sound": "Bark Sound", + "WebHookUrl": "WebHookUrl", + "SecretKey": "SecretKey", + "For safety, must use secret key": "For safety, must use secret key", + "Device Token": "Device Token", + "Platform": "Platform", + "iOS": "iOS", + "Android": "Android", + "Huawei": "Huawei", + "High": "High", + "Retry": "Retry", + "Topic": "Topic", + "WeCom Bot Key": "WeCom Bot Key", + "Setup Proxy": "Setup Proxy", + "Proxy Protocol": "Proxy Protocol", + "Proxy Server": "Proxy Server", + "Proxy server has authentication": "Proxy server has authentication", + "User": "User", + "Installed": "Installed", + "Not installed": "Not installed", + "Running": "Running", + "Not running": "Not running", + "Remove Token": "Remove Token", + "Start": "Start", + "Stop": "Stop", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "Add New Status Page", + "Slug": "Slug", + "Accept characters:": "Accept characters:", + "startOrEndWithOnly": "Start or end with {0} only", + "No consecutive dashes": "No consecutive dashes", + "Next": "Next", + "The slug is already taken. Please choose another slug.": "The slug is already taken. Please choose another slug.", + "No Proxy": "No Proxy", + "Authentication": "Authentication", + "HTTP Basic Auth": "HTTP Basic Auth", + "New Status Page": "New Status Page", + "Page Not Found": "Page Not Found", + "Reverse Proxy": "Reverse Proxy", + "Backup": "Backup", + "About": "About", + "wayToGetCloudflaredURL": "(Download cloudflared from {0})", + "cloudflareWebsite": "Cloudflare Website", + "Message:": "Message:", + "Don't know how to get the token? Please read the guide:": "Don't know how to get the token? Please read the guide:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.", + "HTTP Headers": "HTTP Headers", + "Trust Proxy": "Trust Proxy", + "Other Software": "Other Software", + "For example: nginx, Apache and Traefik.": "For example: nginx, Apache and Traefik.", + "Please read": "Please read", + "Subject:": "Subject:", + "Valid To:": "Valid To:", + "Days Remaining:": "Days Remaining:", + "Issuer:": "Issuer:", + "Fingerprint:": "Fingerprint:", + "No status pages": "No status pages", + "Domain Name Expiry Notification": "Domain Name Expiry Notification", + "Proxy": "Proxy", + "Date Created": "Date Created", + "HomeAssistant": "Home Assistant", + "onebotHttpAddress": "OneBot HTTP Address", + "onebotMessageType": "OneBot Message Type", + "onebotGroupMessage": "Group", + "onebotPrivateMessage": "Private", + "onebotUserOrGroupId": "Group/User ID", + "onebotSafetyTips": "For safety, must set access token", + "PushDeer Key": "PushDeer Key", + "Footer Text": "Footer Text", + "Show Powered By": "Show Powered By", + "Domain Names": "Domain Names", + "signedInDisp": "Signed in as {0}", + "signedInDispDisabled": "Auth Disabled.", + "RadiusSecret": "Radius Secret", + "RadiusSecretDescription": "Shared Secret between client and server", + "RadiusCalledStationId": "Called Station Id", + "RadiusCalledStationIdDescription": "Identifier of the called device", + "RadiusCallingStationId": "Calling Station Id", + "RadiusCallingStationIdDescription": "Identifier of the calling device", + "Certificate Expiry Notification": "Certificate Expiry Notification", + "API Username": "API Username", + "API Key": "API Key", + "Recipient Number": "Recipient Number", + "From Name/Number": "From Name/Number", + "Leave blank to use a shared sender number.": "Leave blank to use a shared sender number.", + "Octopush API Version": "Octopush API Version", + "Legacy Octopush-DM": "Legacy Octopush-DM", + "endpoint": "endpoint", + "octopushAPIKey": "\"API key\" from HTTP API credentials in control panel", + "octopushLogin": "\"Login\" from HTTP API credentials in control panel", + "promosmsLogin": "API Login Name", + "promosmsPassword": "API Password", + "pushoversounds pushover": "Pushover (default)", + "pushoversounds bike": "Bike", + "pushoversounds bugle": "Bugle", + "pushoversounds cashregister": "Cash Register", + "pushoversounds classical": "Classical", + "pushoversounds cosmic": "Cosmic", + "pushoversounds falling": "Falling", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Incoming", + "pushoversounds intermission": "Intermission", + "pushoversounds magic": "Magic", + "pushoversounds mechanical": "Mechanical", + "pushoversounds pianobar": "Piano Bar", + "pushoversounds siren": "Siren", + "pushoversounds spacealarm": "Space Alarm", + "pushoversounds tugboat": "Tug Boat", + "pushoversounds alien": "Alien Alarm (long)", + "pushoversounds climb": "Climb (long)", + "pushoversounds persistent": "Persistent (long)", + "pushoversounds echo": "Pushover Echo (long)", + "pushoversounds updown": "Up Down (long)", + "pushoversounds vibrate": "Vibrate Only", + "pushoversounds none": "None (silent)", + "pushyAPIKey": "Secret API Key", + "pushyToken": "Device token", + "Show update if available": "Show update if available", + "Also check beta release": "Also check beta release", + "Using a Reverse Proxy?": "Using a Reverse Proxy?", + "Check how to config it for WebSocket": "Check how to config it for WebSocket", + "Steam Game Server": "Steam Game Server", + "Most likely causes:": "Most likely causes:", + "The resource is no longer available.": "The resource is no longer available.", + "There might be a typing error in the address.": "There might be a typing error in the address.", + "What you can try:": "What you can try:", + "Retype the address.": "Retype the address.", + "Go back to the previous page.": "Go back to the previous page.", + "Coming Soon": "Coming Soon", + "wayToGetClickSendSMSToken": "You can get API Username and API Key from {0} .", + "Connection String": "Connection String", + "Query": "Query", + "settingsCertificateExpiry": "TLS Certificate Expiry", + "certificationExpiryDescription": "HTTPS Monitors trigger notification when TLS certificate expires in:", + "Setup Docker Host": "Setup Docker Host", + "Connection Type": "Connection Type", + "Docker Daemon": "Docker Daemon", + "deleteDockerHostMsg": "Are you sure want to delete this docker host for all monitors?", + "socket": "Socket", + "tcp": "TCP / HTTP", + "Docker Container": "Docker Container", + "Container Name / ID": "Container Name / ID", + "Docker Host": "Docker Host", + "Docker Hosts": "Docker Hosts", + "ntfy Topic": "ntfy Topic", + "Domain": "Domain", + "Workstation": "Workstation", + "disableCloudflaredNoAuthMsg": "You are in No Auth mode, a password is not required.", + "trustProxyDescription": "Trust 'X-Forwarded-*' headers. If you want to get the correct client IP and your Uptime Kuma is behind such as Nginx or Apache, you should enable this.", + "wayToGetLineNotifyToken": "You can get an access token from {0}", + "Examples": "Examples", + "Home Assistant URL": "Home Assistant URL", + "Long-Lived Access Token": "Long-Lived Access Token", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ", + "Notification Service": "Notification Service", + "default: notify all devices": "default: notify all devices", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.", + "Automations can optionally be triggered in Home Assistant:": "Automations can optionally be triggered in Home Assistant:", + "Trigger type:": "Trigger type:", + "Event type:": "Event type:", + "Event data:": "Event data:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Then choose an action, for example switch the scene to where an RGB light is red.", + "Frontend Version": "Frontend Version", + "Frontend Version do not match backend version!": "Frontend Version do not match backend version!", + "Base URL": "Base URL", + "goAlertInfo": "GoAlert is a An open source application for on-call scheduling, automated escalations and notifications (like SMS or voice calls). Automatically engage the right person, the right way, and at the right time! {0}", + "goAlertIntegrationKeyInfo": "Get generic API integration key for the service in this format \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" usually the value of token parameter of copied URL.", + "goAlert": "GoAlert", + "backupOutdatedWarning": "Deprecated: Since a lot of features added and this backup feature is a bit unmaintained, it cannot generate or restore a complete backup.", + "backupRecommend": "Please backup the volume or the data folder (./data/) directly instead.", + "Optional": "Optional", + "squadcast": "Squadcast", + "SendKey": "SendKey", + "SMSManager API Docs": "SMSManager API Docs ", + "Gateway Type": "Gateway Type", + "SMSManager": "SMSManager", + "You can divide numbers with": "You can divide numbers with", + "or": "or", + "recurringInterval": "Interval", + "Recurring": "Recurring", + "strategyManual": "Active/Inactive Manually", + "warningTimezone": "It is using the server's timezone", + "weekdayShortMon": "Mon", + "weekdayShortTue": "Tue", + "weekdayShortWed": "Wed", + "weekdayShortThu": "Thu", + "weekdayShortFri": "Fri", + "weekdayShortSat": "Sat", + "weekdayShortSun": "Sun", + "dayOfWeek": "Day of Week", + "dayOfMonth": "Day of Month", + "lastDay": "Last Day", + "lastDay1": "Last Day of Month", + "lastDay2": "2nd Last Day of Month", + "lastDay3": "3rd Last Day of Month", + "lastDay4": "4th Last Day of Month", + "No Maintenance": "No Maintenance", + "pauseMaintenanceMsg": "Are you sure want to pause?", + "maintenanceStatus-under-maintenance": "Under Maintenance", + "maintenanceStatus-inactive": "Inactive", + "maintenanceStatus-scheduled": "Scheduled", + "maintenanceStatus-ended": "Ended", + "maintenanceStatus-unknown": "Unknown", + "Display Timezone": "Display Timezone", + "Server Timezone": "Server Timezone", + "statusPageMaintenanceEndDate": "End", + "IconUrl": "Icon URL", + "Enable DNS Cache": "Enable DNS Cache", + "Enable": "Enable", + "Disable": "Disable", + "dnsCacheDescription": "It may be not working in some IPv6 environments, disable it if you encounter any issues.", + "Single Maintenance Window": "Single Maintenance Window", + "Maintenance Time Window of a Day": "Maintenance Time Window of a Day", + "Effective Date Range": "Effective Date Range", + "Schedule Maintenance": "Schedule Maintenance", + "Date and Time": "Date and Time", + "DateTime Range": "DateTime Range", + "Strategy": "Strategy", + "Free Mobile User Identifier": "Free Mobile User Identifier", + "Free Mobile API Key": "Free Mobile API Key", + "Enable TLS": "Enable TLS", + "Proto Service Name": "Proto Service Name", + "Proto Method": "Proto Method", + "Proto Content": "Proto Content", + "Economy": "Economy", + "Lowcost": "Lowcost", + "high": "high", + "General Monitor Type": "General Monitor Type", + "Passive Monitor Type": "Passive Monitor Type", + "Specific Monitor Type": "Specific Monitor Type" +} diff --git a/src/lang/es-ES.json b/src/lang/es-ES.json new file mode 100644 index 000000000..9a40ee8bc --- /dev/null +++ b/src/lang/es-ES.json @@ -0,0 +1,209 @@ +{ + "languageName": "Español", + "checkEverySecond": "Comprobar cada {0} segundos.", + "retriesDescription": "Número máximo de intentos antes de que el servicio se marque como CAÍDO y una notificación sea enviada.", + "ignoreTLSError": "Ignorar error TLS/SSL para sitios web HTTPS", + "upsideDownModeDescription": "Invertir el estado. Si el servicio es alcanzable, está CAÍDO.", + "maxRedirectDescription": "Número máximo de direcciones a seguir. Establecer a 0 para deshabilitar.", + "acceptedStatusCodesDescription": "Seleccionar los códigos de estado que se consideran como respuesta exitosa.", + "passwordNotMatchMsg": "La contraseña repetida no coincide.", + "notificationDescription": "Por favor asigna una notificación a el/los monitor(es) para hacerlos funcional(es).", + "keywordDescription": "Palabra clave en HTML plano o respuesta JSON, es sensible a mayúsculas", + "pauseDashboardHome": "Pausado", + "deleteMonitorMsg": "¿Seguro que quieres eliminar este monitor?", + "deleteNotificationMsg": "¿Seguro que quieres eliminar esta notificación para todos los monitores?", + "resolverserverDescription": "Cloudflare es el servidor por defecto, puedes cambiar el servidor de resolución en cualquier momento.", + "rrtypeDescription": "Selecciona el tipo de registro que quieres monitorizar", + "pauseMonitorMsg": "¿Seguro que quieres pausar?", + "Settings": "Ajustes", + "Dashboard": "Panel", + "New Update": "Nueva actualización", + "Language": "Idioma", + "Appearance": "Apariencia", + "Theme": "Tema", + "General": "General", + "Version": "Versión", + "Check Update On GitHub": "Comprobar actualizaciones en GitHub", + "List": "Lista", + "Add": "Añadir", + "Add New Monitor": "Añadir nuevo monitor", + "Quick Stats": "Estadísticas rápidas", + "Up": "Funcional", + "Down": "Caído", + "Pending": "Pendiente", + "Unknown": "Desconocido", + "Pause": "Pausar", + "Name": "Nombre", + "Status": "Estado", + "DateTime": "Fecha y hora", + "Message": "Mensaje", + "No important events": "No hay eventos importantes", + "Resume": "Reanudar", + "Edit": "Editar", + "Delete": "Eliminar", + "Current": "Actual", + "Uptime": "Tiempo activo", + "Cert Exp.": "Caducidad cert.", + "day": "día | días", + "-day": "-día", + "hour": "hora", + "-hour": "-hora", + "Response": "Respuesta", + "Ping": "Ping", + "Monitor Type": "Tipo de monitor", + "Keyword": "Palabra clave", + "Friendly Name": "Nombre sencillo", + "URL": "URL", + "Hostname": "Nombre del host", + "Port": "Puerto", + "Heartbeat Interval": "Intervalo de latido", + "Retries": "Reintentos", + "Advanced": "Avanzado", + "Upside Down Mode": "Modo invertido", + "Max. Redirects": "Redirecciones máximas", + "Accepted Status Codes": "Códigos de estado aceptados", + "Save": "Guardar", + "Notifications": "Notificaciones", + "Not available, please setup.": "No disponible, por favor configúralo.", + "Setup Notification": "Configurar notificación", + "Light": "Claro", + "Dark": "Oscuro", + "Auto": "Auto", + "Theme - Heartbeat Bar": "Tema - Barra de intervalo de latido", + "Normal": "Normal", + "Bottom": "Abajo", + "None": "Ninguno", + "Timezone": "Zona horaria", + "Search Engine Visibility": "Visibilidad motor de búsqueda", + "Allow indexing": "Permitir indexación", + "Discourage search engines from indexing site": "Disuadir a los motores de búsqueda de indexar el sitio", + "Change Password": "Cambiar contraseña", + "Current Password": "Contraseña actual", + "New Password": "Nueva contraseña", + "Repeat New Password": "Repetir nueva contraseña", + "Update Password": "Actualizar contraseña", + "Disable Auth": "Deshabilitar autenticación", + "Enable Auth": "Habilitar autenticación", + "disableauth.message1": "Seguro que deseas deshabilitar la autenticación?", + "disableauth.message2": "Es para quien implementa autenticación de terceros ante Uptime Kuma como por ejemplo Cloudflare Access.", + "Please use this option carefully!": "Por favor usar con cuidado.", + "Logout": "Cerrar sesión", + "Leave": "Salir", + "I understand, please disable": "Entiendo, por favor deshabilitar", + "Confirm": "Confirmar", + "Yes": "Sí", + "No": "No", + "Username": "Usuario", + "Password": "Contraseña", + "Remember me": "Recordarme", + "Login": "Acceso", + "No Monitors, please": "Sin monitores, por favor", + "add one": "añade uno", + "Notification Type": "Tipo de notificación", + "Email": "Email", + "Test": "Test", + "Certificate Info": "Información del certificado", + "Resolver Server": "Servidor de resolución", + "Resource Record Type": "Tipo de registro", + "Last Result": "Último resultado", + "Create your admin account": "Crea tu cuenta de administrador", + "Repeat Password": "Repetir contraseña", + "respTime": "Tiempo de resp. (ms)", + "notAvailableShort": "N/A", + "Create": "Crear", + "clearEventsMsg": "¿Estás seguro de que deseas eliminar todos los eventos de este monitor?", + "clearHeartbeatsMsg": "¿Estás seguro de que deseas eliminar todos los latidos de este monitor?", + "confirmClearStatisticsMsg": "¿Estás seguro de que deseas eliminar TODAS las estadísticas?", + "Clear Data": "Borrar datos", + "Events": "Eventos", + "Heartbeats": "Latidos", + "Auto Get": "Obtener automáticamente", + "enableDefaultNotificationDescription": "Para cada nuevo monitor, esta notificación estará habilitada de forma predeterminada. Aún puedes deshabilitar la notificación por separado para cada monitor.", + "Default enabled": "Habilitado por defecto", + "Also apply to existing monitors": "También se aplica a monitores existentes", + "Export": "Exportar", + "Import": "Importar", + "backupDescription": "Puedes hacer una copia de seguridad de todos los monitores y todas las notificaciones en un archivo JSON.", + "backupDescription2": "PD: el historial y los datos de eventos no están incluidos.", + "backupDescription3": "Los datos confidenciales, como los tokens de notificación, se incluyen en el archivo de exportación. Guárdalo con cuidado.", + "alertNoFile": "Selecciona un archivo para importar.", + "alertWrongFileType": "Selecciona un archivo JSON.", + "twoFAVerifyLabel": "Ingresa tu token para verificar que 2FA está funcionando", + "tokenValidSettingsMsg": "¡El token es válido! Ahora puedes guardar la configuración de 2FA.", + "confirmEnableTwoFAMsg": "¿Estás seguro de que quieres habilitar 2FA?", + "confirmDisableTwoFAMsg": "¿Estás seguro de que quieres desactivar 2FA?", + "Apply on all existing monitors": "Aplicar en todos los monitores existentes", + "Verify Token": "Verificar token", + "Setup 2FA": "Configurar 2FA", + "Enable 2FA": "Habilitar 2FA", + "Disable 2FA": "Desactivar 2FA", + "2FA Settings": "Ajustes 2FA", + "Two Factor Authentication": "Autenticación de dos factores", + "Active": "Activo", + "Inactive": "Inactivo", + "Token": "Token", + "Show URI": "Mostrar URI", + "Clear all statistics": "Borrar todas las estadísticas", + "retryCheckEverySecond": "Reintentar cada {0} segundo.", + "importHandleDescription": "Elige 'Omitir existente' si deseas omitir todos los monitores o notificaciones con el mismo nombre. 'Sobrescribir' eliminará todos los monitores y notificaciones existentes.", + "confirmImportMsg": "¿Estás seguro de importar la copia de seguridad? Asegúrate de haber seleccionado la opción de importación correcta.", + "Heartbeat Retry Interval": "Intervalo de reintento de latido", + "Import Backup": "Importar copia de seguridad", + "Export Backup": "Exportar copia de seguridad", + "Skip existing": "Omitir existente", + "Overwrite": "Sobrescribir", + "Options": "Opciones", + "Keep both": "Manténer ambos", + "Tags": "Etiquetas", + "Add New below or Select...": "Agregar nuevo a continuación o seleccionar...", + "Tag with this name already exist.": "Una etiqueta con este nombre ya existe.", + "Tag with this value already exist.": "Una etiqueta con este valor ya existe.", + "color": "color", + "value (optional)": "valor (opcional)", + "Gray": "Gris", + "Red": "Rojo", + "Orange": "Naranja", + "Green": "Verde", + "Blue": "Azul", + "Indigo": "Índigo", + "Purple": "Morado", + "Pink": "Rosa", + "Search...": "Buscar...", + "Avg. Ping": "Ping promedio", + "Avg. Response": "Respuesta promedio", + "Entry Page": "Página de entrada", + "statusPageNothing": "No hay nada aquí, agrega un grupo o un monitor.", + "No Services": "Sin servicio", + "All Systems Operational": "Todos los sistemas están operativos", + "Partially Degraded Service": "Servicio parcialmente degradado", + "Degraded Service": "Servicio degradado", + "Add Group": "Agregar grupo", + "Add a monitor": "Agregar un monitor", + "Edit Status Page": "Editar página de estado", + "Go to Dashboard": "Ir al panel de control", + "Status Page": "Página de estado", + "Status Pages": "Páginas de estado", + "telegram": "Telegram", + "webhook": "Webhook", + "smtp": "Email (SMTP)", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Admite más de 50 servicios de notificación)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "Monitor History": "Historial de monitor", + "clearDataOlderThan": "Mantener los datos del historial del monitor durante {0} días.", + "records": "registros", + "One record": "Un registro", + "steamApiKeyDescription": "Para monitorear un servidor de juegos de Steam, necesitas una clave Steam Web-API. Puedes registrar tu clave API aquí: " +} diff --git a/src/lang/et-EE.json b/src/lang/et-EE.json new file mode 100644 index 000000000..f7a23a6ca --- /dev/null +++ b/src/lang/et-EE.json @@ -0,0 +1,209 @@ +{ + "languageName": "eesti", + "retryCheckEverySecond": "Kontrolli {0} sekundilise vahega.", + "retriesDescription": "Mitu korda tuleb kontrollida, mille järel märkida 'maas' ja saata välja teavitus.", + "ignoreTLSError": "Eira TLS/SSL viga HTTPS veebisaitidel.", + "upsideDownModeDescription": "Käitle teenuse saadavust rikkena, teenuse kättesaamatust töötavaks.", + "maxRedirectDescription": "Suurim arv ümbersuunamisi, millele järgida. 0 ei luba ühtegi ", + "acceptedStatusCodesDescription": "Vali välja HTTP koodid, mida arvestada kõlblikuks.", + "passwordNotMatchMsg": "Salasõnad ei kattu.", + "notificationDescription": "Teavitusteenuse kasutamiseks seo see seirega.", + "keywordDescription": "Jälgi võtmesõna HTML või JSON vastustes. (tõstutundlik)", + "pauseDashboardHome": "Seisatud", + "deleteMonitorMsg": "Kas soovid eemaldada seire?", + "deleteNotificationMsg": "Kas soovid eemaldada selle teavitusteenuse kõikidelt seiretelt?", + "resolverserverDescription": "Cloudflare on vaikimisi pöördserver.", + "rrtypeDescription": "Vali kirje tüüp, mida soovid jälgida.", + "pauseMonitorMsg": "Kas soovid peatada seire?", + "Settings": "Seaded", + "Status Page": "Ülevaade", + "Status Pages": "Ülevaated", + "Dashboard": "Töölaud", + "New Update": "Uuem tarkvara versioon on saadaval.", + "Language": "Keel", + "Appearance": "Välimus", + "Theme": "Teema", + "General": "Üldine", + "Version": "Versioon", + "Check Update On GitHub": "Otsi uuendusi GitHub'ist", + "List": "Nimekiri", + "Add": "Lisa", + "Add New Monitor": "Lisa seire", + "Add a monitor": "Lisa seire", + "Quick Stats": "Ülevaade", + "Up": "Töökorras", + "Down": "Rikkis", + "Pending": "Määramisel", + "Unknown": "Kahtlast", + "Pause": "Seiska", + "Name": "Nimi", + "Status": "Olek", + "DateTime": "Kuupäev", + "Message": "Tulemus", + "No important events": "Märkimisväärsed juhtumid puuduvad.", + "Resume": "Taasta", + "Edit": "Muuda", + "Delete": "Eemalda", + "Current": "Hetkeseisund", + "Uptime": "Eluiga", + "Cert Exp.": "Sert. aegumine", + "day": "päev | päeva", + "-day": "-päev", + "hour": "tund", + "-hour": "-tund", + "Response": "Reaktsiooniaeg", + "Ping": "Ping", + "Monitor Type": "Seire tüüp", + "Keyword": "Võtmesõna", + "Friendly Name": "Sõbralik nimi", + "URL": "URL", + "Hostname": "Hostname", + "Port": "Port", + "Heartbeat Interval": "Tukse sagedus", + "Retries": "Korduskatsed", + "Advanced": "Rohkem", + "Upside Down Mode": "Tagurpidi seire", + "Max. Redirects": "Max. ümbersuunamine", + "Accepted Status Codes": "Kõlblikud HTTP koodid", + "Save": "Salvesta", + "Notifications": "Teavitused", + "Not available, please setup.": "Ühtegi teavitusteenust pole saadaval.", + "Setup Notification": "Lisa teavitusteenus", + "Light": "hele", + "Dark": "tume", + "Auto": "automaatne", + "Theme - Heartbeat Bar": "Teemasäte — tuksete riba", + "Normal": "tavaline", + "Bottom": "all", + "None": "puudub", + "Timezone": "Ajatsoon", + "Search Engine Visibility": "Otsimootorite ligipääs", + "Allow indexing": "Luba indekseerimine", + "Discourage search engines from indexing site": "Keela selle saidi indekseerimine otsimootorite poolt", + "Change Password": "Muuda parooli", + "Current Password": "praegune parool", + "New Password": "uus parool", + "Repeat New Password": "korda salasõna", + "Update Password": "Uuenda salasõna", + "Disable Auth": "Lülita autentimine välja", + "Enable Auth": "Lülita autentimine sisse", + "disableauth.message1": "Kas soovid lülitada autentimise välja?", + "disableauth.message2": "Kastuamiseks välise autentimispakkujaga, näiteks Cloudflare Access.", + "Please use this option carefully!": "Palun kasuta vastutustundlikult.", + "Logout": "Logi välja", + "Leave": "Lahku", + "I understand, please disable": "Olen tutvunud riskidega, lülita välja", + "Confirm": "Kinnita", + "Yes": "Jah", + "No": "Ei", + "Username": "kasutajanimi", + "Password": "parool", + "Remember me": "Mäleta mind", + "Login": "Logi sisse", + "No Monitors, please": "Seired puuduvad.", + "add one": "Lisa esimene", + "Notification Type": "Teavituse tüüp", + "Email": "e-posti aadress", + "Test": "Saada prooviteavitus", + "Certificate Info": "Sertifikaadi teave", + "Resolver Server": "Server, mis vastab DNS päringutele.", + "Resource Record Type": "DNS kirje tüüp", + "Last Result": "Viimane", + "Create your admin account": "Admininstraatori konto loomine", + "Repeat Password": "korda salasõna", + "respTime": "Reageerimisaeg (ms)", + "notAvailableShort": "N/A", + "enableDefaultNotificationDescription": "Kõik järgnevalt lisatud seired kasutavad seda teavitusteenuset. Seiretelt võib teavitusteenuse ühekaupa eemaldada.", + "clearEventsMsg": "Kas soovid seire kõik sündmused kustutada?", + "clearHeartbeatsMsg": "Kas soovid seire kõik tuksed kustutada?", + "confirmClearStatisticsMsg": "Kas soovid TERVE ajaloo kustutada?", + "Export": "Eksport", + "Import": "Import", + "Default enabled": "Kasuta vaikimisi", + "Apply on all existing monitors": "Kõik praegused seired hakkavad kasutama seda teavitusteenust", + "Create": "Loo konto", + "Clear Data": "Eemalda andmed", + "Events": "Sündmused", + "Heartbeats": "Tuksed", + "Auto Get": "Hangi automaatselt", + "backupDescription": "Varunda kõik seired ja teavitused JSON faili.", + "backupDescription2": "PS: Varukoopia EI sisalda seirete ajalugu ja sündmustikku.", + "backupDescription3": "Varukoopiad sisaldavad teavitusteenusete pääsuvõtmeid.", + "alertNoFile": "Palun lisa fail, mida importida.", + "alertWrongFileType": "Palun lisa JSON-formaadis fail.", + "twoFAVerifyLabel": "2FA kinnitamiseks sisesta pääsukood", + "tokenValidSettingsMsg": "Kood õige. Akna võib sulgeda.", + "confirmEnableTwoFAMsg": "Kas soovid 2FA sisse lülitada?", + "confirmDisableTwoFAMsg": "Kas soovid 2FA välja lülitada?", + "Verify Token": "Kontrolli", + "Setup 2FA": "Kaksikautentimise seadistamine", + "Enable 2FA": "Seadista 2FA", + "Disable 2FA": "Lülita 2FA välja", + "2FA Settings": "2FA seaded", + "Two Factor Authentication": "Kaksikautentimine", + "Active": "kasutusel", + "Inactive": "seadistamata", + "Token": "kaksikautentimise kood", + "Show URI": "Näita URId", + "Clear all statistics": "Tühjenda ajalugu", + "importHandleDescription": "'kombineeri' täiendab varukoopiast ja kirjutab üle samanimelised seireid ja teavitusteenused; 'lisa praegustele' jätab olemasolevad puutumata; 'asenda' kustutab ja asendab kõik seired ja teavitusteenused.", + "confirmImportMsg": "Käkerdistest hoidumiseks lae enne taastamist alla uus varukoopia. Kas soovid taastada üles laetud?", + "Heartbeat Retry Interval": "Korduskatsete intervall", + "Import Backup": "Varukoopia importimine", + "Export Backup": "Varukoopia eksportimine", + "Skip existing": "lisa praegustele", + "Overwrite": "asenda", + "Options": "Mestimisviis", + "Keep both": "kombineeri", + "Tags": "Sildid", + "Add New below or Select...": "Leia või lisa all uus…", + "Tag with this name already exist.": "Selle nimega silt on juba olemas.", + "Tag with this value already exist.": "Selle väärtusega silt on juba olemas.", + "color": "värvus", + "value (optional)": "väärtus (fakultatiivne)", + "Gray": "hall", + "Red": "punane", + "Orange": "oranž", + "Green": "roheline", + "Blue": "sinine", + "Indigo": "indigo", + "Purple": "lilla", + "Pink": "roosa", + "Search...": "Otsi…", + "Avg. Ping": "Keskmine ping", + "Avg. Response": "Keskmine reaktsiooniaeg", + "Entry Page": "Avaleht", + "statusPageNothing": "Kippu ega kõppu; siia saab lisada seireid või -gruppe.", + "No Services": "Teenused puuduvad.", + "All Systems Operational": "Kõik töökorras", + "Partially Degraded Service": "Teenuse töö osaliselt häiritud", + "Degraded Service": "Teenuse töö häiritud", + "Add Group": "Lisa grupp", + "Edit Status Page": "Muuda lehte", + "Go to Dashboard": "Töölauale", + "checkEverySecond": "Kontrolli peale tõrget {0} sekundilise vahega.", + "telegram": "Telegram", + "webhook": "Webhook", + "smtp": "elektronpost (SMTP)", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (vahendab üle 65 teavitusteenust)", + "pushbullet": "Pushbullet", + "line": "LINE", + "mattermost": "Mattermost", + "alerta": "Alerta", + "alertaApiEndpoint": "API otsik", + "alertaEnvironment": "Keskkond", + "alertaApiKey": "API võti", + "alertaAlertState": "Häireseisund", + "alertaRecoverState": "Taasta algolek" +} diff --git a/src/lang/eu.json b/src/lang/eu.json new file mode 100644 index 000000000..9d667a58f --- /dev/null +++ b/src/lang/eu.json @@ -0,0 +1,541 @@ +{ + "languageName": "Euskara", + "checkEverySecond": "Egiaztatu {0} segunduro", + "retryCheckEverySecond": "Errepikatu {0} segunduro", + "retriesDescription": "Zerbitzua erorita markatu eta jakinarazpena bidali aurretik egindako saiakera kopuru maximoa", + "ignoreTLSError": "Ezikusiarena egin TLS/SSL erroreei HTTPS webguneetan", + "upsideDownModeDescription": "Alderantzizkatu erortze egoera. Zerbitzua martxan badago, ERORITA markatuko du.", + "maxRedirectDescription": "Jarraitu beharreko berbideratze kopuru maximoa. Jarri 0 berbideratzeak desgaitzeko.", + "acceptedStatusCodesDescription": "Hautatu erantzun ona kontsideratzen diren egoera kodeak.", + "passwordNotMatchMsg": "Errepikatutako pasahitza ez dator bat.", + "notificationDescription": "Jakinarazpenak monitorizazio funtzio bati asignatu behar zaizkio.", + "keywordDescription": "Bilatu gako-hitza HTML edo JSON erantzunean. Bilaketan maiuskulak kontuan hartzen dira.", + "pauseDashboardHome": "Gelditu", + "deleteMonitorMsg": "Ziur zaude monitorizazio hau ezabatu nahi duzula?", + "deleteNotificationMsg": "Ziur zaude jakinarazpen hau monitorizazio guztientzat ezabatu nahi duzula?", + "dnsPortDescription": "DNS zerbitzari portua. Defektuz 53. Nahi duzunean aldatu dezakezu portua.", + "resolverserverDescription": "Cloudflare zerbitzari lehenetsia da. Edozein unetan alda dezakezu ebazteko zerbitzaria.", + "rrtypeDescription": "Hautatu kontrolatu nahi duzun RR mota", + "enableDefaultNotificationDescription": "Jakinarazpen hau monitore berrientzat gaituko da defektuz. Baina monitorizazio bakoitzarentzat jakinarazpena desgaitu dezakezu.", + "pauseMonitorMsg": "Ziur zaude gelditu egin nahi duzula?", + "clearEventsMsg": "Ziur zaude monitorizazio honen gertaera guztiak ezabatu nahi dituzula?", + "clearHeartbeatsMsg": "Ziur zaude monitorizazio honen pultsu guztiak ezabatu nahi dituzula?", + "confirmClearStatisticsMsg": "Ziur zaude estatistika GUZTIAK ezabatu nahi dituzula?", + "importHandleDescription": "Aukeratu 'existitzen bada', izen bereko monitore edo jakinarazpen bakoitza saltatu nahi baduzu. Lehendik dauden kontrol eta jakinarazpen guztiak ezabatuko ditu 'Gainidatzi' aukerak.", + "confirmImportMsg": "Ziur zaude segurtasun-kopia inportatu nahi duzula? Egiaztatu inportatzeko aukera zuzena hautatu duzula.", + "twoFAVerifyLabel": "Sartu zure tokena 2FA egiaztatzeko:", + "tokenValidSettingsMsg": "Tokenak balio du! Orain 2FA konfigurazioa gorde dezakezu.", + "confirmEnableTwoFAMsg": "Ziur zaude 2FA gaitu nahi duzula?", + "confirmDisableTwoFAMsg": "Ziur zaude 2FA desgaitu nahi duzula?", + "Settings": "Ezarpenak", + "Dashboard": "Arbela", + "New Update": "Eguneraketa berria", + "Language": "Hizkuntza", + "Appearance": "Itxura", + "Theme": "Gaia", + "General": "Orokorra", + "Primary Base URL": "Oinarrizkoa URL", + "Version": "Bertsioa", + "Check Update On GitHub": "Egiaztatu eguneraketa GitHuben", + "List": "Zerrenda", + "Add": "Gehitu", + "Add New Monitor": "Gehitu monitorizazio berria", + "Quick Stats": "Estatistika azkarrak", + "Up": "Erabilgarri", + "Down": "Erorita", + "Pending": "Zain", + "Unknown": "Ezezaguna", + "Pause": "Gelditu", + "Name": "Izena", + "Status": "Egoera", + "DateTime": "Data eta ordua", + "Message": "Mezua", + "No important events": "Gertaera garrantzitsurik ez", + "Resume": "Jarraitu", + "Edit": "Editatu", + "Delete": "Ezabatu", + "Current": "Unekoa", + "Uptime": "Martxan", + "Cert Exp.": "Ziurtagiri iraun.", + "day": "egun | egun", + "-day": "-egun", + "hour": "ordua", + "-hour": "-ordu", + "Response": "Erantzuna", + "Ping": "Ping", + "Monitor Type": "Monitorizazio mota", + "Keyword": "Gakohitza", + "Friendly Name": "Izen xumea", + "URL": "URLa", + "Hostname": "Ostalari izena", + "Port": "Portua", + "Heartbeat Interval": "Pultsu interbaloak", + "Retries": "Errepikapenak", + "Heartbeat Retry Interval": "Pultsu errepikatze interbaloak", + "Advanced": "Aurreratua", + "Upside Down Mode": "Alderantzizkako modua", + "Max. Redirects": "Berbideratze max.", + "Accepted Status Codes": "Onartutako egoera kodeak", + "Push URL": "Push URLa", + "needPushEvery": "URL hau {0} segunduro deitu beharko zenuke.", + "pushOptionalParams": "Hautazko parametroak: {0}", + "Save": "Gorde", + "Notifications": "Jakinarazpenak", + "Not available, please setup.": "Ez dago eskuragarri, ezarri mesedez.", + "Setup Notification": "Ezarri jakinarazpenak", + "Light": "Argia", + "Dark": "Iluna", + "Auto": "Auto", + "Theme - Heartbeat Bar": "Gaia - Pultsu barra", + "Normal": "Normala", + "Bottom": "Behean", + "None": "Bat ere ez", + "Timezone": "Timezone", + "Search Engine Visibility": "Bilatzaile ikurgarritasuna", + "Allow indexing": "Onartu indexatzea", + "Discourage search engines from indexing site": "Discourage search engines from indexing site", + "Change Password": "Aldatu pasahitza", + "Current Password": "Uneko pasahitza", + "New Password": "Pasahitz berria", + "Repeat New Password": "Errepikatu pasahitz berria", + "Update Password": "Eguneratu pasahitza", + "Disable Auth": "Desgaitu Auth", + "Enable Auth": "Gaitu Auth", + "disableauth.message1": "Ziur zaude autentifikazioa desgaitu nahi duzula?", + "disableauth.message2": "Egoera jakin batzuetarako diseinatuta dago, Uptime Kumaren aurrean hirugarrengo autentifikazio batzuek jartzeko (Cloudflare Access, Authelia edo beste autentifikazio-mekanismo batzuk).", + "Please use this option carefully!": "Mesedez, kontuz erabili aukera hau!", + "Logout": "Saioa amaitu", + "Leave": "Utzi", + "I understand, please disable": "Ulertzen dut, mesedez desgaitu", + "Confirm": "Baieztatu", + "Yes": "Bai", + "No": "Ez", + "Username": "Erabiltzailea", + "Password": "Pasahitza", + "Remember me": "Gogora nazazu", + "Login": "Saioa hasi", + "No Monitors, please": "Monitorizaziorik ez, mesedez", + "add one": "gehitu bat", + "Notification Type": "Jakinarazpen mota", + "Email": "Emaila", + "Test": "Testa", + "Certificate Info": "Ziurtagiri informazioa", + "Resolver Server": "Ebazpen-zerbitzaria", + "Resource Record Type": "Baliabideen erregistro mota", + "Last Result": "Azken emaitza", + "Create your admin account": "Sortu zure admin kontua", + "Repeat Password": "Errepikatu pasahitza", + "Import Backup": "segurtasun-kopia inportatu", + "Export Backup": "segurtasun-kopia esportatu", + "Export": "Esportatu", + "Import": "Inportatu", + "respTime": "Erantz. denbora (ms)", + "notAvailableShort": "N/A", + "Default enabled": "Lehenetsia gaituta", + "Apply on all existing monitors": "Aplikatu existitzen diren monitorizazio guztietan", + "Create": "Sortu", + "Clear Data": "Garbitu datuak", + "Events": "Gertaerak", + "Heartbeats": "Pultsuak", + "Auto Get": "Auto Get", + "backupDescription": "Monitore eta jakinarazpen guztien segurtasun-kopiak egin ditzakezu JSON fitxategi batean.", + "backupDescription2": "Oharra: ez dira historia eta gertaeren datuak sartzen.", + "backupDescription3": "Datu sentikorrak, hala nola jakinarazpen tokenak, esportazio-fitxategian sartzen dira; mesedez, gorde esportazioa modu seguruan.", + "alertNoFile": "Mesedez hautatu inportatzeko fitxategia.", + "alertWrongFileType": "Mesedez hautatu JSON fitxategia.", + "Clear all statistics": "Garbitu estatistika guztiak", + "Skip existing": "Saltatu existitzen bada", + "Overwrite": "Gainidatzi", + "Options": "Aukerak", + "Keep both": "Biak mantendu", + "Verify Token": "Egiaztatu Tokena", + "Setup 2FA": "Ezarri 2FA", + "Enable 2FA": "Gaitu 2FA", + "Disable 2FA": "Desgaitu 2FA", + "2FA Settings": "2FA ezarpenak", + "Two Factor Authentication": "Bi aldetako autentifikazioa (2FA)", + "Active": "Aktibo", + "Inactive": "Inaktibo", + "Token": "Tokena", + "Show URI": "Erakutsi URIa", + "Tags": "Etiketak", + "Add New below or Select...": "Gehitu beste bat behean edo hautatu...", + "Tag with this name already exist.": "Izen hau duen etiketa dagoeneko badago.", + "Tag with this value already exist.": "Balio hau duen etiketa dagoeneko badago.", + "color": "kolorea", + "value (optional)": "balioa (hautazkoa)", + "Gray": "Grisa", + "Red": "Gorria", + "Orange": "Naranja", + "Green": "Berdea", + "Blue": "Urdina", + "Indigo": "Indigo", + "Purple": "Morea", + "Pink": "Arrosa", + "Search...": "Bilatu...", + "Avg. Ping": "Batazbesteko Pinga", + "Avg. Response": "Batazbesteko erantzuna", + "Entry Page": "Sarrera orria", + "statusPageNothing": "Ezer ere ez hemen, mesedez gehitu taldea edo monitorizazioa.", + "No Services": "Zerbitzurik ez", + "All Systems Operational": "Sistema guztiak martxan", + "Partially Degraded Service": "Zerbitzu partzialki degradatua", + "Degraded Service": "Zerbitzu degradatua", + "Add Group": "Gehitu taldea", + "Add a monitor": "Gehitu monitorizazioa", + "Edit Status Page": "Editatu egoera orria", + "Go to Dashboard": "Joan arbelera", + "Status Page": "Egoera orria", + "Status Pages": "Egoera orriak", + "defaultNotificationName": "Nire {notification} Alerta ({number})", + "here": "Hemen", + "Required": "Beharrezkoa", + "telegram": "Telegram", + "ZohoCliq": "ZohoCliq", + "Bot Token": "Bot Tokena", + "wayToGetTelegramToken": "You can get a token from {0}.", + "Chat ID": "Txat IDa", + "supportTelegramChatID": "Support Direct Chat / Group / Channel's Chat ID", + "wayToGetTelegramChatID": "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", + "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", + "chatIDNotFound": "Chat ID is not found; please send a message to this bot first", + "webhook": "Webhook", + "Post URL": "Bidalketa URLa", + "Content Type": "Eduki mota", + "webhookJsonDesc": "{0} is good for any modern HTTP servers such as Express.js", + "webhookFormDataDesc": "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", + "smtp": "Emaila (SMTP)", + "secureOptionNone": "Bat ere ez / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Ignore TLS Error", + "From Email": "Email honetatik", + "emailCustomSubject": "Pertsonalizatutako gaia", + "To Email": "Email honetara", + "smtpCC": "CC", + "smtpBCC": "BCC", + "discord": "Discord", + "Discord Webhook URL": "Discord Webhook URL", + "wayToGetDiscordURL": "You can get this by going to Server Settings -> Integrations -> Create Webhook", + "Bot Display Name": "Bot Display Name", + "Prefix Custom Message": "Prefix Custom Message", + "Hello @everyone is...": "Hello {'@'}everyone is...", + "teams": "Microsoft Teams", + "Webhook URL": "Webhook URL", + "wayToGetTeamsURL": "You can learn how to create a webhook URL {0}.", + "wayToGetZohoCliqURL": "You can learn how to create a webhook URL {0}.", + "signal": "Signal", + "Number": "Zenbakia", + "Recipients": "Recipients", + "needSignalAPI": "You need to have a signal client with REST API.", + "wayToCheckSignalURL": "You can check this URL to view how to set one up:", + "signalImportant": "IMPORTANT: You cannot mix groups and numbers in recipients!", + "gotify": "Gotify", + "Application Token": "Aplikazio tokena", + "Server URL": "Zerbitzari URLa", + "Priority": "Lehentasuna", + "slack": "Slack", + "Icon Emoji": "Emoji ikonoa", + "Channel Name": "Kanalaren izena", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "More info about Webhooks on: {0}", + "aboutChannelName": "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", + "aboutKumaURL": "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", + "emojiCheatSheet": "Emoji cheat sheet: {0}", + "rocket.chat": "Rocket.Chat", + "pushover": "Pushover", + "pushy": "Pushy", + "PushByTechulus": "Push by Techulus", + "octopush": "Octopush", + "promosms": "PromoSMS", + "clicksendsms": "ClickSend SMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Support 50+ Notification services)", + "GoogleChat": "Google Chat (Google Workspace only)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "User Key": "Erabiltzaile gakoa", + "Device": "Gailua", + "Message Title": "Mezuaren izenburua", + "Notification Sound": "Jakinarazpen soinua", + "More info on:": "More info on: {0}", + "pushoverDesc1": "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", + "pushoverDesc2": "If you want to send notifications to different devices, fill out Device field.", + "SMS Type": "SMS mota", + "octopushTypePremium": "Premium (Fast - recommended for alerting)", + "octopushTypeLowCost": "Low Cost (Slow - sometimes blocked by operator)", + "checkPrice": "Check {0} prices:", + "apiCredentials": "API credentials", + "octopushLegacyHint": "Do you use the legacy version of Octopush (2011-2020) or the new version?", + "Check octopush prices": "Check octopush prices {0}.", + "octopushPhoneNumber": "Phone number (intl format, eg : +33612345678) ", + "octopushSMSSender": "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Device ID", + "Apprise URL": "Apprise URL", + "Example:": "Adibidez: {0}", + "Read more:": "Irakurri gehiago: {0}", + "Status:": "Egoera: {0}", + "Read more": "Irakurri gehiago", + "appriseInstalled": "Apprise instalatuta.", + "appriseNotInstalled": "Apprise ez dago instalatuta. {0}", + "Access Token": "Access Token", + "Channel access token": "Channel access token", + "Line Developers Console": "Line Developers Console", + "lineDevConsoleTo": "Line Developers Console - {0}", + "Basic Settings": "Oinarrizko ezarpenak", + "User ID": "Erabiltzaile ID", + "Messaging API": "Messaging API", + "wayToGetLineChannelToken": "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", + "Icon URL": "Ikono URL", + "aboutIconURL": "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", + "aboutMattermostChannelName": "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", + "promosmsTypeFlash": "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", + "promosmsTypeFull": "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", + "promosmsTypeSpeed": "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", + "promosmsPhoneNumber": "Phone number (for Polish recipient You can skip area codes)", + "promosmsSMSSender": "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + "matrixHomeserverURL": "Hasiera zerbitzari URL (with http(s):// and optionally port)", + "Internal Room Id": "Internal Room ID", + "matrixDesc1": "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", + "Method": "Metodoa", + "Body": "Gorputza", + "Headers": "Goiburuak", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "The request headers are not valid JSON: ", + "BodyInvalidFormat": "The request body is not valid JSON: ", + "Monitor History": "Monitorizazio Historia", + "clearDataOlderThan": "Keep monitor history data for {0} days.", + "PasswordsDoNotMatch": "Pasahitzak ez datoz bat.", + "records": "records", + "One record": "One record", + "steamApiKeyDescription": "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", + "Current User": "Uneko erabiltzailea", + "topic": "Topic", + "topicExplanation": "MQTT topic to monitor", + "successMessage": "Arrakasta mezua", + "successMessageExplanation": "MQTT message that will be considered as success", + "recent": "Duela gutxikoa", + "Done": "Egina", + "Info": "Info", + "Security": "Segurtasuna", + "Steam API Key": "Steam API Giltza", + "Shrink Database": "Shrink Datubasea", + "Pick a RR-Type...": "Pick a RR-Type...", + "Pick Accepted Status Codes...": "Hautatu onartutako egoera kodeak...", + "Default": "Lehenetsia", + "HTTP Options": "HTTP Aukerak", + "Create Incident": "Sortu inzidentzia", + "Title": "Titulua", + "Content": "Edukia", + "Style": "Estiloa", + "info": "info", + "warning": "kontuz", + "danger": "arriskua", + "error": "errorea", + "critical": "kritikoa", + "primary": "oinarrizkoa", + "light": "argia", + "dark": "iluna", + "Post": "Post", + "Please input title and content": "Mesedez sartu titulua eta edukia", + "Created": "Sortuta", + "Last Updated": "Azken eguneratzea", + "Unpin": "Unpin", + "Switch to Light Theme": "Aldatu gai argira", + "Switch to Dark Theme": "Aldatu gai ilunera", + "Show Tags": "Erakutsi etiketak", + "Hide Tags": "Ezkutatu etiketak", + "Description": "Deskribapena", + "No monitors available.": "Monitorizaziorik eskuragarri ez.", + "Add one": "Gehitu bat", + "No Monitors": "Monitorizaziorik ez", + "Untitled Group": "Titulurik gabeko taldea", + "Services": "Zerbitzuak", + "Discard": "Baztertu", + "Cancel": "Ezeztatu", + "Powered by": "Honekin egina:", + "shrinkDatabaseDescription": "Trigger database VACUUM for SQLite. If your database is created after 1.10.0, AUTO_VACUUM is already enabled and this action is not needed.", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API erabiltzailea (webapi_ aurre-hizkia barne)", + "serwersmsAPIPassword": "API pasahitza", + "serwersmsPhoneNumber": "Telefono zenbakia", + "serwersmsSenderName": "SMS bidaltzaile izena (registered via customer portal)", + "stackfield": "Stackfield", + "Customize": "Pertsonalizatu", + "Custom Footer": "Oin pertsonalizatua", + "Custom CSS": "CSS pertsonalizatua", + "smtpDkimSettings": "DKIM ezarpenak", + "smtpDkimDesc": "Please refer to the Nodemailer DKIM {0} for usage.", + "documentation": "dokumentazioa", + "smtpDkimDomain": "Domeinu izena", + "smtpDkimKeySelector": "Gako hautatzailea", + "smtpDkimPrivateKey": "Gako pribatua", + "smtpDkimHashAlgo": "Hash algoritmoa (hautazkoa)", + "smtpDkimheaderFieldNames": "Header Keys to sign (Optional)", + "smtpDkimskipFields": "Header Keys not to sign (Optional)", + "wayToGetPagerDutyKey": "You can get this by going to Service -> Service Directory -> (Select a service) -> Integrations -> Add integration. Here you can search for \"Events API V2\". More info {0}", + "Integration Key": "Integration Key", + "Integration URL": "Integrazio URLa", + "Auto resolve or acknowledged": "Auto resolve or acknowledged", + "do nothing": "ez egin ezer", + "auto acknowledged": "auto acknowledged", + "auto resolve": "auto resolve", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API Endpoint", + "alertaEnvironment": "Ingurunea", + "alertaApiKey": "API Key", + "alertaAlertState": "Alerta egoera", + "alertaRecoverState": "Berreskuratze egoera", + "deleteStatusPageMsg": "Ziur zaude egoera orri hau ezabatu nahi duzula?", + "Proxies": "Proxiak", + "default": "Lehenetsia", + "enabled": "Gaituta", + "setAsDefault": "Ezarri lehenetsitzat", + "deleteProxyMsg": "Are you sure want to delete this proxy for all monitors?", + "proxyDescription": "Proxies must be assigned to a monitor to function.", + "enableProxyDescription": "This proxy will not effect on monitor requests until it is activated. You can control temporarily disable the proxy from all monitors by activation status.", + "setAsDefaultProxyDescription": "This proxy will be enabled by default for new monitors. You can still disable the proxy separately for each monitor.", + "Certificate Chain": "Certificate Chain", + "Valid": "Baliozkoa", + "Invalid": "Baliogabea", + "AccessKeyId": "AccessKey ID", + "SecretAccessKey": "AccessKey Secret", + "PhoneNumbers": "TelefonoZenbakiak", + "TemplateCode": "TemplateCode", + "SignName": "SignName", + "Sms template must contain parameters: ": "Sms txantiloiak parametroak eduki behar ditu: ", + "Bark Endpoint": "Bark Endpoint", + "WebHookUrl": "WebHookUrl", + "SecretKey": "SecretKey", + "For safety, must use secret key": "For safety, must use secret key", + "Device Token": "Gailu tokena", + "Platform": "Plataforma", + "iOS": "iOS", + "Android": "Android", + "Huawei": "Huawei", + "High": "Altua", + "Retry": "Errepikatu", + "Topic": "Gaia", + "WeCom Bot Key": "WeCom Bot Key", + "Setup Proxy": "Ezarri Proxya", + "Proxy Protocol": "Proxy protokoloa", + "Proxy Server": "Proxy zerbitzaria", + "Proxy server has authentication": "Proxy zerbitzariak autentifikazioa dauka", + "User": "Erabiltzailea", + "Installed": "Instalatuta", + "Not installed": "Instalatu gabe", + "Running": "Martxan", + "Not running": "Ez martxan", + "Remove Token": "Ezabatu Tokena", + "Start": "Hasi", + "Stop": "Gelditu", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "Gehitu egoera orri berria", + "Slug": "Sluga", + "Accept characters:": "Onartu karaktereak:", + "startOrEndWithOnly": "Start or end with {0} only", + "No consecutive dashes": "No consecutive dashes", + "Next": "Hurrengoa", + "The slug is already taken. Please choose another slug.": "Sluga dagoeneko hartuta dago. Mesedez beste bat hautatu.", + "No Proxy": "Proxyrik ez", + "Authentication": "Authentication", + "HTTP Basic Auth": "HTTP oinarrizko Auth", + "New Status Page": "Egoera orri berria", + "Page Not Found": "Orria ez da aurkitu", + "Reverse Proxy": "Alderantzizkako Proxya", + "Backup": "Backup", + "About": "Honi buruz", + "wayToGetCloudflaredURL": "(Download cloudflared from {0})", + "cloudflareWebsite": "Cloudflare webgunea", + "Message:": "Mezua:", + "Don't know how to get the token? Please read the guide:": "Don't know how to get the token? Please read the guide:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.", + "Other Software": "Beste softwarea", + "For example: nginx, Apache and Traefik.": "Adibidez: nginx, Apache and Traefik.", + "Please read": "Mesedez irakurri", + "Subject:": "Gaia:", + "Valid To:": "Balio-epea:", + "Days Remaining:": "Egun faltan:", + "Issuer:": "Issuer:", + "Fingerprint:": "Hatzmarka:", + "No status pages": "Egoera orririk ez", + "Domain Name Expiry Notification": "Domeinu izen iraungitze jakinarazpena", + "Proxy": "Proxya", + "Date Created": "Data sortuta", + "onebotHttpAddress": "OneBot HTTP helbidea", + "onebotMessageType": "OneBot mezu mota", + "onebotGroupMessage": "Taldea", + "onebotPrivateMessage": "Pribatua", + "onebotUserOrGroupId": "Talde/Erabiltzaile IDa", + "onebotSafetyTips": "For safety, must set access token", + "PushDeer Key": "PushDeer Key", + "Footer Text": "Oineko testua", + "Show Powered By": "Erakutsi Honekin egina:", + "Domain Names": "Domeinu izenak", + "signedInDisp": "Signed in as {0}", + "signedInDispDisabled": "Auth desgaituta.", + "Certificate Expiry Notification": "Zertifikatu iraungitze jakinarazpena", + "API Username": "API Erabiltzailea", + "API Key": "API Gakoa", + "Recipient Number": "Recipient Number", + "From Name/Number": "From Name/Number", + "Leave blank to use a shared sender number.": "Leave blank to use a shared sender number.", + "Octopush API Version": "Octopush API Version", + "Legacy Octopush-DM": "Legacy Octopush-DM", + "endpoint": "endpoint", + "octopushAPIKey": "\"API key\" from HTTP API credentials in control panel", + "octopushLogin": "\"Login\" from HTTP API credentials in control panel", + "promosmsLogin": "API Saio haste izena", + "promosmsPassword": "API Pasahitza", + "pushoversounds pushover": "Pushover (defektuz)", + "pushoversounds bike": "Bizikleta", + "pushoversounds bugle": "Bugle", + "pushoversounds cashregister": "Cash Register", + "pushoversounds classical": "Klasikoa", + "pushoversounds cosmic": "Kosmikoa", + "pushoversounds falling": "Erortzen", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Incoming", + "pushoversounds intermission": "Intermission", + "pushoversounds magic": "Magia", + "pushoversounds mechanical": "Mekanikoa", + "pushoversounds pianobar": "Piano Bar", + "pushoversounds siren": "Sirena", + "pushoversounds spacealarm": "Espazio Alarma", + "pushoversounds tugboat": "Tug Boat", + "pushoversounds alien": "Alien Alarm (long)", + "pushoversounds climb": "Climb (long)", + "pushoversounds persistent": "Persistent (long)", + "pushoversounds echo": "Pushover Echo (long)", + "pushoversounds updown": "Up Down (long)", + "pushoversounds vibrate": "Bibrazioa soilik", + "pushoversounds none": "Bat ere ez (isilik)", + "pushyAPIKey": "Secret API giltza", + "pushyToken": "Gailu tokena", + "Show update if available": "Erakutsi eguneratzea eskuragarri badago", + "Also check beta release": "Beta bertsioak ere egiaztatu", + "Using a Reverse Proxy?": "Proxy alderantzizkako zerbitzaria erabiltzen?", + "Check how to config it for WebSocket": "Check how to config it for WebSocket", + "Steam Game Server": "Steam joko zerbitzaria", + "Most likely causes:": "Arrazoi probableenak:", + "The resource is no longer available.": "Baliabidea ez dago erabilgarri.", + "There might be a typing error in the address.": "Idazketa-akats bat egon daiteke helbidean.", + "What you can try:": "Probatu dezakezuna:", + "Retype the address.": "Berridatzi helbidea.", + "Go back to the previous page.": "Itzuli aurreko orrialdera", + "Coming Soon": "Laster", + "wayToGetClickSendSMSToken": "API erabiltzailea and API giltza hemendik lortu ditzakezu: {0} .", + "Connection String": "Konexio katea", + "Query": "Kontsulta", + "settingsCertificateExpiry": "TLS irungitze zertifikatua", + "certificationExpiryDescription": "HTTPS Monitorizazio jakinarazpena martxan jarri TLS zertifikatua iraungitzeko hau falta denean:", + "ntfy Topic": "ntfy Topic", + "Domain": "Domeinua", + "Workstation": "Lan gunea", + "disableCloudflaredNoAuthMsg": "Ez Auth moduan zaude, pasahitza ez da beharrezkoa." +} diff --git a/src/lang/fa.json b/src/lang/fa.json new file mode 100644 index 000000000..fc099bc43 --- /dev/null +++ b/src/lang/fa.json @@ -0,0 +1,208 @@ +{ + "languageName": "Farsi", + "checkEverySecond": "بررسی هر {0} ثانیه.", + "retryCheckEverySecond": "تکرار مجدد هر {0} ثانیه.", + "retriesDescription": "حداکثر تعداد تکرار پیش از علامت گذاری وب‌سایت بعنوان خارج از دسترس و ارسال اطلاع‌رسانی.", + "ignoreTLSError": "بی‌خیال ارور TLS/SSL برای سایت‌های HTTPS", + "upsideDownModeDescription": "نتیجه وضعیت را برعکس کن، مثلا اگر سرویس در دسترس بود فرض کن که سرویس پایین است!", + "maxRedirectDescription": "حداکثر تعداد ریدایرکتی که سرویس پشتیبانی کند. برای اینکه ری‌دایرکت‌ها پشتیبانی نشوند، عدد 0 را وارد کنید.", + "acceptedStatusCodesDescription": "لطفا HTTP Status Code هایی که میخواهید به عنوان پاسخ موفقیت آمیز در نظر گرفته شود را انتخاب کنید.", + "passwordNotMatchMsg": "تکرار رمز عبور مطابقت ندارد!", + "notificationDescription": "برای اینکه سرویس اطلاع‌رسانی کار کند، آنرا به یکی از مانیتور‌ها متصل کنید.", + "keywordDescription": "در نتیجه درخواست (اهمیتی ندارد پاسخ JSON است یا HTML) بدنبال این کلمه بگرد (حساس به کوچک/بزرگ بودن حروف).", + "pauseDashboardHome": "متوقف شده", + "deleteMonitorMsg": "آیا از حذف این مانیتور مطمئن هستید؟", + "deleteNotificationMsg": "آیا مطمئن هستید که میخواهید این سرویس اطلاع‌رسانی را برای تمامی مانیتورها حذف کنید؟", + "resolverserverDescription": "سرویس CloudFlare به عنوان سرور پیش‌فرض استفاده می‌شود، شما میتوانید آنرا به هر سرور دیگری بعدا تغییر دهید.", + "rrtypeDescription": "لطفا نوع Resource Record را انتخاب کنید.", + "pauseMonitorMsg": "آیا مطمئن هستید که میخواهید این مانیتور را متوقف کنید ؟", + "enableDefaultNotificationDescription": "برای هر مانیتور جدید، این سرویس اطلاع‌رسانی به صورت پیش‌فرض فعال خواهد شد. البته که شما میتوانید به صورت دستی آنرا برای هر مانیتور به صورت جداگانه غیر فعال کنید.", + "clearEventsMsg": "آیا از اینکه تمامی تاریخچه رویداد‌های این مانیتور حذف شود مطمئن هستید؟", + "clearHeartbeatsMsg": "آیا از اینکه تاریخچه تمامی Heartbeat های این مانیتور حذف شود مطمئن هستید؟ ", + "confirmClearStatisticsMsg": "آیا از حذف تمامی آمار و ارقام مطمئن هستید؟", + "importHandleDescription": " اگر که میخواهید بیخیال مانیتورها و یا سرویس‌های اطلاع‌رسانی که با نام مشابه از قبل موجود هستند شوید، گزینه 'بی‌خیال موارد ..' را انتخاب کنید. توجه کنید که گزینه 'بازنویسی' تمامی موارد موجود با نام مشابه را از بین خواهد برد.", + "confirmImportMsg": "آیا از بازگردانی بک آپ مطمئن هستید؟ لطفا از اینکه نوع بازگردانی درستی را انتخاب کرده‌اید اطمینان حاصل کنید!", + "twoFAVerifyLabel": "لطفا جهت اطمینان از عملکرد احراز هویت دو مرحله‌ای توکن خود را وارد کنید!", + "tokenValidSettingsMsg": "توکن شما معتبر است، هم اکنون میتوانید احراز هویت دو مرحله‌ای را فعال کنید!", + "confirmEnableTwoFAMsg": " آیا از فعال سازی احراز هویت دو مرحله‌ای مطمئن هستید؟", + "confirmDisableTwoFAMsg": "آیا از غیرفعال سازی احراز هویت دومرحله‌ای مطمئن هستید؟", + "Settings": "تنظیمات", + "Dashboard": "پیشخوان", + "New Update": "بروزرسانی جدید!", + "Language": "زبان", + "Appearance": "ظاهر", + "Theme": "پوسته", + "General": "عمومی", + "Version": "نسخه", + "Check Update On GitHub": "بررسی بروزرسانی بر روی گیت‌هاب", + "List": "لیست", + "Add": "اضافه", + "Add New Monitor": "اضافه کردن مانیتور جدید", + "Quick Stats": "خلاصه وضعیت", + "Up": "فعال", + "Down": "غیرفعال", + "Pending": "در انتظار تایید", + "Unknown": "نامشخص", + "Pause": "توقف", + "Name": "نام", + "Status": "وضعیت", + "DateTime": "تاریخ و زمان", + "Message": "پیام", + "No important events": "رخداد جدیدی موجود نیست.", + "Resume": "ادامه", + "Edit": "ویرایش", + "Delete": "حذف", + "Current": "فعلی", + "Uptime": "آپتایم", + "Cert Exp.": "تاریخ انقضای SSL", + "day": "روز", + "-day": "-روز", + "hour": "ساعت", + "-hour": "-ساعت", + "Response": "پاسخ", + "Ping": "Ping", + "Monitor Type": "نوع مانیتور", + "Keyword": "کلمه کلیدی", + "Friendly Name": "عنوان", + "URL": "آدرس (URL)", + "Hostname": "نام میزبان (Hostname)", + "Port": "پورت", + "Heartbeat Interval": "فاصله هر Heartbeat", + "Retries": "تلاش مجدد", + "Heartbeat Retry Interval": "فاصله تلاش مجدد برایHeartbeat", + "Advanced": "پیشرفته", + "Upside Down Mode": "حالت بر عکس", + "Max. Redirects": "حداکثر تعداد ری‌دایرکت", + "Accepted Status Codes": "وضعیت‌های (Status Code) های قابل قبول", + "Save": "ذخیره", + "Notifications": "اطلاع‌رسانی‌ها", + "Not available, please setup.": "هیچ موردی موجود نیست، اولین مورد را راه اندازی کنید!", + "Setup Notification": "راه اندازی اطلاع‌رسانی‌", + "Light": "روشن", + "Dark": "تاریک", + "Auto": "اتوماتیک", + "Theme - Heartbeat Bar": "ظاهر نوار Heartbeat", + "Normal": "معمولی", + "Bottom": "پایین", + "None": "هیچ کدام", + "Timezone": "موقعیت زمانی", + "Search Engine Visibility": "قابلیت دسترسی برای موتورهای جستجو", + "Allow indexing": "اجازه ایندکس شدن را بده.", + "Discourage search engines from indexing site": "به موتورهای جستجو اجازه ایندکس کردن این سامانه را نده.", + "Change Password": "تغییر رمزعبور", + "Current Password": "رمزعبور فعلی", + "New Password": "رمزعبور جدید", + "Repeat New Password": "تکرار رمزعبور جدید", + "Update Password": "بروز رسانی رمز عبور", + "Disable Auth": "غیر فعال سازی تایید هویت", + "Enable Auth": "فعال سازی تایید هویت", + "disableauth.message1": "آیا مطمئن هستید که میخواهید احراز هویت را غیر فعال کنید?", + "disableauth.message2": "این ویژگی برای کسانی است که لایه امنیتی شخص ثالث دیگر بر روی این آدرس فعال کرده‌اند، مانند Cloudflare Access.", + "Please use this option carefully!": "لطفا از این امکان با دقت استفاده کنید.", + "Logout": "خروج", + "Leave": "منصرف شدم", + "I understand, please disable": "متوجه هستم، لطفا غیرفعال کنید!", + "Confirm": "تایید", + "Yes": "بلی", + "No": "خیر", + "Username": "نام کاربری", + "Password": "کلمه عبور", + "Remember me": "مراب هب خاطر بسپار", + "Login": "ورود", + "No Monitors, please": "هیچ مانیتوری موجود نیست، لطفا", + "add one": "یک مورد اضافه کنید", + "Notification Type": "نوع اطلاع‌رسانی", + "Email": "ایمیل", + "Test": "تست", + "Certificate Info": "اطلاعات سرتیفیکت", + "Resolver Server": "سرور Resolver", + "Resource Record Type": "نوع رکورد (Resource Record Type)", + "Last Result": "آخرین نتیجه", + "Create your admin account": "ایجاد حساب کاربری مدیر", + "Repeat Password": "تکرار رمز عبور", + "Import Backup": "بازگردانی فایل پشتیبان", + "Export Backup": "ذخیره فایل پشتیبان", + "Export": "استخراج اطلاعات", + "Import": "ورود اطلاعات", + "respTime": "زمان پاسخگویی (میلی‌ثانیه)", + "notAvailableShort": "ناموجود", + "Default enabled": "به صورت پیش‌فرض فعال باشد.", + "Apply on all existing monitors": "بر روی تمامی مانیتور‌های فعلی اعمال شود.", + "Create": "ایجاد", + "Clear Data": "پاکسازی داده‌ها", + "Events": "رخداد‌ها", + "Heartbeats": "Heartbeats", + "Auto Get": "Auto Get", + "backupDescription": "شما میتوانید تمامی مانیتورها و تنظیمات اطلاع‌رسانی‌ها را در قالب یه فایل JSON دریافت کنید.", + "backupDescription2": "البته تاریخچه رخدادها دراین فایل قرار نخواهند داشت.", + "backupDescription3": "توجه داشته باشید که تمامی اطلاعات حساس شما مانند توکن‌ها نیز در این فایل وجود خواهد داشت ، پس از این فایل به خوبی مراقبت کنید.", + "alertNoFile": "لطفا یک فایل برای «ورود اطلاعات» انتخاب کنید..", + "alertWrongFileType": "یک فایل JSON انتخاب کنید.", + "Clear all statistics": "پاکسازی تمامی آمار و ارقام", + "Skip existing": "بی‌خیال مواردی که از قبل موجود است", + "Overwrite": "بازنویسی", + "Options": "تنظیمات", + "Keep both": "هر دو را نگه‌ دار", + "Verify Token": "تایید توکن", + "Setup 2FA": "تنظیمات احراز دو مرحله‌ای", + "Enable 2FA": "فعال سازی احراز 2 مرحله‌ای", + "Disable 2FA": "غیر فعال کردن احراز 2 مرحله‌ای", + "2FA Settings": "تنظیمات احراز 2 مرحله‌ای", + "Two Factor Authentication": "احراز هویت دومرحله‌ای", + "Active": "فعال", + "Inactive": "غیرفعال", + "Token": "توکن", + "Show URI": "نمایش آدرس (URI) ", + "Tags": "برچسب‌ها", + "Add New below or Select...": "یک مورد جدید اضافه کنید و یا از لیست انتخاب کنید...", + "Tag with this name already exist.": "یک برچسب با این «نام» از قبل وجود دارد", + "Tag with this value already exist.": "یک برچسب با این «مقدار» از قبل وجود دارد.", + "color": "رنگ", + "value (optional)": "مقدار (اختیاری)", + "Gray": "خاکستری", + "Red": "قرمز", + "Orange": "نارنجی", + "Green": "سبز", + "Blue": "آبی", + "Indigo": "نیلی", + "Purple": "بنفش", + "Pink": "صورتی", + "Search...": "جستجو...", + "Avg. Ping": "متوسط پینگ", + "Avg. Response": "متوسط زمان پاسخ", + "Entry Page": "صفحه ورودی", + "statusPageNothing": "چیزی اینجا نیست، لطفا یک گروه و یا یک مانیتور اضافه کنید!", + "No Services": "هیچ سرویسی موجود نیست", + "All Systems Operational": "تمامی سیستم‌ها عملیاتی هستند!", + "Partially Degraded Service": "افت نسبی کیفیت سرویس", + "Degraded Service": "افت کامل کیفیت سرویس", + "Add Group": "اضافه کردن گروه", + "Add a monitor": "اضافه کردن مانیتور", + "Edit Status Page": "ویرایش صفحه وضعیت", + "Status Page": "صفحه وضعیت", + "Status Pages": "صفحه وضعیت", + "Go to Dashboard": "رفتن به پیشخوان", + "Uptime Kuma": "آپتایم کوما", + "records": "مورد", + "One record": "یک مورد", + "Info": "اطلاعات", + "Powered by": "نیرو گرفته از", + "telegram": "Telegram", + "webhook": "Webhook", + "smtp": "Email (SMTP)", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Support 50+ Notification services)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost" +} diff --git a/src/lang/fr-FR.json b/src/lang/fr-FR.json new file mode 100644 index 000000000..9da84bda6 --- /dev/null +++ b/src/lang/fr-FR.json @@ -0,0 +1,672 @@ +{ + "languageName": "Français", + "checkEverySecond": "Vérifier toutes les {0} secondes", + "retryCheckEverySecond": "Réessayer toutes les {0} secondes", + "resendEveryXTimes": "Renvoyez toutes les {0} fois", + "resendDisabled": "Renvoi désactivé", + "retriesDescription": "Nombre d'essais avant que le service ne soit déclaré hors ligne et qu'une notification soit envoyée.", + "ignoreTLSError": "Ignorer les erreurs liées au certificat SSL/TLS", + "upsideDownModeDescription": "Si le service est en ligne, il sera alors noté hors ligne et vice-versa.", + "maxRedirectDescription": "Nombre maximal de redirections avant que le service ne soit marqué comme hors ligne.", + "enableGRPCTls": "Autoriser l'envoi d'une requête gRPC avec une connexion TLS", + "grpcMethodDescription": "Le nom de la méthode est converti au format CamelCase tel que sayHello, check, etc.", + "acceptedStatusCodesDescription": "Codes HTTP qui considèrent le service comme étant disponible.", + "Maintenance": "Maintenance", + "statusMaintenance": "Maintenance", + "Schedule maintenance": "Planifier la maintenance", + "Affected Monitors": "Sondes concernées", + "Pick Affected Monitors...": "Sélectionner les sondes concernées...", + "Start of maintenance": "Début de la maintenance", + "All Status Pages": "Toutes les pages d'état", + "Select status pages...": "Sélectionner les pages d'état...", + "recurringIntervalMessage": "Exécuter une fois par jour | Exécuter une fois tous les {0} jours", + "affectedMonitorsDescription": "Sélectionnez les sondes concernées par la maintenance en cours", + "affectedStatusPages": "Afficher ce message de maintenance sur les pages d'état sélectionnées", + "atLeastOneMonitor": "Sélectionnez au moins une sonde concernée", + "passwordNotMatchMsg": "Les mots de passe ne correspondent pas", + "notificationDescription": "Une fois ajoutée, vous devez l'activer manuellement dans les paramètres de vos hôtes.", + "keywordDescription": "Le mot clé sera recherché dans la réponse HTML/JSON reçue du site internet.", + "pauseDashboardHome": "En pause", + "deleteMonitorMsg": "Êtes-vous sûr de vouloir supprimer cette sonde ?", + "deleteMaintenanceMsg": "Voulez-vous vraiment supprimer cette maintenance ?", + "deleteNotificationMsg": "Êtes-vous sûr de vouloir supprimer ce type de notifications ? Une fois désactivée, les services qui l'utilisent ne pourront plus envoyer de notifications.", + "dnsPortDescription": "Port du serveur DNS. La valeur par défaut est 53. Vous pouvez modifier le port à tout moment.", + "resolverserverDescription": "Le DNS de Cloudflare est utilisé par défaut, mais vous pouvez le changer si vous le souhaitez.", + "rrtypeDescription": "Veuillez sélectionner un type d'enregistrement DNS", + "pauseMonitorMsg": "Êtes-vous sûr de vouloir mettre en pause cette sonde ?", + "enableDefaultNotificationDescription": "Pour chaque nouvelle sonde, cette notification sera activée par défaut. Vous pouvez toujours désactiver la notification séparément pour chaque sonde.", + "clearEventsMsg": "Êtes-vous sûr de vouloir supprimer tous les événements pour cette sonde ?", + "clearHeartbeatsMsg": "Êtes-vous sûr de vouloir supprimer toutes les vérifications pour cette sonde ?", + "confirmClearStatisticsMsg": "Êtes-vous sûr de vouloir supprimer toutes les statistiques ?", + "importHandleDescription": "Choisissez « Ignorer l'existant » si vous voulez ignorer chaque sonde ou notification portant le même nom. L'option « Écraser » supprime toutes les sondes et notifications existantes.", + "confirmImportMsg": "Êtes-vous sûr de vouloir importer la sauvegarde ? Veuillez vous assurer que vous avez sélectionné la bonne option d'importation.", + "twoFAVerifyLabel": "Veuillez saisir votre jeton pour vérifier que le système 2FA fonctionne.", + "tokenValidSettingsMsg": "Le jeton est valide. Vous pouvez maintenant sauvegarder les paramètres de double authentification (2FA).", + "confirmEnableTwoFAMsg": "Êtes-vous sûr de vouloir activer la double authentification (2FA) ?", + "confirmDisableTwoFAMsg": "Êtes-vous sûr de vouloir désactiver la double authentification (2FA) ?", + "Settings": "Paramètres", + "Dashboard": "Tableau de bord", + "New Update": "Mise à jour disponible", + "Language": "Langue", + "Appearance": "Apparence", + "Theme": "Thème", + "General": "Général", + "Primary Base URL": "URL principale", + "Version": "Version", + "Check Update On GitHub": "Consulter les mises à jour sur GitHub", + "List": "Lister", + "Add": "Ajouter", + "Add New Monitor": "Ajouter une nouvelle sonde", + "Quick Stats": "Résumé", + "Up": "En ligne", + "Down": "Hors ligne", + "Pending": "En attente", + "Unknown": "Inconnu", + "Pause": "En pause", + "Name": "Nom", + "Status": "État", + "DateTime": "Heure", + "Message": "Messages", + "No important events": "Aucun évènement important", + "Resume": "Reprendre", + "Edit": "Modifier", + "Delete": "Supprimer", + "Current": "Actuellement", + "Uptime": "Disponibilité", + "Cert Exp.": "Expiration SSL", + "day": "jour | jours", + "-day": " jours", + "hour": "heure", + "-hour": " heure", + "Response": "Temps de réponse", + "Ping": "Ping", + "Monitor Type": "Type de sonde", + "Keyword": "Mot-clé", + "Friendly Name": "Nom d'affichage", + "URL": "URL", + "Hostname": "Nom d'hôte / adresse IP", + "Port": "Port", + "Heartbeat Interval": "Intervalle de vérification", + "Retries": "Essais", + "Heartbeat Retry Interval": "Réessayer l'intervalle de vérification", + "Resend Notification if Down X times consequently": "Renvoyer une notification si hors ligne X fois", + "Advanced": "Avancé", + "Upside Down Mode": "Mode inversé", + "Max. Redirects": "Nombre maximum de redirections", + "Accepted Status Codes": "Codes HTTP acceptés", + "Push URL": "Push URL", + "needPushEvery": "Vous devez appeler cette URL toutes les {0} secondes.", + "pushOptionalParams": "Paramètres facultatifs : {0}", + "Save": "Sauvegarder", + "Notifications": "Notifications", + "Not available, please setup.": "Non disponible, merci de le configurer.", + "Setup Notification": "Créer une notification", + "Light": "Clair", + "Dark": "Sombre", + "Auto": "Automatique", + "Theme - Heartbeat Bar": "Thème - barres d'état", + "Normal": "Normal", + "Bottom": "En dessous", + "None": "Aucun", + "Timezone": "Fuseau horaire", + "Search Engine Visibility": "Visibilité par les moteurs de recherche", + "Allow indexing": "Autoriser l'indexation", + "Discourage search engines from indexing site": "Refuser l'indexation", + "Change Password": "Changer le mot de passe", + "Current Password": "Mot de passe actuel", + "New Password": "Nouveau mot de passe", + "Repeat New Password": "Répéter votre nouveau mot de passe", + "Update Password": "Mettre à jour le mot de passe", + "Disable Auth": "Désactiver l'authentification", + "Enable Auth": "Activer l'authentification", + "disableauth.message1": "Voulez-vous vraiment désactiver l'authentification ?", + "disableauth.message2": "Cette fonctionnalité est conçue pour les scénarios où vous avez l'intention d'implémenter une authentification tierce devant Uptime Kuma, comme Cloudflare Access, Authelia ou d'autres mécanismes d'authentification.", + "Please use this option carefully!": "Veuillez utiliser cette option avec précaution !", + "Logout": "Déconnexion", + "Leave": "Quitter", + "I understand, please disable": "Je comprends, désactivez-la", + "Confirm": "Confirmer", + "Yes": "Oui", + "No": "Non", + "Username": "Nom d'utilisateur", + "Password": "Mot de passe", + "Remember me": "Se souvenir de moi", + "Login": "Connexion", + "No Monitors, please": "Pas de sondes, veuillez", + "add one": "en ajouter une", + "Notification Type": "Type de notification", + "Email": "Courriel", + "Test": "Tester", + "Certificate Info": "Informations sur le certificat SSL", + "Resolver Server": "Serveur DNS utilisé", + "Resource Record Type": "Type d'enregistrement DNS recherché", + "Last Result": "Dernier résultat", + "Create your admin account": "Créer votre compte administrateur", + "Repeat Password": "Répéter le mot de passe", + "Import Backup": "Importation de la sauvegarde", + "Export Backup": "Exportation de la sauvegarde", + "Export": "Exporter", + "Import": "Importer", + "respTime": "Temps de réponse (ms)", + "notAvailableShort": "N/A", + "Default enabled": "Activé par défaut", + "Apply on all existing monitors": "Appliquer sur toutes les sondes existantes", + "Create": "Créer", + "Clear Data": "Effacer les données", + "Events": "Événements", + "Heartbeats": "Vérifications", + "Auto Get": "Récupérer automatiquement", + "backupDescription": "Vous pouvez sauvegarder toutes les sondes et toutes les notifications dans un fichier JSON.", + "backupDescription2": "PS : Les données relatives à l'historique et aux événements ne sont pas incluses.", + "backupDescription3": "Les données sensibles telles que les jetons de notification sont incluses dans le fichier d'exportation, veuillez les conserver soigneusement.", + "alertNoFile": "Veuillez sélectionner un fichier à importer.", + "alertWrongFileType": "Veuillez sélectionner un fichier JSON à importer.", + "Clear all statistics": "Effacer toutes les statistiques", + "Skip existing": "Sauter l'existant", + "Overwrite": "Écraser", + "Options": "Options", + "Keep both": "Garder les deux", + "Verify Token": "Vérifier le jeton", + "Setup 2FA": "Configurer la double authentification (2FA)", + "Enable 2FA": "Activer la double authentification (2FA)", + "Disable 2FA": "Désactiver la double authentification (2FA)", + "2FA Settings": "Paramètres de la la double authentification (2FA)", + "Two Factor Authentication": "Double authentification", + "Active": "Actif", + "Inactive": "Inactif", + "Token": "Jeton", + "Show URI": "Afficher l'URI", + "Tags": "Étiquettes", + "Add New below or Select...": "Ajoutez-en un en dessous ou sélectionnez-le ici...", + "Tag with this name already exist.": "Une étiquette portant ce nom existe déjà.", + "Tag with this value already exist.": "Une étiquette avec cette valeur existe déjà.", + "color": "Couleur", + "value (optional)": "Valeur (facultatif)", + "Gray": "Gris", + "Red": "Rouge", + "Orange": "Orange", + "Green": "Vert", + "Blue": "Bleu", + "Indigo": "Indigo", + "Purple": "Violet", + "Pink": "Rose", + "Search...": "Rechercher...", + "Avg. Ping": "Ping moyen", + "Avg. Response": "Réponse moyenne", + "Entry Page": "Page d'accueil", + "statusPageNothing": "Rien ici, veuillez ajouter un groupe ou une sonde.", + "No Services": "Aucun service", + "All Systems Operational": "Tous les systèmes sont opérationnels", + "Partially Degraded Service": "Service partiellement dégradé", + "Degraded Service": "Service dégradé", + "Add Group": "Ajouter un groupe", + "Add a monitor": "Ajouter une sonde", + "Edit Status Page": "Modifier la page de statut", + "Go to Dashboard": "Accéder au tableau de bord", + "Status Page": "Page de statut", + "Status Pages": "Pages de statut", + "defaultNotificationName": "Ma notification {notification} numéro ({number})", + "here": "ici", + "Required": "Requis", + "telegram": "Telegram", + "Bot Token": "Jeton du robot", + "wayToGetTelegramToken": "Vous pouvez obtenir un token depuis {0}.", + "Chat ID": "Chat ID", + "supportTelegramChatID": "Prend en charge les messages privés / messages de groupe / l'ID d'un salon", + "wayToGetTelegramChatID": "Vous pouvez obtenir le Chat ID en envoyant un message avec le robot puis en récupérant l'URL pour voir l'ID du salon :", + "YOUR BOT TOKEN HERE": "VOTRE JETON ROBOT ICI", + "chatIDNotFound": "ID du salon introuvable, envoyez un message via le robot avant", + "webhook": "Webhook", + "Post URL": "Post URL", + "Content Type": "Type de contenu", + "webhookJsonDesc": "{0} est bien pour tous les serveurs HTTP modernes comme Express.js", + "webhookFormDataDesc": "{multipart} est bien pour du PHP. Le JSON aura besoin d'être parsé avec {decodeFunction}", + "webhookAdditionalHeadersTitle": "En-têtes supplémentaires", + "webhookAdditionalHeadersDesc": "Définit des en-têtes supplémentaires envoyés avec le webhook.", + "smtp": "Courriel (SMTP)", + "secureOptionNone": "Aucun / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Ignorer les erreurs TLS", + "From Email": "Depuis l'adresse", + "emailCustomSubject": "Objet personnalisé", + "To Email": "Vers l'adresse", + "smtpCC": "CC", + "smtpBCC": "CCI", + "discord": "Discord", + "Discord Webhook URL": "URL vers le webhook Discord", + "wayToGetDiscordURL": "Vous pouvez l'obtenir en allant dans « Paramètres du serveur » -> « Intégrations » -> « Créer un Webhook »", + "Bot Display Name": "Nom du robot (affiché)", + "Prefix Custom Message": "Préfixe du message personnalisé", + "Hello @everyone is...": "Bonjour {'@'}everyone il...", + "teams": "Microsoft Teams", + "Webhook URL": "URL vers le webhook", + "wayToGetTeamsURL": "Vous pouvez apprendre comment créer un Webhook {0}.", + "signal": "Signal", + "Number": "Numéro", + "Recipients": "Destinataires", + "needSignalAPI": "Vous avez besoin d'un client Signal avec l'API REST.", + "wayToCheckSignalURL": "Vous pouvez regarder l'URL suivante pour savoir comment la mettre en place :", + "signalImportant": "IMPORTANT : Vous ne pouvez pas mixer les groupes et les numéros en destinataires !", + "gotify": "Gotify", + "Application Token": "Jeton d'application", + "Server URL": "URL du serveur", + "Priority": "Priorité", + "slack": "Slack", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Nom du salon", + "Uptime Kuma URL": "URL vers Uptime Kuma", + "aboutWebhooks": "Plus d'informations sur les webhooks ici : {0}", + "aboutChannelName": "Mettez le nom du salon dans {0} dans « Nom du salon » si vous voulez contourner le salon webhook. Ex. : #autre-salon", + "aboutKumaURL": "Si vous laissez l'URL d'Uptime Kuma vierge, elle redirigera vers la page du projet GitHub.", + "emojiCheatSheet": "Aide sur les émojis : {0}", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "PushByTechulus": "Push by Techulus", + "octopush": "Octopush", + "promosms": "PromoSMS", + "clicksendsms": "ClickSend SMS", + "lunasea": "LunaSea", + "apprise": "Apprise (prend en charge plus de 50 services de notification)", + "GoogleChat": "Google Chat (Google Workspace uniquement)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "User Key": "Clé d'utilisateur", + "Device": "Appareil", + "Message Title": "Titre du message", + "Notification Sound": "Son de notification", + "More info on:": "Plus d'informations sur : {0}", + "pushoverDesc1": "Priorité d'urgence (2) a un délai par défaut de 30 secondes entre les tentatives et expire après une heure.", + "pushoverDesc2": "Si vous voulez envoyer des notifications sur différents appareils, remplissez le champ « Appareil ».", + "SMS Type": "Type de SMS", + "octopushTypePremium": "Premium (rapide - recommandé pour les alertes)", + "octopushTypeLowCost": "Économique (lent, bloqué de temps en temps par l'opérateur)", + "checkPrice": "Vérification {0} tarifs :", + "apiCredentials": "Identifiants de l'API", + "octopushLegacyHint": "Voulez-vous utiliser l'ancienne version d'Octopush (2011-2020) ou la nouvelle version ?", + "Check octopush prices": "Vérifier les prix d'Octopush {0}.", + "octopushPhoneNumber": "Numéro de téléphone (format international, ex. : +33612345678)", + "octopushSMSSender": "Nom de l'expéditeur : 3-11 caractères alphanumériques avec espace (a-zA-Z0-9)", + "LunaSea Device ID": "Identifiant d'appareil LunaSea", + "Apprise URL": "URL d'Apprise", + "Example:": "Exemple : {0}", + "Read more:": "En savoir plus : {0}", + "Status:": "État : {0}", + "Read more": "En savoir plus", + "appriseInstalled": "Apprise est installé.", + "appriseNotInstalled": "Apprise n'est pas installé. {0}", + "Access Token": "Jeton d'accès", + "Channel access token": "Jeton d'accès au canal", + "Line Developers Console": "Console développeurs Line", + "lineDevConsoleTo": "Console développeurs Line - {0}", + "Basic Settings": "Paramètres de base", + "User ID": "Identifiant utilisateur", + "Messaging API": "Messaging API", // Ne pas traduire, il s'agit du type de salon affiché sur la console développeurs Line + "wayToGetLineChannelToken": "Premièrement accédez à {0}, créez un provider et définissez un type de salon à « Messaging API ». Vous pourrez alors avoir puis vous pourrez avoir le jeton d'accès du salon et l'identifiant utilisateur demandés.", + "Icon URL": "URL vers l'icône", + "aboutIconURL": "Vous pouvez mettre un lien vers une image dans « URL vers l'icône » pour remplacer l'image de profil par défaut. Elle ne sera utilisé que si « Icône émoji » n'est pas défini.", + "aboutMattermostChannelName": "Vous pouvez remplacer le salon par défaut que le webhook utilise en mettant le nom du salon dans le champ « Nom du salon ». Vous aurez besoin de l'activer depuis les paramètres de Mattermost. Ex. : #autre-salon", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - Bon marché mais lent et souvent surchargé. Limité uniquement aux destinataires polonais.", + "promosmsTypeFlash": "SMS FLASH - Le message sera automatiquement affiché sur l'appareil du destinataire. Limité uniquement aux destinataires Polonais.", + "promosmsTypeFull": "SMS FULL - Version premium des SMS. Vous pouvez mettre le nom de l'expéditeur (vous devez l'enregistrer au préalable). Fiable pour les alertes.", + "promosmsTypeSpeed": "SMS SPEED - Priorité élevée pour le système. Très rapide et fiable mais coûteux (environ le double du prix d'un SMS FULL).", + "promosmsPhoneNumber": "Numéro de téléphone (pour les destinataires polonais, vous pouvez ignorer l'indicatif international)", + "promosmsSMSSender": "Nom de l'expéditeur du SMS : Nom pré-enregistré ou l'un de base : InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + "matrixHomeserverURL": "L'URL du serveur (avec http(s):// et le port de manière facultative)", + "Internal Room Id": "ID de la salle interne", + "matrixDesc1": "Vous pouvez trouver l'ID de salle interne en regardant dans la section avancée des paramètres dans le client Matrix. C'est censé ressembler à !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Il est fortement recommandé de créer un nouvel utilisateur et de ne pas utiliser le jeton d'accès de votre propre utilisateur Matrix, car il vous donnera un accès complet à votre compte et à toutes les salles que vous avez rejointes. Pour cela, créez un nouvel utilisateur et invitez-le uniquement dans la salle dans laquelle vous souhaitez recevoir la notification. Vous pouvez obtenir le jeton d'accès en exécutant {0}", + "Method": "Méthode", + "Body": "Corps", + "Headers": "En-têtes", + "PushUrl": "URL Push", + "HeadersInvalidFormat": "Les en-têtes de la requête ne sont pas dans un format JSON valide : ", + "BodyInvalidFormat": "Le corps de la requête n'est pas dans un format JSON valide : ", + "Monitor History": "Historique de la sonde", + "clearDataOlderThan": "Conserver l'historique des données de la sonde durant {0} jours.", + "PasswordsDoNotMatch": "Les mots de passe ne correspondent pas.", + "records": "enregistrements", + "One record": "Un enregistrement", + "steamApiKeyDescription": "Pour surveiller un serveur Steam, vous avez besoin d'une clé Steam Web-API. Vous pouvez enregistrer votre clé ici : ", + "Current User": "Utilisateur actuel", + "topic": "Topic", + "topicExplanation": "Topic MQTT à surveiller", + "successMessage": "Message de réussite", + "successMessageExplanation": "Message MQTT qui sera considéré comme un succès", + "recent": "Récent", + "Done": "Fait", + "Info": "Info", + "Security": "Sécurité", + "Steam API Key": "Clé d'API Steam", + "Shrink Database": "Réduire la base de données", + "Pick a RR-Type...": "Choisissez un type d'enregistrement...", + "Pick Accepted Status Codes...": "Choisissez les codes de statut acceptés...", + "Default": "Défaut", + "HTTP Options": "Options HTTP", + "Create Incident": "Créer un incident", + "Title": "Titre", + "Content": "Contenu", + "Style": "Style", + "info": "Info", + "warning": "Attention", + "danger": "Danger", + "error": "Erreur", + "critical": "Critique", + "primary": "Primaire", + "light": "Blanc", + "dark": "Noir", + "Post": "Post", + "Please input title and content": "Veuillez saisir le titre et le contenu", + "Created": "Créé", + "Last Updated": "Dernière mise à jour", + "Unpin": "Retirer", + "Switch to Light Theme": "Passer au thème clair", + "Switch to Dark Theme": "Passer au thème sombre", + "Show Tags": "Afficher les étiquettes", + "Hide Tags": "Masquer les étiquettes", + "Description": "Description", + "No monitors available.": "Aucune sonde disponible.", + "Add one": "En rajouter une", + "No Monitors": "Aucune sonde", + "Untitled Group": "Groupe sans titre", + "Services": "Services", + "Discard": "Abandonner", + "Cancel": "Annuler", + "Powered by": "Propulsé par", + "shrinkDatabaseDescription": "Déclenche la commande VACUUM pour SQLite. Si votre base de données a été créée après la version 1.10.0, AUTO_VACUUM est déjà activé et cette action n'est pas nécessaire.", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "Nom d'utilisateur de l'API (incl. webapi_ prefix)", + "serwersmsAPIPassword": "Mot de passe API", + "serwersmsPhoneNumber": "Numéro de téléphone", + "serwersmsSenderName": "Nom de l'expéditeur du SMS (enregistré via le portail client)", + "smseagle": "SMSEagle", + "smseagleTo": "Numéro(s) de téléphone", + "smseagleGroup": "Nom(s) de groupe(s) de répertoire", + "smseagleContact": "Nom(s) de contact du répertoire", + "smseagleRecipientType": "Type de destinataire", + "smseagleRecipient": "Destinataire(s) (les multiples doivent être séparés par une virgule)", + "smseagleToken": "Jeton d'accès à l'API", + "smseagleUrl": "L'URL de votre appareil SMSEagle", + "smseagleEncoding": "Envoyer en Unicode", + "smseaglePriority": "Priorité des messages (0-9, par défaut = 0)", + "stackfield": "Stackfield", + "Customize": "Personnaliser", + "Custom Footer": "Pied de page personnalisé", + "Custom CSS": "CSS personnalisé", + "smtpDkimSettings": "Paramètres DKIM", + "smtpDkimDesc": "Veuillez vous référer au Nodemailer DKIM {0} pour l'utilisation.", + "documentation": "documentation", + "smtpDkimDomain": "Nom de domaine", + "smtpDkimKeySelector": "Sélecteur de clé", + "smtpDkimPrivateKey": "Clé privée", + "smtpDkimHashAlgo": "Algorithme de hachage (facultatif)", + "smtpDkimheaderFieldNames": "Clés d'en-tête à signer (facultatif)", + "smtpDkimskipFields": "Clés d'en-tête à ne pas signer (facultatif)", + "wayToGetPagerDutyKey": "Vous pouvez l'obtenir en allant dans Service -> Annuaire des services -> (sélectionner un service) -> Intégrations -> Ajouter une intégration. Ici, vous pouvez rechercher \"Events API V2\". Plus d'infos {0}", + "Integration Key": "Clé d'intégration", + "Integration URL": "URL d'intégration", + "Auto resolve or acknowledged": "Résolution automatique ou accusé de réception", + "do nothing": "ne fais rien", + "auto acknowledged": "accusé de réception automatique", + "auto resolve": "résolution automatique", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API Endpoint", + "alertaEnvironment": "Environnement", + "alertaApiKey": "Clé de l'API", + "alertaAlertState": "État de l'alerte", + "alertaRecoverState": "État de récupération", + "deleteStatusPageMsg": "Voulez-vous vraiment supprimer cette page d'état ?", + "Proxies": "Proxies", + "default": "Défaut", + "enabled": "Activé", + "setAsDefault": "Définir par défaut", + "deleteProxyMsg": "Voulez-vous vraiment supprimer ce proxy pour toutes les sondes ?", + "proxyDescription": "Les proxies doivent être affectés à une sonde pour fonctionner.", + "enableProxyDescription": "Ce proxy n'aura pas d'effet sur les demandes de sonde tant qu'il n'est pas activé. Vous pouvez contrôler la désactivation temporaire du proxy de toutes les sondes en fonction de l'état d'activation.", + "setAsDefaultProxyDescription": "Ce proxy sera activé par défaut pour les nouvelles sondes. Vous pouvez toujours désactiver le proxy séparément pour chaque sonde.", + "Certificate Chain": "Chaîne de certificats", + "Valid": "Valide", + "Invalid": "Non valide", + "AccessKeyId": "ID de clé d'accès", + "SecretAccessKey": "Clé secrète d'accès", + "PhoneNumbers": "Numéros de téléphone", + "TemplateCode": "Modèle de code", + "SignName": "Signature", + "Sms template must contain parameters: ": "Le modèle de SMS doit contenir des paramètres : ", + "Bark Endpoint": "Endpoint Bark", + "Bark Group": "Groupe Bark", + "Bark Sound": "Son Bark", + "WebHookUrl": "WebHookUrl", + "SecretKey": "Clé secrète", + "For safety, must use secret key": "Par sécurité, utilisation obligatoire de la clé secrète", + "Device Token": "Jeton d'appareil", + "Platform": "Plateforme", + "iOS": "iOS", + "Android": "Android", + "Huawei": "Huawei", + "High": "Haute", + "Retry": "Recommencez", + "Topic": "Topic", + "WeCom Bot Key": "Clé de robot WeCom", + "Setup Proxy": "Configurer le proxy", + "Proxy Protocol": "Protocole proxy", + "Proxy Server": "Serveur proxy", + "Proxy server has authentication": "Une authentification est nécessaire pour le serveur proxy", + "User": "Utilisateur", + "Installed": "Installé", + "Not installed": "Non installé", + "Running": "Fonctionne", + "Not running": "Ne fonctionne pas", + "Remove Token": "Supprimer le jeton", + "Start": "Démarrer", + "Stop": "Arrêter", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "Ajouter une page de statut", + "Slug": "Chemin", + "Accept characters:": "Caractères acceptés : ", + "startOrEndWithOnly": "Commence uniquement par {0}", + "No consecutive dashes": "Pas de double tirets", + "Next": "Continuer", + "The slug is already taken. Please choose another slug.": "Un chemin existe déjà. Veuillez en choisir un autre.", + "No Proxy": "Pas de proxy", + "Authentication": "Authentification", + "HTTP Basic Auth": "Authentification de base HTTP", + "New Status Page": "Nouvelle page de statut", + "Page Not Found": "Page non trouvée", + "Reverse Proxy": "Proxy inverse", + "Backup": "Sauvegarde", + "About": "À propos", + "wayToGetCloudflaredURL": "(télécharger cloudflared depuis {0})", + "cloudflareWebsite": "Site web de Cloudflare", + "Message:": "Message : ", + "Don't know how to get the token? Please read the guide:": "Vous ne savez pas comment obtenir le jeton ? Lisez le guide :", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "La connexion actuelle peut être perdue si vous vous connectez actuellement via un tunnel Cloudflare. Êtes-vous sûr de vouloir l'arrêter ? Tapez votre mot de passe actuel pour le confirmer.", + "HTTP Headers": "En-têtes HTTP", + "Trust Proxy": "Proxy de confiance", + "Other Software": "Autres logiciels", + "For example: nginx, Apache and Traefik.": "Par exemple : nginx, Apache et Traefik.", + "Please read": "Veuillez lire", + "Subject:": "Objet : ", + "Valid To:": "Valable jusqu'au : ", + "Days Remaining:": "Jours restants : ", + "Issuer:": "Émetteur : ", + "Fingerprint:": "Empreinte : ", + "No status pages": "Aucune page de statut.", + "Domain Name Expiry Notification": "Notification d'expiration du nom de domaine", + "Proxy": "Proxy", + "Date Created": "Date de création", + "HomeAssistant": "Home Assistant", + "onebotHttpAddress": "Adresse HTTP OneBot", + "onebotMessageType": "Type de message OneBot", + "onebotGroupMessage": "Groupe", + "onebotPrivateMessage": "Privé", + "onebotUserOrGroupId": "ID de groupe/utilisateur", + "onebotSafetyTips": "Pour des raisons de sécurité, vous devez définir un jeton d'accès", + "PushDeer Key": "Clé PushDeer", + "Footer Text": "Texte de pied de page", + "Show Powered By": "Afficher « Propulsé par »", + "Domain Names": "Noms de domaine", + "signedInDisp": "Connecté en tant que {0}", + "signedInDispDisabled": "Authentification désactivée.", + "RadiusSecret": "Radius Secret", + "RadiusSecretDescription": "Secret partagé entre le client et le serveur", + "RadiusCalledStationId": "Identifiant de la station appelée", + "RadiusCalledStationIdDescription": "Identifiant de l'appareil appelé", + "RadiusCallingStationId": "Identifiant de la station appelante", + "RadiusCallingStationIdDescription": "Identifiant de l'appareil appelant", + "Certificate Expiry Notification": "Notification d'expiration du certificat", + "API Username": "Nom d'utilisateur de l'API", + "API Key": "Clé API", + "Recipient Number": "Numéro du destinataire", + "From Name/Number": "De nom/numéro", + "Leave blank to use a shared sender number.": "Laisser vide pour utiliser un numéro d'expéditeur partagé.", + "Octopush API Version": "Version de l'API Octopush", + "Legacy Octopush-DM": "Ancien Octopush-DM", + "endpoint": "endpoint", + "octopushAPIKey": "\"Clé API\" à partir des informations d'identification de l'API HTTP dans le panneau de configuration", + "octopushLogin": "\"Identifiant\" à partir des informations d'identification de l'API HTTP dans le panneau de configuration", + "promosmsLogin": "Nom de connexion API", + "promosmsPassword": "Mot de passe API", + "pushoversounds pushover": "Pushover (par défaut)", + "pushoversounds bike": "Vélo", + "pushoversounds bugle": "Clairon", + "pushoversounds cashregister": "Caisse enregistreuse", + "pushoversounds classical": "Classique", + "pushoversounds cosmic": "Cosmique", + "pushoversounds falling": "Chute", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Arrivée", + "pushoversounds intermission": "Intermission", + "pushoversounds magic": "Magique", + "pushoversounds mechanical": "Mécanique", + "pushoversounds pianobar": "Piano-bar", + "pushoversounds siren": "Sirène", + "pushoversounds spacealarm": "Alarme spatiale", + "pushoversounds tugboat": "Remorqueur", + "pushoversounds alien": "Alarme alienne (version longue)", + "pushoversounds climb": "Escalade (version longue)", + "pushoversounds persistent": "Persistent (version longue)", + "pushoversounds echo": "Pushover Echo (version longue)", + "pushoversounds updown": "Up Down (version longue)", + "pushoversounds vibrate": "Vibration seulement", + "pushoversounds none": "Aucun (silencieux)", + "pushyAPIKey": "Clé API secrète", + "pushyToken": "Jeton d'appareil", + "Show update if available": "Afficher la mise à jour si disponible", + "Also check beta release": "Vérifiez également la version bêta", + "Using a Reverse Proxy?": "Utiliser un proxy inverse ?", + "Check how to config it for WebSocket": "Vérifier comment le configurer pour WebSocket", + "Steam Game Server": "Serveur de jeu Steam", + "Most likely causes:": "Causes les plus probables : ", + "The resource is no longer available.": "La ressource n'est plus disponible.", + "There might be a typing error in the address.": "Il se peut qu'il y ait une erreur de frappe dans l'adresse.", + "What you can try:": "Ce que vous pouvez essayer :", + "Retype the address.": "Retaper l'adresse.", + "Go back to the previous page.": "Retourner à la page précédente.", + "Coming Soon": "Prochainement", + "wayToGetClickSendSMSToken": "Vous pouvez obtenir le nom d'utilisateur API et la clé API à partir de {0} .", + "Connection String": "Chaîne de connexion", + "Query": "Requête", + "settingsCertificateExpiry": "Expiration du certificat TLS", + "certificationExpiryDescription": "Les sondes HTTPS émettent une notification lorsque le certificat TLS expire dans :", + "Setup Docker Host": "Configurer l'hôte Docker", + "Connection Type": "Type de connexion", + "Docker Daemon": "Deamon Docker", + "deleteDockerHostMsg": "Voulez-vous vraiment supprimer cet hôte Docker pour toutes les sondes ?", + "socket": "Socket", + "tcp": "TCP / HTTP", + "Docker Container": "Conteneur Docker", + "Container Name / ID": "Nom / ID du conteneur", + "Docker Host": "Hôte Docker", + "Docker Hosts": "Hôtes Docker", + "ntfy Topic": "Topic ntfy", + "Domain": "Domaine", + "Workstation": "Poste de travail", + "disableCloudflaredNoAuthMsg": "Vous êtes en mode No Auth, un mot de passe n'est pas nécessaire.", + "trustProxyDescription": "Faire confiance aux en-têtes 'X-Forwarded-*'. Si vous souhaitez obtenir la bonne adresse IP client et que votre Uptime Kuma se situe derrière (nginx ou Apache) vous devez l'activer.", + "wayToGetLineNotifyToken": "Vous pouvez obtenir un jeton d'accès auprès de {0}", + "Examples": "Exemples", + "Home Assistant URL": "URL vers Home Assistant", + "Long-Lived Access Token": "Jeton d'accès de longue durée", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Un jeton d'accès de longue durée peut être créé en cliquant sur le nom de votre profil (en bas à gauche) et en faisant défiler vers le bas, puis cliquez sur Créer un jeton. ", + "Notification Service": "Service de notifications", + "default: notify all devices": "par défaut: notifier tous les appareils", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Une liste des services de notification peut être trouvée dans Home Assistant sous \"Outils de développement > Services\" recherchez \"notification\" pour trouver le nom de votre appareil/téléphone.", + "Automations can optionally be triggered in Home Assistant:": "Les automatisations peuvent éventuellement être déclenchées dans Home Assistant : ", + "Trigger type:": "Type de déclencheur : ", + "Event type:": "Type d'événement : ", + "Event data:": "Données d'événement : ", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Ensuite, choisissez une action, par exemple basculer la scène là où une lumière RVB est rouge.", + "Frontend Version": "Version frontend", + "Frontend Version do not match backend version!": "La version frontend ne correspond pas à la version backend !", + "Base URL": "URL de base", + "goAlertInfo": "GoAlert est une application open source pour la planification des appels, les escalades automatisées et les notifications (comme les SMS ou les appels vocaux). Impliquez automatiquement la bonne personne, de la bonne manière et au bon moment ! {0}", + "goAlertIntegrationKeyInfo": "Obtenez la clé d'intégration d'API générique pour le service dans ce format \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" généralement la valeur du paramètre de jeton de l'URL copiée.", + "goAlert": "GoAlert", + "backupOutdatedWarning": "Obsolète : étant donné que de nombreuses fonctionnalités ont été ajoutées et que cette fonctionnalité de sauvegarde est non maintenue, elle ne peut pas générer ou restaurer une sauvegarde complète.", + "backupRecommend": "Veuillez sauvegarder le volume ou le dossier de données (./data/) directement à la place.", + "Optional": "Optionnel", + "squadcast": "Squadcast", + "SendKey": "SendKey", + "SMSManager API Docs": "Documentations de l'API SMSManager ", + "Gateway Type": "Type de passerelle", + "SMSManager": "SMSManager", + "You can divide numbers with": "Vous pouvez diviser des nombres avec", + "or": "ou", + "recurringInterval": "Intervalle", + "Recurring": "Récurrent", + "strategyManual": "Activer/désactiver manuellement", + "warningTimezone": "Utilisation du fuseau horaire du serveur", + "weekdayShortMon": "Lun", + "weekdayShortTue": "Mar", + "weekdayShortWed": "Mer", + "weekdayShortThu": "Jeu", + "weekdayShortFri": "Ven", + "weekdayShortSat": "Sam", + "weekdayShortSun": "Dim", + "dayOfWeek": "Jour de la semaine", + "dayOfMonth": "Jour du mois", + "lastDay": "Dernier jour", + "lastDay1": "Dernier jour du mois", + "lastDay2": "Avant-dernier jour du mois", + "lastDay3": "3ème dernier jour du mois", + "lastDay4": "4ème dernier jour du mois", + "No Maintenance": "Aucune maintenance", + "pauseMaintenanceMsg": "Voulez-vous vraiment mettre en pause ?", + "maintenanceStatus-under-maintenance": "En maintenance", + "maintenanceStatus-inactive": "Inactif", + "maintenanceStatus-scheduled": "Programmé", + "maintenanceStatus-ended": "Terminé", + "maintenanceStatus-unknown": "Inconnue", + "Display Timezone": "Afficher le fuseau horaire", + "Server Timezone": "Fuseau horaire du serveur", + "statusPageMaintenanceEndDate": "Fin", + "IconUrl": "URL vers l'icône", + "Enable DNS Cache": "Activer le cache DNS", + "Enable": "Activer", + "Disable": "Désactiver", + "dnsCacheDescription": "Il peut ne pas fonctionner dans certains environnements IPv6, désactivez-le si vous rencontrez des problèmes.", + "Single Maintenance Window": "Créneau de maintenance unique", + "Maintenance Time Window of a Day": "Créneau de la maintenance", + "Effective Date Range": "Plage de dates d'effet", + "Schedule Maintenance": "Créer une maintenance", + "Date and Time": "Date et heure", + "DateTime Range": "Plage de dates et d'heures", + "Strategy": "Stratégie", + "Free Mobile User Identifier": "Identifiant d'utilisateur Free Mobile", + "Free Mobile API Key": "Clé d'API Free Mobile", + "Enable TLS": "Activer le TLS", + "Proto Service Name": "Nom du service proto", + "Proto Method": "Méthode Proto", + "Proto Content": "Contenu proto", + "Economy": "Économique", + "Lowcost": "Faible coût", + "high": "Haute", + "General Monitor Type": "Type de sonde générale", + "Passive Monitor Type": "Type de sonde passive", + "Specific Monitor Type": "Type de sonde spécifique" +} diff --git a/src/lang/he-IL.json b/src/lang/he-IL.json new file mode 100644 index 000000000..c8219ff59 --- /dev/null +++ b/src/lang/he-IL.json @@ -0,0 +1,672 @@ +{ + "languageName": "עברית", + "checkEverySecond": "בדוק כל {0} שניות", + "retryCheckEverySecond": "נסה שוב כל {0} שניות", + "resendEveryXTimes": "התראה שוב כל {0} פעמים", + "resendDisabled": "השליחה מחדש מושבתת", + "retriesDescription": "מקסימום ניסיונות חוזרים לפני שהשירות יסומן כלא פעיל ונשלחת התראה", + "ignoreTLSError": "התעלם משגיאת TLS/SSL עבור אתרי HTTPS", + "upsideDownModeDescription": "הפוך את הסטטוס על הפוך. אם ניתן להגיע לשירות, הוא לא פעיל.", + "maxRedirectDescription": "המספר המרבי של הפניות מחדש לעקוב. הגדר ל-0 כדי להשבית הפניות מחדש.", + "enableGRPCTls": "אפשר לשלוח בקשת gRPC עם חיבור TLS", + "grpcMethodDescription": "שם השיטה מומר לפורמט cammelCase כגון sayHello, check וכו.", + "acceptedStatusCodesDescription": "בחר קודי סטטוס שנחשבים לתגובה מוצלחת.", + "Maintenance": "תחזוקה", + "statusMaintenance": "תחזוקה", + "Schedule maintenance": "תחזוקה מתוכננת", + "Affected Monitors": "מוניטורים מושפעים", + "Pick Affected Monitors...": "בחר המוניטרים מושפעים...", + "Start of maintenance": "תחילת תחזוקה", + "All Status Pages": "כל דפי הסטטוס", + "Select status pages...": "בחר דפי סטטוס...", + "recurringIntervalMessage": "רוץ פעם ביום | הפעל אחת ל-{0} ימים", + "affectedMonitorsDescription": "בחר מוניטורים שמושפעים מהתחזוקה הנוכחית", + "affectedStatusPages": "הצג הודעת תחזוקה זו בדפי סטטוס שנבחרו", + "atLeastOneMonitor": "בחר לפחות מוניטור אחד מושפע", + "passwordNotMatchMsg": "הסיסמאות לא תואמות", + "notificationDescription": "יש להקצות התראות למוניטור כדי שהן יעבדו.", + "keywordDescription": "חפש מילת מפתח בתגובת HTML או JSON רגילה. החיפוש תלוי רישיות.", + "pauseDashboardHome": "עצור", + "deleteMonitorMsg": "האם אתה בטוח שברצונך למחוק את המוניטור הזה?", + "deleteMaintenanceMsg": "האם אתה בטוח שברצונך למחוק את התחזוקה הזו?", + "deleteNotificationMsg": "האם אתה בטוח שברצונך למחוק את ההודעה הזו עבור כל מוניטרים?", + "dnsPortDescription": "יציאת שרת DNS. ברירת המחדל היא 53. אתה יכול לשנות את היציאה בכל עת.", + "resolverserverDescription": "Cloudflare הוא שרת ברירת המחדל. אתה יכול לשנות את שרת הפותר בכל עת.", + "rrtypeDescription": "בחר את סוג ה-RR שברצונך לפקח עליו", + "pauseMonitorMsg": "האם אתה בטוח רוצה להשהות?", + "enableDefaultNotificationDescription": "הודעה זו תופעל כברירת מחדל עבור מוניטרים חדשים. אתה עדיין יכול להשבית את ההודעה בנפרד עבור כל מוניטור.", + "clearEventsMsg": "האם אתה בטוח שברצונך למחוק את כל האירועים עבור המוניטור הזה?", + "clearHeartbeatsMsg": "האם אתה בטוח שברצונך למחוק את כל פעימות הלב עבור המוניטור הזה?", + "confirmClearStatisticsMsg": "האם אתה בטוח שברצונך למחוק את כל הנתונים הסטטיסטיים?", + "importHandleDescription": "בחר 'דלג על קיים' אם ברצונך לדלג על כל מוניטור או התראה באותו שם. 'החלף' ימחק כל מוניטור והתראה קיימים.", + "confirmImportMsg": "האם אתה בטוח שברצונך לייבא את הגיבוי? אנא ודא שבחרת באפשרות הייבוא הנכונה.", + "twoFAVerifyLabel": "אנא הזן את האסימון שלך כדי לאמת מערכת אדוש:", + "tokenValidSettingsMsg": "האסימון תקף! כעת אתה יכול לשמור את הגדרות האדוש.", + "confirmEnableTwoFAMsg": "האם אתה בטוח שברצונך להפעיל את מערכת אדוש?", + "confirmDisableTwoFAMsg": "Are you sure you want to disable 2FA?", + "Settings": "הגדרות", + "Dashboard": "פאנל ניהול", + "New Update": "עדכון חדש", + "Language": "שפה", + "Appearance": "נראות", + "Theme": "ערכת נושא", + "General": "כללי", + "Primary Base URL": "כתובת האתר הראשית של הבסיס", + "Version": "גרסה", + "Check Update On GitHub": "לבדוק עדכונים בגיטהאב", + "List": "רשימה", + "Add": "הוסף", + "Add New Monitor": "הוספת מוניטור חדש", + "Quick Stats": "נתונים בקצרה", + "Up": "פעיל", + "Down": "לא פעיל", + "Pending": "ממתין", + "Unknown": "לא יודע", + "Pause": "עצור", + "Name": "שם", + "Status": "סטטוס", + "DateTime": "תאריך שעה", + "Message": "הודעה", + "No important events": "אין אירועים חשובים", + "Resume": "המשך", + "Edit": "עריכה", + "Delete": "מחיקה", + "Current": "עכשיו", + "Uptime": "זמן פעילות", + "Cert Exp.": "Cert Exp.", + "day": "יום | ימים", + "-day": "-יום", + "hour": "שעה", + "-hour": "-שעה", + "Response": "תגובה", + "Ping": "פינג", + "Monitor Type": "סוג מוניטור", + "Keyword": "מילת מפתח", + "Friendly Name": "שם ידידותי", + "URL": "כתובת אתר", + "Hostname": "שם המארח", + "Port": "פורט", + "Heartbeat Interval": "מרווח פעימות", + "Retries": "נסיונות חוזרים", + "Heartbeat Retry Interval": "מרווח נסיונות חוזר של פעימות", + "Resend Notification if Down X times consequently": "שלח שוב הודעה אם ירד X פעמים כתוצאה מכך", + "Advanced": "מתקדם", + "Upside Down Mode": "מצב הפוך", + "Max. Redirects": "מקסימום הפניות מחדש", + "Accepted Status Codes": "קודי סטטוס מקובלים", + "Push URL": "דחף כתובת URL", + "needPushEvery": "עליך להתקשר לכתובת האתר הזו כל {0} שניות.", + "pushOptionalParams": "פרמטרים אופציונליים: {0}", + "Save": "שמירה", + "Notifications": "התראות", + "Not available, please setup.": "לא זמין, אנא הגדר.", + "Setup Notification": "הודעת הגדרה", + "Light": "בהיר", + "Dark": "חושך", + "Auto": "אוטומטי", + "Theme - Heartbeat Bar": "ערכת נושא - Heartbeat Bar", + "Normal": "נורמלי", + "Bottom": "למטה", + "None": "כלום", + "Timezone": "אזור זמן", + "Search Engine Visibility": "נראות במנועי חיפוש", + "Allow indexing": "אפשר הוספה לאינדקס", + "Discourage search engines from indexing site": "לא לעודד מנועי חיפוש לאינדקס אתרים", + "Change Password": "שנה סיסמא", + "Current Password": "סיסמה נוכחית", + "New Password": "סיסמה חדשה", + "Repeat New Password": "חזור על סיסמה חדשה", + "Update Password": "עדכן סיסמה", + "Disable Auth": "השבתת אבטחה", + "Enable Auth": "הפעלת אבטחה", + "disableauth.message1": "האם אתה בטוח שברצונך להשבית את האבטחה?", + "disableauth.message2": "הוא מיועד לתרחישים שבהם אתה מתכוון ליישם אימות של צד שלישי מול Uptime Kuma כגון Cloudflare Access, Authelia או מנגנוני אימות אחרים.", + "Please use this option carefully!": "אנא השתמש באפשרות זו בזהירות!", + "Logout": "התנתקות", + "Leave": "יציאה", + "I understand, please disable": "אני מבין, אני רוצה להשבית", + "Confirm": "אישור", + "Yes": "כן", + "No": "לא", + "Username": "שם משתמש", + "Password": "סיסמה", + "Remember me": "זכור אותי", + "Login": "התחברות", + "No Monitors, please": "בלי מוניטורים, בבקשה", + "add one": "להוסיף אחד", + "Notification Type": "סוג התראה", + "Email": "אימייל", + "Test": "Test", + "Certificate Info": "פרטי תעודת אבטחה", + "Resolver Server": "שרת פותר", + "Resource Record Type": "סוג רשומת משאבים", + "Last Result": "תוצאה אחרונה", + "Create your admin account": "צור את חשבון הניהול שלך", + "Repeat Password": "חזור על הסיסמה", + "Import Backup": "ייבוא גיבוי", + "Export Backup": "ייצוא גיבוי", + "Export": "ייצוא", + "Import": "ייבוא", + "respTime": "רפ. זמן (ms)", + "notAvailableShort": "N/A", + "Default enabled": "ברירת המחדל מופעלת", + "Apply on all existing monitors": "החל על כל המסכים הקיימים", + "Create": "ליצור", + "Clear Data": "נקה נתונים", + "Events": "אירועים", + "Heartbeats": "פעימות לב", + "Auto Get": "קבל אוטומטי", + "backupDescription": "אתה יכול לגבות את כל המסכים וההתראות לקובץ JSON.", + "backupDescription2": "הערה: היסטוריה ונתוני אירועים אינם כלולים.", + "backupDescription3": "נתונים רגישים כגון אסימוני הודעה כלולים בקובץ הייצוא; נא לאחסן יצוא בצורה מאובטחת.", + "alertNoFile": "אנא בחר קובץ לייבוא.", + "alertWrongFileType": "אנא בחר קובץ JSON.", + "Clear all statistics": "נקה את כל הנתונים הסטטיסטיים", + "Skip existing": "דילוג על הקיים", + "Overwrite": "החלף", + "Options": "אפשרויות", + "Keep both": "שמור את שניהם", + "Verify Token": "אמת את האסימון", + "Setup 2FA": "הגדרת מערכת אדוש", + "Enable 2FA": "הפעלת אדוש", + "Disable 2FA": "כיבוי אדוש", + "2FA Settings": "הגדרות אדוש", + "Two Factor Authentication": "אימות דו-שלבי (מערכת אדוש)", + "Active": "מופעל", + "Inactive": "קבוי", + "Token": "אסימון", + "Show URI": "הצג URI", + "Tags": "תגים", + "Add New below or Select...": "הוסף חדש למטה או בחר...", + "Tag with this name already exist.": "תג בשם זה כבר קיים.", + "Tag with this value already exist.": "תג עם ערך זה כבר קיים.", + "color": "צבע", + "value (optional)": "ערך (אופציונלי)", + "Gray": "אפור", + "Red": "אדום", + "Orange": "כתום", + "Green": "ירוק", + "Blue": "כחול", + "Indigo": "כחול כהה", + "Purple": "סגול", + "Pink": "כתום", + "Search...": "לחפש...", + "Avg. Ping": "פינג ממוצע", + "Avg. Response": "ממוצע תגובה", + "Entry Page": "דף כניסה", + "statusPageNothing": "אין כאן שום דבר, בבקשה הוסף קבוצה או מוניטור.", + "No Services": "אין שירותים", + "All Systems Operational": "כל המערכות עובדות", + "Partially Degraded Service": "שירות פגום חלקית", + "Degraded Service": "שירות פגום", + "Add Group": "הוסף קבוצה", + "Add a monitor": "הוסף מוניטור", + "Edit Status Page": "ערוך דף סטטוס", + "Go to Dashboard": "מעבר לפאנל", + "Status Page": "דף סטטוס", + "Status Pages": "דפי סטטוס", + "defaultNotificationName": "התראת {notification} שלי ({number})", + "here": "פה", + "Required": "נדרש", + "telegram": "טלגרם", + "Bot Token": "אסימון בוט", + "wayToGetTelegramToken": "אתה יכול לקבל אסימון מ-{0}.", + "Chat ID": "מזהה צ'אט", + "supportTelegramChatID": "תמיכה בצ'אט ישיר / קבוצה / מזהה הצ'אט של הערוץ", + "wayToGetTelegramChatID": "אתה יכול לקבל את מזהה הצ'אט שלך על ידי שליחת הודעה לבוט ומעבר לכתובת האתר הזו כדי להציג את ה-chat_id:", + "YOUR BOT TOKEN HERE": "אסימון הבוט שלך כאן", + "chatIDNotFound": "מזהה צ'אט לא נמצא; אנא שלח הודעה לבוט זה תחילה", + "webhook": "Webhook", + "Post URL": "כתובת אתר של פוסט", + "Content Type": "סוג התוכן", + "webhookJsonDesc": "{0} מתאים לכל שרתי HTTP מודרניים כגון Express.js", + "webhookFormDataDesc": "{multipart} טוב ל-PHP. יהיה צורך לנתח את ה-JSON באמצעות {decodeFunction}", + "webhookAdditionalHeadersTitle": "כותרות נוספות", + "webhookAdditionalHeadersDesc": "מגדיר כותרות נוספות שנשלחות עם ה-webhook.", + "smtp": "אימייל (SMTP)", + "secureOptionNone": "None / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "התעלם משגיאת TLS", + "From Email": "אמייל שולח", + "emailCustomSubject": "נושא מותאם אישית", + "To Email": "למייל", + "smtpCC": "עותק", + "smtpBCC": "עותק מוסתר", + "discord": "דיסקורד", + "Discord Webhook URL": "כתובת אתר של Discord Webhook", + "wayToGetDiscordURL": "אתה יכול לקבל זאת על ידי מעבר להגדרות שרת -> אינטגרציות -> צור Webhook", + "Bot Display Name": "שם תצוגה של בוט", + "Prefix Custom Message": "קידומת הודעה מותאמת אישית", + "Hello @everyone is...": "שלום {'@'}כולם...", + "teams": "Microsoft Teams", + "Webhook URL": "כתובת האתר של Webhook", + "wayToGetTeamsURL": "אתה יכול ללמוד כיצד ליצור כתובת אתר ל-webhook {0}.", + "signal": "אוֹת", + "Number": "מספר", + "Recipients": "נמענים", + "needSignalAPI": "אתה צריך שיהיה לך לקוח איתות עם REST API.", + "wayToCheckSignalURL": "אתה יכול לבדוק את כתובת האתר הזו כדי לראות כיצד להגדיר אחת:", + "signalImportant": "חשוב: לא ניתן לערבב קבוצות ומספרים בנמענים!", + "gotify": "Gotify", + "Application Token": "אסימון אפליקציה", + "Server URL": "כתובת האתר של השרת", + "Priority": "עדיפות", + "slack": "Slack", + "Icon Emoji": "אייקון אימוג'י", + "Channel Name": "שם הערוץ", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "מידע נוסף על Webhooks ב: {0}", + "aboutChannelName": "הזן את שם הערוץ בשדה {0} שם ערוץ אם ברצונך לעקוף את ערוץ Webhook. לדוגמה: #ערוץ אחר", + "aboutKumaURL": "אם תשאיר את השדה Uptime Kuma URL ריק, הוא יעבור כברירת מחדל לעמוד Project GitHub.", + "emojiCheatSheet": "גיליון הונאה של אמוג'י: {0}", + "rocket.chat": "Rocket.Chat", + "pushover": "Pushover", + "pushy": "Pushy", + "PushByTechulus": "Push by Techulus", + "octopush": "Octopush", + "promosms": "PromoSMS", + "clicksendsms": "ClickSend SMS", + "lunasea": "LunaSea", + "apprise": "Apprise (תומך ב-50+ שירותי התראות)", + "GoogleChat": "Google Chat (Google Workspace בלבד)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "User Key": "מפתח משתמש", + "Device": "התקן", + "Message Title": "כותרת ההודעה", + "Notification Sound": "צליל התראה", + "More info on:": "מידע נוסף על: {0}", + "pushoverDesc1": "לעדיפות חירום (2) יש פסק זמן של 30 שניות ברירת מחדל בין ניסיונות חוזרים, והיא תפוג לאחר שעה.", + "pushoverDesc2": "אם ברצונך לשלוח התראות למכשירים שונים, מלא את שדה התקן.", + "SMS Type": "סוג SMS", + "octopushTypePremium": "פרימיום (מהיר - מומלץ להתראה)", + "octopushTypeLowCost": "עלות נמוכה (איטית - לפעמים חסומה על ידי המפעיל)", + "checkPrice": "בדוק מחירים של {0}:", + "apiCredentials": "אישורי API", + "octopushLegacyHint": "האם אתה משתמש בגרסה הישנה של Octopush (2011-2020) או בגרסה החדשה?", + "Check octopush prices": "בדוק מחירי תמנון {0}.", + "octopushPhoneNumber": "מספר טלפון (פורמט אינטלי, למשל: +33612345678)", + "octopushSMSSender": "שם שולח SMS: 3-11 תווים אלפאנומריים ורווח (a-zA-Z0-9)", + "LunaSea Device ID": "מזהה מכשיר LunaSea", + "Apprise URL": "Apprise URL", + "Example:": "דוגמה: {0}", + "Read more:": "קרא עוד: {0}", + "Status:": "סטטוס: {0}", + "Read more": "קרא עוד", + "appriseInstalled": "Apprise מותקן.", + "appriseNotInstalled": "Apprise אינו מותקן. {0}", + "Access Token": "אסימון גישה", + "Channel access token": "אסימון גישה לערוץ", + "Line Developers Console": "קונסולת מפתחים", + "lineDevConsoleTo": "קו מפתחי קונסולת - {0}", + "Basic Settings": "הגדרות בסיסיות", + "User ID": "תעודת זהות של משתמש", + "Messaging API": "Messaging API", + "wayToGetLineChannelToken": "תחילה גש ל-{0}, צור ספק וערוץ (Messaging API), לאחר מכן תוכל לקבל את אסימון הגישה לערוץ ומזהה המשתמש מפריטי התפריט שהוזכרו לעיל.", + "Icon URL": "כתובת אתר של סמל", + "aboutIconURL": "אתה יכול לספק קישור לתמונה ב\"כתובת URL של סמל\" כדי לעקוף את תמונת הפרופיל המוגדרת כברירת מחדל. לא ישמש אם Icon Emoji מוגדר.", + "aboutMattermostChannelName": "אתה יכול לעקוף את ערוץ ברירת המחדל שאליו ה-Webhook מפרסם על ידי הזנת שם הערוץ בשדה \"שם ערוץ\". זה צריך להיות מופעל בהגדרות Mattermos Webhook. לדוגמה: #ערוץ אחר", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - זול אך איטי ולעיתים עמוס מדי. מוגבל רק לנמענים פולנים.", + "promosmsTypeFlash": "SMS FLASH - ההודעה תוצג אוטומטית במכשיר הנמען. מוגבל לנמענים פולנים בלבד.", + "promosmsTypeFull": "SMS FULL - שכבת פרימיום של SMS, אתה יכול להשתמש בשם השולח שלך (עליך לרשום את השם תחילה). אמין להתראות.", + "promosmsTypeSpeed": "SMS SPEED - העדיפות הגבוהה ביותר במערכת. מאוד מהיר ואמין אבל יקר (בערך פי שניים ממחיר מלא של SMS).", + "promosmsPhoneNumber": "מספר טלפון (לנמען פולני ניתן לדלג על אזורי חיוג)", + "promosmsSMSSender": "שם שולח SMS: שם רשום מראש או אחת מברירות המחדל: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + "matrixHomeserverURL": "כתובת האתר של שרת הבית (עם http(s):// ויציאה אופציונלית)", + "Internal Room Id": "מזהה חדר פנימי", + "matrixDesc1": "אתה יכול למצוא את מזהה החדר הפנימי על ידי עיון בחלק המתקדם של לקוח Matrix שלך בהגדרות החדר. זה צריך להיראות כמו !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "מומלץ מאוד ליצור משתמש חדש ולא להשתמש באסימון הגישה של משתמש מטריקס משלך שכן הוא יאפשר גישה מלאה לחשבון שלך ולכל החדרים שהצטרפת אליהם. במקום זאת, צור משתמש חדש והזמן אותו רק לחדר שבו תרצה לקבל את ההתראה. תוכל לקבל את אסימון הגישה על ידי הפעלת {0}", + "Method": "Method", + "Body": "Body", + "Headers": "Headers", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "כותרות הבקשה אינן JSON חוקיות:", + "BodyInvalidFormat": "גוף הבקשה אינו JSON חוקי:", + "Monitor History": "מעקב אחר היסטוריה", + "clearDataOlderThan": "שמור את נתוני היסטוריית הצג למשך {0} ימים.", + "PasswordsDoNotMatch": "סיסמאות לא תואמות.", + "records": "רשומות", + "One record": "שיא אחד", + "steamApiKeyDescription": "לניטור שרת משחקי Steam אתה צריך מפתח Steam Web-API. אתה יכול לרשום את מפתח ה-API שלך כאן:", + "Current User": "משתמש נוכחי", + "topic": "נושא", + "topicExplanation": "נושא MQTT למעקב", + "successMessage": "הודעת הצלחה", + "successMessageExplanation": "הודעת MQTT שתיחשב כהצלחה", + "recent": "לאחרונה", + "Done": "בוצע", + "Info": "מידע", + "Security": "אבטחה", + "Steam API Key": "מפתח API Steam", + "Shrink Database": "מסד נתונים מכווץ", + "Pick a RR-Type...": "בחר סוג RR ...", + "Pick Accepted Status Codes...": "בחר קודי סטטוס מקובלים ...", + "Default": "בְּרִירַת מֶחדָל", + "HTTP Options": "אפשרויות HTTP", + "Create Incident": "ליצור אירוע", + "Title": "כותרת", + "Content": "תוֹכֶן", + "Style": "Style", + "info": "מידע", + "warning": "אַזהָרָה", + "danger": "סַכָּנָה", + "error": "שְׁגִיאָה", + "critical": "קריטי", + "primary": "יְסוֹדִי", + "light": "אוֹר", + "dark": "אפל", + "Post": "הודעה", + "Please input title and content": "אנא הזן כותרת ותוכן", + "Created": "נוצר", + "Last Updated": "עודכן לאחרונה", + "Unpin": "ענן חוף", + "Switch to Light Theme": "לעבור לנושא האור", + "Switch to Dark Theme": "לעבור לנושא אפל", + "Show Tags": "Show Tags", + "Hide Tags": "הסתר תגיות", + "Description": "תיאור", + "No monitors available.": "אין צגים זמינים.", + "Add one": "הוסף אחד", + "No Monitors": "אין צגים", + "Untitled Group": "קבוצה ללא כותרת", + "Services": "שירותים", + "Discard": "להשליך", + "Cancel": "לְבַטֵל", + "Powered by": "פועל על", + "shrinkDatabaseDescription": "ואקום מסד נתונים להפעיל עבור SQLITE.אם בסיס הנתונים שלך נוצר לאחר 1.10.0, Auto_VACUUM כבר מופעל ואין צורך בפעולה זו.", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API Username (incl. webapi_ prefix)", + "serwersmsAPIPassword": "סיסמת API", + "serwersmsPhoneNumber": "מספר טלפון", + "serwersmsSenderName": "שם שולח SMS (רשום באמצעות פורטל לקוחות)", + "smseagle": "SMSEagle", + "smseagleTo": "מספרי טלפון)", + "smseagleGroup": "שם קבוצת ספר טלפונים", + "smseagleContact": "שם איש קשר בספר הטלפונים", + "smseagleRecipientType": "Rסוג הנמען", + "smseagleRecipient": "נמענים (ים) (יש להפריד בין מרובים לפסיק)", + "smseagleToken": "API Access Token", + "smseagleUrl": "כתובת האתר של מכשיר ה- SMSeagege שלך", + "smseagleEncoding": "שלח כ- Unicode", + "smseaglePriority": "עדיפות הודעה (0-9, ברירת מחדל = 0)", + "stackfield": "סטאקפילד", + "Customize": "התאמה אישית", + "Custom Footer": "כותרת תחתונה מותאמת אישית", + "Custom CSS": "CSS מותאם אישית", + "smtpDkimSettings": "הגדרות DKIM", + "smtpDkimDesc": "אנא עיין ב- NodeMailer DKIM {0} לשימוש.", + "documentation": "ווקיפדיית מדריכים", + "smtpDkimDomain": "שם דומיין", + "smtpDkimKeySelector": "בורר מפתח", + "smtpDkimPrivateKey": "טוראי של פרטיy", + "smtpDkimHashAlgo": "אלגוריתם hash (אופציונלי)", + "smtpDkimheaderFieldNames": "מפתחות כותרת לחתום (אופציונלי)", + "smtpDkimskipFields": "מפתחות כותרת לא לחתום (אופציונלי)", + "wayToGetPagerDutyKey": "אתה יכול להשיג זאת על ידי מעבר לשירות -> ספריית שירות -> (בחר שירות) -> אינטגרציות -> הוסף אינטגרציה.כאן תוכלו לחפש \"אירועים API v2 \".מידע נוסף {0}", + "Integration Key": "מפתח אינטגרציה", + "Integration URL": "URL אינטגרציה", + "Auto resolve or acknowledged": "פיתרון אוטומטי או הודה", + "do nothing": "לעשות כלום", + "auto acknowledged": "Auto הודה", + "auto resolve": "פתרון אוטומטי", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "נקודת קצה של API", + "alertaEnvironment": "סביבה", + "alertaApiKey": "מפתח API", + "alertaAlertState": "מצב התראה", + "alertaRecoverState": "לשחזר מדינה", + "deleteStatusPageMsg": "האם אתה בטוח רוצה למחוק את דף הסטטוס הזה?", + "Proxies": "Proxies", + "default": "בְּרִירַת מֶחדָל", + "enabled": "מופעל", + "setAsDefault": "נקבע כברירת מחדל", + "deleteProxyMsg": "האם אתה בטוח רוצה למחוק את הפרוקסי הזה לכל המסכים?", + "proxyDescription": "Proxies must be assigned to a monitor to function.", + "enableProxyDescription": "פרוקסי זה לא ישפיע על בקשות צג עד שהוא יופעל.אתה יכול לשלוט באופן זמני להשבית את ה- Proxy מכל המסכים לפי מצב ההפעלה.", + "setAsDefaultProxyDescription": "פרוקסי זה יופעל כברירת מחדל עבור צגים חדשים.אתה עדיין יכול להשבית את ה- Proxy בנפרד עבור כל צג.", + "Certificate Chain": "שרשרת אישורים", + "Valid": "תָקֵף", + "Invalid": "לא חוקי", + "AccessKeyId": "מזהה AccessKey", + "SecretAccessKey": "גישהלמפתחסוד", + "PhoneNumbers": "מספר טלפוןs", + "TemplateCode": "TemplateCode", + "SignName": "שם שם", + "Sms template must contain parameters: ": "תבנית SMS חייבת להכיל פרמטרים: ", + "Bark Endpoint": "Bark Endpoint", + "Bark Group": "Bark Group", + "Bark Sound": "Bark Sound", + "WebHookUrl": "WebHookUrl", + "SecretKey": "מפתח סודי", + "For safety, must use secret key": "לבטיחות, חייב להשתמש במפתח סודיy", + "Device Token": "אסימון מכשיר", + "Platform": "פּלַטפוֹרמָה", + "iOS": "iOS", + "Android": "דְמוּי אָדָם", + "Huawei": "huawei", + "High": "High", + "Retry": "נסה שוב", + "Topic": "נוֹשֵׂא", + "WeCom Bot Key": "WeCom Bot Key", + "Setup Proxy": "הגדרת פרוקסי", + "Proxy Protocol": "פרוטוקול פרוקסי", + "Proxy Server": "שרת פרוקסי", + "Proxy server has authentication": "לשרת ה- Proxy יש אימות", + "User": "מִשׁתַמֵשׁ", + "Installed": "מוּתקָן", + "Not installed": "לא מותקן", + "Running": "רץ", + "Not running": "לא רץ", + "Remove Token": "הסר אסימון", + "Start": "הַתחָלָה", + "Stop": "תפסיק", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "הוסף דף סטטוס חדש", + "Slug": "Slug", + "Accept characters:": "קבל תווים:", + "startOrEndWithOnly": "התחל או סוף עם {0} בלבד", + "No consecutive dashes": "אין מקפים רצופים", + "Next": "הַבָּא", + "The slug is already taken. Please choose another slug.": "השבלול כבר נלקח.אנא בחר שבלול נוסף.", + "No Proxy": "אין פרוקסי", + "Authentication": "אבטחה", + "HTTP Basic Auth": "HTTP בסיסי Auth", + "New Status Page": "דף סטטוס חדש", + "Page Not Found": "הדף לא נמצא", + "Reverse Proxy": "פרוקסי הפוך", + "Backup": "גיבוי", + "About": "אודות", + "wayToGetCloudflaredURL": "(הורד את CloudFlared מ- {0})", + "cloudflareWebsite": "אתר CloudFlare", + "Message:": "הוֹדָעָה:", + "Don't know how to get the token? Please read the guide:": "לא יודע איך להשיג את האסימון?אנא קרא את המדריך:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "החיבור הנוכחי עשוי ללכת לאיבוד אם אתה מתחבר כרגע באמצעות מנהרת CloudFlare.האם אתה בטוח רוצה לעצור את זה?הקלד את הסיסמה הנוכחית שלך כדי לאשר אותה.", + "HTTP Headers": "כותרות HTTP", + "Trust Proxy": "אמון בפרוקסי", + "Other Software": "תוכנה אחרת", + "For example: nginx, Apache and Traefik.": "למשל: Nginx, Apache ו- Traefik.", + "Please read": "בבקשה תקרא", + "Subject:": "נושא:", + "Valid To:": "תקף ל:", + "Days Remaining:": "ימים שנותרו:", + "Issuer:": "המנפיק:", + "Fingerprint:": "טביעת אצבע:", + "No status pages": "אין דפי סטטוס", + "Domain Name Expiry Notification": "הודעה על תום שם תחום", + "Proxy": "פרוקסי", + "Date Created": "תאריך יצירה", + "HomeAssistant": "Home Assistant", + "onebotHttpAddress": "כתובת HTTP של OneBot ", + "onebotMessageType": "סוג ההודעה OneBot", + "onebotGroupMessage": "קְבוּצָה", + "onebotPrivateMessage": "פְּרָטִי", + "onebotUserOrGroupId": "מזהה קבוצה/משתמש ", + "onebotSafetyTips": "לבטיחות, חייב לקבוע אסימון גישה ", + "PushDeer Key": "PushDeer Key", + "Footer Text": "טקסט כותרת תחתונה ", + "Show Powered By": "הצג מופעל על ידי ", + "Domain Names": "שמות דומיין ", + "signedInDisp": "חתום כ- {0} ", + "signedInDispDisabled": "Auth מושבת.", + "RadiusSecret": "רדיוס סוד", + "RadiusSecretDescription": "סוד משותף בין לקוח לשרת", + "RadiusCalledStationId": "נקרא מזהה תחנה", + "RadiusCalledStationIdDescription": "מזהה של המכשיר הנקרא ", + "RadiusCallingStationId": "מזהה תחנת שיחה ", + "RadiusCallingStationIdDescription": "מזהה של מכשיר השיחה ", + "Certificate Expiry Notification": "הודעת תפוגה של אישור", + "API Username": "שם משתמש API", + "API Key": "מפתח API", + "Recipient Number": "מספר הנמען", + "From Name/Number": "משם/מספר", + "Leave blank to use a shared sender number.": "השאר ריק כדי להשתמש במספר שולח משותף.", + "Octopush API Version": "גרסת API של תמנון", + "Legacy Octopush-DM": "Legacy Octopush-DM", + "endpoint": "נקודת קצה", + "octopushAPIKey": "\"מפתח API \" מתוך תעודות API של HTTP בלוח הבקרה", + "octopushLogin": "\"כניסה \" מתעודות API של HTTP בלוח הבקרה", + "promosmsLogin": "שם כניסה של API", + "promosmsPassword": "סיסמת API", + "pushoversounds pushover": "Pushover (ברירת מחדל)", + "pushoversounds bike": "אופניים", + "pushoversounds bugle": "חֲצוֹצְרָה", + "pushoversounds cashregister": "קופה רושמת", + "pushoversounds classical": "קלַאסִי", + "pushoversounds cosmic": "קוֹסמִי", + "pushoversounds falling": "נופל", + "pushoversounds gamelan": "gamelan", + "pushoversounds incoming": "נִכנָס", + "pushoversounds intermission": "Intermission", + "pushoversounds magic": "קֶסֶם", + "pushoversounds mechanical": "מֵכָנִי", + "pushoversounds pianobar": "בר פסנתר", + "pushoversounds siren": "סִירֶנָה", + "pushoversounds spacealarm": "אזעקת חלל", + "pushoversounds tugboat": "סירת משיכה", + "pushoversounds alien": "אזעקת חייזרים (ארוכה)", + "pushoversounds climb": "לטפס (ארוך)", + "pushoversounds persistent": "מתמיד (ארוך)", + "pushoversounds echo": "הד Pushover (ארוך)", + "pushoversounds updown": "למעלה (ארוך)", + "pushoversounds vibrate": "לרטוט בלבד", + "pushoversounds none": "אף אחד (שקט)", + "pushyAPIKey": "מפתח API סודי", + "pushyToken": "אסימון מכשיר", + "Show update if available": "הצג עדכון אם זמין", + "Also check beta release": "בדוק גם את שחרור הבטא", + "Using a Reverse Proxy?": "באמצעות פרוקסי הפוך?", + "Check how to config it for WebSocket": "בדוק כיצד להגדיר אותו ל- WebSocket", + "Steam Game Server": "שרת משחק קיטור", + "Most likely causes:": "ככל הנראה גורם:", + "The resource is no longer available.": "המשאב כבר לא זמין.", + "There might be a typing error in the address.": "יתכן שיש שגיאת הקלדה בכתובת.", + "What you can try:": "מה שאתה יכול לנסות:", + "Retype the address.": "הקלד מחדש את הכתובת.", + "Go back to the previous page.": "חזור לדף הקודם.", + "Coming Soon": "בקרוב", + "wayToGetClickSendSMSToken": "אתה יכול לקבל שם משתמש API ומפתח API מ- {0}.", + "Connection String": "מחרוזת חיבור", + "Query": "שאילתא", + "settingsCertificateExpiry": "תפוגת תעודת TLS", + "certificationExpiryDescription": "HTTPS עוקב אחר התראה על התראה כאשר תעודת TLS פגה ב:", + "Setup Docker Host": "הגדרת מארח Docker", + "Connection Type": "סוג חיבור", + "Docker Daemon": "Docker Daemon", + "deleteDockerHostMsg": "האם אתה בטוח רוצה למחוק את המארח של Docker לכל המוניטורים?", + "socket": "Socket", + "tcp": "TCP / HTTP", + "Docker Container": "מיכל Docker", + "Container Name / ID": "שם מכולה / מזהה", + "Docker Host": "מארח דוקר", + "Docker Hosts": "מארחי Docker", + "ntfy Topic": "ntfy Topic", + "Domain": "תְחוּם", + "Workstation": "עמדת עבודה", + "disableCloudflaredNoAuthMsg": "אתה לא נמצא במצב AUTH, אין צורך בסיסמה.", + "trustProxyDescription": "סמוך על כותרות 'x-forwarded-*'.אם אתה רוצה להשיג את ה- IP של הלקוח הנכון וה- Uptime Kuma שלך מאחור כמו Nginx או Apache, עליך לאפשר זאת.", + "wayToGetLineNotifyToken": "אתה יכול לקבל אסימון גישה מ- {0}", + "Examples": "דוגמאות", + "Home Assistant URL": "כתובת URL עוזרת ביתית", + "Long-Lived Access Token": "אסימון גישה ארוכת שנים", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "ניתן ליצור אסימון גישה לאורך זמן על ידי לחיצה על שם הפרופיל שלך (שמאל למטה) וגלילה לתחתית ואז לחץ על צור אסימון. ", + "Notification Service": "Notification Service", + "default: notify all devices": "default: notify all devices", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "רשימה של שירותי הודעה ניתן למצוא בעוזר הבית תחת \"כלי מפתחים> שירותים \" חפש \"הודעה \" כדי למצוא את שם המכשיר/טלפון שלך.", + "Automations can optionally be triggered in Home Assistant:": "אוטומציות יכולות להיות מופעלות באופן אופציונלי לעוזר הבית:", + "Trigger type:": "סוג ההדק:", + "Event type:": "סוג אירוע:", + "Event data:": "נתוני אירועים:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "ואז בחר פעולה, למשל העבר את הסצינה למקום בו אור RGB הוא אדום.", + "Frontend Version": "גרסת Frontend", + "Frontend Version do not match backend version!": "גרסת Frontend לא תואמת את גרסת Backend!", + "Base URL": "Base URL", + "goAlertInfo": "SAETRERT הוא יישום קוד פתוח לתזמון שיחה, הסלמות והודעות אוטומטיות (כמו SMS או שיחות קוליות).לעסוק אוטומטית את האדם הנכון, בדרך הנכונה ובזמן הנכון!{0}", + "goAlertIntegrationKeyInfo": "קבל מפתח אינטגרציה של API גנרי לשירות בפורמט זה \"AAAAAAAA-BBB-CCCC-DDDD-EEEEEEEEEEE \" בדרך כלל הערך של פרמטר האסימון של URL שהועתק.", + "goAlert": "GoAlert", + "backupOutdatedWarning": "מיושם: מכיוון שהרבה תכונות שנוספו ותכונת הגיבוי הזו מעט לא מצומצמת, היא לא יכולה לייצר או לשחזר גיבוי שלם.", + "backupRecommend": "אנא גבה את עוצמת הקול או את תיקיית הנתונים (./data/) ישירות במקום.", + "Optional": "אופציונאלי", + "squadcast": "Squadcast", + "SendKey": "SendKey", + "SMSManager API Docs": "מסמכי API של SmsManager ", + "Gateway Type": "סוג שער", + "SMSManager": "SMSManager", + "You can divide numbers with": "אתה יכול לחלק מספרים עם", + "or": "אוֹ", + "recurringInterval": "הפסקה", + "Recurring": "מחזורי", + "strategyManual": "פעיל/לא פעיל באופן ידני", + "warningTimezone": "זה משתמש באזור הזמן של השרת", + "weekdayShortMon": "שני", + "weekdayShortTue": "שלישי", + "weekdayShortWed": "רביעי", + "weekdayShortThu": "חמישי", + "weekdayShortFri": "שישי", + "weekdayShortSat": "שבת", + "weekdayShortSun": "ראשון", + "dayOfWeek": "יום בשבוע", + "dayOfMonth": "יום בחודש", + "lastDay": "Last Day", + "lastDay1": "היום האחרון של החודש", + "lastDay2": "יום שני האחרון של החודש", + "lastDay3": "יום 3 האחרון של החודש", + "lastDay4": "היום הרביעי האחרון בחודש", + "No Maintenance": "אין תחזוקה", + "pauseMaintenanceMsg": "האם אתה בטוח רוצה להשהות?", + "maintenanceStatus-under-maintenance": "מתבצעות עבודות תחזוקה", + "maintenanceStatus-inactive": "לא פעיל", + "maintenanceStatus-scheduled": "מתוזמן", + "maintenanceStatus-ended": "הסתיים", + "maintenanceStatus-unknown": "לא ידוע", + "Display Timezone": "הצג אזור זמן", + "Server Timezone": "אזור זמן של שרת", + "statusPageMaintenanceEndDate": "סוך", + "IconUrl": "קישור לתמונת אייקון", + "Enable DNS Cache": "הפעל מטמון DNS", + "Enable": "הפעל", + "Disable": "השבת", + "dnsCacheDescription": "ייתכן שהוא לא עובד בסביבות IPv6 מסוימות, השבת אותו אם אתה נתקל בבעיות כלשהן.", + "Single Maintenance Window": "חלון תחזוקה בודד", + "Maintenance Time Window of a Day": "חלון זמן תחזוקה ביום", + "Effective Date Range": "טווח תאריכים אפקטיבי", + "Schedule Maintenance": "לוח זמנים לתחזוקה", + "Date and Time": "תאריך ושעה", + "DateTime Range": "טווח תאריכים וזמן", + "Strategy": "אסטרטגיה", + "Free Mobile User Identifier": "מזהה משתמש נייד בחינם", + "Free Mobile API Key": "מפתח API חינם לנייד", + "Enable TLS": "אפשר TLS", + "Proto Service Name": "שם שירות פרוטו", + "Proto Method": "שיטת פרוטו", + "Proto Content": "תוכן פרוטו", + "Economy": "חיסכון", + "Lowcost": "זול", + "high": "גבוהה", + "General Monitor Type": "מוניטור כללי", + "Passive Monitor Type": "מוניטור פסיבי", + "Specific Monitor Type": "סוג מוניטור ספציפי" +} diff --git a/src/lang/hr-HR.json b/src/lang/hr-HR.json new file mode 100644 index 000000000..417b689e6 --- /dev/null +++ b/src/lang/hr-HR.json @@ -0,0 +1,581 @@ +{ + "languageName": "Hrvatski", + "checkEverySecond": "Provjera svake {0} sekunde", + "retryCheckEverySecond": "Ponovni pokušaj svake {0} sekunde", + "retriesDescription": "Broj ponovnih pokušaja prije nego će se servis označiti kao nedostupan te poslati obavijest", + "ignoreTLSError": "Ignoriraj TLS/SSL pogreške za HTTPS web stranice", + "upsideDownModeDescription": "Preokreni logiku statusa. Ako se primi pozitivan odgovor, smatra se da je usluga nedostupna.", + "maxRedirectDescription": "Maksimalan broj preusmjeravanja. Postaviti na 0 kako bi se preusmjeravanja onemogućila.", + "acceptedStatusCodesDescription": "Odaberite statusne kodove koji se smatraju uspješnim odgovorom.", + "passwordNotMatchMsg": "Lozinke se ne poklapaju.", + "notificationDescription": "Obavijesti će funkcionirati samo ako su dodijeljene monitoru.", + "keywordDescription": "Ključna riječ za pretragu, u obliku običnog HTML-a ili u JSON formatu. Pretraga je osjetljiva na velika i mala slova.", + "deleteMonitorMsg": "Jeste li sigurni da želite izbrisati monitor?", + "deleteNotificationMsg": "Jeste li sigurni da želite izbrisati ovu obavijest za sve monitore?", + "resolverserverDescription": "Cloudflare je zadani DNS poslužitelj. Možete to promijeniti u bilo kojem trenutku.", + "rrtypeDescription": "Odaberite vrstu DNS zapisa o resursu kojeg želite pratiti", + "pauseMonitorMsg": "Jeste li sigurni da želite pauzirati?", + "enableDefaultNotificationDescription": "Ova će obavijesti biti omogućena za sve nove monitore. Možete ju ručno onemogućiti za pojedini monitor.", + "clearEventsMsg": "Jeste li sigurni da želite izbrisati sve zapise o događajima za ovaj monitor?", + "clearHeartbeatsMsg": "Jeste li sigurni da želite izbrisati sve zapise o provjerama za ovaj monitor?", + "confirmClearStatisticsMsg": "Jeste li sigurni da želite izbrisati SVE statistike?", + "importHandleDescription": "Odaberite opciju \"Preskoči postojeće\" ako želite preskočiti uvoz postojećih monitora i obavijesti ako dođe do poklapanja u imenu. Opcija \"Prepiši\" će izbrisati postojeće monitore i obavijesti.", + "confirmImportMsg": "Jeste li sigurni da želite pokrenuti uvoz? Provjerite jeste li odabrali ispravnu opciju uvoza.", + "twoFAVerifyLabel": "Unesite svoj 2FA token:", + "tokenValidSettingsMsg": "Token je važeći! Sada možete spremiti postavke dvofaktorske autentikacije.", + "confirmEnableTwoFAMsg": "Želite li omogućiti dvofaktorsku autentikaciju?", + "confirmDisableTwoFAMsg": "Jeste li sigurni da želite onemogućiti dvofaktorsku autentikaciju?", + "Settings": "Postavke", + "Dashboard": "Kontrolna ploča", + "New Update": "Novo ažuriranje", + "Language": "Jezik", + "Appearance": "Izgled", + "Theme": "Tema", + "General": "Općenito", + "Primary Base URL": "Osnovni URL", + "Version": "Inačica", + "Check Update On GitHub": "Provjeri dostupnost nove inačice na GitHubu", + "List": "Popis", + "Add": "Dodaj", + "Add New Monitor": "Dodaj novi Monitor", + "Quick Stats": "Statistika", + "Up": "Dostupno", + "Down": "Nedostupno", + "Pending": "U tijeku", + "Unknown": "Nepoznato", + "pauseDashboardHome": "Pauzirano", + "Name": "Naziv", + "Status": "Status", + "DateTime": "Vremenska oznaka", + "Message": "Izvještaj", + "No important events": "Nema važnih događaja", + "Pause": "Pauziraj", + "Resume": "Nastavi", + "Edit": "Uredi", + "Delete": "Obriši", + "Current": "Trenutno", + "Uptime": "Dostupnost", + "Cert Exp.": "Istek cert.", + "day": "dan | dana", + "-day": "-dnevno", + "hour": "sat", + "-hour": "-satno", + "Response": "Odgovor", + "Ping": "Odziv", + "Monitor Type": "Vrsta Monitora", + "Keyword": "Ključna riječ", + "Friendly Name": "Prilagođen naziv", + "URL": "URL", + "Hostname": "Domaćin", + "Port": "Port", + "Heartbeat Interval": "Interval provjere", + "Retries": "Broj ponovnih pokušaja", + "Heartbeat Retry Interval": "Interval ponovnih pokušaja", + "Advanced": "Napredne postavke", + "Upside Down Mode": "Obrnuti način", + "Max. Redirects": "Maksimalan broj preusmjeravanja", + "Accepted Status Codes": "Prihvaćeni statusni kodovi", + "Push URL": "Push URL", + "needPushEvery": "Potrebno je slati zahtjeve na URL svakih {0} sekundi.", + "pushOptionalParams": "Neobavezni parametri: {0}", + "Save": "Spremi", + "Notifications": "Obavijesti", + "Not available, please setup.": "Nije dostupno, potrebno je dodati novu stavku.", + "Setup Notification": "Dodaj obavijest", + "Light": "Svijetli način", + "Dark": "Tamni način", + "Auto": "Automatski", + "Theme - Heartbeat Bar": "Tema za traku dostupnosti", + "Normal": "Normalno", + "Bottom": "Ispod", + "None": "Isključeno", + "Timezone": "Vremenska zona", + "Search Engine Visibility": "Vidljivost tražilicama", + "Allow indexing": "Dopusti indeksiranje", + "Discourage search engines from indexing site": "Sprječavanje indeksiranja", + "Change Password": "Promjena lozinke", + "Current Password": "Trenutna lozinka", + "New Password": "Nova lozinka", + "Repeat New Password": "Potvrdite novu lozinku", + "Update Password": "Spremi novu lozinku", + "Disable Auth": "Onemogući autentikaciju", + "Enable Auth": "Omogući autentikaciju", + "disableauth.message1": "Jeste li sigurni da želite isključiti autentikaciju?", + "disableauth.message2": "To je za korisnike koji imaju vanjsku autentikaciju stranice ispred Uptime Kume, poput usluge Cloudflare Access.", + "Please use this option carefully!": "Pažljivo koristite ovu opciju.", + "Logout": "Odjava", + "Leave": "Poništi", + "I understand, please disable": "Razumijem, svejedno onemogući", + "Confirm": "Potvrda", + "Yes": "Da", + "No": "Ne", + "Username": "Korisničko ime", + "Password": "Lozinka", + "Remember me": "Zapamti me", + "Login": "Prijava", + "No Monitors, please": "Nema monitora, ", + "add one": "dodaj jedan", + "Notification Type": "Tip obavijesti", + "Email": "E-pošta", + "Test": "Testiraj", + "Certificate Info": "Informacije o certifikatu", + "Resolver Server": "DNS poslužitelj", + "Resource Record Type": "Vrsta DNS zapisa", + "Last Result": "Posljednji rezultat", + "Create your admin account": "Stvori administratorski račun", + "Repeat Password": "Potvrda lozinke", + "Import Backup": "Uvoz sigurnosne kopije", + "Export Backup": "Izvoz sigurnosne kopije", + "Export": "Izvoz", + "Import": "Uvoz", + "respTime": "Vrijeme odgovora (ms)", + "notAvailableShort": "ne postoji", + "Default enabled": "Omogući za nove monitore", + "Apply on all existing monitors": "Primijeni na postojeće monitore", + "Create": "Kreiraj", + "Clear Data": "Obriši podatke", + "Events": "Događaji", + "Heartbeats": "Provjere", + "Auto Get": "Automatski dohvat", + "backupDescription": "Moguće je napraviti sigurnosnu kopiju svih monitora i obavijesti koja će biti spremljena kao JSON datoteka.", + "backupDescription2": "Napomena: povijest i podaci o događajima nisu uključeni u sigurnosnu kopiju.", + "backupDescription3": "Osjetljivi podaci poput tokena za obavijesti uključeni su u sigurnosnu kopiju. Zato je potrebno čuvati izvoz na sigurnom mjestu.", + "alertNoFile": "Datoteka za uvoz nije odabrana.", + "alertWrongFileType": "Datoteka za uvoz nije u JSON formatu.", + "Clear all statistics": "Obriši sve statistike", + "Skip existing": "Preskoči postojeće", + "Overwrite": "Prepiši", + "Options": "Opcije", + "Keep both": "Zadrži sve", + "Verify Token": "Provjeri Token", + "Setup 2FA": "Postavi dvofaktorsku autentikaciju", + "Enable 2FA": "Omogući dvofaktorsku autentikaciju", + "Disable 2FA": "Onemogući dvofaktorsku autentikaciju", + "2FA Settings": "Postavke 2FA", + "Two Factor Authentication": "Dvofaktorska autentikacija", + "Active": "Aktivna", + "Inactive": "Neaktivno", + "Token": "Token", + "Show URI": "Pokaži URI", + "Tags": "Oznake", + "Add New below or Select...": "Dodajte novu oznaku ispod ili odaberite...", + "Tag with this name already exist.": "Oznaka s tim nazivom već postoji", + "Tag with this value already exist.": "Oznaka s tom vrijednošću već postoji.", + "color": "Boja", + "value (optional)": "Vrijednost (neobavezno)", + "Gray": "Siva", + "Red": "Crvena", + "Orange": "Narančasta", + "Green": "Zelena", + "Blue": "Plava", + "Indigo": "Indigo", + "Purple": "Ljubičasta", + "Pink": "Ružičasta", + "Search...": "Pretraga...", + "Avg. Ping": "Prosječni odziv", + "Avg. Response": "Prosječni odgovor", + "Entry Page": "Početna stranica", + "statusPageNothing": "Ovdje nema ničega, dodajte grupu ili monitor.", + "No Services": "Nema usluga", + "All Systems Operational": "Svi sustavi su operativni", + "Partially Degraded Service": "Usluga djelomično nedostupna", + "Degraded Service": "Usluga nedostupna", + "Add Group": "Dodaj grupu", + "Add a monitor": "Dodaj monitor", + "Edit Status Page": "Uredi Statusnu stranicu", + "Go to Dashboard": "Na Kontrolnu ploču", + "Status Page": "Statusna stranica", + "Status Pages": "Statusne stranice", + "defaultNotificationName": "Moja {number}. {notification} obavijest", + "here": "ovdje", + "Required": "Potrebno", + "telegram": "Telegram", + "Bot Token": "Token bota", + "wayToGetTelegramToken": "Token možete nabaviti preko {0}.", + "Chat ID": "ID razgovora", + "supportTelegramChatID": "Podržani su ID-jevi izravnih razgovora, grupa i kanala", + "wayToGetTelegramChatID": "ID razgovora možete saznati tako da botu pošaljete poruku te odete na ovaj URL:", + "YOUR BOT TOKEN HERE": "OVDJE IDE TOKEN BOTA", + "chatIDNotFound": "ID razgovora nije pronađen; prvo morate poslati poruku botu", + "webhook": "Webhook", + "Post URL": "URL Post zahtjeva", + "Content Type": "Tip sadržaja (Content Type)", + "webhookJsonDesc": "{0} je dobra opcija za moderne HTTP poslužitelje poput Express.js-a", + "webhookFormDataDesc": "{multipart} je moguća alternativa za PHP, samo je potrebno parsirati JSON koristeći {decodeFunction}", + "smtp": "E-mail (SMTP)", + "secureOptionNone": "Bez sigurnosti / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Ignoriraj greške TLS-a", + "From Email": "Adresa za \"From\" polje", + "emailCustomSubject": "Prilagođeno \"Subject\" polje", + "To Email": "Odredišne adrese e-pošte", + "smtpCC": "Cc", + "smtpBCC": "Bcc", + "discord": "Discord", + "Discord Webhook URL": "URL Discord webhooka", + "wayToGetDiscordURL": "Ovo možete dobiti tako da odete na Postavke servera -> Integracije -> Napravi webhook", + "Bot Display Name": "Nadimak Bota unutar servera", + "Prefix Custom Message": "Prefiks prilagođene poruke", + "Hello @everyone is...": "Pozdrav {'@'}everyone...", + "teams": "Microsoft Teams", + "Webhook URL": "URL webhooka", + "wayToGetTeamsURL": "Više informacija o Teams webhookovima možete pročitati {0}.", + "signal": "Signal", + "Number": "Broj", + "Recipients": "Primatelji", + "needSignalAPI": "Potreban je klijent s REST sučeljem.", + "wayToCheckSignalURL": "Više informacija o postavljanju Signal klijenta:", + "signalImportant": "VAŽNO: Grupe i brojevi se ne mogu istovremeno koristiti kao primatelji!", + "gotify": "Gotify", + "Application Token": "Token Aplikacije", + "Server URL": "URL poslužitelja", + "Priority": "Prioritet", + "slack": "Slack", + "Icon Emoji": "Emotikon", + "Channel Name": "Naziv kanala", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "Dodatne informacije o webhookovima su dostupne na: {0}", + "aboutChannelName": "Unesite ime {0} kanala u polju Naziv kanala ako želite zaobići webhook kanal. Primjerice: #neki-kanal", + "aboutKumaURL": "Ako je polje \"Uptime Kuma URL\" prazno, koristi se zadana vrijednost koja vodi na GitHub stranicu projekta.", + "emojiCheatSheet": "Popis emotikona: {0}", + "rocket.chat": "Rocket.Chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "clicksendsms": "ClickSend SMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Podržava preko 50 usluga za obavijesti)", + "pushbullet": "Pushbullet", + "line": "LINE", + "mattermost": "Mattermost", + "User Key": "Korisnički ključ", + "Device": "Uređaji", + "Message Title": "Naslov poruke", + "Notification Sound": "Zvuk obavijesti", + "More info on:": "Više informacija na: {0}", + "pushoverDesc1": "Hitni prioritet (2) ima zadani istek vremena od 30 sekundi između ponovnih pokušaja te će isteći nakon 1 sata.", + "pushoverDesc2": "Ako želite slati obavijesti na više uređaja, ispunite polje \"Uređaji\".", + "SMS Type": "Tip SMS-a", + "octopushTypePremium": "Premium (Brzo - preporučeno za obavijesti)", + "octopushTypeLowCost": "Low Cost (Sporo - mobilni operateri ponekad blokiraju ove poruke)", + "checkPrice": "Provjerite {0} cijene:", + "apiCredentials": "Vjerodajnice za API", + "octopushLegacyHint": "Koristite li staru inačicu usluge Octopush (2011-2020) ili noviju inačicu?", + "Check octopush prices": "Provjerite cijene usluge Octopush {0}.", + "octopushPhoneNumber": "Telefonski broj (međunarodni format, primjerice: +38512345678) ", + "octopushSMSSender": "Naziv SMS pošiljatelja : 3-11 alfanumeričkih znakova i razmak (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea ID Uređaja", + "Apprise URL": "URL usluge Apprise", + "Example:": "Primjerice: {0}", + "Read more:": "Pročitajte više: {0}", + "Status:": "Status: {0}", + "Read more": "Pročitaj više", + "appriseInstalled": "Apprise je instaliran.", + "appriseNotInstalled": "Apprise nije instaliran. {0}", + "Access Token": "Pristupni token", + "Channel access token": "Token za pristup kanalu", + "Line Developers Console": "LINE razvojnoj konzoli", + "lineDevConsoleTo": "LINE razvojna konzola - {0}", + "Basic Settings": "Osnovne Postavke", + "User ID": "Korisnički ID", + "Messaging API": "API za razmjenu poruka", + "wayToGetLineChannelToken": "Prvo, pristupite {0}, kreirajte pružatelja usluga te kanal (API za razmjenu poruka), zatim možete dobiti token za pristup kanalu te korisnički ID za polja iznad.", + "Icon URL": "URL slike", + "aboutIconURL": "Možete postaviti poveznicu na sliku u polju \"URL slike\" kako biste spriječili korištenje zadane slike. Ovo se polje neće koristiti ako je postavljeno polje \"Emotikon\".", + "aboutMattermostChannelName": "Možete promijeniti kanal u kojeg webhook šalje tako da ispunite polje \"Naziv kanala\". Ta opcija mora biti omogućena unutar Mattermost postavki za webhook. Primjerice: #neki-kanal", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - jeftina, ali spora opcija koja je često preopterećena. Ograničeno samo na primatelje unutar Poljske.", + "promosmsTypeFlash": "SMS FLASH - Poruka se automatski pojavljuje na uređaju primatelja. Ograničeno samo na primatelje unutar Poljske.", + "promosmsTypeFull": "SMS FULL - Premium razina usluge, dozvoljava postavljanje naziva SMS pošiljatelja (Naziv mora biti registriran). Usluga pouzdana za obavijesti.", + "promosmsTypeSpeed": "SMS SPEED - Usluga najvećeg prioriteta. Brza i pouzdana, ali skupa (otprilike dvostruko skuplja od cijene usluge SMS FULL).", + "promosmsPhoneNumber": "Telefonski broj (za primatelje unutar Poljske nije potrebno navoditi pozivni broj države)", + "promosmsSMSSender": "Naziv SMS pošiljatelja: Registriran naziv ili jedan od zadanih: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu URL webhooka", + "matrixHomeserverURL": "URL Matrix homeservera (uključujući http(s):// te port, ako je potrebno)", + "Internal Room Id": "Interni ID sobe", + "matrixDesc1": "Interni ID sobe se može pronaći u naprednim postavkama sobe unutar Matrix klijenta. ID sobe nalikuje idućem zapisu: !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Preporučuje se stvaranje novog korisnika te suzdržavanje od korištenja pristupnog tokena vlastitog Matrix korisnika. Novog korisnika potrebno je dodati u sobe u kojima želite primati obavijesti. Pristupni token možete dobiti pokretanjem naredbe {0}", + "Method": "Metoda", + "Body": "Tijelo", + "Headers": "Zaglavlja", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "Zaglavlja nisu nije valjani JSON: ", + "BodyInvalidFormat": "Tijelo zahtjeva nije valjani JSON: ", + "Monitor History": "Povijest monitora", + "clearDataOlderThan": "Podaci o povijesti monitora čuvaju se {0} dana.", + "PasswordsDoNotMatch": "Lozinke se ne poklapaju.", + "records": "zapisa", + "One record": "Jedan zapis", + "Showing {from} to {to} of {count} records": "Prikaz zapisa {from}-{to} od sveukupno {count}", + "steamApiKeyDescription": "Za praćenje Steam poslužitelja za igru, potrebno je imati Steam Web-API ključ. Možete registrirati vlastiti ključ ovdje: ", + "Current User": "Trenutni korisnik", + "recent": "Nedavno", + "Done": "Gotovo", + "Info": "Informacije", + "Security": "Sigurnost", + "Shrink Database": "Smanji bazu podataka", + "Pick a RR-Type...": "Odaberite vrstu DNS zapisa od navedenih...", + "Pick Accepted Status Codes...": "Odaberite HTTP statusne kodove koji će biti prihvaćeni...", + "Steam API Key": "Steam API ključ", + "Default": "Zadano", + "HTTP Options": "HTTP Postavke", + "Create Incident": "Novi izvještaj o incidentu", + "Title": "Naslov", + "Content": "Sadržaj", + "Style": "Stil", + "info": "informacija", + "warning": "upozorenje", + "danger": "opasnost", + "primary": "primarno", + "light": "svijetlo", + "dark": "tamno", + "Post": "Objavi", + "Created": "Stvoreno", + "Last Updated": "Uređeno", + "Please input title and content": "Naslov i sadržaj ne mogu biti prazni", + "Unpin": "Ukloni", + "Switch to Light Theme": "Prebaci na svijetli način", + "Switch to Dark Theme": "Prebaci na tamni način", + "Show Tags": "Pokaži oznake", + "Hide Tags": "Sakrij oznake", + "Description": "Opis", + "No monitors available.": "Nema dostupnih monitora.", + "Add one": "Stvori jednog", + "No Monitors": "Bez monitora", + "Untitled Group": "Bezimena grupa", + "Services": "Usluge", + "Discard": "Odbaci", + "Cancel": "Otkaži", + "Powered by": "Pokreće", + "Saved": "Spremljeno", + "PushByTechulus": "Push by Techulus", + "GoogleChat": "Google Chat (preko platforme Google Workspace)", + "shrinkDatabaseDescription": "Pokreni VACUUM operaciju za SQLite. Ako je baza podataka kreirana nakon inačice 1.10.0, AUTO_VACUUM opcija već je uključena te ova akcija nije nužna.", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API korisničko ime (uključujući webapi_ prefiks)", + "serwersmsAPIPassword": "API lozinka", + "serwersmsPhoneNumber": "Broj telefona", + "serwersmsSenderName": "Ime SMS pošiljatelja (registrirano preko korisničkog portala)", + "stackfield": "Stackfield", + "smtpDkimSettings": "DKIM postavke", + "smtpDkimDesc": "Za više informacija, postoji Nodemailer DKIM {0}.", + "documentation": "dokumentacija", + "smtpDkimDomain": "Domena", + "smtpDkimKeySelector": "Odabir ključa", + "smtpDkimPrivateKey": "Privatni ključ", + "smtpDkimHashAlgo": "Hash algoritam (neobavezno)", + "smtpDkimheaderFieldNames": "Ključevi zaglavlja za potpis (neobavezno)", + "smtpDkimskipFields": "Ključevi zaglavlja koji se neće potpisati (neobavezno)", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "Krajnja točka API-ja (Endpoint)", + "alertaEnvironment": "Okruženje (Environment)", + "alertaApiKey": "API ključ", + "alertaAlertState": "Stanje upozorenja", + "alertaRecoverState": "Stanje oporavka", + "deleteStatusPageMsg": "Sigurno želite obrisati ovu statusnu stranicu?", + "resendEveryXTimes": "Ponovno pošalji svakih {0} puta", + "resendDisabled": "Ponovno slanje je onemogućeno", + "dnsPortDescription": "Port DNS poslužitelja. Zadana vrijednost je 53. Moguće je promijeniti ga u svakom trenutku.", + "Resend Notification if Down X times consequently": "Ponovno pošalji obavijest ako je usluga nedostupna više puta zaredom", + "topic": "Tema", + "topicExplanation": "MQTT tema koja će se monitorirati", + "successMessage": "Poruka o uspjehu", + "successMessageExplanation": "MQTT poruka koja se smatra uspješnom", + "error": "greška", + "critical": "kritično", + "Customize": "Customize", + "Custom Footer": "Prilagođeno podnožje", + "Custom CSS": "Prilagođeni CSS", + "wayToGetPagerDutyKey": "Ključ možete dobiti odlaskom na \"Service -> Service Directory -> (Odabrani servis) -> Integrations -> Add integration\". Ovdje pretražite za \"Events API V2\". Više informacija {0}", + "Integration Key": "Ključ integracije", + "Integration URL": "URL integracije", + "Auto resolve or acknowledged": "Automatsko razrješavanje i priznavanje", + "do nothing": "Ne radi ništa", + "auto acknowledged": "Automatsko priznavanje", + "auto resolve": "Automatsko razrješavanje", + "Proxies": "Proxy poslužitelji", + "default": "Zadano", + "enabled": "Omogućeno", + "setAsDefault": "Postavi kao zadano", + "deleteProxyMsg": "Sigurno želite obrisati ovaj proxy za sve monitore?", + "proxyDescription": "Proxy poslužitelji moraju biti dodijeljni monitoru kako bi funkcionirali.", + "enableProxyDescription": "Onemogućeni proxy poslužitelj neće imati učinak na zahtjeve monitora. Možete privremeno onemogućiti proxy poslužitelja za sve monitore.", + "setAsDefaultProxyDescription": "Ovaj proxy poslužitelj bit će odmah omogućen za nove monitore. I dalje ga možete onemogućiti za svaki monitor zasebno.", + "Certificate Chain": "Lanac certifikata", + "Valid": "Važeći", + "Invalid": "Nevažeći", + "AccessKeyId": "AccessKey ID", + "SecretAccessKey": "AccessKey tajni ključ", + "PhoneNumbers": "Telefonski brojevi", + "TemplateCode": "Predložak koda", + "SignName": "Potpis", + "Sms template must contain parameters: ": "SMS predložak mora sadržavati parametre: ", + "Bark Endpoint": "Bark krajnja točka (endpoint)", + "Bark Group": "Bark grupa", + "Bark Sound": "Bark zvuk", + "WebHookUrl": "WebHookUrl", + "SecretKey": "Tajni ključ", + "For safety, must use secret key": "Korištenje tajnog ključa je obavezno", + "Device Token": "Token uređaja", + "Platform": "Platforma", + "iOS": "iOS", + "Android": "Android", + "Huawei": "Huawei", + "High": "Visoko", + "Retry": "Ponovnih pokušaja", + "Topic": "Tema", + "WeCom Bot Key": "WeCom ključ Bota", + "Setup Proxy": "Dodaj proxy poslužitelj", + "Proxy Protocol": "Protokol", + "Proxy Server": "Proxy poslužitelj", + "Proxy server has authentication": "Proxy poslužitelj ima autentikaciju", + "User": "Korisnik", + "Installed": "Instalirano", + "Not installed": "Nije instalirano", + "Running": "Pokrenuto", + "Not running": "Nije pokrenuto", + "Remove Token": "Ukloni Token", + "Start": "Pokreni", + "Stop": "Zaustavi", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "Dodaj novu statusnu stranicu", + "Slug": "Slug", + "Accept characters:": "Dozvoljeni znakovi:", + "startOrEndWithOnly": "Započinje ili završava znakovima {0}", + "No consecutive dashes": "Bez uzastopnih povlaka", + "Next": "Sljedeće", + "The slug is already taken. Please choose another slug.": "Slug je zauzet. Odaberite novi slug.", + "No Proxy": "Bez proxy poslužitelja", + "Authentication": "Autentikacija", + "HTTP Basic Auth": "HTTP Basic Auth", + "New Status Page": "Dodaj statusnu stranicu", + "Page Not Found": "Stranica nije pronađena", + "Reverse Proxy": "Reverzni proxy", + "Backup": "Sigurnosno kopiranje", + "About": "O Uptime Kumi", + "wayToGetCloudflaredURL": "(Preuzmite cloudflared s {0})", + "cloudflareWebsite": "Cloudflare web stranice", + "Message:": "Poruka:", + "Don't know how to get the token? Please read the guide:": "Ne znate kako doći do tokena? Pročitajte vodič:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Trenutna veza možda bude prekinuta jer se koristi Cloudflare tuneliranje. Sigurno želite zaustaviti? Unesite lozinku za potvrdu.", + "HTTP Headers": "HTTP zaglavlja", + "Trust Proxy": "Vjeruj proxy poslužitelju", + "Other Software": "Ostali programi", + "For example: nginx, Apache and Traefik.": "Primjerice: nginx, Apache ili Traefik.", + "Please read": "Molimo pročitajte", + "Subject:": "Predmet:", + "Valid To:": "Valjano do:", + "Days Remaining:": "Preostalo dana:", + "Issuer:": "Izdavatelj:", + "Fingerprint:": "Fingerprint:", + "No status pages": "Nema statusnih stranica", + "Domain Name Expiry Notification": "Obavijest za istek domena", + "Proxy": "Proxy", + "Date Created": "Datum stvaranja", + "HomeAssistant": "Home Assistant", + "onebotHttpAddress": "OneBot HTTP adresa", + "onebotMessageType": "OneBot tip poruke", + "onebotGroupMessage": "Grupna", + "onebotPrivateMessage": "Privatna", + "onebotUserOrGroupId": "ID korisnika/grupe", + "onebotSafetyTips": "Pristupni token mora biti postavljen", + "PushDeer Key": "PushDeer ključ", + "Footer Text": "Tekst podnožja", + "Show Powered By": "Pokaži natpis 'Pokreće...'", + "Domain Names": "Domene", + "signedInDisp": "Prijavljeni ste kao {0}", + "signedInDispDisabled": "Autentikacija onemogućena.", + "RadiusSecret": "Radius Tajna", + "RadiusSecretDescription": "Dijeljena Tajna između klijenta i poslužitelja", + "RadiusCalledStationId": "Called Station ID", + "RadiusCalledStationIdDescription": "Identifikator pozivne stanice", + "RadiusCallingStationId": "Calling Station ID", + "RadiusCallingStationIdDescription": "Identifikator pozivajuće stanice", + "Certificate Expiry Notification": "Obavijest za istek certifikata", + "API Username": "API korisničko ime", + "API Key": "API ključ", + "Recipient Number": "Broj primatelja", + "From Name/Number": "Naziv/broj pošiljatelja", + "Leave blank to use a shared sender number.": "Ostaviti prazno za korištenje dijeljenog broja pošiljatelja.", + "Octopush API Version": "Octopush verzija API-ja", + "Legacy Octopush-DM": "Legacy Octopush-DM", + "endpoint": "krajnja točka (endpoint)", + "octopushAPIKey": "\"API ključ\" iz HTTP API postavki", + "octopushLogin": "\"Korisničko ime\" iz HTTP API postavki", + "promosmsLogin": "API korisničko ime", + "promosmsPassword": "API lozinka", + "pushoversounds pushover": "Pushover (default)", + "pushoversounds bike": "Bike", + "pushoversounds bugle": "Bugle", + "pushoversounds cashregister": "Cash Register", + "pushoversounds classical": "Classical", + "pushoversounds cosmic": "Cosmic", + "pushoversounds falling": "Falling", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Incoming", + "pushoversounds intermission": "Intermission", + "pushoversounds magic": "Magic", + "pushoversounds mechanical": "Mechanical", + "pushoversounds pianobar": "Piano Bar", + "pushoversounds siren": "Siren", + "pushoversounds spacealarm": "Space Alarm", + "pushoversounds tugboat": "Tug Boat", + "pushoversounds alien": "Alien Alarm (long)", + "pushoversounds climb": "Climb (long)", + "pushoversounds persistent": "Persistent (long)", + "pushoversounds echo": "Pushover Echo (long)", + "pushoversounds updown": "Up Down (long)", + "pushoversounds vibrate": "Vibrate Only", + "pushoversounds none": "None (silent)", + "pushyAPIKey": "Tajni API ključ", + "pushyToken": "Token uređaja", + "Show update if available": "Pokaži moguću nadogradnju", + "Also check beta release": "Provjeravaj i za beta izdanja", + "Using a Reverse Proxy?": "Koristi li se reverzni proxy?", + "Check how to config it for WebSocket": "Provjerite kako se konfigurira za WebSocket protokol", + "Steam Game Server": "Steam poslužitelj igre", + "Most likely causes:": "Najvjerojatniji uzroci:", + "The resource is no longer available.": "Resurs više nije dostupan.", + "There might be a typing error in the address.": "Možda je nastala greška pri upisu adrese.", + "What you can try:": "Što možete pokušati:", + "Retype the address.": "Ponovno napišite adresu.", + "Go back to the previous page.": "Vratite se na prethodnu stranicu.", + "Coming Soon": "Dolazi uskoro", + "wayToGetClickSendSMSToken": "Možete dobiti API korisničko ime i API ključ sa {0}.", + "Connection String": "Tekst veze", + "Query": "Upit", + "settingsCertificateExpiry": "TLS istek certifikata", + "certificationExpiryDescription": "HTTPS monitori će obavijesiti kada je istek TLS certifikata za:", + "Setup Docker Host": "Dodaj Docker domaćina", + "Connection Type": "Tip veze", + "Docker Daemon": "Docker daemon", + "deleteDockerHostMsg": "Sigurno želite izbrisati ovog Docker domaćina za sve monitore?", + "socket": "Docker socket", + "tcp": "TCP / HTTP", + "Docker Container": "Docker kontejner", + "Container Name / ID": "Naziv / ID kontejnera", + "Docker Host": "Docker domaćin", + "Docker Hosts": "Docker domaćini", + "ntfy Topic": "ntfy tema", + "Domain": "Domena", + "Workstation": "Radna stanica", + "disableCloudflaredNoAuthMsg": "Lozinka nije nužna dok je isključena autentikacija.", + "trustProxyDescription": "Vjeruj 'X-Forwarded-*' zaglavljima. Ako želite dobiti ispravnu IP adresu klijenta i Uptime Kuma je iza reverznog proxy poslužitelja, trebate omogućiti ovo.", + "wayToGetLineNotifyToken": "Možete dobiti pristupni token sa {0}", + "Examples": "Primjeri", + "Home Assistant URL": "URL Home Assistanta", + "Long-Lived Access Token": "Dugotrajni pristupni token", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Dugotrajni pristupni token može se kreirati klikom na korisničko ime (dolje lijevo) u Home Assistantu, pomicanjem do dna, te klikom na 'Create Token'. ", + "Notification Service": "Notification Service", + "default: notify all devices": "zadano ponašanje: obavijesti sve uređaje", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Popis servisa za obavijesti u Home Assistantu nalaze se pod \"Developer Tools > Services\" te pretražiti \"notification\".", + "Automations can optionally be triggered in Home Assistant:": "Automacije se mogu okinuti u Home Assistantu:", + "Trigger type:": "Tip triggera:", + "Event type:": "Tip eventa:", + "Event data:": "Podaci eventa:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Potrebno je i odabrati akciju za izvođenje na Home Assistantu.", + "Frontend Version": "Inačica sučelja", + "Frontend Version do not match backend version!": "Inačica sučelja ne odgovara poslužitelju!" +} diff --git a/src/lang/hu.json b/src/lang/hu.json new file mode 100644 index 000000000..78036a1f5 --- /dev/null +++ b/src/lang/hu.json @@ -0,0 +1,376 @@ +{ + "languageName": "Magyar", + "checkEverySecond": "Ellenőrzés {0} másodpercenként", + "retryCheckEverySecond": "Újrapróbál {0} másodpercenként.", + "retriesDescription": "Maximális próbálkozás mielőtt a szolgáltatás 'Leállt' jelölést kap és értesítés kerül kiküldésre", + "ignoreTLSError": "TLS/SSL hibák figyelmen kívül hagyása HTTPS weboldalaknál", + "upsideDownModeDescription": "Az állapot megfordítása. Ha a szolgáltatás elérhető, akkor lesz leállt állapotú.", + "maxRedirectDescription": "Az átirányítások maximális száma. állítsa 0-ra az átirányítás tiltásához.", + "acceptedStatusCodesDescription": "Válassza ki az állapot kódokat amelyek sikeres válasznak fognak számítani.", + "passwordNotMatchMsg": "A megismételt jelszó nem egyezik.", + "notificationDescription": "Kérem, rendeljen egy értesítést a figyeléshez, hogy működjön.", + "keywordDescription": "Kulcsszó keresése a HTML-ben vagy a JSON válaszban. (kis-nagybetű érzékeny)", + "pauseDashboardHome": "Szünetel", + "deleteMonitorMsg": "Biztos, hogy törölni akarja ezt a figyelőt?", + "deleteNotificationMsg": "Biztos, hogy törölni akarja ezt az értesítést az összes figyelőnél?", + "resolverserverDescription": "A Cloudflare az alapértelmezett szerver, bármikor meg tudja változtatni a resolver server-t.", + "rrtypeDescription": "Válassza ki az RR-típust a figyelőhöz", + "pauseMonitorMsg": "Biztos, hogy szüneteltetni akarja?", + "enableDefaultNotificationDescription": "Minden új figyelőhöz ez az értesítés engedélyezett lesz alapértelmezetten. Kikapcsolhatja az értesítést külön minden figyelőnél.", + "clearEventsMsg": "Biztos, hogy törölni akar miden eseményt ennél a figyelnél?", + "clearHeartbeatsMsg": "Biztos, hogy törölni akar minden életjelet ennél a figyelőnél?", + "confirmClearStatisticsMsg": "Biztos, hogy törölni akar MINDEN statisztikát?", + "importHandleDescription": "Válassza a 'Meglévő kihagyását', ha ki szeretné hagyni az azonos nevő figyelőket vagy értesítésket. A 'Felülírás' törölni fog minden meglévő figyelőt és értesítést.", + "confirmImportMsg": "Biztos, hogy importálja a mentést? Győződjön meg róla, hogy jól választotta ki az importálás opciót.", + "twoFAVerifyLabel": "Kérem, adja meg a token-t, hogy a 2FA működését ellenőrizzük", + "tokenValidSettingsMsg": "A token érvényes! El tudja menteni a 2FA beállításait.", + "confirmEnableTwoFAMsg": "Biztosan engedélyezi a 2FA-t?", + "confirmDisableTwoFAMsg": "Biztosan letiltja a 2FA-t?", + "Settings": "Beállítások", + "Dashboard": "Irányítópult", + "New Update": "Új frissítés", + "Language": "Nyelv", + "Appearance": "Megjelenés", + "Theme": "Téma", + "General": "Általános", + "Version": "Verzió", + "Check Update On GitHub": "Frissítések keresése a GitHub-on", + "List": "Lista", + "Add": "Hozzáadás", + "Add New Monitor": "Új figyelő hozzáadása", + "Quick Stats": "Gyors statisztikák", + "Up": "Működik", + "Down": "Leállt", + "Pending": "Függőben", + "Unknown": "Ismeretlen", + "Pause": "Szünet", + "Name": "Név", + "Status": "Állapot", + "DateTime": "Időpont", + "Message": "Üzenet", + "No important events": "Nincs fontos esemény", + "Resume": "Folytatás", + "Edit": "Szerkesztés", + "Delete": "Törlés", + "Current": "Aktuális", + "Uptime": "Uptime", + "Cert Exp.": "SSL lejárat", + "day": "nap", + "-day": " nap", + "hour": "óra", + "-hour": " óra", + "Response": "Válasz", + "Ping": "Ping", + "Monitor Type": "Figyelő típusa", + "Keyword": "Kulcsszó", + "Friendly Name": "Rövid név", + "URL": "URL", + "Hostname": "Hosztnév", + "Port": "Port", + "Heartbeat Interval": "Életjel időköz", + "Retries": "Újrapróbálkozás", + "Heartbeat Retry Interval": "Életjel újrapróbálkozások időköze", + "Advanced": "Haladó", + "Upside Down Mode": "Fordított mód", + "Max. Redirects": "Max. átirányítás", + "Accepted Status Codes": "Elfogadott állapot kódok", + "Save": "Mentés", + "Notifications": "Értesítések", + "Not available, please setup.": "Nem elérhető, állítsa be.", + "Setup Notification": "Értesítés beállítása", + "Light": "Világos", + "Dark": "Sötét", + "Auto": "Auto", + "Theme - Heartbeat Bar": "Téma - Életjel sáv", + "Normal": "Normál", + "Bottom": "Nyomógomb", + "None": "Nincs", + "Timezone": "Időzóna", + "Search Engine Visibility": "Látható a keresőmotoroknak", + "Allow indexing": "Indexelés engedélyezése", + "Discourage search engines from indexing site": "Keresőmotorok elriasztása az oldal indexelésétől", + "Change Password": "Jelszó változtatása", + "Current Password": "Jelenlegi jelszó", + "New Password": "Új jelszó", + "Repeat New Password": "Ismételje meg az új jelszót", + "Update Password": "Jelszó módosítása", + "Disable Auth": "Hitelesítés tiltása", + "Enable Auth": "Hitelesítés engedélyezése", + "disableauth.message1": "Biztos benne, hogy kikapcsolja a hitelesítést?", + "disableauth.message2": "Akkor érdemes, ha van 3rd-party hitelesítés az Uptime Kuma-t megelőzően mint a Cloudflare Access.", + "Please use this option carefully!": "Használja megfontoltan!", + "Logout": "Kijelentkezés", + "Leave": "Elhagy", + "I understand, please disable": "Megértettem, kérem tiltsa le", + "Confirm": "Megerősítés", + "Yes": "Igen", + "No": "Nem", + "Username": "Felhasználónév", + "Password": "Jelszó", + "Remember me": "Emlékezzen rám", + "Login": "Bejelentkezés", + "No Monitors, please": "Nincs figyelő, kérem", + "add one": "adjon hozzá egyet", + "Notification Type": "Értesítés típusa", + "Email": "Email", + "Test": "Teszt", + "Certificate Info": "Tanúsítvány információk", + "Resolver Server": "DNS szerver", + "Resource Record Type": "Resource Record típusa", + "Last Result": "Utolsó eredmény", + "Create your admin account": "Hozza létre az adminisztrátor felhasználót", + "Repeat Password": "Jelszó ismétlése", + "Import Backup": "Mentés importálása", + "Export Backup": "Mentés exportálása", + "Export": "Exportálás", + "Import": "Importálás", + "respTime": "Válaszidő (ms)", + "notAvailableShort": "N/A", + "Default enabled": "Alapértelmezetten engedélyezett", + "Apply on all existing monitors": "Alkalmazza az összes figyelőre", + "Create": "Létrehozás", + "Clear Data": "Adatok törlése", + "Events": "Események", + "Heartbeats": "Életjelek", + "Auto Get": "Auto lekérd.", + "backupDescription": "Mentheti az összes figyelőt és értesítést egy JSON fájlba.", + "backupDescription2": "Megj: Történeti és esemény adatokat nem tartalmaz.", + "backupDescription3": "Érzékeny adatok, pl. szolgáltatás kulcsok is vannak az export fájlban. Figyeljen erre!", + "alertNoFile": "Válaszzon ki egy fájlt az importáláshoz.", + "alertWrongFileType": "Válasszon egy JSON fájlt.", + "Clear all statistics": "Összes statisztika törlése", + "Skip existing": "Meglévő kihagyása", + "Overwrite": "Felülírás", + "Options": "Opciók", + "Keep both": "Mindegyiket tartsa meg", + "Verify Token": "Token ellenőrzése", + "Setup 2FA": "2FA beállítása", + "Enable 2FA": "2FA engedélyezése", + "Disable 2FA": "2FA tiltása", + "2FA Settings": "2FA beállítások", + "Two Factor Authentication": "Kétfaktoros hitelesítés", + "Active": "Aktív", + "Inactive": "Inaktív", + "Token": "Token", + "Show URI": "URI megmutatása", + "Tags": "Címkék", + "Add New below or Select...": "Adjon hozzá lentre vagy válasszon...", + "Tag with this name already exist.": "Ilyen nevű címke már létezik.", + "Tag with this value already exist.": "Ilyen értékű címke már létezik.", + "color": "szín", + "value (optional)": "érték (opcionális)", + "Gray": "Szürke", + "Red": "Piros", + "Orange": "Narancs", + "Green": "Zöld", + "Blue": "Kék", + "Indigo": "Indigó", + "Purple": "Lila", + "Pink": "Rózsaszín", + "Search...": "Keres...", + "Avg. Ping": "Átl. ping", + "Avg. Response": "Átl. válasz", + "Entry Page": "Nyitólap", + "statusPageNothing": "Semmi nincs itt. Adjon hozzá egy vagy több figyelőt.", + "No Services": "Nincs szolgáltatás", + "All Systems Operational": "Minden rendszer működik", + "Partially Degraded Service": "Részlegesen leállt szolgáltatás", + "Degraded Service": "Leállt szolgáltatás", + "Add Group": "Csoport hozzáadása", + "Add a monitor": "Figyelő hozzáadása", + "Edit Status Page": "Státusz oldal szerkesztése", + "Go to Dashboard": "Irányítópulthoz", + "telegram": "Telegram", + "webhook": "Webhook", + "smtp": "Email (SMTP)", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (50+ értesítési szolgáltatás)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "Status Page": "Státusz oldal", + "Status Pages": "Státusz oldalak", + "Primary Base URL": "Elsődleges URL", + "Push URL": "Meghívandó URL", + "needPushEvery": "Ezt az URL-t kell meghívni minden {0} másodpercben.", + "pushOptionalParams": "Opcionális paraméterek: {0}", + "defaultNotificationName": "{notification} értesítésem ({number})", + "here": "itt", + "Required": "Kötelező", + "Bot Token": "BOT token", + "wayToGetTelegramToken": "Innen kaphat token-t: {0}.", + "Chat ID": "Csevegés ID", + "supportTelegramChatID": "Támogatja a közvetlen csevegést, csoportnak küldést és csatona ID-t is", + "wayToGetTelegramChatID": "A csevegés ID-t kinyerheti azzal, hogy küld egy üzenetet a bot-nak és erre az URL-re ellátogat, ahol láthatja a chat_id:-t", + "YOUR BOT TOKEN HERE": "AZ ÖN BOT TOKENJE ITT", + "chatIDNotFound": "Csevegés ID nem található, küldjön egy első üzenetet a bot-nak", + "Post URL": "Cél URL (Post)", + "Content Type": "Tartalom típus (Content Type)", + "webhookJsonDesc": "{0} ideális a moderh HTTP szerverekhez, mint az Express.js", + "webhookFormDataDesc": "{multipart} ideális a PHP-hez. A JSON értelmezhető ezzel: {decodeFunction}", + "secureOptionNone": "Nincs / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "TLS hiba figyelmen kívül hagyása", + "From Email": "Feladó email", + "emailCustomSubject": "Egyedi tárgy", + "To Email": "Cél email", + "smtpCC": "Másolat", + "smtpBCC": "Titkos másolat", + "Discord Webhook URL": "Discord cím (webhook URL)", + "wayToGetDiscordURL": "Kaphat egy ilyet, ha ellátogat a Server Settings -> Integrations -> Create Webhook oldalra", + "Bot Display Name": "Bot megjelenő neve", + "Prefix Custom Message": "Egyedi előtét üzenet", + "Hello @everyone is...": "Hello {'@'}mindenki...", + "Webhook URL": "Cím (webhook URL)", + "wayToGetTeamsURL": "Itt megnézheti, hogy kell ilyen URL-t készíteni: {0}.", + "Number": "Szám", + "Recipients": "Címzettek", + "needSignalAPI": "Egy Signal kliensre van szüksége, amihez REST API tartozik.", + "wayToCheckSignalURL": "Itt megnézheti, hogy hozhat létre egyet:", + "signalImportant": "FONTOS! Nem keverheti a csoportokat és számokat a címzetteknél.", + "Application Token": "Alkalmazás token", + "Server URL": "Szerver URL", + "Priority": "Prioritás", + "Icon Emoji": "Emoji ikonok", + "Channel Name": "Csatorna neve", + "Uptime Kuma URL": "Uptime Kuma cím", + "aboutWebhooks": "Webhook-okról több info: {0}", + "aboutChannelName": "Adja meg a {0} csatorna nevét ha szeretné elkerülni a webhook-ot. Pl: #masik-csatorna", + "aboutKumaURL": "Ha üresen hagyja a Uptime Kuma cím mezőt, akkor a projekt GitHub oldala lesz az alapértelmezett.", + "emojiCheatSheet": "Emoji csalás: {0}", + "clicksendsms": "ClickSend SMS", + "User Key": "Felhasználói kulcs", + "Device": "Eszköz", + "Message Title": "Üzenet címe", + "Notification Sound": "Értesítési hang", + "More info on:": "További információ: {0}", + "pushoverDesc1": "A vészhelyzeti prioritásnak (2) 30 másodperc az újrapróbálkozási alapértéke és egy óra után lejár.", + "pushoverDesc2": "Ha különböző eszközökre szeretne értesítést küldeni, töltse ki az Eszköz mezőt.", + "SMS Type": "SMS típusa", + "octopushTypePremium": "Premium (Fast - recommended for alerting)", + "octopushTypeLowCost": "Low Cost (Slow - sometimes blocked by operator)", + "checkPrice": "Nézze meg az {0} féle árat:", + "apiCredentials": "API kulcsok", + "octopushLegacyHint": "Az Octopush régi (2011-2020) verzióját használja vagy az újat?", + "Check octopush prices": "Nézze meg az Octopush {0} féle árát.", + "octopushPhoneNumber": "Telefonszám (nemz. formátum, pl : +36705554433) ", + "octopushSMSSender": "SMS küldő neve : 3-11 betű/szám (a-zA-Z0-9) vagy szóköz", + "LunaSea Device ID": "LunaSea eszköz ID", + "Apprise URL": "Apprise cím (URL)", + "Example:": "Például: {0}", + "Read more:": "Itt olvashat róla: {0}", + "Status:": "Állapot: {0}", + "Read more": "Tovább olvasom", + "appriseInstalled": "Apprise telepítve.", + "appriseNotInstalled": "Apprise nincs telepítve. {0}", + "Access Token": "Elérési token", + "Channel access token": "Csatorna elérési token", + "Line Developers Console": "Line Developers konzol", + "lineDevConsoleTo": "Line Developers konzol - {0}", + "Basic Settings": "Alap beállítások", + "User ID": "Felhasználó ID", + "Messaging API": "Üzenet API", + "wayToGetLineChannelToken": "{0} első eléréséhez készítsen egy Provider-t és csatornát (Messaging API), utána kaphatja meg a csatorna elérési token-t és felhasználó ID-t az alábbi menüpontban.", + "Icon URL": "Ikon cím (URL)", + "aboutIconURL": "Megadhat egy webcímet az Ikon cím mezőben, ezzel felülírva az alapértelmezet képet. Nem kerül felhasználásra, ha az Emoji-k be vannak állítva.", + "aboutMattermostChannelName": "Felülírhatja az alapértelmezett csatornát, ahova a webhook az adatokat küldi. Ehhez töltse ki a \"Csatorna neve\" mezőt (pl: #egyeb-csatorna). A Mattermost webhook beállításaiban további engedélyek szükségesek", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - olcsó, de lassú, gyakran túlterhelt. Csak lengyel címzettekhez.", + "promosmsTypeFlash": "SMS FLASH - Az üzenet automatikusan megjelenik a fogadó eszközön. Csak lengyel címzettekhez.", + "promosmsTypeFull": "SMS FULL - Prémium szintje az SMS-nek. Megadható a feladó neve, de előtte jóváhagyás szükséges. Ideális értesítésekhez.", + "promosmsTypeSpeed": "SMS SPEED - A legmagasabb prioritás a rendszerben. Nagyon gyors és pontos, de költséges (kb. duplája a hagyományos SMS-nek).", + "promosmsPhoneNumber": "Telefonszám (lengyel címzett esetén az országkód elhagyható)", + "promosmsSMSSender": "SMS feladónév: Előre beállított név vagy az alábbiak egyike: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu webhook cím (URL)", + "matrixHomeserverURL": "Homeserver cím (URL http(s):// előtaggal és opcionálisan port-tal)", + "Internal Room Id": "Belső Szoba ID", + "matrixDesc1": "A belső szoba ID-t a szpbák speciális beállítások között találja meg a Matrix kliens programban. Így kell kinéznie: !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Erősen ajánlott készíteni egy új felhasználót és nem a teljes joggal rendelkező felhasználót használni. Az új felhasználó létrehozása után csak azokba a szobákba kell megjhívni a felhasználót, ahol értesítéseket szeretne kapni. Ezzel a művelettel lehet elérési token-t kérni: {0}", + "Method": "Metódus", + "Body": "Törzs", + "Headers": "Fejlécek", + "PushUrl": "Push cím (URL)", + "HeadersInvalidFormat": "A kérés fejléc nem egy valós JSON: ", + "BodyInvalidFormat": "A kérés törzse nem egy valós JSON: ", + "Monitor History": "Vizsgálatok előzményei", + "clearDataOlderThan": "Előzmények megtartása {0} napig.", + "PasswordsDoNotMatch": "Jelszó nem egyezik.", + "records": "sorok", + "One record": "Egy sor", + "steamApiKeyDescription": "Steam Game Server ellenőrzéséhez szükséges egy Steam Web-API kulcs. Itt létrehozhat egy API kulcsot: ", + "Current User": "Felhasználó", + "recent": "Legújabb", + "Done": "Kész", + "Info": "Infó", + "Security": "Biztonság", + "Steam API Key": "Steam API kulcs", + "Shrink Database": "Adatbázis tömörítése", + "Pick a RR-Type...": "Válasszon egy RR-típust...", + "Pick Accepted Status Codes...": "Válasszon olyan kódot, ami elfogadottnak számít...", + "Default": "Alapért.", + "HTTP Options": "HTTP beállítások", + "Create Incident": "Incidens létrehozása", + "Title": "Cím", + "Content": "Tartalom", + "Style": "Stílus", + "info": "info", + "warning": "warning", + "danger": "danger", + "primary": "primary", + "light": "light", + "dark": "dark", + "Post": "Bejegyzés", + "Please input title and content": "Adjon meg címet és tartalmat", + "Created": "Létrehozva", + "Last Updated": "Utolsó mód.", + "Unpin": "Leválaszt", + "Switch to Light Theme": "Világos témára váltás", + "Switch to Dark Theme": "Sötét témára váltás", + "Show Tags": "Címkék mutatása", + "Hide Tags": "Címkék elrejtése", + "Description": "Leírás", + "No monitors available.": "Nincs még figyelő beállítva.", + "Add one": "Adjon hozzá egyet", + "No Monitors": "Nincs figyelő", + "Untitled Group": "Névtelen csoport", + "Services": "Szolgáltatások", + "Discard": "Elvet", + "Cancel": "Mégsem", + "Powered by": "A megoldást szállítja az", + "shrinkDatabaseDescription": "VACUUM futtatása az SQLite-on. Ha az adatbázisod 1.10.0-nál újabb, akkor az AUTO_VACUUM engedélyezve van, nincs szükség a műveletre.", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API felhasználónév (webapi_ előtaggal együtt)", + "serwersmsAPIPassword": "API jelszó", + "serwersmsPhoneNumber": "Telefonszám", + "serwersmsSenderName": "SMS feladó neve (regisztrált név az oldalon)", + "GoogleChat": "Google Chat (csak Google Workspace)", + "stackfield": "Stackfield", + "smtpDkimSettings": "DKIM beállítások", + "smtpDkimDesc": "Nézze meg a Nodemailer DKIM {0} használati szabályokat.", + "documentation": "dokumentáció", + "smtpDkimDomain": "Domain név", + "smtpDkimKeySelector": "Kulcs választó", + "smtpDkimPrivateKey": "Privát kulcs", + "smtpDkimHashAlgo": "Hash algoritmus (nem kötelező)", + "smtpDkimheaderFieldNames": "Fejléc kulcsok a bejelentkezéshez (nem kötelező)", + "smtpDkimskipFields": "Fejléc kulcsok egyéb esetben (nem kötelező)", + "PushByTechulus": "Techulus push", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API végpont", + "alertaEnvironment": "Környezet", + "alertaApiKey": "API kulcs", + "alertaAlertState": "Figyelmeztetési állapot", + "alertaRecoverState": "Visszaállási állapot", + "deleteStatusPageMsg": "Biztos, hogy törölni akarja a státusz oldalt?" +} diff --git a/src/lang/id-ID.json b/src/lang/id-ID.json new file mode 100644 index 000000000..59a06521c --- /dev/null +++ b/src/lang/id-ID.json @@ -0,0 +1,585 @@ +{ + "languageName": "Bahasa Indonesia (Indonesian)", + "checkEverySecond": "Cek Setiap {0} detik.", + "retryCheckEverySecond": "Coba lagi setiap {0} detik.", + "resendEveryXTimes": "Kirim ulang setiap {0} kali", + "resendDisabled": "Kirim ulang dinonaktifkan", + "retriesDescription": "Percobaan ulang maksimum sebelum layanan dinyatakan tidak aktif dan notifikasi dikirim", + "ignoreTLSError": "Abaikan kesalahan TLS/SSL untuk situs web HTTPS", + "upsideDownModeDescription": "Balikkan statusnya. Jika layanan dapat dijangkau, TIDAK AKTIF.", + "maxRedirectDescription": "Jumlah maksimum pengalihan untuk diikuti. Setel ke 0 untuk menonaktifkan pengalihan.", + "acceptedStatusCodesDescription": "Pilih kode status yang dianggap sebagai tanggapan yang berhasil.", + "passwordNotMatchMsg": "Kata sandi kedua tidak cocok.", + "notificationDescription": "Harap atur notifikasi ke monitor agar berfungsi.", + "keywordDescription": "Cari kata kunci dalam code html atau JSON huruf besar-kecil berpengaruh", + "pauseDashboardHome": "Jeda", + "deleteMonitorMsg": "Apakah Anda mau menghapus monitor ini?", + "deleteNotificationMsg": "Apakah Anda mau menghapus notifikasi untuk semua monitor?", + "dnsPortDescription": "Port server DNS. Bawaan menggunakan 53. Anda dapat mengubah port kapan saja.", + "resolverserverDescription": "Cloudflare adalah server bawaan, Anda dapat mengubah server resolver kapan saja.", + "rrtypeDescription": "Pilih RR-Type yang mau Anda monitor", + "pauseMonitorMsg": "Apakah Anda yakin mau menjeda?", + "enableDefaultNotificationDescription": "Untuk setiap monitor baru, notifikasi ini akan diaktifkan secara bawaan. Anda masih dapat menonaktifkan notifikasi secara terpisah untuk setiap monitor.", + "clearEventsMsg": "Apakah Anda yakin mau menghapus semua event di monitor ini?", + "clearHeartbeatsMsg": "Apakah Anda yakin mau menghapus semua heartbeats di monitor ini?", + "confirmClearStatisticsMsg": "Apakah Anda yakin mau menghapus semua statistik?", + "importHandleDescription": "Pilih 'Lewati yang ada' jika Anda ingin melewati setiap monitor atau notifikasi dengan nama yang sama. 'Timpa' akan menghapus setiap monitor dan notifikasi yang ada.", + "confirmImportMsg": "Apakah Anda yakin untuk mengimpor cadangan? Pastikan Anda telah memilih opsi impor yang tepat.", + "twoFAVerifyLabel": "Silakan ketik token Anda untuk memverifikasi bahwa 2FA berfungsi", + "tokenValidSettingsMsg": "Token benar! Anda sekarang dapat menyimpan pengaturan 2FA.", + "confirmEnableTwoFAMsg": "Apakah Anda yakin ingin mengaktifkan 2FA?", + "confirmDisableTwoFAMsg": "Apakah Anda yakin ingin menonaktifkan 2FA?", + "Settings": "Pengaturan", + "Dashboard": "Dasbor", + "New Update": "Pembaruan Baru", + "Language": "Bahasa", + "Appearance": "Tampilan", + "Theme": "Tema", + "General": "Umum", + "Primary Base URL": "URL Dasar Utama", + "Version": "Versi", + "Check Update On GitHub": "Cek Pembaruan di GitHub", + "List": "Daftar", + "Add": "Tambah", + "Add New Monitor": "Tambah Monitor Baru", + "Quick Stats": "Statistik", + "Up": "Aktif", + "Down": "Tidak Aktif", + "Pending": "Tertunda", + "Unknown": "Tidak diketahui", + "Pause": "Jeda", + "Name": "Nama", + "Status": "Status", + "DateTime": "Tanggal Waktu", + "Message": "Pesan", + "No important events": "Tidak ada peristiwa penting", + "Resume": "Lanjut", + "Edit": "Ubah", + "Delete": "Hapus", + "Current": "Saat ini", + "Uptime": "Waktu aktif", + "Cert Exp.": "Batas kedaluwarsa SSL", + "day": "hari | hari-hari", + "-day": "-hari", + "hour": "Jam", + "-hour": "-Jam", + "Response": "Tanggapan", + "Ping": "Ping", + "Monitor Type": "Tipe Monitor", + "Keyword": "Kata Kunci", + "Friendly Name": "Nama yang Ramah", + "URL": "URL", + "Hostname": "Hostname", + "Port": "Port", + "Heartbeat Interval": "Jarak Waktu Heartbeat ", + "Retries": "Coba lagi", + "Heartbeat Retry Interval": "Jarak Waktu Heartbeat Mencoba kembali ", + "Resend Notification if Down X times consequently": "Kirim Ulang Notifikasi jika Tidak Aktif X kali", + "Advanced": "Tingkat Lanjut", + "Upside Down Mode": "Mode Terbalik", + "Max. Redirects": "Maksimal Pengalihan", + "Accepted Status Codes": "Kode Status yang Diterima", + "Push URL": "Push URL", + "needPushEvery": "Anda harus memanggil URL berikut setiap {0} detik..", + "pushOptionalParams": "Parameter tambahan: {0}", + "Save": "Simpan", + "Notifications": "Notifikasi", + "Not available, please setup.": "Tidak tersedia, silakan atur.", + "Setup Notification": "Setel Notifikasi", + "Light": "Terang", + "Dark": "Gelap", + "Auto": "Otomatis", + "Theme - Heartbeat Bar": "Tema - Heartbeat Bar", + "Normal": "Normal", + "Bottom": "Bawah", + "None": "Tidak ada", + "Timezone": "Zona Waktu", + "Search Engine Visibility": "Visibilitas Mesin Pencari", + "Allow indexing": "Mengizinkan untuk diindex", + "Discourage search engines from indexing site": "Mencegah mesin pencari untuk mengindex situs", + "Change Password": "Ganti Sandi", + "Current Password": "Sandi Lama", + "New Password": "Sandi Baru", + "Repeat New Password": "Ulangi Sandi Baru", + "Update Password": "Perbarui Kata Sandi", + "Disable Auth": "Nonaktifkan Autentikasi", + "Enable Auth": "Aktifkan Autentikasi", + "disableauth.message1": "Apakah Anda yakin ingin menonaktifkan autentikasi?", + "disableauth.message2": "Ini untuk mereka yang memiliki autentikasi pihak ketiga diletakkan di depan Uptime Kuma, misalnya akses Cloudflare.", + "Please use this option carefully!": "Gunakan dengan hati-hati.", + "Logout": "Keluar", + "Leave": "Pergi", + "I understand, please disable": "Saya mengerti, silakan dinonaktifkan", + "Confirm": "Konfirmasi", + "Yes": "Ya", + "No": "Tidak", + "Username": "Nama Pengguna", + "Password": "Sandi", + "Remember me": "Ingat saya", + "Login": "Masuk", + "No Monitors, please": "Tidak ada monitor, silakan", + "add one": "tambahkan satu", + "Notification Type": "Tipe Notifikasi", + "Email": "Surel", + "Test": "Tes", + "Certificate Info": "Info Sertifikasi", + "Resolver Server": "Resolver Server", + "Resource Record Type": "Resource Record Type", + "Last Result": "Hasil Terakhir", + "Create your admin account": "Buat akun admin Anda", + "Repeat Password": "Ulangi Sandi", + "Import Backup": "Impor Cadangan", + "Export Backup": "Ekspor Cadangan", + "Export": "Ekspor", + "Import": "Impor", + "respTime": "Tanggapan. Waktu (milidetik)", + "notAvailableShort": "N/A", + "Default enabled": "Bawaan diaktifkan", + "Apply on all existing monitors": "Terapkan pada semua monitor yang ada", + "Create": "Buat", + "Clear Data": "Bersihkan Data", + "Events": "Peristiwa", + "Heartbeats": "Heartbeats", + "Auto Get": "Ambil Otomatis", + "backupDescription": "Anda dapat mencadangkan semua monitor dan semua notifikasi ke dalam berkas JSON.", + "backupDescription2": "Catatan: Data sejarah dan peristiwa tidak disertakan.", + "backupDescription3": "Data sensitif seperti notifikasi token disertakan dalam berkas ekspor, harap simpan dengan hati-hati.", + "alertNoFile": "Silakan pilih berkas untuk diimpor.", + "alertWrongFileType": "Silakan pilih berkas JSON.", + "Clear all statistics": "Hapus semua statistik", + "Skip existing": "Lewati yang ada", + "Overwrite": "Timpa", + "Options": "Opsi", + "Keep both": "Simpan keduanya", + "Verify Token": "Verifikasi Token", + "Setup 2FA": "Pengaturan 2FA", + "Enable 2FA": "Aktifkan 2FA", + "Disable 2FA": "Nonaktifkan 2FA", + "2FA Settings": "Pengaturan 2FA", + "Two Factor Authentication": "Autentikasi Dua Faktor", + "Active": "Aktif", + "Inactive": "Tidak Aktif", + "Token": "Token", + "Show URI": "Lihat URI", + "Tags": "Tanda", + "Add New below or Select...": "Tambahkan Baru di bawah atau Pilih...", + "Tag with this name already exist.": "Tanda dengan nama ini sudah ada.", + "Tag with this value already exist.": "Tanda dengan nilai ini sudah ada.", + "color": "warna", + "value (optional)": "nilai (harus diisi)", + "Gray": "Abu-abu", + "Red": "Merah", + "Orange": "Jingga", + "Green": "Hijau", + "Blue": "Biru", + "Indigo": "Biru Tua", + "Purple": "Ungu", + "Pink": "Merah Muda", + "Search...": "Cari...", + "Avg. Ping": "Rata-rata Ping", + "Avg. Response": "Rata-rata Tanggapan", + "Entry Page": "Halaman Masuk", + "statusPageNothing": "Tidak ada di sini, silakan tambahkan grup atau monitor.", + "No Services": "Tidak ada Layanan", + "All Systems Operational": "Semua Sistem Berfungsi", + "Partially Degraded Service": "Layanan Terdegradasi Sebagian", + "Degraded Service": "Layanan Terdegradasi", + "Add Group": "Tambah Grup", + "Add a monitor": "Tambah monitor", + "Edit Status Page": "Edit Halaman Status", + "Go to Dashboard": "Pergi ke Dasbor", + "Status Page": "Halaman Status", + "Status Pages": "Halaman Status", + "defaultNotificationName": "{notification} saya Peringatan ({number})", + "here": "di sini", + "Required": "Wajib", + "telegram": "Telegram", + "Bot Token": "Bot Token", + "wayToGetTelegramToken": "Anda dapat mendapatkan token dari {0}.", + "Chat ID": "Chat ID", + "supportTelegramChatID": "Mendukung Obrolan Langsung / Grup / Channel Chat ID", + "wayToGetTelegramChatID": "Anda bisa mendapatkan chat id Anda dengan mengirim pesan ke bot dan pergi ke url ini untuk melihat chat_id:", + "YOUR BOT TOKEN HERE": "BOT TOKEN ANDA DI SINI", + "chatIDNotFound": "Chat ID tidak ditemukan, tolong kirim pesan ke bot ini dulu", + "webhook": "Webhook", + "Post URL": "Post URL", + "Content Type": "Tipe konten", + "webhookJsonDesc": "{0} bagus untuk peladen http modern seperti express.js", + "webhookFormDataDesc": "{multipart} bagus untuk PHP, Anda hanya perlu mengurai json dengan {decodeFunction}", + "smtp": "Surel (SMTP)", + "secureOptionNone": "None / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Abaikan Kesalahan TLS", + "From Email": "Dari Email", + "emailCustomSubject": "Subjek", + "To Email": "Ke Email", + "smtpCC": "CC", + "smtpBCC": "BCC", + "discord": "Discord", + "Discord Webhook URL": "Discord Webhook URL", + "wayToGetDiscordURL": "Anda bisa mendapatkan ini dengan pergi ke Server Pengaturan -> Integrasi -> Buat Webhook", + "Bot Display Name": "Nama Bot", + "Prefix Custom Message": "Awalan Pesan", + "Hello @everyone is...": "Halo {'@'}everyone is...", + "teams": "Microsoft Teams", + "Webhook URL": "Webhook URL", + "wayToGetTeamsURL": "Anda dapat mempelajari cara membuat url webhook {0}.", + "signal": "Sinyal", + "Number": "Nomer", + "Recipients": "Penerima", + "needSignalAPI": "Anda harus memiliki klien sinyal dengan REST API.", + "wayToCheckSignalURL": "Anda dapat memeriksa url ini untuk melihat cara menyiapkannya:", + "signalImportant": "PENTING: Anda tidak dapat mencampur grup dan nomor di penerima!", + "gotify": "Gotify", + "Application Token": "Token Aplikasi", + "Server URL": "URL Server", + "Priority": "Prioritas", + "slack": "Slack", + "Icon Emoji": "Ikon Emoji", + "Channel Name": "Nama Saluran", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "Info lain tentang webhook: {0}", + "aboutChannelName": "Masukan nama saluran di {0} Kolom Nama Saluran jika Anda ingin melewati saluran webhook. Contoh: #saluran-lain", + "aboutKumaURL": "Jika Anda membiarkan bidang URL Uptime Kuma kosong, itu akan menjadi bawaan ke halaman Proyek Github.", + "emojiCheatSheet": "Lembar contekan emoji: {0}", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "PushByTechulus": "Push by Techulus", + "octopush": "Octopush", + "promosms": "PromoSMS", + "clicksendsms": "ClickSend SMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Mendukung 50+ layanan notifikasi)", + "GoogleChat": "Google Chat (hanya Google Workspace)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "User Key": "Kunci pengguna", + "Device": "Perangkat", + "Message Title": "Judul Pesan", + "Notification Sound": "Suara Nofifikasi", + "More info on:": "Info lebih lanjut tentang: {0}", + "pushoverDesc1": "Prioritas darurat (2) memiliki batas waktu bawaan 30 detik antara percobaan ulang dan akan kadaluwarsa setelah 1 jam.", + "pushoverDesc2": "Jika Anda ingin mengirim pemberitahuan ke perangkat yang berbeda, isi kolom Perangkat.", + "SMS Type": "Tipe SMS", + "octopushTypePremium": "Premium (Cepat - direkomendasikan untuk mengingatkan)", + "octopushTypeLowCost": "Low Cost (Lambat, terkadang diblokir oleh operator)", + "checkPrice": "Check {0} prices:", + "apiCredentials": "Kredensial API", + "octopushLegacyHint": "Apakah Anda menggunakan Octopush versi lama (2011-2020) atau versi baru?", + "Check octopush prices": "Cek harga octopush {0}.", + "octopushPhoneNumber": "Nomer Telpon/HP (format internasional, contoh : +33612345678) ", + "octopushSMSSender": "Nama Pengirim SMS : 3-11 karakter alfanumerik dan spasi (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Device ID", + "Apprise URL": "Apprise URL", + "Example:": "Contoh: {0}", + "Read more:": "Baca lebih lanjut: {0}", + "Status:": "Status: {0}", + "Read more": "Baca lebih lanjut", + "appriseInstalled": "Apprise diinstall.", + "appriseNotInstalled": "Apprise tidak diinstall. {0}", + "Access Token": "Token Akses", + "Channel access token": "Token akses saluran", + "Line Developers Console": "Konsol Pengembang Line", + "lineDevConsoleTo": "Konsol Pengembang Line - {0}", + "Basic Settings": "Pengaturan Dasar", + "User ID": "ID User", + "Messaging API": "Messaging API", + "wayToGetLineChannelToken": "Pertama akses {0}, buat penyedia dan saluran (Messaging API), lalu Anda bisa mendapatkan token akses saluran dan id pengguna dari item menu yang disebutkan di atas.", + "Icon URL": "Icon URL", + "aboutIconURL": "Anda dapat memberikan tautan ke gambar di \"Icon URL\" untuk mengganti gambar profil bawaan. Tidak akan digunakan jika Ikon Emoji diset.", + "aboutMattermostChannelName": "Anda dapat mengganti saluran bawaan tujuan posting webhook dengan memasukkan nama saluran ke dalam Kolom \"Channel Name\". Ini perlu diaktifkan di pengaturan webhook Mattermost. contoh: #other-channel", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - murah tapi lambat dan sering kelebihan beban. Terbatas hanya untuk penerima Polandia.", + "promosmsTypeFlash": "SMS FLASH - Pesan akan otomatis muncul di perangkat penerima. Terbatas hanya untuk penerima Polandia.", + "promosmsTypeFull": "SMS FULL - SMS tingkat premium, Anda dapat menggunakan Nama Pengirim Anda (Anda harus mendaftarkan nama terlebih dahulu). Dapat diandalkan untuk peringatan.", + "promosmsTypeSpeed": "SMS SPEED - Prioritas tertinggi dalam sistem. Sangat cepat dan dapat diandalkan tetapi mahal (sekitar dua kali lipat dari harga SMS FULL).", + "promosmsPhoneNumber": "Nomor telepon (untuk penerima Polandia Anda dapat melewati kode area)", + "promosmsSMSSender": "Nama Pengirim SMS : Nama pra-registrasi atau salah satu bawaan: InfoSMS, Info SMS, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookUrl", + "matrixHomeserverURL": "Homeserver URL (dengan http(s):// dan port tambahan)", + "Internal Room Id": "Internal Room ID", + "matrixDesc1": "Kamu dapat menemukan Internal Room ID dengan melihat di bagian konfigurasi ruang di Matrix. Seharusnya berbentuk seperti !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Sangat direkomendasikan kepada Anda untuk membuat akun baru dan jangan menggunakan token atas akun terkini yang memiliki token akses secara penuh terhadap akun dan seluruh ruang yang terdaftar. Alih - alih, buat akun baru dan undang akun tsb ke ruang tempat anda ingin menerima notifikasi. Untuk mendapatkan token akses anda dapat menjalankan {0}", + "Method": "Method", + "Body": "Body", + "Headers": "Headers", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "Request Headers memiliki format JSON yang tidak sesuai: ", + "BodyInvalidFormat": "Request Body memiliki format JSON yang tidak sesuai: ", + "Monitor History": "Riyawat Monitor", + "clearDataOlderThan": "Simpan data riwayat monitoring selama {0} hari.", + "PasswordsDoNotMatch": "Password tidak sama.", + "records": "catatan", + "One record": "Satu catatan", + "steamApiKeyDescription": "Untuk monitoring Steam Game Server Anda membutuhkan kunci Steam Web-API. Anda dapat mendaftarkan Kunci API Anda melalui: ", + "Current User": "Pengguna Saat Ini", + "topic": "Topic", + "topicExplanation": "MQTT topic untuk dimonitor", + "successMessage": "Pesan Berhasil", + "successMessageExplanation": "Pesan MQTT yang akan dianggap berhasil", + "recent": "Baru saja", + "Done": "Selesai", + "Info": "Info", + "Security": "Keamanan", + "Steam API Key": "Steam API Key", + "Shrink Database": "Shrink Database", + "Pick a RR-Type...": "Pilih RR-Type...", + "Pick Accepted Status Codes...": "Pilih Kode Status yang Diterima...", + "Default": "Default", + "HTTP Options": "Opsi HTTP", + "Create Incident": "Buat Incident", + "Title": "Judul", + "Content": "Konten", + "Style": "Gaya", + "info": "info", + "warning": "peringatan", + "danger": "bahaya", + "error": "kesalahan", + "critical": "kritis", + "primary": "utama", + "light": "terang", + "dark": "gelap", + "Post": "Post", + "Please input title and content": "Masukkan judul dan konten", + "Created": "Dibuat", + "Last Updated": "Terakhir Diperbarui", + "Unpin": "Lepaskan Semat", + "Switch to Light Theme": "Ubah ke Tema Terang", + "Switch to Dark Theme": "Ubah ke Tema Gelap", + "Show Tags": "Tampilkan Tags", + "Hide Tags": "Sembunyikan Tags", + "Description": "Deskripsi", + "No monitors available.": "Tidak ada monitor yang tersedia.", + "Add one": "Tambahkan", + "No Monitors": "Tidak ada monitor", + "Untitled Group": "Group Tanpa Judul", + "Services": "Layanan", + "Discard": "Buang", + "Cancel": "Batal", + "Powered by": "Dipersembahkan oleh", + "shrinkDatabaseDescription": "Trigger database VACUUM untuk SQLite. Jika database Anda dibuat setelah 1.10.0, AUTO_VACUUM sudah otomatis diaktifkan dan aksi berikut tidak dibutuhkan.", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "Nama Pengguna API ( termamsuk awalan webapi_ )", + "serwersmsAPIPassword": "Kata Sandi API", + "serwersmsPhoneNumber": "Nomor Telepon", + "serwersmsSenderName": "Nama Pengirim SMS (didaftarkan melalui portal pelanggan)", + "stackfield": "Stackfield", + "Customize": "Kustomisasi", + "Custom Footer": "Tambahan Footer", + "Custom CSS": "Tambahan CSS", + "smtpDkimSettings": "Pengaturan DKIM", + "smtpDkimDesc": "Silakan merujuk ke Nodemailer DKIM {0} untuk penggunaan.", + "documentation": "dokumentasi", + "smtpDkimDomain": "Nama Domain", + "smtpDkimKeySelector": "Key Selector", + "smtpDkimPrivateKey": "Private Key", + "smtpDkimHashAlgo": "Algoritma Hash (Opsional)", + "smtpDkimheaderFieldNames": "Header Keys untuk ditambahkan (Optional)", + "smtpDkimskipFields": "Header Keys not untuk ditambahkan (Optional)", + "wayToGetPagerDutyKey": "Anda dapat menambahkan melalui Service -> Service Directory -> (Select a service) -> Integrations -> Add integration. Lalu Anda dapat menjadi dengan kata kunci \"Events API V2\". Informasi tambahan {0}", + "Integration Key": "Kunci Integrasi", + "Integration URL": "URL Integrasi", + "Auto resolve or acknowledged": "Penyelesaian otomatis atau diakui", + "do nothing": "tidak melakukan apapun", + "auto acknowledged": "otomatis diakui", + "auto resolve": "otomatis terselesaikan", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API Endpoint", + "alertaEnvironment": "Lingkungan", + "alertaApiKey": "Kunci API", + "alertaAlertState": "Status Siaga", + "alertaRecoverState": "Status Pemulihan", + "deleteStatusPageMsg": "Apakah Anda yakin untuk menghapus halaman status berikut?", + "Proxies": "Proxy", + "default": "Bawaan", + "enabled": "Diaktifkan", + "setAsDefault": "Tetapkan sebagai bawaan", + "deleteProxyMsg": "Apakah Anda yakin ingin menghapus proxy berikut untuk seluruh monitor?", + "proxyDescription": "Proxy harus ditambahkan ke monitor agar berfungsi.", + "enableProxyDescription": "Proxy berikut tidak akan berdampak ke monitor hingga diaktifkan. Anda dapat mengontrol menonaktifkan sementara proxy dari semua monitor dengan status aktivasi.", + "setAsDefaultProxyDescription": "Proxy berikut akan diaktifkan sebagai bawaan untuk monitor baru. Anda masih dapat menonaktifkan proxy secara terpisah untuk setiap monitor.", + "Certificate Chain": "Certificate Chain", + "Valid": "Valid", + "Invalid": "Tidak Valid", + "AccessKeyId": "AccessKey ID", + "SecretAccessKey": "AccessKey Secret", + "PhoneNumbers": "Nomor Telepon", + "TemplateCode": "Kode Template", + "SignName": "Nama Tanda", + "Sms template must contain parameters: ": "Template SMS harus berisi parameter: ", + "Bark Endpoint": "Bark Endpoint", + "Bark Group": "Bark Group", + "Bark Sound": "Bark Sound", + "WebHookUrl": "WebHookUrl", + "SecretKey": "SecretKey", + "For safety, must use secret key": "Untuk keamaan Anda harus menggunakan kunci rahasia", + "Device Token": "Token Perangkat", + "Platform": "Platform", + "iOS": "iOS", + "Android": "Android", + "Huawei": "Huawei", + "High": "Tinggi", + "Retry": "Ulang", + "Topic": "Topik", + "WeCom Bot Key": "Kunci WeCom Bot", + "Setup Proxy": "Siapkan Proxy", + "Proxy Protocol": "Protokol Proxy", + "Proxy Server": "Server Proxy", + "Proxy server has authentication": "Server Proxy memiliki autentikasi", + "User": "Pengguna", + "Installed": "Terpasang", + "Not installed": "Tidak terpasang", + "Running": "Berjalan", + "Not running": "Tidak berjalan", + "Remove Token": "Hapus Token", + "Start": "Mulai", + "Stop": "Berhenti", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "Tambahkan Halaman Status Baru", + "Slug": "Slug", + "Accept characters:": "Terima karakter:", + "startOrEndWithOnly": "Mulai atau akhiri hanya dengan {0}", + "No consecutive dashes": "Tanda hubung tidak berurutan", + "Next": "Selanjutnya", + "The slug is already taken. Please choose another slug.": "Slug telah digunakan. Silakan pilih slug lain.", + "No Proxy": "Tidak ada Proxy", + "Authentication": "Autentikasi", + "HTTP Basic Auth": "HTTP Basic Auth", + "New Status Page": "Halaman Status Baru", + "Page Not Found": "Halaman Tidak Ditemukan", + "Reverse Proxy": "Proxy Terbalik", + "Backup": "Cadangan", + "About": "Tentang", + "wayToGetCloudflaredURL": "(Unduh cloudflared dari {0})", + "cloudflareWebsite": "Situs Cloudflare", + "Message:": "Pesan:", + "Don't know how to get the token? Please read the guide:": "Tidak tahu cara mendapatkan token? Silakan baca panduannya:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Koneksi saat ini mungkin hilang jika Anda saat ini terhubung melalui Cloudflare Tunel. Apakah Anda yakin ingin menghentikannya? Ketik kata sandi Anda saat ini untuk mengonfirmasinya.", + "HTTP Headers": "HTTP Headers", + "Trust Proxy": "Proxy Terpercaya", + "Other Software": "Perangkat Lunak lainnya", + "For example: nginx, Apache and Traefik.": "Sebagai contoh: nginx, Apache and Traefik.", + "Please read": "Harap dibaca", + "Subject:": "Subjek:", + "Valid To:": "Berlaku Untuk:", + "Days Remaining:": "Hari Tersisa:", + "Issuer:": "Penerbit:", + "Fingerprint:": "Sidik jari:", + "No status pages": "Tidak ada halaman status", + "Domain Name Expiry Notification": "Pemberitahuan Kedaluwarsa Nama Domain", + "Proxy": "Proxy", + "Date Created": "Tanggal Dibuat", + "HomeAssistant": "Home Assistant", + "onebotHttpAddress": "Alamat HTTP OneBot", + "onebotMessageType": "Jenis Pesan OneBot", + "onebotGroupMessage": "Grup", + "onebotPrivateMessage": "Pribadi", + "onebotUserOrGroupId": "Grup/Pengguna ID", + "onebotSafetyTips": "Untuk keamanan, harus mengatur token akses", + "PushDeer Key": "Kunci PushDeer", + "Footer Text": "Tulisan Footer", + "Show Powered By": "Tampilkan Dipersembahkan oleh", + "Domain Names": "Nama Domain", + "signedInDisp": "Masuk sebagai {0}", + "signedInDispDisabled": "Autentikasi dinonaktifkan.", + "RadiusSecret": "Radius Secret", + "RadiusSecretDescription": "Shared Secret antara klien dan server", + "RadiusCalledStationId": "Called Station Id", + "RadiusCalledStationIdDescription": "Pengenal perangkat yang dipanggil", + "RadiusCallingStationId": "Calling Station Id", + "RadiusCallingStationIdDescription": "Pengenal perangkat panggilan", + "Certificate Expiry Notification": "Pemberitahuan Kedaluwarsa Sertifikat", + "API Username": "Nama Pengguna API", + "API Key": "Kunci API", + "Recipient Number": "Nomor Penerima", + "From Name/Number": "Dari Nama/Nomor", + "Leave blank to use a shared sender number.": "Biarkan kosong untuk menggunakan nomor pengirim bersama.", + "Octopush API Version": "Versi API Octopush", + "Legacy Octopush-DM": "Legacy Octopush-DM", + "endpoint": "endpoint", + "octopushAPIKey": "\"API key\" dari kredensial HTTP API di panel kontrol", + "octopushLogin": "\"Login\" dari kredensial HTTP API di panel kontrol", + "promosmsLogin": "Nama Masuk API", + "promosmsPassword": "Kata Sandi API", + "pushoversounds pushover": "Pushover (default)", + "pushoversounds bike": "Bike", + "pushoversounds bugle": "Bugle", + "pushoversounds cashregister": "Cash Register", + "pushoversounds classical": "Classical", + "pushoversounds cosmic": "Cosmic", + "pushoversounds falling": "Falling", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Incoming", + "pushoversounds intermission": "Intermission", + "pushoversounds magic": "Magic", + "pushoversounds mechanical": "Mechanical", + "pushoversounds pianobar": "Piano Bar", + "pushoversounds siren": "Siren", + "pushoversounds spacealarm": "Space Alarm", + "pushoversounds tugboat": "Tug Boat", + "pushoversounds alien": "Alien Alarm (long)", + "pushoversounds climb": "Climb (long)", + "pushoversounds persistent": "Persistent (long)", + "pushoversounds echo": "Pushover Echo (long)", + "pushoversounds updown": "Up Down (long)", + "pushoversounds vibrate": "Vibrate Only", + "pushoversounds none": "None (silent)", + "pushyAPIKey": "Secret API Key", + "pushyToken": "Device token", + "Show update if available": "Tampilkan pembaruan jika tersedia", + "Also check beta release": "Periksa juga rilis beta", + "Using a Reverse Proxy?": "Menggunakan Proxy Terbalik?", + "Check how to config it for WebSocket": "Periksa cara mengonfigurasinya untuk A WebSocket", + "Steam Game Server": "Steam Game Server", + "Most likely causes:": "Kemungkinan besar penyebabnya:", + "The resource is no longer available.": "Sumber daya tidak lagi tersedia.", + "There might be a typing error in the address.": "Mungkin ada kesalahan pengetikan di alamat.", + "What you can try:": "Apa yang dapat kamu coba:", + "Retype the address.": "Ketik ulang alamat.", + "Go back to the previous page.": "Kembali ke halaman sebelumnya.", + "Coming Soon": "Segera", + "wayToGetClickSendSMSToken": "Anda bisa mendapatkan Nama Pengguna API dan Kunci API dari {0} .", + "Connection String": "String Koneksi", + "Query": "Query", + "settingsCertificateExpiry": "Sertifikat TLS Kadaluarsa", + "certificationExpiryDescription": "Monitor HTTPS memicu pemberitahuan saat sertifikat TLS kedaluwarsa dalam:", + "Setup Docker Host": "Siapkan Host Docker", + "Connection Type": "Jenis Koneksi", + "Docker Daemon": "Docker Daemon", + "deleteDockerHostMsg": "Apakah Anda yakin ingin menghapus host docker berikut untuk semua monitor?", + "socket": "Socket", + "tcp": "TCP / HTTP", + "Docker Container": "Docker Container", + "Container Name / ID": "Container Name / ID", + "Docker Host": "Docker Host", + "Docker Hosts": "Docker Hosts", + "ntfy Topic": "ntfy Topic", + "Domain": "Domain", + "Workstation": "Workstation", + "disableCloudflaredNoAuthMsg": "Anda berada dalam mode Tanpa Otentikasi, kata sandi tidak diperlukan.", + "trustProxyDescription": "Trust 'X-Forwarded-*' headers. Jika Anda ingin mendapatkan IP klien yang benar dan Uptime Kuma Anda dibalik layanan seperti Nginxor Apache, Anda harus mengaktifkan ini.", + "wayToGetLineNotifyToken": "Anda bisa mendapatkan token akses dari {0}", + "Examples": "Contoh", + "Home Assistant URL": "Home Assistant URL", + "Long-Lived Access Token": "Token Akses Berumur Panjang", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Token Akses Berumur Panjang dapat dibuat dengan mengklik nama profil Anda (kiri bawah) dan menggulir ke bawah lalu klik Buat Token. ", + "Notification Service": "Layanan Pemberitahuan", + "default: notify all devices": "bawaan: notifikasi seluruh perangkat", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Daftar Layanan Pemberitahuan dapat ditemukan di Home Assistant pada \"Developer Tools > Services\" cari \"notification\" lalu cari nama perangkat Anda.", + "Automations can optionally be triggered in Home Assistant:": "Otomatisasi dapat dipicu secara opsional di Home Assistant:", + "Trigger type:": "Tipe Trigger/Pemicu:", + "Event type:": "Tipe event:", + "Event data:": "Data event:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Kemudian pilih tindakan, misalnya alihkan ke tempat dimana lampu RGB berwarna merah.", + "Frontend Version": "Versi Frontend", + "Frontend Version do not match backend version!": "Versi Frontend tidak sama dengan versi backend!", + "Base URL": "URL Dasar", + "goAlertInfo": "GoAlert adalah aplikasi open source untuk penjadwalan panggilan, eskalasi otomatis dan pemberitahuan (seperti SMS atau panggilan suara). Secara otomatis melibatkan orang yang tepat, dengan cara yang benar, dan pada waktu yang tepat! {0}", + "goAlertIntegrationKeyInfo": "Dapatkan kunci integrasi API generik untuk layanan dalam format ini \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" biasanya nilai parameter token dari URL yang disalin.", + "goAlert": "GoAlert", + "backupOutdatedWarning": "Tidak digunakan lagi: Karena banyak fitur ditambahkan dan fitur cadangan ini agak tidak terawat, itu tidak dapat menghasilkan atau memulihkan cadangan lengkap.", + "backupRecommend": "Harap cadangkan volume atau folder data (./data/) secara langsung." +} diff --git a/src/lang/it-IT.json b/src/lang/it-IT.json new file mode 100644 index 000000000..4b8a86754 --- /dev/null +++ b/src/lang/it-IT.json @@ -0,0 +1,367 @@ +{ + "languageName": "Italiano (Italian)", + "checkEverySecond": "controlla ogni {0} secondi", + "retryCheckEverySecond": "Riprova ogni {0} secondi.", + "retriesDescription": "Tentativi prima che il servizio venga marcato come \"DOWN\" e che una notifica venga inviata.", + "ignoreTLSError": "Ignora gli errori TLS/SSL per i siti HTTPS.", + "upsideDownModeDescription": "Se il servizio risulta raggiungibile viene marcato come \"DOWN\".", + "maxRedirectDescription": "Numero massimo di redirezionamenti consentito. Per disabilitare, impostare \"0\".", + "acceptedStatusCodesDescription": "Elenco di codici di stato HTTP che sono considerati validi.", + "passwordNotMatchMsg": "La password non corrisponde.", + "notificationDescription": "Assegnare la notifica a uno o più oggetti monitorati per metterla in funzione.", + "keywordDescription": "Cerca la parola chiave nella risposta in html o JSON e fai distinzione tra maiuscole e minuscole", + "pauseDashboardHome": "In Pausa", + "deleteMonitorMsg": "Sei sicuro di voler eliminare questo oggetto monitorato?", + "deleteNotificationMsg": "Sei sicuro di voler eliminare questa notifica per tutti gli oggetti monitorati?", + "resolverserverDescription": "Cloudflare è il server predefinito ma è possibile cambiare il server DNS.", + "rrtypeDescription": "Scegliere il tipo di RR che si vuole monitorare", + "pauseMonitorMsg": "Sei sicuro di voler mettere in pausa?", + "enableDefaultNotificationDescription": "Per ogni nuovo monitor questa notifica sarà abilitata di default. È comunque possibile disabilitare la notifica singolarmente.", + "clearEventsMsg": "Sei sicuro di voler eliminare tutti gli eventi per questo servizio?", + "clearHeartbeatsMsg": "Sei sicuro di voler eliminare tutti gli intervalli di controllo per questo servizio?", + "confirmClearStatisticsMsg": "Sei sicuro di voler eliminare TUTTE le statistiche?", + "importHandleDescription": "Selezionare \"Ignora esistenti\" se si vuole ignorare l'importazione dei monitor o delle notifiche con lo stesso nome. \"Sovrascrivi\" rimpiazzerà tutti i monitor e le notifiche presenti con quelli nel backup.", + "confirmImportMsg": "Sei sicuro di voler importare il backup? Controlla di aver selezionato l'opzione corretta di importazione.", + "twoFAVerifyLabel": "Digita il token per verificare che l'autenticazione a due fattori funzioni correttamente:", + "tokenValidSettingsMsg": "Il token è valido! È ora possibile salvare le impostazioni.", + "confirmEnableTwoFAMsg": "Sei sicuro di voler abilitare l'autenticazione a due fattori?", + "confirmDisableTwoFAMsg": "Sei sicuro di voler disabilitare l'autenticazione a due fattori?", + "Settings": "Impostazioni", + "Dashboard": "Dashboard", + "New Update": "Nuovo aggiornamento disponibile!", + "Language": "Lingua", + "Appearance": "Aspetto", + "Theme": "Tema", + "General": "Generale", + "Primary Base URL": "URL base primario", + "Version": "Versione", + "Check Update On GitHub": "Controlla aggiornamenti su GitHub", + "List": "Lista", + "Add": "Aggiungi", + "Add New Monitor": "Aggiungi nuovo monitor", + "Quick Stats": "Statistiche rapide", + "Up": "Up", + "Down": "Down", + "Pending": "In attesa", + "Unknown": "Sconosciuti", + "Pause": "Metti in pausa", + "Name": "Nome", + "Status": "Stato", + "DateTime": "Data e Ora", + "Message": "Messaggio", + "No important events": "Nessun evento importante", + "Resume": "Riprendi", + "Edit": "Modifica", + "Delete": "Elimina", + "Current": "Corrente", + "Uptime": "Tempo di attività", + "Cert Exp.": "Scadenza certificato", + "day": "giorno | giorni", + "-day": "-giorni", + "hour": "ora", + "-hour": "-ore", + "Response": "Risposta", + "Ping": "Ping", + "Monitor Type": "Modalità di monitoraggio", + "Keyword": "Parola chiave", + "Friendly Name": "Nome", + "URL": "URL", + "Hostname": "Nome Host", + "Port": "Porta", + "Heartbeat Interval": "Intervallo di controllo", + "Retries": "Tentativi", + "Heartbeat Retry Interval": "Intervallo tra i tentativo di controllo", + "Advanced": "Avanzate", + "Upside Down Mode": "Modalità invertita", + "Max. Redirects": "Reindirizzamenti massimi", + "Accepted Status Codes": "Codici di stato accettati", + "Push URL": "Push URL", + "needPushEvery": "Notificare questo URL ogni {0} secondi.", + "pushOptionalParams": "Parametri aggiuntivi: {0}", + "Save": "Salva", + "Notifications": "Notifiche", + "Not available, please setup.": "Non disponibili, da configurare.", + "Setup Notification": "Configura le notifiche", + "Light": "Chiaro", + "Dark": "Scuro", + "Auto": "Automatico", + "Theme - Heartbeat Bar": "Tema (barra di stato)", + "Normal": "Normale", + "Bottom": "Sotto", + "None": "Nessuna", + "Timezone": "Fuso Orario", + "Search Engine Visibility": "Visibilità ai motori di ricerca", + "Allow indexing": "Consenti l'indicizzazione", + "Discourage search engines from indexing site": "Evita l'indicizzazione ai motori di ricerca", + "Change Password": "Cambia password", + "Current Password": "Password corrente", + "New Password": "Nuova password", + "Repeat New Password": "Ripeti nuova password", + "Update Password": "Modifica password", + "Disable Auth": "Disabilita autenticazione", + "Enable Auth": "Abilita autenticazione", + "disableauth.message1": "Disabilitare l'autenticazione?", + "disableauth.message2": "Questa opzione è per chi un sistema di autenticazione gestito da terze parti messo davanti ad Uptime Kuma, ad esempio Cloudflare Access.", + "Please use this option carefully!": "Utilizzare con attenzione!", + "Logout": "Esci", + "Leave": "Annulla", + "I understand, please disable": "Lo capisco, disabilitare l'autenticazione.", + "Confirm": "Conferma", + "Yes": "Sì", + "No": "No", + "Username": "Nome utente", + "Password": "Password", + "Remember me": "Ricorda credenziali", + "Login": "Accesso", + "No Monitors, please": "Nessun monitor presente,", + "add one": "aggiungine uno!", + "Notification Type": "Servizio di notifica", + "Email": "E-mail", + "Test": "Fai una prova", + "Certificate Info": "Informazioni sul certificato", + "Resolver Server": "Server DNS", + "Resource Record Type": "Tipo di Resource Record", + "Last Result": "Ultimo risultato", + "Create your admin account": "Crea l'account amministratore", + "Repeat Password": "Ripeti password", + "Import Backup": "Importa backup", + "Export Backup": "Esporta backup", + "Export": "Esporta", + "Import": "Importa", + "respTime": "Tempo di risposta (ms)", + "notAvailableShort": "N/D", + "Default enabled": "Abilitato di default", + "Apply on all existing monitors": "Applica su tutti i monitoraggi", + "Create": "Crea", + "Clear Data": "Cancella dati", + "Events": "Eventi", + "Heartbeats": "Controlli", + "Auto Get": "Rileva", + "backupDescription": "È possibile fare il backup di tutti i monitoraggi e di tutte le notifiche in un file JSON.", + "backupDescription2": "NOTA: lo storico e i dati relativi agli eventi non saranno inclusi nel backup", + "backupDescription3": "Dati sensibili come i token di autenticazione saranno inclusi nel backup, custodisci il file in un luogo sicuro!", + "alertNoFile": "Selezionare il file da importare.", + "alertWrongFileType": "Selezionare un file JSON.", + "Clear all statistics": "Cancella tutte le statistiche", + "Skip existing": "Ignora esistenti", + "Overwrite": "Sovrascrivi", + "Options": "Opzioni", + "Keep both": "Mantieni entrambi", + "Verify Token": "Verifica token", + "Setup 2FA": "Configura 2FA", + "Enable 2FA": "Abilita 2FA", + "Disable 2FA": "Disabilita 2FA", + "2FA Settings": "Gestisci l'autenticazione a due fattori", + "Two Factor Authentication": "Autenticazione a due fattori (2FA)", + "Active": "Attivata", + "Inactive": "Disattivata", + "Token": "Token", + "Show URI": "Mostra URI", + "Tags": "Etichette", + "Add New below or Select...": "Aggiungi oppure scegli...", + "Tag with this name already exist.": "Un'etichetta con questo nome già esiste.", + "Tag with this value already exist.": "Un'etichetta con questo valore già esiste.", + "color": "colore", + "value (optional)": "descrizione (opzionale)", + "Gray": "Grigio", + "Red": "Rosso", + "Orange": "Arancione", + "Green": "Verde", + "Blue": "Blu", + "Indigo": "Indaco", + "Purple": "Viola", + "Pink": "Rosa", + "Search...": "Cerca...", + "Avg. Ping": "Tempo medio di risposta al ping", + "Avg. Response": "Tempo medio di risposta", + "Entry Page": "Pagina Principale", + "statusPageNothing": "Non c'è nulla qui, aggiungi un gruppo oppure un monitor.", + "No Services": "Nessun servizio", + "All Systems Operational": "Tutti i sistemi sono funzionali", + "Partially Degraded Service": "Servizio parzialmente degradato", + "Degraded Service": "Servizio degradato", + "Add Group": "Aggiungi gruppo", + "Add a monitor": "Aggiungi monitor", + "Edit Status Page": "Modifica pagina di stato", + "Go to Dashboard": "Vai alla dashboard", + "Status Page": "Pagina di stato", + "Status Pages": "Pagina di stato", + "defaultNotificationName": "Notifica {notification} ({number})", + "here": "qui", + "Required": "Obbligatorio", + "telegram": "Telegram", + "Bot Token": "Token del bot", + "wayToGetTelegramToken": "Puoi ottenere il token da {0}.", + "Chat ID": "ID Chat", + "supportTelegramChatID": "Supporta chat private, gruppi e canali.", + "wayToGetTelegramChatID": "È possibile ricereve l'ID chat mandando un messaggio al bot e poi andando in questo URL per visualizzare il chat_id:", + "YOUR BOT TOKEN HERE": "QUI IL TOKEN DEL BOT", + "chatIDNotFound": "Non trovo l'ID chat. Prima bisogna mandare un messaggio al bot", + "webhook": "Webhook", + "Post URL": "Post URL", + "Content Type": "Content Type", + "webhookJsonDesc": "{0} va bene per qualsiasi server HTTP moderno ad esempio express.js", + "webhookFormDataDesc": "{multipart} va bene per PHP, c'è solo bisogno di analizzare il json con {decodeFunction}", + "smtp": "E-mail (SMTP)", + "secureOptionNone": "Nessuno / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Ignora gli errori TLS", + "From Email": "Mittente", + "emailCustomSubject": "Oggetto personalizzato", + "To Email": "Destinatario", + "smtpCC": "CC", + "smtpBCC": "CCn", + "discord": "Discord", + "Discord Webhook URL": "URL Webhook di Discord", + "wayToGetDiscordURL": "È possibile recuperarlo da Impostazioni server -> Integrazioni -> Creare Webhook", + "Bot Display Name": "Nome del Bot", + "Prefix Custom Message": "Prefisso per il messaggio personalizzato", + "Hello @everyone is...": "Ciao a {'@'}everyone ...", + "teams": "Microsoft Teams", + "Webhook URL": "URL Webhook", + "wayToGetTeamsURL": "È possibile imparare a creare un URL Webhook {0}.", + "signal": "Signal", + "Number": "Numero", + "Recipients": "Destinatari", + "needSignalAPI": "È necessario avere un client Signal con le API REST.", + "wayToCheckSignalURL": "Controllare questo url per capire come impostarne uno:", + "signalImportant": "IMPORTANTE: Non è possibile mischiare gruppi e numeri all'interno dei destinatari!", + "gotify": "Gotify", + "Application Token": "Token Applicazione", + "Server URL": "URL Server", + "Priority": "Priorità", + "slack": "Slack", + "Icon Emoji": "Icona Emoji", + "Channel Name": "Nome Canale", + "Uptime Kuma URL": "Indirizzo Uptime Kuma", + "aboutWebhooks": "Maggiori informazioni riguardo ai webhooks su: {0}", + "aboutChannelName": "Inserire il nome del canale nel campo \"Nome Canale\" {0} se si vuole bypassare il canale webhook. Ad esempio: #altro-canale", + "aboutKumaURL": "Se si lascia bianco il campo Indirizzo Uptime Kuma, la pagina GitHub sarà il valore predefinito.", + "emojiCheatSheet": "Lista Emoji: {0}", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "clicksendsms": "ClickSend SMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Supporta più di 50 servizi di notifica)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "User Key": "Chiave Utente", + "Device": "Dispositivo", + "Message Title": "Titolo Messaggio", + "Notification Sound": "Suono di Notifica", + "More info on:": "Maggiori informazioni su: {0}", + "pushoverDesc1": "Priorità di Emergenza (2) ha 30 secondi di timeout tra un tentativo e l'altro e scadrà dopo un'ora.", + "pushoverDesc2": "Se si vuole inviare la notifica a dispositivi differenti, riempire il campo Dispositivi.", + "SMS Type": "Tipo di SMS", + "octopushTypePremium": "Premium (Veloce - raccomandato per allertare)", + "octopushTypeLowCost": "A Basso Costo (Lento - talvolta bloccato dall'operatore)", + "checkPrice": "Controlla {0} prezzi:", + "apiCredentials": "Credenziali API", + "octopushLegacyHint": "Si vuole utilizzare la vecchia versione (2011-2020) oppure la nuova versione di Octopush?", + "Check octopush prices": "Controlla i prezzi di Octopush {0}.", + "octopushPhoneNumber": "Numero di telefono (formato internazionale (p.e.): +33612345678) ", + "octopushSMSSender": "Nome del mittente: 3-11 caratteri alfanumerici e spazi (a-zA-Z0-9)", + "LunaSea Device ID": "ID dispositivo LunaSea", + "Apprise URL": "URL Apprise", + "Example:": "Esempio: {0}", + "Read more:": "Maggiori informazioni: {0}", + "Status:": "Stato: {0}", + "Read more": "Maggiori informazioni", + "appriseInstalled": "Apprise è installato.", + "appriseNotInstalled": "Apprise non è installato. {0}", + "Access Token": "Token di accesso", + "Channel access token": "Token di accesso al canale", + "Line Developers Console": "Console sviluppatori Line", + "lineDevConsoleTo": "Console sviluppatori Line - {0}", + "Basic Settings": "Impostazioni Base", + "User ID": "ID Utente", + "Messaging API": "API di Messaggistica", + "wayToGetLineChannelToken": "Prima accedi a {0}, crea un provider e un canale (API di Messaggistica), dopodiché puoi avere il token di accesso e l'id utente dal menù sopra.", + "Icon URL": "URL Icona", + "aboutIconURL": "È possibile impostare un collegameno a una immagine in \"URL Icona\" per modificare l'immagine di profilo. Non verrà utilizzata se è impostata l'Icona Emoji.", + "aboutMattermostChannelName": "È possibile modificare il canale predefinito che dove il webhook manda messaggi immettendo il nome del canale nel campo \"Nome Canale\". Questo va abilitato nelle impostazioni webhook di Mattermost webhook. P.E.: #altro-canale", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - economico, ma lento e spesso sovraccarico. Limitato solamente a destinatari Polacchi.", + "promosmsTypeFlash": "SMS FLASH - Il messaggio sarà automaticamente mostrato sul dispositivo dei destinatari. Limitato solo a destinatari Polacchi.", + "promosmsTypeFull": "SMS FULL - Premium, È possibile utilizzare il proprio come come mittente (è necessario prima registrare il nome). Affidabile per gli allarmi.", + "promosmsTypeSpeed": "SMS SPEED - Maggior priorità. Rapido, affidabile, ma costoso (costa il doppio di SMS FULL).", + "promosmsPhoneNumber": "Numero di Telefono (per destinatari Polacchi si può omettere il codice area)", + "promosmsSMSSender": "Mittente SMS : Nome preregistrato oppure uno dei seguenti: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "URL WebHook di Feishu", + "matrixHomeserverURL": "URL Server (con http(s):// e opzionalmente la porta)", + "Internal Room Id": "ID Stanza Interna", + "matrixDesc1": "È possibile recuperare l'ID della stanza all'interno delle impostazioni avanzate della stanza nel client Matrix. Dovrebbe essere simile a !QMdRCpUIfLwsfjxye6:server.di.casa.", + "matrixDesc2": "È altamente raccomandata la creazione di un nuovo utente e di non utilizare il proprio token di accesso Matrix poiché darà pieno controllo al proprio account e a tutte le stanze in cui si ha accesso. Piuttosto, si crei un nuovo utente per invitarlo nella stanza dove si vuole ricevere le notifiche. Si può accedere al token eseguendo {0}", + "Method": "Metodo", + "Body": "Body", + "Headers": "Intestazioni", + "PushUrl": "URL di Push", + "HeadersInvalidFormat": "L'intestazione di richiesta non è un JSON valido: ", + "BodyInvalidFormat": "Il corpo di richiesta non è un JSON valido: ", + "Monitor History": "Storico monitor", + "clearDataOlderThan": "Mantieni lo storico per {0} giorni.", + "PasswordsDoNotMatch": "Le password non corrispondono!", + "records": "records", + "One record": "One record", + "steamApiKeyDescription": "Per monitorare un server di gioco Steam è necessaria una Web-API Key di Steam. È possibile registrarne una qui: ", + "Current User": "Utente corrente", + "recent": "Recenti", + "Done": "Fatto", + "Info": "Info", + "Security": "Sicurezza", + "Steam API Key": "API Key di Steam", + "Shrink Database": "Comprimi database", + "Pick a RR-Type...": "Scegli un tipo di RR...", + "Pick Accepted Status Codes...": "Scegli i codici di Stato Accettati...", + "Default": "Predefinito", + "HTTP Options": "Opzioni HTTP", + "Create Incident": "Segnala incidente", + "Title": "Titolo", + "Content": "Contenuto", + "Style": "Stile", + "info": "informativo", + "warning": "attenzione", + "danger": "critico", + "primary": "predefinito", + "light": "chiaro", + "dark": "scuro", + "Post": "Posta", + "Please input title and content": "Inserire il titolo e il contenuto", + "Created": "Creato", + "Last Updated": "Ultima modifica", + "Unpin": "Rimuovi", + "Switch to Light Theme": "Utilizza il tema chiaro", + "Switch to Dark Theme": "Utilizza il tema scuro", + "Show Tags": "Mostra etichette", + "Hide Tags": "Nascondi etichette", + "Description": "Descrizione", + "No monitors available.": "Nessun monitor disponibile.", + "Add one": "Aggiungine uno!", + "No Monitors": "Nessun monitor presente.", + "Untitled Group": "Gruppo senza titolo", + "Services": "Servizi", + "Discard": "Scarta modifiche", + "Cancel": "Annulla", + "Powered by": "Powered by", + "shrinkDatabaseDescription": "Lancia il comando \"VACUUM\" sul database SQLite. Se il database è stato creato dopo la versione 1.10.0, la funzione \"AUTO_VACUUM\" è già abilitata di default e quindi questa azione non è necessaria.", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "Nome utente API (incl. prefisso webapi_)", + "serwersmsAPIPassword": "Password API", + "serwersmsPhoneNumber": "Numero di Telefono", + "serwersmsSenderName": "Nome del mittente SMS (registrato via portale cliente)", + "stackfield": "Stackfield", + "smtpDkimSettings": "Impostazioni DKIM", + "smtpDkimDesc": "Fare riferimento a Nodemailer DKIM {0} per l'utilizzo.", + "documentation": "documentazione", + "smtpDkimDomain": "Dominio", + "smtpDkimKeySelector": "Selettore Chiave", + "smtpDkimPrivateKey": "Chiave Privata", + "smtpDkimHashAlgo": "Algoritmo di hashing (opzionale)", + "smtpDkimheaderFieldNames": "Campi Intestazione da firmare (opzionale)", + "smtpDkimskipFields": "Campi Intestazione da non firmare (opzionale)", + "GoogleChat": "Google Chat (solo per Google Workspace)" +} diff --git a/src/lang/ja.json b/src/lang/ja.json new file mode 100644 index 000000000..7b2b07fb1 --- /dev/null +++ b/src/lang/ja.json @@ -0,0 +1,201 @@ +{ + "languageName": "日本語", + "checkEverySecond": "{0}秒ごとにチェックします。", + "retriesDescription": "サービスがダウンとしてマークされ、通知が送信されるまでの最大リトライ数", + "ignoreTLSError": "HTTPS ウェブサイトの TLS/SSL エラーを無視する", + "upsideDownModeDescription": "ステータスの扱いを逆にします。サービスに到達可能な場合は、DOWNとなる。", + "maxRedirectDescription": "フォローするリダイレクトの最大数。リダイレクトを無効にするには0を設定する。", + "acceptedStatusCodesDescription": "成功した応答とみなされるステータスコードを選択する。", + "passwordNotMatchMsg": "繰り返しのパスワードが一致しません。", + "notificationDescription": "監視を機能させるには、監視に通知を割り当ててください。", + "keywordDescription": "プレーンHTMLまたはJSON応答でキーワードを検索し、大文字と小文字を区別します", + "pauseDashboardHome": "一時停止", + "deleteMonitorMsg": "この監視を削除してよろしいですか?", + "deleteNotificationMsg": "全ての監視のこの通知を削除してよろしいですか?", + "resolverserverDescription": "Cloudflareがデフォルトのサーバーですが、いつでもリゾルバサーバーを変更できます。", + "rrtypeDescription": "監視するRRタイプを選択します", + "pauseMonitorMsg": "一時停止しますか?", + "Settings": "設定", + "Dashboard": "ダッシュボード", + "New Update": "新しいアップデート", + "Language": "言語", + "Appearance": "外観", + "Theme": "テーマ", + "General": "General", + "Version": "バージョン", + "Check Update On GitHub": "GitHubでアップデートを確認する", + "List": "一覧", + "Add": "追加", + "Add New Monitor": "監視の追加", + "Quick Stats": "統計", + "Up": "Up", + "Down": "Down", + "Pending": "中止", + "Unknown": "不明", + "Pause": "一時停止", + "Name": "名前", + "Status": "ステータス", + "DateTime": "日時", + "Message": "メッセージ", + "No important events": "重要なイベントなし", + "Resume": "再開", + "Edit": "編集", + "Delete": "削除", + "Current": "現在", + "Uptime": "起動時間", + "Cert Exp.": "証明書有効期限", + "day": "日 | 日間", + "-day": "-日", + "hour": "時間", + "-hour": "-時間", + "Response": "レスポンス", + "Ping": "Ping", + "Monitor Type": "監視タイプ", + "Keyword": "キーワード", + "Friendly Name": "分かりやすい名前", + "URL": "URL", + "Hostname": "ホスト名", + "Port": "ポート", + "Heartbeat Interval": "監視間隔", + "Retries": "Retries", + "Advanced": "Advanced", + "Upside Down Mode": "Upside Down Mode", + "Max. Redirects": "最大リダイレクト数", + "Accepted Status Codes": "承認されたステータスコード", + "Save": "保存", + "Notifications": "通知", + "Not available, please setup.": "利用できません。設定してください。", + "Setup Notification": "通知設定", + "Light": "Light", + "Dark": "Dark", + "Auto": "Auto", + "Theme - Heartbeat Bar": "Theme - Heartbeat Bar", + "Normal": "通常", + "Bottom": "下部", + "None": "なし", + "Timezone": "タイムゾーン", + "Search Engine Visibility": "検索エンジンでの表示", + "Allow indexing": "インデックス作成を許可する", + "Discourage search engines from indexing site": "検索エンジンにインデックスさせないようにする", + "Change Password": "パスワード変更", + "Current Password": "現在のパスワード", + "New Password": "新しいパスワード", + "Repeat New Password": "確認のため新しいパスワードをもう一度", + "Update Password": "パスワードの更新", + "Disable Auth": "認証の無効化", + "Enable Auth": "認証の有効化", + "Logout": "ログアウト", + "Leave": "作業を中止する", + "I understand, please disable": "理解した上で無効化する", + "Confirm": "確認", + "Yes": "はい", + "No": "いいえ", + "Username": "ユーザー名", + "Password": "パスワード", + "Remember me": "パスワードを忘れた場合", + "Login": "ログイン", + "No Monitors, please": "監視がありません", + "add one": "add one", + "Notification Type": "通知タイプ", + "Email": "Eメール", + "Test": "テスト", + "Certificate Info": "証明書情報", + "Resolver Server": "問い合わせ先DNSサーバ", + "Resource Record Type": "DNSレコード設定", + "Last Result": "最終結果", + "Create your admin account": "Adminアカウントの作成", + "Repeat Password": "パスワード確認", + "respTime": "応答時間 (ms)", + "notAvailableShort": "N/A", + "Create": "作成", + "clearEventsMsg": "この監視のすべての記録を削除してもよろしいですか?", + "clearHeartbeatsMsg": "この監視のすべての異常記録を削除してもよろしいですか?", + "confirmClearStatisticsMsg": "すべての統計を削除してもよろしいですか?", + "Clear Data": "データを削除", + "Events": "統計", + "Heartbeats": "異常記録", + "Auto Get": "自動取得", + "enableDefaultNotificationDescription": "監視を作成するごとに、この通知方法はデフォルトで有効になります。監視ごとに通知を無効にすることもできます。", + "Default enabled": "デフォルトで有効にする", + "Also apply to existing monitors": "既存のモニターにも適用する", + "Export": "エクスポート", + "Import": "インポート", + "backupDescription": "すべての監視と通知方法をJSONファイルにできます。", + "backupDescription2": "※ 履歴と統計のデータはバックアップされません。", + "backupDescription3": "通知に使用するトークンなどの機密データも含まれています。注意して扱ってください。", + "alertNoFile": "インポートするファイルを選択してください。", + "alertWrongFileType": "JSONファイルを選択してください。", + "twoFAVerifyLabel": "トークンを入力して、2段階認証を有効にします。", + "tokenValidSettingsMsg": "トークンの確認が完了しました! 「保存」をしてください。", + "confirmEnableTwoFAMsg": "2段階認証を「有効」にします。よろしいですか?", + "confirmDisableTwoFAMsg": "2段階認証を「無効」にします。よろしいですか?", + "Apply on all existing monitors": "既存のすべてのモニターに適用する", + "Verify Token": "認証する", + "Setup 2FA": "2段階認証の設定", + "Enable 2FA": "2段階認証を有効にする", + "Disable 2FA": "2段階認証を無効にする", + "2FA Settings": "2段階認証の設定", + "Two Factor Authentication": "2段階認証", + "Active": "Active", + "Inactive": "Inactive", + "Token": "Token", + "Show URI": "Show URI", + "Clear all statistics": "すべての記録を削除", + "retryCheckEverySecond": "Retry every {0} seconds.", + "importHandleDescription": "同じ名前のすべての監視または通知方法を上書きしない場合は、「既存のをスキップ」を選択します。 「上書きする」は、既存のすべてのモニターと通知を削除します。", + "confirmImportMsg": "バックアップをインポートしてもよろしいですか?希望するオプションを選択してください。", + "Heartbeat Retry Interval": "異常検知後の再試行間隔", + "Import Backup": "バックアップのインポート", + "Export Backup": "バックアップのエクスポート", + "Skip existing": "既存のをスキップする", + "Overwrite": "上書きする", + "Options": "オプション", + "Keep both": "どちらも保持する", + "Tags": "タグ", + "Add New below or Select...": "新規追加または選択...", + "Tag with this name already exist.": "この名前のタグはすでに存在しています。", + "Tag with this value already exist.": "この値のタグはすでに存在しています。", + "color": "色", + "value (optional)": "値 (optional)", + "Gray": "Gray", + "Red": "Red", + "Orange": "Orange", + "Green": "Green", + "Blue": "Blue", + "Indigo": "Indigo", + "Purple": "Purple", + "Pink": "Pink", + "Search...": "検索...", + "Avg. Ping": "平均Ping時間", + "Avg. Response": "平均応答時間", + "Entry Page": "エントリーページ", + "statusPageNothing": "ここには何もありません。グループまたは監視を追加してください。", + "No Services": "No Services", + "All Systems Operational": "すべてのサービスが稼働中", + "Partially Degraded Service": "部分的にサービスが停止中", + "Degraded Service": "サービスが停止中", + "Add Group": "グループの追加", + "Add a monitor": "監視の追加", + "Edit Status Page": "ステータスページ編集", + "Go to Dashboard": "ダッシュボード", + "Status Page": "ステータスページ", + "Status Pages": "ステータスページ", + "telegram": "Telegram", + "webhook": "Webhook", + "smtp": "Email (SMTP)", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Support 50+ Notification services)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost" +} diff --git a/src/lang/ko-KR.json b/src/lang/ko-KR.json new file mode 100644 index 000000000..2cb2131c6 --- /dev/null +++ b/src/lang/ko-KR.json @@ -0,0 +1,531 @@ +{ + "languageName": "한국어", + "checkEverySecond": "{0}초마다 확인해요.", + "retryCheckEverySecond": "{0}초마다 다시 확인해요.", + "retriesDescription": "서비스가 중단된 후 알림을 보내기 전 최대 재시도 횟수", + "ignoreTLSError": "HTTPS 웹사이트에서 TLS/SSL 오류 무시하기", + "upsideDownModeDescription": "서버 상태를 반대로 표시해요. 서버가 작동하면 오프라인으로 표시할 거예요.", + "maxRedirectDescription": "최대 리다이렉트 횟수예요. 0을 입력하면 리다이렉트를 꺼요.", + "acceptedStatusCodesDescription": "응답 성공으로 간주할 상태 코드를 정해요.", + "passwordNotMatchMsg": "비밀번호 재입력이 일치하지 않아요.", + "notificationDescription": "모니터링에 알림을 설정할 수 있어요.", + "keywordDescription": "HTML 이나 JSON에서 대소문자를 구분해 키워드를 검색해요.", + "pauseDashboardHome": "일시 정지", + "deleteMonitorMsg": "정말 이 모니터링을 삭제할까요?", + "deleteNotificationMsg": "정말 이 알림을 모든 모니터링에서 삭제할까요?", + "resolverserverDescription": "Cloudflare가 기본 서버예요, 원한다면 언제나 다른 Resolver 서버로 변경할 수 있어요.", + "rrtypeDescription": "모니터링할 RR-Type을 선택해요.", + "pauseMonitorMsg": "정말 이 모니터링을 일시 정지할까요?", + "enableDefaultNotificationDescription": "새로 추가하는 모든 모니터링에 이 알림을 기본적으로 활성화해요. 각 모니터에 대해 별도로 알림을 비활성화할 수 있어요.", + "clearEventsMsg": "정말 이 모니터링에 대한 모든 이벤트를 삭제할까요?", + "clearHeartbeatsMsg": "정말 이 모니터링에 대한 모든 하트비트를 삭제할까요?", + "confirmClearStatisticsMsg": "정말 모든 통계를 삭제할까요?", + "importHandleDescription": "이름이 같은 모든 모니터링이나 알림을 건너뛰려면 '기존값 건너뛰기'를 선택해주세요. '덮어쓰기'는 기존의 모든 모니터링과 알림을 삭제해요.", + "confirmImportMsg": "정말 백업을 가져올까요? 가져오기 옵션을 제대로 설정했는지 다시 확인해주세요.", + "twoFAVerifyLabel": "토큰을 입력해 2단계 인증이 작동하는지 확인해주세요.", + "tokenValidSettingsMsg": "토큰이 유효해요! 이제 2단계 인증 설정을 저장할 수 있어요.", + "confirmEnableTwoFAMsg": "정말 2단계 인증을 활성화할까요?", + "confirmDisableTwoFAMsg": "정말 2단계 인증을 비활성화할까요?", + "Settings": "설정", + "Dashboard": "대시보드", + "New Update": "새로운 업데이트", + "Language": "언어", + "Appearance": "디스플레이", + "Theme": "테마", + "General": "일반", + "Version": "버전", + "Check Update On GitHub": "깃허브에서 업데이트 확인", + "List": "목록", + "Add": "추가", + "Add New Monitor": "새로운 모니터링 추가하기", + "Quick Stats": "간단한 정보", + "Up": "온라인", + "Down": "오프라인", + "Pending": "대기 중", + "Unknown": "알 수 없음", + "Pause": "일시 정지", + "Name": "이름", + "Status": "상태", + "DateTime": "날짜", + "Message": "메시지", + "No important events": "중요 이벤트 없음", + "Resume": "재개", + "Edit": "수정", + "Delete": "삭제", + "Current": "현재", + "Uptime": "업타임", + "Cert Exp.": "인증서 만료", + "day": "일", + "-day": "-일", + "hour": "시간", + "-hour": "-시간", + "Response": "응답", + "Ping": "핑", + "Monitor Type": "모니터링 종류", + "Keyword": "키워드", + "Friendly Name": "이름", + "URL": "URL", + "Hostname": "호스트네임", + "Port": "포트", + "Heartbeat Interval": "하트비트 주기", + "Retries": "재시도", + "Heartbeat Retry Interval": "하트비트 재시도 주기", + "Advanced": "고급", + "Upside Down Mode": "상태 반전 모드", + "Max. Redirects": "최대 리다이렉트", + "Accepted Status Codes": "응답 성공 상태 코드", + "Save": "저장", + "Notifications": "알림", + "Not available, please setup.": "존재하지 않아요, 새로운 거 하나 만드는 건 어때요?", + "Setup Notification": "알림 설정", + "Light": "화이트", + "Dark": "다크", + "Auto": "자동", + "Theme - Heartbeat Bar": "테마 - 하트비트 바", + "Normal": "기본값", + "Bottom": "가운데", + "None": "없애기", + "Timezone": "시간대", + "Search Engine Visibility": "검색 엔진 활성화", + "Allow indexing": "인덱싱 허용", + "Discourage search engines from indexing site": "검색 엔진 인덱싱 거부", + "Change Password": "비밀번호 변경", + "Current Password": "기존 비밀번호", + "New Password": "새 비밀번호", + "Repeat New Password": "새로운 비밀번호 재입력", + "Update Password": "비밀번호 변경", + "Disable Auth": "인증 비활성화", + "Enable Auth": "인증 활성화", + "disableauth.message1": "정말로 인증 기능을 끌까요?", + "disableauth.message2": "이 기능은 Cloudflare Access와 같은 서드파티 인증을 Uptime Kuma 앞에 둔 사용자를 위한 기능이에요.", + "Please use this option carefully!": "신중하게 사용하세요.", + "Logout": "로그아웃", + "Leave": "나가기", + "I understand, please disable": "기능에 대해 이해했으니 꺼주세요.", + "Confirm": "확인", + "Yes": "확인", + "No": "취소", + "Username": "이름", + "Password": "비밀번호", + "Remember me": "비밀번호 기억하기", + "Login": "로그인", + "No Monitors, please": "모니터링이 현재 없어요,", + "add one": "한번 추가해보실래요?", + "Notification Type": "알림 종류", + "Email": "이메일", + "Test": "테스트", + "Certificate Info": "인증서 정보", + "Resolver Server": "Resolver 서버", + "Resource Record Type": "리소스 레코드 유형", + "Last Result": "최근 결과", + "Create your admin account": "관리자 계정 만들기", + "Repeat Password": "비밀번호 재입력", + "Import Backup": "백업 가져오기", + "Export Backup": "백업 내보내기", + "Export": "내보내기", + "Import": "가져오기", + "respTime": "응답 시간 (ms)", + "notAvailableShort": "N/A", + "Default enabled": "기본 알림으로 설정", + "Apply on all existing monitors": "기존 모니터링에 모두 적용하기", + "Create": "생성하기", + "Clear Data": "데이터 삭제", + "Events": "이벤트", + "Heartbeats": "하트비트", + "Auto Get": "자동 Get", + "backupDescription": "모든 모니터링과 알림을 JSON 파일 형식에 저장할 수 있어요.", + "backupDescription2": "히스토리와 이벤트 데이터는 포함되어 있지 않아요.", + "backupDescription3": "알림 토큰과 같은 보안 데이터가 내보내기 파일에 포함되어 있으므로 관리에 주의해주세요.", + "alertNoFile": "가져오기를 하기 위해 파일을 선택해주세요.", + "alertWrongFileType": "JSON 파일을 선택해주세요.", + "Clear all statistics": "모든 통계치 삭제", + "Skip existing": "기존값 건너뛰기", + "Overwrite": "덮어쓰기", + "Options": "옵션", + "Keep both": "두개 모두 보존", + "Verify Token": "토큰 검증", + "Setup 2FA": "2단계 인증 설정하기", + "Enable 2FA": "2단계 인증 활성화", + "Disable 2FA": "2단계 인증 비활성화", + "2FA Settings": "2단계 인증 설정", + "Two Factor Authentication": "2단계 인증", + "Active": "활성화", + "Inactive": "비활성화", + "Token": "토큰", + "Show URI": "URI 보기", + "Tags": "태그", + "Add New below or Select...": "아래 새롭게 추가 또는 선택...", + "Tag with this name already exist.": "같은 태그 이름이 이미 존재해요.", + "Tag with this value already exist.": "같은 값을 가진 태그가 이미 존재해요.", + "color": "색상", + "value (optional)": "값 (선택)", + "Gray": "회색", + "Red": "빨간색", + "Orange": "주황색", + "Green": "초록색", + "Blue": "파란색", + "Indigo": "남색", + "Purple": "보라색", + "Pink": "핑크색", + "Search...": "검색...", + "Avg. Ping": "평균 핑", + "Avg. Response": "평균 응답", + "Entry Page": "첫 페이지", + "statusPageNothing": "아무것도 없어요. 새로운 그룹 또는 모니터링을 추가해주세요.", + "No Services": "서비스 없음", + "All Systems Operational": "모든 시스템 정상", + "Partially Degraded Service": "일부 시스템 비정상", + "Degraded Service": "모든 시스템 비정상", + "Add Group": "그룹 추가", + "Add a monitor": "모니터링 추가", + "Edit Status Page": "상태 페이지 수정", + "Go to Dashboard": "대시보드로 가기", + "Status Page": "상태 페이지", + "Status Pages": "상태 페이지", + "defaultNotificationName": "내 {notification} 알림 ({number})", + "here": "여기", + "Required": "필수", + "telegram": "Telegram", + "Bot Token": "봇 토큰", + "wayToGetTelegramToken": "토큰은 여기서 얻을 수 있어요: {0}.", + "Chat ID": "채팅 ID", + "supportTelegramChatID": "개인 채팅 / 그룹 / 채널의 ID를 지원해요.", + "wayToGetTelegramChatID": "봇에 메시지를 보내 채팅 ID를 얻고 밑에 URL로 이동해 chat_id를 볼 수 있어요.", + "YOUR BOT TOKEN HERE": "봇 토큰", + "chatIDNotFound": "채팅 ID를 찾을 수 없어요. 먼저 봇에게 메시지를 보내주세요.", + "webhook": "Webhook", + "Post URL": "Post URL", + "Content Type": "Content Type", + "webhookJsonDesc": "{0}은 express.js와 같은 최신 HTTP 서버에 적합해요.", + "webhookFormDataDesc": "{multipart}은 PHP에 적합해요. {decodeFunction}를 기준으로 json을 디코딩하면 되어요.", + "smtp": "Email (SMTP)", + "secureOptionNone": "없음 / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "TLS 에러 무시하기", + "From Email": "보내는 이메일", + "To Email": "받는 이메일", + "smtpCC": "참조", + "smtpBCC": "숨은 참조", + "discord": "Discord", + "Discord Webhook URL": "Discord Webhook URL", + "wayToGetDiscordURL": "서버 설정 -> 연동 -> 웹후크 보기 -> 새 웹후크에서 얻을 수 있어요!", + "Bot Display Name": "표시 이름", + "Prefix Custom Message": "접두사 메시지", + "Hello @everyone is...": "{'@'}everyone 서버 상태 알림이에요...", + "teams": "Microsoft Teams", + "Webhook URL": "Webhook URL", + "wayToGetTeamsURL": "{0}에서 Webhook을 어떻게 만드는지 알아보세요!", + "signal": "Signal", + "Number": "숫자", + "Recipients": "받는 사람", + "needSignalAPI": "REST API를 사용하는 Signal 클라이언트가 있어야 해요.", + "wayToCheckSignalURL": "밑에 URL을 확인해 URL 설정 방법을 볼 수 있어요.", + "signalImportant": "경고: 받는 사람의 그룹과 숫자는 섞을 수 없어요!", + "gotify": "Gotify", + "Application Token": "애플리케이션 토큰", + "Server URL": "서버 URL", + "Priority": "Priority", + "slack": "Slack", + "Icon Emoji": "아이콘 이모지", + "Channel Name": "채널 이름", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "Webhook에 대한 설명: {0}", + "aboutChannelName": "Webhook 채널을 무시하려면 {0} 채널 이름칸에 채널 이름을 입력해주세요. 예: #기타-채널", + "aboutKumaURL": "Uptime Kuma URL칸을 공백으로 두면 기본적으로 Github Project 페이지로 설정해요.", + "emojiCheatSheet": "이모지 목록 시트: {0}", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (50개 이상 알림 서비스)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "User Key": "유저 키", + "Device": "디바이스", + "Message Title": "메시지 제목", + "Notification Sound": "알림음", + "More info on:": "자세한 정보: {0}", + "pushoverDesc1": "긴급 우선 순위 (2)는 재시도 사이에 기본적으로 30초의 타임아웃이 있고, 1시간 후에 만료되어요.", + "pushoverDesc2": "다른 장치에 알림을 보내려면 장치칸을 입력해주세요.", + "SMS Type": "SMS 종류", + "octopushTypePremium": "프리미엄 (빠름) - 알림 기능에 적합해요)", + "octopushTypeLowCost": "저렴한 요금 (느림) - 가끔 차단될 수 있어요)", + "Check octopush prices": "{0}에서 Octopush 가격을 확인할 수 있어요.", + "octopushPhoneNumber": "휴대전화 번호 (intl format, 예시: +821023456789) ", + "octopushSMSSender": "보내는 사람 이름 : 3-11개의 영숫자 및 여백공간 (a-z, A-Z, 0-9)", + "LunaSea Device ID": "LunaSea 장치 ID", + "Apprise URL": "Apprise URL", + "Example:": "예: {0}", + "Read more:": "더 보기: {0}", + "Status:": "상태: {0}", + "Read more": "더 보기", + "appriseInstalled": "Apprise가 설치되어있어요.", + "appriseNotInstalled": "Apprise가 설치되어있지 않아요. {0}", + "Access Token": "액세스 토큰", + "Channel access token": "채널 액세스 토큰", + "Line Developers Console": "Line 개발자 콘솔", + "lineDevConsoleTo": "Line 개발자 콘솔 - {0}", + "Basic Settings": "기본 설정 메뉴", + "User ID": "사용자 ID", + "Messaging API": "Messaging API 메뉴", + "wayToGetLineChannelToken": "먼저 {0}에 액세스하고, 공급자 및 채널 (Messaging API)을 만든 다음, 각 메뉴 밑에 언급된 메뉴에서 채널 액세스 토큰과 사용자 ID를 얻을 수 있어요.", + "Icon URL": "아이콘 URL", + "aboutIconURL": "\"아이콘 URL\"에 사진 링크를 입력해 프로필 사진을 설정할 수 있어요. 아이콘 이모지가 설정되어 있으면 적용되지 않을 거예요.", + "aboutMattermostChannelName": "채널 이름을 입력하면 Webhook이 게시할 기본 채널을 재설정할 수 있어요. 이 설정은 Mattermost 웹훅 설정에서 활성화해야 해요. 예: #기타-채널", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - 저렴하지만 느리고 가끔 과부하에 걸려요. 폴란드 수신자만 사용할 수 있어요. ", + "promosmsTypeFlash": "SMS FLASH - 메시지가 받는 사람 장치에 자동으로 표시되어요. 폴란드 수신자만 사용할 수 있어요.", + "promosmsTypeFull": "SMS FULL - SMS 프리미엄 티어, 보내는 사람 이름을 먼저 등록해야 해요. 알림 기능에 적합해요.", + "promosmsTypeSpeed": "SMS SPEED - 시스템에서 가장 높은 우선순위예요. 매우 빠르고 신뢰할 수 있지만 비용이 많이 들어요 (SMS 전체 가격의 약 두 배).", + "promosmsPhoneNumber": "전화 번호 (폴란드 수신자라면 지역번호를 적지 않아도 되어요.)", + "promosmsSMSSender": "SMS 보내는 사람 이름 : 미리 등록된 이름 혹은 기본값 중 하나예요: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Primary Base URL": "기본 URL", + "Push URL": "Push URL", + "needPushEvery": "이 URL을 {0} 초 마다 호출할 수 있어요.", + "pushOptionalParams": "선택적 파라미터: {0}", + "emailCustomSubject": "커스텀 주제", + "clicksendsms": "ClickSend SMS", + "checkPrice": "{0} 가격 확인:", + "apiCredentials": "API 인증정보", + "octopushLegacyHint": "Octopush 레거시 버전 (2011-2020) 을 사용하시나요? 아니면 새 버전을 사용하시나요?", + "Feishu WebHookUrl": "Feishu WebHookURL", + "matrixHomeserverURL": "Homeserver URL (http(s):// 와 함께 적어주세요. 그리고 포트 번호는 선택적 입니다.)", + "Internal Room Id": "내부 방 ID", + "matrixDesc1": "Matrix 클라이언트 방 설정의 고급 섹션에서 내부 방 ID를 찾을 수 있어요. 내부 방 ID는 이렇게 생겼답니다: !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "사용자의 모든 방에 대한 엑세스가 허용될 수 있어서 새로운 사용자를 만들고 원하는 방에만 초대한 후 엑세스 토큰을 사용하는 것이 좋아요. {0} 이 명령어를 통해 엑세스 토큰을 얻을 수 있어요.", + "Method": "Method", + "Body": "Body", + "Headers": "Headers", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "요청 Headers의 JSON 형식이 올바르지 않아요: ", + "BodyInvalidFormat": "요청 Body의 JSON 형식이 올바르지 않아요: ", + "Monitor History": "모니터링 기록", + "clearDataOlderThan": "모니터링 기록을 {0}일 동안 저장해요.", + "PasswordsDoNotMatch": "비밀번호가 일치하지 않아요.", + "records": "records", + "One record": "One record", + "steamApiKeyDescription": "스팀 게임 서버를 모니터링하려면 Steam Web API 키가 필요해요. API 키는 하단 웹사이트에서 등록할 수 있어요: ", + "Current User": "현재 사용자", + "recent": "최근", + "Done": "완료", + "Info": "정보", + "Security": "보안", + "Steam API Key": "스팀 API 키", + "Shrink Database": "데이터베이스 축소", + "Pick a RR-Type...": "RR-Type을 골라주세요...", + "Pick Accepted Status Codes...": "상태 코드를 골라주세요...", + "Default": "기본", + "HTTP Options": "HTTP 옵션", + "Create Incident": "인시던트 만들기", + "Title": "제목", + "Content": "내용", + "Style": "스타일", + "info": "정보", + "warning": "주의", + "danger": "경고", + "primary": "기본", + "light": "화이트", + "dark": "다크", + "Post": "게시", + "Please input title and content": "제목과 내용을 작성해주세요.", + "Created": "생성 날짜", + "Last Updated": "마지막 업데이트", + "Unpin": "제거", + "Switch to Light Theme": "화이트 테마로 전환", + "Switch to Dark Theme": "다크 테마로 전환", + "Show Tags": "태그 보이기", + "Hide Tags": "태그 숨기기", + "Description": "설명", + "No monitors available.": "모니터링이 없어요.", + "Add one": "추가하기", + "No Monitors": "모니터링 없음", + "Untitled Group": "이름없는 그룹", + "Services": "서비스", + "Discard": "취소", + "Cancel": "취소", + "Powered by": "Powered by", + "shrinkDatabaseDescription": "SQLite 데이터베이스 VACUUM을 트리거해요. 만약 데이터베이스가 1.10.0 버전 이후에 생성되었다면 AUTO_VACUUM이 설정되어 있어 이 작업은 필요 없을 거에요.", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API Usename (webapi_ 접두사 포함)", + "serwersmsAPIPassword": "API 비밀번호", + "serwersmsPhoneNumber": "휴대전화 번호", + "serwersmsSenderName": "보내는 사람 이름 (customer portal를 통해 가입된 정보)", + "stackfield": "Stackfield", + "dnsPortDescription": "DNS 서버 포트, 기본값은 53 이에요. 포트는 언제나 변경할 수 있어요.", + "PushByTechulus": "Push by Techulus", + "GoogleChat": "Google Chat (Google Workspace only)", + "topic": "Topic", + "topicExplanation": "모니터링할 MQTT Topic", + "successMessage": "성공 메시지", + "successMessageExplanation": "성공으로 간주되는 MQTT 메시지", + "error": "오류", + "critical": "크리티컬", + "Customize": "커스터마이즈", + "Custom Footer": "커스텀 Footer", + "Custom CSS": "커스텀 CSS", + "smtpDkimSettings": "DKIM 설정", + "smtpDkimDesc": "사용 방법은 DKIM {0}를 참조하세요.", + "documentation": "문서", + "smtpDkimDomain": "도메인 이름", + "smtpDkimKeySelector": "Key Selector", + "smtpDkimPrivateKey": "Private Key", + "smtpDkimHashAlgo": "해시 알고리즘 (선택)", + "smtpDkimheaderFieldNames": "서명할 헤더 키 (선택)", + "smtpDkimskipFields": "서명하지 않을 헤더 키 (선택)", + "wayToGetPagerDutyKey": "Service -> Service Directory -> (서비스 선택) -> Integrations -> Add integration. 에서 찾을 수 있어요. 자세히 알아보려면 {0}에서 \"Events API V2\"를 검색해봐요.", + "Integration Key": "Integration 키", + "Integration URL": "Integration URL", + "Auto resolve or acknowledged": "자동 해결 혹은 승인", + "do nothing": "아무것도 하지 않기", + "auto acknowledged": "자동 승인 (acknowledged)", + "auto resolve": "자동 해결 (resolve)", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API Endpoint", + "alertaEnvironment": "환경변수", + "alertaApiKey": "API 키", + "alertaAlertState": "경고 상태", + "alertaRecoverState": "해결된 상태", + "deleteStatusPageMsg": "정말 이 상태 페이지를 삭제할까요?", + "Proxies": "프록시", + "default": "Default", + "enabled": "활성화", + "setAsDefault": "기본 프록시로 설정", + "deleteProxyMsg": "정말 이 프록시를 모든 모니터링에서 삭제할까요?", + "proxyDescription": "프록시가 작동하려면 모니터에 할당되어야 해요.", + "enableProxyDescription": "이 프록시는 활성화될 때까지 영향을 미치지 않아요. 활성화 상태에 따라 모든 모니터에서 프록시를 일시정지할 수 있어요.", + "setAsDefaultProxyDescription": "새로 추가하는 모든 모니터링에 이 프록시를 기본적으로 활성화해요. 각 모니터에 대해 별도로 프록시를 비활성화할 수 있어요.", + "Certificate Chain": "인증서 체인", + "Valid": "유효", + "Invalid": "유효하지 않음", + "AccessKeyId": "AccessKey ID", + "SecretAccessKey": "AccessKey Secret", + "PhoneNumbers": "휴대전화 번호", + "TemplateCode": "템플릿 코드", + "SignName": "SignName", + "Sms template must contain parameters: ": "SMS 템플릿은 다음과 같은 파라미터가 포함되어야 해요:", + "Bark Endpoint": "Bark Endpoint", + "WebHookUrl": "웹훅 URL", + "SecretKey": "Secret Key", + "For safety, must use secret key": "안전을 위해 꼭 Secret Key를 사용하세요.", + "Device Token": "기기 Token", + "Platform": "플랫폼", + "iOS": "iOS", + "Android": "Android", + "Huawei": "Huawei", + "High": "High", + "Retry": "재시도", + "Topic": "Topic", + "WeCom Bot Key": "WeCom Bot Key", + "Setup Proxy": "프록시 설정", + "Proxy Protocol": "프록시 프로토콜", + "Proxy Server": "프록시 서버", + "Proxy server has authentication": "프록시 서버에 인증 절차가 있음", + "User": "사용자", + "Installed": "설치됨", + "Not installed": "설치되어 있지 않음", + "Running": "작동 중", + "Not running": "작동하고 있지 않음", + "Remove Token": "토큰 삭제", + "Start": "시작", + "Stop": "정지", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "새로운 상태 페이지 만들기", + "Slug": "주소", + "Accept characters:": "허용되는 문자열:", + "startOrEndWithOnly": "{0}로 시작하거나 끝나야 해요.", + "No consecutive dashes": "연속되는 대시는 허용되지 않아요", + "Next": "다음", + "The slug is already taken. Please choose another slug.": "이미 존재하는 주소에요. 다른 주소를 사용해 주세요.", + "No Proxy": "프록시 없음", + "Authentication": "인증", + "HTTP Basic Auth": "HTTP 인증", + "New Status Page": "새로운 상태 페이지", + "Page Not Found": "페이지를 찾을 수 없어요", + "Reverse Proxy": "리버스 프록시", + "Backup": "백업", + "About": "정보", + "wayToGetCloudflaredURL": "({0}에서 Cloudflare 다운로드 하기)", + "cloudflareWebsite": "Cloudflare 웹사이트", + "Message:": "메시지:", + "Don't know how to get the token? Please read the guide:": "토큰을 얻는 방법은 이 가이드를 확인해주세요:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Cloudflare Tunnel를 연결하면 현재 연결이 끊길 수 있어요. 정말 중지할까요? 비밀번호를 입력해 확인하세요.", + "Other Software": "다른 소프트웨어", + "For example: nginx, Apache and Traefik.": "nginx, Apache, Traefik 등을 사용할 수 있어요.", + "Please read": "이 문서를 참조하세요:", + "Subject:": "Subject:", + "Valid To:": "Valid To:", + "Days Remaining:": "남은 일수:", + "Issuer:": "Issuer:", + "Fingerprint:": "Fingerprint:", + "No status pages": "상태 페이지 없음", + "Domain Name Expiry Notification": "도메인 이름 만료 알림", + "Proxy": "프록시", + "Date Created": "생성된 날짜", + "onebotHttpAddress": "OneBot HTTP 주소", + "onebotMessageType": "OneBot 메시지 종류", + "onebotGroupMessage": "그룹 메시지", + "onebotPrivateMessage": "개인 메시지", + "onebotUserOrGroupId": "그룹/사용자 ID", + "onebotSafetyTips": "안전을 위해 Access 토큰을 설정하세요.", + "PushDeer Key": "PushDeer 키", + "Footer Text": "Footer 문구", + "Show Powered By": "Powered By 문구 표시하기", + "Domain Names": "도메인 이름", + "signedInDisp": "{0} 로그인됨", + "signedInDispDisabled": "인증 비활성화됨.", + "Certificate Expiry Notification": "인증서 만료 알림", + "API Username": "API 사용자 이름", + "API Key": "API 키", + "Recipient Number": "받는 사람 번호", + "From Name/Number": "발신자 이름/번호", + "Leave blank to use a shared sender number.": "공유 발신자 번호를 사용하려면 공백으로 두세요.", + "Octopush API Version": "Octopush API 버전", + "Legacy Octopush-DM": "레거시 Octopush-DM", + "endpoint": "endpoint", + "octopushAPIKey": "제어판 HTTP API credentials 에서 \"API key\"", + "octopushLogin": "제어판 HTTP API credentials 에서 \"Login\"", + "promosmsLogin": "API 로그인 이름", + "promosmsPassword": "API 비밀번호", + "pushoversounds pushover": "Pushover (기본)", + "pushoversounds bike": "Bike", + "pushoversounds bugle": "Bugle", + "pushoversounds cashregister": "Cash Register", + "pushoversounds classical": "Classical", + "pushoversounds cosmic": "Cosmic", + "pushoversounds falling": "Falling", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Incoming", + "pushoversounds intermission": "Intermission", + "pushoversounds magic": "Magic", + "pushoversounds mechanical": "Mechanical", + "pushoversounds pianobar": "Piano Bar", + "pushoversounds siren": "Siren", + "pushoversounds spacealarm": "Space Alarm", + "pushoversounds tugboat": "Tug Boat", + "pushoversounds alien": "Alien Alarm (long)", + "pushoversounds climb": "Climb (long)", + "pushoversounds persistent": "Persistent (long)", + "pushoversounds echo": "Pushover Echo (long)", + "pushoversounds updown": "Up Down (long)", + "pushoversounds vibrate": "진동만", + "pushoversounds none": "없음 (무음)", + "pushyAPIKey": "비밀 API 키", + "pushyToken": "기기 토큰", + "Show update if available": "사용 가능한 경우에 업데이트 표시", + "Also check beta release": "베타 릴리즈 확인", + "Using a Reverse Proxy?": "리버스 프록시를 사용하시나요?", + "Check how to config it for WebSocket": "웹소켓 대한 설정 방법", + "Steam Game Server": "스팀 게임 서버", + "Most likely causes:": "원인:", + "The resource is no longer available.": "더 이상 사용할 수 없어요...", + "There might be a typing error in the address.": "주소에 오탈자가 있을 수 있어요.", + "What you can try:": "해결 방법:", + "Retype the address.": "주소 다시 입력하기", + "Go back to the previous page.": "이전 페이지로 돌아가기", + "Coming Soon": "Coming Soon...", + "wayToGetClickSendSMSToken": "{0}에서 API 사용자 이름과 키를 얻을 수 있어요." +} diff --git a/src/lang/nb-NO.json b/src/lang/nb-NO.json new file mode 100644 index 000000000..7af812990 --- /dev/null +++ b/src/lang/nb-NO.json @@ -0,0 +1,285 @@ +{ + "languageName": "Norsk", + "checkEverySecond": "Sjekk hvert {0} sekund.", + "retryCheckEverySecond": "Prøv igjen hvert {0} sekund.", + "retriesDescription": "Maksimalt antall forsøk før tjenesten er merket som nede og et varsel sendes", + "ignoreTLSError": "Ignorer TLS/SSL-feil for HTTPS-nettsteder", + "upsideDownModeDescription": "Snu statusen opp ned. Hvis tjenesten er tilgjengelig, er den NEDE.", + "maxRedirectDescription": "Maksimalt antall viderekoblinger å følge. Sett til 0 for å deaktivere viderekoblinger.", + "acceptedStatusCodesDescription": "Velg statuskoder som anses som en vellykket respons.", + "passwordNotMatchMsg": "Passordene stemmer ikke overens.", + "notificationDescription": "Varsler må tilordnes en overvåkning for å fungere.", + "keywordDescription": "Søk etter nøkkelord i ren HTML eller JSON. Søket skiller mellom store og små bokstaver.", + "pauseDashboardHome": "Pause", + "deleteMonitorMsg": "Er du sikker på at du vil slette denne overvåkningen?", + "deleteNotificationMsg": "Er du sikker på at du vil slette dette varselet for alle overvåkningene?", + "resolverserverDescription": "Cloudflare er standardserveren. Du kan endre DNS-serveren når som helst.", + "rrtypeDescription": "Velg RR-typen du vil overvåke", + "pauseMonitorMsg": "Er du sikker på at du vil sette på pause?", + "enableDefaultNotificationDescription": "For hver ny overvåkning vil denne varslingen være aktivert som standard. Du kan fortsatt deaktivere varselet separat for hver overvåkning.", + "clearEventsMsg": "Er du sikker på at du vil slette alle hendelser for denne overvåkningen?", + "clearHeartbeatsMsg": "Er du sikker på at du vil slette alle hjerteslag for denne overvåkningen?", + "confirmClearStatisticsMsg": "Er du sikker på at du vil slette ALL statistikk?", + "importHandleDescription": "Velg 'Hopp over eksisterende' hvis du vil hoppe over hver overvåkning eller varsel med samme navn. 'Overskriv' sletter alle eksisterende overvåkninger og varsler.", + "confirmImportMsg": "Er du sikker på at du vil importere denne sikkerhetskopien? Sørg for at du har valgt riktig importalternativ.", + "twoFAVerifyLabel": "Skriv inn tokenet ditt for å bekrefte at 2FA fungerer", + "tokenValidSettingsMsg": "Token er gyldig! Du kan nå lagre 2FA-innstillingene.", + "confirmEnableTwoFAMsg": "Er du sikker på at du vil aktivere 2FA?", + "confirmDisableTwoFAMsg": "Er du sikker på at du vil deaktivere 2FA?", + "Settings": "Innstillinger", + "Dashboard": "Dashboard", + "New Update": "Ny Oppdatering", + "Language": "Språk", + "Appearance": "Utseende", + "Theme": "Tema", + "General": "Generelt", + "Version": "Versjon", + "Check Update On GitHub": "Sjekk oppdatering på GitHub", + "List": "Liste", + "Add": "Legg til", + "Add New Monitor": "Legg til ny overvåkning", + "Quick Stats": "Statistikk", + "Up": "Oppe", + "Down": "Nede", + "Pending": "Avventer", + "Unknown": "Ukjent", + "Pause": "Pause", + "Name": "Navn", + "Status": "Status", + "DateTime": "Dato tid", + "Message": "Melding", + "No important events": "Ingen viktige hendelser", + "Resume": "Fortsett", + "Edit": "Rediger", + "Delete": "Slett", + "Current": "Nåværende", + "Uptime": "Oppetid", + "Cert Exp.": "Sertifikat utløper", + "day": "dag | dager", + "-day": "-dag", + "hour": "time", + "-hour": "-time", + "Response": "Respons", + "Ping": "Ping", + "Monitor Type": "Overvåkningstype", + "Keyword": "Stikkord", + "Friendly Name": "Vennlig navn", + "URL": "URL", + "Hostname": "Vertsnavn", + "Port": "Port", + "Heartbeat Interval": "Hjerteslagsintervall", + "Retries": "Forsøk", + "Heartbeat Retry Interval": "Hjerteslagsforsøkintervall", + "Advanced": "Avansert", + "Upside Down Mode": "Opp-ned-modus", + "Max. Redirects": "Maks. viderekoblinger", + "Accepted Status Codes": "Godkjente statuskoder", + "Save": "Lagre", + "Notifications": "Varsler", + "Not available, please setup.": "Ikke tilgjengelig, venligst sett opp.", + "Setup Notification": "Sett opp varsel", + "Light": "Lys", + "Dark": "Mørk", + "Auto": "Auto", + "Theme - Heartbeat Bar": "Theme - Heartbeat Bar", + "Normal": "Normal", + "Bottom": "Bunn", + "None": "Ingen", + "Timezone": "Tidssone", + "Search Engine Visibility": "Søkemotor-synlighet", + "Allow indexing": "Tillat indeksering", + "Discourage search engines from indexing site": "Fraråd søkemotorer fra å indeksere nettstedet", + "Change Password": "Endre passord", + "Current Password": "Nåværende passord", + "New Password": "Nytt passord", + "Repeat New Password": "Gjenta nytt passord", + "Update Password": "Oppdater passord", + "Disable Auth": "Deaktiver autentisering", + "Enable Auth": "Aktiver autentisering", + "disableauth.message1": "Er du sikker på at du vil deaktiver autentisering?", + "disableauth.message2": "Dette er for de som har tredjepartsautorisering foran Uptime Kuma, for eksempel Cloudflare Access.", + "Please use this option carefully!": "Vennligst vær forsiktig.", + "Logout": "Logg ut", + "Leave": "Forlat", + "I understand, please disable": "Jeg forstår, vennligst deaktiver", + "Confirm": "Bekreft", + "Yes": "Ja", + "No": "Nei", + "Username": "Brukernavn", + "Password": "Passord", + "Remember me": "Husk meg", + "Login": "Logg inn", + "No Monitors, please": "Ingen overvåkning, vær så snill", + "add one": "legg til en", + "Notification Type": "Meldingstype", + "Email": "E-post", + "Test": "Test", + "Certificate Info": "Sertifikatinformasjon", + "Resolver Server": "DNS-server", + "Resource Record Type": "DNS-posttype", + "Last Result": "Siste resultat", + "Create your admin account": "Opprett en administratorkonto", + "Repeat Password": "Gjenta passord", + "Import Backup": "Importer sikkerhetskopi", + "Export Backup": "Eksporter sikkerhetskopi", + "Export": "Eksporter", + "Import": "Importer", + "respTime": "Svartid (ms)", + "notAvailableShort": "N/A", + "Default enabled": "Standard aktivert", + "Apply on all existing monitors": "Anvend for alle eksisterende overvåkninger", + "Create": "Opprett", + "Clear Data": "Slett data", + "Events": "Hendelser", + "Heartbeats": "Hjerteslag", + "Auto Get": "Auto Hent", + "backupDescription": "Du kan sikkerhetskopiere alle overvåkninger og alle varsler til en JSON-fil.", + "backupDescription2": "PS: Historikk og hendelsesdata er ikke inkludert.", + "backupDescription3": "Følsomme data som varslingstokener er inkludert i eksportfilen. Vennligst oppbevar dem sikkert.", + "alertNoFile": "Velg en fil som skal importeres.", + "alertWrongFileType": "Velg en JSON-fil.", + "Clear all statistics": "Fjern all statistikk", + "Skip existing": "Hopp over eksisterende", + "Overwrite": "Overskriv", + "Options": "Alternativer", + "Keep both": "Behold begge", + "Verify Token": "Bekreft token", + "Setup 2FA": "Konfigurer 2FA", + "Enable 2FA": "Aktiver 2FA", + "Disable 2FA": "Deaktiver 2FA", + "2FA Settings": "2FA Innstillinger", + "Two Factor Authentication": "To-faktor autentisering", + "Active": "Aktiv", + "Inactive": "Inaktiv", + "Token": "Token", + "Show URI": "Vis URI", + "Tags": "Etiketter", + "Add New below or Select...": "Legg til nytt nedenfor eller Velg ...", + "Tag with this name already exist.": "Etikett med dette navnet eksisterer allerede.", + "Tag with this value already exist.": "Etikett med denne verdien eksisterer allerede.", + "color": "farge", + "value (optional)": "verdi (valgfritt)", + "Gray": "Grå", + "Red": "Rød", + "Orange": "Oransje", + "Green": "Grønn", + "Blue": "Blå", + "Indigo": "Indigo", + "Purple": "Lilla", + "Pink": "Rosa", + "Search...": "Søk...", + "Avg. Ping": "Gj.sn. Ping", + "Avg. Response": "Gj.sn. Respons", + "Entry Page": "Oppføringsside", + "statusPageNothing": "Ingenting her, vennligst legg til en gruppe eller en overvåkning.", + "No Services": "Ingen tjenester", + "All Systems Operational": "Alle systemer i drift", + "Partially Degraded Service": "Delvis degradert tjeneste", + "Degraded Service": "Degradert tjeneste", + "Add Group": "Legg til gruppe", + "Add a monitor": "Legg til en overvåkning", + "Edit Status Page": "Rediger statusside", + "Go to Dashboard": "Gå til Dashboard", + "Status Page": "Statusside", + "Status Pages": "Statusside", + "defaultNotificationName": "Min {notification} varsling ({number})", + "here": "her", + "Required": "Obligatorisk", + "telegram": "Telegram", + "Bot Token": "Bot Token", + "wayToGetTelegramToken": "Du kan få et token fra {0}.", + "Chat ID": "Chat ID", + "supportTelegramChatID": "Support Direct Chat / Group / Channel's Chat ID", + "wayToGetTelegramChatID": "Du kan få chat-ID-en din ved å sende en melding til boten og gå til denne nettadressen for å se chat_id:", + "YOUR BOT TOKEN HERE": "DITT BOT TOKEN HER", + "chatIDNotFound": "Chat-ID ble ikke funnet. Send en melding til denne boten først", + "webhook": "Webhook", + "Post URL": "Post URL", + "Content Type": "Innholdstype", + "webhookJsonDesc": "{0} er bra for alle moderne HTTP-servere som express.js", + "webhookFormDataDesc": "{multipart} er bra for PHP. JSON trenger å bli analysert med {decodeFunction}", + "smtp": "E-post (SMTP)", + "secureOptionNone": "None / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Ignorer TLS feilmelding", + "From Email": "Fra E-post", + "To Email": "Til E-post", + "smtpCC": "CC", + "smtpBCC": "BCC", + "discord": "Discord", + "Discord Webhook URL": "Discord Webhook URL", + "wayToGetDiscordURL": "Du kan få denne ved å gå til Serverinnstillinger -> Integrasjoner -> Opprett en Webhook", + "Bot Display Name": "Bot Visningsnavn", + "Prefix Custom Message": "Prefiks tilpasset melding", + "Hello @everyone is...": "Hei {'@'}everyone det er...", + "teams": "Microsoft Teams", + "Webhook URL": "Webhook URL", + "wayToGetTeamsURL": "Du kan lære hvordan du oppretter en webhook-URL {0}.", + "signal": "Signal", + "Number": "Nummer", + "Recipients": "Mottakere", + "needSignalAPI": "Du må ha en Signal-klient med REST API.", + "wayToCheckSignalURL": "Du kan sjekke denne nettadressen for å se hvordan du konfigurerer en:", + "signalImportant": "VIKTIG: Du kan ikke blande grupper og nummere i mottakere!", + "gotify": "Gotify", + "Application Token": "Application Token", + "Server URL": "Server URL", + "Priority": "Prioritet", + "slack": "Slack", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Kanal navn", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "Mer informasjon om webhooks på: {0}", + "aboutChannelName": "Skriv inn kanalnavnet på {0} Kanalnavn-feltet hvis du vil omgå webhook-kanalen. Eks: #other-channel", + "aboutKumaURL": "Hvis du lar Uptime Kuma URL feltet være blank, den blir som standard til Github-siden for dette prosjektet.", + "emojiCheatSheet": "Emoji cheat sheet: {0}", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Support 50+ Notification services)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "User Key": "Bruker-nøkkel", + "Device": "Enhet", + "Message Title": "Meldingstittel", + "Notification Sound": "Notifikasjonslyd", + "More info on:": "Mer info på: {0}", + "pushoverDesc1": "Nødsprioritet (2) har en standard 30 sekunders tidsavbrudd mellom forsøk og vil utløpe etter 1 time.", + "pushoverDesc2": "Hvis du vil sende varsler til forskjellige enheteter, fyll ut Enhet-feltet.", + "SMS Type": "SMS Type", + "octopushTypePremium": "Premium (Raskt - anbefalt for varsling)", + "octopushTypeLowCost": "Lav kostnad (Sakte, noen ganger blokkert av leverandør)", + "Check octopush prices": "Sjekk octopush priser {0}.", + "octopushPhoneNumber": "Telefonnummer (intl format, eg : +4791234567) ", + "octopushSMSSender": "SMS Avsendernavn : 3-11 alphanumeriske tegn og mellomrom (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Enhet ID", + "Apprise URL": "Apprise URL", + "Example:": "Eksempel: {0}", + "Read more:": "Les mer: {0}", + "Status:": "Status: {0}", + "Read more": "Les mer", + "appriseInstalled": "Apprise er installert.", + "appriseNotInstalled": "Apprise ikke installert. {0}", + "Access Token": "Tilgangs-Token", + "Channel access token": "Kanal tilgangs-token", + "Line Developers Console": "Line Utviklserskonsoll", + "lineDevConsoleTo": "Line Utviklserskonsoll - {0}", + "Basic Settings": "Grunnleggende instillinger", + "User ID": "Bruker-ID", + "Messaging API": "Meldings-API", + "wayToGetLineChannelToken": "Først, få tilgang til {0}, lag en leverandør og kanal (Meldings-API), deretter kan du hente kanaltilgangs-token og bruker id fra menu-valgene nevnt over.", + "Icon URL": "Ikon URL", + "aboutIconURL": "Du kan gi en link til et bilde i \"Ikon URL\" for å overskrive det standard profilbildet. Vil ikke bli brukt hvis Ikon Emoji ikke er satt.", + "aboutMattermostChannelName": "Du kan overskrive standardkanalen som webhook-en poster i ved å skrive enn kanalnavnet i \"Kanalnavn\" feltet. Dette må være skrudd på i Mattermost webhook-instillingene. Eks: #other-channel", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - billig, men treg og ofte overbelastet. Begrenset til bare polske mottakere.", + "promosmsTypeFlash": "SMS FLASH - Melding vil automatisk vises på mottakker-enhet. Begrenset til bare polske mottakere.", + "promosmsTypeFull": "SMS FULL - Premuimnivå SMS. Du kan bruke dit avsendernavn (Du må registerere et navn først). Pålitelig for alle varslinger.", + "promosmsTypeSpeed": "SMS SPEED - Høyest prioritet i systemet.Veldig rask på pålitelig, men dyrt (omtrent det dobbeltet av SMS FULL pris).", + "promosmsPhoneNumber": "Telefonnummber (for polske mottakere. Du trenger ikke områdekode.)", + "promosmsSMSSender": "SMS Avsendernavn : Forhåndsregistert navn eller en av standardnavnene: InfoSMS, SMS Info, MaxSMS, INFO, SMS" +} diff --git a/src/lang/nl-NL.json b/src/lang/nl-NL.json new file mode 100644 index 000000000..f32d50947 --- /dev/null +++ b/src/lang/nl-NL.json @@ -0,0 +1,531 @@ +{ + "languageName": "Nederlands", + "checkEverySecond": "Controleer elke {0} seconden.", + "retriesDescription": "Maximum aantal nieuwe pogingen voordat de service wordt gemarkeerd als niet beschikbaar en er een melding wordt verzonden", + "ignoreTLSError": "Negeer TLS/SSL-fout voor HTTPS-websites", + "upsideDownModeDescription": "Draai de status om. Als de service bereikbaar is, is deze OFFLINE.", + "maxRedirectDescription": "Maximaal aantal te volgen omleidingen. Stel in op 0 om omleidingen uit te schakelen.", + "acceptedStatusCodesDescription": "Selecteer statuscodes die als een succesvol antwoord worden beschouwd.", + "passwordNotMatchMsg": "Het herhaalwachtwoord komt niet overeen.", + "notificationDescription": "Wijs a.u.b. een melding toe aan de monitor(s) om het te laten werken.", + "keywordDescription": "Zoek trefwoord in gewone html of JSON-response en het is hoofdlettergevoelig", + "pauseDashboardHome": "Gepauzeerd", + "deleteMonitorMsg": "Weet u zeker dat u deze monitor wilt verwijderen?", + "deleteNotificationMsg": "Weet u zeker dat u deze melding voor alle monitoren wilt verwijderen?", + "resolverserverDescription": "Cloudflare is de standaardserver, u kunt de resolver server op elk moment wijzigen.", + "rrtypeDescription": "Selecteer het RR-type dat u wilt monitoren", + "pauseMonitorMsg": "Weet je zeker dat je wilt pauzeren?", + "enableDefaultNotificationDescription": "Voor elke nieuwe monitor wordt deze melding standaard ingeschakeld. U kunt de melding nog steeds afzonderlijk uitschakelen voor elke monitor.", + "clearEventsMsg": "Weet je zeker dat je alle evenementen voor deze monitor wilt verwijderen?", + "clearHeartbeatsMsg": "Weet je zeker dat je alle heartbeats voor deze monitor wilt verwijderen?", + "confirmClearStatisticsMsg": "Weet u zeker dat u alle statistieken wilt verwijderen?", + "twoFAVerifyLabel": "Voer uw 2FA controle token in voor verificatie", + "tokenValidSettingsMsg": "Token is geldig! U kunt nu de 2FA-instellingen opslaan.", + "confirmEnableTwoFAMsg": "Weet je zeker dat je 2FA wilt inschakelen?", + "confirmDisableTwoFAMsg": "Weet je zeker dat je 2FA wilt uitschakelen?", + "Settings": "Instellingen", + "Dashboard": "Dashboard", + "New Update": "Nieuwe update", + "Language": "Taal", + "Appearance": "Weergave", + "Theme": "Thema", + "General": "Algemeen", + "Version": "Versie", + "Check Update On GitHub": "Controleer voor updates op GitHub", + "List": "Lijst", + "Add": "Toevoegen", + "Add New Monitor": "Nieuwe monitor toevoegen", + "Quick Stats": "Snelle statistieken", + "Up": "Online", + "Down": "Offline", + "Pending": "In afwachting", + "Unknown": "Onbekend", + "Pause": "Pauze", + "Name": "Naam", + "Status": "Status", + "DateTime": "Datum Tijd", + "Message": "Bericht", + "No important events": "Geen belangrijke gebeurtenissen", + "Resume": "Hervat", + "Edit": "Wijzigen", + "Delete": "Verwijderen", + "Current": "Huidig", + "Uptime": "Uptime", + "Cert Exp.": "Cert. verl.", + "day": "dag | dagen", + "-day": "-dag", + "hour": "uur", + "-hour": "-uur", + "Response": "Antwoord", + "Ping": "Ping", + "Monitor Type": "Monitortype:", + "Keyword": "Trefwoord", + "Friendly Name": "Vriendelijke naam", + "URL": "URL", + "Hostname": "Hostnaam", + "Port": "Poort", + "Heartbeat Interval": "Hartslaginterval", + "Retries": "Pogingen", + "Advanced": "Geavanceerd", + "Upside Down Mode": "Ondersteboven modus", + "Max. Redirects": "Max. Omleidingen", + "Accepted Status Codes": "Geaccepteerde statuscodes", + "Save": "Opslaan", + "Notifications": "Meldingen", + "Not available, please setup.": "Niet beschikbaar, stel a.u.b. in.", + "Setup Notification": "Melding instellen", + "Light": "Licht", + "Dark": "Donker", + "Auto": "Auto", + "Theme - Heartbeat Bar": "Thema - Hartslagbalk", + "Normal": "Normaal", + "Bottom": "Onderkant", + "None": "Geen", + "Timezone": "Tijdzone", + "Search Engine Visibility": "Zichtbaarheid voor zoekmachines", + "Allow indexing": "Indexering toestaan", + "Discourage search engines from indexing site": "Ontmoedig zoekmachines om de site te indexeren", + "Change Password": "Verander wachtwoord", + "Current Password": "Huidig wachtwoord", + "New Password": "Nieuw wachtwoord", + "Repeat New Password": "Herhaal nieuw wachtwoord", + "Update Password": "Vernieuw wachtwoord", + "Disable Auth": "Authenticatie uitschakelen", + "Enable Auth": "Authenticatie inschakelen", + "disableauth.message1": "Weet je zeker dat je authenticatie wilt uitschakelen?", + "disableauth.message2": "Er zijn omstandigheden waarbij je authenticatie door derden wilt implementeren voor Uptime Kuma, zoals Cloudflare Access, Authelia of andere authenticatiemechanismen.", + "Please use this option carefully!": "Gebruik deze optie zorgvuldig!", + "Logout": "Uitloggen", + "Leave": "Vertrekken", + "I understand, please disable": "Ik begrijp het, schakel a.u.b. uit", + "Confirm": "Bevestigen", + "Yes": "Ja", + "No": "Nee", + "Username": "Gebruikersnaam", + "Password": "Wachtwoord", + "Remember me": "Wachtwoord onthouden", + "Login": "Inloggen", + "No Monitors, please": "Geen monitoren, ", + "add one": "voeg een toe", + "Notification Type": "Melding type", + "Email": "E-mail", + "Test": "Testen", + "Certificate Info": "Certificaat informatie", + "Resolver Server": "Resolver Server", + "Resource Record Type": "Type bronrecord", + "Last Result": "Laatste resultaat", + "Create your admin account": "Maak uw beheerdersaccount aan", + "Repeat Password": "Herhaal wachtwoord", + "Export": "Exporteren", + "Import": "Importeren", + "respTime": "reactietijd (ms)", + "notAvailableShort": "N.v.t.", + "Default enabled": "Default enabled", + "Apply on all existing monitors": "Pas toe op alle bestaande monitors", + "Create": "Aanmaken", + "Clear Data": "Data wissen", + "Events": "Gebeurtenissen", + "Heartbeats": "Heartbeats", + "Auto Get": "Auto Get", + "backupDescription": "U kunt een back-up maken van alle monitoren en alle meldingen in een JSON-bestand.", + "backupDescription2": "PS: Geschiedenis- en gebeurtenisgegevens zijn niet inbegrepen.", + "backupDescription3": "Gevoelige gegevens zoals melding tokens zijn opgenomen in het exportbestand, houd het veilig opgeslagen.", + "alertNoFile": "Selecteer een bestand om te importeren.", + "alertWrongFileType": "Selecteer een JSON-bestand.", + "Verify Token": "Controleer token", + "Setup 2FA": "2FA instellingen", + "Enable 2FA": "Schakel 2FA in", + "Disable 2FA": "Schakel 2FA uit", + "2FA Settings": "2FA-instellingen", + "Two Factor Authentication": "Two Factor Authenticatie", + "Active": "Actief", + "Inactive": "Inactief", + "Also apply to existing monitors": "Voeg ook toe aan bestaande monitors", + "Token": "Token", + "Show URI": "Toon URI", + "Clear all statistics": "Wis alle statistieken", + "retryCheckEverySecond": "Probeer elke {0} seconden.", + "importHandleDescription": "Kies 'Sla bestaande over' als je elke monitor of melding met dezelfde naam wilt overslaan. Kies 'Overschrijf' als je elke monitor of notificatie wilt verwijderen.", + "confirmImportMsg": "Weet je zeker dat je dit bestand wilt importeren?", + "Heartbeat Retry Interval": "Heartbeat Retry Interval", + "Import Backup": "Importeer Backup", + "Export Backup": "Exporteer Backup", + "Skip existing": "Sla bestaande over", + "Overwrite": "Overschrijf", + "Options": "Opties", + "Keep both": "Bewaar beide", + "Tags": "Labels", + "Add New below or Select...": "Voeg nieuwe toe of selecteer...", + "Tag with this name already exist.": "Label met deze naam bestaat al", + "Tag with this value already exist.": "Label met deze waarde bestaat al", + "color": "Kleur", + "value (optional)": "waarde (optioneel)", + "Gray": "Grijs", + "Red": "Rood", + "Orange": "Oranje", + "Green": "Groen", + "Blue": "Blauw", + "Indigo": "Indigo", + "Purple": "Paars", + "Pink": "Roze", + "Search...": "Zoeken...", + "Avg. Ping": "Gemiddelde Ping", + "Avg. Response": "Gemiddelde Response", + "Entry Page": "Entry Page", + "statusPageNothing": "Niets hier, voeg een groep of monitor toe.", + "No Services": "Geen diensten", + "All Systems Operational": "Alle systemen operationeel", + "Partially Degraded Service": "Gedeeltelijk verminderde prestaties", + "Degraded Service": "Verminderde prestaties", + "Add Group": "Voeg groep toe", + "Add a monitor": "Voeg monitor toe", + "Edit Status Page": "Wijzig status pagina", + "Go to Dashboard": "Ga naar Dashboard", + "Status Page": "Status Pagina", + "Status Pages": "Status Pagina", + "telegram": "Telegram", + "webhook": "Webhook", + "smtp": "Email (SMTP)", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Support 50+ Notification services)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "Method": "Methode", + "Body": "Body", + "Headers": "Headers", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "The request headers is geen geldige JSON: ", + "BodyInvalidFormat": "De request body is geen geldige JSON: ", + "Primary Base URL": "Hoofd Basis URL", + "Push URL": "Push URL", + "needPushEvery": "Je moet deze URL elke {0} seconden aanroepen.", + "pushOptionalParams": "Optionele parameters: {0}", + "defaultNotificationName": "Mijn {notification} Alert ({number})", + "here": "hier", + "Required": "Verplicht", + "Bot Token": "Bot Token", + "wayToGetTelegramToken": "Je kunt een token krijgen van {0}.", + "Chat ID": "Chat ID", + "supportTelegramChatID": "Ondersteuning Directe Chat / Groep / Kanaal Chat ID", + "wayToGetTelegramChatID": "Je kunt je CHAT ID krijgen door een bericht te sturen naar de bot en naar deze URL te gaan om het chat_id te bekijken:", + "YOUR BOT TOKEN HERE": "DE BOT TOKEN HIER", + "chatIDNotFound": "Chat ID is niet gevonden; stuur eerst een bericht naar de bot", + "Post URL": "Post URL", + "Content Type": "Content Type", + "webhookJsonDesc": "{0} is goed voor een moderne HTTP server zoals Express.js", + "webhookFormDataDesc": "{multipart} is goed voor PHP. De JSON moet worden ontleed met {decodeFunction}", + "secureOptionNone": "Geen / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Negeer TLS Error", + "From Email": "Van Email", + "emailCustomSubject": "Aangepast Onderwerp", + "To Email": "Naar Email", + "smtpCC": "CC", + "smtpBCC": "BCC", + "Discord Webhook URL": "Discord Webhook URL", + "wayToGetDiscordURL": "Je kunt dit krijgen door te gaan naar Server Instellingen -> Integraties -> Creëer Webhook", + "Bot Display Name": "Bot Weergave Naam", + "Prefix Custom Message": "Prefix Aangepast Bericht", + "Hello @everyone is...": "Hallo {'@'}iedereen is...", + "Webhook URL": "Webhook URL", + "wayToGetTeamsURL": "Je kunt hier leren hoe je een webhook URL kunt maken {0}.", + "Number": "Nummer", + "Recipients": "Ontvangers", + "needSignalAPI": "Je moet een signal client met REST API hebben.", + "wayToCheckSignalURL": "Je kunt op deze URL zien hoe je een kunt instellen:", + "signalImportant": "BELANGRIJK: Je kunt groepen en nummers niet mengen in ontvangers!", + "Application Token": "Applicatie Token", + "Server URL": "Server URL", + "Priority": "Prioriteit", + "Icon Emoji": "Icoon Emoji", + "Channel Name": "Kanaal Naam", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "Meer info over Webhooks op: {0}", + "aboutChannelName": "Voer de kanaal naam in op {0} Kannaal Naam veld als je het Webhook kanaal wilt omzeilen. Bv: #other-channel", + "aboutKumaURL": "Als je de Uptime Kuma URL veld leeg laat, wordt standaard het GitHub project pagina weergegeven.", + "emojiCheatSheet": "Emoji cheat sheet: {0}", + "PushByTechulus": "Push door Techulus", + "clicksendsms": "ClickSend SMS", + "GoogleChat": "Google Chat (Google Workspace alleen)", + "User Key": "Gebruikers sleutel", + "Device": "Apparaat", + "Message Title": "Bericht Titel", + "Notification Sound": "Notificatie Geluid", + "More info on:": "Meer info op: {0}", + "pushoverDesc1": "Nood prioriteit (2) heeft standaard een 30 seconden timeout tussen pogingen en verloopt na 1 uur.", + "pushoverDesc2": "Vul het appraat veld in als je notificaties naar andere apparaten wilt versturen.", + "SMS Type": "SMS Type", + "octopushTypePremium": "Premium (Snel - aangeraden voor te alarmeren)", + "octopushTypeLowCost": "Low Cost (Langzaam - wordt soms geblokkeerd door operator)", + "checkPrice": "Controleer {0} prijzen:", + "apiCredentials": "API referenties", + "octopushLegacyHint": "Wil je de legacy versie van Octopush (2011-2020) gebruiken of de nieuwe versie?", + "Check octopush prices": "Controleer Octopush prijzen {0}.", + "octopushPhoneNumber": "Telefoon nummer (Int. formaat, eg : +33612345678) ", + "octopushSMSSender": "SMS zender naam : 3-11 alfanumerieke karakters en spatie (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Apparaat ID", + "Apprise URL": "Apprise URL", + "Example:": "Voorbeeld: {0}", + "Read more:": "Lees meer: {0}", + "Status:": "Status: {0}", + "Read more": "Lees meer", + "appriseInstalled": "Apprise is geïnstalleerd.", + "appriseNotInstalled": "Apprise is niet geïnstalleerd. {0}", + "Access Token": "Access Token", + "Channel access token": "Kanaal access token", + "Line Developers Console": "Line Developers Console", + "lineDevConsoleTo": "Line Developers Console - {0}", + "Basic Settings": "Basis Instellingen", + "User ID": "Gebruiker ID", + "Messaging API": "Berichten API", + "wayToGetLineChannelToken": "Begin met {0} te openen, creëer een provider en kanaal (Messaging API), dan kun je de kanaal access token en gebruikers ID van de hierboven genoemde menu items krijgen.", + "Icon URL": "Icoon URL", + "aboutIconURL": "Je kunt een link om de standaard profiel afbeelding te overschrijving in \"Icoon URL\" meegeven. Dit wordt niet gebruikt als Icon Emoji is ingesteld.", + "aboutMattermostChannelName": "Je kunt het standaard kanaal dat de Webhook plaatst overschijven door de kanaal naam in te vullen in het \"Channel Name\" veld. Dit moet worden ingeschakeld in de Mattermost Webhook instellingen. Bv. #ander-kanaal", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - Goedkoop maar langzaam en vaak overbelast. Gelimiteerd tot Poolse ontvangers.", + "promosmsTypeFlash": "SMS FLASH - Berichten worden automatisch weergegeven op het apparaat van de ontvanger. Gelimiteerd tot Poolse ontvangers.", + "promosmsTypeFull": "SMS FULL - Premium tier van SMS, je kunt de ontvanger naam gebruiken (Je moet eerst de naam registreren). Betrouwbaar voor alarmeringen.", + "promosmsTypeSpeed": "SMS SPEED - Hoogste prioriteit in systeem. Is veel sneller en betrouwbaarder maar kost meer (ongeveer twee keer zoveel als volle SMS prijs).", + "promosmsPhoneNumber": "Telefoon nummer (voor Poolse ontvangers. Je kunt gebieds codes overslaan)", + "promosmsSMSSender": "SMS Ontvanger naam : Voor geregistreerde naam of een van de standaarden: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + "matrixHomeserverURL": "Homeserver URL (met http(s):// en optioneel poort)", + "Internal Room Id": "Interne Room ID", + "matrixDesc1": "Je kunt de interne room ID vinden door in de geavanceerde sectie van de room instellingen in je Matrix client te kijken. Het zou moeten uitzien als !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Het wordt ten zeerste aanbevolen om een nieuwe gebruiker aan te maken en niet de access token van je account te gebruiken, aangezien dit volledige toegang geeft tot je account en alle kamers waar je lid van bent. Maak in plaats daarvan een nieuwe gebruiker aan en nodig deze alleen uit voor de ruimte waarin je de melding wilt ontvangen. Je kunt de access token krijgen door het volgende uit te voeren {0}", + "Monitor History": "Monitor Geschiedenis", + "clearDataOlderThan": "Bewaar monitor geschiedenis voor {0} dagen.", + "PasswordsDoNotMatch": "Wachtwoorden komen niet overeen", + "records": "records", + "One record": "Een record", + "steamApiKeyDescription": "Om een Steam Game Server te monitoren heb je een Steam Web-API key nodig. Je kunt hier je API key registreren: ", + "Current User": "Huidge Gebruiker", + "topic": "Onderwerp", + "topicExplanation": "MQTT onderwerp om te monitoren", + "successMessage": "Succesbericht", + "successMessageExplanation": "MQTT bericht dat als succes wordt beschouwd.", + "recent": "Recent", + "Done": "Klaar", + "Info": "Info", + "Security": "Beveiliging", + "Steam API Key": "Steam API Sleutel", + "Shrink Database": "Verklein Database", + "Pick a RR-Type...": "Kies een RR-Type...", + "Pick Accepted Status Codes...": "Kies geaccepteerde Status Codes...", + "Default": "Standaard", + "HTTP Options": "HTTP Opties", + "Create Incident": "Creëer Incident", + "Title": "Titel", + "Content": "Content", + "Style": "Stijl", + "info": "info", + "warning": "waarschuwing", + "danger": "gevaar", + "primary": "primair", + "light": "licht", + "dark": "donker", + "Post": "Post", + "Please input title and content": "Voer alstublieft titel en content in", + "Created": "Gemaakt", + "Last Updated": "Laatst Bijgewerkt", + "Unpin": "Losmaken", + "Switch to Light Theme": "Wissel naar Licht Thema", + "Switch to Dark Theme": "Wissel naar Donker Thema", + "Show Tags": "Toon Labels", + "Hide Tags": "Verberg Labels", + "Description": "Beschrijving", + "No monitors available.": "Geen monitors beschikbaar.", + "Add one": "Voeg een toe", + "No Monitors": "Geen Monitors", + "Untitled Group": "Naamloze Groep", + "Services": "Diensten", + "Discard": "Weggooien", + "Cancel": "Annuleren", + "Powered by": "Mogelijk gemaakt door", + "shrinkDatabaseDescription": "Activeer database VACUUM voor SQLite. Als de database na 1.10.0 aangemaakt is, dan staat AUTO_VACUUM al aan en is deze actie niet nodig.", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API Gebruikersnaam (incl. webapi_ prefix)", + "serwersmsAPIPassword": "API Wachtwoord", + "serwersmsPhoneNumber": "Telefoon nummer", + "serwersmsSenderName": "SMS Zender Naam (geregistreerd via klant portaal)", + "stackfield": "Stackfield", + "Customize": "Aanpassen", + "Custom Footer": "Aangepaste Footer", + "Custom CSS": "Aangepaste CSS", + "smtpDkimSettings": "DKIM Instellingen", + "smtpDkimDesc": "Refereer alsjeblieft naar Nodemailer DKIM {0} voor gebruik.", + "documentation": "documentatie", + "smtpDkimDomain": "Domein Naam", + "smtpDkimKeySelector": "Sleutel Kiezer", + "smtpDkimPrivateKey": "Prive Sleutel", + "smtpDkimHashAlgo": "Hash Algoritme (Optioneel)", + "smtpDkimheaderFieldNames": "Header sleutels om te ondertekenen (Optioneel)", + "smtpDkimskipFields": "Header sleutels niet om te ondertekenen (Optioneel)", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API Eindpunt", + "alertaEnvironment": "Omgeving", + "alertaApiKey": "API Sleutel", + "alertaAlertState": "Alert Staat", + "alertaRecoverState": "Herstel Staat", + "deleteStatusPageMsg": "Weet je zeker je deze status pagina wilt verwijderen?", + "Proxies": "Proxies", + "default": "Standaard", + "enabled": "Ingeschakeld", + "setAsDefault": "Stel in als standaard", + "deleteProxyMsg": "Weet je zeker dat je deze proxy wilt verwijderen voor alle monitors?", + "proxyDescription": "Proxies moeten worden toegewezen aan een monitor om te functioneren.", + "enableProxyDescription": "Deze proxy heeft geen effect op monitor verzoeken totdat het is geactiveerd. Je kunt tijdelijk de proxy uitschakelen voor alle monitors voor activatie status.", + "setAsDefaultProxyDescription": "Deze proxy wordt standaard aangezet voor alle nieuwe monitors. Je kunt nog steeds de proxy apart uitschakelen voor elke monitor.", + "Certificate Chain": "Certificaatketen", + "Valid": "Geldig", + "Invalid": "Ongeldig", + "AccessKeyId": "AccessKey ID", + "SecretAccessKey": "AccessKey Secret", + "PhoneNumbers": "TelefoonNummers", + "TemplateCode": "TemplateCode", + "SignName": "SignName", + "Sms template must contain parameters: ": "Sms sjabloon moet de volgende parameters bevatten: ", + "Bark Endpoint": "Bark Endpoint", + "WebHookUrl": "WebHookUrl", + "SecretKey": "SecretKey", + "For safety, must use secret key": "Voor de veiligheid moet je de secret key gebruiken", + "Device Token": "Apparaat Token", + "Platform": "Platform", + "iOS": "iOS", + "Android": "Android", + "Huawei": "Huawei", + "High": "Hoog", + "Retry": "Opnieuw", + "Topic": "Onderwerp", + "WeCom Bot Key": "WeCom Bot Key", + "Setup Proxy": "Proxy instellen", + "Proxy Protocol": "Proxy Protocol", + "Proxy Server": "Proxy Server", + "Proxy server has authentication": "Proxy server heeft authenticatie", + "User": "Gebruiker", + "Installed": "Geïnstalleerd", + "Not installed": "Niet geïnstalleerd", + "Running": "Actief", + "Not running": "Niet actief", + "Remove Token": "Verwijder Token", + "Start": "Start", + "Stop": "Stop", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "Voeg nieuwe status pagina toe", + "Slug": "Slug", + "Accept characters:": "Geaccepteerde tekens:", + "startOrEndWithOnly": "Start of eindig alleen met {0}", + "No consecutive dashes": "Geen opeenvolgende streepjes", + "Next": "Volgende", + "The slug is already taken. Please choose another slug.": "De slug is al in gebruik. Kies een andere slug.", + "No Proxy": "Geen Proxy", + "HTTP Basic Auth": "HTTP Basic Auth", + "New Status Page": "Nieuwe Status Pagina", + "Page Not Found": "Pagina Niet gevonden", + "Reverse Proxy": "Reverse Proxy", + "Backup": "Backup", + "About": "Over", + "wayToGetCloudflaredURL": "(Download cloudflared van {0})", + "cloudflareWebsite": "Cloudflare Website", + "Message:": "Bericht:", + "Don't know how to get the token? Please read the guide:": "Lees de uitleg als je niet weet hoe je een token krijgt:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "De huidge verbinding kan worden verbroken als je momenteel bent verbonden met Cloudflare Tunnel. Weet je zeker dat je het wilt stoppen? Typ je huidige wachtwoord om het te bevestigen.", + "Other Software": "Andere Software", + "For example: nginx, Apache and Traefik.": "Bijvoorbeeld: nginx, Apache and Traefik.", + "Please read": "Lees alstublieft", + "Subject:": "Onderwerp:", + "Valid To:": "Geldig Tot:", + "Days Remaining:": "Dagen Resterend:", + "Issuer:": "Uitgever:", + "Fingerprint:": "Vingerafruk:", + "No status pages": "Geen status pagina's", + "Proxy": "Proxy", + "Date Created": "Datum Aangemaakt", + "onebotHttpAddress": "OneBot HTTP Adres", + "onebotMessageType": "OneBot Bericht Type", + "onebotGroupMessage": "Groep", + "onebotPrivateMessage": "Privé", + "onebotUserOrGroupId": "Groep/Gebruiker ID", + "onebotSafetyTips": "Voor de veiligheid moet een toegangssleutel worden ingesteld", + "PushDeer Key": "PushDeer Key", + "Footer Text": "Footer Tekst", + "Show Powered By": "Laat \"Mogeljik gemaakt door\" zien", + "Domain Names": "Domein Namen", + "pushoversounds pushover": "Pushover (default)", + "pushoversounds bike": "Bike", + "pushoversounds bugle": "Bugle", + "pushoversounds cashregister": "Cash Register", + "pushoversounds classical": "Classical", + "pushoversounds cosmic": "Cosmic", + "pushoversounds falling": "Falling", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Incoming", + "pushoversounds intermission": "Intermission", + "pushoversounds magic": "Magic", + "pushoversounds mechanical": "Mechanical", + "pushoversounds pianobar": "Piano Bar", + "pushoversounds siren": "Siren", + "pushoversounds spacealarm": "Space Alarm", + "pushoversounds tugboat": "Tug Boat", + "pushoversounds alien": "Alien Alarm (long)", + "pushoversounds climb": "Climb (long)", + "pushoversounds persistent": "Persistent (long)", + "pushoversounds echo": "Pushover Echo (long)", + "pushoversounds updown": "Up Down (long)", + "pushoversounds vibrate": "Vibrate Only", + "pushoversounds none": "None (silent)", + "dnsPortDescription": "DNS-serverpoort. Standaard ingesteld op 53. Je kunt de poort op elk moment wijzigen.", + "error": "fout", + "critical": "kritisch", + "wayToGetPagerDutyKey": "Je kunt dit krijgen door naar Service -> Service Directory -> (Selecteer een service) -> Integraties -> Integratie toevoegen te gaan. Hier kunt u zoeken naar \"Events API V2\". Meer informatie {0}", + "Integration Key": "Integration Key", + "Integration URL": "Integration URL", + "Auto resolve or acknowledged": "Automatisch oplossen of bevestigen", + "do nothing": "niets doen", + "auto acknowledged": "automatisch bevestigen", + "auto resolve": "automatisch oplossen", + "Authentication": "authenticatie", + "signedInDisp": "Aangemeld als {0}", + "signedInDispDisabled": "Authenticatie uitgeschakeld.", + "Certificate Expiry Notification": "Melding over verlopen certificaat", + "Recipient Number": "Nummer ontvanger", + "From Name/Number": "Van naam/nummer", + "Leave blank to use a shared sender number.": "Laat leeg om een gedeeld afzendernummer te gebruiken.", + "endpoint": "endpoint", + "pushyAPIKey": "Secret API Key", + "pushyToken": "Device token", + "Show update if available": "Update weergeven indien beschikbaar", + "Also check beta release": "Controleer ook de bètaversies", + "Using a Reverse Proxy?": "Een reverse proxy gebruiken?", + "Check how to config it for WebSocket": "Controleer hoe je het configureert voor een WebSocket", + "Steam Game Server": "Steam gameserver", + "Most likely causes:": "Meest waarschijnlijke oorzaken:", + "The resource is no longer available.": "De paginabron is niet langer beschikbaar.", + "There might be a typing error in the address.": "Er zit een typefout in het de URL.", + "What you can try:": "Wat je kan proberen:", + "Retype the address.": "De URL controleren en/of opnnieuw typen.", + "Go back to the previous page.": "Terug naar de vorige pagina.", + "Coming Soon": "Binnenkort beschikbaar", + "wayToGetClickSendSMSToken": "Je kan een API Username en API Key krijgen vanuit {0} .", + "Connection String": "Connection String", + "Query": "Query", + "settingsCertificateExpiry": "TLS Certificate Expiry", + "certificationExpiryDescription": "HTTPS Monitors trigger notification when TLS certificate expires in:", + "ntfy Topic": "ntfy Topic", + "Domain": "Domein", + "Workstation": "Werkstation", + "disableCloudflaredNoAuthMsg": "De \"Geen authenticatie\" modus staat aan, wachtwoord is niet vereist." +} diff --git a/src/lang/pl.json b/src/lang/pl.json new file mode 100644 index 000000000..319a3175f --- /dev/null +++ b/src/lang/pl.json @@ -0,0 +1,644 @@ +{ + "languageName": "Polski", + "checkEverySecond": "Sprawdzaj co {0} sekund", + "retryCheckEverySecond": "Ponawiaj co {0} sekund", + "retriesDescription": "Maksymalna liczba powtórzeń, zanim usługa zostanie oznaczona jako niedostępna i zostanie wysłane powiadomienie", + "ignoreTLSError": "Ignoruj błąd TLS/SSL dla stron HTTPS", + "upsideDownModeDescription": "Odwróć status do góry nogami. Jeśli usługa jest osiągalna, to jest oznaczona jako niedostępna.", + "maxRedirectDescription": "Maksymalna liczba przekierowań do wykonania. Ustaw na 0, aby wyłączyć przekierowania.", + "acceptedStatusCodesDescription": "Wybierz kody stanu, które są uważane za prawidłową odpowiedź.", + "passwordNotMatchMsg": "Powtórzone hasło nie pasuje.", + "notificationDescription": "Proszę przypisać powiadomienie do monitora(ów), aby działało.", + "keywordDescription": "Wyszukiwanie słów kluczowych w zwykłym html lub odpowiedzi JSON. Wielkość liter ma znaczenie.", + "pauseDashboardHome": "Wstrzymane", + "deleteMonitorMsg": "Czy na pewno chcesz usunąć ten monitor?", + "deleteNotificationMsg": "Czy na pewno chcesz usunąć to powiadomienie dla wszystkich monitorów?", + "resolverserverDescription": "Cloudflare jest domyślnym serwerem, możesz zmienić serwer resolver w każdej chwili.", + "rrtypeDescription": "Wybierz rodzaj rekordu, który chcesz monitorować.", + "pauseMonitorMsg": "Czy na pewno chcesz wstrzymać monitorowanie?", + "enableDefaultNotificationDescription": "Dla każdego nowego monitora to powiadomienie będzie domyślnie włączone. Nadal możesz wyłączyć powiadomienia osobno dla każdego monitora.", + "clearEventsMsg": "Jesteś pewien, że chcesz wyczyścić historię zdarzeń dla tego monitora?", + "clearHeartbeatsMsg": "Jesteś pewien, że chcesz wyczyścić historię bicia serca dla tego monitora?", + "confirmClearStatisticsMsg": "Jesteś pewien, że chcesz usunąć WSZYSTKIE statystyki?", + "importHandleDescription": "Wybierz 'Pomiń istniejące', jeśli chcesz pominąć każdy monitor lub powiadomienie o tej samej nazwie. 'Nadpisz' spowoduje usunięcie każdego istniejącego monitora i powiadomienia.", + "confirmImportMsg": "Czy na pewno chcesz zaimportować kopię zapasową? Upewnij się, że wybrałeś właściwą opcję importu.", + "twoFAVerifyLabel": "Proszę, podaj swój token 2FA, aby sprawdzić, czy 2FA działa.", + "tokenValidSettingsMsg": "Token jest prawidłowy! Teraz możesz zapisać ustawienia 2FA.", + "confirmEnableTwoFAMsg": "Jesteś pewien, że chcesz włączyć 2FA?", + "confirmDisableTwoFAMsg": "Jesteś pewien, że chcesz wyłączyć 2FA?", + "Settings": "Ustawienia", + "Dashboard": "Panel", + "New Update": "Nowa aktualizacja", + "Language": "Język", + "Appearance": "Wygląd", + "Theme": "Motyw", + "General": "Ogólne", + "Version": "Wersja", + "Check Update On GitHub": "Sprawdź aktualizację na GitHub", + "List": "Lista", + "Add": "Dodaj", + "Add New Monitor": "Dodaj monitor", + "Quick Stats": "Szybki podgląd statystyk", + "Up": "Online", + "Down": "Offline", + "Pending": "Oczekuje", + "Unknown": "Nieznane", + "Pause": "Wstrzymaj", + "Name": "Nazwa", + "Status": "Status", + "DateTime": "Data i godzina", + "Message": "Wiadomość", + "No important events": "Brak ważnych wydarzeń", + "Resume": "Wznów", + "Edit": "Edytuj", + "Delete": "Usuń", + "Current": "Aktualny", + "Uptime": "Czas pracy", + "Cert Exp.": "Certyfikat wygasa", + "day": "dzień | dni", + "-day": " dni", + "hour": "godzina", + "-hour": " godzin", + "Response": "Odpowiedź", + "Ping": "Ping", + "Monitor Type": "Rodzaj monitora", + "Keyword": "Słowo kluczowe", + "Friendly Name": "Przyjazna nazwa", + "URL": "URL", + "Hostname": "Nazwa hosta", + "Port": "Port", + "Heartbeat Interval": "Częstotliwość bicia serca", + "Retries": "Prób", + "Heartbeat Retry Interval": "Częstotliwość ponawiania bicia serca", + "Advanced": "Zaawansowane", + "Upside Down Mode": "Tryb odwrócony", + "Max. Redirects": "Maks. przekierowań", + "Accepted Status Codes": "Akceptowane kody statusu", + "Save": "Zapisz", + "Notifications": "Powiadomienia", + "Not available, please setup.": "Niedostępne, proszę skonfigurować.", + "Setup Notification": "Skonfiguruj powiadomienie", + "Light": "Jasny", + "Dark": "Ciemny", + "Auto": "Automatyczny", + "Theme - Heartbeat Bar": "Motyw - pasek bicia serca", + "Normal": "Domyślne", + "Bottom": "Na dole", + "None": "Brak", + "Timezone": "Strefa czasowa", + "Search Engine Visibility": "Widoczność w wyszukiwarce", + "Allow indexing": "Zezwól na indeksowanie", + "Discourage search engines from indexing site": "Zniechęcaj wyszukiwarki do indeksowania strony", + "Change Password": "Zmień hasło", + "Current Password": "Aktualne hasło", + "New Password": "Nowe hasło", + "Repeat New Password": "Powtórz nowe hasło", + "Update Password": "Zaktualizuj hasło", + "Disable Auth": "Wyłącz autoryzację", + "Enable Auth": "Włącz autoryzację", + "disableauth.message1": "Czy na pewno chcesz wyłączyć autoryzację?", + "disableauth.message2": "Jest przeznaczony dla kogoś, kto ma autoryzację zewnętrzną przed Uptime Kuma, taką jak Cloudflare Access.", + "Please use this option carefully!": "Proszę używać ostrożnie.", + "Logout": "Wyloguj", + "Leave": "Zostaw", + "I understand, please disable": "Rozumiem, proszę wyłączyć", + "Confirm": "Potwierdź", + "Yes": "Tak", + "No": "Nie", + "Username": "Nazwa użytkownika", + "Password": "Hasło", + "Remember me": "Zapamiętaj mnie", + "Login": "Zaloguj", + "No Monitors, please": "Brak monitorów, proszę", + "add one": "dodać jeden", + "Notification Type": "Rodzaj powiadomienia", + "Email": "E-mail", + "Test": "Test", + "Certificate Info": "Informacje o certyfikacie", + "Resolver Server": "Serwer rozwiązywania nazw", + "Resource Record Type": "Typ rekordu zasobów", + "Last Result": "Ostatni wynik", + "Create your admin account": "Utwórz swoje konto administratora", + "Repeat Password": "Powtórz hasło", + "Import Backup": "Importuj kopię zapasową", + "Export Backup": "Eksportuj kopię zapasową", + "Export": "Eksportuj", + "Import": "Importuj", + "respTime": "Czas odp. (ms)", + "notAvailableShort": "N/D", + "Default enabled": "Włącz domyślnie", + "Apply on all existing monitors": "Zastosuj do istniejących monitorów", + "Create": "Stwórz", + "Clear Data": "Usuń dane", + "Events": "Wydarzenia", + "Heartbeats": "Bicia serca", + "Auto Get": "Wykryj", + "backupDescription": "Możesz wykonać kopię zapasową wszystkich monitorów i wszystkich powiadomień do pliku JSON.", + "backupDescription2": "PS: Historia i dane zdarzeń nie są uwzględniane.", + "backupDescription3": "Poufne dane, takie jak tokeny powiadomień, są zawarte w pliku eksportu, prosimy o ostrożne przechowywanie.", + "alertNoFile": "Wybierz plik do importu.", + "alertWrongFileType": "Proszę wybrać plik JSON.", + "Clear all statistics": "Wyczyść wszystkie statystyki", + "Skip existing": "Pomiń istniejące", + "Overwrite": "Nadpisz", + "Options": "Opcje", + "Keep both": "Zachowaj oba", + "Verify Token": "Zweryfikuj token", + "Setup 2FA": "Konfiguracja 2FA", + "Enable 2FA": "Włącz 2FA", + "Disable 2FA": "Wyłącz 2FA", + "2FA Settings": "Ustawienia 2FA", + "Two Factor Authentication": "Uwierzytelnienie dwuskładnikowe", + "Active": "Włączone", + "Inactive": "Wyłączone", + "Token": "Token", + "Show URI": "Pokaż URI", + "Tags": "Tagi", + "Add New below or Select...": "Dodaj nowy poniżej lub wybierz...", + "Tag with this name already exist.": "Tag o tej nazwie już istnieje.", + "Tag with this value already exist.": "Tag o tej wartości już istnieje.", + "color": "kolor", + "value (optional)": "wartość (opcjonalnie)", + "Gray": "Szary", + "Red": "Czerwony", + "Orange": "Pomarańczowy", + "Green": "Zielony", + "Blue": "Niebieski", + "Indigo": "Indygo", + "Purple": "Fioletowy", + "Pink": "Różowy", + "Search...": "Szukaj...", + "Avg. Ping": "Średni ping", + "Avg. Response": "Średnia odpowiedź", + "Entry Page": "Strona startowa", + "statusPageNothing": "Nic tu nie ma, dodaj grupę lub monitor.", + "No Services": "Brak usług", + "All Systems Operational": "Wszystkie systemy działają poprawnie", + "Partially Degraded Service": "Część usług nie działa", + "Degraded Service": "Usługa nie działa", + "Add Group": "Dodaj grupę", + "Add a monitor": "Dodaj monitor", + "Edit Status Page": "Edytuj stronę statusu", + "Go to Dashboard": "Idź do panelu", + "Status Page": "Strona statusu", + "Status Pages": "Strony statusów", + "defaultNotificationName": "Moje powiadomienie {notification} ({number})", + "here": "tutaj", + "Required": "Wymagane", + "telegram": "Telegram", + "Bot Token": "Token bota", + "wayToGetTelegramToken": "Token można uzyskać z {0}.", + "Chat ID": "Identyfikator czatu", + "supportTelegramChatID": "Czat wsparcia technicznego / Bezpośrednia rozmowa / Czat grupowy", + "wayToGetTelegramChatID": "Możesz uzyskać swój identyfikator czatu, wysyłając wiadomość do bota i przechodząc pod ten adres URL, aby wyświetlić identyfikator czatu:", + "YOUR BOT TOKEN HERE": "TWÓJ TOKEN BOTA", + "chatIDNotFound": "Identyfikator czatu nie znaleziony, najpierw napisz do bota", + "webhook": "Webhook", + "Post URL": "Adres URL", + "Content Type": "Rodzaj danych", + "webhookJsonDesc": "{0} jest dobry w przypadku serwerów HTTP, takich jak express.js", + "webhookFormDataDesc": "{multipart} jest dobry dla PHP, musisz jedynie przetworzyć dane przez {decodeFunction}", + "smtp": "Email (SMTP)", + "secureOptionNone": "Brak / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Zignoruj błędy TLS", + "From Email": "Nadawca (OD)", + "To Email": "Odbiorca (DO)", + "smtpCC": "DW", + "smtpBCC": "UDW", + "discord": "Discord", + "Discord Webhook URL": "URL webhook Discorda", + "wayToGetDiscordURL": "Możesz go uzyskać, przechodząc do Ustawienia serwera -> Integracje -> Tworzenie webhooka", + "Bot Display Name": "Wyświetlana nazwa bota", + "Prefix Custom Message": "Własny początek wiadomości", + "Hello @everyone is...": "Hej {'@'}everyone ...", + "teams": "Microsoft Teams", + "Webhook URL": "URL webhooka", + "wayToGetTeamsURL": "Możesz dowiedzieć się, jak utworzyć adres url webhooka {0}.", + "signal": "Signal", + "Number": "Numer", + "Recipients": "Odbiorcy", + "needSignalAPI": "Musisz mieć klienta Signal z REST API.", + "wayToCheckSignalURL": "W celu dowiedzenia się, jak go skonfigurować, odwiedź poniższy link:", + "signalImportant": "UWAGA: Nie można mieszać nazw grup i numerów odbiorców!", + "gotify": "Gotify", + "Application Token": "Token aplikacji", + "Server URL": "Server URL", + "Priority": "Priorytet", + "slack": "Slack", + "Icon Emoji": "Ikona emoji", + "Channel Name": "Nazwa kanału", + "Uptime Kuma URL": "Adres Uptime Kuma", + "aboutWebhooks": "Więcej informacji na temat webhooków: {0}", + "aboutChannelName": "Podaj nazwę kanału {0} w polu Nazwa kanału, jeśli chcesz pominąć kanał webhooka. Np.: #inny-kanal", + "aboutKumaURL": "Jeśli pozostawisz pole Adres Uptime Kuma puste, domyślnie będzie to strona projektu na GitHub.", + "emojiCheatSheet": "Ściąga emoji: {0}", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "PushByTechulus": "Push od Techulus", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (obsługuje 50+ usług powiadomień)", + "GoogleChat": "Google Chat (wyłącznie Google Workspace)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "User Key": "Klucz użytkownika", + "Device": "Urządzenie", + "Message Title": "Tytuł wiadomości", + "Notification Sound": "Dźwięk powiadomienia", + "More info on:": "Więcej informacji na: {0}", + "pushoverDesc1": "Priorytet awaryjny (2) ma domyślny 30-sekundowy limit czasu między kolejnymi próbami i wygaśnie po 1 godzinie.", + "pushoverDesc2": "Jeśli chcesz wysyłać powiadomienia na różne urządzenia, wypełnij pole Urządzenie.", + "SMS Type": "Rodzaj SMS", + "octopushTypePremium": "Premium (szybki - rekomendowany dla powiadomień)", + "octopushTypeLowCost": "Low Cost (wolny, czasami blokowany przez operatorów)", + "Check octopush prices": "Sprawdź ceny Octopush {0}.", + "octopushPhoneNumber": "Numer telefonu (format międzynarodowy np.: +33612345678)", + "octopushSMSSender": "Nadawca SMS: 3-11 znaków alfanumerycznych i spacji (a-zA-Z0-9)", + "LunaSea Device ID": "Identyfikator urządzenia LunaSea", + "Apprise URL": "URL Apprise", + "Example:": "Przykład: {0}", + "Read more:": "Czytaj dalej: {0}", + "Status:": "Status: {0}", + "Read more": "Czytaj dalej", + "appriseInstalled": "Apprise jest zainstalowane.", + "appriseNotInstalled": "Apprise nie zostało zainstalowane. {0}", + "Access Token": "Token dostępu", + "Channel access token": "Token dostępu kanału", + "Line Developers Console": "Konsola deweloperska Line", + "lineDevConsoleTo": "Konsola deweloperska Line - {0}", + "Basic Settings": "Ustawienia ogólne", + "User ID": "Identyfikator użytkownika", + "Messaging API": "API wiadomości", + "wayToGetLineChannelToken": "Najpierw uzyskaj dostęp do {0}, utwórz dostawcę i kanał (Messaging API), a następnie możesz uzyskać token dostępu do kanału i identyfikator użytkownika z wyżej wymienionych pozycji menu.", + "Icon URL": "Adres Ikony", + "aboutIconURL": "Możesz podać link do zdjęcia w \"Adres URL ikony\", aby zastąpić domyślne zdjęcie profilowe. Nie będzie używany, jeśli ustawiona jest ikona emoji.", + "aboutMattermostChannelName": "Możesz zastąpić domyślny kanał, na którym publikowane są posty webhooka, wpisując nazwę kanału w polu \"Nazwa kanału\". Należy to włączyć w ustawieniach webhooka Mattermost. Np.: #inny-kanał", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - tanie, lecz wolne. Dostępne tylko w Polsce", + "promosmsTypeFlash": "SMS FLASH - wiadomość automatycznie wyświetli się na urządzeniu. Dostępne tylko w Polsce.", + "promosmsTypeFull": "SMS FULL - szybkie i dostępne międzynarodowo. Wersja premium usługi, która pozwala min. ustawić własną nazwę nadawcy.", + "promosmsTypeSpeed": "SMS SPEED - wysyłka priorytetowa, ma wszystkie zalety SMS FULL", + "promosmsPhoneNumber": "Numer odbiorcy", + "promosmsSMSSender": "Nadawca SMS (wcześniej zatwierdzone nazwy z panelu PromoSMS)", + "Primary Base URL": "Główny URL", + "Push URL": "Push URL", + "needPushEvery": "Powinieneś wywoływać ten URL co {0} sekund", + "pushOptionalParams": "Parametry opcjonalne: {0}", + "emailCustomSubject": "Niestandardowy temat", + "checkPrice": "Sprawdź ceny {0}:", + "octopushLegacyHint": "Czy używasz starszej wersji Octopush (2011-2020) czy nowej wersji?", + "Feishu WebHookUrl": "Feishu WebHookURL", + "matrixHomeserverURL": "Adres URL serwera domowego (z http(s):// i opcjonalnie port)", + "Internal Room Id": "Wewnętrzne ID pokoju", + "matrixDesc1": "Możesz znaleźć wewnętrzne ID pokoju, patrząc w zaawansowanej sekcji ustawień pokoju w twoim kliencie Matrix. Powinien on wyglądać jak !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Jest wysoce zalecane, abyś stworzył nowego użytkownika i nie używał tokena dostępu swojego użytkownika Matrix, ponieważ pozwoli on na pełny dostęp do twojego konta i wszystkich pokoi, do których dołączyłeś. Zamiast tego, utwórz nowego użytkownika i zaproś go tylko do pokoju, w którym chcesz otrzymywać powiadomienia. Możesz uzyskać token dostępu przez uruchomienie {0}", + "Method": "Metoda", + "Body": "Treść", + "Headers": "Nagłówki", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "Nagłówki żądania nie są w poprawnym formacie JSON: ", + "BodyInvalidFormat": "Treść żądania nie jest w poprawnym formacie JSON: ", + "Monitor History": "Historia monitorów", + "clearDataOlderThan": "Przechowuj dane dotyczące historii monitorowania {0} dni.", + "PasswordsDoNotMatch": "Hasła nie pasują.", + "records": "rekordy", + "One record": "Jeden rekord", + "steamApiKeyDescription": "Do monitorowania serwera gier Steam potrzebny jest klucz Steam Web-API. Możesz zarejestrować swój klucz API tutaj: ", + "Current User": "Aktualny użytkownik", + "topic": "Temat", + "topicExplanation": "Temat MQTT do monitorowania", + "successMessage": "Komunikat o powodzeniu", + "successMessageExplanation": "Komunikat MQTT, który zostanie uznany za powodzenie", + "recent": "Ostatnie", + "Done": "Zrobione", + "Info": "Info", + "Security": "Bezpieczeństwo", + "Steam API Key": "Klucz Steam API", + "Shrink Database": "Zmniejsz bazę danych", + "Pick a RR-Type...": "Wybierz typ RR...", + "Pick Accepted Status Codes...": "Wybierz akceptowalne kody statusu...", + "Default": "Domyślnie", + "HTTP Options": "Opcje HTTP", + "Create Incident": "Stwórz incydent", + "Title": "Tytuł", + "Content": "Treść", + "Style": "Styl", + "info": "info", + "warning": "ostrzeżenie", + "danger": "niebezpieczeństwo", + "primary": "podstawowy", + "light": "jasny", + "dark": "ciemny", + "Post": "Wyślij", + "Please input title and content": "Podaj tytuł i treść", + "Created": "Stworzony", + "Last Updated": "Ostatnio zaktualizowany", + "Unpin": "Odepnij", + "Switch to Light Theme": "Przełącz na jasny motyw", + "Switch to Dark Theme": "Przełącz na ciemny motyw", + "Show Tags": "Pokaż tagi", + "Hide Tags": "Ukryj tagi", + "Description": "Opis", + "No monitors available.": "Brak dostępnych monitorów.", + "Add one": "Dodaj jeden", + "No Monitors": "Brak monitorów", + "Untitled Group": "Nienazwana grupa", + "Services": "Usługi", + "Discard": "Odrzuć", + "Cancel": "Anuluj", + "Powered by": "Napędzane przez", + "shrinkDatabaseDescription": "Uruchom VACUUM na bazie SQLite. Jeżeli twoja baza została stworzona po wersji 1.10.0, to ma już włączoną opcję AUTO_VACUUM i stosowanie ręcznego oczyszczania nie jest potrzebne.", + "clicksendsms": "ClickSend SMS", + "apiCredentials": "Poświadczenia API", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "Nazwa użytkownika API (z prefiksem webapi_)", + "serwersmsAPIPassword": "Hasło API", + "serwersmsPhoneNumber": "Numer telefonu", + "serwersmsSenderName": "Nazwa nadawcy (zatwierdzona w panelu klienta)", + "smseagle": "SMSEagle", + "smseagleTo": "Numer/y telefonu", + "smseagleGroup": "Grupa/y z Książki adresowej", + "smseagleContact": "Kontakt/y z Książki adresowej", + "smseagleRecipientType": "Typ odbiorcy", + "smseagleRecipient": "Odbiorca/y (wiele musi być oddzielone przecinkami)", + "smseagleToken": "Klucz dostępu API", + "smseagleUrl": "URL Twojego urządzenia SMSEagle", + "smseagleEncoding": "Wyślij jako Unicode", + "smseaglePriority": "Priorytet wiadomości (0-9, domyślnie = 0)", + "stackfield": "Stackfield", + "Customize": "Dostosuj", + "Custom Footer": "Niestandardowa stopka", + "Custom CSS": "Niestandardowy CSS", + "smtpDkimSettings": "Ustawienia DKIM", + "smtpDkimDesc": "Zapoznaj się z Nodemailer DKIM {0}, aby dowiedzieć się więcej", + "documentation": "dokumentacja", + "smtpDkimDomain": "Nazwa domeny", + "smtpDkimKeySelector": "Selektor klucza", + "smtpDkimPrivateKey": "Klucz prywatny", + "smtpDkimHashAlgo": "Algorytm haszujący (opcjonalne)", + "smtpDkimheaderFieldNames": "Klucze nagłówka do podpisu (opcjonalne)", + "smtpDkimskipFields": "Klucze nagłówka do pominięcia (opcjonalne)", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "Punkt końcowy API", + "alertaEnvironment": "Środowisko", + "alertaApiKey": "Klucz API", + "alertaAlertState": "Alert State", + "alertaRecoverState": "Recover State", + "deleteStatusPageMsg": "Jesteś pewien, że chcesz usunąć tę stronę statusów?", + "Proxies": "Proxy", + "default": "Domyślny", + "enabled": "Włączony", + "setAsDefault": "Ustaw jako domyślny", + "deleteProxyMsg": "Jesteś pewien, że chcesz usunąć proxy ze wszystkich monitorów?", + "proxyDescription": "Proxy muszą być przypisane do monitora, aby działały.", + "enableProxyDescription": "Ten serwer proxy nie będzie miał wpływu na żądania monitorów, dopóki nie zostanie aktywowany. Możesz kontrolować tymczasowe wyłączenie serwera proxy ze wszystkich monitorów za pomocą statusu aktywacji.", + "setAsDefaultProxyDescription": "Ten serwer proxy będzie domyślnie włączony dla nowych monitorów. Można go jednak wyłączyć osobno dla każdego monitora.", + "Certificate Chain": "Łańcuch certyfikatów", + "Valid": "Ważny", + "Invalid": "Nieważny", + "AccessKeyId": "AccessKey ID", + "SecretAccessKey": "AccessKey Sekret", + "PhoneNumbers": "Numery telefonów", + "TemplateCode": "Kod szablonu", + "SignName": "Podpis", + "Sms template must contain parameters: ": "Szablon sms musi posiadać parametry: ", + "Bark Endpoint": "Punkt końcowy Bark", + "WebHookUrl": "WebHookUrl", + "SecretKey": "Tajny klucz", + "For safety, must use secret key": "Ze względów bezpieczeństwa musisz użyć tajnego klucza", + "Device Token": "Device Token", + "Platform": "Platforma", + "iOS": "iOS", + "Android": "Android", + "Huawei": "Huawei", + "High": "Wysoki", + "Retry": "Ponów", + "Topic": "Temat", + "WeCom Bot Key": "Klucz bota WeCom", + "Setup Proxy": "Skonfiguruj proxy", + "Proxy Protocol": "Protokół proxy", + "Proxy Server": "Serwer proxy", + "Proxy server has authentication": "Serwer proxy ma autoryzację", + "User": "Użytkownik", + "Installed": "Zainstalowany", + "Not installed": "Nie zainstalowany", + "Running": "Działa", + "Not running": "Nie działa", + "Remove Token": "Usuń token", + "Start": "Start", + "Stop": "Stop", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "Dodaj nową stronę statusów", + "Slug": "Symbol", + "Accept characters:": "Dozwolone znaki:", + "startOrEndWithOnly": "Zaczynające się i kończące wyłącznie {0} znakami", + "No consecutive dashes": "Bez powtarzających się myślników", + "Next": "Dalej", + "The slug is already taken. Please choose another slug.": "Ten symbol jest już zajęty. Proszę, wybierz inny.", + "No Proxy": "Bez proxy", + "Authentication": "Uwierzytelnianie", + "HTTP Basic Auth": "Podstawowa autoryzacja HTTP", + "New Status Page": "Nowa strona statusu", + "Page Not Found": "Strona nie została znaleziona", + "Reverse Proxy": "Zwrotny serwer proxy", + "Backup": "Backup", + "About": "O skrypcie", + "wayToGetCloudflaredURL": "(Pobierz cloudflared z {0})", + "cloudflareWebsite": "Strona Cloudflare", + "Message:": "Wiadomość:", + "Don't know how to get the token? Please read the guide:": "Nie wiesz jak uzyksać token? Przeczytaj proszę poradnik:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Bieżące połączenie może zostać utracone, jeśli aktualnie łączysz się przez tunel Cloudflare. Czy na pewno chcesz to przerwać? Wpisz swoje aktualne hasło, aby je potwierdzić.", + "Other Software": "Inne oprogramowanie", + "For example: nginx, Apache and Traefik.": "Na przykład: nginx, Apache i Traefik.", + "Please read": "Przeczytaj proszę", + "Subject:": "Temat:", + "Valid To:": "Ważny do:", + "Days Remaining:": "Pozostało dni:", + "Issuer:": "Wydawca:", + "Fingerprint:": "Odcisk palca:", + "No status pages": "Brak stron statusów", + "Domain Name Expiry Notification": "Powiadomienie o wygasaniu domeny", + "Proxy": "Proxy", + "Date Created": "Data stworzenia", + "onebotHttpAddress": "Adres HTTP OneBot", + "onebotMessageType": "Rodzaj wiadomości OneBot", + "onebotGroupMessage": "Grupowa", + "onebotPrivateMessage": "Prywatna", + "onebotUserOrGroupId": "ID Grupy/Użytkownika", + "onebotSafetyTips": "Ze względów bezpieczeństwa musisz ustawić token dostępu", + "PushDeer Key": "Klucz PushDeer", + "Footer Text": "Treść stopki", + "Show Powered By": "Pokaż co napędza stronę", + "Domain Names": "Domeny", + "signedInDisp": "Zalogowany jako {0}", + "signedInDispDisabled": "Autoryzacja wyłączona.", + "resendEveryXTimes": "Wysyłaj ponownie co {0} razy", + "resendDisabled": "Ponowne wysyłanie jest wyłączone", + "Maintenance": "Konserwacja", + "statusMaintenance": "Konserwacja", + "Schedule maintenance": "Planowanie konserwacji", + "Affected Monitors": "Monitory dotknięte problemem", + "Pick Affected Monitors...": "Wybierz monitory, których to dotyczy...", + "Start of maintenance": "Rozpoczęcie konserwacji", + "All Status Pages": "Wszystkie strony statusu", + "Select status pages...": "Wybierz strony statusu...", + "recurringIntervalMessage": "Uruchom raz dziennie | Uruchom raz na {0} dni", + "affectedMonitorsDescription": "Wybierz monitory, których dotyczy bieżąca konserwacja", + "affectedStatusPages": "Pokaż ten komunikat o konserwacji na wybranych stronach statusu", + "atLeastOneMonitor": "Wybierz co najmniej jeden monitor, którego dotyczy problem", + "deleteMaintenanceMsg": "Czy na pewno chcesz usunąć tę konserwację?", + "dnsPortDescription": "Port serwera DNS. Domyślnie 53. Możesz zmienić port w dowolnym momencie.", + "Resend Notification if Down X times consequently": "Wyślij ponownie powiadomienie, jeśli nie działa X razy pod rząd", + "error": "błąd", + "critical": "krytyczny", + "wayToGetPagerDutyKey": "Możesz to uzyskać, przechodząc do Service -> Service Directory -> (wybierz usługę) -> Integrations -> Add integration. Tutaj możesz wyszukać \"Events API V2\". Więcej informacji {0}", + "Integration Key": "Klucz integracji", + "Integration URL": "Adres URL integracji", + "Auto resolve or acknowledged": "Automatycznie rozwiązany lub potwierdzony", + "do nothing": "nie rób nic", + "auto acknowledged": "auto potwierdzony", + "auto resolve": "automatycznie rozwiązany", + "Bark Group": "Grupa Bark", + "Bark Sound": "Dźwięk Bark", + "HTTP Headers": "Nagłówki HTTP", + "Trust Proxy": "Ufaj proxy", + "HomeAssistant": "Home Assistant", + "RadiusSecret": "Sekretny klucz Radius", + "RadiusSecretDescription": "Współdzielony sekretny klucz pomiędzy klientem a serwerem", + "RadiusCalledStationId": "Id stacji wywoływanej", + "RadiusCalledStationIdDescription": "Identyfikator wywoływanego urządzenia", + "RadiusCallingStationId": "Id stacji wywoławczej", + "RadiusCallingStationIdDescription": "Identyfikator urządzenia wywołującego", + "Certificate Expiry Notification": "Powiadomienie o wygaśnięciu certyfikatu", + "API Username": "Nazwa użytkownika API", + "API Key": "Klucz API", + "Recipient Number": "Numer odbiorcy", + "From Name/Number": "Od nazwa/numer", + "Leave blank to use a shared sender number.": "Pozostaw puste, aby użyć wspólnego numeru nadawcy.", + "Octopush API Version": "Wersja API Octopush", + "Legacy Octopush-DM": "Starsze Octopush-DM", + "endpoint": "punkt końcowy", + "octopushAPIKey": "\"API key\" z poświadczeń HTTP API w panelu sterowania", + "octopushLogin": "\"Login\" z poświadczeń HTTP API w panelu sterowania", + "promosmsLogin": "Nazwa logowania API", + "promosmsPassword": "Hasło API", + "pushoversounds pushover": "Pushover (domyślny)", + "pushoversounds bike": "Bike", + "pushoversounds bugle": "Bugle", + "pushoversounds cashregister": "Cash Register", + "pushoversounds classical": "Classical", + "pushoversounds cosmic": "Cosmic", + "pushoversounds falling": "Falling", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Incoming", + "pushoversounds intermission": "Intermission", + "pushoversounds magic": "Magic", + "pushoversounds mechanical": "Mechanical", + "pushoversounds pianobar": "Piano Bar", + "pushoversounds siren": "Siren", + "pushoversounds spacealarm": "Space Alarm", + "pushoversounds tugboat": "Tug Boat", + "pushoversounds alien": "Alien Alarm (długie)", + "pushoversounds climb": "Climb (długie)", + "pushoversounds persistent": "Persistent (długie)", + "pushoversounds echo": "Pushover Echo (długie)", + "pushoversounds updown": "Up Down (długie)", + "pushoversounds vibrate": "Tylko wibracje", + "pushoversounds none": "Brak (cisza)", + "pushyAPIKey": "Tajny klucz API", + "pushyToken": "Token urządzenia", + "Show update if available": "Pokaż aktualizację, jeśli jest dostępna", + "Also check beta release": "Sprawdź również wydanie beta", + "Using a Reverse Proxy?": "Używasz odwróconego proxy?", + "Check how to config it for WebSocket": "Sprawdź jak go skonfigurować dla WebSocket", + "Steam Game Server": "Serwer gry Steam", + "Most likely causes:": "Najbardziej prawdopodobne przyczyny:", + "The resource is no longer available.": "Zasób nie jest już dostępny.", + "There might be a typing error in the address.": "W adresie może być błąd w pisowni.", + "What you can try:": "Co możesz spróbować:", + "Retype the address.": "Ponownie wpisz adres.", + "Go back to the previous page.": "Wróć do poprzedniej strony.", + "Coming Soon": "Wkrótce", + "wayToGetClickSendSMSToken": "Możesz uzyskać nazwę użytkownika API i klucz API z {0}.", + "Connection String": "Ciąg połączenia", + "Query": "Zapytanie", + "settingsCertificateExpiry": "Wygaśnięcie certyfikatu TLS", + "certificationExpiryDescription": "Monitory HTTPS uruchamiają powiadomienia o wygaśnięciu certyfikatu TLS w:", + "Setup Docker Host": "Konfiguracja hosta Docker", + "Connection Type": "Typ połączenia", + "Docker Daemon": "Demon Dockera", + "deleteDockerHostMsg": "Czy na pewno chcesz usunąć ten host Dockera dla wszystkich monitorów?", + "socket": "Gniazdo", + "tcp": "TCP / HTTP", + "Docker Container": "Kontener Dockera", + "Container Name / ID": "Nazwa kontenera / ID", + "Docker Host": "Host Dockera", + "Docker Hosts": "Hosty Dockera", + "ntfy Topic": "Temat ntfy", + "Domain": "Domena", + "Workstation": "Stacja robocza", + "disableCloudflaredNoAuthMsg": "Jesteś w trybie No Auth, hasło nie jest wymagane.", + "trustProxyDescription": "Zaufaj nagłówkom 'X-Forwarded-*'. Jeśli chcesz uzyskać poprawne IP klienta, a twój Uptime Kuma jest za Nginx lub Apache, powinieneś to włączyć.", + "wayToGetLineNotifyToken": "Możesz uzyskać token dostępu z {0}", + "Examples": "Przykłady", + "Home Assistant URL": "URL Home Assistant", + "Long-Lived Access Token": "Długotrwały token dostępu", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Długotrwały token dostępu można utworzyć klikając na nazwę swojego profilu (na dole po lewej stronie) i przewijając do dołu, a następnie klikając Create Token. ", + "Notification Service": "Usługa powiadamiania", + "default: notify all devices": "domyślnie: powiadamiaj wszystkie urządzenia", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Listę usług powiadamiania można znaleźć w Home Assistant pod \"Developer Tools > Services\" wyszukaj \"notification\", aby znaleźć nazwę swojego urządzenia/telefonu.", + "Automations can optionally be triggered in Home Assistant:": "Automaty mogą być opcjonalnie uruchamiane w Home Assistant:", + "Trigger type:": "Typ wyzwalacza:", + "Event type:": "Typ zdarzenia:", + "Event data:": "Dane o zdarzeniu:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Następnie wybierz akcję, na przykład przełącz scenę na taką, w której światło RGB jest czerwone.", + "Frontend Version": "Wersja frontu", + "Frontend Version do not match backend version!": "Wersja frontu nie pasuje do wersji backendu!", + "Base URL": "Bazowy adres URL", + "goAlertInfo": "GoAlert to aplikacja open source do planowania, automatycznych eskalacji i powiadomień (jak SMS lub połączenia głosowe). Automatycznie angażuj właściwą osobę, we właściwy sposób i we właściwym czasie! {0}", + "goAlertIntegrationKeyInfo": "Pobierz generyczny klucz integracyjny API dla usługi, którego wartość skopiowanego tokena URL jest zwykle w formacie \"aaaaaaaa-bbb-cccc-dddd-eeeeee\".", + "goAlert": "GoAlert", + "backupOutdatedWarning": "Przestarzałe: ponieważ dodano wiele funkcji i funkcja tworzenia kopii zapasowych nie jest wystarczająco utrzymywana, nie może generować ani przywracać pełnej kopii zapasowej.", + "backupRecommend": "Zamiast tego należy wykonać bezpośrednią kopię zapasową woluminu lub folderu danych (./data/).", + "Optional": "Opcjonalne", + "squadcast": "Squadcast", + "SendKey": "SendKey", + "SMSManager API Docs": "Dokumentacja API SMSManager ", + "Gateway Type": "Typ bramy", + "SMSManager": "SMSManager", + "You can divide numbers with": "Możesz dzielić liczby przez", + "or": "lub", + "recurringInterval": "odstęp czasu", + "Recurring": "powtarzający się", + "strategyManual": "Aktywowany/dezaktywowany ręcznie", + "warningTimezone": "Używa strefy czasowej serwera", + "weekdayShortMon": "pon", + "weekdayShortTue": "wt", + "weekdayShortWed": "śr", + "weekdayShortThu": "czw", + "weekdayShortFri": "pt", + "weekdayShortSat": "sob", + "weekdayShortSun": "niedz", + "dayOfWeek": "Dzień tygodnia", + "dayOfMonth": "Dzień miesiąca", + "lastDay": "Ostatni dzień", + "lastDay1": "Ostatni dzień miesiąca", + "lastDay2": "2. ostatni dzień miesiąca", + "lastDay3": "3. ostatni dzień miesiąca", + "lastDay4": "4. ostatni dzień miesiąca", + "No Maintenance": "Brak konserwacji", + "pauseMaintenanceMsg": "Jesteś pewien, że chcesz zatrzymać?", + "maintenanceStatus-under-maintenance": "Podczas konserwacji", + "maintenanceStatus-inactive": "Nieaktywny", + "maintenanceStatus-scheduled": "Zaplanowany", + "maintenanceStatus-ended": "Zakończony", + "maintenanceStatus-unknown": "Nieznany", + "Display Timezone": "Wyświetlana strefa czasowa", + "Server Timezone": "Strefa czasowa serwera", + "statusPageMaintenanceEndDate": "Koniec" +} diff --git a/src/lang/pt-BR.json b/src/lang/pt-BR.json new file mode 100644 index 000000000..1f951407d --- /dev/null +++ b/src/lang/pt-BR.json @@ -0,0 +1,203 @@ +{ + "languageName": "Português (Brasileiro)", + "checkEverySecond": "Verificar cada {0} segundos.", + "retryCheckEverySecond": "Tentar novamente a cada {0} segundos.", + "retriesDescription": "Máximo de tentativas antes que o serviço seja marcado como inativo e uma notificação seja enviada", + "ignoreTLSError": "Ignorar erros TLS/SSL para sites HTTPS", + "upsideDownModeDescription": "Inverta o status de cabeça para baixo. Se o serviço estiver acessível, ele está OFFLINE.", + "maxRedirectDescription": "Número máximo de redirecionamentos a seguir. Defina como 0 para desativar redirecionamentos.", + "acceptedStatusCodesDescription": "Selecione os códigos de status que são considerados uma resposta bem-sucedida.", + "passwordNotMatchMsg": "A senha repetida não corresponde.", + "notificationDescription": "Atribua uma notificação ao (s) monitor (es) para que funcione.", + "keywordDescription": "Pesquise a palavra-chave em html simples ou resposta JSON e diferencia maiúsculas de minúsculas", + "pauseDashboardHome": "Pausar", + "deleteMonitorMsg": "Tem certeza de que deseja excluir este monitor?", + "deleteNotificationMsg": "Tem certeza de que deseja excluir esta notificação para todos os monitores?", + "resolverserverDescription": "Cloudflare é o servidor padrão, você pode alterar o servidor resolvedor a qualquer momento.", + "rrtypeDescription": "Selecione o RR-Type que você deseja monitorar", + "pauseMonitorMsg": "Tem certeza que deseja fazer uma pausa?", + "enableDefaultNotificationDescription": "Para cada novo monitor, esta notificação será habilitada por padrão. Você ainda pode desativar a notificação separadamente para cada monitor.", + "clearEventsMsg": "Tem certeza de que deseja excluir todos os eventos deste monitor?", + "clearHeartbeatsMsg": "Tem certeza de que deseja excluir todos os heartbeats deste monitor?", + "confirmClearStatisticsMsg": "Tem certeza que deseja excluir TODAS as estatísticas?", + "importHandleDescription": "Escolha 'Ignorar existente' se quiser ignorar todos os monitores ou notificações com o mesmo nome. 'Substituir' excluirá todos os monitores e notificações existentes.", + "confirmImportMsg": "Tem certeza que deseja importar o backup? Certifique-se de que selecionou a opção de importação correta.", + "twoFAVerifyLabel": "Digite seu token para verificar se 2FA está funcionando", + "tokenValidSettingsMsg": "O token é válido! Agora você pode salvar as configurações 2FA.", + "confirmEnableTwoFAMsg": "Tem certeza de que deseja habilitar 2FA?", + "confirmDisableTwoFAMsg": "Tem certeza de que deseja desativar 2FA?", + "Settings": "Configurações", + "Dashboard": "Dashboard", + "New Update": "Nova Atualização", + "Language": "Linguagem", + "Appearance": "Aparência", + "Theme": "Tema", + "General": "Geral", + "Version": "Versão", + "Check Update On GitHub": "Verificar atualização no Github", + "List": "Lista", + "Add": "Adicionar", + "Add New Monitor": "Adicionar novo monitor", + "Quick Stats": "Estatísticas rápidas", + "Up": "On", + "Down": "Off", + "Pending": "Pendente", + "Unknown": "Desconhecido", + "Pause": "Pausar", + "Name": "Nome", + "Status": "Status", + "DateTime": "Data hora", + "Message": "Mensagem", + "No important events": "Nenhum evento importante", + "Resume": "Resumo", + "Edit": "Editar", + "Delete": "Deletar", + "Current": "Atual", + "Uptime": "Tempo de atividade", + "Cert Exp.": "Cert Exp.", + "day": "dia | dias", + "-day": "-dia", + "hour": "hora", + "-hour": "-hora", + "Response": "Resposta", + "Ping": "Ping", + "Monitor Type": "Tipo de Monitor", + "Keyword": "Palavra-Chave", + "Friendly Name": "Nome Amigável", + "URL": "URL", + "Hostname": "Hostname", + "Port": "Porta", + "Heartbeat Interval": "Intervalo de Heartbeat", + "Retries": "Novas tentativas", + "Heartbeat Retry Interval": "Intervalo de repetição de Heartbeat", + "Advanced": "Avançado", + "Upside Down Mode": "Modo de cabeça para baixo", + "Max. Redirects": "Redirecionamento Máx.", + "Accepted Status Codes": "Status Code Aceitáveis", + "Save": "Salvar", + "Notifications": "Notificações", + "Not available, please setup.": "Não disponível, por favor configure.", + "Setup Notification": "Configurar Notificação", + "Light": "Claro", + "Dark": "Escuro", + "Auto": "Auto", + "Theme - Heartbeat Bar": "Tema - Barra de Heartbeat", + "Normal": "Normal", + "Bottom": "Inferior", + "None": "Nenhum", + "Timezone": "Fuso horário", + "Search Engine Visibility": "Visibilidade do mecanismo de pesquisa", + "Allow indexing": "Permitir Indexação", + "Discourage search engines from indexing site": "Desencoraje os motores de busca de indexar o site", + "Change Password": "Mudar senha", + "Current Password": "Senha atual", + "New Password": "Nova Senha", + "Repeat New Password": "Repetir Nova Senha", + "Update Password": "Atualizar Senha", + "Disable Auth": "Desativar Autenticação", + "Enable Auth": "Ativar Autenticação", + "disableauth.message1": "Você tem certeza que deseja desativar a autenticação?", + "disableauth.message2": "Isso é para alguém que tem autenticação de terceiros na frente do 'UpTime Kuma' como o Cloudflare Access.", + "Please use this option carefully!": "Por favor, utilize isso com cautela.", + "Logout": "Deslogar", + "Leave": "Sair", + "I understand, please disable": "Eu entendo, por favor desative.", + "Confirm": "Confirmar", + "Yes": "Sim", + "No": "Não", + "Username": "Usuário", + "Password": "Senha", + "Remember me": "Lembre-me", + "Login": "Autenticar", + "No Monitors, please": "Nenhum monitor, por favor", + "add one": "adicionar um", + "Notification Type": "Tipo de Notificação", + "Email": "Email", + "Test": "Testar", + "Certificate Info": "Info. do Certificado ", + "Resolver Server": "Resolver Servidor", + "Resource Record Type": "Tipo de registro de aplicação", + "Last Result": "Último resultado", + "Create your admin account": "Crie sua conta de admin", + "Repeat Password": "Repita a senha", + "Import Backup": "Importar Backup", + "Export Backup": "Exportar Backup", + "Export": "Exportar", + "Import": "Importar", + "respTime": "Tempo de Resp. (ms)", + "notAvailableShort": "N/A", + "Default enabled": "Padrão habilitado", + "Apply on all existing monitors": "Aplicar em todos os monitores existentes", + "Create": "Criar", + "Clear Data": "Limpar Dados", + "Events": "Eventos", + "Heartbeats": "Heartbeats", + "Auto Get": "Obter Automático", + "backupDescription": "Você pode fazer backup de todos os monitores e todas as notificações em um arquivo JSON.", + "backupDescription2": "OBS: Os dados do histórico e do evento não estão incluídos.", + "backupDescription3": "Dados confidenciais, como tokens de notificação, estão incluídos no arquivo de exportação, mantenha-o com cuidado.", + "alertNoFile": "Selecione um arquivo para importar.", + "alertWrongFileType": "Selecione um arquivo JSON.", + "Clear all statistics": "Limpar todas as estatísticas", + "Skip existing": "Pular existente", + "Overwrite": "Sobrescrever", + "Options": "Opções", + "Keep both": "Manter os dois", + "Verify Token": "Verificar Token", + "Setup 2FA": "Configurar 2FA", + "Enable 2FA": "Ativar 2FA", + "Disable 2FA": "Desativar 2FA", + "2FA Settings": "Configurações do 2FA ", + "Two Factor Authentication": "Autenticação e Dois Fatores", + "Active": "Ativo", + "Inactive": "Inativo", + "Token": "Token", + "Show URI": "Mostrar URI", + "Tags": "Tag", + "Add New below or Select...": "Adicionar Novo abaixo ou Selecionar ...", + "Tag with this name already exist.": "Já existe uma etiqueta com este nome.", + "Tag with this value already exist.": "Já existe uma etiqueta com este valor.", + "color": "cor", + "value (optional)": "valor (opcional)", + "Gray": "Cinza", + "Red": "Vermelho", + "Orange": "Laranja", + "Green": "Verde", + "Blue": "Azul", + "Indigo": "Índigo", + "Purple": "Roxo", + "Pink": "Rosa", + "Search...": "Buscar...", + "Avg. Ping": "Ping Médio.", + "Avg. Response": "Resposta Média. ", + "Status Page": "Página de Status", + "Status Pages": "Página de Status", + "Entry Page": "Página de entrada", + "statusPageNothing": "Nada aqui, por favor, adicione um grupo ou monitor.", + "No Services": "Nenhum Serviço", + "All Systems Operational": "Todos os Serviços Operacionais", + "Partially Degraded Service": "Serviço parcialmente degradado", + "Degraded Service": "Serviço Degradado", + "Add Group": "Adicionar Grupo", + "Add a monitor": "Adicionar um monitor", + "Edit Status Page": "Editar Página de Status", + "Go to Dashboard": "Ir para a dashboard", + "telegram": "Telegram", + "webhook": "Webhook", + "smtp": "Email (SMTP)", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Support 50+ Notification services)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost" +} diff --git a/src/lang/pt-PT.json b/src/lang/pt-PT.json new file mode 100644 index 000000000..d8fc793e7 --- /dev/null +++ b/src/lang/pt-PT.json @@ -0,0 +1,203 @@ +{ + "languageName": "Português (Portugal)", + "checkEverySecond": "Verificar a cada {0} segundos.", + "retryCheckEverySecond": "Tentar novamente a cada {0} segundos.", + "retriesDescription": "Máximo de tentativas antes que o serviço seja marcado como inativo e uma notificação seja enviada", + "ignoreTLSError": "Ignorar erros TLS/SSL para sites HTTPS", + "upsideDownModeDescription": "Inverte o status de cabeça para baixo. Se o serviço estiver acessível, ele está OFFLINE.", + "maxRedirectDescription": "Número máximo de redirecionamentos a seguir. Define como 0 para desativar redirecionamentos.", + "acceptedStatusCodesDescription": "Seleciona os códigos de status que são considerados uma resposta bem-sucedida.", + "passwordNotMatchMsg": "A senha repetida não corresponde.", + "notificationDescription": "Atribuir uma notificação ao (s) monitor (es) para que funcione.", + "keywordDescription": "Pesquisa a palavra-chave em HTML simples ou resposta JSON e diferencia maiúsculas de minúsculas", + "pauseDashboardHome": "Pausa", + "deleteMonitorMsg": "Tens a certeza de que queres excluir este monitor?", + "deleteNotificationMsg": "Tens a certeza de que queres excluir esta notificação para todos os monitores?", + "resolverserverDescription": "A Cloudflare é o servidor padrão, podes alterar o servidor 'resolvedor' a qualquer momento.", + "rrtypeDescription": "Seleciona o RR-Type que queres monitorizar", + "pauseMonitorMsg": "Tens a certeza que queres fazer uma pausa?", + "enableDefaultNotificationDescription": "Para cada monitor novo esta notificação vai estar activa por padrão. Podes também desativar a notificação separadamente para cada monitor.", + "clearEventsMsg": "Tens a certeza que queres excluir todos os eventos deste monitor?", + "clearHeartbeatsMsg": "Tens a certeza de que queres excluir todos os heartbeats deste monitor?", + "confirmClearStatisticsMsg": "Tens a certeza que queres excluir TODAS as estatísticas?", + "importHandleDescription": "Escolhe 'Ignorar existente' se quiseres ignorar todos os monitores ou notificações com o mesmo nome. 'Substituir' excluirá todos os monitores e notificações existentes.", + "confirmImportMsg": "Tens a certeza que queres importar o backup? Certifica-te que selecionaste a opção de importação correta.", + "twoFAVerifyLabel": "Insire o teu token para verificares se o 2FA está a funcionar", + "tokenValidSettingsMsg": "O token é válido! Agora podes salvar as configurações do 2FA.", + "confirmEnableTwoFAMsg": "Tens a certeza de que queres habilitar 2FA?", + "confirmDisableTwoFAMsg": "Tens a certeza de que queres desativar 2FA?", + "Settings": "Configurações", + "Dashboard": "Dashboard", + "New Update": "Nova Atualização", + "Language": "Linguagem", + "Appearance": "Aparência", + "Theme": "Tema", + "General": "Geral", + "Version": "Versão", + "Check Update On GitHub": "Verificar atualização no Github", + "List": "Lista", + "Add": "Adicionar", + "Add New Monitor": "Adicionar novo monitor", + "Quick Stats": "Estatísticas rápidas", + "Up": "On", + "Down": "Off", + "Pending": "Pendente", + "Unknown": "Desconhecido", + "Pause": "Pausa", + "Name": "Nome", + "Status": "Status", + "DateTime": "Data hora", + "Message": "Mensagem", + "No important events": "Nenhum evento importante", + "Resume": "Resumo", + "Edit": "Editar", + "Delete": "Apagar", + "Current": "Atual", + "Uptime": "Tempo de atividade", + "Cert Exp.": "Cert Exp.", + "day": "dia | dias", + "-day": "-dia", + "hour": "hora", + "-hour": "-hora", + "Response": "Resposta", + "Ping": "Ping", + "Monitor Type": "Tipo de Monitor", + "Keyword": "Palavra-Chave", + "Friendly Name": "Nome Amigável", + "URL": "URL", + "Hostname": "Hostname", + "Port": "Porta", + "Heartbeat Interval": "Intervalo de Heartbeats", + "Retries": "Novas tentativas", + "Heartbeat Retry Interval": "Intervalo de repetição de Heartbeats", + "Advanced": "Avançado", + "Upside Down Mode": "Modo de cabeça para baixo", + "Max. Redirects": "Redirecionamento Máx.", + "Accepted Status Codes": "Status Code Aceitáveis", + "Save": "Guardar", + "Notifications": "Notificações", + "Not available, please setup.": "Não disponível, por favor configura.", + "Setup Notification": "Configurar Notificação", + "Light": "Claro", + "Dark": "Escuro", + "Auto": "Auto", + "Theme - Heartbeat Bar": "Tema - Barra de Heartbeat", + "Normal": "Normal", + "Bottom": "Inferior", + "None": "Nenhum", + "Timezone": "Fuso horário", + "Search Engine Visibility": "Visibilidade do mecanismo de pesquisa", + "Allow indexing": "Permitir Indexação", + "Discourage search engines from indexing site": "Desencorajar que motores de busca indexem o site", + "Change Password": "Mudar senha", + "Current Password": "Senha atual", + "New Password": "Nova Senha", + "Repeat New Password": "Repetir Nova Senha", + "Update Password": "Atualizar Senha", + "Disable Auth": "Desativar Autenticação", + "Enable Auth": "Ativar Autenticação", + "disableauth.message1": "Tens a certeza que queres desativar a autenticação?", + "disableauth.message2": "Isso é para alguém que tem autenticação de terceiros em frente ao 'UpTime Kuma' como o Cloudflare Access.", + "Please use this option carefully!": "Por favor, utiliza esta opção com cuidado.", + "Logout": "Logout", + "Leave": "Sair", + "I understand, please disable": "Eu entendo, por favor desativa.", + "Confirm": "Confirmar", + "Yes": "Sim", + "No": "Não", + "Username": "Utilizador", + "Password": "Senha", + "Remember me": "Lembra-me", + "Login": "Autenticar", + "No Monitors, please": "Nenhum monitor, por favor", + "add one": "adicionar um", + "Notification Type": "Tipo de Notificação", + "Email": "Email", + "Test": "Testar", + "Certificate Info": "Info. do Certificado ", + "Resolver Server": "Resolver Servidor", + "Resource Record Type": "Tipo de registro de aplicação", + "Last Result": "Último resultado", + "Create your admin account": "Cria a tua conta de admin", + "Repeat Password": "Repete a senha", + "Import Backup": "Importar Backup", + "Export Backup": "Exportar Backup", + "Export": "Exportar", + "Import": "Importar", + "respTime": "Tempo de Resp. (ms)", + "notAvailableShort": "N/A", + "Default enabled": "Padrão habilitado", + "Apply on all existing monitors": "Aplicar em todos os monitores existentes", + "Create": "Criar", + "Clear Data": "Limpar Dados", + "Events": "Eventos", + "Heartbeats": "Heartbeats", + "Auto Get": "Obter Automático", + "backupDescription": "Podes fazer backup de todos os monitores e todas as notificações num arquivo JSON.", + "backupDescription2": "OBS: Os dados do histórico e do evento não estão incluídos.", + "backupDescription3": "Dados confidenciais, como tokens de notificação, estão incluídos no arquivo de exportação, mantem-no com cuidado.", + "alertNoFile": "Seleciona um arquivo para importar.", + "alertWrongFileType": "Seleciona um arquivo JSON.", + "Clear all statistics": "Limpar todas as estatísticas", + "Skip existing": "Saltar existente", + "Overwrite": "Sobrescrever", + "Options": "Opções", + "Keep both": "Manter os dois", + "Verify Token": "Verificar Token", + "Setup 2FA": "Configurar 2FA", + "Enable 2FA": "Ativar 2FA", + "Disable 2FA": "Desativar 2FA", + "2FA Settings": "Configurações do 2FA ", + "Two Factor Authentication": "Autenticação de Dois Fatores", + "Active": "Ativo", + "Inactive": "Inativo", + "Token": "Token", + "Show URI": "Mostrar URI", + "Tags": "Tag", + "Add New below or Select...": "Adicionar Novo abaixo ou Selecionar ...", + "Tag with this name already exist.": "Já existe uma etiqueta com este nome.", + "Tag with this value already exist.": "Já existe uma etiqueta com este valor.", + "color": "cor", + "value (optional)": "valor (opcional)", + "Gray": "Cinza", + "Red": "Vermelho", + "Orange": "Laranja", + "Green": "Verde", + "Blue": "Azul", + "Indigo": "Índigo", + "Purple": "Roxo", + "Pink": "Rosa", + "Search...": "Pesquisa...", + "Avg. Ping": "Ping Médio.", + "Avg. Response": "Resposta Média. ", + "Status Page": "Página de Status", + "Status Pages": "Página de Status", + "Entry Page": "Página de entrada", + "statusPageNothing": "Nada aqui, por favor, adiciona um grupo ou monitor.", + "No Services": "Nenhum Serviço", + "All Systems Operational": "Todos os Serviços Operacionais", + "Partially Degraded Service": "Serviço parcialmente degradados", + "Degraded Service": "Serviço Degradado", + "Add Group": "Adicionar Grupo", + "Add a monitor": "Adicionar um monitor", + "Edit Status Page": "Editar Página de Status", + "Go to Dashboard": "Ir para o dashboard", + "telegram": "Telegram", + "webhook": "Webhook", + "smtp": "Email (SMTP)", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Support 50+ Notification services)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost" +} diff --git a/src/lang/ru-RU.json b/src/lang/ru-RU.json new file mode 100644 index 000000000..0c214b13b --- /dev/null +++ b/src/lang/ru-RU.json @@ -0,0 +1,581 @@ +{ + "languageName": "Русский", + "checkEverySecond": "Проверка каждые {0} секунд", + "retriesDescription": "Максимальное количество попыток перед пометкой сервиса как недоступного и отправкой уведомления", + "ignoreTLSError": "Игнорировать ошибку TLS/SSL для HTTPS сайтов", + "upsideDownModeDescription": "Реверс статуса сервиса. Если сервис доступен, то он помечается как НЕДОСТУПНЫЙ.", + "maxRedirectDescription": "Максимальное количество перенаправлений. Поставьте 0, чтобы отключить перенаправления.", + "acceptedStatusCodesDescription": "Выберите коды статусов для определения доступности сервиса.", + "passwordNotMatchMsg": "Повтор пароля не совпадает.", + "notificationDescription": "Привяжите уведомления к мониторам.", + "keywordDescription": "Поиск слова в чистом HTML или в JSON-ответе (чувствительно к регистру)", + "pauseDashboardHome": "Пауза", + "deleteMonitorMsg": "Вы действительно хотите удалить данный монитор?", + "deleteNotificationMsg": "Вы действительно хотите удалить это уведомление для всех мониторов?", + "resolverserverDescription": "Cloudflare является сервером по умолчанию. Вы всегда можете сменить данный сервер.", + "rrtypeDescription": "Выберите тип ресурсной записи, который вы хотите отслеживать", + "pauseMonitorMsg": "Вы действительно хотите поставить на паузу?", + "Settings": "Настройки", + "Dashboard": "Панель управления", + "New Update": "Обновление", + "Language": "Язык", + "Appearance": "Внешний вид", + "Theme": "Тема", + "General": "Общее", + "Version": "Версия", + "Check Update On GitHub": "Проверить обновления на GitHub", + "List": "Список", + "Add": "Добавить", + "Add New Monitor": "Новый монитор", + "Quick Stats": "Статистика", + "Up": "Доступен", + "Down": "Недоступен", + "Pending": "Ожидание", + "Unknown": "Неизвестно", + "Pause": "Пауза", + "Name": "Имя", + "Status": "Статус", + "DateTime": "Дата и время", + "Message": "Сообщение", + "No important events": "Важных событий нет", + "Resume": "Возобновить", + "Edit": "Изменить", + "Delete": "Удалить", + "Current": "Текущий", + "Uptime": "Аптайм", + "Cert Exp.": "Сертификат истекает", + "day": "день | дней", + "-day": " дней", + "hour": "час", + "-hour": " часа", + "Response": "Ответ", + "Ping": "Пинг", + "Monitor Type": "Тип монитора", + "Keyword": "Слово", + "Friendly Name": "Имя", + "URL": "URL", + "Hostname": "Имя хоста", + "Port": "Порт", + "Heartbeat Interval": "Частота опроса", + "Retries": "Попыток", + "Advanced": "Дополнительно", + "Upside Down Mode": "Реверс статуса", + "Max. Redirects": "Макс. количество перенаправлений", + "Accepted Status Codes": "Допустимые коды статуса", + "Save": "Сохранить", + "Notifications": "Уведомления", + "Not available, please setup.": "Доступных уведомлений нет, необходимо создать.", + "Setup Notification": "Создать уведомление", + "Light": "Светлая", + "Dark": "Тёмная", + "Auto": "Авто", + "Theme - Heartbeat Bar": "Тема - Полоса частоты опроса", + "Normal": "Обычный", + "Bottom": "Снизу", + "None": "Отсутствует", + "Timezone": "Часовой пояс", + "Search Engine Visibility": "Индексация поисковыми системами:", + "Allow indexing": "Разрешить индексирование", + "Discourage search engines from indexing site": "Запретить индексирование", + "Change Password": "Сменить пароль", + "Current Password": "Текущий пароль", + "New Password": "Новый пароль", + "Repeat New Password": "Повтор нового пароля", + "Update Password": "Обновить пароль", + "Disable Auth": "Отключить авторизацию", + "Enable Auth": "Включить авторизацию", + "disableauth.message1": "Вы уверены, что хотите отключить авторизацию?", + "disableauth.message2": "Это подходит для тех, у кого стоит другая авторизация перед открытием Uptime Kuma, например Cloudflare Access.", + "Please use this option carefully!": "Пожалуйста, используйте с осторожностью.", + "Logout": "Выйти", + "Leave": "Отмена", + "I understand, please disable": "Я понимаю, всё равно отключить", + "Confirm": "Подтвердить", + "Yes": "Да", + "No": "Нет", + "Username": "Логин", + "Password": "Пароль", + "Remember me": "Запомнить меня", + "Login": "Вход в систему", + "No Monitors, please": "Мониторов нет, пожалуйста", + "No Monitors": "Мониторы отсутствуют", + "add one": "создайте новый", + "Notification Type": "Тип уведомления", + "Email": "Почта", + "Test": "Проверка", + "Certificate Info": "Информация о сертификате", + "Resolver Server": "DNS сервер", + "Resource Record Type": "Тип ресурсной записи", + "Last Result": "Последний результат", + "Create your admin account": "Создайте аккаунт администратора", + "Repeat Password": "Повторите пароль", + "respTime": "Время ответа (мс)", + "notAvailableShort": "N/A", + "Create": "Создать", + "clearEventsMsg": "Вы действительно хотите удалить всю статистику событий данного монитора?", + "clearHeartbeatsMsg": "Вы действительно хотите удалить всю статистику опросов данного монитора?", + "confirmClearStatisticsMsg": "Вы действительно хотите удалить ВСЮ статистику?", + "Clear Data": "Удалить статистику", + "Events": "События", + "Heartbeats": "Опросы", + "Auto Get": "Авто-получение", + "enableDefaultNotificationDescription": "Для каждого нового монитора это уведомление будет включено по умолчанию. Вы всё ещё можете отключить уведомления в каждом мониторе отдельно.", + "Default enabled": "Использовать по умолчанию", + "Also apply to existing monitors": "Применить к существующим мониторам", + "Export": "Экспорт", + "Import": "Импорт", + "backupDescription": "Вы можете сохранить резервную копию всех мониторов и уведомлений в виде JSON-файла", + "backupDescription2": "P.S. История и события сохранены не будут", + "backupDescription3": "Важные данные, такие как токены уведомлений, добавляются при экспорте, поэтому храните файлы в безопасном месте", + "alertNoFile": "Выберите файл для импорта.", + "alertWrongFileType": "Выберите JSON-файл.", + "twoFAVerifyLabel": "Пожалуйста, введите свой токен, чтобы проверить работу 2FA", + "tokenValidSettingsMsg": "Токен действителен! Теперь вы можете сохранить настройки 2FA.", + "confirmEnableTwoFAMsg": "Вы действительно хотите включить 2FA?", + "confirmDisableTwoFAMsg": "Вы действительно хотите выключить 2FA?", + "Apply on all existing monitors": "Применить ко всем существующим мониторам", + "Verify Token": "Проверить токен", + "Setup 2FA": "Настройка 2FA", + "Enable 2FA": "Включить 2FA", + "Disable 2FA": "Выключить 2FA", + "2FA Settings": "Настройки 2FA", + "Two Factor Authentication": "Двухфакторная аутентификация", + "Active": "Активно", + "Inactive": "Неактивно", + "Token": "Токен", + "Show URI": "Показать URI", + "Clear all statistics": "Очистить статистику", + "retryCheckEverySecond": "Повтор каждые {0} секунд", + "importHandleDescription": "Выберите \"Пропустить существующие\", если вы хотите пропустить каждый монитор или уведомление с таким же именем. \"Перезаписать\" удалит каждый существующий монитор или уведомление и добавит заново. Вариант \"Не проверять\" принудительно восстанавливает все мониторы и уведомления, даже если они уже существуют.", + "confirmImportMsg": "Вы действительно хотите восстановить резервную копию? Убедитесь, что вы выбрали подходящий вариант импорта.", + "Heartbeat Retry Interval": "Интервал повтора опроса", + "Import Backup": "Импорт", + "Export Backup": "Скачать", + "Skip existing": "Пропустить существующие", + "Overwrite": "Перезаписать", + "Options": "Опции", + "Keep both": "Не проверять", + "Tags": "Теги", + "Add New below or Select...": "Добавить новый или выбрать...", + "Tag with this name already exist.": "Такой тег уже существует.", + "Tag with this value already exist.": "Тег с таким значением уже существует.", + "color": "цвет", + "value (optional)": "значение (опционально)", + "Gray": "Серый", + "Red": "Красный", + "Orange": "Оранжевый", + "Green": "Зелёный", + "Blue": "Синий", + "Indigo": "Индиго", + "Purple": "Пурпурный", + "Pink": "Розовый", + "Search...": "Поиск...", + "Avg. Ping": "Среднее значение пинга", + "Avg. Response": "Среднее время ответа", + "Entry Page": "Главная страница", + "statusPageNothing": "Здесь пусто. Добавьте группу или монитор.", + "No Services": "Нет сервисов", + "All Systems Operational": "Все системы работают в штатном режиме", + "Partially Degraded Service": "Сервисы работают частично", + "Degraded Service": "Все сервисы не работают", + "Add Group": "Добавить группу", + "Add a monitor": "Добавить монитор", + "Edit Status Page": "Редактировать", + "Go to Dashboard": "Панель управления", + "Status Page": "Страница статуса", + "Status Pages": "Страницы статуса", + "Discard": "Отмена", + "Create Incident": "Создать инцидент", + "Switch to Dark Theme": "Тёмная тема", + "Switch to Light Theme": "Светлая тема", + "telegram": "Telegram", + "webhook": "Вебхук", + "smtp": "Email (SMTP)", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Поддержка 50+ сервисов уведомлений)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "Primary Base URL": "Основной URL", + "Push URL": "URL пуша", + "needPushEvery": "К этому URL необходимо обращаться каждые {0} секунд", + "pushOptionalParams": "Опциональные параметры: {0}", + "defaultNotificationName": "Моё уведомление {notification} ({number})", + "here": "здесь", + "Required": "Требуется", + "Bot Token": "Токен бота", + "wayToGetTelegramToken": "Вы можете взять токен здесь - {0}.", + "Chat ID": "ID чата", + "supportTelegramChatID": "Поддерживаются ID чатов, групп и каналов", + "wayToGetTelegramChatID": "Вы можете взять ID вашего чата, отправив сообщение боту и перейдя по этому URL для просмотра chat_id:", + "YOUR BOT TOKEN HERE": "ВАШ ТОКЕН БОТА ЗДЕСЬ", + "chatIDNotFound": "ID чата не найден; пожалуйста отправьте сначала сообщение боту", + "Post URL": "Post URL", + "Content Type": "Тип контента", + "webhookJsonDesc": "{0} подходит для любых современных HTTP-серверов, например Express.js", + "webhookFormDataDesc": "{multipart} подходит для PHP. JSON-вывод необходимо будет обработать с помощью {decodeFunction}", + "secureOptionNone": "Нет / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Игнорировать ошибки TLS", + "From Email": "От кого", + "emailCustomSubject": "Своя тема", + "To Email": "Кому", + "smtpCC": "Копия", + "smtpBCC": "Скрытая копия", + "Discord Webhook URL": "Discord вебхук URL", + "wayToGetDiscordURL": "Вы можете создать его в Параметрах сервера -> Интеграции -> Создать вебхук", + "Bot Display Name": "Отображаемое имя бота", + "Prefix Custom Message": "Свой префикс сообщения", + "Hello @everyone is...": "Привет {'@'}everyone это...", + "Webhook URL": "URL вебхука", + "wayToGetTeamsURL": "Как создать URL вебхука вы можете узнать здесь - {0}.", + "Number": "Номер", + "Recipients": "Получатели", + "needSignalAPI": "Вам необходим клиент Signal с поддержкой REST API.", + "wayToCheckSignalURL": "Пройдите по этому URL, чтобы узнать как настроить такой клиент:", + "signalImportant": "ВАЖНО: Нельзя смешивать в Получателях группы и номера!", + "Application Token": "Токен приложения", + "Server URL": "URL сервера", + "Priority": "Приоритет", + "Icon Emoji": "Иконка Emoji", + "Channel Name": "Имя канала", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "Больше информации о вебхуках: {0}", + "aboutChannelName": "Введите имя канала в поле {0} Имя канала, если вы хотите обойти канал вебхука. Например: #other-channel", + "aboutKumaURL": "Если поле Uptime Kuma URL в настройках останется пустым, по умолчанию будет использоваться ссылка на проект на GitHub.", + "emojiCheatSheet": "Шпаргалка по Emoji: {0}", + "User Key": "Ключ пользователя", + "Device": "Устройство", + "Message Title": "Заголовок сообщения", + "Notification Sound": "Звук уведомления", + "More info on:": "Больше информации: {0}", + "pushoverDesc1": "Экстренный приоритет (2) имеет таймаут повтора по умолчанию 30 секунд и истекает через 1 час.", + "pushoverDesc2": "Если вы хотите отправлять уведомления различным устройствам, необходимо заполнить поле Устройство.", + "SMS Type": "Тип SMS", + "octopushTypePremium": "Премиум (Быстрый - рекомендуется для алертов)", + "octopushTypeLowCost": "Дешёвый (Медленный - иногда блокируется операторами)", + "checkPrice": "Тарифы {0}:", + "octopushLegacyHint": "Вы используете старую версию Octopush (2011-2020) или новую?", + "Check octopush prices": "Тарифы Octopush {0}.", + "octopushPhoneNumber": "Номер телефона (межд. формат, например: +79831234567) ", + "octopushSMSSender": "Имя отправителя SMS: 3-11 символов алвафита, цифр и пробелов (a-zA-Z0-9)", + "LunaSea Device ID": "ID устройства LunaSea", + "Apprise URL": "Apprise URL", + "Example:": "Пример: {0}", + "Read more:": "Подробнее: {0}", + "Status:": "Статус: {0}", + "Read more": "Подробнее", + "appriseInstalled": "Apprise установлен.", + "appriseNotInstalled": "Apprise не установлен. {0}", + "Access Token": "Токен доступа", + "Channel access token": "Токен доступа канала", + "Line Developers Console": "Консоль разработчиков Line", + "lineDevConsoleTo": "Консоль разработчиков Line - {0}", + "Basic Settings": "Базовые настройки", + "User ID": "ID пользователя", + "Messaging API": "API сообщений", + "wayToGetLineChannelToken": "Сначала зайдите в {0}, создайте провайдера и канал (API сообщений), затем вы сможете получить токен доступа канала и ID пользователя из вышеупомянутых пунктов меню.", + "Icon URL": "URL иконки", + "aboutIconURL": "Вы можете предоставить ссылку на иконку в поле \"URL иконки\" чтобы переопределить картинку профиля по умолчанию. Не используется, если задана иконка Emoji.", + "aboutMattermostChannelName": "Вы можете переопределить канал по умолчанию, в который вебхук пишет, введя имя канала в поле \"Имя канала\". Это необходимо включить в настройках вебхука Mattermost. Например: #other-channel", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - дёшево и медленно, часто перегружен. Только для получателей из Польши.", + "promosmsTypeFlash": "SMS FLASH - сообщения автоматически появятся на устройстве получателя. Только для получателей из Польши.", + "promosmsTypeFull": "SMS FULL - премиум-уровень SMS, можно использовать своё имя отправителя (предварительно зарегистрировав его). Надёжно для алертов.", + "promosmsTypeSpeed": "SMS SPEED - наивысший приоритет в системе. Очень быстро и надёжно, но очень дорого (в два раза дороже, чем SMS FULL).", + "promosmsPhoneNumber": "Номер телефона (для получателей из Польши можно пропустить код региона)", + "promosmsSMSSender": "Имя отправителя SMS: Зарегистрированное или одно из имён по умолчанию: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + "matrixHomeserverURL": "URL сервера (вместе с http(s):// и опционально порт)", + "Internal Room Id": "Внутренний ID комнаты", + "matrixDesc1": "Внутренний ID комнаты можно найти в Подробностях в параметрах канала вашего Matrix клиента. Он должен выглядеть примерно как !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Рекомендуется создать нового пользователя и не использовать токен доступа личного пользователя Matrix, т.к. это влечёт за собой полный доступ к аккаунту и к комнатам, в которых вы состоите. Вместо этого создайте нового пользователя и пригласите его только в ту комнату, в которой вы хотите получать уведомления. Токен доступа можно получить, выполнив команду {0}", + "Method": "Метод", + "Body": "Тело", + "Headers": "Заголовки", + "PushUrl": "URL пуша", + "HeadersInvalidFormat": "Заголовки запроса некорректны JSON: ", + "BodyInvalidFormat": "Тело запроса некорректно JSON: ", + "Monitor History": "Статистика", + "clearDataOlderThan": "Сохранять статистику за {0} дней.", + "PasswordsDoNotMatch": "Пароли не совпадают.", + "records": "записей", + "One record": "Одна запись", + "steamApiKeyDescription": "Для мониторинга игрового сервера Steam вам необходим Web-API ключ Steam. Зарегистрировать его можно здесь: ", + "Certificate Chain": "Цепочка сертификатов", + "Valid": "Действительный", + "Hide Tags": "Скрыть тэги", + "Title": "Название инцидента:", + "Content": "Содержание инцидента:", + "Post": "Опубликовать", + "Cancel": "Отмена", + "Created": "Создано", + "Unpin": "Открепить", + "Show Tags": "Показать тэги", + "recent": "Сейчас", + "3h": "3 часа", + "6h": "6 часов", + "24h": "24 часа", + "1w": "1 неделя", + "No monitors available.": "Нет доступных мониторов", + "Add one": "Добавить новый", + "Backup": "Резервная копия", + "Security": "Безопасность", + "Shrink Database": "Сжать Базу Данных", + "Current User": "Текущий пользователь", + "About": "О программе", + "Description": "Описание", + "Powered by": "Работает на основе скрипта от", + "shrinkDatabaseDescription": "Включает VACUUM для базы данных SQLite. Если ваша база данных была создана на версии 1.10.0 и более, AUTO_VACUUM уже включен и это действие не требуется.", + "deleteStatusPageMsg": "Вы действительно хотите удалить эту страницу статуса сервисов?", + "Style": "Стиль", + "info": "ИНФО", + "warning": "ВНИМАНИЕ", + "danger": "ОШИБКА", + "primary": "ОСНОВНОЙ", + "light": "СВЕТЛЫЙ", + "dark": "ТЕМНЫЙ", + "New Status Page": "Новая страница статуса", + "Show update if available": "Показывать доступные обновления", + "Also check beta release": "Проверять обновления для бета версий", + "Add New Status Page": "Добавить страницу статуса", + "Next": "Далее", + "Accept characters: a-z 0-9 -": "Разрешены символы: a-z 0-9 -", + "Start or end with a-z 0-9 only": "Начало и окончание имени только на символы: a-z 0-9", + "No consecutive dashes --": "Запрещено использовать тире --", + "HTTP Options": "HTTP Опции", + "Authentication": "Аутентификация", + "HTTP Basic Auth": "HTTP Авторизация", + "PushByTechulus": "Push by Techulus", + "clicksendsms": "ClickSend SMS", + "GoogleChat": "Google Chat (только Google Workspace)", + "apiCredentials": "API реквизиты", + "Done": "Готово", + "Info": "Инфо", + "Steam API Key": "Steam API-Ключ", + "Pick a RR-Type...": "Выберите RR-Тип...", + "Pick Accepted Status Codes...": "Выберите принятые коды состояния...", + "Default": "По умолчанию", + "Please input title and content": "Пожалуйста, введите название и содержание", + "Last Updated": "Последнее Обновление", + "Untitled Group": "Группа без названия", + "Services": "Сервисы", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API Пользователь (включая префикс webapi_)", + "serwersmsAPIPassword": "API Пароль", + "serwersmsPhoneNumber": "Номер телефона", + "serwersmsSenderName": "SMS Имя Отправителя (регистрированный через пользовательский портал)", + "stackfield": "Stackfield", + "smtpDkimSettings": "DKIM Настройки", + "smtpDkimDesc": "Пожалуйста ознакомьтесь с {0} Nodemailer DKIM для использования.", + "documentation": "документацией", + "smtpDkimDomain": "Имя Домена", + "smtpDkimKeySelector": "Ключ", + "smtpDkimPrivateKey": "Приватный ключ", + "smtpDkimHashAlgo": "Алгоритм хэша (опционально)", + "smtpDkimheaderFieldNames": "Заголовок ключей для подписи (опционально)", + "smtpDkimskipFields": "Заголовок ключей не для подписи (опционально)", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "Конечная точка API", + "alertaEnvironment": "Среда", + "alertaApiKey": "Ключ API", + "alertaAlertState": "Состояние алерта", + "alertaRecoverState": "Состояние восстановления", + "Proxies": "Прокси", + "Setup Proxy": "Настройка Прокси", + "Proxy Protocol": "Протокол Прокси", + "Proxy Server": "Прокси", + "Proxy server has authentication": "Прокси имеет аутентификацию", + "Reverse Proxy": "Обратный прокси", + "No Proxy": "Без прокси", + "default": "По умолчанию", + "enabled": "Включено", + "setAsDefault": "Установлено по умолчанию", + "deleteProxyMsg": "Вы действительно хотите удалить этот прокси для всех мониторов?", + "proxyDescription": "Прокси должны быть привязаны к монитору, чтобы работать.", + "enableProxyDescription": "Этот прокси не будет влиять на запросы монитора, пока не будет активирован. Вы можете контролировать временное отключение прокси для всех мониторов через статус активации.", + "setAsDefaultProxyDescription": "Этот прокси будет по умолчанию включен для новых мониторов. Вы всё ещё можете отдельно отключать прокси в каждом мониторе.", + "Invalid": "Недействительный", + "AccessKeyId": "AccessKey ID", + "SecretAccessKey": "AccessKey Secret", + "PhoneNumbers": "PhoneNumbers", + "TemplateCode": "TemplateCode", + "SignName": "SignName", + "Sms template must contain parameters: ": "Шаблон СМС должен содержать параметры: ", + "Bark Endpoint": "Bark Endpoint", + "Bark Group": "Bark Group", + "Bark Sound": "Bark Sound", + "WebHookUrl": "WebHookUrl", + "SecretKey": "SecretKey", + "For safety, must use secret key": "В целях безопасности необходимо использовать секретный ключ", + "Device Token": "Токен устройства", + "Platform": "Платформа", + "iOS": "iOS", + "Android": "Android", + "Huawei": "Huawei", + "High": "High", + "Retry": "Повторить", + "Topic": "Тема", + "WeCom Bot Key": "WeCom Bot Key", + "User": "Пользователь", + "Installed": "Установлено", + "Not installed": "Не установлено", + "Running": "Запускается", + "Not running": "Не запускается", + "Remove Token": "Удалить токен", + "Start": "Запустить", + "Stop": "Остановить", + "Uptime Kuma": "Uptime Kuma", + "Slug": "Slug", + "Accept characters:": "Принимаемые символы:", + "startOrEndWithOnly": "Начинается или кончается только {0}", + "No consecutive dashes": "Без последовательных тире", + "The slug is already taken. Please choose another slug.": "The slug is already taken. Please choose another slug.", + "Page Not Found": "Страница не найдена", + "wayToGetCloudflaredURL": "(Скачать cloudflared с {0})", + "cloudflareWebsite": "Cloudflare Website", + "Message:": "Сообщение:", + "Don't know how to get the token? Please read the guide:": "Don't know how to get the token? Please read the guide:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.", + "HTTP Headers": "HTTP заголовки", + "Trust Proxy": "Доверять прокси", + "Other Software": "Другое программное обеспечение", + "For example: nginx, Apache and Traefik.": "К примеру: nginx, Apache и Traefik.", + "Please read": "Пожалуйста, прочитайте", + "Subject:": "Тема:", + "Valid To:": "Действителен до:", + "Days Remaining:": "Дней осталось:", + "Issuer:": "Издатель:", + "Fingerprint:": "Отпечаток:", + "No status pages": "Нет статусных страниц", + "Domain Name Expiry Notification": "Уведомление об истечении срока действия доменного имени", + "Proxy": "Прокси", + "Date Created": "Дата создания", + "HomeAssistant": "Home Assistant", + "onebotHttpAddress": "OneBot HTTP Address", + "onebotMessageType": "OneBot Message Type", + "onebotGroupMessage": "Группа", + "onebotPrivateMessage": "Private", + "onebotUserOrGroupId": "Группа/ID пользователя", + "onebotSafetyTips": "В целях безопасности необходимо установить токен доступа", + "PushDeer Key": "PushDeer Key", + "Footer Text": "Текст нижнего колонтитула", + "Show Powered By": "Показывать на чем создано", + "Domain Names": "Доменные имена", + "signedInDisp": "Вы вошли как {0}", + "signedInDispDisabled": "Аутентификация отключена.", + "RadiusSecret": "Секрет Radius", + "RadiusSecretDescription": "Общий секрет между клиентом и сервером", + "RadiusCalledStationId": "Идентификатор вызываемой станции", + "RadiusCalledStationIdDescription": "Идентификатор вызываемого устройства", + "RadiusCallingStationId": "Идентификатор вызывающей станции", + "RadiusCallingStationIdDescription": "Идентификатор вызывающего устройства", + "Certificate Expiry Notification": "Уведомление об истечении срока действия сертификата", + "API Username": "Имя пользователя API", + "API Key": "API ключ", + "Recipient Number": "Номер получателя", + "From Name/Number": "Имя/номер отправителя", + "Leave blank to use a shared sender number.": "Оставьте пустым, чтобы использовать общий номер отправителя.", + "Octopush API Version": "Версия API Octopush", + "Legacy Octopush-DM": "Legacy Octopush-DM", + "endpoint": "endpoint", + "octopushAPIKey": "\"API key\" из учетных данных HTTP API в панели управления", + "octopushLogin": "\"Login\" из учетных данных HTTP API в панели управления", + "promosmsLogin": "Логин API", + "promosmsPassword": "Пароль API", + "pushoversounds pushover": "Pushover (default)", + "pushoversounds bike": "Bike", + "pushoversounds bugle": "Bugle", + "pushoversounds cashregister": "Cash Register", + "pushoversounds classical": "Classical", + "pushoversounds cosmic": "Cosmic", + "pushoversounds falling": "Falling", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Incoming", + "pushoversounds intermission": "Intermission", + "pushoversounds magic": "Magic", + "pushoversounds mechanical": "Mechanical", + "pushoversounds pianobar": "Piano Bar", + "pushoversounds siren": "Siren", + "pushoversounds spacealarm": "Space Alarm", + "pushoversounds tugboat": "Tug Boat", + "pushoversounds alien": "Alien Alarm (long)", + "pushoversounds climb": "Climb (long)", + "pushoversounds persistent": "Persistent (long)", + "pushoversounds echo": "Pushover Echo (long)", + "pushoversounds updown": "Up Down (long)", + "pushoversounds vibrate": "Vibrate Only", + "pushoversounds none": "None (silent)", + "pushyAPIKey": "Secret API Key", + "pushyToken": "Токен устройства", + "Using a Reverse Proxy?": "Используете обратный прокси?", + "Check how to config it for WebSocket": "Проверьте, как настроить его для WebSocket", + "Steam Game Server": "Steam Game Server", + "Most likely causes:": "Наиболее вероятные причины:", + "The resource is no longer available.": "Ресурс больше не доступен.", + "There might be a typing error in the address.": "В адресе может быть опечатка.", + "What you can try:": "Что вы можете попробовать:", + "Retype the address.": "Повторите адрес.", + "Go back to the previous page.": "Вернуться на предыдущую страницу.", + "Coming Soon": "Скоро", + "wayToGetClickSendSMSToken": "Вы можете получить имя пользователя API и ключ API из {0} .", + "Connection String": "Строка подключения", + "Query": "Запрос", + "settingsCertificateExpiry": "Истекание TLS сертификата", + "certificationExpiryDescription": "HTTPS Мониторы инициируют уведомление, когда срок действия сертификата TLS истечет:", + "Setup Docker Host": "Настроить Docker Host", + "Connection Type": "Тип соединения", + "Docker Daemon": "Docker Daemon", + "deleteDockerHostMsg": "Are you sure want to delete this docker host for all monitors?", + "socket": "Socket", + "tcp": "TCP / HTTP", + "Docker Container": "Docker контейнер", + "Container Name / ID": "Название контейнера / ID", + "Docker Host": "Docker Host", + "Docker Hosts": "Docker Hosts", + "ntfy Topic": "ntfy Topic", + "Domain": "Домен", + "Workstation": "Workstation", + "disableCloudflaredNoAuthMsg": "Вы находитесь в режиме без авторизации, пароль не требуется.", + "trustProxyDescription": "Доверять заголовкам 'X-Forwarded-*'. Если вы хотите получить правильный IP-адрес клиента, а ваш Uptime Kuma находится под Nginx или Apache, вам следует включить этот параметр.", + "wayToGetLineNotifyToken": "Вы можете получить токен доступа в {0}", + "Examples": "Примеры", + "Home Assistant URL": "Home Assistant URL", + "Long-Lived Access Token": "Токен доступа с длительным сроком службы", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ", + "Notification Service": "Служба уведомлений", + "default: notify all devices": "по стандарту: уведомлять все устройства", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.", + "Automations can optionally be triggered in Home Assistant:": "При желании автоматизацию можно активировать в Home Assistant.:", + "Trigger type:": "Тип триггера:", + "Event type:": "Тип события:", + "Event data:": "Данные события:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Затем выберите действие, например, переключите сцену на красный индикатор RGB..", + "Frontend Version": "Версия интерфейса", + "Frontend Version do not match backend version!": "Версия интерфейса не соответствует версии серверной части!", + "Base URL": "Базовый URL", + "goAlertInfo": "GoAlert is a An open source application for on-call scheduling, automated escalations and notifications (like SMS or voice calls). Automatically engage the right person, the right way, and at the right time! {0}", + "goAlertIntegrationKeyInfo": "Получить общий ключ интеграции API для сервиса в этом формате \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" обычно значение параметра токена скопированного URL.", + "goAlert": "GoAlert", + "backupOutdatedWarning": "Устарело: поскольку добавлено множество функций, а эта функция резервного копирования немного не поддерживается, она не может создать или восстановить полную резервную копию.", + "backupRecommend": "Сделайте резервную копию тома или папки с данными (./data/) напрямую.", + "Optional": "Необязательно", + "squadcast": "Squadcast", + "SendKey": "SendKey", + "SMSManager API Docs": "Документация к API SMSManager ", + "Gateway Type": "Тип шлюза", + "SMSManager": "SMSManager", + "You can divide numbers with": "Вы можете делить числа с", + "or": "или" +} diff --git a/src/lang/sl-SI.json b/src/lang/sl-SI.json new file mode 100644 index 000000000..062413a8d --- /dev/null +++ b/src/lang/sl-SI.json @@ -0,0 +1,357 @@ +{ + "languageName": "Slovenščina", + "checkEverySecond": "Preveri na vsakih {0} sekund", + "retryCheckEverySecond": "Ponovno poskusi na vsakih {0} sekund", + "retriesDescription": "Maksimalno število poskusov predenj se storitev označi kot 'ne deluje' in se pošlje obvestilo", + "ignoreTLSError": "Ignoriraj TLS/SSL napake za HTTPS spletne strani", + "upsideDownModeDescription": "Negiraj status. Če je storitev deluje bo označena kot 'ne deluje'.", + "maxRedirectDescription": "Maksimalno število sledečih preusmeritev. 0 onemogoči preusmeritve.", + "acceptedStatusCodesDescription": "Izberi kode statusa veljavna kot uspešen odgovor.", + "passwordNotMatchMsg": "Ponovljeno geslo se ne ujema.", + "notificationDescription": "Obvestila morajo biti dodeljena monitorju, da delujejo.", + "keywordDescription": "Iskana ključna beseda v surovem HTML ali JSON odgovoru. Iskanje je občutljivo na začetnico.", + "pauseDashboardHome": "Pavza", + "deleteMonitorMsg": "Ste prepričani, da želite izbrisati ta monitor?", + "deleteNotificationMsg": "Ste prepričani, da želite izbrisati to obvestilo za vse monitorje?", + "resolverserverDescription": "Cloudflare je privzeti strežnik. DNS strežnik lahko spremenite kadarkoli.", + "rrtypeDescription": "Izberite RR tip, ki ga želite spremljati", + "pauseMonitorMsg": "Ste prepričani, da želite pavzirati?", + "enableDefaultNotificationDescription": "To obvestilo bo kot privzeto omogočeno za vse nove monitorje. Še vedno ga lahko izključite posebej za vsak monitor.", + "clearEventsMsg": "Ste prepričani da želite izbrisati vse dogodke tega monitorja?", + "clearHeartbeatsMsg": "Ste prepričani da želite izbrisati vse srčne utripe tega monitorja?", + "confirmClearStatisticsMsg": "Ste prepričani da želite izbrisati VSO statistiko?", + "importHandleDescription": "Izberite 'Preskoči obstoječe', če želite preskočiti vsak monitor ali obvestilo z istim imenom. 'Prepiši' bo prepisal vse obstoječe monitorje in obvestila.", + "confirmImportMsg": "Ste prepričani da želite uvoziti varnostno kopijo? Preverite da ste izbrali pravo opcijo za uvoz.", + "twoFAVerifyLabel": "Prosimo vnesite žeton za potrditev 2FA:", + "tokenValidSettingsMsg": "Žeton je veljaven! Sedaj lahko shranite 2FA nastavitev.", + "confirmEnableTwoFAMsg": "Ste prepričani, da želite omogočiti 2FA?", + "confirmDisableTwoFAMsg": "Ste prepričani, da želite onemogočiti 2FA?", + "Settings": "Nastavitve", + "Dashboard": "Nadzorna plošča", + "New Update": "Nova posodobitev", + "Language": "Jezik", + "Appearance": "Izgled", + "Theme": "Teme", + "General": "Splošno", + "Primary Base URL": "Primaren URL", + "Version": "Različica", + "Check Update On GitHub": "Preveri posodobitev na GitHub-u", + "List": "Seznam", + "Add": "Dodaj", + "Add New Monitor": "Dodaj nov monitor", + "Quick Stats": "Hitro stanje", + "Up": "Deluje", + "Down": "Ne deluje", + "Pending": "Na čakanju", + "Unknown": "Neznano", + "Pause": "Pavza", + "Name": "Ime", + "Status": "Status", + "DateTime": "DateTime", + "Message": "Sporočilo", + "No important events": "Ni pomembnih dogodkov", + "Resume": "Nadaljuj", + "Edit": "Uredi", + "Delete": "Izbriši", + "Current": "Trenutno", + "Uptime": "Uptime", + "Cert Exp.": "Potek certifikata", + "day": "dan | dni", + "-day": "-dni", + "hour": "ura", + "-hour": "-ur", + "Response": "Odgovor", + "Ping": "Ping", + "Monitor Type": "Tip monitorja", + "Keyword": "Ključna beseda", + "Friendly Name": "Ime za prikaz", + "URL": "URL", + "Hostname": "Hostname", + "Port": "Vrata", + "Heartbeat Interval": "Interval srčnega utripa", + "Retries": "Ponovni poskusi", + "Heartbeat Retry Interval": "Ponovni poskus srčnega utripa", + "Advanced": "Napredno", + "Upside Down Mode": "Negiran način", + "Max. Redirects": "Max. preusmeritev", + "Accepted Status Codes": "Sprejete kode statusa", + "Push URL": "Push URL", + "needPushEvery": "Pokliči ta URL vsakih {0} sekund.", + "pushOptionalParams": "Dodatni parametri: {0}", + "Save": "Shrani", + "Notifications": "Obvestila", + "Not available, please setup.": "Ni na voljo, prosimo nastavite.", + "Setup Notification": "Nastavi obvestila", + "Light": "Svetlo", + "Dark": "Temno", + "Auto": "Auto", + "Theme - Heartbeat Bar": "Tema - vrstica srčnega utripa", + "Normal": "Normalna", + "Bottom": "Spodaj", + "None": "Brez", + "Timezone": "Časovni pas", + "Search Engine Visibility": "Vidljivost v spletnih iskalnikih", + "Allow indexing": "Dovoli indeksiranje", + "Discourage search engines from indexing site": "Odvračaj spletne iskalnike od indeksiranja te strani", + "Change Password": "Zamenjaj geslo", + "Current Password": "Trenutno geslo", + "New Password": "Novo geslo", + "Repeat New Password": "Ponovi novo geslo", + "Update Password": "Posodobi geslo", + "Disable Auth": "Onemogoči auth", + "Enable Auth": "Omogoči auth", + "disableauth.message1": "Ali ste prepričani, da želite onemogočiti avtentikacijo?", + "disableauth.message2": "Namenjen je nekomu, ki ima pred programom Uptime Kuma vklopljeno zunanje preverjanje pristnosti, na primer Cloudflare Access.", + "Please use this option carefully!": "Uporabljajte previdno.", + "Logout": "Odjava", + "Leave": "Zapusti", + "I understand, please disable": "Razumem, prosim onemogočite", + "Confirm": "Potrdi", + "Yes": "Da", + "No": "Ne", + "Username": "Uporabniško ime", + "Password": "Geslo", + "Remember me": "Zapomni si me", + "Login": "Vpis", + "No Monitors, please": "Prosim, brez monitorjev", + "add one": "Dodaj enega", + "Notification Type": "Tip obvestila", + "Email": "Email", + "Test": "Test", + "Certificate Info": "Informacije certifikata", + "Resolver Server": "Strežnik za razreševanje", + "Resource Record Type": "Vrsta zapisa o viru", + "Last Result": "Zadnji rezultat", + "Create your admin account": "Ustvari administratorski račun", + "Repeat Password": "Ponovi geslo", + "Import Backup": "Uvozi varnostno kopijo", + "Export Backup": "Izvozi varnostno kopijo", + "Export": "Izvozi", + "Import": "Uvozi", + "respTime": "Odzivni čas (ms)", + "notAvailableShort": "N/A", + "Default enabled": "Privzeto omogočeno", + "Apply on all existing monitors": "Uporabi na vseh obstoječih monitorjih", + "Create": "Ustvari", + "Clear Data": "Izbriši podatke", + "Events": "Dogodki", + "Heartbeats": "Srčni utripi", + "Auto Get": "Auto Get", + "backupDescription": "Izvozite lahko vse monitorje in obvestila v JSON datoteko.", + "backupDescription2": "Pomni: Zgodovina in podatki dogodkov niso vključeni.", + "backupDescription3": "Občutljivi podatki, kot žetoni za obvestila so vlkjučeni v datoteko za izvoz; prosimo hranite na varnem.", + "alertNoFile": "Izberite datoteko za Uvoz.", + "alertWrongFileType": "Prosimo izberite JSON datoteko.", + "Clear all statistics": "Pobrišite vso statistiko", + "Skip existing": "Preskoči obstoječe", + "Overwrite": "Prepiši", + "Options": "Možnosti", + "Keep both": "Ohrani oboje", + "Verify Token": "Potrdi žeton", + "Setup 2FA": "Nastavi 2FA", + "Enable 2FA": "Omogoči 2FA", + "Disable 2FA": "Onemogoči 2FA", + "2FA Settings": "2FA nastavitve", + "Two Factor Authentication": "Preverjanje pristnosti z dvema dejavnikoma", + "Active": "Aktivno", + "Inactive": "Neaktivno", + "Token": "Žeton", + "Show URI": "Prikaži URI", + "Tags": "Značke", + "Add New below or Select...": "Dodaj novo spodaj ali izberi iz seznama...", + "Tag with this name already exist.": "Značka s tem imenom že obstaja.", + "Tag with this value already exist.": "Značka s to vrednostjo že obstaja.", + "color": "barva", + "value (optional)": "vrednost (po želji)", + "Gray": "Siva", + "Red": "Rdeča", + "Orange": "Oranžna", + "Green": "Zelena", + "Blue": "Modra", + "Indigo": "Indigo", + "Purple": "Vijolična", + "Pink": "Roza", + "Search...": "Išči...", + "Avg. Ping": "Avg. Ping", + "Avg. Response": "Avg. odziv", + "Entry Page": "Vstopna stran", + "statusPageNothing": "Nikjer nič... Dodajte skupino ali monitor.", + "No Services": "Ni storitev", + "All Systems Operational": "Vsi sistemi delujejo", + "Partially Degraded Service": "Delno poslabšana storitev", + "Degraded Service": "Poslabšana storitev", + "Add Group": "Dodaj skupino", + "Add a monitor": "Dodaj monitor", + "Edit Status Page": "Uredi statusno stran", + "Go to Dashboard": "Pojdi na nadzorno ploščo", + "Status Page": "Statusna stran", + "Status Pages": "Statusne strani", + "defaultNotificationName": "Moje {notification} Obvestilo ({number})", + "here": "tukaj", + "Required": "Obvezno", + "telegram": "Telegram", + "Bot Token": "Robotkov žetonček", + "wayToGetTelegramToken": "Lahko dobiš žeton od {0}.", + "Chat ID": "ID pogovora", + "supportTelegramChatID": "Direkten pogovor pomoči / Skupina / ID kanala", + "wayToGetTelegramChatID": "Id lahko dobiš, če pošlješ sporočilo robotku in odpreš ta URL, da bi videl chat_id:", + "YOUR BOT TOKEN HERE": "ROBOTKOV ŽETON TUKAJ", + "chatIDNotFound": "Ne najdem Chat Id-ja; prvo pošlji sporočilo robotku", + "webhook": "Webhook", + "Post URL": "Post URL", + "Content Type": "Vrsta vsebine", + "webhookJsonDesc": "{0} je v redu za vsak moderen HTTP strežnik, kot recimo Express.js", + "webhookFormDataDesc": "{multipart} je v redu za PHP. JSON bo moral biti razčlenjen s {decodeFunction}", + "smtp": "Email (SMTP)", + "secureOptionNone": "Brez / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Ignoriraj TLS napako", + "From Email": "Od Email", + "emailCustomSubject": "Poljubna zadeva", + "To Email": "Za Email", + "smtpCC": "CC", + "smtpBCC": "BCC", + "discord": "Discord", + "Discord Webhook URL": "Discord Webhook URL", + "wayToGetDiscordURL": "To lahko dibiš v Server Settings -> Integrations -> Create Webhook", + "Bot Display Name": "Prikazno ime robotka", + "Prefix Custom Message": "Predpona poljubnega sporočila", + "Hello @everyone is...": "Pozdravljen {'@'}everyone je...", + "teams": "Microsoft Teams", + "Webhook URL": "Webhook URL", + "wayToGetTeamsURL": "Izvedi kako narediš webhook URL {0}.", + "signal": "Signal", + "Number": "Številka", + "Recipients": "Prejemniki", + "needSignalAPI": "Imeti moraš signal klienta z REST API.", + "wayToCheckSignalURL": "Kako se to naredi, lahko preveriš na tem URL-ju:", + "signalImportant": "POMEMBNO: Ne moreš mešati skupin in številk v prejemnikih!", + "gotify": "Gotify", + "Application Token": "Žeton za aplikacijo", + "Server URL": "URL Strežnika", + "Priority": "Prioriteta", + "slack": "Slack", + "Icon Emoji": "Emoji ikona", + "Channel Name": "Ime kanala", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "Več o webhook-ih: {0}", + "aboutChannelName": "Vnesi ime kanala na {0} Channel Name polje, če želiš preskočiti webhook kanal. npr.: #drug-kanal", + "aboutKumaURL": "Če pustite polje Uptime Kuma URL prazno, bo nastavljeno privzeto na GitHub stran projekta.", + "emojiCheatSheet": "Emoji plonk listek: {0}", + "rocket.chat": "Rocket.Chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "clicksendsms": "ClickSend SMS", + "lunasea": "LunaSea", + "apprise": "Apprise (podpira 50+ storitev za obveščevanje)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "User Key": "User Key", + "Device": "Naprava", + "Message Title": "Naslov sporočila", + "Notification Sound": "Zvok obvestila", + "More info on:": "Več informacij na: {0}", + "pushoverDesc1": "Prioriteta nujnosti (2) ima privzeto nastavitev 30 sekund časa med ponovni poskusi in poteče po 1 uri.", + "pushoverDesc2": "Če želite pošiljati obvestila na različne naprave izpolnite polje 'Naprava'.", + "SMS Type": "Vrsta SMS-a", + "octopushTypePremium": "Premium (hitro - priporočljivo za opozarjanje)", + "octopushTypeLowCost": "Cenovno ugodno (počasno - včasih jih blokira operater)", + "checkPrice": "preveri {0} cene:", + "apiCredentials": "API poverilnice", + "octopushLegacyHint": "Uporabljate legacy verzijo Octopush-a (2011-2020) ali novo verzijo?", + "Check octopush prices": "Preveri octopush cene {0}.", + "octopushPhoneNumber": "Telefonska številka (npr.: +386031234567) ", + "octopushSMSSender": "Ime SMS pošiljatelja: 3-11 alfanumeričnih znakov in presledki (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Device ID", + "Apprise URL": "Apprise URL", + "Example:": "Primer: {0}", + "Read more:": "Preberi več: {0}", + "Status:": "Status: {0}", + "Read more": "Preberi več", + "appriseInstalled": "Apprise je nameščen.", + "appriseNotInstalled": "Apprise ni nameščen. {0}", + "Access Token": "Žeton za dostop", + "Channel access token": "Žeton za dostop do kanala", + "Line Developers Console": "Line Developers Console", + "lineDevConsoleTo": "Line Developers Console - {0}", + "Basic Settings": "Osnovne nastavitve", + "User ID": "User ID", + "Messaging API": "Messaging API", + "wayToGetLineChannelToken": "Prvo odpri {0}, ustvarite ponudnika in kanal (Messaging API), potem lahko žeton za dostop do kanala in ID uporabnika dobite iz zgoraj navedenih elementov menija.", + "Icon URL": "URL ikone", + "aboutIconURL": "V razdelku \"URL ikone\" lahko zagotovite povezavo do slike, ki bo nadomestila privzeto sliko profila. Ne bo uporabljena, če je nastavljena ikona Emoji.", + "aboutMattermostChannelName": "V razdelku \"URL ikone\" lahko zagotovite povezavo do slike, ki bo nadomestila privzeto sliko profila. Ne bo uporabljena, če je nastavljena ikona Emoji", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - poceni, vendar počasen in pogosto preobremenjen. Omejeno samo na poljske prejemnike.", + "promosmsTypeFlash": "SMS FLASH - sporočilo se samodejno prikaže v napravi prejemnika. Omejeno samo na poljske prejemnike.", + "promosmsTypeFull": "SMS FULL - Premium raven SMS, Uporabite lahko svoje ime pošiljatelja (najprej morate registrirati ime). Zanesljivo za opozorila.", + "promosmsTypeSpeed": "SMS SPEED - Najvišja prednost v sistemu. Zelo hitro in zanesljivo, vendar drago (približno dvakratnik cene SMS FULL)..", + "promosmsPhoneNumber": "Telefonska številka (za poljskega prejemnika Lahko preskočite področne oznake", + "promosmsSMSSender": "Ime pošiljatelja SMS : vnaprej registrirano ime ali eno od privzetih: SMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + "matrixHomeserverURL": "Homeserver URL (z http(s):// in vrata po želji)", + "Internal Room Id": "Interni ID sobe", + "matrixDesc1": "Notranji ID sobe lahko poiščete v naprednem razdelku nastavitev sobe v odjemalcu Matrix. Izgledati mora kot !QMdRCpUIfLwsfjxye6:home.server", + "matrixDesc2": "Zelo priporočljivo je, da ustvarite novega uporabnika in ne uporabljate svojega žetona za dostop uporabnika Matrix, saj bo omogočil popoln dostop do vašega računa in vseh sob, ki ste se jim pridružili. Namesto tega ustvarite novega uporabnika in ga povabite le v sobo, v kateri želite prejemati obvestila. Token dostopa lahko dobite tako, da zaženete {0}", + "Method": "Metoda", + "Body": "Telo", + "Headers": "Glave", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "Glave zahtevka niso veljavni JSON: ", + "BodyInvalidFormat": "Telo zahteve ni veljaven JSON: ", + "Monitor History": "Zgodovina", + "clearDataOlderThan": "Ohrani zgodovino {0} dni.", + "PasswordsDoNotMatch": "Gesli se ne ujemata.", + "records": "vnosi", + "One record": "En vnos", + "steamApiKeyDescription": "Za spremljanje igralnega strežnika Steam potrebujete ključ spletnega vmesnika Steam. Ključ API lahko registrirate tukaj: ", + "Current User": "Trenuten uporabnik", + "recent": "Nedavno", + "Done": "Zaključi", + "Info": "Info", + "Security": "Varnost", + "Steam API Key": "Steam API Key", + "Shrink Database": "Stisni bazo", + "Pick a RR-Type...": "Izberi RR tip...", + "Pick Accepted Status Codes...": "Izbiranje sprejetih kod stanja...", + "Default": "Privzeto", + "HTTP Options": "HTTP možnosti", + "Create Incident": "Ustvari incident", + "Title": "Naslov", + "Content": "Vsebina", + "Style": "Stil", + "info": "info", + "warning": "opozorilo", + "danger": "nevarnost", + "primary": "primarno", + "light": "svetlo", + "dark": "temno", + "Post": "Objavi", + "Please input title and content": "Vnesi naslov in vsebino", + "Created": "Ustvarjeno", + "Last Updated": "Nazadnje posodobljeno", + "Unpin": "Odpni", + "Switch to Light Theme": "Preklopi na svetlo temo", + "Switch to Dark Theme": "Preklopi na temno temo", + "Show Tags": "Prikaži značke", + "Hide Tags": "Skrij značke", + "Description": "Opis", + "No monitors available.": "Nobenega monitorja ni na voljo.", + "Add one": "Dodaj enega", + "No Monitors": "Ni monitorjev", + "Untitled Group": "Skupina brez imena", + "Services": "Storitve", + "Discard": "zavrzi", + "Cancel": "Prekliči", + "Powered by": "Powered by", + "shrinkDatabaseDescription": "Sprožitev podatkovne zbirke VACUUM za SQLite. Če je vaša zbirka podatkov ustvarjena po različici 1.10.0, je funkcija AUTO_VACUUM že omogočena in ta ukrep ni potreben.", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API uporabniško ime (vključno z webapi_ prefix)", + "serwersmsAPIPassword": "API geslo", + "serwersmsPhoneNumber": "Telefonska številka", + "serwersmsSenderName": "Ime SMS pošiljatelja (registrirani prek portala za stranke)", + "stackfield": "Stackfield" +} diff --git a/src/lang/sr-latn.json b/src/lang/sr-latn.json new file mode 100644 index 000000000..95bf03f98 --- /dev/null +++ b/src/lang/sr-latn.json @@ -0,0 +1,204 @@ +{ + "languageName": "Srpski", + "checkEverySecond": "Proveri svakih {0} sekundi.", + "retriesDescription": "Maksimum pokušaja pre nego što se servis obeleži kao neaktivan i pošalje se obaveštenje.", + "ignoreTLSError": "Ignoriši TLS/SSL greške za HTTPS veb stranice.", + "upsideDownModeDescription": "Obrnite status. Ako je servis dostupan, onda je obeležen kao neaktivan.", + "maxRedirectDescription": "Maksimani broj preusmerenja da se prate. Postavite na 0 da bi se isključila preusmerenja.", + "acceptedStatusCodesDescription": "Odaberite statusne kodove koji se smatraju uspešnim odgovorom.", + "passwordNotMatchMsg": "Ponovljena lozinka se ne poklapa.", + "notificationDescription": "Molim Vas postavite obaveštenje za masmatrače da bise aktivirali.", + "keywordDescription": "Pretraži ključnu reč u čistom html ili JSON odgovoru sa osetljivim velikim i malim slovima", + "pauseDashboardHome": "Pauziraj", + "deleteMonitorMsg": "Da li ste sigurni da želite da obrišete ovog posmatrača?", + "deleteNotificationMsg": "Da li ste sigurni d aželite da uklonite ovo obaveštenje za sve posmatrače?", + "resolverserverDescription": "Cloudflare je podrazumevani server. Možete promeniti server za raszrešavanje u bilo kom trenutku.", + "rrtypeDescription": "Odaberite RR-Type koji želite da posmatrate", + "pauseMonitorMsg": "Da li ste sigurni da želite da pauzirate?", + "Settings": "Podešavanja", + "Dashboard": "Komandna tabla", + "New Update": "Nova verzija", + "Language": "Jezik", + "Appearance": "Izgled", + "Theme": "Tema", + "General": "Opšte", + "Version": "Verzija", + "Check Update On GitHub": "Proverite novu verziju na GitHub-u", + "List": "Lista", + "Add": "Dodaj", + "Add New Monitor": "Dodaj novog posmatrača", + "Quick Stats": "Brze statistike", + "Up": "Aktivno", + "Down": "Neaktivno", + "Pending": "Nerešeno", + "Unknown": "Nepoznato", + "Pause": "Pauziraj", + "Name": "Ime", + "Status": "Status", + "DateTime": "Datum i vreme", + "Message": "Poruka", + "No important events": "Nema bitnih događaja", + "Resume": "Nastavi", + "Edit": "Izmeni", + "Delete": "Ukloni", + "Current": "Trenutno", + "Uptime": "Vreme rada", + "Cert Exp.": "Istek sert.", + "day": "dan | dana", + "-day": "-dana", + "hour": "sat", + "-hour": "-sata", + "Response": "Odgovor", + "Ping": "Ping", + "Monitor Type": "Tip posmatrača", + "Keyword": "Ključna reč", + "Friendly Name": "Prijateljsko ime", + "URL": "URL", + "Hostname": "Hostname", + "Port": "Port", + "Heartbeat Interval": "Interval otkucaja srca", + "Retries": "Pokušaji", + "Advanced": "Napredno", + "Upside Down Mode": "Naopak mod", + "Max. Redirects": "Maks. preusmerenja", + "Accepted Status Codes": "Prihvaćeni statusni kodovi", + "Save": "Sačuvaj", + "Notifications": "Obaveštenja", + "Not available, please setup.": "Nije dostupno, molim Vas podesite.", + "Setup Notification": "Postavi obaveštenje", + "Light": "Svetlo", + "Dark": "Tamno", + "Auto": "Automatsko", + "Theme - Heartbeat Bar": "Tema - Traka otkucaja srca", + "Normal": "Normalno", + "Bottom": "Dole", + "None": "Isključeno", + "Timezone": "Vremenska zona", + "Search Engine Visibility": "Vidljivost pretraživačima", + "Allow indexing": "Dozvoli indeksiranje", + "Discourage search engines from indexing site": "Odvraćajte pretraživače od indeksiranja sajta", + "Change Password": "Promeni lozinku", + "Current Password": "Trenutna lozinka", + "New Password": "Nova lozinka", + "Repeat New Password": "Ponovi novu lozinku", + "Update Password": "Izmeni lozinku", + "Disable Auth": "Isključi autentifikaciju", + "Enable Auth": "Uključi autentifikaciju", + "disableauth.message1": "Da li ste sigurni da želite da isključite autentifikaciju?", + "disableauth.message2": "To je za one koji imaju dodatu autentifikaciju ispred Uptime Kuma kao na primer Cloudflare Access.", + "Please use this option carefully!": "Molim Vas koristite ovo sa pažnjom.", + "Logout": "Odloguj se", + "Leave": "Izađi", + "I understand, please disable": "Razumem, molim te isključi", + "Confirm": "Potvrdi", + "Yes": "Da", + "No": "Ne", + "Username": "Korisničko ime", + "Password": "Lozinka", + "Remember me": "Zapamti me", + "Login": "Uloguj se", + "No Monitors, please": "Bez posmatrača molim", + "add one": "dodaj jednog", + "Notification Type": "Tip obaveštenja", + "Email": "E-pošta", + "Test": "Test", + "Certificate Info": "Informacije sertifikata", + "Resolver Server": "Razrešivački server", + "Resource Record Type": "Tip zapisa resursa", + "Last Result": "Poslednji rezultat", + "Create your admin account": "Naprivi administratorski nalog", + "Repeat Password": "Ponovite lozinku", + "respTime": "Vreme odg. (ms)", + "notAvailableShort": "N/A", + "Create": "Create", + "clearEventsMsg": "Are you sure want to delete all events for this monitor?", + "clearHeartbeatsMsg": "Are you sure want to delete all heartbeats for this monitor?", + "confirmClearStatisticsMsg": "Are you sure want to delete ALL statistics?", + "Clear Data": "Clear Data", + "Events": "Events", + "Heartbeats": "Heartbeats", + "Auto Get": "Auto Get", + "enableDefaultNotificationDescription": "For every new monitor this notification will be enabled by default. You can still disable the notification separately for each monitor.", + "Default enabled": "Default enabled", + "Also apply to existing monitors": "Also apply to existing monitors", + "Export": "Export", + "Import": "Import", + "backupDescription": "You can backup all monitors and all notifications into a JSON file.", + "backupDescription2": "PS: History and event data is not included.", + "backupDescription3": "Sensitive data such as notification tokens is included in the export file, please keep it carefully.", + "alertNoFile": "Please select a file to import.", + "alertWrongFileType": "Please select a JSON file.", + "twoFAVerifyLabel": "Please type in your token to verify that 2FA is working", + "tokenValidSettingsMsg": "Token is valid! You can now save the 2FA settings.", + "confirmEnableTwoFAMsg": "Are you sure you want to enable 2FA?", + "confirmDisableTwoFAMsg": "Are you sure you want to disable 2FA?", + "Apply on all existing monitors": "Apply on all existing monitors", + "Verify Token": "Verify Token", + "Setup 2FA": "Setup 2FA", + "Enable 2FA": "Enable 2FA", + "Disable 2FA": "Disable 2FA", + "2FA Settings": "2FA Settings", + "Two Factor Authentication": "Two Factor Authentication", + "Active": "Active", + "Inactive": "Inactive", + "Token": "Token", + "Show URI": "Show URI", + "Clear all statistics": "Clear all Statistics", + "retryCheckEverySecond": "Retry every {0} seconds.", + "importHandleDescription": "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.", + "confirmImportMsg": "Are you sure to import the backup? Please make sure you've selected the right import option.", + "Heartbeat Retry Interval": "Heartbeat Retry Interval", + "Import Backup": "Import Backup", + "Export Backup": "Export Backup", + "Skip existing": "Skip existing", + "Overwrite": "Overwrite", + "Options": "Options", + "Keep both": "Keep both", + "Tags": "Tags", + "Add New below or Select...": "Add New below or Select...", + "Tag with this name already exist.": "Tag with this name already exist.", + "Tag with this value already exist.": "Tag with this value already exist.", + "color": "color", + "value (optional)": "value (optional)", + "Gray": "Gray", + "Red": "Red", + "Orange": "Orange", + "Green": "Green", + "Blue": "Blue", + "Indigo": "Indigo", + "Purple": "Purple", + "Pink": "Pink", + "Search...": "Search...", + "Avg. Ping": "Avg. Ping", + "Avg. Response": "Avg. Response", + "Entry Page": "Entry Page", + "statusPageNothing": "Nothing here, please add a group or a monitor.", + "No Services": "No Services", + "All Systems Operational": "All Systems Operational", + "Partially Degraded Service": "Partially Degraded Service", + "Degraded Service": "Degraded Service", + "Add Group": "Add Group", + "Add a monitor": "Add a monitor", + "Edit Status Page": "Edit Status Page", + "Go to Dashboard": "Go to Dashboard", + "Status Page": "Status Page", + "Status Pages": "Status Pages", + "telegram": "Telegram", + "webhook": "Webhook", + "smtp": "Email (SMTP)", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Support 50+ Notification services)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost" +} diff --git a/src/lang/sr.json b/src/lang/sr.json new file mode 100644 index 000000000..25f69adde --- /dev/null +++ b/src/lang/sr.json @@ -0,0 +1,204 @@ +{ + "languageName": "Српски", + "checkEverySecond": "Провери сваких {0} секунди.", + "retriesDescription": "Максимум покушаја пре него што се сервис обележи као неактиван и пошаље се обавештење.", + "ignoreTLSError": "Игнориши TLS/SSL грешке за HTTPS веб странице.", + "upsideDownModeDescription": "Обрните статус. Ако је сервис доступан, онда је обележен као неактиван.", + "maxRedirectDescription": "Максимани број преусмерења да се прате. Поставите на 0 да би се искључила преусмерења.", + "acceptedStatusCodesDescription": "Одаберите статусне кодове који се сматрају успешним одговором.", + "passwordNotMatchMsg": "Поновљена лозинка се не поклапа.", + "notificationDescription": "Молим Вас поставите обавештење за масматраче да бисе активирали.", + "keywordDescription": "Претражи кључну реч у чистом html или JSON одговору са осетљивим великим и малим словима", + "pauseDashboardHome": "Паузирај", + "deleteMonitorMsg": "Да ли сте сигурни да желите да обришете овог посматрача?", + "deleteNotificationMsg": "Да ли сте сигурни д ажелите да уклоните ово обавештење за све посматраче?", + "resolverserverDescription": "Cloudflare је подразумевани сервер. Можете променити сервер за расзрешавање у било ком тренутку.", + "rrtypeDescription": "Одаберите RR-Type који желите да посматрате", + "pauseMonitorMsg": "Да ли сте сигурни да желите да паузирате?", + "Settings": "Подешавања", + "Dashboard": "Командна табла", + "New Update": "Нова верзија", + "Language": "Језик", + "Appearance": "Изглед", + "Theme": "Тема", + "General": "Опште", + "Version": "Верзија", + "Check Update On GitHub": "Проверите нову верзију на GitHub-у", + "List": "Листа", + "Add": "Додај", + "Add New Monitor": "Додај новог посматрача", + "Quick Stats": "Брзе статистике", + "Up": "Активно", + "Down": "Неактивно", + "Pending": "Нерешено", + "Unknown": "Непознато", + "Pause": "Паузирај", + "Name": "Име", + "Status": "Статус", + "DateTime": "Датум и време", + "Message": "Порука", + "No important events": "Нема битних догађаја", + "Resume": "Настави", + "Edit": "Измени", + "Delete": "Уклони", + "Current": "Тренутно", + "Uptime": "Време рада", + "Cert Exp.": "Истек серт.", + "day": "дан | дана", + "-day": "-дана", + "hour": "сат", + "-hour": "-сата", + "Response": "Одговор", + "Ping": "Пинг", + "Monitor Type": "Тип посматрача", + "Keyword": "Кључна реч", + "Friendly Name": "Пријатељско име", + "URL": "URL", + "Hostname": "Hostname", + "Port": "Порт", + "Heartbeat Interval": "Интервал откуцаја срца", + "Retries": "Покушаји", + "Advanced": "Напредно", + "Upside Down Mode": "Наопак мод", + "Max. Redirects": "Макс. преусмерења", + "Accepted Status Codes": "Прихваћени статусни кодови", + "Save": "Сачувај", + "Notifications": "Обавештења", + "Not available, please setup.": "Није доступно, молим Вас подесите.", + "Setup Notification": "Постави обавештење", + "Light": "Светло", + "Dark": "Тамно", + "Auto": "Аутоматско", + "Theme - Heartbeat Bar": "Тема - Трака откуцаја срца", + "Normal": "Нормално", + "Bottom": "Доле", + "None": "Искључено", + "Timezone": "Временска зона", + "Search Engine Visibility": "Видљивост претраживачима", + "Allow indexing": "Дозволи индексирање", + "Discourage search engines from indexing site": "Одвраћајте претраживаче од индексирања сајта", + "Change Password": "Промени лозинку", + "Current Password": "Тренутна лозинка", + "New Password": "Нова лозинка", + "Repeat New Password": "Понови нову лозинку", + "Update Password": "Измени лозинку", + "Disable Auth": "Искључи аутентификацију", + "Enable Auth": "Укључи аутентификацију", + "disableauth.message1": "Да ли сте сигурни да желите да искључите аутентификацију?", + "disableauth.message2": "То је за оне који имају додату аутентификацију испред Uptime Kuma као на пример Cloudflare Access.", + "Please use this option carefully!": "Молим Вас користите ово са пажњом.", + "Logout": "Одлогуј се", + "Leave": "Изађи", + "I understand, please disable": "Разумем, молим те искључи", + "Confirm": "Потврди", + "Yes": "Да", + "No": "Не", + "Username": "Корисничко име", + "Password": "Лозинка", + "Remember me": "Запамти ме", + "Login": "Улогуј се", + "No Monitors, please": "Без посматрача молим", + "add one": "додај једног", + "Notification Type": "Тип обавештења", + "Email": "Е-пошта", + "Test": "Тест", + "Certificate Info": "Информације сертификата", + "Resolver Server": "Разрешивачки сервер", + "Resource Record Type": "Тип записа ресурса", + "Last Result": "Последњи резултат", + "Create your admin account": "Наприви администраторски налог", + "Repeat Password": "Поновите лозинку", + "respTime": "Време одг. (мс)", + "notAvailableShort": "N/A", + "Create": "Create", + "clearEventsMsg": "Are you sure want to delete all events for this monitor?", + "clearHeartbeatsMsg": "Are you sure want to delete all heartbeats for this monitor?", + "confirmClearStatisticsMsg": "Are you sure want to delete ALL statistics?", + "Clear Data": "Clear Data", + "Events": "Events", + "Heartbeats": "Heartbeats", + "Auto Get": "Auto Get", + "enableDefaultNotificationDescription": "For every new monitor this notification will be enabled by default. You can still disable the notification separately for each monitor.", + "Default enabled": "Default enabled", + "Also apply to existing monitors": "Also apply to existing monitors", + "Export": "Export", + "Import": "Import", + "backupDescription": "You can backup all monitors and all notifications into a JSON file.", + "backupDescription2": "PS: History and event data is not included.", + "backupDescription3": "Sensitive data such as notification tokens is included in the export file, please keep it carefully.", + "alertNoFile": "Please select a file to import.", + "alertWrongFileType": "Please select a JSON file.", + "twoFAVerifyLabel": "Please type in your token to verify that 2FA is working", + "tokenValidSettingsMsg": "Token is valid! You can now save the 2FA settings.", + "confirmEnableTwoFAMsg": "Are you sure you want to enable 2FA?", + "confirmDisableTwoFAMsg": "Are you sure you want to disable 2FA?", + "Apply on all existing monitors": "Apply on all existing monitors", + "Verify Token": "Verify Token", + "Setup 2FA": "Setup 2FA", + "Enable 2FA": "Enable 2FA", + "Disable 2FA": "Disable 2FA", + "2FA Settings": "2FA Settings", + "Two Factor Authentication": "Two Factor Authentication", + "Active": "Active", + "Inactive": "Inactive", + "Token": "Token", + "Show URI": "Show URI", + "Clear all statistics": "Clear all Statistics", + "retryCheckEverySecond": "Retry every {0} seconds.", + "importHandleDescription": "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.", + "confirmImportMsg": "Are you sure to import the backup? Please make sure you've selected the right import option.", + "Heartbeat Retry Interval": "Heartbeat Retry Interval", + "Import Backup": "Import Backup", + "Export Backup": "Export Backup", + "Skip existing": "Skip existing", + "Overwrite": "Overwrite", + "Options": "Options", + "Keep both": "Keep both", + "Tags": "Tags", + "Add New below or Select...": "Add New below or Select...", + "Tag with this name already exist.": "Tag with this name already exist.", + "Tag with this value already exist.": "Tag with this value already exist.", + "color": "color", + "value (optional)": "value (optional)", + "Gray": "Gray", + "Red": "Red", + "Orange": "Orange", + "Green": "Green", + "Blue": "Blue", + "Indigo": "Indigo", + "Purple": "Purple", + "Pink": "Pink", + "Search...": "Search...", + "Avg. Ping": "Avg. Ping", + "Avg. Response": "Avg. Response", + "Entry Page": "Entry Page", + "statusPageNothing": "Nothing here, please add a group or a monitor.", + "No Services": "No Services", + "All Systems Operational": "All Systems Operational", + "Partially Degraded Service": "Partially Degraded Service", + "Degraded Service": "Degraded Service", + "Add Group": "Add Group", + "Add a monitor": "Add a monitor", + "Edit Status Page": "Edit Status Page", + "Go to Dashboard": "Go to Dashboard", + "Status Page": "Status Page", + "Status Pages": "Status Pages", + "telegram": "Telegram", + "webhook": "Webhook", + "smtp": "Email (SMTP)", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Support 50+ Notification services)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost" +} diff --git a/src/lang/sv-SE.json b/src/lang/sv-SE.json new file mode 100644 index 000000000..233a91f21 --- /dev/null +++ b/src/lang/sv-SE.json @@ -0,0 +1,110 @@ +{ + "languageName": "Svenska", + "checkEverySecond": "Uppdatera var {0} sekund.", + "retriesDescription": "Max antal försök innan tjänsten markeras som nere och en notis skickas", + "ignoreTLSError": "Ignorera TLS/SSL-fel för webbsidor med HTTPS", + "upsideDownModeDescription": "Vänd upp och ner på statusen. Om tjänsten är nåbar visas den som NERE.", + "maxRedirectDescription": "Max antal omdirigeringar att följa. Välj 0 för att avaktivera omdirigeringar.", + "acceptedStatusCodesDescription": "Välj statuskoder som räknas som lyckade.", + "passwordNotMatchMsg": "Det bekräftade lösenordet stämmer ej överens.", + "notificationDescription": "Vänligen lägg till en notistjänst till dina övervakare.", + "keywordDescription": "Sök efter nyckelord i ren HTML eller JSON-svar. Sökningen är skiftkänslig.", + "pauseDashboardHome": "Pausa", + "deleteMonitorMsg": "Är du säker på att du vill ta bort den här övervakningen?", + "deleteNotificationMsg": "Är du säker på att du vill ta bort den här notisen för alla övervakare?", + "resolverserverDescription": "Cloudflare är den förvalda servern. Du kan byta resolver när som helst.", + "rrtypeDescription": "Välj den RR-typ du vill övervaka", + "pauseMonitorMsg": "Är du säker på att du vill pausa?", + "Settings": "Inställningar", + "Dashboard": "Infopanel", + "New Update": "Ny uppdatering", + "Language": "Språk", + "Appearance": "Utseende", + "Theme": "Tema", + "General": "Allmänt", + "Version": "Version", + "Check Update On GitHub": "Sök efter uppdatering på GitHub", + "List": "Lista", + "Add": "Lägg till", + "Add New Monitor": "Lägg Till Ny Övervakare", + "Quick Stats": "Snabbstatistik", + "Up": "Uppe", + "Down": "Nere", + "Pending": "Pågående", + "Unknown": "Okänt", + "Pause": "Pausa", + "Name": "Namn", + "Status": "Status", + "DateTime": "Datum & Tid", + "Message": "Meddelande", + "No important events": "Inga viktiga händelser", + "Resume": "Återuppta", + "Edit": "Redigera", + "Delete": "Ta bort", + "Current": "Nuvarande", + "Uptime": "Drifttid", + "Cert Exp.": "Certifikat utgår", + "day": "dag | dagar", + "-day": " dagar", + "hour": "timme", + "-hour": " timmar", + "Response": "Svar", + "Ping": "Ping", + "Monitor Type": "Övervakningstyp", + "Keyword": "Nyckelord", + "Friendly Name": "Namn", + "URL": "URL", + "Hostname": "Värdnamn", + "Port": "Port", + "Heartbeat Interval": "Hjärtslagsintervall", + "Retries": "Försök", + "Advanced": "Avancerat", + "Upside Down Mode": "Upp och ner-läge", + "Max. Redirects": "Max antal omdirigeringar", + "Accepted Status Codes": "Tillåtna statuskoder", + "Save": "Spara", + "Notifications": "Notiser", + "Not available, please setup.": "Ej tillgänglig, vänligen konfigurera.", + "Setup Notification": "Ny Notistjänst", + "Light": "Ljust", + "Dark": "Mörkt", + "Auto": "Automatiskt", + "Theme - Heartbeat Bar": "Tema - Heartbeat Bar", + "Normal": "Normal", + "Bottom": "Botten", + "None": "Tomt", + "Timezone": "Tidszon", + "Search Engine Visibility": "Synlighet på Sökmotorer", + "Allow indexing": "Tillåt indexering", + "Discourage search engines from indexing site": "Hindra sökmotorer från att indexera sidan", + "Change Password": "Byt Lösenord", + "Current Password": "Nuvarande Lösenord", + "New Password": "Nytt Lösenord", + "Repeat New Password": "Upprepa Nytt Lösenord", + "Update Password": "Uppdatera Lösenord", + "Disable Auth": "Avaktivera Autentisering", + "Enable Auth": "Aktivera Autentisering", + "Logout": "Logga ut", + "Leave": "Lämna", + "I understand, please disable": "Jag förstår, vänligen avaktivera", + "Confirm": "Bekräfta", + "Yes": "Ja", + "No": "Nej", + "Username": "Användarnamn", + "Password": "Lösenord", + "Remember me": "Kom ihåg mig", + "Login": "Logga in", + "No Monitors, please": "Inga Övervakare, tack", + "add one": "lägg till en", + "Notification Type": "Notistyp", + "Email": "Email", + "Test": "Test", + "Certificate Info": "Certifikatsinfo", + "Resolver Server": "Resolverserver", + "Resource Record Type": "RR-typ", + "Last Result": "Senaste resultat", + "Create your admin account": "Skapa ditt administratörskonto", + "Repeat Password": "Upprepa Lösenord", + "respTime": "Svarstid (ms)", + "notAvailableShort": "Ej Tillg." +} diff --git a/src/lang/th-TH.json b/src/lang/th-TH.json new file mode 100644 index 000000000..7ad132f58 --- /dev/null +++ b/src/lang/th-TH.json @@ -0,0 +1,580 @@ +{ + "languageName": "ไทย", + "checkEverySecond": "ตรวจสอบทุก {0} วินาที", + "retryCheckEverySecond": "ลองใหม่ทุก {0} วินาที", + "retriesDescription": "จำนวนครั้งสูงสุดที่จะลองก่อนบริการถูกระบุว่าไม่สามารถใช้งานได้และส่งการแจ้งเตือน", + "ignoreTLSError": "ไม่สนใจข้อผิดพลาด TLS/SSL สำหรับเว็บไซต์ HTTPS", + "upsideDownModeDescription": "กลับด้านสถานะ เช่น ถ้าบริการสามารถใช้งานได้จะถูกเปลี่ยนเป็นใช้งานไม่ได้", + "maxRedirectDescription": "จำนวนครั้งสูงสุดที่จะเปลี่ยนเส้นทาง, ตั้งเป็น 0 เพื่อปิดการเปลี่ยนเส้นทาง", + "acceptedStatusCodesDescription": "เลือกรหัสสถานะที่ถือว่าการตอบกลับสำเร็จ", + "passwordNotMatchMsg": "รหัสผ่านไม่ตรงกัน", + "notificationDescription": "การแจ้งเตือนต้องกำหนดให้มอนิเตอร์เพื่อให้สามารถใช้งานได้", + "keywordDescription": "ค้นหาคำสำคัญใน HTML หรือ JSON ของการตอบกลับ, คำสำคัญต้องคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่", + "pauseDashboardHome": "หยุดชั่วคราว", + "deleteMonitorMsg": "คุณแน่ใจหรือไม่ที่จะลบมอนิเตอร์?", + "deleteNotificationMsg": "คุณแน่ใจหรือไม่ที่จะลบการแจ้งเตือนสำหรับมอนิเตอร์ทั้งหมด?", + "resolverserverDescription": "Cloudflare เป็นเซิร์ฟเวอร์ค้นหาเริ่มต้น, คุณสามารถเปลี่ยนเซิร์ฟเวอร์ได้ตลอดเวลา", + "rrtypeDescription": "เลือกประเภท DNS Record ที่คุณต้องการจะมอนิเตอร์", + "pauseMonitorMsg": "คุณแน่ใจหรือไม่ที่จะหยุดมอนิเตอร์ชั่วคราว?", + "enableDefaultNotificationDescription": "การแจ้งเตือนนี้จะถูกเปิดโดยค่าเริ่มต้นสำหรับมอนิเตอร์ใหม่, คุณสามารถปิดการแจ้งเตือนสำหรับแต่ละมอนิเตอร์ได้", + "clearEventsMsg": "คุณแน่ใจหรือไม่ที่จะลบเหตุการณ์ทั้งหมดสำหรับมอนิเตอร์นี้?", + "clearHeartbeatsMsg": "คุณแน่ใจหรือไม่ที่จะลบประวัติการตรวจสอบทั้งหมดสำหรับมอนิเตอร์นี้?", + "confirmClearStatisticsMsg": "คุณแน่ใจหรือไม่ที่จะลบสถิติทั้งหมด?", + "importHandleDescription": "เลือก \"ข้ามรายการที่มีอยู่แล้ว\" ถ้าคุณต้องการข้ามทุกมอนิเตอร์หรือการแจ้งเตือนที่มีชื่อซ้ำกัน, \"เขียนทับ\" จะลบทุกมอนิเตอร์หรือการแจ้งเตือนที่มีชื่อซ้ำกัน", + "confirmImportMsg": "คุณแน่ใจหรือไม่ที่จะนำเข้าข้อมูลสำรอง, กรุณาตรวจสอบว่าคุณเลือกข้อมูลที่ถูกต้อง", + "twoFAVerifyLabel": "โปรดกรอกกุญแจ 2FA ของคุณเพื่อยืนยัน:", + "tokenValidSettingsMsg": "กุญแจถูกต้อง, ตอนนี้คุณสามารถบันทึกการตั้งค่า 2FA ของคุณได้แล้ว", + "confirmEnableTwoFAMsg": "คุณแน่ใจหรือไม่ที่จะเปิดใช้งาน 2FA?", + "confirmDisableTwoFAMsg": "คุณแน่ใจหรือไม่ที่จะปิดใช้งาน 2FA?", + "Settings": "การตั้งค่า", + "Dashboard": "แผงควบคุม", + "New Update": "อัพเดทใหม่", + "Language": "ภาษา", + "Appearance": "รูปร่าง", + "Theme": "หน้าตา", + "General": "ทั่วไป", + "Primary Base URL": "URL หลัก", + "Version": "เวอร์ชั่น", + "Check Update On GitHub": "ตรวจสอบการอัปเดตบน GitHub", + "List": "รายการ", + "Add": "เพิ่ม", + "Add New Monitor": "เพิ่มมอนิเตอร์ใหม่", + "Quick Stats": "สถิติด่วน", + "Up": "ใช้งานได้", + "Down": "ไม่สามารถใช้งานได้", + "Pending": "รอดำเนินการ", + "Unknown": "ไม่ทราบ", + "Pause": "หยุดชั่วคราว", + "Name": "ชื่อ", + "Status": "สถานะ", + "DateTime": "วันที่และเวลา", + "Message": "ข้อความ", + "No important events": "ไม่มีเหตการณ์ที่สำคัญ", + "Resume": "ดำเนินการต่อ", + "Edit": "แก้ไข", + "Delete": "ลบ", + "Current": "ปัจจุบัน", + "Uptime": "เวลาที่ใช้งานได้", + "Cert Exp.": "วันหมดอายุใบรับรอง", + "days": "วัน", + "day": "วัน", + "-day": "-วัน", + "hour": "ชั่วโมง", + "-hour": "-ชั่วโมง", + "Response": "การตอบสนอง", + "Ping": "การตอบสนอง", + "Monitor Type": "ประเภทมอนิเตอร์", + "Keyword": "คำสำคัญ", + "Friendly Name": "ชื่อที่เป็นมิตร", + "URL": "URL", + "Hostname": "ชื่อโฮสต์", + "Port": "พอร์ต", + "Heartbeat Interval": "ระยะเวลาระหว่างการทดสอบ", + "Retries": "จำนวนครั้งที่จะลองใหม่", + "Heartbeat Retry Interval": "ระยะห่างระหว่างการทดสอบใหม่หลังจากไม่สำเร็จ", + "Advanced": "ขั้นสูง", + "Upside Down Mode": "โหมดกลับด้าน", + "Max. Redirects": "จำนวนการเปลี่ยนเส้นทางสูงสุด", + "Accepted Status Codes": "รหัสสถานะที่ยอมรับ", + "Push URL": "URL เป้าหมาย", + "needPushEvery": "คุณควรเรียก URL นี้ทุก {0} วินาที", + "pushOptionalParams": "ตัวแปรเสริม: {0}", + "Save": "บันทึก", + "Notifications": "การแจ้งเตือน", + "Not available, please setup.": "ไม่พร้อมใช้งาน, กรุณาตั้งค่า", + "Setup Notification": "ตั้งค่าการแจ้งเตือน", + "Light": "สว่าง", + "Dark": "มืด", + "Auto": "อัตโนมัติ", + "Theme - Heartbeat Bar": "หน้าตา - แถบการตอบสนอง", + "Normal": "ปกติ", + "Bottom": "ด้านล่าง", + "None": "ไม่มี", + "Timezone": "เขตเวลา", + "Search Engine Visibility": "การมองเห็นของเครื่องมือค้นหา", + "Allow indexing": "อนุญาตให้สร้างดัชนี", + "Discourage search engines from indexing site": "ปฏิเสธเครื่องมือค้นหาไม่ให้สร้างดัชนีของเว็บไซต์", + "Change Password": "เปลี่ยนรหัสผ่าน", + "Current Password": "รหัสผ่านปัจจุบัน", + "New Password": "รหัสผ่านใหม่", + "Repeat New Password": "ยืนยันรหัสผ่านใหม่", + "Update Password": "อัพเดทรหัสผ่าน", + "Disable Auth": "ปิดใช้งานการตรวจสอบสิทธิ์", + "Enable Auth": "เปิดใช้งานการตรวจสอบสิทธิ์", + "disableauth.message1": "คุณต้องการที่จะ ปิดใช้งานระบบรับรองความถูกต้องใช่หรือไม่?", + "disableauth.message2": "ระบบนี้ถูกออกแบบมาเพื่อการใช้งานกับระบบรับรองความถูกต้องของบุคคลที่สามเช่น Cloudflare Access, Authelia หรือวิธีการอื่น ๆ", + "Please use this option carefully!": "โปรดใช้ความระมัดระวังในการเลือกใช้งานระบบนี้ !", + "Logout": "ออกจากระบบ", + "Leave": "ออก", + "I understand, please disable": "ฉันเข้าใจแล้ว, กรุณาปิดการใช้งาน", + "Confirm": "ยืนยัน", + "Yes": "ใช่", + "No": "ไม่", + "Username": "ชื่อผู้ใช้", + "Password": "รหัสผ่าน", + "Remember me": "จดจำฉันไว้", + "Login": "เข้าสู่ระบบ", + "No Monitors, please": "ไม่มีมอนิเตอร์, กรุณา", + "add one": "สร้าง", + "Notification Type": "ประเภทการแจ้งเตือน", + "Email": "อีเมล", + "Test": "ทดสอบ", + "Certificate Info": "ข้อมูลใบรับรอง", + "Resolver Server": "เซิร์ฟเวอร์ที่ค้นหา", + "Resource Record Type": "ประเภท DNS Record", + "Last Result": "ผลล่าสุด", + "Create your admin account": "สร้างบัญชีผู้ดูแลระบบ", + "Repeat Password": "ยืนยันรหัสผ่าน", + "Import Backup": "นำเข้าข้อมูลสำรอง", + "Export Backup": "ส่งออกข้อมูลสำรอง", + "Export": "ส่งออก", + "Import": "นำเข้า", + "respTime": "ระยะเวลาการตอบสนอง (ms)", + "notAvailableShort": "ไม่สามารถใช้งานได้", + "Default enabled": "เปิดใช้งานโดยค่าเริ่มต้น", + "Apply on all existing monitors": "ใช้กับมอนิเตอร์ทั้งหมด", + "Create": "สร้าง", + "Clear Data": "ล้างข้อมูล", + "Events": "เหตุการณ์", + "Heartbeats": "ประวัติการตรวจสอบ", + "Auto Get": "ดึงอัตโนมัติ", + "backupDescription": "คุณสามารถสำรองข้อมูลการแจ้งเตือนและมอนิเตอร์ทั้งหมดไว้ได้ในไฟล์ JSON", + "backupDescription2": "หมายเหตุ : ประวัติและข้อมูลเหตการณ์จะไม่ถูกสำรอง", + "backupDescription3": "ข้อมูลที่ละเอียดอ่อนเช่นกุญแจการแจ้งเตือนจะรวมอยู่ในไฟล์ข้อมูลสำรอง, โปรดเก็บข้อมูลสำรองอย่างปลอดภัย", + "alertNoFile": "กรุณาเลือกไฟล์ที่จะใช้งาน", + "alertWrongFileType": "กรุณาเลือกไฟล์ที่เป็น JSON", + "Clear all statistics": "ล้างข้อมูลสถิติทั้งหมด", + "Skip existing": "ข้ามรายการที่มีอยู่แล้ว", + "Overwrite": "เขียนทับ", + "Options": "ตัวเลือก", + "Keep both": "เก็บทั้งสอง", + "Verify Token": "ยืนยันกุญแจ", + "Setup 2FA": "ติดตั้ง 2FA", + "Enable 2FA": "เปิดใช้งาน 2FA", + "Disable 2FA": "ปิดใช้งาน 2FA", + "2FA Settings": "ตั้งค่า 2FA", + "Two Factor Authentication": "การยืนยันตัวตนแบบสองขั้นตอน", + "Active": "ใช้งาน", + "Inactive": "ไม่ใช้งาน", + "Token": "กุญแจ", + "Show URI": "แสดง URI", + "Tags": "แท็ก", + "Add New below or Select...": "เพิ่มใหม่ด้านล่างหรือเลือก...", + "Tag with this name already exist.": "แท็กที่มีชื่อนี้มีอยู่แล้ว", + "Tag with this value already exist.": "แท็กที่มีข้อมูลนี้มีอยู่แล้ว", + "color": "สี", + "value (optional)": "ข้อมูล (ไม่จำเป็น)", + "Gray": "เทา", + "Red": "แดง", + "Orange": "ส้ม", + "Green": "เขียว", + "Blue": "น้ำเงิน", + "Indigo": "ม่วง", + "Purple": "ม่วง", + "Pink": "ชมพู", + "Search...": "ค้นหา...", + "Avg. Ping": "ค่า Ping เฉลี่ย", + "Avg. Response": "ค่า Response เฉลี่ย", + "Entry Page": "หน้าต้อนรับ", + "statusPageNothing": "ไม่มีอะไรตรงนี้ !, กรุณาเพิ่มกลุ่มหรือมอนิเตอร์", + "No Services": "ไม่มีบริการ", + "All Systems Operational": "บริการทั้งหมดทำงานได้ปกติ", + "Partially Degraded Service": "บริการมีปัญหาบางส่วน", + "Degraded Service": "บริการมีปัญหา", + "Add Group": "เพิ่มกลุ่ม", + "Add a monitor": "เพิ่มมอนิเตอร์", + "Edit Status Page": "แก้ไขหน้าสถานะ", + "Go to Dashboard": "ไปที่หน้าควบคุม", + "Status Page": "หน้าสถานะ", + "Status Pages": "หน้าสถานะ", + "defaultNotificationName": "การแจ้งเตือน {notification} ของฉัน ({number})", + "here": "ที่นี่", + "Required": "จำเป็น", + "telegram": "Telegram", + "Bot Token": "กุญแจของบอท", + "wayToGetTelegramToken": "คุณสามารถรับกุญแจได้จาก {0}.", + "Chat ID": "ไอดีแชท", + "supportTelegramChatID": "รองรับ แชทส่วนตัว, แชทกลุ่ม, ไอดีแชท", + "wayToGetTelegramChatID": "คุณสามารถรับ ID แชทของคุณได้โดยส่งข้อความไปยังบอทและไปที่ URL นี้เพื่อดู chat_id :", + "YOUR BOT TOKEN HERE": "กุญแจของบอทของคุณที่นี่", + "chatIDNotFound": "ไม่พบไอดีแชท, กรุณาส่งข้อความไปที่บอท", + "webhook": "Webhook", + "Post URL": "URL โพสต์", + "Content Type": "ประเภทเนื้อหา", + "webhookJsonDesc": "{0} ดีสำหรับเซิร์ฟเวอร์ HTTP สมัยใหม่เช่น Express.js", + "webhookFormDataDesc": "{multipart} ดีสำหรับ PHP, ข้อมูล JSON จะต้องถูกประมวลผลด้วย {decodeFunction}", + "smtp": "Email (SMTP)", + "secureOptionNone": "None / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "เพิกเฉยข้อผิดพลาด TLS", + "From Email": "จากอีเมล", + "emailCustomSubject": "หัวข้อที่กำหนดเอง", + "To Email": "ถึงอีเมล", + "smtpCC": "CC", + "smtpBCC": "BCC", + "discord": "Discord", + "Discord Webhook URL": "Discord Webhook URL", + "wayToGetDiscordURL": "คุณสามารถรับได้โดยการไปที่ Server Settings -> Integrations -> Create Webhook", + "Bot Display Name": "ชื่อบอท", + "Prefix Custom Message": "คำนำหน้าข้อความที่กำหนดเอง", + "Hello @everyone is...": "สวัสดี {'@'}everyone นี่...", + "teams": "Microsoft Teams", + "Webhook URL": "Webhook URL", + "wayToGetTeamsURL": "คุณสามารถเรียนรู้วิธีการสร้าง Webhook URL {0}", + "signal": "Signal", + "Number": "หมายเลข", + "Recipients": "ผู้รับ", + "needSignalAPI": "คุณต้องมี Signal Client ที่มี Rest API", + "wayToCheckSignalURL": "คุณสามารถตรวจสอบ URL นี้เพื่อดูวิธีตั้งค่า :", + "signalImportant": "สำคัญ: คุณไม่สามารถผสมกลุ่มและตัวเลขในผู้รับได้!", + "gotify": "Gotify", + "Application Token": "กุญแจของแอพพลิเคชั่น", + "Server URL": "Server URL", + "Priority": "ลำดับความสำคัญ", + "slack": "Slack", + "Icon Emoji": "Icon Emoji", + "Channel Name": "ชื่อห้อง", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "ข้อมูลเพิ่มเติมสำหรับ Webhooks : {0}", + "aboutChannelName": "ใส่ชื่อห้องใน {0} ในช่องชื่อห้องถ้าต้องการที่จะข้าม Webhook, เช่น: #ช่องอื่นๆ", + "aboutKumaURL": "ถ้าคุณไม่ใส่ข้อมูลในช่อง Uptime Kuma URL ค่าเริ่มต้นจะเป็นจะเป็น Uptime Kuma Github", + "emojiCheatSheet": "ตาราง Emoji : {0}", + "rocket.chat": "Rocket.Chat", + "pushover": "Pushover", + "pushy": "Pushy", + "PushByTechulus": "Push by Techulus", + "octopush": "Octopush", + "promosms": "PromoSMS", + "clicksendsms": "ClickSend SMS", + "lunasea": "LunaSea", + "apprise": "Apprise (รองรับการแจ้งเตือนมากกว่า 50 บริการ)", + "GoogleChat": "Google Chat (สำหรับ Google Workspace เท่านั้น)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "User Key": "กุญแจผู้ใช้งาน", + "Device": "อุปกรณ์", + "Message Title": "หัวข้อข้อความ", + "Notification Sound": "เสียงแจ้งเตือน", + "More info on:": "ข้อมูลเพิ่มเติม : {0}", + "pushoverDesc1": "ลำดับความสำคัญฉุกเฉิน (2) มีการหมดเวลาเริ่มต้น 30 วินาทีระหว่างการลองใหม่และจะหมดอายุหลังจาก 1 ชั่วโมง", + "pushoverDesc2": "ถ้าคุณต้องการจะส่งการแจ้งเตือนไปยังอุปกรณ์อื่นๆ สามารถกำหนดได้ที่ช่องอุปกรณ์", + "SMS Type": "ประเภท SMS", + "octopushTypePremium": "พรีเมี่ยม (เร็ว - แนะนำสำหรับการแจ้งเตือน)", + "octopushTypeLowCost": "ต้นทุนต่ำ (ช้า - บางครั้งจะถูกบล็อกโดยผู้ให้บริการ)", + "checkPrice": "ตรวจสอบราคาของ {0} :", + "apiCredentials": "ข้อมูลการตรวจสอบสิทธิ์ API", + "octopushLegacyHint": "คุณใช้เวอร์ชันดั้งเดิมของ Octopush (2011 - 2020) หรือเวอร์ชันใหม่หรือไม่?", + "Check octopush prices": "ตรวจสอบราคาของ Octopush {0}", + "octopushPhoneNumber": "หมายเลขโทรศัพท์ (รูปแบบสากล เช่น +33612345678) ", + "octopushSMSSender": "ชื่อผู้ส่ง SMS : ความยาว 3 - 11 ตัวอักษร, ตัวเลข และช่องว่าง (a-zA-Z0-9 )", + "LunaSea Device ID": "ไอดีอุปกรณ์ LunaSea", + "Apprise URL": "Apprise URL", + "Example:": "ตัวอย่าง : {0}", + "Read more:": "อ่านเพิ่มเติม : {0}", + "Status:": "สถานะ : {0}", + "Read more": "อ่านเพิ่มเติม", + "appriseInstalled": "Apprise ถูกติดตั้งแล้ว", + "appriseNotInstalled": "Apprise ยังไม่ถูกติดตั้ง {0}", + "Access Token": "กุญแจการเข้าถึง", + "Channel access token": "กุญแจการเข้าถึงของช่อง", + "Line Developers Console": "Line Developers Console", + "lineDevConsoleTo": "Line Developers Console - {0}", + "Basic Settings": "การตั้งค่าพื้นฐาน", + "User ID": "ไอดีผู้ใช้", + "Messaging API": "Messaging API", + "wayToGetLineChannelToken": "ขั้นแรกให้เข้า {0} สร้างผู้ให้บริการและช่องทาง (Messaging API) จากนั้นคุณจะได้รับกุญแจการเข้าถึงช่องและไอดีผู้ใช้จากรายการเมนูที่กล่าวถึงข้างต้น", + "Icon URL": "Icon URL", + "aboutIconURL": "คุณสามารถระบุลิงก์รูปภาพใน \"URL ไอคอน\" เพื่อแทนที่รูปภาพโปรไฟล์เริ่มต้น จะไม่ถูกใช้หากมีการตั้งค่า Icon Emoji", + "aboutMattermostChannelName": "คุณลบช่องเริ่มต้นที่ Webhook โพสต์ได้ด้วยการป้อนชื่อช่องลงในช่อง \"ชื่อช่อง\" ต้องเปิดใช้งานในการตั้งค่า Mattermost Webhook เช่น #ช่องอื่นๆ", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - ราคาถูก แต่ช้าและมักจะโอเวอร์โหลด จำกัดเฉพาะผู้รับในโปแลนด์", + "promosmsTypeFlash": "SMS FLASH - ข้อความจะแสดงบนอุปกรณ์ของผู้รับโดยอัตโนมัติ จำกัดเฉพาะผู้รับในโปแลนด์", + "promosmsTypeFull": "SMS FULL - SMS ระดับพรีเมียม คุณสามารถใช้ชื่อผู้ส่งของคุณได้ (คุณต้องลงทะเบียนชื่อก่อน) เชื่อถือได้สำหรับการแจ้งเตือน", + "promosmsTypeSpeed": "SMS SPEED - ลำดับความสำคัญสูงสุดในระบบ รวดเร็วและเชื่อถือได้ แต่มีค่าใช้จ่ายสูง (ประมาณสองเท่าของราคาเต็ม SMS)", + "promosmsPhoneNumber": "หมายเลขโทรศัพท์ (สำหรับผู้รับโปแลนด์ คุณสามารถข้ามรหัสพื้นที่ได้)", + "promosmsSMSSender": "ชื่อผู้ส่ง SMS : ชื่อที่ลงทะเบียนล่วงหน้าหรือหนึ่งในค่าเริ่มต้น: InfoSMS, ข้อมูล SMS, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + "matrixHomeserverURL": "URL ของโฮมเซิร์ฟเวอร์ (พร้อม http(s):// และพอร์ตเสริม)", + "Internal Room Id": "รหัสห้องภายใน", + "matrixDesc1": "คุณค้นหารหัสห้องภายในได้โดยดูในส่วนขั้นสูงของการตั้งค่าห้องในไคลเอ็นต์ Matrix มันควรจะมีลักษณะเช่น !PMdRCpsIfLwsfjIye6:kiznick.server.", + "matrixDesc2": "ขอแนะนำเป็นอย่างยิ่งให้คุณสร้างผู้ใช้ใหม่และอย่าใช้โทเค็นการเข้าถึงของผู้ใช้ Matrix ของคุณเอง เนื่องจากจะทำให้สามารถเข้าถึงบัญชีของคุณและห้องทั้งหมดที่คุณเข้าร่วม ให้สร้างผู้ใช้ใหม่และเชิญเฉพาะห้องที่คุณต้องการรับการแจ้งเตือนแทน คุณสามารถรับโทเค็นเพื่อการเข้าถึงได้โดยเรียกใช้ {0}", + "Method": "วิธี", + "Body": "เนื้อหา", + "Headers": "ส่วนหัว", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "เนื้อหาคำขอส่วนหัวไม่ใช่ JSON ที่ถูกต้อง :", + "BodyInvalidFormat": "เนื้อหาคำขอไม่ใช่ JSON ที่ถูกต้อง : ", + "Monitor History": "ประวัติมอนิเตอร์", + "clearDataOlderThan": "เก็บข้อมูลมอนิเตอร์ {0} วัน", + "PasswordsDoNotMatch": "รหัสผ่านไม่ตรงกัน", + "records": "บันทึก", + "One record": "หนึ่งบันทึก", + "steamApiKeyDescription": "สำหรับการมอนิเตอร์ Steam Game Server คุณต้องมี Steam Web-API key, คุณสามารถสมัครได้จากที่นี่ : ", + "Current User": "ผู้ใช้ปัจจุบัน", + "topic": "หัวข้อ", + "topicExplanation": "หัวข้อ MQTT ที่จะมอนิเตอร์", + "successMessage": "ข้อความที่จะถือว่าประสบความสำเร็จ", + "successMessageExplanation": "ข้อความ MQTT ที่จะถือว่าประสบความสำเร็จ", + "recent": "ล่าสุด", + "Done": "สำเร็จ", + "Info": "ข้อมูล", + "Security": "ความปลอดภัย", + "Steam API Key": "Steam API Key", + "Shrink Database": "ย่อฐานข้อมูล", + "Pick a RR-Type...": "เลือกชนิด DNS Record", + "Pick Accepted Status Codes...": "เลือกสถานะที่ยอมรับ...", + "Default": "ค่าเริ่มต้น", + "HTTP Options": "ตัวเลือก HTTP", + "Create Incident": "สร้างเหตุการณ์", + "Title": "หัวข้อ", + "Content": "เนื้อหา", + "Style": "สไตล์", + "info": "ข้อมูล", + "warning": "แจ้งเตือน", + "danger": "อันตราย", + "primary": "หลัก", + "light": "สว่าง", + "dark": "มืด", + "Post": "โพสต์", + "Please input title and content": "กรุณาใส่ชื่อและเนื้อหา", + "Created": "สร้าง", + "Last Updated": "อัพเดทล่าสุด", + "Unpin": "เลิกตรึง", + "Switch to Light Theme": "เปลี่ยนเป็นแบบสว่าง", + "Switch to Dark Theme": "เปลี่ยนเป็นแบบมืด", + "Show Tags": "แสดงแท็ก", + "Hide Tags": "ซ่อนแท็ก", + "Description": "รายละเอียด", + "No monitors available.": "ไม่มีมอนิเตอร์ที่สามารถใช้งานได้", + "Add one": "เพิ่ม", + "No Monitors": "ไม่มีมอนิเตอร์", + "Untitled Group": "กลุ่มที่ไม่มีชื่อ", + "Services": "บริการ", + "Discard": "ทิ้ง", + "Cancel": "ยกเลิก", + "Powered by": "ขับเคลื่อนโดย", + "shrinkDatabaseDescription": "ทริกเกอร์ฐานข้อมูล VACUUM สำหรับ SQLite หากฐานข้อมูลของคุณถูกสร้างขึ้นหลังจากเวอร์ชั่น 1.10.0 แสดงว่า AUTO_VACUUM เปิดใช้งานอยู่แล้วและไม่จำเป็นต้องดำเนินการนี้", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API Username (incl. webapi_ prefix)", + "serwersmsAPIPassword": "API Password", + "serwersmsPhoneNumber": "หมายเลขโทรศัพท์", + "serwersmsSenderName": "ชื่อผู้ส่ง SMS (ลงทะเบียนผ่านหน้าควบคุม)", + "stackfield": "Stackfield", + "Customize": "ปรับแต่ง", + "Custom Footer": "ส่วนท้ายที่กำหนดเอง", + "Custom CSS": "CSS ที่กำหนดเอง", + "smtpDkimSettings": "การตั้งค่า DKIM", + "smtpDkimDesc": "โปรดดู Nodemailer DKIM {0} สำหรับการใช้งาน", + "documentation": "คู่มือการใช้งาน", + "smtpDkimDomain": "ชื่อโดเมน", + "smtpDkimKeySelector": "Key Selector", + "smtpDkimPrivateKey": "Private Key", + "smtpDkimHashAlgo": "อัลกอริทึมแฮช (ไม่บังคับ)", + "smtpDkimheaderFieldNames": "คีย์ส่วนหัวสำหรับลงชื่อ (ไม่บังคับ)", + "smtpDkimskipFields": "Header Keys ไม่ต้องเซ็น (ไม่บังคับ)", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API Endpoint", + "alertaEnvironment": "Environment", + "alertaApiKey": "กุญแจ API", + "alertaAlertState": "แจ้งเตือนสถานะ", + "alertaRecoverState": "กู้คืนสถานะ", + "deleteStatusPageMsg": "คุณแน่ใจหรือไม่ว่าต้องการลบหน้าสถานะนี้", + "Proxies": "พร็อกซี", + "default": "ค่าเริ่มต้น", + "enabled": "เปิดใช้งานแล้ว", + "setAsDefault": "ตั้งเป็นค่าเริ่มต้น", + "deleteProxyMsg": "คุณแน่ใจหรือไม่ว่าต้องการลบพร็อกซีสำหรับมอนิเตอร์ทั้งหมด?", + "proxyDescription": "ต้องตั้งค่ามอนิเตอร์ให้ใช้พร็อกซีเพื่อให้ใช้งานได้", + "enableProxyDescription": "พร็อกซีนี้จะไม่ส่งผลต่อมอนิเตอร์จนกว่าจะเปิดใช้งาน คุณสามารถควบคุมการปิดใช้งานพร็อกซีชั่วคราวจากมอนิเตอร์ทั้งหมดได้ที่ส่วนสถานะการเปิดใช้งาน", + "setAsDefaultProxyDescription": "พร็อกซีนี้จะถูกเปิดโดนค่าเริ่มต้นสำหรับมอนิเตอร์ใหม่, คุณสามารถปิดการแจ้งเตือนสำหรับแต่ละมอนิเตอร์ได้", + "Certificate Chain": "ห่วงโซ่ใบรับรอง", + "Valid": "ถูกต้อง", + "Invalid": "ไม่ถูกต้อง", + "AccessKeyId": "กุญแจสิทธิ ID", + "SecretAccessKey": "กุญแจสิทธิ Secret", + "PhoneNumbers": "PhoneNumbers", + "TemplateCode": "รหัสเทมเพลต", + "SignName": "ป้ายชื่อ", + "Sms template must contain parameters: ": "เทมเพลต SMS ต้องมีพารามิเตอร์ : ", + "Bark Endpoint": "Bark Endpoint", + "WebHookUrl": "WebHookUrl", + "SecretKey": "SecretKey", + "For safety, must use secret key": "เพื่อความปลอดภัย จำเป็นต้องตั้งค่ากุญแจการเข้าถึง", + "Device Token": "Device Token", + "Platform": "แพลตฟอร์ม", + "iOS": "iOS", + "Android": "Android", + "Huawei": "Huawei", + "High": "สูง", + "Retry": "ลองใหม่", + "Topic": "หัวข้อ", + "WeCom Bot Key": "WeCom Bot Key", + "Setup Proxy": "ติดตั้งพร็อกซี่", + "Proxy Protocol": "โปรโตคอลพร็อกซี่", + "Proxy Server": "เซิร์ฟเวอร์พร็อกซี", + "Proxy server has authentication": "พร็อกซีเซิร์ฟเวอร์มีการตรวจสอบสิทธิ์", + "User": "ผู้ใช้", + "Installed": "ติดตั้งแล้ว", + "Not installed": "ไม่ได้ติดตั้ง", + "Running": "กำลังทำงาน", + "Not running": "ไม่ได้ทำงาน", + "Remove Token": "ลบกุญแจ", + "Start": "เริ่ม", + "Stop": "หยุด", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "เพิ่มหน้าสถานะใหม่", + "Slug": "ชื่อ", + "Accept characters:": "ตัวอักษรที่ใช้งานได้ :", + "startOrEndWithOnly": "เริ่มหรือจบด้วย {0} เท่านั้น", + "No consecutive dashes": "ไม่มีขีดกลางติดต่อกัน", + "Next": "ต่อไป", + "The slug is already taken. Please choose another slug.": "ชื่อนี้ถูกใช้งานแล้ว กรุณาใช้ชื่ออื่น", + "No Proxy": "ไม่มีพร็อกซี่", + "HTTP Basic Auth": "HTTP Basic Auth", + "New Status Page": "หน้าสถานะใหม่", + "Page Not Found": "ไม่พบหน้านี้", + "Reverse Proxy": "พร็อกซีย้อนกลับ", + "Backup": "สำรองข้อมูล", + "About": "เกี่ยวกับ", + "wayToGetCloudflaredURL": "(ดาวโหลด cloudflared จาก {0})", + "cloudflareWebsite": "เว็บไซต์ Cloudflare", + "Message:": "ข้อความ :", + "Don't know how to get the token? Please read the guide:": "ไม่รู้วิธีการรับกุญแจ?, กรุณาอ่านคู่มือ", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "การเชื่อมต่อปัจุบันอาจขาดหายหากคุณกำลังเชื่อมต่อ Cloudflare Tunnel คุณแน่ใจหรือไม่ที่จะหยุด, พิมรหัสผ่านของคุณเพื่อยืนยัน", + "Other Software": "ซอฟต์แวร์อื่นๆ ", + "For example: nginx, Apache and Traefik.": "เช่น: nginx, Apache และ Traefik", + "Please read": "กรุณาอ่าน", + "Subject:": "เรื่อง :", + "Valid To:": "ใช้ได้ถึง :", + "Days Remaining:": "จำนวนวันที่เหลือ :", + "Issuer:": "ผู้ออก :", + "Fingerprint:": "ลายนิ้วมือ :", + "No status pages": "ไม่มีหน้าสถานะ", + "Domain Name Expiry Notification": "แจ้งเตือนการหมดอายุของโดเมน", + "Proxy": "Proxy", + "Date Created": "วันที่สร้าง", + "onebotHttpAddress": "ที่อยู่ HTTP OneBot ", + "onebotMessageType": "ชนิดข้อความ OneBot", + "onebotGroupMessage": "กลุ่ม", + "onebotPrivateMessage": "ส่วนตัว", + "onebotUserOrGroupId": "กลุ่ม / ไอดีผู้ใช้", + "onebotSafetyTips": "เพื่อความปลอดภัย จำเป็นต้องตั้งค่ากุญแจการเข้าถึง", + "PushDeer Key": "กุญแจ PushDeer", + "Footer Text": "ข้อความส่วนท้าย", + "Show Powered By": "แสดงข้อความ \"ขับเคลื่อนโดย\"", + "Domain Names": "Domain Names", + "signedInDisp": "เข้าใช้งานในฐานะ {0}", + "signedInDispDisabled": "ปิดการยืนยันตัวตน", + "Certificate Expiry Notification": "แจ้งเตือนใบรับรองหมดอายุ", + "API Username": "API Username", + "API Key": "API Key", + "Recipient Number": "หมายเลขผู้รับ", + "From Name/Number": "จาก ชื่อ / หมายเลข", + "Leave blank to use a shared sender number.": "ไม่ต้องกรอกเพื่อใช้ชื่อผู้ส่งร่วมกัน", + "Octopush API Version": "Octopush API Version", + "Legacy Octopush-DM": "Legacy Octopush-DM", + "endpoint": "endpoint", + "octopushAPIKey": "\"API key\" จากข้อมูลยืนยันตัวตน HTTP API ในแผงควบคุม", + "octopushLogin": "\"Login\" จากข้อมูลยืนยันตัวตน HTTP API ในแผงควบคุม", + "promosmsLogin": "API Login Name", + "promosmsPassword": "API Password", + "pushoversounds pushover": "Pushover (default)", + "pushoversounds bike": "Bike", + "pushoversounds bugle": "Bugle", + "pushoversounds cashregister": "Cash Register", + "pushoversounds classical": "Classical", + "pushoversounds cosmic": "Cosmic", + "pushoversounds falling": "Falling", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Incoming", + "pushoversounds intermission": "Intermission", + "pushoversounds magic": "Magic", + "pushoversounds mechanical": "Mechanical", + "pushoversounds pianobar": "Piano Bar", + "pushoversounds siren": "Siren", + "pushoversounds spacealarm": "Space Alarm", + "pushoversounds tugboat": "Tug Boat", + "pushoversounds alien": "Alien Alarm (long)", + "pushoversounds climb": "Climb (long)", + "pushoversounds persistent": "Persistent (long)", + "pushoversounds echo": "Pushover Echo (long)", + "pushoversounds updown": "Up Down (long)", + "pushoversounds vibrate": "Vibrate Only", + "pushoversounds none": "None (silent)", + "pushyAPIKey": "Secret API Key", + "pushyToken": "Device token", + "Show update if available": "แสดงการอัปเดตถ้ามี", + "Also check beta release": "ตรวจสอบรุ่นเบต้า", + "Using a Reverse Proxy?": "ใช้ Reverse Proxy อยู่ใช่มั้ย?", + "Check how to config it for WebSocket": "ตรวจสอบวิธีการตั้งค่าสำหรับ WebSocket", + "Steam Game Server": "Steam Game Server", + "Most likely causes:": "สาเหตุที่เป็นไปได้มากที่สุด :", + "The resource is no longer available.": "ทรัพยากรไม่สามารถใช้งานได้อีกต่อไป", + "There might be a typing error in the address.": "อาจมีข้อผิดพลาดในการพิมพ์ที่อยู่", + "What you can try:": "สิ่งที่คุณสามารถลองทำ :", + "Retype the address.": "พิมพ์ที่อยู่อีกครั้ง", + "Go back to the previous page.": "กลับไปหน้าที่แล้ว", + "Coming Soon": "เร็วๆ นี้", + "wayToGetClickSendSMSToken": "คุณสามารถรับ API Username และ API Key ได้จาก {0}", + "wayToGetLineNotifyToken": "คุณสามารถรับ access token ได้จาก {0}", + "resendEveryXTimes": "ส่งซ้ำทุก {0} ครั้ง", + "resendDisabled": "การส่งซ้ำถูกปิดใช้งาน", + "dnsPortDescription": "พอร์ตของเซิร์ฟเวอร์ DNS, ค่าเริ่มต้นคือ 53, คุณสามารถเปลี่ยนพอร์ตตอนไหนก็ได้", + "Resend Notification if Down X times consequently": "ส่งการแจ้งเตือนซ้ำถ้าออฟไลน์ครบ X ครั้ง", + "error": "เกิดข้อผิดพลาด", + "critical": "วิกฤต", + "wayToGetPagerDutyKey": "คุณสามารถรับคีย์ได้โดยการไปที่ Service -> Service Directory -> (Select a service) -> Integrations -> Add integration, และค้นหา \"Events API V2\", สำหรับข้อมูลเพิ่มเติม {0}", + "Integration Key": "Integration Key", + "Integration URL": "Integration URL", + "Auto resolve or acknowledged": "แก้ไขอัตโนมัติหรือยอมรับ", + "do nothing": "ไม่ทำอะไร", + "auto acknowledged": "ยอมรับอัตโนมัติ", + "auto resolve": "แก้ไขอัตโนมัติ", + "Bark Group": "กลุ่มที่จะประกาศ", + "Bark Sound": "เสียงประกาศ", + "Authentication": "การตรวจสอบสิทธิ์", + "HTTP Headers": "HTTP Headers", + "Trust Proxy": "Trust Proxy", + "HomeAssistant": "Home Assistant", + "RadiusSecret": "Radius Secret", + "RadiusSecretDescription": "แบ่งปันคีย์ลับระหว่างผู้ใช้งานและเซิร์ฟเวอร์", + "RadiusCalledStationId": "Called Station Id", + "RadiusCalledStationIdDescription": "Identifier of the called device", + "RadiusCallingStationId": "Calling Station Id", + "RadiusCallingStationIdDescription": "Identifier of the calling device", + "Connection String": "Connection String", + "Query": "Query", + "settingsCertificateExpiry": "วันหมดอายุของใบรับรอง TLS", + "certificationExpiryDescription": "การตรวจสอบ HTTPS จะแจ้งเตือนถ้าใบอนุญาติ TLS จะหมดอายุใน:", + "Setup Docker Host": "ติดตั้ง Docker Host", + "Connection Type": "ประเภทการเชื่อมต่อ", + "Docker Daemon": "Docker Daemon", + "deleteDockerHostMsg": "คุณแน่ใจหรือไม่ที่จะลบ Docker host นี้สำหรับการมอนิเตอร์ทั้งหมด?", + "socket": "Socket", + "tcp": "TCP / HTTP", + "Docker Container": "Docker Container", + "Container Name / ID": "Container Name / ID", + "Docker Host": "Docker Host", + "Docker Hosts": "Docker Hosts", + "ntfy Topic": "ntfy Topic", + "Domain": "โดเมน", + "Workstation": "Workstation", + "disableCloudflaredNoAuthMsg": "คุณอยู่ในโหมดไม่มีการตรวจสอบสิทธิ์, ไม่จำเป็นต้องมีรหัสผ่าน", + "trustProxyDescription": "เชื่อ Header 'X-Forwarded-*' ถ้าคุณต้องการไอพีที่ถูกต้องและ Uptime Kuma อยู่ข้างหลัง Nginx หรือ Apache, คุณควรเปิดใช้งาน", + "Examples": "ตัวอย่าง", + "Home Assistant URL": "Home Assistant URL", + "Long-Lived Access Token": "Access Token แบบมีอายุนาน", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Access Token แบบมีอายุนานสามารถสร้างได้โดยคลิกชื่อบนโปรไฟล์ (ล่างซ้าย) และเลื่อนไปข้างล่างจากนั้นคลิก \"Create Token\"", + "Notification Service": "บริการแจ้งเตือน", + "default: notify all devices": "ค่าเริ่มต้น: แจ้งเตือนทุกอุปกรณ์", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "รายการแจ้งเตือนสามารถหาได้ใน Home Assistant ในเมนู \"Developer Tools > Services\" แล้วค้นหา \"notification\" เพื่อหาชื่ออุปกรณ์หรือชื่อโทรศัพท์", + "Automations can optionally be triggered in Home Assistant:": "สามารถเลือกสั่งงานระบบอัตโนมัติได้ใน Home Assistant:", + "Trigger type:": "ชนิดสิ่งกระตุ้น:", + "Event type:": "ชนิดเหตการณ์:", + "Event data:": "ข้อมูลกิจกรรม:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "จากนั้นเลือกการกระทำ, ตัวอย่าง เช่น เปลี่ยนเป็นไฟสีแดง", + "Frontend Version": "เวอร์ชั่น Frontend", + "Frontend Version do not match backend version!": "เวอร์ชั่น Frontend ไม่ตรงกับ Backend !" +} diff --git a/src/lang/tr-TR.json b/src/lang/tr-TR.json new file mode 100644 index 000000000..8428dcf95 --- /dev/null +++ b/src/lang/tr-TR.json @@ -0,0 +1,678 @@ +{ + "languageName": "Türkçe", + "checkEverySecond": "{0} Saniyede bir kontrol et.", + "retryCheckEverySecond": "{0} Saniyede bir dene.", + "resendEveryXTimes": "Her {0} bir yeniden gönder", + "resendDisabled": "Yeniden gönderme devre dışı", + "retriesDescription": "Servisin kapalı olarak işaretlenmeden ve bir bildirim gönderilmeden önce maksimum yeniden deneme sayısı", + "ignoreTLSError": "HTTPS web siteleri için TLS/SSL hatasını yoksay", + "upsideDownModeDescription": "Servisin durumunu tersine çevirir. Servis çalışıyorsa kapalı olarak işaretler.", + "maxRedirectDescription": "İzlenecek maksimum yönlendirme sayısı. Yönlendirmeleri devre dışı bırakmak için 0'a ayarlayın.", + "acceptedStatusCodesDescription": "Servisin çalıştığını hangi durum kodları belirlesin?", + "passwordNotMatchMsg": "Şifre eşleşmiyor.", + "notificationDescription": "Servislerin bildirim gönderebilmesi için bir bildirim yöntemi belirleyin.", + "keywordDescription": "Anahtar kelimeyi düz html veya JSON yanıtında arayın ve büyük/küçük harfe duyarlıdır", + "pauseDashboardHome": "Durdur", + "deleteMonitorMsg": "Servisi silmek istediğinden emin misin?", + "deleteNotificationMsg": "Bu bildirimi tüm servisler için silmek istediğinden emin misin?", + "dnsPortDescription": "DNS sunucusu bağlantı noktası. Varsayılan değer 53'tür. Bağlantı noktasını istediğiniz zaman değiştirebilirsiniz.", + "resolverserverDescription": "Cloudflare varsayılan sunucudur, çözümleyici sunucusunu istediğiniz zaman değiştirebilirsiniz.", + "rrtypeDescription": "İzlemek istediğiniz servisin RR-Tipini seçin", + "pauseMonitorMsg": "Durdurmak istediğinden emin misin?", + "enableDefaultNotificationDescription": "Bu bildirim her yeni serviste aktif olacaktır. Bildirimi servisler için ayrı ayrı deaktive edebilirsiniz. ", + "clearEventsMsg": "Bu servisin bütün kayıtlarını silmek istediğinden emin misin?", + "clearHeartbeatsMsg": "Bu servis için tüm sağlık durumunu silmek istediğinden emin misin?", + "confirmClearStatisticsMsg": "Tüm istatistikleri silmek istediğinden emin misin?", + "importHandleDescription": "Aynı isimdeki bütün servisleri ve bildirimleri atlamak için 'Var olanı atla' seçiniz. 'Üzerine yaz' var olan bütün servisleri ve bildirimleri silecektir. ", + "confirmImportMsg": "Yedeği içeri aktarmak istediğinize emin misiniz? Lütfen doğru içeri aktarma seçeneğini seçtiğinizden emin olunuz. ", + "twoFAVerifyLabel": "Lütfen tokeni yazarak 2FA doğrulamanın çalıştığından emin olunuz.", + "tokenValidSettingsMsg": "Token geçerli! Şimdi 2FA ayarlarını kaydedebilirsiniz. ", + "confirmEnableTwoFAMsg": "2FA'ı etkinleştirmek istediğinizden emin misiniz?", + "confirmDisableTwoFAMsg": "2FA'ı devre dışı bırakmak istediğinize emin misiniz?", + "Settings": "Ayarlar", + "Dashboard": "Panel", + "New Update": "Yeni Güncelleme", + "Language": "Dil", + "Appearance": "Görünüm", + "Theme": "Tema", + "General": "Genel", + "Primary Base URL": "Birincil Temel URL", + "Version": "Versiyon", + "Check Update On GitHub": "GitHub'da Güncellemeyi Kontrol Edin", + "List": "Liste", + "Add": "Ekle", + "Add New Monitor": "Yeni Servis Ekle", + "Quick Stats": "Servis istatistikleri", + "Up": "Normal", + "Down": "Hatalı", + "Pending": "Bekliyor", + "Unknown": "Bilinmeyen", + "Pause": "Durdur", + "Name": "Servis ismi", + "Status": "Durum", + "DateTime": "Zaman", + "Message": "Mesaj", + "No important events": "Önemli olay yok", + "Resume": "Devam et", + "Edit": "Düzenle", + "Delete": "Sil", + "Current": "Şu anda", + "Uptime": "Çalışma zamanı", + "Cert Exp.": "Sertifika Süresi", + "day": "gün | günler", + "-day": "-gün", + "hour": "saat", + "-hour": "-saat", + "Response": "Cevap Süresi", + "Ping": "Ping", + "Monitor Type": "Servis Tipi", + "Keyword": "Anahtar Kelime", + "Friendly Name": "Panelde görünecek isim", + "URL": "URL", + "Hostname": "IP Adresi", + "Port": "Port", + "Heartbeat Interval": "Servis Test Aralığı", + "Retries": "Yeniden deneme", + "Heartbeat Retry Interval": "Sağlık Durumları Tekrar Deneme Sıklığı", + "Resend Notification if Down X times consequently": "Sonuç olarak X kez düşerse bildirimi yeniden gönder", + "Advanced": "Gelişmiş", + "Upside Down Mode": "Ters/Düz Modu", + "Max. Redirects": "Maksimum Yönlendirme", + "Accepted Status Codes": "Kabul Edilen Durum Kodları", + "Push URL": "Push URL", + "needPushEvery": "Bu URL'yi her {0} saniyede bir aramalısınız.", + "pushOptionalParams": "İsteğe bağlı parametreler: {0}", + "Save": "Kaydet", + "Notifications": "Bildirimler", + "Not available, please setup.": "Atanmış bildirim yöntemi yok. Ayarlardan belirleyebilirsiniz.", + "Setup Notification": "Bildirim yöntemi kur", + "Light": "Açık", + "Dark": "Koyu", + "Auto": "Oto", + "Theme - Heartbeat Bar": "Servis Bar Konumu", + "Normal": "Normal", + "Bottom": "Aşağıda", + "None": "Gösterme", + "Timezone": "Zaman Dilimi", + "Search Engine Visibility": "Arama Motoru Görünürlüğü", + "Allow indexing": "İndekslemeye izin ver", + "Discourage search engines from indexing site": "İndekslemeyi reddet", + "Change Password": "Şifre Değiştir", + "Current Password": "Şuan ki Şifre", + "New Password": "Yeni Şifre", + "Repeat New Password": "Yeni Şifreyi Tekrar Girin", + "Update Password": "Şifreyi Değiştir", + "Disable Auth": "Şifreli girişi iptal et.", + "Enable Auth": "Şifreli girişi aktif et.", + "disableauth.message1": "Şifreli girişi devre dışı bırakmak istediğinizdenemin misiniz?", + "disableauth.message2": "Bu, Uptime Kuma'nın önünde Cloudflare Access gibi üçüncü taraf yetkilendirmesi olan kişiler içindir.", + "Please use this option carefully!": "Lütfen dikkatli kullanın.", + "Logout": "Çıkış yap", + "Leave": "Ayrıl", + "I understand, please disable": "Evet farkındayım, iptal et", + "Confirm": "Onayla", + "Yes": "Evet", + "No": "Hayır", + "Username": "Kullanıcı Adı", + "Password": "Şifre", + "Remember me": "Beni Hatırla", + "Login": "Giriş yap", + "No Monitors, please": "Servis yok, lütfen", + "add one": "bir servis ekleyin", + "Notification Type": "Bildirim Yöntemi", + "Email": "E-mail", + "Test": "Test", + "Certificate Info": "Sertifika Bilgisi", + "Resolver Server": "Çözümleyici Sunucu", + "Resource Record Type": "Kaynak Kayıt Türü", + "Last Result": "En son sonuçlar", + "Create your admin account": "Yönetici hesabınızı oluşturun", + "Repeat Password": "Şifrenizi tekrar girin", + "Import Backup": "Yedeği içe aktar", + "Export Backup": "Yedeği dışa aktar", + "Export": "Dışa aktar", + "Import": "İçe aktar", + "respTime": "Cevap Süresi (ms)", + "notAvailableShort": "N/A", + "Default enabled": "Varsayılan etkinleştirilmiş", + "Apply on all existing monitors": "Var olan bütün servislere uygula", + "Create": "Oluştur", + "Clear Data": "Verileri Temizle", + "Events": "Olaylar", + "Heartbeats": "Sağlık Durumları", + "Auto Get": "Otomatik Al", + "backupDescription": "Bütün servisleri ve bildirimleri JSON dosyasına yedekleyebilirsiniz.", + "backupDescription2": "Not: Geçmiş ve etkinlik verileri içinde değildir.", + "backupDescription3": "Dışa aktarma dosyasında bildirim tokeni gibi hassas veriler bulunur, dikkatli bir şekilde saklayınız.", + "alertNoFile": "İçeri aktarmak için bir dosya seçiniz.", + "alertWrongFileType": "Lütfen bir JSON dosyası seçiniz.", + "Clear all statistics": "Bütün istatistikleri temizle", + "Skip existing": "Var olanı atla", + "Overwrite": "Üzerine yaz", + "Options": "Seçenekler", + "Keep both": "İkisini sakla", + "Verify Token": "Tokeni doğrula", + "Setup 2FA": "2FA Kur", + "Enable 2FA": "2FA Etkinleştir", + "Disable 2FA": "2FA Devre dışı bırak", + "2FA Settings": "2FA Ayarları", + "Two Factor Authentication": "İki Faktörlü Kimlik Doğrulama (2FA)", + "Active": "Aktif", + "Inactive": "İnaktif", + "Token": "Token", + "Show URI": "URI'yi göster", + "Tags": "Etiketler", + "Add New below or Select...": "Aşağıya Yeni Ekle veya Seç...", + "Tag with this name already exist.": "Bu ada sahip etiket zaten var.", + "Tag with this value already exist.": "Bu değere sahip etiket zaten var.", + "color": "renk", + "value (optional)": "değer (isteğe bağlı)", + "Gray": "Gri", + "Red": "Kırmızı", + "Orange": "Turuncu", + "Green": "Yeşil", + "Blue": "Mavi", + "Indigo": "Çivit mavisi", + "Purple": "Mor", + "Pink": "Pembe", + "Search...": "Ara...", + "Avg. Ping": "Ortalama Ping", + "Avg. Response": "Ortalama Cevap Süresi", + "Entry Page": "Giriş Sayfası", + "statusPageNothing": "Burada hiçbir şey yok, lütfen bir grup veya servis ekleyin.", + "No Services": "Hizmet Yok", + "All Systems Operational": "Tüm Sistemler Operasyonel", + "Partially Degraded Service": "Kısmen Bozulmuş Hizmet", + "Degraded Service": "Bozulmuş Hizmet", + "Add Group": "Grup Ekle", + "Add a monitor": "Servis Ekle", + "Edit Status Page": "Durum Sayfasını Düzenle", + "Go to Dashboard": "Panele Git", + "Status Page": "Durum Sayfası", + "Status Pages": "Durum Sayfaları", + "defaultNotificationName": "My {notification} Alert ({number})", + "here": "burada", + "Required": "Gerekli", + "telegram": "Telegram", + "Bot Token": "Bot Token", + "wayToGetTelegramToken": "{0} adresinden bir token alabilirsiniz.", + "Chat ID": "Chat ID", + "supportTelegramChatID": "Doğrudan Sohbet / Grup / Kanalın Sohbet Kimliğini Destekleyin", + "wayToGetTelegramChatID": "Bot'a bir mesaj göndererek ve chat_id'yi görüntülemek için bu URL'ye giderek sohbet kimliğinizi alabilirsiniz:", + "YOUR BOT TOKEN HERE": "BOT TOKENİNİZ BURADA", + "chatIDNotFound": "Chat ID bulunamadı; lütfen önce bu bota bir mesaj gönderin", + "webhook": "Webhook", + "Post URL": "Post URL", + "Content Type": "Content Type", + "webhookJsonDesc": "{0}, Express.js gibi tüm modern HTTP sunucuları için iyidir", + "webhookFormDataDesc": "{multipart} PHP için iyidir. JSON'un {decodeFunction} ile ayrıştırılması gerekecek", + "smtp": "E-mail (SMTP)", + "secureOptionNone": "Hiçbiri / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "TLS Hatasını Yoksay", + "From Email": "E-postadan", + "emailCustomSubject": "Özel Konu", + "To Email": "E-postaya", + "smtpCC": "CC", + "smtpBCC": "BCC", + "discord": "Discord", + "Discord Webhook URL": "Discord Webhook URL", + "wayToGetDiscordURL": "Bunu Sunucu Ayarları -> Entegrasyonlar -> Webhook Oluştur'a giderek alabilirsiniz.", + "Bot Display Name": "Botun Görünecek Adı", + "Prefix Custom Message": "Önek Özel Mesaj", + "Hello @everyone is...": "Merhaba {'@'}everyone ...", + "teams": "Microsoft Teams", + "Webhook URL": "Webhook URL", + "wayToGetTeamsURL": "Bir webhook URL'sinin nasıl oluşturulacağını öğrenebilirsiniz {0}.", + "signal": "Sinyal", + "Number": "Numara", + "Recipients": "Alıcılar", + "needSignalAPI": "REST API ile bir signal istemciniz olması gerekiyor.", + "wayToCheckSignalURL": "Nasıl kurulacağını görmek için bu URL'yi kontrol edebilirsiniz:", + "signalImportant": "ÖNEMLİ: Alıcılarda grupları ve sayıları karıştıramazsınız!", + "gotify": "Gotify", + "Application Token": "Uygulama Tokeni", + "Server URL": "Sunucu URL", + "Priority": "Öncelik", + "slack": "Slack", + "Icon Emoji": "İkon Emoji", + "Channel Name": "Kanal Adı", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "Webhook hakkında daha fazla bilgi: {0}", + "aboutChannelName": "Webhook kanalını atlamak istiyorsanız, {0} Kanal Adı alanına kanal adını girin. Ör: #diğer-kanal", + "aboutKumaURL": "Uptime Kuma URL alanını boş bırakırsanız, varsayılan olarak Project GitHub sayfası olur.", + "emojiCheatSheet": "Emoji cheat sheet: {0}", + "rocket.chat": "Rocket.Chat", + "pushover": "Pushover", + "pushy": "Pushy", + "PushByTechulus": "Push by Techulus", + "octopush": "Octopush", + "promosms": "PromoSMS", + "clicksendsms": "ClickSend SMS", + "lunasea": "LunaSea", + "apprise": "Apprise (50'den fazla Bildirim hizmetini destekler)", + "GoogleChat": "Google Chat (sadece Google Workspace)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "User Key": "Kullancı Anahtarı", + "Device": "Cihaz", + "Message Title": "Mesaj Başlığı", + "Notification Sound": "Bilgilendirme sesi", + "More info on:": "Daha fazla bilgi: {0}", + "pushoverDesc1": "Acil durum önceliği (2), yeniden denemeler arasında varsayılan olarak 30 saniyelik bir zaman aşımına sahiptir ve 1 saat sonra sona erecektir.", + "pushoverDesc2": "Farklı cihazlara bildirim göndermek istiyorsanız Cihaz alanını doldurunuz.", + "SMS Type": "SMS Tipi", + "octopushTypePremium": "Premium (Hızlı - uyarı için önerilir)", + "octopushTypeLowCost": "Düşük Maliyet (Yavaş - bazen operatör tarafından engellenir)", + "checkPrice": "{0} fiyatlarını kontrol edin:", + "apiCredentials": "API kimlik bilgileri", + "octopushLegacyHint": "Octopush'un (2011-2020) eski sürümünü mü yoksa yeni sürümünü mü kullanıyorsunuz?", + "Check octopush prices": "Octopush fiyatlarını kontrol edin {0}.", + "octopushPhoneNumber": "Telefon numarası (uluslararası biçim, örneğin: +33612345678) ", + "octopushSMSSender": "SMS Gönderici Adı : 3-11 alfanümerik karakter ve boşluk (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Cihaz ID", + "Apprise URL": "Apprise URL", + "Example:": "Örnek: {0}", + "Read more:": "Daha fazla oku: {0}", + "Status:": "Durum: {0}", + "Read more": "Daha fazla oku", + "appriseInstalled": "Apprise yüklendi.", + "appriseNotInstalled": "Appris yüklü değil. {0}", + "Access Token": "Erişim Tokeni", + "Channel access token": "Kanal erişim tokeni", + "Line Developers Console": "Line Geliştirici Konsolu", + "lineDevConsoleTo": "Line Geliştirici Konsolu - {0}", + "Basic Settings": "Temel Ayarlar", + "User ID": "Kullanıcı ID", + "Messaging API": "Messaging API", + "wayToGetLineChannelToken": "Önce {0}'e erişin, bir sağlayıcı ve kanal (Messaging API) oluşturun, ardından yukarıda belirtilen menü öğelerinden kanal erişim tokenini ve kullanıcı id alabilirsiniz.", + "Icon URL": "Simge URL", + "aboutIconURL": "Varsayılan profil resmini geçersiz kılmak için \"Simge URL\" bölümünde bir resme bağlantı sağlayabilirsiniz. Simge Emojisi ayarlanmışsa kullanılmayacaktır.", + "aboutMattermostChannelName": "Kanal adını \"Kanal Adı\" alanına girerek Webhook'un gönderi yaptığı varsayılan kanalı geçersiz kılabilirsiniz. Bunun Mattermost Webhook ayarlarında etkinleştirilmesi gerekir. Ör: #diğer-kanal", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - ucuz ama yavaş ve genellikle aşırı yüklü. Yalnızca Polonyalı alıcılarla sınırlıdır.", + "promosmsTypeFlash": "SMS FLASH - Mesaj, alıcı cihazda otomatik olarak gösterilecektir. Yalnızca Polonyalı alıcılarla sınırlıdır.", + "promosmsTypeFull": "SMS FULL - Premium SMS katmanı, Gönderici Adınızı kullanabilirsiniz (Önce adınızı kaydetmeniz gerekir). Uyarılar için güvenilir.", + "promosmsTypeSpeed": "SMS HIZI - Sistemde en yüksek öncelik. Çok hızlı ve güvenilir ancak maliyetli (SMS FULL fiyatının yaklaşık iki katı).", + "promosmsPhoneNumber": "Telefon numarası (Polonyalı alıcı için Alan kodlarını atlayabilirsiniz)", + "promosmsSMSSender": "SMS Gönderici Adı : Ön kayıtlı ad veya varsayılanlardan biri: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + "matrixHomeserverURL": "Homeserver URL (http(s):// ve isteğe bağlı olarak bağlantı noktası ile)", + "Internal Room Id": "Internal Room ID", + "matrixDesc1": "Internal Room ID'sini, Matrix istemcinizdeki oda ayarlarının gelişmiş bölümüne bakarak bulabilirsiniz. !QMdRCpUIfLwsfjxye6:home.server gibi görünmelidir.", + "matrixDesc2": "Hesabınıza ve katıldığınız tüm odalara tam erişime izin vereceğinden, yeni bir kullanıcı oluşturmanız ve kendi Matrix kullanıcınızın erişim belirtecini kullanmamanız şiddetle tavsiye edilir. Bunun yerine, yeni bir kullanıcı oluşturun ve onu yalnızca bildirimi almak istediğiniz odaya davet edin. {0} komutunu çalıştırarak erişim tokenini alabilirsiniz.", + "Method": "Yöntem", + "Body": "Gövde", + "Headers": "Başlıklar", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "İstek başlıkları geçerli JSON değil:", + "BodyInvalidFormat": "İstek gövdesi geçerli JSON değil:", + "Monitor History": "Servis Geçmişi", + "clearDataOlderThan": "{0} gün boyunca izleme geçmişi verilerini saklayın.", + "PasswordsDoNotMatch": "Parolalar uyuşmuyor.", + "records": "kayıtlar", + "One record": "Bir Kayıt", + "steamApiKeyDescription": "Bir Steam Oyun Sunucusunu izlemek için bir Steam Web-API anahtarına ihtiyacınız vardır. API anahtarınızı buradan kaydedebilirsiniz: ", + "Current User": "Şu anki kullanıcı", + "topic": "Başlık", + "topicExplanation": "İzlenecek MQTT servisi", + "successMessage": "Başarılı Mesaj", + "successMessageExplanation": "Başarılı olarak kabul edilecek MQTT mesajı", + "recent": "Son", + "Done": "Tamamlandı", + "Info": "Bilgi", + "Security": "Güvenlik", + "Steam API Key": "Steam API Anahtarı", + "Shrink Database": "Veritabanını Küçült", + "Pick a RR-Type...": "Bir RR-Tipi seçin...", + "Pick Accepted Status Codes...": "Kabul Edilen Durum Kodlarını Seçin...", + "Default": "Varsayılan", + "HTTP Options": "HTTP Ayarları", + "Create Incident": "Olay Oluştur", + "Title": "Başlık", + "Content": "İçerik", + "Style": "Stil", + "info": "info", + "warning": "warning", + "danger": "danger", + "error": "hata", + "critical": "kritik", + "primary": "primary", + "light": "light", + "dark": "dark", + "Post": "Post", + "Please input title and content": "Lütfen başlık ve içerik girin", + "Created": "Oluşturuldu", + "Last Updated": "Son Güncelleme", + "Unpin": "Unpin", + "Switch to Light Theme": "Açık Temaya Geç", + "Switch to Dark Theme": "Karanlık Temaya Geç", + "Show Tags": "Etiketleri Göster", + "Hide Tags": "Etiketleri Gizle", + "Description": "Açıklama", + "No monitors available.": "Kullanılabilir servis yok.", + "Add one": "Bir tane ekle", + "No Monitors": "Servis Yok", + "Untitled Group": "Adsız Grup", + "Services": "Hizmetler", + "Discard": "İptal Et", + "Cancel": "İptal Et", + "Powered by": "Powered by", + "shrinkDatabaseDescription": "SQLite için veritabanı VACUUM'unu tetikleyin. Veritabanınız 1.10.0'dan sonra oluşturulduysa, AUTO_VACUUM zaten etkinleştirilmiştir ve bu eyleme gerek yoktur.", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API Kullanıcı Adı (webapi_ öneki dahil)", + "serwersmsAPIPassword": "API Şifre", + "serwersmsPhoneNumber": "Telefon numarası", + "serwersmsSenderName": "SMS Gönderici Adı (müşteri portalı üzerinden kayıtlı)", + "stackfield": "Stackfield", + "Customize": "Özelleştirme", + "Custom Footer": "Özel Altbilgi", + "Custom CSS": "Özel CSS", + "smtpDkimSettings": "DKIM Ayarları", + "smtpDkimDesc": "Kullanım için lütfen Nodemailer DKIM'e {0} bakın.", + "documentation": "belgeler", + "smtpDkimDomain": "Alan adı", + "smtpDkimKeySelector": "Anahtar Seçici", + "smtpDkimPrivateKey": "Özel anahtar", + "smtpDkimHashAlgo": "Hash Algoritması (Opsiyonel)", + "smtpDkimheaderFieldNames": "İmzalanacak Başlık Anahtarları (Opsiyonel)", + "smtpDkimskipFields": "İmzalamayacak Başlık Anahtarları (Opsiyonel)", + "wayToGetPagerDutyKey": "Bunu Hizmet -> Hizmet Dizini -> (Bir hizmet seçin) -> Entegrasyonlar -> Entegrasyon ekle'ye giderek alabilirsiniz. Burada \"Events API V2\" için arama yapabilirsiniz. Daha fazla bilgi {0}", + "Integration Key": "Entegrasyon Anahtarı", + "Integration URL": "Entegrasyon URL'si", + "Auto resolve or acknowledged": "Otomatik çözümleme veya onaylandı", + "do nothing": "hiçbir şey yapma", + "auto acknowledged": "otomatik onaylandı", + "auto resolve": "otomatik çözümleme", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API Endpoint", + "alertaEnvironment": "Environment", + "alertaApiKey": "API Key", + "alertaAlertState": "Uyarı Durumu", + "alertaRecoverState": "Kurtarma Durumu", + "deleteStatusPageMsg": "Bu durum sayfasını silmek istediğinizden emin misiniz?", + "Proxies": "Proxy'ler", + "default": "Varsayılan", + "enabled": "Etkinleştirilmiş", + "setAsDefault": "Varsayılan Olarak Ayarla", + "deleteProxyMsg": "Bu proxy'yi tüm servisler için silmek istediğinizden emin misiniz?", + "proxyDescription": "Proxy'lerin çalışması için bir servise atanması gerekir.", + "enableProxyDescription": "Bu proxy, etkinleştirilene kadar izleme isteklerini etkilemeyecektir. Aktivasyon durumuna göre proxy'yi tüm servislerden geçici olarak devre dışı bırakabilirsiniz.", + "setAsDefaultProxyDescription": "Bu proxy, yeni servisler için varsayılan olarak etkinleştirilecektir. Yine de proxy'yi her servis için ayrı ayrı devre dışı bırakabilirsiniz.", + "Certificate Chain": "Sertifika Zinciri", + "Valid": "Geçerli", + "Invalid": "Geçersiz", + "AccessKeyId": "AccessKey ID", + "SecretAccessKey": "AccessKey Secret", + "PhoneNumbers": "PhoneNumbers", + "TemplateCode": "TemplateCode", + "SignName": "SignName", + "Sms template must contain parameters: ": "Sms şablonu parametreleri içermelidir:", + "Bark Endpoint": "Bark Endpoint", + "Bark Group": "Bark Group", + "Bark Sound": "Bark Sound", + "WebHookUrl": "WebHookUrl", + "SecretKey": "SecretKey", + "For safety, must use secret key": "Güvenlik için gizli anahtar kullanılmalıdır", + "Device Token": "Cihaz Tokeni", + "Platform": "Platform", + "iOS": "iOS", + "Android": "Android", + "Huawei": "Huawei", + "High": "High", + "Retry": "Retry", + "Topic": "Topic", + "WeCom Bot Key": "WeCom Bot Key", + "Setup Proxy": "Proxy kur", + "Proxy Protocol": "Proxy Protokolü", + "Proxy Server": "Proxy Sunucusu", + "Proxy server has authentication": "Proxy sunucusunun kimlik doğrulaması var", + "User": "Kullanıcı", + "Installed": "Yüklenmiş", + "Not installed": "Yüklü değil", + "Running": "Çalışıyor", + "Not running": "Çalışmıyor", + "Remove Token": "Tokeni Kaldır", + "Start": "Başlat", + "Stop": "Durdur", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "Yeni Durum Sayfası Ekle", + "Slug": "Slug", + "Accept characters:": "Kabul edilen karakterler:", + "startOrEndWithOnly": "Yalnızca {0} ile başlayın veya bitirin", + "No consecutive dashes": "Ardışık tire yok", + "Next": "Sonraki", + "The slug is already taken. Please choose another slug.": "Slug zaten alındı. Lütfen başka bir slug seçin.", + "No Proxy": "Proxy Yok", + "Authentication": "Kimlik doğrulama", + "HTTP Basic Auth": "HTTP Temel Yetkilendirme", + "New Status Page": "Yeni Durum Sayfası", + "Page Not Found": "Sayfa bulunamadı", + "Reverse Proxy": "Ters Proxy", + "Backup": "Yedek", + "About": "Hakkında", + "wayToGetCloudflaredURL": "(Cloudflared'i {0} adresinden indirin)", + "cloudflareWebsite": "Cloudflare Website", + "Message:": "Mesaj:", + "Don't know how to get the token? Please read the guide:": "Tokeni nasıl alacağınızı bilmiyor musunuz? Lütfen kılavuzu okuyun:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Halihazırda Cloudflare Tüneli üzerinden bağlanıyorsanız mevcut bağlantı kesilebilir. Durdurmak istediğinden emin misin? Onaylamak için mevcut şifrenizi yazın.", + "HTTP Headers": "HTTP Headers", + "Trust Proxy": "Trust Proxy", + "Other Software": "Diğer Yazılımlar", + "For example: nginx, Apache and Traefik.": "Örneğin: nginx, Apache ve Traefik.", + "Please read": "Lütfen oku", + "Subject:": "Başlık:", + "Valid To:": "Geçerlilik:", + "Days Remaining:": "Kalan günler:", + "Issuer:": "Veren:", + "Fingerprint:": "Parmak izi:", + "No status pages": "Durum sayfası yok", + "Domain Name Expiry Notification": "Alan Adı Sona Erme Bildirimi", + "Proxy": "Proxy", + "Date Created": "Tarih Oluşturuldu", + "HomeAssistant": "Home Assistant", + "onebotHttpAddress": "OneBot HTTP Adresi", + "onebotMessageType": "OneBot Mesaj Türü", + "onebotGroupMessage": "Grup", + "onebotPrivateMessage": "Özel", + "onebotUserOrGroupId": "Grup/Kullanıcı Kimliği", + "onebotSafetyTips": "Güvenlik için erişim tokeni ayarlamalısınız", + "PushDeer Key": "PushDeer Anahtarı", + "Footer Text": "Altbilgi metni", + "Show Powered By": "\"Powered by\" kısmını göster", + "Domain Names": "Alan isimleri", + "signedInDisp": "{0} olarak oturum açıldı", + "signedInDispDisabled": "Yetkilendirme Devre Dışı.", + "RadiusSecret": "Radius Secret", + "RadiusSecretDescription": "İstemci ve sunucu arasında paylaşılan gizli anahtar", + "RadiusCalledStationId": "Aranan İstasyon Kimliği", + "RadiusCalledStationIdDescription": "Aranan cihazın tanımlayıcısı", + "RadiusCallingStationId": "Arayan İstasyon Kimliği", + "RadiusCallingStationIdDescription": "Arayan cihazın tanımlayıcısı", + "Certificate Expiry Notification": "Sertifika Sona Erme Bildirimi", + "API Username": "API Kullanıc Adı", + "API Key": "API Anahtarı", + "Recipient Number": "Alıcı Numarası", + "From Name/Number": "İsimden/Numaradan", + "Leave blank to use a shared sender number.": "Paylaşılan bir gönderen numarası kullanmak için boş bırakın.", + "Octopush API Version": "Octopush API Sürümü", + "Legacy Octopush-DM": "Eski Octopush-DM", + "endpoint": "uç nokta", + "octopushAPIKey": "Kontrol panelindeki HTTP API kimlik bilgilerinden \"API Key\"", + "octopushLogin": "Kontrol panelindeki HTTP API kimlik bilgilerinden \"Login\"", + "promosmsLogin": "API Oturum Açma Adı", + "promosmsPassword": "API Şifresi", + "pushoversounds pushover": "Pushover (varsayılan)", + "pushoversounds bike": "Bisiklet", + "pushoversounds bugle": "Boru", + "pushoversounds cashregister": "Yazar kasa", + "pushoversounds classical": "Klasik", + "pushoversounds cosmic": "Kozmik", + "pushoversounds falling": "Düşme", + "pushoversounds gamelan": "Oyun Alanı", + "pushoversounds incoming": "Gelen", + "pushoversounds intermission": "Ara", + "pushoversounds magic": "Büyü", + "pushoversounds mechanical": "Mekanik", + "pushoversounds pianobar": "Piano", + "pushoversounds siren": "Siren", + "pushoversounds spacealarm": "Uzay Alarmı", + "pushoversounds tugboat": "Römorkör", + "pushoversounds alien": "Uzaylı Alarmı (uzun)", + "pushoversounds climb": "Tırmanış (uzun)", + "pushoversounds persistent": "Sürekli (uzun)", + "pushoversounds echo": "Pushover Yankı (uzun)", + "pushoversounds updown": "Yukarı Aşağı (uzun)", + "pushoversounds vibrate": "Sadece titreşim", + "pushoversounds none": "Yok (sessiz)", + "pushyAPIKey": "Gizli API Anahtarı", + "pushyToken": "Cihaz tokeni", + "Show update if available": "Varsa güncellemeyi göster", + "Also check beta release": "Ayrıca beta sürümünü kontrol edin", + "Using a Reverse Proxy?": "Ters Proxy mi Kullanıyorsunuz?", + "Check how to config it for WebSocket": "WebSocket için nasıl yapılandırılacağını kontrol edin", + "Steam Game Server": "Steam Oyun Sunucusu", + "Most likely causes:": "En olası nedenler:", + "The resource is no longer available.": "Kaynak artık mevcut değil.", + "There might be a typing error in the address.": "Adreste bir yazım hatası olabilir.", + "What you can try:": "Ne deneyebilirsin:", + "Retype the address.": "Adresi tekrar yazın.", + "Go back to the previous page.": "Bir önceki sayfaya geri git.", + "Coming Soon": "Yakında gelecek", + "wayToGetClickSendSMSToken": "API Kullanıcı Adı ve API Anahtarını {0} adresinden alabilirsiniz.", + "Connection String": "Bağlantı dizisi", + "Query": "Sorgu", + "settingsCertificateExpiry": "TLS Sertifikasının Geçerlilik Süresi", + "certificationExpiryDescription": "HTTPS Monitörleri, TLS sertifikasının süresi dolduğunda bildirimi tetikler:", + "Setup Docker Host": "Docker Ana Bilgisayarını Kur", + "Connection Type": "Bağlantı türü", + "Docker Daemon": "Docker Daemon", + "deleteDockerHostMsg": "Bu docker ana bilgisayarını tüm monitörler için silmek istediğinizden emin misiniz?", + "socket": "Soket", + "tcp": "TCP / HTTP", + "Docker Container": "Docker Konteyner", + "Container Name / ID": "Konteyner Adı / Kimliği", + "Docker Host": "Docker Ana Bilgisayarı", + "Docker Hosts": "Docker Ana Bilgisayarları", + "ntfy Topic": "ntfy Konu", + "Domain": "Domain", + "Workstation": "İş İstasyonu", + "disableCloudflaredNoAuthMsg": "Yetki yok modundasınız, şifre gerekli değil.", + "trustProxyDescription": "'X-Forwarded-*' başlıklarına güvenin. Doğru istemci IP'sini almak istiyorsanız ve Uptime Kuma'nız Nginx veya Apache'nin arkasındaysa, bunu etkinleştirmelisiniz.", + "wayToGetLineNotifyToken": "{0} adresinden bir erişim jetonu alabilirsiniz.", + "Examples": "Örnekler", + "Home Assistant URL": "Home Assistant URL", + "Long-Lived Access Token": "Long-Lived Erişim Anahtarı", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Long-Lived Erişim Anahtarı, profil adınıza (sol altta) tıklayarak ve aşağıya kaydırarak ve ardından Anahtar Oluştur'a tıklayarak oluşturulabilir. ", + "Notification Service": "Bildirim Hizmeti", + "default: notify all devices": "varsayılan: tüm cihazları bilgilendir", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Cihazınızın/telefonunuzun adını bulmak için Home Assistant'ta \"Geliştirici Araçları > Hizmetler\" \"bildirim\" araması altında bir Bildirim Hizmetleri listesi bulunabilir.", + "Automations can optionally be triggered in Home Assistant:": "Otomasyonlar isteğe bağlı olarak Home Assistant'ta tetiklenebilir:", + "Trigger type:": "Trigger tipi:", + "Event type:": "Etkinlik tipi:", + "Event data:": "Etkinlik verileri:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Ardından bir eylem seçin, örneğin RGB ışığının kırmızı olduğu sahneyi değiştirin.", + "Frontend Version": "Frontend Sürümü", + "Frontend Version do not match backend version!": "Frontend Sürümü, backend sürümüyle eşleşmiyor!", + "Base URL": "Temel URL", + "goAlertInfo": "GoAlert, çağrı üzerine zamanlama, otomatik eskalasyonlar ve bildirimler (SMS veya sesli çağrılar gibi) için açık kaynaklı bir uygulamadır. Doğru kişiyi, doğru şekilde ve doğru zamanda otomatik olarak devreye sokun! {0}", + "goAlertIntegrationKeyInfo": "Servis için genel API entegrasyon anahtarını, genellikle kopyalanan URL'nin belirteç parametresinin değeri olan \"aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" biçiminde alın.", + "goAlert": "GoAlert", + "backupOutdatedWarning": "Kullanımdan Kaldırıldı: Birçok özellik eklendiğinden ve bu yedekleme özelliği biraz bakımsız olduğundan, tam bir yedekleme oluşturamaz veya geri yükleyemez.", + "backupRecommend": "Lütfen bunun yerine birimi veya veri klasörünü (./data/) doğrudan yedekleyin.", + "enableGRPCTls": "TLS bağlantısıyla gRPC isteği göndermeye izin ver", + "grpcMethodDescription": "Yöntem adı, sayHello, check, vb. gibi cammelCase biçimine dönüştürülür.", + "Maintenance": "Bakım", + "statusMaintenance": "Bakım", + "Schedule maintenance": "Bakım Planla", + "Affected Monitors": "Etkilenen Monitörler", + "Pick Affected Monitors...": "Etkilenen Monitörleri Seçin...", + "Start of maintenance": "Bakım başlangıcı", + "All Status Pages": "Tüm Durum Sayfaları", + "Select status pages...": "Durum sayfalarını seçin...", + "recurringIntervalMessage": "Her gün bir kez çalıştırın | {0} günde bir çalıştırın", + "affectedMonitorsDescription": "Geçerli bakımdan etkilenen monitörleri seçin", + "affectedStatusPages": "Bu bakım mesajını seçili durum sayfalarında göster", + "atLeastOneMonitor": "Etkilenen en az bir monitör seçin", + "deleteMaintenanceMsg": "Bu bakımı silmek istediğinizden emin misiniz?", + "ZohoCliq": "ZohoCliq", + "webhookAdditionalHeadersTitle": "Ek Başlıklar", + "webhookAdditionalHeadersDesc": "Webhook ile gönderilen ek başlıkları ayarlar.", + "wayToGetZohoCliqURL": "Bir webhook URL'sinin nasıl oluşturulacağını öğrenebilirsiniz {0}.", + "Kook": "Kook", + "wayToGetKookBotToken": "Uygulama oluşturun ve {0} adresinde bot tokenı alın", + "wayToGetKookGuildID": "Kook ayarında \"Geliştirici Modu\"nu açın ve kimliğini almak için guild'e sağ tıklayın", + "Guild ID": "Guild ID", + "smseagle": "SMSEagle", + "smseagleTo": "Telefon numara(ları)", + "smseagleGroup": "Telefon defteri grubu ad(lar)ı", + "smseagleContact": "Telefon rehberi kişi ad(lar)ı", + "smseagleRecipientType": "Alıcı Türü", + "smseagleRecipient": "Alıcı(lar) (birden çok olanlar virgülle ayrılmalıdır)", + "smseagleToken": "API Erişim Tokenı", + "smseagleUrl": "SMSEagle cihaz URL\"niz", + "smseagleEncoding": "Unicode olarak gönder", + "smseaglePriority": "Mesaj önceliği (0-9, varsayılan = 0)", + "Optional": "İsteğe bağlı", + "squadcast": "Squadcast", + "SendKey": "SendKey", + "SMSManager API Docs": "SMSManager API Dökümanları ", + "Gateway Type": "Ağ Geçidi Türü", + "SMSManager": "SMSManager", + "You can divide numbers with": "Sayıları aşağıdakilerle bölebilirsiniz", + "or": "veya", + "recurringInterval": "Sıklık", + "Recurring": "Yineleme", + "strategyManual": "Manuel olarak Aktif/Pasif", + "warningTimezone": "Sunucunun kullandığı saat dilimi", + "weekdayShortMon": "Pzt", + "weekdayShortTue": "Sal", + "weekdayShortWed": "Çar", + "weekdayShortThu": "Per", + "weekdayShortFri": "Cum", + "weekdayShortSat": "Cmt", + "weekdayShortSun": "Paz", + "dayOfWeek": "Haftanın Günleri", + "dayOfMonth": "Ayın Günleri", + "lastDay": "Son Gün", + "lastDay1": "Ayın Son Günü", + "lastDay2": "Ayın 2. Son Günü", + "lastDay3": "Ayın 3. Son Günü", + "lastDay4": "Ayın 4. Son Günü", + "No Maintenance": "Bakım Yok", + "pauseMaintenanceMsg": "Duraklatmak istediğinizden emin misiniz?", + "maintenanceStatus-under-maintenance": "Bakımda", + "maintenanceStatus-inactive": "Etkin Değil", + "maintenanceStatus-scheduled": "Planlanmış", + "maintenanceStatus-ended": "Bitti", + "maintenanceStatus-unknown": "Bilinmiyor", + "Display Timezone": "Saat dilimini göster", + "Server Timezone": "Sunucu Saat Dilimi", + "statusPageMaintenanceEndDate": "Bitiş Zamanı", + "IconUrl": "Icon URL", + "Enable DNS Cache": "DNS Önbelleğini Etkinleştir", + "Enable": "Etkin", + "Disable": "Devre Dışı", + "dnsCacheDescription": "Bazı IPv6 ortamlarında çalışmıyor olabilir, herhangi bir sorunla karşılaşırsanız devre dışı bırakın.", + "Single Maintenance Window": "Tek Seferlik Bakım", + "Maintenance Time Window of a Day": "Bür Günlük Bakım", + "Effective Date Range": "Bakim Tarih Aralığı", + "Schedule Maintenance": "Bakım Planla", + "Date and Time": "Tarih ve Saat", + "DateTime Range": "Tarih ve Saat Aralığı", + "Strategy": "Strateji", + "Free Mobile User Identifier": "Ücretsiz Mobil Kullanıcı ID", + "Free Mobile API Key": "Ücretsiz Mobil API Anahtarı", + "Enable TLS": "TLS'yi Etkinleştir", + "Proto Service Name": "Proto Service İsmi", + "Proto Method": "Proto Method", + "Proto Content": "Proto İçeriği", + "Economy": "Ekonomik", + "Lowcost": "Düşük maliyetli", + "high": "Yüksek", + "General Monitor Type": "Genel Monitör Tipi", + "Passive Monitor Type": "Pasif Monitör Tipi", + "Specific Monitor Type": "Özel Monitör Tipi" +} diff --git a/src/lang/uk-UA.json b/src/lang/uk-UA.json new file mode 100644 index 000000000..fcd678a35 --- /dev/null +++ b/src/lang/uk-UA.json @@ -0,0 +1,530 @@ +{ + "languageName": "Українська", + "checkEverySecond": "Перевірка кожні {0} секунд", + "retriesDescription": "Максимальна кількість спроб перед позначенням сервісу як недоступного та надсиланням повідомлення", + "ignoreTLSError": "Ігнорувати помилку TLS/SSL для сайтів HTTPS", + "upsideDownModeDescription": "Реверс статусу сервісу. Якщо сервіс доступний, він позначається як НЕДОСТУПНИЙ.", + "maxRedirectDescription": "Максимальна кількість перенаправлень. Поставте 0, щоб вимкнути перенаправлення.", + "acceptedStatusCodesDescription": "Виберіть коди статусів для визначення доступності сервісу.", + "passwordNotMatchMsg": "Повторення паролю не збігається.", + "notificationDescription": "Прив'яжіть сповіщення до моніторів.", + "keywordDescription": "Пошук слова в чистому HTML або JSON-відповіді (чутливо до регістру)", + "pauseDashboardHome": "Пауза", + "deleteMonitorMsg": "Ви дійсно хочете видалити цей монітор?", + "deleteNotificationMsg": "Ви дійсно хочете видалити це сповіщення для всіх моніторів?", + "resolverserverDescription": "Cloudflare є сервером за замовчуванням. Ви завжди можете змінити цей сервер.", + "rrtypeDescription": "Виберіть тип ресурсного запису, який ви хочете відстежувати", + "pauseMonitorMsg": "Ви дійсно хочете поставити на паузу?", + "Settings": "Налаштування", + "Dashboard": "Панель управління", + "New Update": "Оновлення", + "Language": "Мова", + "Appearance": "Зовнішній вигляд", + "Theme": "Тема", + "General": "Загальне", + "Version": "Версія", + "Check Update On GitHub": "Перевірити оновлення на GitHub", + "List": "Список", + "Add": "Додати", + "Add New Monitor": "Новий монітор", + "Quick Stats": "Статистика", + "Up": "Доступний", + "Down": "Недоступний", + "Pending": "Очікування", + "Unknown": "Невідомо", + "Pause": "Пауза", + "Name": "Ім'я", + "Status": "Статус", + "DateTime": "Дата і час", + "Message": "Повідомлення", + "No important events": "Важливих подій немає", + "Resume": "Відновити", + "Edit": "Змінити", + "Delete": "Видалити", + "Current": "Поточний", + "Uptime": "Аптайм", + "Cert Exp.": "Сертифікат спливає", + "day": "день | днів", + "-day": " днів", + "hour": "година", + "-hour": " години", + "Response": "Відповідь", + "Ping": "Пінг", + "Monitor Type": "Тип монітора", + "Keyword": "Ключове слово", + "Friendly Name": "Ім'я", + "URL": "URL", + "Hostname": "Адреса хоста", + "Port": "Порт", + "Heartbeat Interval": "Частота опитування", + "Retries": "Спроб", + "Advanced": "Додатково", + "Upside Down Mode": "Реверс статусу", + "Max. Redirects": "Макс. кількість перенаправлень", + "Accepted Status Codes": "Припустимі коди статусу", + "Save": "Зберегти", + "Notifications": "Сповіщення", + "Not available, please setup.": "Доступних сповіщень немає, необхідно створити.", + "Setup Notification": "Створити сповіщення", + "Light": "Світла", + "Dark": "Темна", + "Auto": "Авто", + "Theme - Heartbeat Bar": "Тема - Смуга частоти опитування", + "Normal": "Звичайний", + "Bottom": "Знизу", + "None": "Відсутня", + "Timezone": "Часовий пояс", + "Search Engine Visibility": "Індексація пошуковими системами:", + "Allow indexing": "Дозволити індексування", + "Discourage search engines from indexing site": "Заборонити індексування", + "Change Password": "Змінити пароль", + "Current Password": "Поточний пароль", + "New Password": "Новий пароль", + "Repeat New Password": "Повтор нового пароля", + "Update Password": "Оновити пароль", + "Disable Auth": "Вимкнути авторизацію", + "Enable Auth": "Увімкнути авторизацію", + "disableauth.message1": "Ви впевнені, що бажаєте вимкнути авторизацію?", + "disableauth.message2": "Це підходить для тих, у кого встановлена інша авторизація пееред відкриттям Uptime Kuma, наприклад Cloudflare Access.", + "Please use this option carefully!": "Будь ласка, використовуйте з обережністю.", + "Logout": "Вийти", + "Leave": "Відміна", + "I understand, please disable": "Я розумію, все одно відключити", + "Confirm": "Підтвердити", + "Yes": "Так", + "No": "Ні", + "Username": "Логін", + "Password": "Пароль", + "Remember me": "Запам'ятати мене", + "Login": "Вхід до системи", + "No Monitors, please": "Моніторів немає, будь ласка", + "No Monitors": "Монітори відсутні", + "add one": "створіть новий", + "Notification Type": "Тип сповіщення", + "Email": "Пошта", + "Test": "Перевірка", + "Certificate Info": "Інформація про сертифікат", + "Resolver Server": "DNS сервер", + "Resource Record Type": "Тип ресурсного запису", + "Last Result": "Останній результат", + "Create your admin account": "Створіть обліковий запис адміністратора", + "Repeat Password": "Повторіть пароль", + "respTime": "Час відповіді (мс)", + "notAvailableShort": "Н/д", + "Create": "Створити", + "clearEventsMsg": "Ви дійсно хочете видалити всю статистику подій цього монітора?", + "clearHeartbeatsMsg": "Ви дійсно хочете видалити всю статистику опитувань цього монітора?", + "confirmClearStatisticsMsg": "Ви дійсно хочете видалити ВСЮ статистику?", + "Clear Data": "Видалити статистику", + "Events": "Події", + "Heartbeats": "Опитування", + "Auto Get": "Авто-отримання", + "enableDefaultNotificationDescription": "Для кожного нового монітора це сповіщення буде включено за замовчуванням. Ви все ще можете відключити сповіщення в кожному моніторі окремо.", + "Default enabled": "Використовувати за промовчанням", + "Also apply to existing monitors": "Застосувати до існуючих моніторів", + "Export": "Експорт", + "Import": "Імпорт", + "backupDescription": "Ви можете зберегти резервну копію всіх моніторів та повідомлень у вигляді JSON-файлу", + "backupDescription2": "P.S.: Історія та події збережені не будуть", + "backupDescription3": "Важливі дані, такі як токени повідомлень, додаються під час експорту, тому зберігайте файли в безпечному місці", + "alertNoFile": "Виберіть файл для імпорту.", + "alertWrongFileType": "Виберіть JSON-файл.", + "twoFAVerifyLabel": "Будь ласка, введіть свій токен, щоб перевірити роботу 2FA", + "tokenValidSettingsMsg": "Токен дійсний! Тепер ви можете зберегти налаштування 2FA.", + "confirmEnableTwoFAMsg": "Ви дійсно хочете увімкнути 2FA?", + "confirmDisableTwoFAMsg": "Ви дійсно хочете вимкнути 2FA?", + "Apply on all existing monitors": "Застосувати до всіх існуючих моніторів", + "Verify Token": "Перевірити токен", + "Setup 2FA": "Налаштування 2FA", + "Enable 2FA": "Увімкнути 2FA", + "Disable 2FA": "Вимкнути 2FA", + "2FA Settings": "Налаштування 2FA", + "Two Factor Authentication": "Двофакторна аутентифікація", + "Active": "Активно", + "Inactive": "Неактивно", + "Token": "Токен", + "Show URI": "Показати URI", + "Clear all statistics": "Очистити статистику", + "retryCheckEverySecond": "Повтор кожні {0} секунд", + "importHandleDescription": "Виберіть \"Пропустити існуючі\", якщо ви хочете пропустити кожен монітор або повідомлення з таким же ім'ям. \"Перезаписати\" видалить кожен існуючий монітор або повідомлення та додасть заново. Варіант \"Не перевіряти\" примусово відновлює всі монітори і повідомлення, навіть якщо вони вже існують.", + "confirmImportMsg": "Ви дійсно хочете відновити резервну копію? Переконайтеся, що ви вибрали відповідний варіант імпорту.", + "Heartbeat Retry Interval": "Інтервал повтору опитування", + "Import Backup": "Імпорт", + "Export Backup": "Експорт", + "Skip existing": "Пропустити існуючі", + "Overwrite": "Перезаписати", + "Options": "Опції", + "Keep both": "Не перевіряти", + "Tags": "Теги", + "Add New below or Select...": "Додати новий або вибрати...", + "Tag with this name already exist.": "Такий тег вже існує.", + "Tag with this value already exist.": "Тег із таким значенням вже існує.", + "color": "колір", + "value (optional)": "значення (опціонально)", + "Gray": "Сірий", + "Red": "Червоний", + "Orange": "Помаранчевий", + "Green": "Зелений", + "Blue": "Синій", + "Indigo": "Індиго", + "Purple": "Пурпурний", + "Pink": "Рожевий", + "Search...": "Пошук...", + "Avg. Ping": "Середній пінг", + "Avg. Response": "Середній час відповіді", + "Entry Page": "Головна сторінка", + "statusPageNothing": "Тут порожньо. Додайте групу або монітор.", + "No Services": "Немає сервісів", + "All Systems Operational": "Всі системи працюють у штатному режимі", + "Partially Degraded Service": "Сервіси працюють частково", + "Degraded Service": "Всі сервіси не працюють", + "Add Group": "Додати групу", + "Add a monitor": "Додати монітор", + "Edit Status Page": "Редагувати", + "Go to Dashboard": "Панель управління", + "Status Page": "Сторінка статусу", + "Status Pages": "Сторінки статусу", + "Discard": "Скасування", + "Create Incident": "Створити інцидент", + "Switch to Dark Theme": "Темна тема", + "Switch to Light Theme": "Світла тема", + "telegram": "Telegram", + "webhook": "Вебхук", + "smtp": "Email (SMTP)", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Підтримка 50+ сервісів повідомлень)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "Primary Base URL": "Основна URL", + "Push URL": "URL пуша", + "needPushEvery": "До цієї URL необхідно звертатися кожні {0} секунд", + "pushOptionalParams": "Опціональні параметри: {0}", + "defaultNotificationName": "Моє сповіщення {notification} ({number})", + "here": "тут", + "Required": "Потрібно", + "Bot Token": "Токен бота", + "wayToGetTelegramToken": "Ви можете взяти токен тут - {0}.", + "Chat ID": "ID чату", + "supportTelegramChatID": "Підтримуються ID чатів, груп та каналів", + "wayToGetTelegramChatID": "Ви можете взяти ID вашого чату, відправивши повідомлення боту і перейшовши по цьому URL для перегляду chat_id:", + "YOUR BOT TOKEN HERE": "ВАШ ТОКЕН БОТА ТУТ", + "chatIDNotFound": "ID чату не знайдено; будь ласка, відправте спочатку повідомлення боту", + "Post URL": "Post URL", + "Content Type": "Тип контенту", + "webhookJsonDesc": "{0} підходить для будь-яких сучасних HTTP-серверів, наприклад Express.js", + "webhookFormDataDesc": "{multipart} підходить для PHP. JSON-вивід необхідно буде обробити за допомогою {decodeFunction}", + "secureOptionNone": "Ні / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Ігнорувати помилки TLS", + "From Email": "Від кого", + "emailCustomSubject": "Своя тема", + "To Email": "Кому", + "smtpCC": "Копія", + "smtpBCC": "Прихована копія", + "Discord Webhook URL": "Discord Вебхук URL", + "wayToGetDiscordURL": "Ви можете створити його в Параметрах сервера -> Інтеграції -> Створити вебхук", + "Bot Display Name": "Ім'я бота, що відображається", + "Prefix Custom Message": "Свій префікс повідомлення", + "Hello @everyone is...": "Привіт {'@'}everyone це...", + "Webhook URL": "URL вебхука", + "wayToGetTeamsURL": "Як створити URL вебхука ви можете дізнатися тут - {0}.", + "Номер": "Номер", + "Recipients": "Одержувачі", + "needSignalAPI": "Вам необхідний клієнт Signal із підтримкою REST API.", + "wayToCheckSignalURL": "Пройдіть по цьому URL, щоб дізнатися як налаштувати такий клієнт:", + "signalImportant": "ВАЖЛИВО: Не можна змішувати в Одержувачах групи та номери!", + "Application Token": "Токен програми", + "Server URL": "URL сервера", + "Priority": "Пріоритет", + "Icon Emoji": "Іконка Emoji", + "Channel Name": "Ім'я каналу", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "Більше інформації про вебхуки: {0}", + "aboutChannelName": "Введіть ім'я каналу в поле {0} Ім'я каналу, якщо ви хочете обійти канал вебхука. Наприклад: #other-channel", + "aboutKumaURL": "Якщо поле Uptime Kuma URL в налаштуваннях залишиться порожнім, за замовчуванням буде використовуватися посилання на проект на GitHub.", + "emojiCheatSheet": "Шпаргалка по Emoji: {0}", + "User Key": "Ключ користувача", + "Device": "Пристрій", + "Message Title": "Заголовок повідомлення", + "Notification Sound": "Звук сповіщення", + "More info on:": "Більше інформації: {0}", + "pushoverDesc1": "Екстренний пріоритет (2) має таймуут повтору за замовчуванням 30 секунд і закінчується через 1 годину.", + "pushoverDesc2": "Якщо ви бажаєте надсилати повідомлення різним пристроям, необхідно заповнити поле Пристрій.", + "SMS Type": "Тип SMS", + "octopushTypePremium": "Преміум (Швидкий - рекомендується для алертів)", + "octopushTypeLowCost": "Дешевий (Повільний - іноді блокується операторами)", + "checkPrice": "Тарифи {0}:", + "octopushLegacyHint": "Ви використовуєте стару версію Octopush (2011-2020) або нову?", + "Check octopush prices": "Тарифи Octopush {0}.", + "octopushPhoneNumber": "Номер телефону (між. формат, наприклад: +380123456789)", + "octopushSMSSender": "Ім'я відправника SMS: 3-11 символів алвафіту, цифр та пробілів (a-zA-Z0-9)", + "LunaSea Device ID": "ID пристрою LunaSea", + "Apprise URL": "Apprise URL", + "Example:": "Приклад: {0}", + "Read more:": "Докладніше: {0}", + "Status:": "Статус: {0}", + "Read more": "Докладніше", + "appriseInstalled": "Apprise встановлено.", + "appriseNotInstalled": "Apprise не встановлено. {0}", + "Access Token": "Токен доступу", + "Channel access token": "Токен доступу каналу", + "Line Developers Console": "Консоль розробників Line", + "lineDevConsoleTo": "Консоль розробників Line - {0}", + "Basic Settings": "Базові налаштування", + "User ID": "ID користувача", + "Messaging API": "API повідомлень", + "wayToGetLineChannelToken": "Спочатку зайдіть в {0}, створіть провайдера та канал (API повідомлень), потім ви зможете отримати токен доступу каналу та ID користувача з вищезгаданих пунктів меню.", + "Icon URL": "URL іконки", + "aboutIconURL": "Ви можете надати посилання на іконку в полі \"URL іконки\", щоб перевизначити картинку профілю за замовчуванням. Не використовується, якщо задана іконка Emoji.", + "aboutMattermostChannelName": "Ви можете перевизначити канал за замовчуванням, в який пише вебхук, ввівши ім'я каналу в полі \"Ім'я каналу\". Це необхідно включити в налаштуваннях вебхука Mattermost. Наприклад: #other-channel", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - дешево та повільно, часто перевантажений. Тільки для одержувачів з Польщі.", + "promosmsTypeFlash": "SMS FLASH - повідомлення автоматично з'являться на пристрої одержувача. Тільки для одержувачів з Польщі.", + "promosmsTypeFull": "SMS FULL - преміум-рівень SMS, можна використовувати своє ім'я відправника (попередньо зареєструвавши його). Надійно для алертів.", + "promosmsTypeSpeed": "SMS SPEED - найвищий пріоритет у системі. Дуже швидко і надійно, але дуже дорого (вдвічі дорожче, ніж SMS FULL).", + "promosmsPhoneNumber": "Номер телефону (для одержувачів з Польщі можна пропустити код регіону)", + "promosmsSMSSender": "Ім'я відправника SMS: Зареєстроване або одне з імен за замовчуванням: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookURL": "Feishu WebHookURL", + "matrixHomeserverURL": "URL сервера (разом з http(s):// і опціонально порт)", + "Internal Room Id": "Внутрішній ID кімнати", + "matrixDesc1": "Внутрішній ID кімнати можна знайти в Подробицях у параметрах каналу вашого Matrix клієнта. Він повинен виглядати приблизно як !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Рекомендується створити нового користувача і не використовувати токен доступу особистого користувача Matrix, тому що це спричиняє повний доступ до облікового запису та до кімнат, в яких ви є. Замість цього створіть нового користувача і запросіть його тільки в ту кімнату, в якій ви хочете отримувати повідомлення.Токен доступу можна отримати, виконавши команду {0}", + "Method": "Метод", + "Body": "Тіло", + "Headers": "Заголовки", + "PushUrl": "URL пуша", + "HeadersInvalidFormat": "Заголовки запиту некоректні JSON: ", + "BodyInvalidFormat": "Тіло запиту некоректне JSON: ", + "Monitor History": "Статистика", + "clearDataOlderThan": "Зберігати статистику за {0} днів.", + "PasswordsDoNotMatch": "Паролі не співпадають.", + "records": "записів", + "One record": "Один запис", + "steamApiKeyDescription": "Для моніторингу ігрового сервера Steam вам потрібен Web-API ключ Steam. Зареєструвати його можна тут: ", + "Certificate Chain": "Ланцюжок сертифікатів", + "Valid": "Дійсний", + "Hide Tags": "Приховати теги", + "Title": "Назва інциденту:", + "Content": "Зміст інциденту:", + "Post": "Опублікувати", + "Cancel": "Скасувати", + "Created": "Створено", + "Unpin": "Відкріпити", + "Show Tags": "Показати теги", + "recent": "Зараз", + "3h": "3 години", + "6h": "6 годин", + "24h": "24 години", + "1w": "1 тиждень", + "No monitors available.": "Немає доступних моніторів", + "Add one": "Додати новий", + "Backup": "Резервна копія", + "Security": "Безпека", + "Shrink Database": "Стиснути базу даних", + "Current User": "Поточний користувач", + "About": "Про програму", + "Description": "Опис", + "Powered by": "Працює на основі скрипту від", + "shrinkDatabaseDescription": "Включає VACUUM для бази даних SQLite. Якщо база даних була створена на версії 1.10.0 і більше, AUTO_VACUUM вже включений і ця дія не потрібна.", + "Style": "Стиль", + "info": "ІНФО", + "warning": "УВАГА", + "danger": "ПОМИЛКА", + "primary": "ОСНОВНИЙ", + "light": "СВІТЛИЙ", + "dark": "ТЕМНИЙ", + "New Status Page": "Нова сторінка статусу", + "Show update if available": "Показувати доступні оновлення", + "Also check beta release": "Перевіряти оновлення для бета версій", + "Add New Status Page": "Додати сторінку статусу", + "Next": "Далі", + "Acz characters: a-z 0-9 -": "Дозволені символи: a-z 0-9 -", + "Start or end with a-z 0-9 only": "Початок та закінчення імені лише на символи: a-z 0-9", + "No consecutive dashes --": "Заборонено використовувати тире --", + "HTTP Options": "HTTP Опції", + "Authentication": "Аутентифікація", + "HTTP Basic Auth": "Базова HTTP", + "PushByTechulus": "Push by Techulus", + "clicksendsms": "ClickSend SMS", + "GoogleChat": "Google Chat (тільки Google Workspace)", + "apiCredentials": "API реквізити", + "Done": "Готово", + "Info": "Інфо", + "Steam API Key": "Steam API-Ключ", + "Pick a RR-Type...": "Виберіть RR-тип...", + "Pick Accepted Status Codes...": "Виберіть прийняті коди стану...", + "Default": "За замовчуванням", + "Please input title and content": "Будь ласка, введіть назву та зміст", + "Last Updated": "Останнє Оновлення", + "Untitled Group": "Група без назви", + "Services": "Сервіси", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API Користувач (включаючи префікс webapi_)", + "serwersmsAPIPassword": "API Пароль", + "serwersmsPhoneNumber": "Номер телефону", + "serwersmsSenderName": "SMS ім'я відправника (реєстрований через портал користувача)", + "stackfield": "Stackfield", + "smtpDkimSettings": "DKIM Налаштування", + "smtpDkimDesc": "Повернутися до Nodemailer DKIM {0} для використання.", + "documentation": "документація", + "smtpDkimDomain": "Ім'я домена", + "smtpDkimKeySelector": "Ключ", + "smtpDkimPrivateKey": "Приватний ключ", + "smtpDkimHashAlgo": "Алгоритм хеша (опціонально)", + "smtpDkimheaderFieldNames": "Заголовок ключів для підпису (опціонально)", + "smtpDkimskipFields": "Заколовок ключів не для підпису (опціонально)", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "Кінцева точка API", + "alertaEnvironment": "Середовище", + "alertaApiKey": "Ключ API", + "alertaAlertState": "Стан алерту", + "alertaRecoverState": "Стан відновлення", + "deleteStatusPageMsg": "Дійсно хочете видалити цю сторінку статусів?", + "Proxies": "Проксі", + "default": "За замовчуванням", + "enabled": "Активно", + "setAsDefault": "Встановити за замовчуванням", + "deleteProxyMsg": "Ви впевнені, що хочете видалити цей проксі для всіх моніторів?", + "proxyDescription": "Щоб функціонувати, монітору потрібно призначити проксі.", + "enableProxyDescription": "Цей проксі не впливатиме на запити моніторингу, доки його не буде активовано. Ви можете контролювати тимчасове відключення проксі з усіх моніторів за статусом активації.", + "setAsDefaultProxyDescription": "Цей проксі буде ввімкнено за умовчанням для нових моніторів. Ви все одно можете вимкнути проксі окремо для кожного монітора.", + "Invalid": "Недійсний", + "AccessKeyId": "AccessKey ID", + "SecretAccessKey": "AccessKey Secret", + "PhoneNumbers": "PhoneNumbers", + "TemplateCode": "TemplateCode", + "SignName": "SignName", + "Sms template must contain parameters: ": "Шаблон смс повинен містити параметри: ", + "Bark Endpoint": "Bark Endpoint", + "WebHookUrl": "WebHookUrl", + "SecretKey": "SecretKey", + "For safety, must use secret key": "Для безпеки необхідно використовувати секретний ключ", + "Device Token": "Токен пристрою", + "Platform": "Платформа", + "iOS": "iOS", + "Android": "Android", + "Huawei": "Huawei", + "High": "Високий", + "Retry": "Повтор", + "Topic": "Тема", + "WeCom Bot Key": "WeCom Bot ключ", + "Setup Proxy": "Налаштувати проксі", + "Proxy Protocol": "Протокол проксі", + "Proxy Server": "Проксі-сервер", + "Proxy server has authentication": "Проксі-сервер має аутентифікацію", + "User": "Користувач", + "Installed": "Встановлено", + "Not installed": "Не встановлено", + "Running": "Запущено", + "Not running": "Не запущено", + "Remove Token": "Видалити токен", + "Start": "Запустити", + "Stop": "Зупинити", + "Uptime Kuma": "Uptime Kuma", + "Slug": "Slug", + "Accept characters:": "Прийняти символи:", + "startOrEndWithOnly": "Починається або закінчується лише {0}", + "No consecutive dashes": "Немає послідовних тире", + "The slug is already taken. Please choose another slug.": "The slug is already taken. Please choose another slug.", + "No Proxy": "Без проксі", + "Page Not Found": "Сторінку не знайдено", + "Reverse Proxy": "Реверсивний проксі", + "wayToGetCloudflaredURL": "(Завантажити Cloudflare з {0})", + "cloudflareWebsite": "Веб-сайт Cloudflare", + "Message:": "Повідомлення:", + "Don't know how to get the token? Please read the guide:": "Не знаєте, як отримати токен? Прочитайте посібник:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Поточне з’єднання може бути втрачено, якщо ви зараз під’єднуєтеся через Cloudflare Tunnel. Ви дійсно хочете зробити це? Для підтвердження введіть поточний пароль.", + "Other Software": "Інше програмне забезпечення", + "For example: nginx, Apache and Traefik.": "Наприклад: nginx, Apache and Traefik.", + "Please read": "Будь ласка, прочитайте", + "Subject:": "Тема:", + "Valid To:": "Дійсний до:", + "Days Remaining:": "Залишилось днів:", + "Issuer:": "Емітент:", + "Fingerprint:": "Відбиток:", + "No status pages": "Немає сторінок статусу", + "Domain Name Expiry Notification": "Сповіщення про закінчення терміну дії доменного імені", + "Proxy": "Проксі", + "Date Created": "Дата створення", + "onebotHttpAddress": "OneBot адреса HTTP", + "onebotMessageType": "OneBot тип повідомлення", + "onebotGroupMessage": "Група", + "onebotPrivateMessage": "Приватне", + "onebotUserOrGroupId": "Група/Користувач ID", + "onebotSafetyTips": "Для безпеки необхідно встановити маркер доступу", + "PushDeer Key": "PushDeer ключ", + "Footer Text": "Текст нижнього колонтитула", + "Show Powered By": "Показувати платформу", + "Domain Names": "Доменні імена", + "signedInDisp": "Ви ввійшли як {0}", + "signedInDispDisabled": "Авторизація вимкнена.", + "Certificate Expiry Notification": "Сповіщення про закінчення терміну дії сертифіката", + "API Username": "Користувач API", + "API Key": "Ключ API", + "Recipient Number": "Номер одержувача", + "From Name/Number": "Від Ім'я/Номер", + "Leave blank to use a shared sender number.": "Залиште поле порожнім, щоб використовувати спільний номер відправника.", + "Octopush API Version": "Octopush API версія", + "Legacy Octopush-DM": "Legacy Octopush-DM", + "endpoint": "кінцева точка", + "octopushAPIKey": "\"Ключ API\" з облікових даних HTTP API в панелі керування", + "octopushLogin": "\"Ім'я користувача\" з облікових даних HTTP API на панелі керування", + "promosmsLogin": "API Логін", + "promosmsPassword": "API Пароль", + "pushoversounds pushover": "Pushover (по замовчуванню)", + "pushoversounds bike": "Bike", + "pushoversounds bugle": "Bugle", + "pushoversounds cashregister": "Cash Register", + "pushoversounds classical": "Classical", + "pushoversounds cosmic": "Cosmic", + "pushoversounds falling": "Falling", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Incoming", + "pushoversounds intermission": "Intermission", + "pushoversounds magic": "Magic", + "pushoversounds mechanical": "Mechanical", + "pushoversounds pianobar": "Piano Bar", + "pushoversounds siren": "Siren", + "pushoversounds spacealarm": "Space Alarm", + "pushoversounds tugboat": "Tug Boat", + "pushoversounds alien": "Alien Alarm (long)", + "pushoversounds climb": "Climb (long)", + "pushoversounds persistent": "Persistent (long)", + "pushoversounds echo": "Pushover Echo (long)", + "pushoversounds updown": "Up Down (long)", + "pushoversounds vibrate": "Vibrate Only", + "pushoversounds none": "None (silent)", + "pushyAPIKey": "Секретний ключ API", + "pushyToken": "Токен пристрою", + "Using a Reverse Proxy?": "Використовувати зворотній проксі?", + "Check how to config it for WebSocket": "Перевірте, як налаштувати його для WebSocket", + "Steam Game Server": "Ігровий сервер Steam", + "Most likely causes:": "Найімовірніші причини:", + "The resource is no longer available.": "Ресурс більше не доступний.", + "There might be a typing error in the address.": "Можливо, в адресі є помилка.", + "What you can try:": "Що ви можете спробувати:", + "Retype the address.": "Повторно введіть адресу.", + "Go back to the previous page.": "Повернутися на попередню сторінку.", + "Coming Soon": "Незабаром", + "wayToGetClickSendSMSToken": "Ви можете отримати ім’я користувача API та ключ API з {0} .", + "Connection String": "Рядок підключення", + "Query": "Запит", + "settingsCertificateExpiry": "Закінчення терміну дії сертифіката TLS", + "certificationExpiryDescription": "Запуск сповіщення для HTTPS моніторів коли до закінчення терміну дії TLS сертифіката:", + "ntfy Topic": "ntfy Тема", + "Domain": "Домен", + "Workstation": "Робоча станція", + "disableCloudflaredNoAuthMsg": "Ви перебуваєте в режимі без авторизації, пароль не потрібен." +} diff --git a/src/lang/vi-VN.json b/src/lang/vi-VN.json new file mode 100644 index 000000000..8b527cce9 --- /dev/null +++ b/src/lang/vi-VN.json @@ -0,0 +1,469 @@ +{ + "languageName": "Tiếng Việt", + "checkEverySecond": "Kiểm tra mỗi {0} giây.", + "retryCheckEverySecond": "Thử lại mỗi {0} giây.", + "retriesDescription": "Số lần thử lại tối đa trước khi dịch vụ được đánh dấu là down và gửi thông báo.", + "ignoreTLSError": "Bỏ qua lỗi TLS/SSL với các web HTTPS.", + "upsideDownModeDescription": "Trạng thái đảo ngược, nếu dịch vụ có thể truy cập được nghĩa là DOWN.", + "maxRedirectDescription": "Số lần chuyển hướng (redirect) tối đa. Đặt thành 0 để tắt chuyển hướng", + "acceptedStatusCodesDescription": "Chọn mã trạng thái được coi là phản hồi thành công.", + "passwordNotMatchMsg": "Mật khẩu nhập lại không khớp.", + "notificationDescription": "Vui lòng chỉ định một kênh thông báo.", + "keywordDescription": "Từ khoá tìm kiếm phản hồi ở dạng html hoặc JSON, có phân biệt chữ HOA - thường", + "pauseDashboardHome": "Tạm dừng", + "deleteMonitorMsg": "Bạn chắc chắn muốn xóa kênh theo dõi này chứ?", + "deleteNotificationMsg": "Bạn có chắc chắn muốn xóa kênh thông báo này cho tất cả kênh theo dõi?", + "resolverserverDescription": "Cloudflare là máy chủ mặc định, bạn có thể thay đổi bất cứ lúc nào.", + "rrtypeDescription": "Hãy chọn RR-Type mà bạn muốn giám sát", + "pauseMonitorMsg": "Bạn chắc chắn muốn tạm dừng chứ?", + "enableDefaultNotificationDescription": "Bật làm mặc định cho mọi kênh theo dõi mới về sau. Bạn vẫn có thể tắt thông báo riêng cho từng kênh theo dõi.", + "clearEventsMsg": "Bạn chắc chắn muốn xoá TẤT CẢ sự kiện cho kênh theo dõi này chứ?", + "clearHeartbeatsMsg": "Bạn chắc chắn muốn xoá TẤT CẢ heartbeats cho kênh theo dõi này chứ?", + "confirmClearStatisticsMsg": "Bạn chắc chắn muốn xoá TẤT CẢ số liệu thống kê?", + "importHandleDescription": "Chọn 'Giữ lại' nếu bạn muốn bỏ qua mọi kênh theo dõi và kênh thông báo trùng tên. 'Ghi đè' sẽ ghi đè lên tất cả các kênh theo dõi và kênh thông báo.", + "confirmImportMsg": "Bạn có chắc chắn muốn khôi phục bản bản sao lưu này không?.", + "twoFAVerifyLabel": "Vui lòng nhập mã token của bạn để xác minh rằng xác thực 2 lớp (2FA) đang hoạt động", + "tokenValidSettingsMsg": "Mã token hợp lệ! Bạn có thể lưu cài đặt xác thực 2 lớp (2FA) bây giờ.", + "confirmEnableTwoFAMsg": "Bạn chắc chắn muốn bật xác thực 2 lớp (2FA) chứ?", + "confirmDisableTwoFAMsg": "Bạn chắc chắn muốn tắt xác thực 2 lớp (2FA) chứ?", + "Settings": "Cài đặt", + "Dashboard": "Dashboard", + "New Update": "Bản cập nhật mới", + "Language": "Ngôn ngữ", + "Appearance": "Giao diện", + "Theme": "Theme", + "General": "Chung", + "Primary Base URL": "URL chính", + "Version": "Phiên bản", + "Check Update On GitHub": "Kiểm tra bản cập nhật mới trên GitHub", + "List": "List", + "Add": "Thêm", + "Add New Monitor": "Thêm mới kênh theo dõi", + "Quick Stats": "Thống kê nhanh", + "Up": "Up", + "Down": "Down", + "Pending": "Chờ xử lý", + "Unknown": "Không xác định", + "Pause": "Tạm dừng", + "Name": "Tên", + "Status": "Trạng thái", + "DateTime": "Ngày tháng", + "Message": "Trạng thái request", + "No important events": "Không có sự kiện quan trọng nào", + "Resume": "Khôi phục", + "Edit": "Sửa", + "Delete": "Xoá", + "Current": "Hiện tại", + "Uptime": "Uptime", + "Cert Exp.": "Cert hết hạn", + "day": "ngày", + "-day": "-ngày", + "hour": "giờ", + "-hour": "-giờ", + "Response": "Phản hồi", + "Ping": "Ping", + "Monitor Type": "Kiểu kênh theo dõi", + "Keyword": "Từ khoá", + "Friendly Name": "Tên rút gọn", + "URL": "URL", + "Hostname": "Hostname", + "Port": "Port", + "Heartbeat Interval": "Tần suất kiểm tra", + "Retries": "Thử lại", + "Heartbeat Retry Interval": "Tần suất kiểm tra lại", + "Advanced": "Nâng cao", + "Upside Down Mode": "Chế độ đảo ngược", + "Max. Redirects": "Số chuyển hướng tối đa", + "Accepted Status Codes": "Codes trạng thái chấp nhận", + "Push URL": "Push URL", + "needPushEvery": "Bạn nên gọi URL mỗi {0} giây.", + "pushOptionalParams": "Tuỳ chỉnh parameters: {0}", + "Save": "Lưu", + "Notifications": "Thông báo", + "Not available, please setup.": "Chưa sẵn sàng, hãy cài đặt.", + "Setup Notification": "Cài đặt thông báo", + "Light": "Sáng", + "Dark": "Tối", + "Auto": "Tự động", + "Theme - Heartbeat Bar": "Theme - Heartbeat Bar", + "Normal": "Bình thường", + "Bottom": "Dưới", + "None": "Không có", + "Timezone": "Múi giờ", + "Search Engine Visibility": "Hiển thị với các công cụ tìm kiếm", + "Allow indexing": "Cho phép indexing", + "Discourage search engines from indexing site": "Ngăn chặn các công cụ tìm kiếm indexing trang", + "Change Password": "Thay đổi mật khẩu", + "Current Password": "Mật khẩu hiện tại", + "New Password": "Mật khẩu mới", + "Repeat New Password": "Lặp lại mật khẩu mới", + "Update Password": "Cập nhật mật khẩu", + "Disable Auth": "Tắt xác minh", + "Enable Auth": "Bật xác minh", + "disableauth.message1": "Bạn có muốn TẮT XÁC THỰC không?", + "disableauth.message2": "Điều này rất nguy hiểmBẤT KỲ AI cũng có thể truy cập và cướp quyền điều khiển.", + "Please use this option carefully!": "Vui lòng cẩn thận.", + "Logout": "Đăng xuất", + "Leave": "Rời", + "I understand, please disable": "Tôi hiểu, làm ơn hãy tắt!", + "Confirm": "Xác nhận", + "Yes": "Có", + "No": "Không", + "Username": "Tài khoản", + "Password": "Mật khẩu", + "Remember me": "Lưu phiên đăng nhập", + "Login": "Đăng nhập", + "No Monitors, please": "Không có kênh theo dõi nào", + "add one": "Thêm mới", + "Notification Type": "Kiểu thông báo", + "Email": "Email", + "Test": "Thử", + "Certificate Info": "Thông tin Certificate", + "Resolver Server": "Máy chủ Resolver", + "Resource Record Type": "Loại bản ghi", + "Last Result": "Kết quả cuối cùng", + "Create your admin account": "Tạo tài khoản quản trị", + "Repeat Password": "Lặp lại mật khẩu", + "Import Backup": "Khôi phục bản sao lưu", + "Export Backup": "Xuất bản sao lưu", + "Export": "Xuất", + "Import": "Nhập", + "respTime": "Thời gian phản hồi (ms)", + "notAvailableShort": "N/A", + "Default enabled": "Mặc định bật", + "Apply on all existing monitors": "Áp dụng cho tất cả kênh theo dõi đang có", + "Create": "Tạo", + "Clear Data": "Xoá dữ liệu", + "Events": "Sự kiện", + "Heartbeats": "Heartbeats", + "Auto Get": "Tự động lấy", + "backupDescription": "Sao lưu tất cả các kênh theo dõi và tất cả các thông báo vào một file định dạng JSON.", + "backupDescription2": "Lưu ý: Không bao gồm dữ liệu lịch sử các sự kiện.", + "backupDescription3": "Hãy lưu giữ file này cẩn thận, trong file đó chứa cả các token thông báo.", + "alertNoFile": "Hãy chọn file để khôi phục.", + "alertWrongFileType": "Hãy chọn file định dạng JSON.", + "Clear all statistics": "Xoá tất cả thống kê", + "Skip existing": "Giữ lại", + "Overwrite": "Ghi đè", + "Options": "Tuỳ chọn", + "Keep both": "Giữ lại cả hai", + "Verify Token": "Xác minh Token", + "Setup 2FA": "Cài đặt xác thực 2 lớp (2FA)", + "Enable 2FA": "Bật xác thực 2 lớp (2FA)", + "Disable 2FA": "Tắt xác thực 2 lớp (2FA)", + "2FA Settings": "Cài đặt xác thực 2 lớp (2FA)", + "Two Factor Authentication": "Xác thực hai yếu tố", + "Active": "Hoạt động", + "Inactive": "Ngừng hoạt động", + "Token": "Token", + "Show URI": "Hiển thị URI", + "Tags": "Tags", + "Add New below or Select...": "Thêm mới ở dưới hoặc Chọn...", + "Tag with this name already exist.": "Tag với tên đã tồn tại.", + "Tag with this value already exist.": "Tag với value đã tồn tại.", + "color": "Màu sắc", + "value (optional)": "Value (tuỳ chọn)", + "Gray": "Xám", + "Red": "Đỏ", + "Orange": "Cam", + "Green": "Xanh lá", + "Blue": "Xanh da trời", + "Indigo": "Chàm", + "Purple": "Tím", + "Pink": "Hồng", + "Search...": "Tìm kiếm...", + "Avg. Ping": "Ping trung bình", + "Avg. Response": "Phản hồi trung bình", + "Entry Page": "Entry Page", + "statusPageNothing": "Chưa có thông tin gì, hãy thêm nhóm kênh theo dõi hoặc kênh theo dõi.", + "No Services": "Không có dịch vụ", + "All Systems Operational": "Tất cả các hệ thống hoạt động bình thường", + "Partially Degraded Service": "Có hệ thống bị ngưng", + "Degraded Service": "Toàn bộ hệ thống bị ngưng", + "Add Group": "Thêm nhóm", + "Add a monitor": "Thêm kênh theo dõi", + "Edit Status Page": "Sửa trang trạng thái", + "Go to Dashboard": "Đi tới Dashboard", + "Status Page": "Trang trạng thái", + "Status Pages": "Trang trạng thái", + "defaultNotificationName": "My {notification} Alerts ({number})", + "here": "tại đây", + "Required": "Bắt buộc", + "telegram": "Telegram", + "Bot Token": "Bot Token", + "wayToGetTelegramToken": "Bạn có thể lấy mã token từ", + "Chat ID": "Chat ID", + "supportTelegramChatID": "Hỗ trợ chat trực tiếp / Nhóm / Kênh Chat ID", + "wayToGetTelegramChatID": "Bạn có thể lấy chat id của mình bằng cách gửi tin nhắn tới bot và truy cập url này để xem chat_id:", + "YOUR BOT TOKEN HERE": "MÃ BOT TOKEN CỦA BẠN", + "chatIDNotFound": "Không tìm thấy Chat ID, vui lòng gửi tin nhắn cho bot này trước", + "webhook": "Webhook", + "Post URL": "URL webhook", + "Content Type": "Loại nội dung", + "webhookJsonDesc": "{0} tương thích với máy chủ HTTP ví dụ như Express.js", + "webhookFormDataDesc": "{multipart} tương thích với máy chủ PHP, bạn chỉ cần phân tích cú pháp json bằng {decodeFunction}", + "smtp": "Email (SMTP)", + "secureOptionNone": "None/STARTTLS(25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Bỏ qua lỗi TLS", + "From Email": "Email gửi", + "emailCustomSubject": "Tuỳ chỉnh tiêu đề", + "To Email": "Email nhận", + "smtpCC": "CC", + "smtpBCC": "BCC", + "discord": "Discord", + "Discord Webhook URL": "Discord Webhook URL", + "wayToGetDiscordURL": "Để lấy Discord, hãy vào: Server Settings -> Integrations -> Create Webhook", + "Bot Display Name": "Tên hiển thị của BOT", + "Prefix Custom Message": "Tiền tố tin nhắn tuỳ chọn", + "Hello @everyone is...": "Xin chào {'@'} mọi người đang...", + "teams": "Microsoft Teams", + "Webhook URL": "Webhook URL", + "wayToGetTeamsURL": "Bạn có thể học cách tạo webhook url {0}.", + "signal": "Tín hiệu", + "Number": "Số", + "Recipients": "Người nhận", + "needSignalAPI": "Bạn cần một tín hiệu kết nối với REST API.", + "wayToCheckSignalURL": "Bạn có thể kiểm tra URL này để xem cách thiết lập:", + "signalImportant": "QUAN TRỌNG: Bạn không thể kết hợp các nhóm và số trong người nhận!", + "gotify": "Gotify", + "Application Token": "Mã Token ứng dụng", + "Server URL": "URL máy chủ", + "Priority": "Mức ưu tiên", + "slack": "Slack", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Tên Channel", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "Thông tin thêm về webhook trên: {0}", + "aboutChannelName": "Nhập tên kênh trên {0} trường Channel Name nếu bạn muốn bỏ qua kênh webhook. vd: #other-channel", + "aboutKumaURL": "Nếu bạn để trống trường Uptime Kuma URL, mặc định sẽ là trang Project Github.", + "emojiCheatSheet": "Bảng tra cứu Emoji: {0}", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "PushByTechulus": "Push by Techulus", + "octopush": "Octopush", + "promosms": "PromoSMS", + "clicksendsms": "ClickSend SMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Hỗ trợ trên 50 dịch vụ thông báo)", + "GoogleChat": "Google Chat (Google Workspace only)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "User Key": "User Key", + "Device": "Thiết bị", + "Message Title": "Tiêu đề tin nhắn", + "Notification Sound": "Âm thanh thông báo", + "More info on:": "Thông tin chi tiết tại: {0}", + "pushoverDesc1": "Mức ưu tiên khẩn cấp (2) có thời gian chờ mặc định là 30 giây giữa các lần thử lại và sẽ hết hạn sau 1 giờ.", + "pushoverDesc2": "Nếu bạn muốn gửi thông báo đến các thiết bị khác nhau, hãy điền vào trường Thiết bị.", + "SMS Type": "SMS Type", + "octopushTypePremium": "Premium (Nhanh - Khuyến nghị nên dùng cho cảnh báo)", + "octopushTypeLowCost": "Giá rẻ (Chậm, thỉnh thoảng bị chặn)", + "checkPrice": "Kiểm tra giá {0}:", + "apiCredentials": "API credentials", + "octopushLegacyHint": "Bạn muốn sử dụng phiên bản cũ của Octopush (2011-2020) hay phiên bản mới?", + "Check octopush prices": "Kiểm tra giá octopush {0}.", + "octopushPhoneNumber": "Số điện thoại (Định dạng intl, vd : +84692341165​) ", + "octopushSMSSender": "SMS người gửi : 3-11 ký tự chữ, số và dấu cách (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea ID thiết bị", + "Apprise URL": "Apprise URL", + "Example:": "Ví dụ: {0}", + "Read more:": "Đọc thêm: {0}", + "Status:": "Trạng thái: {0}", + "Read more": "Đọc thêm", + "appriseInstalled": "Đã cài đặt Apprise.", + "appriseNotInstalled": "Chưa cài đặt Apprise. {0}", + "Access Token": "Token truy cập", + "Channel access token": "Token kênh truy cập", + "Line Developers Console": "Line Developers Console", + "lineDevConsoleTo": "Line Developers Console - {0}", + "Basic Settings": "Cài đặt cơ bản", + "User ID": "User ID", + "Messaging API": "Messaging API", + "wayToGetLineChannelToken": "Trước tiên, hãy truy cập {0},tạo nhà cung cấp và kênh (Messaging API), sau đó bạn có thể nhận mã token truy cập kênh và id người dùng từ các mục menu được đề cập ở trên.", + "Icon URL": "Icon URL", + "aboutIconURL": "Bạn có thể cung cấp liên kết đến ảnh trong \"Icon URL\" để ghi đè ảnh hồ sơ mặc định. Sẽ không được sử dụng nếu Biểu tượng cảm xúc được thiết lập.", + "aboutMattermostChannelName": "Bạn có thể ghi đè kênh mặc định mà webhook đăng lên bằng cách nhập tên kênh vào trường \"Channel Name\". Điều này cần được bật trong cài đặt Mattermost webhook. Ví dụ: #other-channel", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - rẻ nhưng chậm và thường xuyên quá tải. Chỉ dành cho người Ba Lan.", + "promosmsTypeFlash": "SMS FLASH - Tin nhắn sẽ tự động hiển thị trên thiết bị của người nhận. Chỉ dành cho người Ba Lan.", + "promosmsTypeFull": "SMS FULL - SMS cao cấp, Bạn có thể sử dụng Tên Người gửi (Bạn cần đăng ký tên trước). Đáng tin cậy cho các cảnh báo.", + "promosmsTypeSpeed": "SMS SPEED - Ưu tiên cao nhất trong hệ thống. Rất nhanh chóng và đáng tin cậy nhưng tốn kém, (giá gấp đôi SMS FULL).", + "promosmsPhoneNumber": "Số điện thoại (Bỏ qua mã vùng với người Ba Lan)", + "promosmsSMSSender": "SMS Tên người gửi: Tên đã đăng ký trước hoặc tên mặc định: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookUrl", + "matrixHomeserverURL": "Homeserver URL (với http(s):// và port tuỳ chỉnh)", + "Internal Room Id": "Room ID Nội bộ", + "matrixDesc1": "Bạn có thể tìm thấy room ID nội bộ bằng cách tìm trong mục advanced của phần room settings trong Matrix client của bạn. Nó có dạng giống như !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Bạn nên tạo người dùng mới và đừng sử dụng mã token truy cập của Matrix user vì nó sẽ cho phép truy cập toàn quyền vào tài khoản của bạn và tất cả các phòng bạn đã tham gia. Thay vào đó, hãy tạo một người dùng mới và chỉ mời người đó vào phòng mà bạn muốn nhận thông báo. Bạn có thể lấy được mã token truy cập bằng cách chạy {0}", + "Method": "Method", + "Body": "Body", + "Headers": "Headers", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "Header request không hợp lệ JSON: ", + "BodyInvalidFormat": "Tequest body không hợp lệ JSON: ", + "Monitor History": "Lịch sử kênh theo dõi", + "clearDataOlderThan": "Giữ dữ liệu lịch sử kênh theo dõi {0} ngày.", + "PasswordsDoNotMatch": "Passwords không khớp.", + "records": "records", + "One record": "One record", + "steamApiKeyDescription": "Để theo dõi các Steam Game Server bạn cần một Steam Web-API key. Bạn có thể đăng ký API key tại đây: ", + "Current User": "User hiện tại", + "topic": "Topic", + "topicExplanation": "MQTT topic to monitor", + "successMessage": "Success Message", + "successMessageExplanation": "MQTT message that will be considered as success", + "recent": "Gần đây", + "Done": "Hoàn thành", + "Info": "Thông tin", + "Security": "Bảo mật", + "Steam API Key": "Steam API Key", + "Shrink Database": "Shrink Database", + "Pick a RR-Type...": "Pick a RR-Type...", + "Pick Accepted Status Codes...": "Chọn các Codes trạng thái chấp nhận được...", + "Default": "Mặc định", + "HTTP Options": "Tuỳ chọn HTTP", + "Create Incident": "Tạo Incident", + "Title": "Tiêu đề", + "Content": "Nội dung", + "Style": "Style", + "info": "thông tin", + "warning": "cảnh báo", + "danger": "nguy hiểm", + "primary": "cơ sở", + "light": "sáng", + "dark": "tối", + "Post": "Post", + "Please input title and content": "Hãy nhập tiêu đề và nội dung", + "Created": "Đã tạo", + "Last Updated": "Cập nhật mới nhất", + "Unpin": "Bỏ ghim", + "Switch to Light Theme": "Chuyển sang giao diện Sáng", + "Switch to Dark Theme": "Chuyển sang giao diện Tối", + "Show Tags": "Hiện Tags", + "Hide Tags": "Ẩn Tags", + "Description": "Mô tả", + "No monitors available.": "Không có kênh theo dõi nào.", + "Add one": "Thêm mới", + "No Monitors": "Không có kênh theo dõi", + "Untitled Group": "Nhóm không có tiêu đề", + "Services": "Dịch vụ", + "Discard": "Bỏ", + "Cancel": "Hủy", + "Powered by": "Được cung cấp bởi", + "shrinkDatabaseDescription": "Khởi chạy database VACCUM cho SQLite. Nếu database được tạo sau version 1.10.0, AUTO_VACCUM đã được bật sẵn, hành động này không cần thiết.", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API Username (incl. webapi_ prefix)", + "serwersmsAPIPassword": "API Password", + "serwersmsPhoneNumber": "Số điện thoại", + "serwersmsSenderName": "Tên người gửi SMS (Đã đăng ký qua portal)", + "stackfield": "Stackfield", + "Customize": "Customize", + "Custom Footer": "Custom Footer", + "Custom CSS": "Custom CSS", + "smtpDkimSettings": "Cài đặt xác thực Email(DKIM)", + "smtpDkimDesc": "Xem hướng dẫn tại {0}.", + "documentation": "Nodemailer DKIM", + "smtpDkimDomain": "Mail domain", + "smtpDkimKeySelector": "DKIM Key Selector", + "smtpDkimPrivateKey": "Private Key", + "smtpDkimHashAlgo": "Hash Algorithm (Tuỳ chọn)", + "smtpDkimheaderFieldNames": "Header Keys to sign (Tuỳ chọn)", + "smtpDkimskipFields": "Header Keys not to sign (Tuỳ chọn)", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API Endpoint", + "alertaEnvironment": "Environment", + "alertaApiKey": "API Key", + "alertaAlertState": "Alert State", + "alertaRecoverState": "Recover State", + "deleteStatusPageMsg": "Bạn có chắc chắn muốn xoá trang status này?", + "Proxies": "Proxies", + "default": "Mặc định", + "enabled": "Enabled", + "setAsDefault": "Set As Default", + "deleteProxyMsg": "Bạn muốn xoá proxy này cho tất cả monitors?", + "proxyDescription": "Proxies must be assigned to a monitor to function.", + "enableProxyDescription": "Proxy này chưa ảnh hưởng tới monitor requests cho tới khi được activated. Bạn có thể tạm thời tắt proxy cho tất cả monitors bằng trạng thái activation.", + "setAsDefaultProxyDescription": "Proxy này sẽ bật mặc định cho tất cả monitors mới. Bạn có thể tắt riêng lẻ proxy trên mỗi monitor.", + "Certificate Chain": "Certificate Chain", + "Valid": "Hợp lệ", + "Invalid": "Không hợp lệ", + "AccessKeyId": "AccessKey ID", + "SecretAccessKey": "AccessKey Secret", + "PhoneNumbers": "PhoneNumbers", + "TemplateCode": "TemplateCode", + "SignName": "SignName", + "Sms template must contain parameters: ": "Sms template must contain parameters: ", + "Bark Endpoint": "Bark Endpoint", + "WebHookUrl": "WebHookUrl", + "SecretKey": "SecretKey", + "For safety, must use secret key": "Để an toàn, hãy dùng secret key", + "Device Token": "Device Token", + "Platform": "Platform", + "iOS": "iOS", + "Android": "Android", + "Huawei": "Huawei", + "High": "High", + "Retry": "Retry", + "Topic": "Topic", + "WeCom Bot Key": "WeCom Bot Key", + "Setup Proxy": "Setup Proxy", + "Proxy Protocol": "Proxy Protocol", + "Proxy Server": "Proxy Server", + "Proxy server has authentication": "Proxy server has authentication", + "User": "User", + "Installed": "Installed", + "Not installed": "Not installed", + "Running": "Running", + "Not running": "Not running", + "Remove Token": "Remove Token", + "Start": "Start", + "Stop": "Stop", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "Thêm mới Status Page", + "Slug": "Slug", + "Accept characters:": "Accept characters:", + "startOrEndWithOnly": "Start or end with {0} only", + "No consecutive dashes": "No consecutive dashes", + "Next": "Next", + "The slug is already taken. Please choose another slug.": "The slug is already taken. Please choose another slug.", + "No Proxy": "No Proxy", + "HTTP Basic Auth": "HTTP Basic Auth", + "New Status Page": "New Status Page", + "Page Not Found": "Page Not Found", + "Reverse Proxy": "Reverse Proxy", + "Backup": "Backup", + "About": "About", + "wayToGetCloudflaredURL": "(Download cloudflared from {0})", + "cloudflareWebsite": "Cloudflare Website", + "Message:": "Message:", + "Don't know how to get the token? Please read the guide:": "Chưa biết cách lấy token? Xem hướng dẫn tại:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Nếu bạn đang dùng Cloudflare Tunnel, kết nối hiện tại có thể đang bị mất. Bạn có muốn dừng lại? Nhập lại password để xác nhận.", + "Other Software": "Phần mềm khác", + "For example: nginx, Apache and Traefik.": "Ví dụ: Nginx, Apache hay Traefik.", + "Please read": "Hãy xem qua", + "Subject:": "Subject:", + "Valid To:": "Valid To:", + "Days Remaining:": "Số ngày còn lại:", + "Issuer:": "Issuer:", + "Fingerprint:": "Fingerprint:", + "No status pages": "No status pages", + "Domain Name Expiry Notification": "Cảnh báo hạn hạn Domain Name", + "Proxy": "Proxy", + "Date Created": "Ngày khởi tạo", + "onebotHttpAddress": "OneBot HTTP Address", + "onebotMessageType": "OneBot Message Type", + "onebotGroupMessage": "Group", + "onebotPrivateMessage": "Private", + "onebotUserOrGroupId": "Group/User ID", + "onebotSafetyTips": "Để đảm bảo an toàn, hãy thiết lập access token", + "PushDeer Key": "PushDeer Key", + "Footer Text": "Footer Text", + "Show Powered By": "Show Powered By", + "Domain Names": "Domain Names", + "signedInDisp": "Signed in as {0}", + "signedInDispDisabled": "Auth Disabled." +} diff --git a/src/lang/zh-CN.json b/src/lang/zh-CN.json new file mode 100644 index 000000000..a75b73fb4 --- /dev/null +++ b/src/lang/zh-CN.json @@ -0,0 +1,683 @@ +{ + "languageName": "简体中文", + "checkEverySecond": "检测频率 {0} 秒", + "retryCheckEverySecond": "重试间隔 {0} 秒", + "resendEveryXTimes": "每 {0} 次失败则重复发送一次", + "resendDisabled": "为 0 时禁用重复发送", + "retriesDescription": "服务被标记为故障并发送通知之前的最大重试次数", + "ignoreTLSError": "忽略 HTTPS 站点的 TLS/SSL 错误", + "upsideDownModeDescription": "反转状态监控,如果服务可访问,则认为是故障。", + "maxRedirectDescription": "允许的最大重定向次数。设置为 0 禁用重定向。", + "enableGRPCTls": "允许通过 TLS 连接发送 gRPC 请求", + "grpcMethodDescription": "方法名会转换为小驼峰格式,例如 sayHello、check 等等", + "acceptedStatusCodesDescription": "选择被视为成功响应的状态码。", + "Maintenance": "维护", + "statusMaintenance": "维护", + "Schedule maintenance": "计划维护", + "Affected Monitors": "受影响的监控项", + "Pick Affected Monitors...": "选择受影响的监控项…", + "Start of maintenance": "维护开始", + "All Status Pages": "所有状态页面", + "Select status pages...": "选择状态页面…", + "recurringIntervalMessage": "每天一次 | 每 {0} 天一次", + "affectedMonitorsDescription": "选择受当前维护影响的监控项", + "affectedStatusPages": "在所选状态页面上显示此维护消息", + "atLeastOneMonitor": "至少选择一个受影响的监控项", + "passwordNotMatchMsg": "两次输入的密码不一致。", + "notificationDescription": "通知必须被分配给监控项才能正常工作。", + "keywordDescription": "在纯 HTML 或 JSON 响应中搜索关键字,区分大小写。", + "pauseDashboardHome": "暂停", + "deleteMonitorMsg": "确定要删除此监控项吗?", + "deleteMaintenanceMsg": "确定要删除此维护吗?", + "deleteNotificationMsg": "确定要为所有监控项删除此通知吗?", + "dnsPortDescription": "DNS 服务器端口,默认为 53,您可以在任何时候更改此端口.", + "resolverserverDescription": "默认服务器是 Cloudflare。您随时可以修改解析服务器。", + "rrtypeDescription": "选择要监控的资源记录类型", + "pauseMonitorMsg": "确定要暂停吗?", + "enableDefaultNotificationDescription": "新的监控项将默认启用此通知,您仍然为每个监控项单独禁用。", + "clearEventsMsg": "确定要删除此监控项的所有事件吗?", + "clearHeartbeatsMsg": "确定要删除此监控项的所有心跳状态吗?", + "confirmClearStatisticsMsg": "确定要删除所有统计信息吗?", + "importHandleDescription": "如果想跳过同名的监控项或消息通知,请选择“跳过已存在”。“覆盖”将删除所有现有的监控项和通知。", + "confirmImportMsg": "确定要导入备份吗?请确保已经选择了正确的导入选项。", + "twoFAVerifyLabel": "请输入令牌码以确认二次验证:", + "tokenValidSettingsMsg": "令牌码有效!您现在可以保存二次验证设置了。", + "confirmEnableTwoFAMsg": "确定要启用二次验证吗?", + "confirmDisableTwoFAMsg": "确定要禁用二次验证吗?", + "Settings": "设置", + "Dashboard": "仪表盘", + "New Update": "有新版本", + "Language": "语言", + "Appearance": "外观", + "Theme": "主题", + "General": "常规", + "Primary Base URL": "站点主 URL", + "Version": "版本", + "Check Update On GitHub": "检查 GitHub 上的更新", + "List": "列表", + "Add": "添加", + "Add New Monitor": "添加监控项", + "Quick Stats": "状态速览", + "Up": "正常", + "Down": "故障", + "Pending": "正在检测", + "Unknown": "未知", + "Pause": "暂停", + "Name": "名称", + "Status": "状态", + "DateTime": "日期时间", + "Message": "消息", + "No important events": "暂无重要事件", + "Resume": "恢复", + "Edit": "编辑", + "Delete": "删除", + "Current": "当前", + "Uptime": "在线时间", + "Cert Exp.": "证书有效期", + "day": "天", + "-day": " 天", + "hour": "小时", + "-hour": " 小时", + "Response": "响应", + "Ping": "Ping", + "Monitor Type": "监控类型", + "Keyword": "关键字", + "Friendly Name": "显示名称", + "URL": "URL", + "Hostname": "主机名", + "Port": "端口号", + "Heartbeat Interval": "心跳间隔", + "Retries": "重试次数", + "Heartbeat Retry Interval": "心跳重试间隔", + "Resend Notification if Down X times consequently": "连续失败时重复发送通知的间隔次数", + "Advanced": "高级", + "Upside Down Mode": "反转监控", + "Max. Redirects": "最大重定向次数", + "Accepted Status Codes": "有效状态码", + "Push URL": "推送 URL", + "needPushEvery": "您需要每 {0} 秒调用一次该 URL", + "pushOptionalParams": "可选参数:{0}", + "Save": "保存", + "Notifications": "通知", + "Not available, please setup.": "暂不可用,请先设置", + "Setup Notification": "设置通知", + "Light": "明亮", + "Dark": "黑暗", + "Auto": "自动", + "Theme - Heartbeat Bar": "主题 - 心跳栏", + "Normal": "正常", + "Bottom": "靠下", + "None": "不显示", + "Timezone": "时区", + "Search Engine Visibility": "搜索引擎可见性", + "Allow indexing": "允许索引", + "Discourage search engines from indexing site": "阻止搜索引擎索引网站", + "Change Password": "修改密码", + "Current Password": "当前密码", + "New Password": "新密码", + "Repeat New Password": "重复新密码", + "Update Password": "更新密码", + "Disable Auth": "禁用身份验证", + "Enable Auth": "启用身份验证", + "disableauth.message1": "是否确定 取消登录验证?", + "disableauth.message2": "这是为 有第三方认证 的用户提供的功能,如 Cloudflare Access", + "Please use this option carefully!": "请谨慎使用!", + "Logout": "退出", + "Leave": "离开", + "I understand, please disable": "我已了解,继续禁用", + "Confirm": "确认", + "Yes": "是", + "No": "否", + "Username": "用户名", + "Password": "密码", + "Remember me": "记住我", + "Login": "登录", + "No Monitors, please": "还没有监控项,", + "add one": "点击添加", + "Notification Type": "通知类型", + "Email": "邮件", + "Test": "测试", + "Certificate Info": "证书信息", + "Resolver Server": "解析服务器", + "Resource Record Type": "资源记录类型", + "Last Result": "上次结果", + "Create your admin account": "创建管理员账户", + "Repeat Password": "重复密码", + "Import Backup": "导入备份", + "Export Backup": "导出备份", + "Export": "导出", + "Import": "导入", + "respTime": "响应时间(毫秒)", + "notAvailableShort": "N/A", + "Default enabled": "默认开启", + "Apply on all existing monitors": "应用到所有现有监控项", + "Create": "创建", + "Clear Data": "清除数据", + "Events": "事件", + "Heartbeats": "心跳", + "Auto Get": "自动获取", + "backupDescription": "您可以将所有监控项和通知备份到 JSON 文件。", + "backupDescription2": "注意: 不包括历史状态和事件数据。", + "backupDescription3": "导出的文件可能包含敏感信息,例如通知的令牌信息,请小心存放!", + "alertNoFile": "请选择要导入的文件", + "alertWrongFileType": "请选择一个 JSON 文件", + "Clear all statistics": "清除所有统计数据", + "Skip existing": "跳过已存在", + "Overwrite": "覆盖", + "Options": "选项", + "Keep both": "全部保留", + "Verify Token": "验证令牌", + "Setup 2FA": "设置二次验证", + "Enable 2FA": "启用二次验证", + "Disable 2FA": "禁用二次验证", + "2FA Settings": "二次验证设置", + "Two Factor Authentication": "二次验证", + "Active": "激活", + "Inactive": "停用", + "Token": "令牌", + "Show URI": "显示 URI", + "Tags": "标签", + "Add New below or Select...": "在下面添加或选择…", + "Tag with this name already exist.": "相同名称的标签已存在。", + "Tag with this value already exist.": "相同内容的标签已存在。", + "color": "颜色", + "value (optional)": "值(可选)", + "Gray": "灰色", + "Red": "红色", + "Orange": "橙色", + "Green": "绿色", + "Blue": "蓝色", + "Indigo": "靛蓝", + "Purple": "紫色", + "Pink": "粉色", + "Search...": "搜索…", + "Avg. Ping": "平均 Ping", + "Avg. Response": "平均响应", + "Entry Page": "入口页面", + "statusPageNothing": "这里什么也没有,请添加一个分组或一个监控项。", + "No Services": "无服务", + "All Systems Operational": "所有服务运行正常", + "Partially Degraded Service": "部分服务出现故障", + "Degraded Service": "全部服务出现故障", + "Add Group": "添加分组", + "Add a monitor": "添加监控项", + "Edit Status Page": "编辑状态页面", + "Go to Dashboard": "前往仪表盘", + "Status Page": "状态页面", + "Status Pages": "状态页面", + "defaultNotificationName": "{notification} 通知({number})", + "here": "这里", + "Required": "必填", + "telegram": "Telegram", + "ZohoCliq": "ZohoCliq", + "Bot Token": "Bot Token", + "wayToGetTelegramToken": "您可以从 {0} 获取 Token。", + "Chat ID": "Chat ID", + "supportTelegramChatID": "支持对话/群组/频道的 Chat ID", + "wayToGetTelegramChatID": "您可以发送一条消息给您的机器人,然后访问此链接来查看 chat_id:", + "YOUR BOT TOKEN HERE": "这里替换成您的 BOT TOKEN", + "chatIDNotFound": "未找到 Chat ID,请先给您的机器人发送一条消息。", + "webhook": "Webhook", + "Post URL": "Post URL", + "Content Type": "Content Type", + "webhookJsonDesc": "{0} 适合现代的 HTTP 服务器,例如 Express.js", + "webhookFormDataDesc": "{multipart} 适合 PHP,其中 JSON 需要使用 {decodeFunction} 解码", + "webhookAdditionalHeadersTitle": "额外 Header", + "webhookAdditionalHeadersDesc": "设置通过此 Webhook 发送的额外 Header。", + "smtp": "电子邮件(SMTP)", + "secureOptionNone": "无 / STARTTLS(常用端口 25、587)", + "secureOptionTLS": "TLS(常用端口 465)", + "Ignore TLS Error": "忽略 TLS 错误", + "From Email": "发信人", + "emailCustomSubject": "邮件主题", + "To Email": "收信人", + "smtpCC": "抄送", + "smtpBCC": "密送", + "discord": "Discord", + "Discord Webhook URL": "Discord Webhook URL", + "wayToGetDiscordURL": "要获取,可以前往服务器设置 -> 整合 -> 创建 Webhook", + "Bot Display Name": "机器人显示名称", + "Prefix Custom Message": "自定义消息前缀", + "Hello @everyone is...": "{'@'}everyone,……", + "teams": "Microsoft Teams", + "Webhook URL": "Webhook URL", + "wayToGetTeamsURL": "您可以在{0}了解如何获取 Webhook URL。", + "wayToGetZohoCliqURL": "您可以在{0}了解如何创建 Webhook URL。", + "signal": "Signal", + "Number": "号码", + "Recipients": "收件人", + "needSignalAPI": "您需要有一个支持 REST API 的 Signal 客户端。", + "wayToCheckSignalURL": "您可以通过下面的 URL 了解如何设置:", + "signalImportant": "重要:您不能混合设定收件人的分组和号码!", + "gotify": "Gotify", + "Application Token": "Application Token", + "Server URL": "服务器 URL", + "Priority": "优先级", + "slack": "Slack", + "Icon Emoji": "Emoji 图标", + "Channel Name": "频道名称", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "关于 Webhook 的更多信息:{0}", + "aboutChannelName": "如果您想绕过 Webhook 频道,请在 {0} 字段输入所需的频道名称。例如:#other-channel", + "aboutKumaURL": "如果保留 Uptime Kuma URL 为空,将会默认指向项目的 GitHub 页面。", + "emojiCheatSheet": "Emoji 速查:{0}", + "rocket.chat": "Rocket.Chat", + "pushover": "Pushover", + "pushy": "Pushy", + "PushByTechulus": "Push by Techulus", + "octopush": "Octopush", + "promosms": "PromoSMS", + "clicksendsms": "ClickSend SMS", + "lunasea": "LunaSea", + "apprise": "Apprise (支持 50+ 种通知服务)", + "GoogleChat": "Google Chat(仅 Google Workspace)", + "pushbullet": "Pushbullet", + "AliyunSMS": "阿里云短信服务", + "Kook": "Kook", + "wayToGetKookBotToken": "在 {0} 创建应用并获取机器人 Token", + "wayToGetKookGuildID": "在 Kook 设置中打开“开发者模式”,然后右键点击频道可获取其 ID", + "Guild ID": "频道 ID", + "line": "Line Messenger", + "mattermost": "Mattermost", + "User Key": "User Key", + "Device": "设备", + "Message Title": "消息标题", + "Notification Sound": "通知铃声", + "More info on:": "更多信息:{0}", + "pushoverDesc1": "紧急优先级(2)会在一小时内每隔 30 秒重试一次。", + "pushoverDesc2": "如果您想发送通知给不同的设备,请填写“设备”字段。", + "SMS Type": "短信类型", + "octopushTypePremium": "Premium(快 - 推荐用于警报)", + "octopushTypeLowCost": "Low Cost(慢 - 有时会被运营商屏蔽)", + "checkPrice": "查看 {0} 的价格:", + "apiCredentials": "API Credentials", + "octopushLegacyHint": "您是否在使用旧版本的 Octopush(2011-2020)?", + "Check octopush prices": "查看 Octopush 的价格 {0}。", + "octopushPhoneNumber": "电话号码(国际格式,例如:+33612345678)", + "octopushSMSSender": "短信发送名称:3-11 位大小写字母、数字和空格(a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea 设备 ID", + "Apprise URL": "Apprise URL", + "Example:": "例如:{0}", + "Read more:": "了解更多:{0}", + "Status:": "状态:{0}", + "Read more": "了解更多", + "appriseInstalled": "Apprise 已安装", + "appriseNotInstalled": "Apprise 未安装。{0}", + "Access Token": "Access Token", + "Channel access token": "频道 Access Token", + "Line Developers Console": "Line 开发者控制台", + "lineDevConsoleTo": "Line 开发者控制台 - {0}", + "Basic Settings": "基本设置", + "User ID": "用户 ID", + "Messaging API": "Messaging API", + "wayToGetLineChannelToken": "首先访问 {0},创建一个提供者和频道(Messaging API),然后您就可以从上面提到的菜单获取频道的 Access Token 和用户 ID。", + "Icon URL": "图标 URL", + "aboutIconURL": "您可以在“图标 URL”中提供一个图片链接来覆盖默认的资料图片。如果设置了 Emoji 图标则此字段会被忽略。", + "aboutMattermostChannelName": "您可以覆盖 Webhook 发送消息的默认频道,只需在“频道名称”字段中输入您想要的频道名。这需要在 Mattermost 的 Webhook 设置中启用。例如:#other-channel", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - 便宜但是慢,并且容易超负荷。仅限波兰地区的收信人。", + "promosmsTypeFlash": "SMS FLASH - 消息会自动显示在收信人设备上。仅限波兰地区的收信人。", + "promosmsTypeFull": "SMS FULL - 高级短信,您可以使用您自己的发信人名称(需要先注册)。对于警报来说更可靠。", + "promosmsTypeSpeed": "SMS SPEED - 最高优先级。非常快速可靠,但更贵(大约两倍 SMS FULL 的价格)。", + "promosmsPhoneNumber": "电话号码(波兰地区收信人可以不填区号)", + "promosmsSMSSender": "短信发信人名称:已注册的名称或以下默认值之一:InfoSMS、SMS Info、MaxSMS、INFO、SMS", + "Feishu": "飞书", + "Feishu WebHookUrl": "飞书 WebHook URL", + "matrixHomeserverURL": "服务器 URL(包含 http(s):// 和可选的端口号)", + "Internal Room Id": "内部房间 ID", + "matrixDesc1": "您可以在 Matrix 客户端房间设置的高级选项内找到内部房间 ID。格式类似于 !QMdRCpUIfLwsfjxye6:home.server。", + "matrixDesc2": "请不要使用您自己的 Access Token,这将开放您所有的账户权限和您已加入房间的权限。我们强烈建议您创建一个新用户并邀请它至您接收通知的房间中。您可以运行以下命令来获取 Access Token:{0}", + "Method": "方法", + "Body": "请求体", + "Headers": "请求头", + "PushUrl": "推送 URL", + "HeadersInvalidFormat": "请求头不是有效的 JSON: ", + "BodyInvalidFormat": "请求体不是有效的 JSON: ", + "Monitor History": "监控历史", + "clearDataOlderThan": "保留监控历史数据 {0} 天。", + "PasswordsDoNotMatch": "密码不匹配", + "records": "记录", + "One record": "一条记录", + "steamApiKeyDescription": "要监控 Steam 游戏服务器,您需要 Steam Web-API 密钥。您可以在这里注册您的 API 密钥: ", + "Current User": "当前用户", + "topic": "Topic", + "topicExplanation": "要监控的 MQTT Topic", + "successMessage": "成功消息", + "successMessageExplanation": "视为成功的 MQTT 消息", + "recent": "最近", + "Done": "完成", + "Info": "信息", + "Security": "安全性", + "Steam API Key": "Steam API 密钥", + "Shrink Database": "压缩数据库", + "Pick a RR-Type...": "选择资源记录类型…", + "Pick Accepted Status Codes...": "选择有效的状态码…", + "Default": "默认", + "HTTP Options": "HTTP 选项", + "Create Incident": "创建事件", + "Title": "标题", + "Content": "内容", + "Style": "类型", + "info": "信息", + "warning": "警告", + "danger": "危险", + "error": "错误", + "critical": "关键", + "primary": "主要", + "light": "明亮", + "dark": "黑暗", + "Post": "发布", + "Please input title and content": "请输入标题和内容", + "Created": "创建时间", + "Last Updated": "更新时间", + "Unpin": "取消钉选", + "Switch to Light Theme": "切换到浅色主题", + "Switch to Dark Theme": "切换到深色主题", + "Show Tags": "显示标签", + "Hide Tags": "隐藏标签", + "Description": "描述", + "No monitors available.": "没有可用的监控项。", + "Add one": "添加一个", + "No Monitors": "没有监控项", + "Untitled Group": "无标题分组", + "Services": "服务", + "Discard": "放弃", + "Cancel": "取消", + "Powered by": "Powered by", + "shrinkDatabaseDescription": "触发 SQLite 数据库的 VACUUM 命令,如果您的数据库是在 1.10.0 版本之后创建的,则已启用 AUTO_VACUUM,不再需要此操作。", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API 用户名(包括 webapi_ 前缀)", + "serwersmsAPIPassword": "API 密码", + "serwersmsPhoneNumber": "电话号码", + "serwersmsSenderName": "SMS 发信人名称(需要在客户中心注册)", + "smseagle": "SMSEagle", + "smseagleTo": "电话号码", + "smseagleGroup": "通讯录群组名", + "smseagleContact": "通讯录联系人", + "smseagleRecipientType": "收信人类型", + "smseagleRecipient": "收信人(多个需用半角逗号分隔)", + "smseagleToken": "API Access token", + "smseagleUrl": "您的 SMSEagle 设备 URL", + "smseagleEncoding": "以 Unicode 发送", + "smseaglePriority": "消息优先级(0-9,默认为 0)", + "stackfield": "Stackfield", + "Customize": "自定义", + "Custom Footer": "自定义底部", + "Custom CSS": "自定义 CSS", + "smtpDkimSettings": "DKIM 设置", + "smtpDkimDesc": "请访问 Nodemailer DKIM {0} 了解配置方法。", + "documentation": "文档", + "smtpDkimDomain": "域名", + "smtpDkimKeySelector": "前缀选择器", + "smtpDkimPrivateKey": "密钥", + "smtpDkimHashAlgo": "哈希算法(可选)", + "smtpDkimheaderFieldNames": "包含在哈希计算对象内的 Header 列表(可选)", + "smtpDkimskipFields": "不包含在哈希计算对象内的 Header 列表(可选)", + "wayToGetPagerDutyKey": "您可以在 Service -> Service Directory -> (选择一个 Service) -> Integrations -> Add integration 页面中搜索“Events API V2”以获取此 Integration Key,更多信息请看{0}", + "Integration Key": "Integration Key", + "Integration URL": "Integration URL", + "Auto resolve or acknowledged": "自动标记为已解决或已读", + "do nothing": "不做任何操作", + "auto acknowledged": "自动标记为已读", + "auto resolve": "自动标记为已解决", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API 接入点", + "alertaEnvironment": "环境参数", + "alertaApiKey": "API Key", + "alertaAlertState": "报警时的严重性", + "alertaRecoverState": "恢复后的严重性", + "deleteStatusPageMsg": "您确认要删除此状态页吗?", + "Proxies": "代理", + "default": "默认", + "enabled": "启用", + "setAsDefault": "设为默认", + "deleteProxyMsg": "您确认要在所有监控项中删除此代理吗?", + "proxyDescription": "代理必须配置到至少一个监控项后才会工作。", + "enableProxyDescription": "此代理必须启用才能对监控项的网络请求起作用。您可以通过修改激活状态,临时在所有监控项中禁用此代理。", + "setAsDefaultProxyDescription": "此代理会对新创建的监控项默认激活,您仍可以在监控项配置中单独禁用此代理。", + "Certificate Chain": "证书链", + "Valid": "有效", + "Invalid": "无效", + "AccessKeyId": "AccessKey ID", + "SecretAccessKey": "AccessKey Secret", + "PhoneNumbers": "PhoneNumbers", + "TemplateCode": "TemplateCode", + "SignName": "SignName", + "Sms template must contain parameters: ": "短信模板必须包含以下变量:", + "Bark Endpoint": "Bark 接入点", + "Bark Group": "Bark 群组", + "Bark Sound": "Bark 铃声", + "DingDing": "钉钉自定义机器人", + "WebHookUrl": "钉钉自定义机器人 Webhook 地址", + "SecretKey": "钉钉自定义机器人加签密钥", + "For safety, must use secret key": "出于安全考虑,必须使用加签密钥", + "Device Token": "Apple Device Token", + "Platform": "平台", + "iOS": "iOS", + "Android": "Android", + "Huawei": "华为", + "High": "高", + "Retry": "重试次数", + "Topic": "Gorush Topic", + "WeCom": "企业微信群机器人", + "WeCom Bot Key": "企业微信群机器人 Key", + "Setup Proxy": "设置代理", + "Proxy Protocol": "代理协议", + "Proxy Server": "代理服务器", + "Server Address": "服务器地址", + "Proxy server has authentication": "代理服务器启用了身份验证功能", + "User": "用户名", + "Installed": "已安装", + "Not installed": "未安装", + "Running": "运行中", + "Not running": "未运行", + "Remove Token": "移除 Token", + "Start": "启动", + "Stop": "停止", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "添加新的状态页", + "Slug": "路径", + "Accept characters:": "可接受的字符:", + "startOrEndWithOnly": "开头和结尾必须为 {0}", + "No consecutive dashes": "不能有连续的破折号", + "Next": "下一步", + "The slug is already taken. Please choose another slug.": "该路径已被使用。请选择其他路径。", + "No Proxy": "无代理", + "Authentication": "验证", + "HTTP Basic Auth": "HTTP 基础身份验证", + "New Status Page": "新的状态页", + "Page Not Found": "未找到该页面", + "Reverse Proxy": "反向代理", + "Backup": "备份", + "About": "关于", + "wayToGetCloudflaredURL": "(可从 {0} 下载 cloudflared)", + "cloudflareWebsite": "Cloudflare 网站", + "Message:": "信息:", + "Don't know how to get the token? Please read the guide:": "不知道如何获取 Token?请阅读指南:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "如果您正在通过 Cloudflare Tunnel 访问网站,则停止可能会导致当前连接断开。您确定要停止吗?请输入密码以确认。", + "HTTP Headers": "HTTP 头", + "Trust Proxy": "可信的代理类字段", + "Other Software": "其他软件", + "For example: nginx, Apache and Traefik.": "例如:nginx、Apache 和 Traefik。", + "Please read": "请阅读", + "Subject:": "颁发给:", + "Valid To:": "有效期至:", + "Days Remaining:": "剩余有效天数:", + "Issuer:": "颁发者:", + "Fingerprint:": "指纹:", + "No status pages": "无状态页", + "Domain Name Expiry Notification": "域名到期时通知", + "Proxy": "代理", + "Date Created": "创建于", + "HomeAssistant": "Home Assistant", + "onebotHttpAddress": "OneBot HTTP 地址", + "onebotMessageType": "OneBot 消息类型", + "onebotGroupMessage": "群聊", + "onebotPrivateMessage": "私聊", + "onebotUserOrGroupId": "群组/用户 ID", + "onebotSafetyTips": "出于安全原因,请务必设置 AccessToken", + "PushDeer Key": "PushDeer Key", + "Footer Text": "底部自定义文本", + "Show Powered By": "显示 Powered By", + "Domain Names": "域名", + "signedInDisp": "当前用户: {0}", + "signedInDispDisabled": "已禁用身份验证", + "RadiusSecret": "Radius 共享机密", + "RadiusSecretDescription": "客户端和服务器之间共享的密钥", + "RadiusCalledStationId": "NAS 网络访问服务器号码(Called Station Id)", + "RadiusCalledStationIdDescription": "所访问的服务器的标识", + "RadiusCallingStationId": "呼叫方号码(Calling Station Id)", + "RadiusCallingStationIdDescription": "发出请求的设备的标识", + "Certificate Expiry Notification": "证书到期时通知", + "API Username": "API Username", + "API Key": "API Key", + "Recipient Number": "收件人手机号码", + "From Name/Number": "发件人名称/手机号码", + "Leave blank to use a shared sender number.": "留空以使用平台共享的发件人手机号码", + "Octopush API Version": "Octopush API 版本", + "Legacy Octopush-DM": "旧版本 Octopush-DM", + "endpoint": "接入点", + "octopushAPIKey": "控制台 HTTP API credentials 里的 \"API key\"", + "octopushLogin": "控制台 HTTP API credentials 里的 \"Login\"", + "promosmsLogin": "API 登录名", + "promosmsPassword": "API 密码", + "pushoversounds pushover": "Pushover(默认)", + "pushoversounds bike": "Bike", + "pushoversounds bugle": "Bugle", + "pushoversounds cashregister": "Cash Register", + "pushoversounds classical": "Classical", + "pushoversounds cosmic": "Cosmic", + "pushoversounds falling": "Falling", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Incoming", + "pushoversounds intermission": "Intermission", + "pushoversounds magic": "Magic", + "pushoversounds mechanical": "Mechanical", + "pushoversounds pianobar": "Piano Bar", + "pushoversounds siren": "Siren", + "pushoversounds spacealarm": "Space Alarm", + "pushoversounds tugboat": "Tug Boat", + "pushoversounds alien": "Alien Alarm(长铃声)", + "pushoversounds climb": "Climb(长铃声)", + "pushoversounds persistent": "Persistent(长铃声)", + "pushoversounds echo": "Pushover Echo(长铃声)", + "pushoversounds updown": "Up Down(长铃声)", + "pushoversounds vibrate": "仅震动", + "pushoversounds none": "无(禁音)", + "pushyAPIKey": "API 密钥", + "pushyToken": "设备 Token", + "Show update if available": "有更新时通知", + "Also check beta release": "一并检查 Beta 版更新", + "Using a Reverse Proxy?": "正在使用反向代理?", + "Check how to config it for WebSocket": "查看如何将反向代理与 WebSocket 一起使用", + "Steam Game Server": "Steam 游戏服务器", + "Most likely causes:": "最可能的原因:", + "The resource is no longer available.": "您所请求的资源已不再可用;", + "There might be a typing error in the address.": "您输入的地址可能有误。", + "What you can try:": "您可以尝试以下操作:", + "Retype the address.": "重新输入地址;", + "Go back to the previous page.": "返回到上一页面。", + "Coming Soon": "即将推出", + "wayToGetClickSendSMSToken": "您可以在{0}获取 API Username 和 API Key。", + "Connection String": "连接字符串", + "Query": "查询语句", + "settingsCertificateExpiry": "TLS 证书过期通知", + "certificationExpiryDescription": "HTTPS 监控项发现被监控目标的 TLS 证书剩余有效期少于以下天数时将发出通知:", + "Setup Docker Host": "配置 Docker 宿主信息", + "Connection Type": "连接方式", + "Docker Daemon": "Docker 守护进程", + "deleteDockerHostMsg": "您确定您要删除此 Docker 宿主设置吗?这会影响所有 Docker 监控项", + "socket": "Socket", + "tcp": "TCP / HTTP", + "Docker Container": "Docker 容器", + "Container Name / ID": "容器名称 / ID", + "Docker Host": "Docker 宿主", + "Docker Hosts": "Docker 宿主", + "ntfy Topic": "ntfy Topic", + "Domain": "域名", + "Workstation": "工作站", + "disableCloudflaredNoAuthMsg": "您现在正处于 No Auth 模式,无需输入密码", + "trustProxyDescription": "信任 'X-Forwarded-*' 头。如果您的 Uptime Kuma 是通过 Nginx 或 Apache 等反代服务对外提供访问的话,则您应当启用本功能以获取正确的客户端 IP。", + "wayToGetLineNotifyToken": "您可以在 {0} 获取 Access token", + "Examples": "例如", + "Home Assistant URL": "Home Assistant 地址", + "Long-Lived Access Token": "长期访问令牌", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "长期访问令牌可通过点击左下角您的用户名,滚动到页面底部并点击 Create Token 按钮获取。", + "Notification Service": "Notification Service", + "default: notify all devices": "默认:通知所有设备", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "通知服务的列表可在 Home Assistant 中的 Developer Tools > Services 通过搜索您的设备或手机的名称来获得。", + "Automations can optionally be triggered in Home Assistant:": "可以在 Home Assistant 使用下列模板设置自动化操作的触发条件:", + "Trigger type:": "触发类型:", + "Event type:": "事件类型:", + "Event data:": "事件数据:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "然后您可以选择关联操作,例如切换到 RGB 灯发出红光的场景", + "Frontend Version": "前端版本", + "Frontend Version do not match backend version!": "前端版本与后端版本不匹配!", + "Base URL": "API 基础地址", + "goAlertInfo": "GoAlert 是一个用于呼叫调度、自动汇报和通知(如 SMS 或语音呼叫)的开源应用程序。在正确的时间以正确的方式自动让正确的人参与!{0}", + "goAlertIntegrationKeyInfo": "使用形如 aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee 的通用 API 集成密钥,通常是复制来的链接中的 token 参数值。", + "goAlert": "GoAlert", + "backupOutdatedWarning": "已弃用:由于大量新功能的加入,以及备份功能没有时时维护,现在备份功能已经无法生成完整的备份和恢复完整的设置。", + "backupRecommend": "请改为直接备份 docker 卷或者数据文件夹(./data/)。", + "Optional": "可选的", + "squadcast": "Squadcast", + "SendKey": "SendKey", + "SMSManager API Docs": "SMSManager API 文档在", + "Gateway Type": "网关类型", + "SMSManager": "SMSManager", + "You can divide numbers with": "可用的分隔符:", + "or": "或", + "recurringInterval": "时间间隔", + "Recurring": "重复", + "strategyManual": "手动启用/禁用", + "warningTimezone": "使用服务器时区", + "weekdayShortMon": "周一", + "weekdayShortTue": "周二", + "weekdayShortWed": "周三", + "weekdayShortThu": "周四", + "weekdayShortFri": "周五", + "weekdayShortSat": "周六", + "weekdayShortSun": "周日", + "dayOfWeek": "每周计划", + "dayOfMonth": "每月计划", + "lastDay": "结束日", + "lastDay1": "每月最后一天", + "lastDay2": "每月倒数第二天", + "lastDay3": "每月倒数第三天", + "lastDay4": "每月倒数第四天", + "No Maintenance": "无维护计划", + "pauseMaintenanceMsg": "确定要暂停吗?", + "maintenanceStatus-under-maintenance": "正在维护", + "maintenanceStatus-inactive": "未启用", + "maintenanceStatus-scheduled": "已计划", + "maintenanceStatus-ended": "已结束", + "maintenanceStatus-unknown": "未知", + "Display Timezone": "显示时区", + "Server Timezone": "服务器时区", + "statusPageMaintenanceEndDate": "结束时间", + "IconUrl": "图标 URL", + "Enable DNS Cache": "启用 DNS 缓存", + "Enable": "启用", + "Disable": "禁用", + "dnsCacheDescription": "可能无法在某些 IPv6 环境工作,如果遇到问题请禁用。", + "Single Maintenance Window": "单一时间窗口", + "Maintenance Time Window of a Day": "每日维护时间窗口", + "Effective Date Range": "生效日期范围", + "Schedule Maintenance": "计划维护", + "Date and Time": "日期时间", + "DateTime Range": "日期时间范围", + "Strategy": "策略", + "Free Mobile User Identifier": "Free Mobile User Identifier", + "Free Mobile API Key": "Free Mobile API Key", + "Enable TLS": "启用 TLS", + "Proto Service Name": "Proto 服务名称", + "Proto Method": "Proto 方法", + "Proto Content": "Proto 内容", + "Economy": "经济", + "Lowcost": "低价", + "high": "高价", + "General Monitor Type": "常规监控类型", + "Passive Monitor Type": "被动监控类型", + "Specific Monitor Type": "针对监控类型" +} diff --git a/src/lang/zh-HK.json b/src/lang/zh-HK.json new file mode 100644 index 000000000..0bc07786c --- /dev/null +++ b/src/lang/zh-HK.json @@ -0,0 +1,388 @@ +{ + "languageName": "繁體中文 (香港)", + "Settings": "設定", + "Dashboard": "主控台", + "New Update": "有更新", + "Language": "語言", + "Appearance": "外觀", + "Theme": "主題", + "General": "一般", + "Version": "版本", + "Check Update On GitHub": "到 Github 查看更新", + "List": "列表", + "Add": "新增", + "Add New Monitor": "新增監測器", + "Quick Stats": "綜合數據", + "Up": "上線", + "Down": "離線", + "Pending": "待定", + "Unknown": "不明", + "Pause": "暫停", + "pauseDashboardHome": "暫停", + "Name": "名稱", + "Status": "狀態", + "DateTime": "日期時間", + "Message": "內容", + "No important events": "沒有重要事件", + "Resume": "恢復", + "Edit": "編輯", + "Delete": "刪除", + "Current": "目前", + "Uptime": "上線率", + "Cert Exp.": "証書期限", + "day": "日", + "-day": "日", + "hour": "小時", + "-hour": "小時", + "checkEverySecond": "每 {0} 秒檢查一次", + "Response": "反應時間", + "Ping": "反應時間", + "Monitor Type": "監測器類型", + "Keyword": "關鍵字", + "Friendly Name": "名稱", + "URL": "網址 URL", + "Hostname": "Hostname", + "Port": "Port", + "Heartbeat Interval": "檢查間距", + "Retries": "重試數次確定為離線", + "retriesDescription": "重試多少次後才判定為離線及傳送通知。如數值為 0 會即判定為離線及傳送通知。", + "Advanced": "進階", + "ignoreTLSError": "忽略 TLS/SSL 錯誤", + "Upside Down Mode": "反轉模式", + "upsideDownModeDescription": "反轉狀態,如網址是可正常瀏覽,會被判定為 '離線/DOWN'", + "Max. Redirects": "跟隨重新導向 (Redirect) 的次數", + "maxRedirectDescription": "設為 0 即不跟蹤", + "Accepted Status Codes": "接受為上線的 HTTP 狀態碼", + "acceptedStatusCodesDescription": "可多選", + "Save": "儲存", + "Notifications": "通知", + "Not available, please setup.": "無法使用,需要設定", + "Setup Notification": "設定通知", + "Light": "明亮", + "Dark": "暗黑", + "Auto": "自動", + "Theme - Heartbeat Bar": "監測器列表 狀態條外觀", + "Normal": "一般", + "Bottom": "下方", + "None": "沒有", + "Timezone": "時區", + "Search Engine Visibility": "是否允許搜尋器索引", + "Allow indexing": "允許索引", + "Discourage search engines from indexing site": "不建議搜尋器索引", + "Change Password": "變更密碼", + "Current Password": "目前密碼", + "New Password": "新密碼", + "Repeat New Password": "確認新密碼", + "passwordNotMatchMsg": "密碼不一致", + "Update Password": "更新密碼", + "Disable Auth": "取消登入認証", + "Enable Auth": "開啟登入認証", + "disableauth.message1": "你是否確認取消登入認証?", + "disableauth.message2": "這個功能是設計給已有第三方認証的用家,例如 Cloudflare Access。", + "Please use this option carefully!": "請小心使用。", + "Logout": "登出", + "notificationDescription": "新增後,你需要在監測器裡啟用。", + "Leave": "離開", + "I understand, please disable": "我明白,請取消登入認証", + "Confirm": "確認", + "Yes": "是", + "No": "否", + "Username": "帳號", + "Password": "密碼", + "Remember me": "記住我", + "Login": "登入", + "No Monitors, please": "沒有監測器,請", + "add one": "新增", + "Notification Type": "通知類型", + "Email": "電郵", + "Test": "測試", + "keywordDescription": "搜索 HTML 或 JSON 裡是否有出現關鍵字(注意英文大細階)", + "Certificate Info": "憑證詳細資料", + "deleteMonitorMsg": "是否確定刪除這個監測器?", + "deleteNotificationMsg": "是否確定刪除這個通知設定?如監測器啟用了這個通知,將會收不到通知。", + "Resolver Server": "DNS 伺服器", + "Resource Record Type": "DNS 記錄類型", + "resolverserverDescription": "預設值為 Cloudflare DNS 伺服器,你可以轉用其他 DNS 伺服器。", + "rrtypeDescription": "請選擇 DNS 記錄類型", + "pauseMonitorMsg": "是否確定暫停?", + "Last Result": "最後結果", + "Create your admin account": "建立管理員帳號", + "Repeat Password": "重複密碼", + "respTime": "反應時間 (ms)", + "notAvailableShort": "N/A", + "Create": "建立", + "clearEventsMsg": "是否確定刪除這個監測器的所有事件?", + "clearHeartbeatsMsg": "是否確定刪除這個監測器的所有脈搏資料?", + "confirmClearStatisticsMsg": "是否確定刪除所有監測器的脈搏資料?(您的監測器會繼續正常運作)", + "Clear Data": "清除資料", + "Events": "事件", + "Heartbeats": "脈搏", + "Auto Get": "自動獲取", + "enableDefaultNotificationDescription": "新增監測器時這個通知會預設啟用,當然每個監測器亦可分別控制開關。", + "Default enabled": "預設通知", + "Also apply to existing monitors": "同時取用至目前所有監測器", + "Export": "匯出", + "Import": "匯入", + "backupDescription": "您可以備份所有監測器及所有通知。", + "backupDescription2": "註:此備份不包括歷史記錄。", + "backupDescription3": "此備份可能包含了一些敏感資料如通知裡的 Token,請小心保存備份。", + "alertNoFile": "請選擇一個檔案", + "alertWrongFileType": "請選擇 JSON 檔案", + "twoFAVerifyLabel": "Please type in your token to verify that 2FA is working", + "tokenValidSettingsMsg": "Token is valid! You can now save the 2FA settings.", + "confirmEnableTwoFAMsg": "Are you sure you want to enable 2FA?", + "confirmDisableTwoFAMsg": "Are you sure you want to disable 2FA?", + "Apply on all existing monitors": "套用至目前所有監測器", + "Verify Token": "驗証 Token", + "Setup 2FA": "設定 2FA", + "Enable 2FA": "開啟 2FA", + "Disable 2FA": "關閉 2FA", + "2FA Settings": "2FA 設定", + "Two Factor Authentication": "雙重認證", + "Active": "生效", + "Inactive": "未生效", + "Token": "Token", + "Show URI": "顯示 URI", + "Clear all statistics": "清除所有歷史記錄", + "retryCheckEverySecond": "Retry every {0} seconds.", + "importHandleDescription": "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.", + "confirmImportMsg": "Are you sure to import the backup? Please make sure you've selected the right import option.", + "Heartbeat Retry Interval": "Heartbeat Retry Interval", + "Import Backup": "匯入備份", + "Export Backup": "匯出備份", + "Skip existing": "略過已存在的", + "Overwrite": "覆蓋", + "Options": "選項", + "Keep both": "兩者並存", + "Tags": "標籤", + "Add New below or Select...": "Add New below or Select...", + "Tag with this name already exist.": "Tag with this name already exist.", + "Tag with this value already exist.": "Tag with this value already exist.", + "color": "顏色", + "value (optional)": "值 (非必需)", + "Gray": "灰", + "Red": "紅", + "Orange": "橙", + "Green": "綠", + "Blue": "藍", + "Indigo": "靛", + "Purple": "紫", + "Pink": "粉紅", + "Search...": "搜尋...", + "Avg. Ping": "平均反應時間", + "Avg. Response": "平均反應時間", + "Entry Page": "Entry Page", + "statusPageNothing": "Nothing here, please add a group or a monitor.", + "No Services": "沒有服務", + "All Systems Operational": "一切正常", + "Partially Degraded Service": "部份服務受阻", + "Degraded Service": "服務受阻", + "Add Group": "新增群組", + "Add a monitor": " 新增監測器", + "Edit Status Page": "編輯 Status Page", + "Go to Dashboard": "前往主控台", + "Status Page": "Status Page", + "Status Pages": "Status Pages", + "telegram": "Telegram", + "webhook": "Webhook", + "smtp": "電郵 (SMTP)", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (支援 50 多種通知)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "deleteStatusPageMsg": "是否確定刪除這個 Status Page?", + "Push URL": "推送網址", + "needPushEvery": "您應每 {0} 秒呼叫此網址。", + "pushOptionalParams": "選填參數:{0}", + "defaultNotificationName": "我的 {notification} 通知 ({number})", + "here": "此處", + "Required": "必填", + "Bot Token": "機器人權杖", + "wayToGetTelegramToken": "您可以從 {0} 取得 Token。", + "Chat ID": "聊天 ID", + "supportTelegramChatID": "支援 對話/群組/頻道的聊天 ID", + "wayToGetTelegramChatID": "傳送訊息給機器人,並前往以下網址以取得您的 chat ID:", + "YOUR BOT TOKEN HERE": "在此填入您的機器人權杖", + "chatIDNotFound": "找不到 Chat ID;請先傳送訊息給機器人", + "Post URL": "Post 網址", + "Content Type": "Content Type", + "webhookJsonDesc": "{0} 適合任何現代的 HTTP 伺服器,如 Express.js", + "webhookFormDataDesc": "{multipart} 適合 PHP。 JSON 必須先經由 {decodeFunction} 剖析。", + "secureOptionNone": "無 / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "忽略 TLS 錯誤", + "From Email": "寄件人", + "emailCustomSubject": "自訂主旨", + "To Email": "收件人", + "smtpCC": "CC", + "smtpBCC": "BCC", + "Discord Webhook URL": "Discord Webhook 網址", + "wayToGetDiscordURL": "您可以前往伺服器設定 -> 整合 -> Webhook -> 新 Webhook 以取得", + "Bot Display Name": "機器人顯示名稱", + "Prefix Custom Message": "前綴自訂訊息", + "Webhook URL": "Webhook 網址", + "wayToGetTeamsURL": "您可以前往此頁面以了解如何建立 Webhook 網址 {0}。", + "Number": "號碼", + "Recipients": "收件人", + "needSignalAPI": "您需要有 REST API 的 Signal 客戶端。", + "wayToCheckSignalURL": "您可以前往下列網址以了解如何設定:", + "signalImportant": "注意: 不得混合收件人的群組和號碼!", + "Application Token": "應用程式權杖", + "Server URL": "伺服器網址", + "Priority": "優先度", + "Icon Emoji": "Emoji 圖示", + "Channel Name": "頻道名稱", + "Uptime Kuma URL": "Uptime Kuma 網址", + "aboutWebhooks": "更多關於 Webhook 的資訊: {0}", + "aboutChannelName": "如果您不想使用 Webhook 頻道,請在 {0} 頻道名稱欄位填入您想使用的頻道。例如: #其他頻道", + "aboutKumaURL": "如果您未填入 Uptime Kuma 網址。將預設使用專案 Github 頁面。", + "emojiCheatSheet": "Emoji 一覽表: {0}", + "PushByTechulus": "Push by Techulus", + "clicksendsms": "ClickSend SMS", + "GoogleChat": "Google Chat (僅限 Google Workspace)", + "User Key": "使用者金鑰", + "Device": "裝置", + "Message Title": "訊息標題", + "Notification Sound": "通知音效", + "More info on:": "更多資訊: {0}", + "pushoverDesc1": "緊急優先度 (2) 的重試間隔為 30 秒並且會在 1 小時後過期。", + "pushoverDesc2": "如果您想要傳送通知到不同裝置,請填寫裝置欄位。", + "SMS Type": "簡訊類型", + "octopushTypePremium": "Premium (快速 - 建議用於警報)", + "octopushTypeLowCost": "Low Cost (緩慢 - 有時會被營運商阻擋)", + "checkPrice": "查看 {0} 價格:", + "apiCredentials": "API 認證", + "octopushLegacyHint": "您使用的是舊版的 Octopush (2011-2020) 還是新版?", + "Check octopush prices": "查看 octopush 價格 {0}。", + "octopushPhoneNumber": "電話號碼 (intl 格式,例如:+33612345678) ", + "octopushSMSSender": "簡訊寄件人名稱:3-11位英數字元及空白 (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea 裝置 ID", + "Apprise URL": "Apprise 網址", + "Example:": "範例:{0}", + "Read more:": "深入瞭解:{0}", + "Status:": "狀態:{0}", + "Read more": "深入瞭解", + "appriseInstalled": "已安裝 Apprise。", + "appriseNotInstalled": "尚未安裝 Apprise。{0}", + "Access Token": "存取權杖", + "Channel access token": "頻道存取權杖", + "Line Developers Console": "Line 開發者控制台", + "lineDevConsoleTo": "Line 開發者控制台 - {0}", + "Basic Settings": "基本設定", + "User ID": "使用者 ID", + "Messaging API": "Messaging API", + "wayToGetLineChannelToken": "首先,前往 {0},建立 provider 和 channel (Messaging API)。接著您就可以從上面提到的選單項目中取得頻道存取權杖及使用者 ID。", + "Icon URL": "圖示網址", + "aboutIconURL": "您可以在 \"圖示網址\" 中提供圖片網址以覆蓋預設個人檔案圖片。若已設定 Emoji 圖示,將忽略此設定。", + "aboutMattermostChannelName": "您可以在 \"頻道名稱\" 欄位中填寫頻道名稱以覆蓋 Webhook 的預設頻道。必須在 Mattermost 的 Webhook 設定中啟用。例如:#其他頻道", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - 便宜,但是很慢且經常過載。僅限位於波蘭的收件人。", + "promosmsTypeFlash": "SMS FLASH - 訊息會自動在收件人的裝置上顯示。僅限位於波蘭的收件人。", + "promosmsTypeFull": "SMS FULL - 高級版,您可以使用您的寄件人名稱 (必須先註冊名稱。對於警報來說十分可靠。", + "promosmsTypeSpeed": "SMS SPEED - 系統中的最高優先度。快速、可靠,但昂貴 (約 SMS FULL 的兩倍價格)。", + "promosmsPhoneNumber": "電話號碼 (若收件人位於波蘭則無需輸入區域代碼)", + "promosmsSMSSender": "簡訊寄件人名稱:預先註冊的名稱或以下的預設名稱:InfoSMS、SMS Info、MaxSMS、INFO、SMS", + "Feishu WebHookUrl": "飛書 WebHook 網址", + "matrixHomeserverURL": "Homeserver 網址 (開頭為 http(s)://,結尾可能帶連接埠)", + "Internal Room Id": "Internal Room ID", + "matrixDesc1": "您可以在 Matrix 客戶端的房間設定中的進階選項找到 internal room ID。應該看起來像 !QMdRCpUIfLwsfjxye6:home.server。", + "matrixDesc2": "使用您自己的 Matrix 使用者存取權杖將賦予存取您的帳號和您加入的房間的完整權限。建議建立新使用者,並邀請至您想要接收通知的房間中。您可以執行 {0} 以取得存取權杖", + "Method": "方法", + "Body": "主體", + "Headers": "標頭", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "要求標頭不是有效的 JSON:", + "BodyInvalidFormat": "請求主體不是有效的 JSON:", + "Monitor History": "監測器歷史紀錄", + "clearDataOlderThan": "保留 {0} 天內的監測器歷史紀錄。", + "PasswordsDoNotMatch": "密碼不相符。", + "records": "記錄", + "One record": "一項記錄", + "Showing {from} to {to} of {count} records": "正在顯示 {count} 項記錄中的 {from} 至 {to} 項", + "steamApiKeyDescription": "若要監測 Steam 遊戲伺服器,您將需要 Steam Web-API 金鑰。您可以在此註冊您的 API 金鑰:", + "Current User": "目前使用者", + "recent": "最近", + "Done": "完成", + "Info": "資訊", + "Security": "安全性", + "Steam API Key": "Steam API 金鑰", + "Shrink Database": "壓縮資料庫", + "Pick a RR-Type...": "選擇資源記錄類型...", + "Pick Accepted Status Codes...": "選擇可接受的狀態碼...", + "Default": "預設", + "HTTP Options": "HTTP 選項", + "Create Incident": "建立事件", + "Title": "標題", + "Content": "內容", + "Style": "樣式", + "info": "資訊", + "warning": "警告", + "danger": "危險", + "primary": "主要", + "light": "淺色", + "dark": "暗色", + "Post": "發佈", + "Please input title and content": "請輸入標題及內容", + "Created": "建立", + "Last Updated": "最後更新", + "Unpin": "取消釘選", + "Switch to Light Theme": "切換至淺色佈景主題", + "Switch to Dark Theme": "切換至深色佈景主題", + "Show Tags": "顯示標籤", + "Hide Tags": "隱藏標籤", + "Description": "描述", + "No monitors available.": "沒有可用的監測器。", + "Add one": "新增一個", + "No Monitors": "無監測器", + "Untitled Group": "未命名群組", + "Services": "服務", + "Discard": "捨棄", + "Cancel": "取消", + "shrinkDatabaseDescription": "觸發 SQLite 的資料庫清理 (VACUUM)。如果您的資料庫是在 1.10.0 版本後建立,AUTO_VACUUM 已自動啟用,則無需此操作。", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API 使用者名稱 (包括 webapi_ 前綴)", + "serwersmsAPIPassword": "API 密碼", + "serwersmsPhoneNumber": "電話號碼", + "serwersmsSenderName": "SMS 寄件人名稱 (由客戶入口網站註冊)", + "stackfield": "Stackfield", + "smtpDkimSettings": "DKIM 設定", + "smtpDkimDesc": "請參考 Nodemailer DKIM {0} 使用方式。", + "documentation": "文件", + "smtpDkimDomain": "網域名稱", + "smtpDkimKeySelector": "DKIM 選取器", + "smtpDkimPrivateKey": "私密金鑰", + "smtpDkimHashAlgo": "雜湊演算法 (選填)", + "smtpDkimheaderFieldNames": "要簽署的郵件標頭 (選填)", + "smtpDkimskipFields": "不簽署的郵件標頭 (選填)", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API Endpoint", + "alertaEnvironment": "環境", + "alertaApiKey": "API 金鑰", + "alertaAlertState": "警示狀態", + "alertaRecoverState": "恢復狀態", + "Proxies": "代理伺服器", + "default": "預設", + "enabled": "啟用", + "setAsDefault": "設為預設", + "deleteProxyMsg": "您確定要為所有監測器刪除此代理伺服器嗎?", + "proxyDescription": "必須將代理伺服器指派給監測器才能運作。", + "enableProxyDescription": "此代理伺服器在啟用前不會在監測器上生效,您可以藉由控制啟用狀態來暫時對所有的監測器停用代理伺服器。", + "setAsDefaultProxyDescription": "預設情況下,新監測器將啟用此代理伺服器。您仍可分別停用各監測器的代理伺服器。", + "Maintenance": "維護", + "statusMaintenance": "維護中", + "Enable DNS Cache": "啟用 DNS 快取", + "Enable": "啟用", + "Disable": "停用" +} diff --git a/src/lang/zh-TW.json b/src/lang/zh-TW.json new file mode 100644 index 000000000..142ebf2d4 --- /dev/null +++ b/src/lang/zh-TW.json @@ -0,0 +1,672 @@ +{ + "languageName": "繁體中文 (台灣)", + "checkEverySecond": "每 {0} 秒檢查一次", + "retryCheckEverySecond": "每 {0} 秒重試一次", + "resendEveryXTimes": "每 {0} 次便重新傳送", + "resendDisabled": "重新傳送已停用", + "retriesDescription": "在服務被標記為離線並傳送通知前的最大重試次數", + "ignoreTLSError": "忽略 HTTPS 網站的 TLS/SSL 錯誤", + "upsideDownModeDescription": "反轉顯示狀態。若服務可以連線,將顯示離線。", + "maxRedirectDescription": "最大重新導向跟隨次數。設為 0 將停用重新導向。", + "enableGRPCTls": "允許以 TLS 連線傳送 gRPC 要求", + "grpcMethodDescription": "方法名稱將轉換至駝峰式命名,如 sayHello、check 等。", + "acceptedStatusCodesDescription": "選擇視為成功回應的狀態碼。", + "Maintenance": "維護", + "statusMaintenance": "維護", + "Schedule maintenance": "排程維護", + "Affected Monitors": "受影響的監測器", + "Pick Affected Monitors...": "挑選受影響的監測器...", + "Start of maintenance": "維護起始", + "All Status Pages": "所有狀態頁", + "Select status pages...": "選擇狀態頁...", + "recurringIntervalMessage": "每日執行 | 每 {0} 天執行", + "affectedMonitorsDescription": "選擇受目前維護影響的監測器", + "affectedStatusPages": "在已選取的狀態頁中顯示此維護訊息", + "atLeastOneMonitor": "至少選擇一個受影響的監測器", + "passwordNotMatchMsg": "密碼不相符。", + "notificationDescription": "必須將通知指派給監測器才能運作。", + "keywordDescription": "HTML 或 JSON 回應的搜尋關鍵字。區分大小寫。", + "pauseDashboardHome": "暫停", + "deleteMonitorMsg": "您確定要刪除此監測器嗎?", + "deleteMaintenanceMsg": "您確定要刪除此維護嗎?", + "deleteNotificationMsg": "您確定要為所有監測器刪除此通知嗎?", + "dnsPortDescription": "DNS 伺服器連接埠。預設為 53。您可以隨時變更連接埠。", + "resolverserverDescription": "Cloudflare 為預設伺服器。您可以隨時更換解析伺服器。", + "rrtypeDescription": "選擇您想要監測的資源記錄類型", + "pauseMonitorMsg": "您確定要暫停嗎?", + "enableDefaultNotificationDescription": "預設情況下,新監測器將啟用此通知。您仍可分別停用各監測器的通知。", + "clearEventsMsg": "您確定要刪除此監測器的所有事件嗎?", + "clearHeartbeatsMsg": "您確定要刪除此監測器的所有心跳嗎?", + "confirmClearStatisticsMsg": "您確定要刪除所有統計資料嗎?", + "importHandleDescription": "若您想跳過所有相同名稱的監測器或通知,請選擇 '略過現有'。選擇 '覆寫' 將刪除所有現有的監測器及通知。", + "confirmImportMsg": "您確定要匯入備份嗎?請確認是否選擇正確的匯入設定。", + "twoFAVerifyLabel": "請輸入權杖以驗證雙步驟驗證:", + "tokenValidSettingsMsg": "權杖有效!您可以儲存雙步驟驗證設定了。", + "confirmEnableTwoFAMsg": "您確定要啟用雙步驟驗證嗎?", + "confirmDisableTwoFAMsg": "您確定要停用雙步驟驗證嗎?", + "Settings": "設定", + "Dashboard": "儀表板", + "New Update": "新版本", + "Language": "語言", + "Appearance": "外觀", + "Theme": "主題", + "General": "一般", + "Primary Base URL": "主要基底網址", + "Version": "版本", + "Check Update On GitHub": "在 GitHub 檢查更新", + "List": "清單", + "Add": "新增", + "Add New Monitor": "新增監測器", + "Quick Stats": "狀態概覽", + "Up": "正常", + "Down": "離線", + "Pending": "等待中", + "Unknown": "未知", + "Pause": "暫停", + "Name": "名稱", + "Status": "狀態", + "DateTime": "日期時間", + "Message": "訊息", + "No important events": "無重要事件", + "Resume": "繼續", + "Edit": "編輯", + "Delete": "刪除", + "Current": "目前", + "Uptime": "運作率", + "Cert Exp.": "憑證期限", + "day": "天", + "-day": "天", + "hour": "小時", + "-hour": "小時", + "Response": "回應", + "Ping": "Ping", + "Monitor Type": "監測器類型", + "Keyword": "關鍵字", + "Friendly Name": "易記名稱", + "URL": "網址", + "Hostname": "主機名稱", + "Port": "連接埠", + "Heartbeat Interval": "心跳間隔", + "Retries": "重試次數", + "Heartbeat Retry Interval": "心跳重試間隔", + "Resend Notification if Down X times consequently": "若 X 次心跳皆離線,重新傳送通知", + "Advanced": "進階", + "Upside Down Mode": "顛倒模式", + "Max. Redirects": "最大重新導向次數", + "Accepted Status Codes": "可接受的狀態碼", + "Push URL": "推送網址", + "needPushEvery": "您應每 {0} 秒呼叫此網址。", + "pushOptionalParams": "選填參數:{0}", + "Save": "儲存", + "Notifications": "通知", + "Not available, please setup.": "無法使用,請先設定。", + "Setup Notification": "設定通知", + "Light": "亮色", + "Dark": "深色", + "Auto": "自動", + "Theme - Heartbeat Bar": "主題 - 心跳條", + "Normal": "正常", + "Bottom": "下方", + "None": "無", + "Timezone": "時區", + "Search Engine Visibility": "搜尋引擎可見度", + "Allow indexing": "允許索引", + "Discourage search engines from indexing site": "不建議搜尋引擎索引網頁", + "Change Password": "修改密碼", + "Current Password": "目前密碼", + "New Password": "新密碼", + "Repeat New Password": "確認新密碼", + "Update Password": "更新密碼", + "Disable Auth": "停用驗證", + "Enable Auth": "啟用驗證", + "disableauth.message1": ">你是否要取消登入驗證?", + "disableauth.message2": "此功能是設計給已有第三方認證的使用者,例如 Cloudflare Access。", + "Please use this option carefully!": "請謹慎使用。", + "Logout": "登出", + "Leave": "離開", + "I understand, please disable": "我了解了,請停用", + "Confirm": "確認", + "Yes": "是", + "No": "否", + "Username": "使用者名稱", + "Password": "密碼", + "Remember me": "記住我", + "Login": "登入", + "No Monitors, please": "沒有監測器,請", + "add one": "新增", + "Notification Type": "通知類型", + "Email": "電子郵件", + "Test": "測試", + "Certificate Info": "憑證資訊", + "Resolver Server": "解析伺服器", + "Resource Record Type": "資源記錄類型", + "Last Result": "最後結果", + "Create your admin account": "建立您的管理員帳號", + "Repeat Password": "確認密碼", + "Import Backup": "匯入備份", + "Export Backup": "匯出備份", + "Export": "匯出", + "Import": "匯入", + "respTime": "回應時間 (毫秒)", + "notAvailableShort": "N/A", + "Default enabled": "啟用預設", + "Apply on all existing monitors": "套用到目前所有的監測器", + "Create": "建立", + "Clear Data": "清除資料", + "Events": "活動", + "Heartbeats": "心跳", + "Auto Get": "自動取得", + "backupDescription": "您可以將所有監測器及通知備份成一個 JSON 檔案。", + "backupDescription2": "提醒:不包含歷史紀錄及活動紀錄。", + "backupDescription3": "如通知權杖等機密資料也會一同匯出。請妥善保存。", + "alertNoFile": "請選擇要匯入的檔案。", + "alertWrongFileType": "請選擇 JSON 檔案。", + "Clear all statistics": "清除所有統計資料", + "Skip existing": "略過現有", + "Overwrite": "覆寫", + "Options": "選項", + "Keep both": "保留兩者", + "Verify Token": "認證權杖", + "Setup 2FA": "設置雙步驟驗證", + "Enable 2FA": "啟用雙步驟驗證", + "Disable 2FA": "停用雙步驟驗證", + "2FA Settings": "雙步驟驗證設定", + "Two Factor Authentication": "雙步驟驗證", + "Active": "啟用", + "Inactive": "停用", + "Token": "權杖", + "Show URI": "顯示 URI", + "Tags": "標籤", + "Add New below or Select...": "在下方新增或選取...", + "Tag with this name already exist.": "已存在相同名稱的標籤。", + "Tag with this value already exist.": "已存在相同數值的標籤。", + "color": "顏色", + "value (optional)": "數值 (選填)", + "Gray": "灰色", + "Red": "紅色", + "Orange": "橘色", + "Green": "綠色", + "Blue": "藍色", + "Indigo": "靛色", + "Purple": "紫色", + "Pink": "粉色", + "Search...": "搜尋...", + "Avg. Ping": "平均 Ping", + "Avg. Response": "平均回應", + "Entry Page": "入口頁面", + "statusPageNothing": "空空如也,請新增群組或監測器。", + "No Services": "無服務", + "All Systems Operational": "所有系統正常運作", + "Partially Degraded Service": "部分服務效能降低", + "Degraded Service": "服務效能降低", + "Add Group": "新增群組", + "Add a monitor": "加入監測器", + "Edit Status Page": "編輯狀態頁", + "Go to Dashboard": "前往儀表板", + "Status Page": "狀態頁", + "Status Pages": "狀態頁", + "defaultNotificationName": "我的 {notification} 通知 ({number})", + "here": "此處", + "Required": "必填", + "telegram": "Telegram", + "Bot Token": "機器人權杖", + "wayToGetTelegramToken": "您可以從 {0} 取得權杖。", + "Chat ID": "聊天 ID", + "supportTelegramChatID": "支援 對話/群組/頻道的聊天 ID", + "wayToGetTelegramChatID": "傳送訊息給機器人,並前往以下網址以取得您的 chat ID:", + "YOUR BOT TOKEN HERE": "在此填入您的機器人權杖", + "chatIDNotFound": "找不到 Chat ID;請先傳送訊息給機器人", + "webhook": "Webhook", + "Post URL": "Post 網址", + "Content Type": "內容類型", + "webhookJsonDesc": "{0} 適合任何現代的 HTTP 伺服器,如 Express.js", + "webhookFormDataDesc": "{multipart} 適合 PHP。 JSON 必須先經由 {decodeFunction} 剖析。", + "webhookAdditionalHeadersTitle": "額外標頭", + "webhookAdditionalHeadersDesc": "設定與 webhook 一同傳送的額外標頭。", + "smtp": "Email (SMTP)", + "secureOptionNone": "無 / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "忽略 TLS 錯誤", + "From Email": "寄件人", + "emailCustomSubject": "自訂主旨", + "To Email": "收件者", + "smtpCC": "CC", + "smtpBCC": "BCC", + "discord": "Discord", + "Discord Webhook URL": "Discord Webhook 網址", + "wayToGetDiscordURL": "您可以前往伺服器設定 -> 整合 -> Webhook -> 新 Webhook 以取得", + "Bot Display Name": "機器人顯示名稱", + "Prefix Custom Message": "前綴自訂訊息", + "Hello @everyone is...": "Hello {'@'}everyone is...", + "teams": "Microsoft Teams", + "Webhook URL": "Webhook 網址", + "wayToGetTeamsURL": "您可以前往此頁面以了解如何建立 Webhook 網址 {0}。", + "signal": "Signal", + "Number": "號碼", + "Recipients": "收件者", + "needSignalAPI": "您需要有 REST API 的 Signal 客戶端。", + "wayToCheckSignalURL": "您可以前往下列網址以了解如何設定:", + "signalImportant": "注意: 不得混合收件者的群組和號碼!", + "gotify": "Gotify", + "Application Token": "應用程式權杖", + "Server URL": "伺服器網址", + "Priority": "優先度", + "slack": "Slack", + "Icon Emoji": "Emoji 圖示", + "Channel Name": "頻道名稱", + "Uptime Kuma URL": "Uptime Kuma 網址", + "aboutWebhooks": "更多關於 Webhook 的資訊: {0}", + "aboutChannelName": "如果您不想使用 Webhook 頻道,請在 {0} 頻道名稱欄位填入您想使用的頻道。例如: #其他頻道", + "aboutKumaURL": "如果您未填入 Uptime Kuma 網址。將預設使用專案 Github 頁面。", + "emojiCheatSheet": "Emoji 一覽表: {0}", + "rocket.chat": "Rocket.Chat", + "pushover": "Pushover", + "pushy": "Pushy", + "PushByTechulus": "Push by Techulus", + "octopush": "Octopush", + "promosms": "PromoSMS", + "clicksendsms": "ClickSend SMS", + "lunasea": "LunaSea", + "apprise": "Apprise (支援 50 種以上的通知服務)", + "GoogleChat": "Google Chat (僅限 Google Workspace)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "User Key": "使用者金鑰", + "Device": "裝置", + "Message Title": "訊息標題", + "Notification Sound": "通知音效", + "More info on:": "更多資訊: {0}", + "pushoverDesc1": "緊急優先度 (2) 的重試間隔為 30 秒並且會在 1 小時後過期。", + "pushoverDesc2": "如果您想要傳送通知到不同裝置,請填寫裝置欄位。", + "SMS Type": "簡訊類型", + "octopushTypePremium": "Premium (快速 - 建議用於警報)", + "octopushTypeLowCost": "Low Cost (緩慢 - 有時會被營運商阻擋)", + "checkPrice": "查看 {0} 價格:", + "apiCredentials": "API 認證", + "octopushLegacyHint": "您使用的是舊版的 Octopush (2011-2020) 還是新版?", + "Check octopush prices": "查看 octopush 價格 {0}。", + "octopushPhoneNumber": "電話號碼 (intl 格式,例如:+33612345678) ", + "octopushSMSSender": "簡訊寄件人名稱:3-11位英數字元及空白 (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea 裝置 ID", + "Apprise URL": "Apprise 網址", + "Example:": "範例:{0}", + "Read more:": "深入瞭解:{0}", + "Status:": "狀態:{0}", + "Read more": "深入瞭解", + "appriseInstalled": "已安裝 Apprise。", + "appriseNotInstalled": "尚未安裝 Apprise。{0}", + "Access Token": "存取權杖", + "Channel access token": "頻道存取權杖", + "Line Developers Console": "Line 開發者控制台", + "lineDevConsoleTo": "Line 開發者控制台 - {0}", + "Basic Settings": "基本設定", + "User ID": "使用者 ID", + "Messaging API": "Messaging API", + "wayToGetLineChannelToken": "首先,前往 {0},建立 provider 和 channel (Messaging API)。接著您就可以從上面提到的選單項目中取得頻道存取權杖及使用者 ID。", + "Icon URL": "圖示網址", + "aboutIconURL": "您可以在 \"圖示網址\" 中提供圖片網址以覆蓋預設個人檔案圖片。若已設定 Emoji 圖示,將忽略此設定。", + "aboutMattermostChannelName": "您可以在 \"頻道名稱\" 欄位中填寫頻道名稱以覆蓋 Webhook 的預設頻道。必須在 Mattermost 的 Webhook 設定中啟用。例如:#其他頻道", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - 便宜,但是很慢且經常過載。僅限位於波蘭的收件者。", + "promosmsTypeFlash": "SMS FLASH - 訊息會自動在收件者的裝置上顯示。僅限位於波蘭的收件者。", + "promosmsTypeFull": "SMS FULL - 高級版,您可以使用您的寄件人名稱 (必須先註冊名稱。對於警報來說十分可靠。", + "promosmsTypeSpeed": "SMS SPEED - 系統中的最高優先度。快速、可靠,但昂貴 (約 SMS FULL 的兩倍價格)。", + "promosmsPhoneNumber": "電話號碼 (若收件者位於波蘭則無需輸入區域代碼)", + "promosmsSMSSender": "簡訊寄件人名稱:預先註冊的名稱或以下的預設名稱:InfoSMS、SMS Info、MaxSMS、INFO、SMS", + "Feishu WebHookUrl": "飛書 WebHook 網址", + "matrixHomeserverURL": "Homeserver 網址 (開頭為 http(s)://,結尾可能帶連接埠)", + "Internal Room Id": "Internal Room ID", + "matrixDesc1": "您可以在 Matrix 客戶端的房間設定中的進階選項找到 internal room ID。應該看起來像 !QMdRCpUIfLwsfjxye6:home.server。", + "matrixDesc2": "使用您自己的 Matrix 使用者存取權杖將賦予存取您的帳號和您加入的房間的完整權限。建議建立新使用者,並邀請至您想要接收通知的房間中。您可以執行 {0} 以取得存取權杖", + "Method": "方法", + "Body": "主體", + "Headers": "標頭", + "PushUrl": "Push 網址", + "HeadersInvalidFormat": "要求標頭不是有效的 JSON:", + "BodyInvalidFormat": "要求主體不是有效的 JSON:", + "Monitor History": "監測器歷史紀錄", + "clearDataOlderThan": "保留 {0} 天內的監測器歷史紀錄。", + "PasswordsDoNotMatch": "密碼不相符。", + "records": "記錄", + "One record": "一項記錄", + "steamApiKeyDescription": "若要監測 Steam 遊戲伺服器,您將需要 Steam Web-API 金鑰。您可以在此註冊您的 API 金鑰:", + "Current User": "目前使用者", + "topic": "Topic", + "topicExplanation": "要監測的 MQTT Topic", + "successMessage": "成功訊息", + "successMessageExplanation": "視為成功的 MQTT 訊息", + "recent": "最近", + "Done": "完成", + "Info": "資訊", + "Security": "安全性", + "Steam API Key": "Steam API 金鑰", + "Shrink Database": "壓縮資料庫", + "Pick a RR-Type...": "選擇資源記錄類型...", + "Pick Accepted Status Codes...": "選擇可接受的狀態碼...", + "Default": "預設", + "HTTP Options": "HTTP 選項", + "Create Incident": "建立事件", + "Title": "標題", + "Content": "內容", + "Style": "樣式", + "info": "資訊", + "warning": "警告", + "danger": "危險", + "error": "錯誤", + "critical": "嚴重", + "primary": "主要", + "light": "淺色", + "dark": "暗色", + "Post": "發佈", + "Please input title and content": "請輸入標題及內容", + "Created": "建立", + "Last Updated": "最後更新", + "Unpin": "取消釘選", + "Switch to Light Theme": "切換至淺色佈景主題", + "Switch to Dark Theme": "切換至深色佈景主題", + "Show Tags": "顯示標籤", + "Hide Tags": "隱藏標籤", + "Description": "說明", + "No monitors available.": "沒有可用的監測器。", + "Add one": "新增一個", + "No Monitors": "無監測器", + "Untitled Group": "未命名群組", + "Services": "服務", + "Discard": "捨棄", + "Cancel": "取消", + "Powered by": "技術支援", + "shrinkDatabaseDescription": "觸發 SQLite 的資料庫清理 (VACUUM)。如果您的資料庫是在 1.10.0 版本後建立,AUTO_VACUUM 已自動啟用,則無需此操作。", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API 使用者名稱 (包括 webapi_ 前綴)", + "serwersmsAPIPassword": "API 密碼", + "serwersmsPhoneNumber": "電話號碼", + "serwersmsSenderName": "SMS 寄件人名稱 (由客戶入口網站註冊)", + "smseagle": "SMSEagle", + "smseagleTo": "電話號碼", + "smseagleGroup": "電話簿群組名稱", + "smseagleContact": "電話簿聯絡人名稱", + "smseagleRecipientType": "收件者類型", + "smseagleRecipient": "收件者 (用逗號分隔)", + "smseagleToken": "API 存取權杖", + "smseagleUrl": "您的 SMSEagle 裝置網址", + "smseagleEncoding": "以 Unicode 傳送", + "smseaglePriority": "訊息優先度 (0-9,預設 = 0)", + "stackfield": "Stackfield", + "Customize": "自訂", + "Custom Footer": "自訂頁尾", + "Custom CSS": "自訂 CSS", + "smtpDkimSettings": "DKIM 設定", + "smtpDkimDesc": "請參考 Nodemailer DKIM {0} 使用方式。", + "documentation": "文件", + "smtpDkimDomain": "網域名稱", + "smtpDkimKeySelector": "DKIM 選取器", + "smtpDkimPrivateKey": "私密金鑰", + "smtpDkimHashAlgo": "雜湊演算法 (選填)", + "smtpDkimheaderFieldNames": "要簽署的郵件標頭 (選填)", + "smtpDkimskipFields": "不簽署的郵件標頭 (選填)", + "wayToGetPagerDutyKey": "您可以前往服務 -> 服務目錄 -> (選取服務) -> 整合 -> 新增整合以取得。您可以搜尋 \"Events API V2\"。詳細資訊 {0}", + "Integration Key": "整合金鑰", + "Integration URL": "整合網址", + "Auto resolve or acknowledged": "自動解決或認可", + "do nothing": "不進行任何操作", + "auto acknowledged": "自動認可", + "auto resolve": "自動解決", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API 端點", + "alertaEnvironment": "環境", + "alertaApiKey": "API 金鑰", + "alertaAlertState": "警示狀態", + "alertaRecoverState": "恢復狀態", + "deleteStatusPageMsg": "您確定要刪除此狀態頁嗎?", + "Proxies": "代理伺服器", + "default": "預設", + "enabled": "啟用", + "setAsDefault": "設為預設", + "deleteProxyMsg": "您確定要為所有監測器刪除此代理伺服器嗎?", + "proxyDescription": "必須將代理伺服器指派給監測器才能運作。", + "enableProxyDescription": "此代理伺服器在啟用前不會在監測器上生效,您可以藉由控制啟用狀態來暫時對所有的監測器停用代理伺服器。", + "setAsDefaultProxyDescription": "預設情況下,新監測器將啟用此代理伺服器。您仍可分別停用各監測器的代理伺服器。", + "Certificate Chain": "憑證鏈結", + "Valid": "有效", + "Invalid": "無效", + "AccessKeyId": "AccessKey ID", + "SecretAccessKey": "AccessKey 密碼", + "PhoneNumbers": "PhoneNumbers", + "TemplateCode": "TemplateCode", + "SignName": "SignName", + "Sms template must contain parameters: ": "Sms 範本必須包含參數:", + "Bark Endpoint": "Bark 端點", + "Bark Group": "Bark 群組", + "Bark Sound": "Bark 鈴聲", + "WebHookUrl": "WebHookUrl", + "SecretKey": "SecretKey", + "For safety, must use secret key": "為了安全起見,必須使用秘密金鑰", + "Device Token": "裝置權杖", + "Platform": "平台", + "iOS": "iOS", + "Android": "Android", + "Huawei": "華為", + "High": "高", + "Retry": "重試", + "Topic": "Topic", + "WeCom Bot Key": "WeCom 機器人金鑰", + "Setup Proxy": "設置 Proxy", + "Proxy Protocol": "Proxy 通訊協定", + "Proxy Server": "Proxy 伺服器", + "Proxy server has authentication": "Proxy 伺服器啟用了驗證功能", + "User": "使用者", + "Installed": "已安裝", + "Not installed": "未安裝", + "Running": "執行中", + "Not running": "未執行", + "Remove Token": "移除權杖", + "Start": "開始", + "Stop": "停止", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "新增狀態頁", + "Slug": "Slug", + "Accept characters:": "可用字元:", + "startOrEndWithOnly": "僅能使用 {0} 開頭或結尾", + "No consecutive dashes": "不得連續使用破折號", + "Next": "下一步", + "The slug is already taken. Please choose another slug.": "此 slug 已被使用。請選擇其他 slug。", + "No Proxy": "無 Proxy", + "Authentication": "驗證", + "HTTP Basic Auth": "HTTP 基本驗證", + "New Status Page": "新狀態頁", + "Page Not Found": "找不到頁面", + "Reverse Proxy": "反向代理", + "Backup": "備份", + "About": "關於", + "wayToGetCloudflaredURL": "(從 {0} 下載 cloudflared)", + "cloudflareWebsite": "Cloudflare 網站", + "Message:": "訊息:", + "Don't know how to get the token? Please read the guide:": "不知道如何取得權杖嗎?請閱讀指南:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "如果您目前正透過 Cloudflare Tunnel 連線,可能會導致連線中斷。您確定要停止嗎?請輸入密碼以確認。", + "HTTP Headers": "HTTP 標頭", + "Trust Proxy": "信任的 Proxy", + "Other Software": "其他軟體", + "For example: nginx, Apache and Traefik.": "例如 nginx、Apache 和 Traefik。", + "Please read": "請閱覽", + "Subject:": "簽發給:", + "Valid To:": "有效期限:", + "Days Remaining:": "剩餘天數:", + "Issuer:": "簽發者:", + "Fingerprint:": "指紋:", + "No status pages": "無狀態頁", + "Domain Name Expiry Notification": "網域名稱到期通知", + "Proxy": "Proxy", + "Date Created": "建立日期", + "HomeAssistant": "Home Assistant", + "onebotHttpAddress": "OneBot HTTP 位址", + "onebotMessageType": "OneBot 訊息類型", + "onebotGroupMessage": "群組", + "onebotPrivateMessage": "私人", + "onebotUserOrGroupId": "群組/使用者 ID", + "onebotSafetyTips": "為了安全起見,必須設置存取權杖", + "PushDeer Key": "PushDeer 金鑰", + "Footer Text": "頁尾文字", + "Show Powered By": "顯示技術支援文字", + "Domain Names": "網域名稱", + "signedInDisp": "以 {0} 身分登入", + "signedInDispDisabled": "驗證已停用。", + "RadiusSecret": "Radius Secret", + "RadiusSecretDescription": "客戶端與伺服器端的共享機密", + "RadiusCalledStationId": "被叫站 Id", + "RadiusCalledStationIdDescription": "被呼叫裝置的識別碼", + "RadiusCallingStationId": "呼叫站 Id", + "RadiusCallingStationIdDescription": "呼叫裝置的識別碼", + "Certificate Expiry Notification": "憑證到期通知", + "API Username": "API 使用者名稱", + "API Key": "API 金鑰", + "Recipient Number": "收件者號碼", + "From Name/Number": "來自名字/號碼", + "Leave blank to use a shared sender number.": "留空以使用共享寄件人號碼。", + "Octopush API Version": "Octopush API 版本", + "Legacy Octopush-DM": "舊版 Octopush-DM", + "endpoint": "端", + "octopushAPIKey": "在控制台的 HTTP API 憑證取得的 \"API 金鑰\"", + "octopushLogin": "在控制台的 HTTP API 憑證取得的 \"Login\"", + "promosmsLogin": "API 登入名稱", + "promosmsPassword": "API 密碼", + "pushoversounds pushover": "Pushover (預設)", + "pushoversounds bike": "車鈴", + "pushoversounds bugle": "號角", + "pushoversounds cashregister": "收銀機", + "pushoversounds classical": "古典", + "pushoversounds cosmic": "宇宙", + "pushoversounds falling": "下落", + "pushoversounds gamelan": "甘美朗", + "pushoversounds incoming": "來電", + "pushoversounds intermission": "中場休息", + "pushoversounds magic": "魔法", + "pushoversounds mechanical": "機械", + "pushoversounds pianobar": "鋼琴酒吧", + "pushoversounds siren": "警鈴", + "pushoversounds spacealarm": "太空鬧鐘", + "pushoversounds tugboat": "汽笛", + "pushoversounds alien": "外星鬧鐘 (長)", + "pushoversounds climb": "爬升 (長)", + "pushoversounds persistent": "持續 (長)", + "pushoversounds echo": "Pushover 回音 (長)", + "pushoversounds updown": "上下 (長)", + "pushoversounds vibrate": "僅震動", + "pushoversounds none": "無 (靜音)", + "pushyAPIKey": "API 密鑰", + "pushyToken": "裝置權杖", + "Show update if available": "顯示可用更新", + "Also check beta release": "檢查 Beta 版", + "Using a Reverse Proxy?": "正在使用反向代理?", + "Check how to config it for WebSocket": "查看如何為 WebSocket 設定", + "Steam Game Server": "Steam 遊戲伺服器", + "Most likely causes:": "可能原因:", + "The resource is no longer available.": "資源已不可用。", + "There might be a typing error in the address.": "網址可能有誤。", + "What you can try:": "您可以嘗試:", + "Retype the address.": "重新輸入網址。", + "Go back to the previous page.": "返回上一頁。", + "Coming Soon": "即將推出", + "wayToGetClickSendSMSToken": "您可以從 {0} 取得 API 使用者名稱和金鑰。", + "Connection String": "連線字串", + "Query": "查詢", + "settingsCertificateExpiry": "TLS 憑證到期", + "certificationExpiryDescription": "TLS 將於 X 天後到期時觸發 HTTPS 監測器通知:", + "Setup Docker Host": "設定 Docker 主機", + "Connection Type": "連線類型", + "Docker Daemon": "Docker 精靈", + "deleteDockerHostMsg": "您確定要為所有監測器刪除此 Docker 主機嗎?", + "socket": "通訊端", + "tcp": "TCP / HTTP", + "Docker Container": "Docker 容器", + "Container Name / ID": "容器名稱 / ID", + "Docker Host": "Docker 主機", + "Docker Hosts": "Docker 主機", + "ntfy Topic": "ntfy 主題", + "Domain": "網域", + "Workstation": "工作站", + "disableCloudflaredNoAuthMsg": "您處於無驗證模式。無須輸入密碼。", + "trustProxyDescription": "信任 'X-Forwarded-*' 標頭。如果您想要取得正確的客戶端 IP,且您的 Uptime Kuma 架設於 Nginx 或 Apache 後方,您應啟用此選項。", + "wayToGetLineNotifyToken": "您可以從 {0} 取得存取權杖", + "Examples": "範例", + "Home Assistant URL": "Home Assistant 網址", + "Long-Lived Access Token": "長期有效存取權杖", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "若要建立長期有效存取權杖,請點擊您的個人檔案名稱 (左下角),捲動至最下方,然後點擊建立權杖。", + "Notification Service": "通知服務", + "default: notify all devices": "預設:通知所有服務", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "您可以在 Home Assistant 中查看通知服務的列表,在\"開發者工具 > 服務\"下搜尋\"通知\"來找到您的裝置/手機的名稱。", + "Automations can optionally be triggered in Home Assistant:": "可以選擇在 Home Assistant 中觸發自動化程序:", + "Trigger type:": "觸發器類型:", + "Event type:": "事件類型:", + "Event data:": "事件資料:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "然後選擇動作,例如切換至 RGB 燈為紅色的場景。", + "Frontend Version": "前端版本", + "Frontend Version do not match backend version!": "前端版本與後端版本不符!", + "Base URL": "基底網址", + "goAlertInfo": "GoAlert 是用於待命排程、升級自動化,以及通知 (如簡訊或語音通話) 的開源應用程式。自動在正確的時間、用洽當的方法、聯絡合適的人! {0}", + "goAlertIntegrationKeyInfo": "取得服務的通用 API 整合金鑰,格式為 \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\"。通常是已複製的網址的權杖參數值。", + "goAlert": "GoAlert", + "backupOutdatedWarning": "過時:由於新功能的增加,且未妥善維護,故此備份功能無法產生或復原完整備份。", + "backupRecommend": "請直接備份磁碟區或 ./data/ 資料夾。", + "Optional": "選填", + "squadcast": "Squadcast", + "SendKey": "SendKey", + "SMSManager API Docs": "SMSManager API 文件 ", + "Gateway Type": "閘道類型", + "SMSManager": "SMSManager", + "You can divide numbers with": "若要除數,您可以使用", + "or": "或是", + "recurringInterval": "間隔", + "Recurring": "週期性", + "strategyManual": "手動切換使用中/非使用中", + "warningTimezone": "正在使用伺服器的時區", + "weekdayShortMon": "一", + "weekdayShortTue": "二", + "weekdayShortWed": "三", + "weekdayShortThu": "四", + "weekdayShortFri": "五", + "weekdayShortSat": "六", + "weekdayShortSun": "日", + "dayOfWeek": "每周特定一天", + "dayOfMonth": "每月特定一天", + "lastDay": "最後一天", + "lastDay1": "每月的最後一天", + "lastDay2": "每月的倒數第二天", + "lastDay3": "每月的倒數第三天", + "lastDay4": "每月的倒數第四天", + "No Maintenance": "無維護", + "pauseMaintenanceMsg": "您確定要暫停嗎?", + "maintenanceStatus-under-maintenance": "維護中", + "maintenanceStatus-inactive": "非使用中", + "maintenanceStatus-scheduled": "已排程", + "maintenanceStatus-ended": "已結束", + "maintenanceStatus-unknown": "未知", + "Display Timezone": "顯示時區", + "Server Timezone": "伺服器時區", + "statusPageMaintenanceEndDate": "結束", + "IconUrl": "圖示網址", + "Enable DNS Cache": "啟用 DNS 快取", + "Enable": "啟用", + "Disable": "停用", + "dnsCacheDescription": "在某些 IPv6 環境可能會無法運作,如果您遇到任何問題,請停用。", + "Single Maintenance Window": "單一維護時段", + "Maintenance Time Window of a Day": "每日的維護時段", + "Effective Date Range": "有效的日期範圍", + "Schedule Maintenance": "排程維護", + "Date and Time": "時間和日期", + "DateTime Range": "DateTime 範圍", + "Strategy": "策略", + "Free Mobile User Identifier": "Free Mobile User Identifier", + "Free Mobile API Key": "Free Mobile API 金鑰", + "Enable TLS": "啟用 TLS", + "Proto Service Name": "Proto 服務名稱", + "Proto Method": "Proto 方式", + "Proto Content": "Proto 內容", + "Economy": "節約", + "Lowcost": "低費率", + "high": "高", + "General Monitor Type": "一般監測器類型", + "Passive Monitor Type": "被動監測器類型", + "Specific Monitor Type": "指定監測器類型" +} diff --git a/src/mixins/lang.js b/src/mixins/lang.js index aca951498..7e36d158b 100644 --- a/src/mixins/lang.js +++ b/src/mixins/lang.js @@ -1,6 +1,6 @@ import { currentLocale } from "../i18n"; import { setPageLocale } from "../util-frontend"; -const langModules = import.meta.glob("../languages/*.js"); +const langModules = import.meta.glob("../lang/*.json"); export default { data() { @@ -24,7 +24,7 @@ export default { methods: { /** Change the application language */ async changeLang(lang) { - let message = (await langModules["../languages/" + lang + ".js"]()).default; + let message = (await langModules["../lang/" + lang + ".json"]()).default; this.$i18n.setLocaleMessage(lang, message); this.$i18n.locale = lang; localStorage.locale = lang; From bfa32f6b07a2821c5d04fdfe14685682c6055e65 Mon Sep 17 00:00:00 2001 From: 401Unauthorized Date: Sat, 7 Jan 2023 09:46:49 +0800 Subject: [PATCH 47/73] comment not allowed in json file --- src/lang/fr-FR.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lang/fr-FR.json b/src/lang/fr-FR.json index 9da84bda6..04819c8a2 100644 --- a/src/lang/fr-FR.json +++ b/src/lang/fr-FR.json @@ -302,7 +302,7 @@ "lineDevConsoleTo": "Console développeurs Line - {0}", "Basic Settings": "Paramètres de base", "User ID": "Identifiant utilisateur", - "Messaging API": "Messaging API", // Ne pas traduire, il s'agit du type de salon affiché sur la console développeurs Line + "Messaging API": "Messaging API", "wayToGetLineChannelToken": "Premièrement accédez à {0}, créez un provider et définissez un type de salon à « Messaging API ». Vous pourrez alors avoir puis vous pourrez avoir le jeton d'accès du salon et l'identifiant utilisateur demandés.", "Icon URL": "URL vers l'icône", "aboutIconURL": "Vous pouvez mettre un lien vers une image dans « URL vers l'icône » pour remplacer l'image de profil par défaut. Elle ne sera utilisé que si « Icône émoji » n'est pas défini.", From ceb7d481182c333f980fe9254ed880b20207aaa4 Mon Sep 17 00:00:00 2001 From: 401Unauthorized Date: Sat, 7 Jan 2023 11:37:40 +0800 Subject: [PATCH 48/73] add convert script --- extra/convert-language-files/.gitignore | 3 +++ extra/convert-language-files/index.js | 29 +++++++++++++++++++++++ extra/convert-language-files/package.json | 12 ++++++++++ src/lang/bg-BG.json | 2 +- src/lang/cs-CZ.json | 2 +- src/lang/da-DK.json | 2 +- src/lang/de-CH.json | 2 +- src/lang/de-DE.json | 2 +- src/lang/el-GR.json | 2 +- src/lang/en.json | 2 +- src/lang/es-ES.json | 2 +- src/lang/et-EE.json | 2 +- src/lang/eu.json | 2 +- src/lang/fa.json | 2 +- src/lang/fr-FR.json | 2 +- src/lang/he-IL.json | 2 +- src/lang/hr-HR.json | 2 +- src/lang/hu.json | 2 +- src/lang/id-ID.json | 2 +- src/lang/it-IT.json | 2 +- src/lang/ja.json | 2 +- src/lang/ko-KR.json | 2 +- src/lang/nb-NO.json | 2 +- src/lang/nl-NL.json | 2 +- src/lang/pl.json | 2 +- src/lang/pt-BR.json | 2 +- src/lang/pt-PT.json | 2 +- src/lang/ru-RU.json | 2 +- src/lang/sl-SI.json | 2 +- src/lang/sr-latn.json | 2 +- src/lang/sr.json | 2 +- src/lang/sv-SE.json | 2 +- src/lang/th-TH.json | 2 +- src/lang/tr-TR.json | 2 +- src/lang/uk-UA.json | 2 +- src/lang/vi-VN.json | 2 +- src/lang/zh-CN.json | 2 +- src/lang/zh-HK.json | 2 +- src/lang/zh-TW.json | 2 +- 39 files changed, 80 insertions(+), 36 deletions(-) create mode 100644 extra/convert-language-files/.gitignore create mode 100644 extra/convert-language-files/index.js create mode 100644 extra/convert-language-files/package.json diff --git a/extra/convert-language-files/.gitignore b/extra/convert-language-files/.gitignore new file mode 100644 index 000000000..410c913ca --- /dev/null +++ b/extra/convert-language-files/.gitignore @@ -0,0 +1,3 @@ +package-lock.json +test.js +languages/ diff --git a/extra/convert-language-files/index.js b/extra/convert-language-files/index.js new file mode 100644 index 000000000..3082d32ec --- /dev/null +++ b/extra/convert-language-files/index.js @@ -0,0 +1,29 @@ +// Need to use ES6 to read language files + +import fs from "fs"; +import rmSync from "../fs-rmSync.js"; + +async function convent(langCode) { + fs.copyFileSync(`../../src/languages/${langCode}.js`, `./languages/${langCode}.js`); + const lang = (await import(`./languages/${langCode}.js`)).default; + // console.log(JSON.stringify(lang)); + fs.writeFile(`../../src/lang/${langCode}.json`, JSON.stringify(lang, null, 4), function (err) { + if (err) { + throw err; + } + console.log(`Convent success for ${langCode}`); + }); +} + +if (fs.existsSync("./languages")) { + rmSync("./languages", { recursive: true }); +} +fs.mkdirSync("./languages"); + +let files = fs.readdirSync("../../src/languages/"); +console.log(files); +files.forEach(async (filename) => { + if (filename !== "README.md") { + await convent(filename.replace(".js", "")); + } +}); diff --git a/extra/convert-language-files/package.json b/extra/convert-language-files/package.json new file mode 100644 index 000000000..81493aa3a --- /dev/null +++ b/extra/convert-language-files/package.json @@ -0,0 +1,12 @@ +{ + "name": "convert-language-files", + "type": "module", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC" +} diff --git a/src/lang/bg-BG.json b/src/lang/bg-BG.json index 2c4ce95fb..6390a351b 100644 --- a/src/lang/bg-BG.json +++ b/src/lang/bg-BG.json @@ -669,4 +669,4 @@ "General Monitor Type": "Общ тип монитор", "Passive Monitor Type": "Пасивет тип монитор", "Specific Monitor Type": "Специфичен тип монитор" -} +} \ No newline at end of file diff --git a/src/lang/cs-CZ.json b/src/lang/cs-CZ.json index 4df2650e4..bc43337bc 100644 --- a/src/lang/cs-CZ.json +++ b/src/lang/cs-CZ.json @@ -623,4 +623,4 @@ "Enable": "Povolit", "Disable": "Zakázat", "dnsCacheDescription": "V některých prostředích IPv6 nemusí fungovat. Pokud narazíte na nějaké problémy, vypněte jej." -} +} \ No newline at end of file diff --git a/src/lang/da-DK.json b/src/lang/da-DK.json index 9cd1a4634..18177f6f6 100644 --- a/src/lang/da-DK.json +++ b/src/lang/da-DK.json @@ -352,4 +352,4 @@ "serwersmsPhoneNumber": "Telefonnummer", "serwersmsSenderName": "SMS Afsender Navn (registreret via kundeportal)", "stackfield": "Stackfield" -} +} \ No newline at end of file diff --git a/src/lang/de-CH.json b/src/lang/de-CH.json index c3e4d3d51..b39814f93 100644 --- a/src/lang/de-CH.json +++ b/src/lang/de-CH.json @@ -631,4 +631,4 @@ "Display Timezone": "Zeitzone anzeigen", "Server Timezone": "Server Zeitzone", "statusPageMaintenanceEndDate": "Ende" -} +} \ No newline at end of file diff --git a/src/lang/de-DE.json b/src/lang/de-DE.json index e44721113..938ab1957 100644 --- a/src/lang/de-DE.json +++ b/src/lang/de-DE.json @@ -638,4 +638,4 @@ "DateTime Range": "Datums- und Zeitbereich", "Strategy": "Strategie", "statusPageMaintenanceEndDate": "Ende" -} +} \ No newline at end of file diff --git a/src/lang/el-GR.json b/src/lang/el-GR.json index c77d61588..cbd6497da 100644 --- a/src/lang/el-GR.json +++ b/src/lang/el-GR.json @@ -584,4 +584,4 @@ "goAlert": "GoAlert", "backupOutdatedWarning": "Καταργήθηκε: Επειδή προστέθηκαν πολλές δυνατότητες και αυτή η δυνατότητα δημιουργίας αντιγράφων ασφαλείας δεν διατηρείται πολη, δεν μπορεί να δημιουργήσει ή να επαναφέρει ένα πλήρες αντίγραφο ασφαλείας.", "backupRecommend": "Παρακαλούμε δημιουργήστε αντίγραφα ασφαλείας του volume ή του φακέλου δεδομένων (./data/) απευθείας." -} +} \ No newline at end of file diff --git a/src/lang/en.json b/src/lang/en.json index 897b28f5b..748298849 100644 --- a/src/lang/en.json +++ b/src/lang/en.json @@ -675,4 +675,4 @@ "General Monitor Type": "General Monitor Type", "Passive Monitor Type": "Passive Monitor Type", "Specific Monitor Type": "Specific Monitor Type" -} +} \ No newline at end of file diff --git a/src/lang/es-ES.json b/src/lang/es-ES.json index 9a40ee8bc..2a3ae4466 100644 --- a/src/lang/es-ES.json +++ b/src/lang/es-ES.json @@ -206,4 +206,4 @@ "records": "registros", "One record": "Un registro", "steamApiKeyDescription": "Para monitorear un servidor de juegos de Steam, necesitas una clave Steam Web-API. Puedes registrar tu clave API aquí: " -} +} \ No newline at end of file diff --git a/src/lang/et-EE.json b/src/lang/et-EE.json index f7a23a6ca..53ef8abd1 100644 --- a/src/lang/et-EE.json +++ b/src/lang/et-EE.json @@ -206,4 +206,4 @@ "alertaApiKey": "API võti", "alertaAlertState": "Häireseisund", "alertaRecoverState": "Taasta algolek" -} +} \ No newline at end of file diff --git a/src/lang/eu.json b/src/lang/eu.json index 9d667a58f..d5e3f91cb 100644 --- a/src/lang/eu.json +++ b/src/lang/eu.json @@ -538,4 +538,4 @@ "Domain": "Domeinua", "Workstation": "Lan gunea", "disableCloudflaredNoAuthMsg": "Ez Auth moduan zaude, pasahitza ez da beharrezkoa." -} +} \ No newline at end of file diff --git a/src/lang/fa.json b/src/lang/fa.json index fc099bc43..3809ec33a 100644 --- a/src/lang/fa.json +++ b/src/lang/fa.json @@ -205,4 +205,4 @@ "pushbullet": "Pushbullet", "line": "Line Messenger", "mattermost": "Mattermost" -} +} \ No newline at end of file diff --git a/src/lang/fr-FR.json b/src/lang/fr-FR.json index 04819c8a2..fe7b605b3 100644 --- a/src/lang/fr-FR.json +++ b/src/lang/fr-FR.json @@ -669,4 +669,4 @@ "General Monitor Type": "Type de sonde générale", "Passive Monitor Type": "Type de sonde passive", "Specific Monitor Type": "Type de sonde spécifique" -} +} \ No newline at end of file diff --git a/src/lang/he-IL.json b/src/lang/he-IL.json index c8219ff59..469e1d4db 100644 --- a/src/lang/he-IL.json +++ b/src/lang/he-IL.json @@ -669,4 +669,4 @@ "General Monitor Type": "מוניטור כללי", "Passive Monitor Type": "מוניטור פסיבי", "Specific Monitor Type": "סוג מוניטור ספציפי" -} +} \ No newline at end of file diff --git a/src/lang/hr-HR.json b/src/lang/hr-HR.json index 417b689e6..698b1afd1 100644 --- a/src/lang/hr-HR.json +++ b/src/lang/hr-HR.json @@ -578,4 +578,4 @@ "Then choose an action, for example switch the scene to where an RGB light is red.": "Potrebno je i odabrati akciju za izvođenje na Home Assistantu.", "Frontend Version": "Inačica sučelja", "Frontend Version do not match backend version!": "Inačica sučelja ne odgovara poslužitelju!" -} +} \ No newline at end of file diff --git a/src/lang/hu.json b/src/lang/hu.json index 78036a1f5..17645dbbc 100644 --- a/src/lang/hu.json +++ b/src/lang/hu.json @@ -373,4 +373,4 @@ "alertaAlertState": "Figyelmeztetési állapot", "alertaRecoverState": "Visszaállási állapot", "deleteStatusPageMsg": "Biztos, hogy törölni akarja a státusz oldalt?" -} +} \ No newline at end of file diff --git a/src/lang/id-ID.json b/src/lang/id-ID.json index 59a06521c..b09031556 100644 --- a/src/lang/id-ID.json +++ b/src/lang/id-ID.json @@ -582,4 +582,4 @@ "goAlert": "GoAlert", "backupOutdatedWarning": "Tidak digunakan lagi: Karena banyak fitur ditambahkan dan fitur cadangan ini agak tidak terawat, itu tidak dapat menghasilkan atau memulihkan cadangan lengkap.", "backupRecommend": "Harap cadangkan volume atau folder data (./data/) secara langsung." -} +} \ No newline at end of file diff --git a/src/lang/it-IT.json b/src/lang/it-IT.json index 4b8a86754..c4c719e00 100644 --- a/src/lang/it-IT.json +++ b/src/lang/it-IT.json @@ -364,4 +364,4 @@ "smtpDkimheaderFieldNames": "Campi Intestazione da firmare (opzionale)", "smtpDkimskipFields": "Campi Intestazione da non firmare (opzionale)", "GoogleChat": "Google Chat (solo per Google Workspace)" -} +} \ No newline at end of file diff --git a/src/lang/ja.json b/src/lang/ja.json index 7b2b07fb1..42ae45eec 100644 --- a/src/lang/ja.json +++ b/src/lang/ja.json @@ -198,4 +198,4 @@ "pushbullet": "Pushbullet", "line": "Line Messenger", "mattermost": "Mattermost" -} +} \ No newline at end of file diff --git a/src/lang/ko-KR.json b/src/lang/ko-KR.json index 2cb2131c6..c2d7b8801 100644 --- a/src/lang/ko-KR.json +++ b/src/lang/ko-KR.json @@ -528,4 +528,4 @@ "Go back to the previous page.": "이전 페이지로 돌아가기", "Coming Soon": "Coming Soon...", "wayToGetClickSendSMSToken": "{0}에서 API 사용자 이름과 키를 얻을 수 있어요." -} +} \ No newline at end of file diff --git a/src/lang/nb-NO.json b/src/lang/nb-NO.json index 7af812990..b215abd1c 100644 --- a/src/lang/nb-NO.json +++ b/src/lang/nb-NO.json @@ -282,4 +282,4 @@ "promosmsTypeSpeed": "SMS SPEED - Høyest prioritet i systemet.Veldig rask på pålitelig, men dyrt (omtrent det dobbeltet av SMS FULL pris).", "promosmsPhoneNumber": "Telefonnummber (for polske mottakere. Du trenger ikke områdekode.)", "promosmsSMSSender": "SMS Avsendernavn : Forhåndsregistert navn eller en av standardnavnene: InfoSMS, SMS Info, MaxSMS, INFO, SMS" -} +} \ No newline at end of file diff --git a/src/lang/nl-NL.json b/src/lang/nl-NL.json index f32d50947..e16519fe0 100644 --- a/src/lang/nl-NL.json +++ b/src/lang/nl-NL.json @@ -528,4 +528,4 @@ "Domain": "Domein", "Workstation": "Werkstation", "disableCloudflaredNoAuthMsg": "De \"Geen authenticatie\" modus staat aan, wachtwoord is niet vereist." -} +} \ No newline at end of file diff --git a/src/lang/pl.json b/src/lang/pl.json index 319a3175f..5dd163ed8 100644 --- a/src/lang/pl.json +++ b/src/lang/pl.json @@ -641,4 +641,4 @@ "Display Timezone": "Wyświetlana strefa czasowa", "Server Timezone": "Strefa czasowa serwera", "statusPageMaintenanceEndDate": "Koniec" -} +} \ No newline at end of file diff --git a/src/lang/pt-BR.json b/src/lang/pt-BR.json index 1f951407d..3164702ab 100644 --- a/src/lang/pt-BR.json +++ b/src/lang/pt-BR.json @@ -200,4 +200,4 @@ "pushbullet": "Pushbullet", "line": "Line Messenger", "mattermost": "Mattermost" -} +} \ No newline at end of file diff --git a/src/lang/pt-PT.json b/src/lang/pt-PT.json index d8fc793e7..454d5b07a 100644 --- a/src/lang/pt-PT.json +++ b/src/lang/pt-PT.json @@ -200,4 +200,4 @@ "pushbullet": "Pushbullet", "line": "Line Messenger", "mattermost": "Mattermost" -} +} \ No newline at end of file diff --git a/src/lang/ru-RU.json b/src/lang/ru-RU.json index 0c214b13b..a70c50c46 100644 --- a/src/lang/ru-RU.json +++ b/src/lang/ru-RU.json @@ -578,4 +578,4 @@ "SMSManager": "SMSManager", "You can divide numbers with": "Вы можете делить числа с", "or": "или" -} +} \ No newline at end of file diff --git a/src/lang/sl-SI.json b/src/lang/sl-SI.json index 062413a8d..d14762859 100644 --- a/src/lang/sl-SI.json +++ b/src/lang/sl-SI.json @@ -354,4 +354,4 @@ "serwersmsPhoneNumber": "Telefonska številka", "serwersmsSenderName": "Ime SMS pošiljatelja (registrirani prek portala za stranke)", "stackfield": "Stackfield" -} +} \ No newline at end of file diff --git a/src/lang/sr-latn.json b/src/lang/sr-latn.json index 95bf03f98..ff92748f5 100644 --- a/src/lang/sr-latn.json +++ b/src/lang/sr-latn.json @@ -201,4 +201,4 @@ "pushbullet": "Pushbullet", "line": "Line Messenger", "mattermost": "Mattermost" -} +} \ No newline at end of file diff --git a/src/lang/sr.json b/src/lang/sr.json index 25f69adde..fcdb3316a 100644 --- a/src/lang/sr.json +++ b/src/lang/sr.json @@ -201,4 +201,4 @@ "pushbullet": "Pushbullet", "line": "Line Messenger", "mattermost": "Mattermost" -} +} \ No newline at end of file diff --git a/src/lang/sv-SE.json b/src/lang/sv-SE.json index 233a91f21..29a47756a 100644 --- a/src/lang/sv-SE.json +++ b/src/lang/sv-SE.json @@ -107,4 +107,4 @@ "Repeat Password": "Upprepa Lösenord", "respTime": "Svarstid (ms)", "notAvailableShort": "Ej Tillg." -} +} \ No newline at end of file diff --git a/src/lang/th-TH.json b/src/lang/th-TH.json index 7ad132f58..332680102 100644 --- a/src/lang/th-TH.json +++ b/src/lang/th-TH.json @@ -577,4 +577,4 @@ "Then choose an action, for example switch the scene to where an RGB light is red.": "จากนั้นเลือกการกระทำ, ตัวอย่าง เช่น เปลี่ยนเป็นไฟสีแดง", "Frontend Version": "เวอร์ชั่น Frontend", "Frontend Version do not match backend version!": "เวอร์ชั่น Frontend ไม่ตรงกับ Backend !" -} +} \ No newline at end of file diff --git a/src/lang/tr-TR.json b/src/lang/tr-TR.json index 8428dcf95..853402558 100644 --- a/src/lang/tr-TR.json +++ b/src/lang/tr-TR.json @@ -675,4 +675,4 @@ "General Monitor Type": "Genel Monitör Tipi", "Passive Monitor Type": "Pasif Monitör Tipi", "Specific Monitor Type": "Özel Monitör Tipi" -} +} \ No newline at end of file diff --git a/src/lang/uk-UA.json b/src/lang/uk-UA.json index fcd678a35..018c45c99 100644 --- a/src/lang/uk-UA.json +++ b/src/lang/uk-UA.json @@ -527,4 +527,4 @@ "Domain": "Домен", "Workstation": "Робоча станція", "disableCloudflaredNoAuthMsg": "Ви перебуваєте в режимі без авторизації, пароль не потрібен." -} +} \ No newline at end of file diff --git a/src/lang/vi-VN.json b/src/lang/vi-VN.json index 8b527cce9..022b50532 100644 --- a/src/lang/vi-VN.json +++ b/src/lang/vi-VN.json @@ -466,4 +466,4 @@ "Domain Names": "Domain Names", "signedInDisp": "Signed in as {0}", "signedInDispDisabled": "Auth Disabled." -} +} \ No newline at end of file diff --git a/src/lang/zh-CN.json b/src/lang/zh-CN.json index a75b73fb4..fcc4310f4 100644 --- a/src/lang/zh-CN.json +++ b/src/lang/zh-CN.json @@ -680,4 +680,4 @@ "General Monitor Type": "常规监控类型", "Passive Monitor Type": "被动监控类型", "Specific Monitor Type": "针对监控类型" -} +} \ No newline at end of file diff --git a/src/lang/zh-HK.json b/src/lang/zh-HK.json index 0bc07786c..f1933f273 100644 --- a/src/lang/zh-HK.json +++ b/src/lang/zh-HK.json @@ -385,4 +385,4 @@ "Enable DNS Cache": "啟用 DNS 快取", "Enable": "啟用", "Disable": "停用" -} +} \ No newline at end of file diff --git a/src/lang/zh-TW.json b/src/lang/zh-TW.json index 142ebf2d4..1c1684127 100644 --- a/src/lang/zh-TW.json +++ b/src/lang/zh-TW.json @@ -669,4 +669,4 @@ "General Monitor Type": "一般監測器類型", "Passive Monitor Type": "被動監測器類型", "Specific Monitor Type": "指定監測器類型" -} +} \ No newline at end of file From e99652c5a2c1b19874243af7c879bd06f165cfad Mon Sep 17 00:00:00 2001 From: 401Unauthorized Date: Wed, 11 Jan 2023 10:11:19 +0800 Subject: [PATCH 49/73] sync language file changes --- src/lang/bg-BG.json | 8 +++++++- src/lang/en.json | 4 +++- src/lang/fr-FR.json | 12 ++++++++++-- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/lang/bg-BG.json b/src/lang/bg-BG.json index 6390a351b..638066750 100644 --- a/src/lang/bg-BG.json +++ b/src/lang/bg-BG.json @@ -668,5 +668,11 @@ "high": "висок", "General Monitor Type": "Общ тип монитор", "Passive Monitor Type": "Пасивет тип монитор", - "Specific Monitor Type": "Специфичен тип монитор" + "Specific Monitor Type": "Специфичен тип монитор", + "ZohoCliq": "ZohoCliq", + "wayToGetZohoCliqURL": "Можете да научите как се създава URL адрес за уеб кука {0}.", + "Kook": "Kook", + "wayToGetKookBotToken": "Създайте приложение и вземете вашия бот токен на {0}", + "wayToGetKookGuildID": "Превключете в 'Developer Mode' в 'Kook' настройките, след което десен клик върху 'guild' за да вземете неговото 'ID'", + "Guild ID": "Guild ID" } \ No newline at end of file diff --git a/src/lang/en.json b/src/lang/en.json index 748298849..ce07e068c 100644 --- a/src/lang/en.json +++ b/src/lang/en.json @@ -674,5 +674,7 @@ "high": "high", "General Monitor Type": "General Monitor Type", "Passive Monitor Type": "Passive Monitor Type", - "Specific Monitor Type": "Specific Monitor Type" + "Specific Monitor Type": "Specific Monitor Type", + "dataRetentionTimeError": "Retention period must be 0 or greater", + "infiniteRetention": "Set to 0 for infinite retention." } \ No newline at end of file diff --git a/src/lang/fr-FR.json b/src/lang/fr-FR.json index fe7b605b3..4a3feb633 100644 --- a/src/lang/fr-FR.json +++ b/src/lang/fr-FR.json @@ -209,6 +209,7 @@ "here": "ici", "Required": "Requis", "telegram": "Telegram", + "ZohoCliq": "ZohoCliq", "Bot Token": "Jeton du robot", "wayToGetTelegramToken": "Vous pouvez obtenir un token depuis {0}.", "Chat ID": "Chat ID", @@ -240,7 +241,8 @@ "Hello @everyone is...": "Bonjour {'@'}everyone il...", "teams": "Microsoft Teams", "Webhook URL": "URL vers le webhook", - "wayToGetTeamsURL": "Vous pouvez apprendre comment créer un Webhook {0}.", + "wayToGetTeamsURL": "Vous pouvez apprendre comment créer une URL Webhook {0}.", + "wayToGetZohoCliqURL": "Vous pouvez apprendre comment créer une URL Webhook {0}.", "signal": "Signal", "Number": "Numéro", "Recipients": "Destinataires", @@ -270,6 +272,10 @@ "apprise": "Apprise (prend en charge plus de 50 services de notification)", "GoogleChat": "Google Chat (Google Workspace uniquement)", "pushbullet": "Pushbullet", + "Kook": "Kook", + "wayToGetKookBotToken": "Créez une application et récupérer le jeton de robot à l'addresse {0}", + "wayToGetKookGuildID": "Passez en « mode développeur » dans les paramètres de Kook, et cliquez droit sur le Guild pour obtenir son identifiant", + "Guild ID": "Identifiant de Guild", "line": "Line Messenger", "mattermost": "Mattermost", "User Key": "Clé d'utilisateur", @@ -668,5 +674,7 @@ "high": "Haute", "General Monitor Type": "Type de sonde générale", "Passive Monitor Type": "Type de sonde passive", - "Specific Monitor Type": "Type de sonde spécifique" + "Specific Monitor Type": "Type de sonde spécifique", + "dataRetentionTimeError": "La durée de conservation doit être supérieure ou égale à 0", + "infiniteRetention": "Définissez la valeur à 0 pour une durée de conservation infinie." } \ No newline at end of file From 8128c8081bf9be1c551daf7b512f22937173ae4b Mon Sep 17 00:00:00 2001 From: 401Unauthorized Date: Sun, 15 Jan 2023 10:50:52 +0800 Subject: [PATCH 50/73] sync language file changes --- src/lang/cs-CZ.json | 2 +- src/lang/en.json | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/lang/cs-CZ.json b/src/lang/cs-CZ.json index bc43337bc..2e2e52f77 100644 --- a/src/lang/cs-CZ.json +++ b/src/lang/cs-CZ.json @@ -591,7 +591,7 @@ "You can divide numbers with": "Čísla můžete dělit pomocí", "or": "nebo", "recurringInterval": "Interval", - "Recurring": "Recurring", + "Recurring": "Opakující se", "strategyManual": "Aktivní/Neaktivní Ručně", "warningTimezone": "Používá se časové pásmo serveru", "weekdayShortMon": "Po", diff --git a/src/lang/en.json b/src/lang/en.json index ce07e068c..e919a537a 100644 --- a/src/lang/en.json +++ b/src/lang/en.json @@ -74,6 +74,7 @@ "Current": "Current", "Uptime": "Uptime", "Cert Exp.": "Cert Exp.", + "Monitor": "Monitor | Monitors", "day": "day | days", "-day": "-day", "hour": "hour", @@ -190,6 +191,7 @@ "Indigo": "Indigo", "Purple": "Purple", "Pink": "Pink", + "Custom": "Custom", "Search...": "Search...", "Avg. Ping": "Avg. Ping", "Avg. Response": "Avg. Response", @@ -676,5 +678,6 @@ "Passive Monitor Type": "Passive Monitor Type", "Specific Monitor Type": "Specific Monitor Type", "dataRetentionTimeError": "Retention period must be 0 or greater", - "infiniteRetention": "Set to 0 for infinite retention." + "infiniteRetention": "Set to 0 for infinite retention.", + "confirmDeleteTagMsg": "Are you sure you want to delete this tag? Monitors associated with this tag will not be deleted." } \ No newline at end of file From b073ec22870e1cb8b0894bfeb65782bc6198f8a7 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Mon, 16 Jan 2023 12:39:24 +0800 Subject: [PATCH 51/73] Add Help button which links to wiki --- src/icon.js | 2 ++ src/layouts/Layout.vue | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/src/icon.js b/src/icon.js index b38bef3ce..6cc997bbd 100644 --- a/src/icon.js +++ b/src/icon.js @@ -44,6 +44,7 @@ import { faWrench, faHeartbeat, faFilter, + faInfoCircle, } from "@fortawesome/free-solid-svg-icons"; library.add( @@ -88,6 +89,7 @@ library.add( faWrench, faHeartbeat, faFilter, + faInfoCircle, ); export { FontAwesomeIcon }; diff --git a/src/layouts/Layout.vue b/src/layouts/Layout.vue index d8e96aa82..9069aef70 100644 --- a/src/layouts/Layout.vue +++ b/src/layouts/Layout.vue @@ -63,6 +63,12 @@ +
  • + + {{ $t("Help") }} + +
  • +