From a54e58b4d6bc5f6eabe161fbdc0709dfadd69189 Mon Sep 17 00:00:00 2001 From: Matthew Nickson Date: Thu, 14 Jul 2022 08:32:51 +0100 Subject: [PATCH 002/296] Added Ping packet size #1891 This should fully implement #1891 by adding an extra field to the edit monitor page and an extra column to the database. The user can now set the size of the packet to send, it defaults to 56. A maximum limit of 65500 was chosen to ensure that the total size of the packet does not exceed the IPv4 maximum packet size and to comply with the limit imposed by Windows. Signed-off-by: Matthew Nickson --- db/patch-ping-packet-size.sql | 5 +++++ server/database.js | 1 + server/model/monitor.js | 5 +++-- server/ping-lite.js | 8 ++++---- server/server.js | 1 + server/util-server.js | 13 ++++++++----- src/languages/en.js | 1 + src/pages/EditMonitor.vue | 7 +++++++ 8 files changed, 30 insertions(+), 11 deletions(-) create mode 100644 db/patch-ping-packet-size.sql diff --git a/db/patch-ping-packet-size.sql b/db/patch-ping-packet-size.sql new file mode 100644 index 00000000..d65ec8ed --- /dev/null +++ b/db/patch-ping-packet-size.sql @@ -0,0 +1,5 @@ +-- You should not modify if this have pushed to Github, unless it does serious wrong with the db. +BEGIN TRANSACTION; +ALTER TABLE monitor + ADD packet_size INTEGER DEFAULT 56 NOT NULL; +COMMIT; diff --git a/server/database.js b/server/database.js index 00fd48d9..3d5508f7 100644 --- a/server/database.js +++ b/server/database.js @@ -61,6 +61,7 @@ class Database { "patch-add-clickable-status-page-link.sql": true, "patch-add-sqlserver-monitor.sql": true, "patch-add-other-auth.sql": { parents: [ "patch-monitor-basic-auth.sql" ] }, + "patch-ping-packet-size.sql": true, }; /** diff --git a/server/model/monitor.js b/server/model/monitor.js index b8733a0b..6ce7322b 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -82,6 +82,7 @@ class Monitor extends BeanModel { expiryNotification: this.isEnabledExpiryNotification(), ignoreTls: this.getIgnoreTls(), upsideDown: this.isUpsideDown(), + packetSize: this.packetSize, maxredirects: this.maxredirects, accepted_statuscodes: this.getAcceptedStatuscodes(), dns_resolve_type: this.dns_resolve_type, @@ -352,7 +353,7 @@ class Monitor extends BeanModel { bean.status = UP; } else if (this.type === "ping") { - bean.ping = await ping(this.hostname); + bean.ping = await ping(this.hostname, this.packetSize); bean.msg = ""; bean.status = UP; } else if (this.type === "dns") { @@ -459,7 +460,7 @@ class Monitor extends BeanModel { bean.msg = res.data.response.servers[0].name; try { - bean.ping = await ping(this.hostname); + bean.ping = await ping(this.hostname, this.packetSize); } catch (_) { } } else { throw new Error("Server not found on Steam"); diff --git a/server/ping-lite.js b/server/ping-lite.js index b7d003b8..c1686dd9 100644 --- a/server/ping-lite.js +++ b/server/ping-lite.js @@ -28,13 +28,13 @@ function Ping(host, options) { if (util.WIN) { this._bin = "c:/windows/system32/ping.exe"; - this._args = (options.args) ? options.args : [ "-n", "1", "-w", timeout * 1000, host ]; + this._args = (options.args) ? options.args : [ "-n", "1", "-w", timeout * 1000, "-l", this._options.size, host ]; this._regmatch = /[><=]([0-9.]+?)ms/; } else if (util.LIN) { this._bin = "/bin/ping"; - const defaultArgs = [ "-n", "-w", timeout, "-c", "1", host ]; + const defaultArgs = [ "-n", "-w", timeout, "-c", "1", "-s", this._options.size, host ]; if (net.isIPv6(host) || options.ipv6) { defaultArgs.unshift("-6"); @@ -51,13 +51,13 @@ function Ping(host, options) { this._bin = "/sbin/ping"; } - this._args = (options.args) ? options.args : [ "-n", "-t", timeout, "-c", "1", host ]; + this._args = (options.args) ? options.args : [ "-n", "-t", timeout, "-c", "1", "-s", this._options.size, host ]; this._regmatch = /=([0-9.]+?) ms/; } else if (util.BSD) { this._bin = "/sbin/ping"; - const defaultArgs = [ "-n", "-t", timeout, "-c", "1", host ]; + const defaultArgs = [ "-n", "-t", timeout, "-c", "1", "-s", this._options.size, host ]; if (net.isIPv6(host) || options.ipv6) { defaultArgs.unshift("-6"); diff --git a/server/server.js b/server/server.js index 2d3f37ee..72adbb2a 100644 --- a/server/server.js +++ b/server/server.js @@ -659,6 +659,7 @@ let needSetup = false; bean.ignoreTls = monitor.ignoreTls; bean.expiryNotification = monitor.expiryNotification; bean.upsideDown = monitor.upsideDown; + bean.packetSize = monitor.packetSize; bean.maxredirects = monitor.maxredirects; bean.accepted_statuscodes_json = JSON.stringify(monitor.accepted_statuscodes); bean.dns_resolve_type = monitor.dns_resolve_type; diff --git a/server/util-server.js b/server/util-server.js index f6a0e396..bc49a6c7 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -70,15 +70,16 @@ exports.tcping = function (hostname, port) { /** * Ping the specified machine * @param {string} hostname Hostname / address of machine + * @param {number} [size=56] Size of packet to send * @returns {Promise} Time for ping in ms rounded to nearest integer */ -exports.ping = async (hostname) => { +exports.ping = async (hostname, size = 56) => { try { - return await exports.pingAsync(hostname); + return await exports.pingAsync(hostname, false, size ); } catch (e) { // If the host cannot be resolved, try again with ipv6 if (e.message.includes("service not known")) { - return await exports.pingAsync(hostname, true); + return await exports.pingAsync(hostname, true, size); } else { throw e; } @@ -89,12 +90,14 @@ exports.ping = async (hostname) => { * Ping the specified machine * @param {string} hostname Hostname / address of machine to ping * @param {boolean} ipv6 Should IPv6 be used? + * @param {number} [size=56] Size of ping packet to send * @returns {Promise} Time for ping in ms rounded to nearest integer */ -exports.pingAsync = function (hostname, ipv6 = false) { +exports.pingAsync = function (hostname, ipv6 = false, size = 56) { return new Promise((resolve, reject) => { const ping = new Ping(hostname, { - ipv6 + ipv6, + size }); ping.send(function (err, ms, stdout) { diff --git a/src/languages/en.js b/src/languages/en.js index 9aeedd9d..4f3b2abb 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -536,4 +536,5 @@ export default { "Domain": "Domain", "Workstation": "Workstation", disableCloudflaredNoAuthMsg: "You are in No Auth mode, password is not require.", + "Packet Size": "Packet Size", }; diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index f8791d3f..737afa70 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -230,6 +230,12 @@ + +
+ + +
+ + + +
From 2103edb6044edc635e620a6c2ecb3d3ba33546c3 Mon Sep 17 00:00:00 2001 From: rmarops Date: Wed, 16 Nov 2022 22:21:15 -0500 Subject: [PATCH 017/296] 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 9b55864e..ef15f7c3 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 018/296] 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 ef15f7c3..b96a1f4e 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 f3660a0cece42f1d76f23dfed082a96297d5c096 Mon Sep 17 00:00:00 2001 From: Joppe Koers Date: Tue, 6 Dec 2022 18:43:28 +0100 Subject: [PATCH 019/296] Fix spelling in README --- README.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 55a6ec50..90c8ad75 100644 --- a/README.md +++ b/README.md @@ -22,17 +22,17 @@ It is a temporary live demo, all data will be deleted after 10 minutes. Use the ## ⭐ Features -* Monitoring uptime for HTTP(s) / TCP / HTTP(s) Keyword / Ping / DNS Record / Push / Steam Game Server / Docker Containers. -* Fancy, Reactive, Fast UI/UX. -* Notifications via Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP), and [90+ notification services, click here for the full list](https://github.com/louislam/uptime-kuma/tree/master/src/components/notifications). -* 20 second intervals. +* Monitoring uptime for HTTP(s) / TCP / HTTP(s) Keyword / Ping / DNS Record / Push / Steam Game Server / Docker Containers +* Fancy, Reactive, Fast UI/UX +* Notifications via Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP), and [90+ notification services, click here for the full list](https://github.com/louislam/uptime-kuma/tree/master/src/components/notifications) +* 20 second intervals * [Multi Languages](https://github.com/louislam/uptime-kuma/tree/master/src/languages) -* Multiple Status Pages -* Map Status Page to Domain -* Ping Chart -* Certificate Info -* Proxy Support -* 2FA available +* Multiple status pages +* Map status pages to specific domains +* Ping chart +* Certificate info +* Proxy support +* 2FA support ## 🔧 How to Install @@ -44,14 +44,14 @@ docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name upti ⚠️ Please use a **local volume** only. Other types such as NFS are not supported. -Browse to http://localhost:3001 after starting. +Kuma is now running on http://localhost:3001 ### 💪🏻 Non-Docker Required Tools: - [Node.js](https://nodejs.org/en/download/) >= 14 - [Git](https://git-scm.com/downloads) -- [pm2](https://pm2.keymetrics.io/) - For run in background +- [pm2](https://pm2.keymetrics.io/) - For running kuma in the background ```bash # Update your npm to the latest version @@ -73,7 +73,7 @@ pm2 start server/server.js --name uptime-kuma ``` -Browse to http://localhost:3001 after starting. +Kuma is now running on http://localhost:3001 More useful PM2 Commands From f8c7da7995528c453335a8f6814e81bdea8e17ac Mon Sep 17 00:00:00 2001 From: Joppe Koers Date: Tue, 6 Dec 2022 18:44:16 +0100 Subject: [PATCH 020/296] Add docker-compose to README --- README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/README.md b/README.md index 90c8ad75..6d10cf2a 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,20 @@ It is a temporary live demo, all data will be deleted after 10 minutes. Use the docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1 ``` +### 🐳 Docker Compose +```yaml +version: "3" + +services: + uptime-kuma: + image: louislam/uptime-kuma:1 + restart: always + ports: + - "3001:3001" + volumes: + - uptime-kuma:/app/data +``` + ⚠️ Please use a **local volume** only. Other types such as NFS are not supported. Kuma is now running on http://localhost:3001 From 73bfdb9ef9d3d970338086c8f339c84389e09a99 Mon Sep 17 00:00:00 2001 From: panos Date: Thu, 8 Dec 2022 13:32:10 +0200 Subject: [PATCH 021/296] zoho cliq notification provider --- server/notification-providers/zoho-cliq.js | 119 +++++++++++++++++++++ server/notification.js | 2 + src/components/notifications/ZohoCliq.vue | 18 ++++ src/components/notifications/index.js | 2 + src/languages/el-GR.js | 2 + src/languages/en.js | 2 + src/languages/eu.js | 2 + 7 files changed, 147 insertions(+) create mode 100644 server/notification-providers/zoho-cliq.js create mode 100644 src/components/notifications/ZohoCliq.vue diff --git a/server/notification-providers/zoho-cliq.js b/server/notification-providers/zoho-cliq.js new file mode 100644 index 00000000..d944089d --- /dev/null +++ b/server/notification-providers/zoho-cliq.js @@ -0,0 +1,119 @@ +const NotificationProvider = require("./notification-provider"); +const axios = require("axios"); +const {DOWN, UP} = require("../../src/util"); + +class ZohoCliq extends NotificationProvider { + + name = "ZohoCliq"; + + /** + * Generate the message to send + * @param {const} status The status constant + * @param {string} monitorName Name of monitor + * @returns {string} + */ + _statusMessageFactory = (status, monitorName) => { + if (status === DOWN) { + return `🔴 Application [${monitorName}] went down\n`; + } else if (status === UP) { + return `✅ Application [${monitorName}] is back online\n`; + } + return "Notification\n"; + }; + + /** + * Send the notification + * @param {string} webhookUrl URL to send the request to + * @param {Array} payload Payload generated by _notificationPayloadFactory + */ + _sendNotification = async(webhookUrl, payload) => { + await axios.post(webhookUrl, {text: payload.join("\n")}); + }; + + /** + * Generate payload for notification + * @param {const} status The status of the monitor + * @param {string} monitorMessage Message to send + * @param {string} monitorName Name of monitor affected + * @param {string} monitorUrl URL of monitor affected + * @returns {Array} + */ + _notificationPayloadFactory = ({ + status, + monitorMessage, + monitorName, + monitorUrl, + }) => { + + const payload = ["### Uptime Kuma\n"]; + payload.push(this._statusMessageFactory(status, monitorName)); + payload.push(`*Description:* ${monitorMessage}`); + + if (monitorName) { + payload.push(`*Monitor:* ${monitorName}`); + } + + if (monitorUrl && monitorUrl !== "https://") { + payload.push(`*URL:* [${monitorUrl}](${monitorUrl})`); + } + + return payload; + }; + + /** + * Send a general notification + * @param {string} webhookUrl URL to send request to + * @param {string} msg Message to send + * @returns {Promise} + */ + _handleGeneralNotification = (webhookUrl, msg) => { + const payload = this._notificationPayloadFactory({ + monitorMessage: msg + }); + + return this._sendNotification(webhookUrl, payload); + }; + + _monitorUrlFactory = (monitorJSON) => { + let url; + switch(monitorJSON["type"]) { + case "http": + case "keywork": + url = monitorJSON["url"]; + break; + case "docker": + url = monitorJSON["docker_host"]; + break; + default: + url = monitorJSON["hostname"]; + break; + } + return url; + }; + + async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { + let okMsg = "Sent Successfully."; + + try { + if (heartbeatJSON == null) { + await this._handleGeneralNotification(notification.webhookUrl, msg); + return okMsg; + } + + const payload = this._notificationPayloadFactory({ + monitorMessage: heartbeatJSON.msg, + monitorName: monitorJSON.name, + monitorUrl: this._monitorUrlFactory(monitorJSON), + status: heartbeatJSON.status, + }); + + await this._sendNotification(notification.webhookUrl, payload); + return okMsg; + + } catch(error) { + this.throwGeneralAxiosError(error); + } + } +} + +module.exports = ZohoCliq; diff --git a/server/notification.js b/server/notification.js index 9069601b..275f07b9 100644 --- a/server/notification.js +++ b/server/notification.js @@ -44,6 +44,7 @@ const WeCom = require("./notification-providers/wecom"); const GoAlert = require("./notification-providers/goalert"); const SMSManager = require("./notification-providers/smsmanager"); const ServerChan = require("./notification-providers/serverchan"); +const ZohoCliq = require("./notification-providers/zoho-cliq"); class Notification { @@ -100,6 +101,7 @@ class Notification { new Webhook(), new WeCom(), new GoAlert(), + new ZohoCliq() ]; for (let item of list) { diff --git a/src/components/notifications/ZohoCliq.vue b/src/components/notifications/ZohoCliq.vue new file mode 100644 index 00000000..9a9cd736 --- /dev/null +++ b/src/components/notifications/ZohoCliq.vue @@ -0,0 +1,18 @@ + diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index 0c220b71..86dad13e 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -42,6 +42,7 @@ import Telegram from "./Telegram.vue"; import Webhook from "./Webhook.vue"; import WeCom from "./WeCom.vue"; import GoAlert from "./GoAlert.vue"; +import ZohoCliq from "./ZohoCliq.vue"; /** * Manage all notification form. @@ -93,6 +94,7 @@ const NotificationFormList = { "WeCom": WeCom, "GoAlert": GoAlert, "ServerChan": ServerChan, + "ZohoCliq": ZohoCliq }; export default NotificationFormList; diff --git a/src/languages/el-GR.js b/src/languages/el-GR.js index c520a607..9b7c4cfb 100644 --- a/src/languages/el-GR.js +++ b/src/languages/el-GR.js @@ -194,6 +194,7 @@ export default { here: "εδώ", Required: "Απαιτείται", telegram: "Telegram", + "ZohoCliq": "ZohoCliq", "Bot Token": "Διακριτικό Bot", wayToGetTelegramToken: "Μπορείτε να πάρετε ένα διακριτικό από {0}.", "Chat ID": "Chat ID", @@ -224,6 +225,7 @@ export default { teams: "Microsoft Teams", "Webhook URL": "Webhook URL", wayToGetTeamsURL: "Μπορείτε να μάθετε πώς να δημιουργείτε μια διεύθυνση URL webhook {0}.", + wayToGetZohoCliqURL: "Μπορείτε να μάθετε πώς να δημιουργείτε μια διεύθυνση URL webhook {0}.", signal: "Signal", Number: "Αριθμός", Recipients: "Αποδέκτες", diff --git a/src/languages/en.js b/src/languages/en.js index e7de9648..106edf0e 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -209,6 +209,7 @@ export default { here: "here", Required: "Required", telegram: "Telegram", + "ZohoCliq": "ZohoCliq", "Bot Token": "Bot Token", wayToGetTelegramToken: "You can get a token from {0}.", "Chat ID": "Chat ID", @@ -241,6 +242,7 @@ export default { 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", diff --git a/src/languages/eu.js b/src/languages/eu.js index c99f1eb7..a491c872 100644 --- a/src/languages/eu.js +++ b/src/languages/eu.js @@ -191,6 +191,7 @@ export default { here: "Hemen", Required: "Beharrezkoa", telegram: "Telegram", + "ZohoCliq": "ZohoCliq", "Bot Token": "Bot Tokena", wayToGetTelegramToken: "You can get a token from {0}.", "Chat ID": "Txat IDa", @@ -221,6 +222,7 @@ export default { 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", From 68bc7ac421baf0234ccf51059108dfb3d88cd943 Mon Sep 17 00:00:00 2001 From: panos Date: Thu, 8 Dec 2022 13:41:05 +0200 Subject: [PATCH 022/296] zoho cliq code style --- server/notification-providers/zoho-cliq.js | 36 ++++++++++------------ 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/server/notification-providers/zoho-cliq.js b/server/notification-providers/zoho-cliq.js index d944089d..61fc68be 100644 --- a/server/notification-providers/zoho-cliq.js +++ b/server/notification-providers/zoho-cliq.js @@ -43,8 +43,7 @@ class ZohoCliq extends NotificationProvider { monitorMessage, monitorName, monitorUrl, - }) => { - + }) => { const payload = ["### Uptime Kuma\n"]; payload.push(this._statusMessageFactory(status, monitorName)); payload.push(`*Description:* ${monitorMessage}`); @@ -74,23 +73,6 @@ class ZohoCliq extends NotificationProvider { return this._sendNotification(webhookUrl, payload); }; - _monitorUrlFactory = (monitorJSON) => { - let url; - switch(monitorJSON["type"]) { - case "http": - case "keywork": - url = monitorJSON["url"]; - break; - case "docker": - url = monitorJSON["docker_host"]; - break; - default: - url = monitorJSON["hostname"]; - break; - } - return url; - }; - async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { let okMsg = "Sent Successfully."; @@ -100,10 +82,24 @@ class ZohoCliq extends NotificationProvider { return okMsg; } + let url; + switch(monitorJSON["type"]) { + case "http": + case "keywork": + url = monitorJSON["url"]; + break; + case "docker": + url = monitorJSON["docker_host"]; + break; + default: + url = monitorJSON["hostname"]; + break; + } + const payload = this._notificationPayloadFactory({ monitorMessage: heartbeatJSON.msg, monitorName: monitorJSON.name, - monitorUrl: this._monitorUrlFactory(monitorJSON), + monitorUrl: url, status: heartbeatJSON.status, }); From 851a04b08215020c1c2d21418189f17c80b5ce44 Mon Sep 17 00:00:00 2001 From: panos Date: Thu, 8 Dec 2022 13:53:02 +0200 Subject: [PATCH 023/296] zoho cliq code style --- server/notification-providers/zoho-cliq.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/server/notification-providers/zoho-cliq.js b/server/notification-providers/zoho-cliq.js index 61fc68be..b7885be4 100644 --- a/server/notification-providers/zoho-cliq.js +++ b/server/notification-providers/zoho-cliq.js @@ -1,6 +1,6 @@ const NotificationProvider = require("./notification-provider"); const axios = require("axios"); -const {DOWN, UP} = require("../../src/util"); +const { DOWN, UP } = require("../../src/util"); class ZohoCliq extends NotificationProvider { @@ -44,7 +44,8 @@ class ZohoCliq extends NotificationProvider { monitorName, monitorUrl, }) => { - const payload = ["### Uptime Kuma\n"]; + const payload = []; + payload.push("### Uptime Kuma\n"); payload.push(this._statusMessageFactory(status, monitorName)); payload.push(`*Description:* ${monitorMessage}`); @@ -83,7 +84,7 @@ class ZohoCliq extends NotificationProvider { } let url; - switch(monitorJSON["type"]) { + switch (monitorJSON["type"]) { case "http": case "keywork": url = monitorJSON["url"]; @@ -100,7 +101,7 @@ class ZohoCliq extends NotificationProvider { monitorMessage: heartbeatJSON.msg, monitorName: monitorJSON.name, monitorUrl: url, - status: heartbeatJSON.status, + status: heartbeatJSON.status }); await this._sendNotification(notification.webhookUrl, payload); From 9da28fbbc75b16b0d90dd013057666b20be641c9 Mon Sep 17 00:00:00 2001 From: panos Date: Thu, 8 Dec 2022 13:56:02 +0200 Subject: [PATCH 024/296] zoho cliq code style --- server/notification-providers/zoho-cliq.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/server/notification-providers/zoho-cliq.js b/server/notification-providers/zoho-cliq.js index b7885be4..749647d0 100644 --- a/server/notification-providers/zoho-cliq.js +++ b/server/notification-providers/zoho-cliq.js @@ -26,8 +26,8 @@ class ZohoCliq extends NotificationProvider { * @param {string} webhookUrl URL to send the request to * @param {Array} payload Payload generated by _notificationPayloadFactory */ - _sendNotification = async(webhookUrl, payload) => { - await axios.post(webhookUrl, {text: payload.join("\n")}); + _sendNotification = async (webhookUrl, payload) => { + await axios.post(webhookUrl, { text: payload.join("\n") }); }; /** @@ -39,10 +39,10 @@ class ZohoCliq extends NotificationProvider { * @returns {Array} */ _notificationPayloadFactory = ({ - status, - monitorMessage, - monitorName, - monitorUrl, + status, + monitorMessage, + monitorName, + monitorUrl, }) => { const payload = []; payload.push("### Uptime Kuma\n"); @@ -107,7 +107,7 @@ class ZohoCliq extends NotificationProvider { await this._sendNotification(notification.webhookUrl, payload); return okMsg; - } catch(error) { + } catch (error) { this.throwGeneralAxiosError(error); } } From 3ea67110538a60ed0cd316a38e4ec9bf5efa93ae Mon Sep 17 00:00:00 2001 From: Joppe Koers Date: Thu, 15 Dec 2022 23:03:06 +0100 Subject: [PATCH 025/296] Remove docker compose again --- README.md | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/README.md b/README.md index 6d10cf2a..90c8ad75 100644 --- a/README.md +++ b/README.md @@ -42,20 +42,6 @@ It is a temporary live demo, all data will be deleted after 10 minutes. Use the docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1 ``` -### 🐳 Docker Compose -```yaml -version: "3" - -services: - uptime-kuma: - image: louislam/uptime-kuma:1 - restart: always - ports: - - "3001:3001" - volumes: - - uptime-kuma:/app/data -``` - ⚠️ Please use a **local volume** only. Other types such as NFS are not supported. Kuma is now running on http://localhost:3001 From c79b2913a2a36f24c9069294661b5bc4f31b6c0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathias=20Haugsb=C3=B8?= Date: Sun, 18 Dec 2022 17:16:19 +0100 Subject: [PATCH 026/296] Auth: Case insensitive login check on username Allows users to add users with capital letters and then login with just lowercase letters. We accidentally capitalized the first letter of our username so the other people using it frequently thinks they wrote the wrong password. --- server/auth.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/auth.js b/server/auth.js index 3ce1a604..9bb9dd01 100644 --- a/server/auth.js +++ b/server/auth.js @@ -15,7 +15,7 @@ exports.login = async function (username, password) { return null; } - let user = await R.findOne("user", " username = ? AND active = 1 ", [ + let user = await R.findOne("user", " username LIKE ? AND active = 1 ", [ username, ]); From b3ac7c3d433568cd9737e1cb563efd9d19a073d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathias=20Haugsb=C3=B8?= Date: Mon, 19 Dec 2022 12:18:33 +0100 Subject: [PATCH 027/296] Username case insensitive, patch db instead of using LIKE --- db/patch-user-username-case-insensitive.sql | 47 +++++++++++++++++++++ server/auth.js | 2 +- server/database.js | 1 + 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 db/patch-user-username-case-insensitive.sql diff --git a/db/patch-user-username-case-insensitive.sql b/db/patch-user-username-case-insensitive.sql new file mode 100644 index 00000000..90b7f1cb --- /dev/null +++ b/db/patch-user-username-case-insensitive.sql @@ -0,0 +1,47 @@ +CREATE TABLE [temp_user]( + [id] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + [username] VARCHAR(255) NOT NULL UNIQUE COLLATE NOCASE, + [password] VARCHAR(255), + [active] BOOLEAN NOT NULL DEFAULT 1, + [timezone] VARCHAR(150), + twofa_secret VARCHAR(64), + twofa_status BOOLEAN default 0 NOT NULL, + twofa_last_token VARCHAR(6) +); + +INSERT INTO [temp_user] SELECT +[id], +[username], +[password], +[active], +[timezone], +twofa_secret, +twofa_status, +twofa_last_token + FROM user; + +DROP TABLE user; + +CREATE TABLE [user]( + [id] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + [username] VARCHAR(255) NOT NULL UNIQUE COLLATE NOCASE, + [password] VARCHAR(255), + [active] BOOLEAN NOT NULL DEFAULT 1, + [timezone] VARCHAR(150), + twofa_secret VARCHAR(64), + twofa_status BOOLEAN default 0 NOT NULL, + twofa_last_token VARCHAR(6) +); + +INSERT INTO [user] SELECT +[id], +[username], +[password], +[active], +[timezone], +twofa_secret, +twofa_status, +twofa_last_token + FROM [temp_user]; + +DROP TABLE [temp_user]; diff --git a/server/auth.js b/server/auth.js index 9bb9dd01..b4eeee41 100644 --- a/server/auth.js +++ b/server/auth.js @@ -15,7 +15,7 @@ exports.login = async function (username, password) { return null; } - let user = await R.findOne("user", " username LIKE ? AND active = 1 ", [ + let user = await R.findOne("user", " username = ? AND active = 1", [ username, ]); diff --git a/server/database.js b/server/database.js index 2544f197..7764df3f 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-user-username-case-insensitive.sql": { parents: [ "patch-2fa-invalidate-used-token.sql", "patch-2fa.sql" ] } }; /** From c60b741406d45c7678e16a53500f1359678bd95c Mon Sep 17 00:00:00 2001 From: 401Unauthorized Date: Tue, 27 Dec 2022 14:05:45 +0800 Subject: [PATCH 028/296] Add kook notification provider --- server/notification-providers/kook.js | 31 +++++++++++++++++++++++ server/notification.js | 2 ++ src/components/notifications/Kook.vue | 36 +++++++++++++++++++++++++++ src/components/notifications/index.js | 2 ++ src/languages/en.js | 4 +++ src/languages/zh-CN.js | 4 +++ 6 files changed, 79 insertions(+) create mode 100644 server/notification-providers/kook.js create mode 100644 src/components/notifications/Kook.vue diff --git a/server/notification-providers/kook.js b/server/notification-providers/kook.js new file mode 100644 index 00000000..b37b75ab --- /dev/null +++ b/server/notification-providers/kook.js @@ -0,0 +1,31 @@ +const NotificationProvider = require("./notification-provider"); +const axios = require("axios"); + +class Kook extends NotificationProvider { + + name = "Kook"; + + async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { + let okMsg = "Sent Successfully."; + let url = "https://www.kookapp.cn/api/v3/message/create"; + let data = { + target_id: notification.kookGuildID, + content: msg, + }; + let config = { + headers: { + "Authorization": "Bot " + notification.kookBotToken, + "Content-Type": "application/json", + }, + }; + try { + await axios.post(url, data, config); + return okMsg; + + } catch (error) { + this.throwGeneralAxiosError(error); + } + } +} + +module.exports = Kook; diff --git a/server/notification.js b/server/notification.js index 9069601b..6ff42e01 100644 --- a/server/notification.js +++ b/server/notification.js @@ -14,6 +14,7 @@ const GoogleChat = require("./notification-providers/google-chat"); const Gorush = require("./notification-providers/gorush"); const Gotify = require("./notification-providers/gotify"); const HomeAssistant = require("./notification-providers/home-assistant"); +const Kook = require("./notification-providers/kook"); const Line = require("./notification-providers/line"); const LineNotify = require("./notification-providers/linenotify"); const LunaSea = require("./notification-providers/lunasea"); @@ -70,6 +71,7 @@ class Notification { new Gorush(), new Gotify(), new HomeAssistant(), + new Kook(), new Line(), new LineNotify(), new LunaSea(), diff --git a/src/components/notifications/Kook.vue b/src/components/notifications/Kook.vue new file mode 100644 index 00000000..d618750b --- /dev/null +++ b/src/components/notifications/Kook.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index 0c220b71..a2ba485f 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -12,6 +12,7 @@ import GoogleChat from "./GoogleChat.vue"; import Gorush from "./Gorush.vue"; import Gotify from "./Gotify.vue"; import HomeAssistant from "./HomeAssistant.vue"; +import Kook from "./Kook.vue"; import Line from "./Line.vue"; import LineNotify from "./LineNotify.vue"; import LunaSea from "./LunaSea.vue"; @@ -63,6 +64,7 @@ const NotificationFormList = { "gorush": Gorush, "gotify": Gotify, "HomeAssistant": HomeAssistant, + "Kook": Kook, "line": Line, "LineNotify": LineNotify, "lunasea": LunaSea, diff --git a/src/languages/en.js b/src/languages/en.js index e760f92e..786185f3 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -270,6 +270,10 @@ export default { 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", diff --git a/src/languages/zh-CN.js b/src/languages/zh-CN.js index ff11c7e9..5878758c 100644 --- a/src/languages/zh-CN.js +++ b/src/languages/zh-CN.js @@ -250,6 +250,10 @@ export default { apprise: "Apprise (支持 50+ 种通知服务)", GoogleChat: "Google Chat(仅 Google Workspace)", pushbullet: "Pushbullet", + Kook: "Kook", + wayToGetKookBotToken: "在 {0} 创建应用并获取机器人 Token", + wayToGetKookGuildID: "在Kook设置中打开 ‘开发者模式’,然后右键频道可获取其 ID", + "Guild ID": "频道 ID", line: "Line Messenger", mattermost: "Mattermost", "User Key": "User Key", From 50b84f5f453d92052aac37a5060b4429a0ae5c57 Mon Sep 17 00:00:00 2001 From: 401Unauthorized Date: Tue, 27 Dec 2022 14:10:19 +0800 Subject: [PATCH 029/296] fix code style: add missing semicolon --- src/components/notifications/Kook.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/notifications/Kook.vue b/src/components/notifications/Kook.vue index d618750b..7027b5e1 100644 --- a/src/components/notifications/Kook.vue +++ b/src/components/notifications/Kook.vue @@ -32,5 +32,5 @@ export default { components: { HiddenInput, } -} +}; From 7f394d06307313b9f66176f79036769d71d5ab02 Mon Sep 17 00:00:00 2001 From: 5idereal Date: Wed, 28 Dec 2022 17:29:46 +0800 Subject: [PATCH 030/296] update zh-TW.js --- src/languages/zh-TW.js | 52 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 45 insertions(+), 7 deletions(-) diff --git a/src/languages/zh-TW.js b/src/languages/zh-TW.js index 5f7bfb6e..668e4c23 100644 --- a/src/languages/zh-TW.js +++ b/src/languages/zh-TW.js @@ -8,6 +8,8 @@ export default { ignoreTLSError: "忽略 HTTPS 網站的 TLS/SSL 錯誤", upsideDownModeDescription: "反轉顯示狀態。若服務可以連線,將顯示離線。", maxRedirectDescription: "最大重新導向跟隨次數。設為 0 將停用重新導向。", + enableGRPCTls: "允許以 TLS 連線傳送 gRPC 要求", + grpcMethodDescription: "方法名稱將轉換至駝峰式命名,如 sayHello、check 等。", acceptedStatusCodesDescription: "選擇視為成功回應的狀態碼。", Maintenance: "維護", statusMaintenance: "維護", @@ -219,13 +221,15 @@ export default { "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": "收件人", + "To Email": "收件者", smtpCC: "CC", smtpBCC: "BCC", discord: "Discord", @@ -239,10 +243,10 @@ export default { wayToGetTeamsURL: "您可以前往此頁面以了解如何建立 Webhook 網址 {0}。", signal: "Signal", Number: "號碼", - Recipients: "收件人", + Recipients: "收件者", needSignalAPI: "您需要有 REST API 的 Signal 客戶端。", wayToCheckSignalURL: "您可以前往下列網址以了解如何設定:", - signalImportant: "注意: 不得混合收件人的群組和號碼!", + signalImportant: "注意: 不得混合收件者的群組和號碼!", gotify: "Gotify", "Application Token": "應用程式權杖", "Server URL": "伺服器網址", @@ -304,11 +308,11 @@ export default { aboutIconURL: "您可以在 \"圖示網址\" 中提供圖片網址以覆蓋預設個人檔案圖片。若已設定 Emoji 圖示,將忽略此設定。", aboutMattermostChannelName: "您可以在 \"頻道名稱\" 欄位中填寫頻道名稱以覆蓋 Webhook 的預設頻道。必須在 Mattermost 的 Webhook 設定中啟用。例如:#其他頻道", matrix: "Matrix", - promosmsTypeEco: "SMS ECO - 便宜,但是很慢且經常過載。僅限位於波蘭的收件人。", - promosmsTypeFlash: "SMS FLASH - 訊息會自動在收件人的裝置上顯示。僅限位於波蘭的收件人。", + promosmsTypeEco: "SMS ECO - 便宜,但是很慢且經常過載。僅限位於波蘭的收件者。", + promosmsTypeFlash: "SMS FLASH - 訊息會自動在收件者的裝置上顯示。僅限位於波蘭的收件者。", promosmsTypeFull: "SMS FULL - 高級版,您可以使用您的寄件人名稱 (必須先註冊名稱。對於警報來說十分可靠。", promosmsTypeSpeed: "SMS SPEED - 系統中的最高優先度。快速、可靠,但昂貴 (約 SMS FULL 的兩倍價格)。", - promosmsPhoneNumber: "電話號碼 (若收件人位於波蘭則無需輸入區域代碼)", + promosmsPhoneNumber: "電話號碼 (若收件者位於波蘭則無需輸入區域代碼)", promosmsSMSSender: "簡訊寄件人名稱:預先註冊的名稱或以下的預設名稱:InfoSMS、SMS Info、MaxSMS、INFO、SMS", "Feishu WebHookUrl": "飛書 WebHook 網址", matrixHomeserverURL: "Homeserver 網址 (開頭為 http(s)://,結尾可能帶連接埠)", @@ -320,7 +324,7 @@ export default { Headers: "標頭", PushUrl: "Push 網址", HeadersInvalidFormat: "要求標頭不是有效的 JSON:", - BodyInvalidFormat: "請求主體不是有效的 JSON:", + BodyInvalidFormat: "要求主體不是有效的 JSON:", "Monitor History": "監測器歷史紀錄", clearDataOlderThan: "保留 {0} 天內的監測器歷史紀錄。", PasswordsDoNotMatch: "密碼不相符。", @@ -378,6 +382,16 @@ export default { 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": "自訂頁尾", @@ -631,4 +645,28 @@ export default { "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": "指定監測器類型", }; From 8c684e92936b5860139b09e50917d55c0b041891 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Wed, 28 Dec 2022 19:59:33 +0800 Subject: [PATCH 031/296] Update SECURITY.md --- SECURITY.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index d5941a97..657aa3eb 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -2,9 +2,9 @@ ## Reporting a Vulnerability -Please report security issues to uptime@kuma.pet. +Please report security issues to https://github.com/louislam/uptime-kuma/security/advisories/new. -Do not use the issue tracker or discuss it in the public as it will cause more damage. +Do not use the public issue tracker or discuss it in the public as it will cause more damage. ## Supported Versions From 4147a4c4040512670be065f9ad29b94d511b7248 Mon Sep 17 00:00:00 2001 From: minhhoang Date: Wed, 28 Dec 2022 22:31:33 +0700 Subject: [PATCH 032/296] fix: #2480 --- server/model/monitor.js | 2 +- server/server.js | 1 + server/util-server.js | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/server/model/monitor.js b/server/model/monitor.js index 186962b0..b6e95032 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -548,7 +548,7 @@ class Monitor extends BeanModel { log.debug("monitor:", `gRPC response: ${JSON.stringify(response)}`); let responseData = response.data; if (responseData.length > 50) { - responseData = response.substring(0, 47) + "..."; + responseData = responseData.toString().substring(0, 47) + "..."; } if (response.code !== 1) { bean.status = DOWN; diff --git a/server/server.js b/server/server.js index 594c29b3..5473cecd 100644 --- a/server/server.js +++ b/server/server.js @@ -714,6 +714,7 @@ let needSetup = false; bean.authDomain = monitor.authDomain; bean.grpcUrl = monitor.grpcUrl; bean.grpcProtobuf = monitor.grpcProtobuf; + bean.grpcServiceName = monitor.grpcServiceName; bean.grpcMethod = monitor.grpcMethod; bean.grpcBody = monitor.grpcBody; bean.grpcMetadata = monitor.grpcMetadata; diff --git a/server/util-server.js b/server/util-server.js index 0bf69133..ffc3b3d9 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -787,7 +787,7 @@ module.exports.grpcQuery = async (options) => { data: "" }); } else { - log.debug("monitor:", `gRPC response: ${response}`); + log.debug("monitor:", `gRPC response: ${JSON.stringify(response)}`); return resolve({ code: 1, errorMessage: "", From d111db0321fdd19886d107052c85b46ae77a1b9e Mon Sep 17 00:00:00 2001 From: minhhoang Date: Thu, 29 Dec 2022 08:10:58 +0700 Subject: [PATCH 033/296] fix: add accurate error message when user input invalid service name or method name --- server/util-server.js | 43 ++++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/server/util-server.js b/server/util-server.js index ffc3b3d9..2ce6de3e 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -778,22 +778,31 @@ module.exports.grpcQuery = async (options) => { cb); }, false, false); return new Promise((resolve, _) => { - return grpcService[`${grpcMethod}`](JSON.parse(grpcBody), function (err, response) { - const responseData = JSON.stringify(response); - if (err) { - return resolve({ - code: err.code, - errorMessage: err.details, - data: "" - }); - } else { - log.debug("monitor:", `gRPC response: ${JSON.stringify(response)}`); - return resolve({ - code: 1, - errorMessage: "", - data: responseData - }); - } - }); + try { + return grpcService[`${grpcMethod}`](JSON.parse(grpcBody), function (err, response) { + const responseData = JSON.stringify(response); + if (err) { + return resolve({ + code: err.code, + errorMessage: err.details, + data: "" + }); + } else { + log.debug("monitor:", `gRPC response: ${JSON.stringify(response)}`); + return resolve({ + code: 1, + errorMessage: "", + data: responseData + }); + } + }); + } catch (err) { + return resolve({ + code: -1, + errorMessage: `Error ${err}. Please review your gRPC configuration option. The service name must not include package name value, and the method name must follow camelCase format`, + data: "" + }); + } + }); }; From 1006fbd873002e862d44ea801419031390a8ffed Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Fri, 30 Dec 2022 13:46:34 +0800 Subject: [PATCH 034/296] A possible fix for #2447 --- server/model/monitor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/model/monitor.js b/server/model/monitor.js index 186962b0..54899a0a 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -1090,7 +1090,7 @@ class Monitor extends BeanModel { // Prevent if the msg is undefined, notifications such as Discord cannot send out. const heartbeatJSON = bean.toJSON(); if (!heartbeatJSON["msg"]) { - heartbeatJSON["msg"] = ""; + heartbeatJSON["msg"] = "N/A"; } await Notification.send(JSON.parse(notification.config), msg, await monitor.toJSON(false), heartbeatJSON); From e88e10cc8e640af3d80674a9c624cac685874ba0 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Sun, 1 Jan 2023 21:43:39 +0800 Subject: [PATCH 035/296] Fix #2494 --- server/socket-handlers/maintenance-socket-handler.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/server/socket-handlers/maintenance-socket-handler.js b/server/socket-handlers/maintenance-socket-handler.js index 5294050c..929150cd 100644 --- a/server/socket-handlers/maintenance-socket-handler.js +++ b/server/socket-handlers/maintenance-socket-handler.js @@ -244,6 +244,8 @@ module.exports.maintenanceSocketHandler = (socket) => { socket.userID, ]); + apicache.clear(); + callback({ ok: true, msg: "Deleted Successfully.", @@ -269,6 +271,8 @@ module.exports.maintenanceSocketHandler = (socket) => { maintenanceID, ]); + apicache.clear(); + callback({ ok: true, msg: "Paused Successfully.", @@ -294,6 +298,8 @@ module.exports.maintenanceSocketHandler = (socket) => { maintenanceID, ]); + apicache.clear(); + callback({ ok: true, msg: "Resume Successfully", From 50711391d1ddd8a597aba578609fabaade82e8c4 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Sun, 1 Jan 2023 22:19:00 +0800 Subject: [PATCH 036/296] Revert "Auth: Case insensitive login check on username" --- db/patch-user-username-case-insensitive.sql | 47 --------------------- server/auth.js | 2 +- server/database.js | 1 - 3 files changed, 1 insertion(+), 49 deletions(-) delete mode 100644 db/patch-user-username-case-insensitive.sql diff --git a/db/patch-user-username-case-insensitive.sql b/db/patch-user-username-case-insensitive.sql deleted file mode 100644 index 90b7f1cb..00000000 --- a/db/patch-user-username-case-insensitive.sql +++ /dev/null @@ -1,47 +0,0 @@ -CREATE TABLE [temp_user]( - [id] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, - [username] VARCHAR(255) NOT NULL UNIQUE COLLATE NOCASE, - [password] VARCHAR(255), - [active] BOOLEAN NOT NULL DEFAULT 1, - [timezone] VARCHAR(150), - twofa_secret VARCHAR(64), - twofa_status BOOLEAN default 0 NOT NULL, - twofa_last_token VARCHAR(6) -); - -INSERT INTO [temp_user] SELECT -[id], -[username], -[password], -[active], -[timezone], -twofa_secret, -twofa_status, -twofa_last_token - FROM user; - -DROP TABLE user; - -CREATE TABLE [user]( - [id] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, - [username] VARCHAR(255) NOT NULL UNIQUE COLLATE NOCASE, - [password] VARCHAR(255), - [active] BOOLEAN NOT NULL DEFAULT 1, - [timezone] VARCHAR(150), - twofa_secret VARCHAR(64), - twofa_status BOOLEAN default 0 NOT NULL, - twofa_last_token VARCHAR(6) -); - -INSERT INTO [user] SELECT -[id], -[username], -[password], -[active], -[timezone], -twofa_secret, -twofa_status, -twofa_last_token - FROM [temp_user]; - -DROP TABLE [temp_user]; diff --git a/server/auth.js b/server/auth.js index b4eeee41..3ce1a604 100644 --- a/server/auth.js +++ b/server/auth.js @@ -15,7 +15,7 @@ exports.login = async function (username, password) { return null; } - let user = await R.findOne("user", " username = ? AND active = 1", [ + let user = await R.findOne("user", " username = ? AND active = 1 ", [ username, ]); diff --git a/server/database.js b/server/database.js index 7764df3f..2544f197 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-user-username-case-insensitive.sql": { parents: [ "patch-2fa-invalidate-used-token.sql", "patch-2fa.sql" ] } }; /** From 39ac9b887e0fbf98b0c53d1c37b75383d6458ecf Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Sun, 1 Jan 2023 22:27:14 +0800 Subject: [PATCH 037/296] Fix #2504 --- server/util-server.js | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/server/util-server.js b/server/util-server.js index 2ce6de3e..ffd171b4 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -248,19 +248,19 @@ exports.dnsResolve = function (hostname, resolverServer, resolverPort, rrtype) { * @param {string} query The query to validate the database with * @returns {Promise<(string[]|Object[]|Object)>} */ -exports.mssqlQuery = function (connectionString, query) { - return new Promise((resolve, reject) => { - mssql.connect(connectionString).then(pool => { - return pool.request() - .query(query); - }).then(result => { - resolve(result); - }).catch(err => { - reject(err); - }).finally(() => { - mssql.close(); - }); - }); +exports.mssqlQuery = async function (connectionString, query) { + let pool; + try { + pool = new mssql.ConnectionPool(connectionString); + await pool.connect(); + await pool.request().query(query); + pool.close(); + } catch (e) { + if (pool) { + pool.close(); + } + throw e; + } }; /** From a8af2a418e433752570ed124fb3db75534efa070 Mon Sep 17 00:00:00 2001 From: Arniwatt Chonkiattipoom <73098755+pruekk@users.noreply.github.com> Date: Mon, 2 Jan 2023 14:01:50 +0700 Subject: [PATCH 038/296] Slack notification block not working (#1958) * [empty commit] pull request for slack notification * Add attachments block for slack notification * chore: update action button in new attachment block * chore: loop in attachments to push blocks * chore: missing semicolon Co-authored-by: pruekanw --- server/notification-providers/slack.js | 67 +++++++++++++++----------- 1 file changed, 38 insertions(+), 29 deletions(-) diff --git a/server/notification-providers/slack.js b/server/notification-providers/slack.js index da1d6e66..5a5d40cb 100644 --- a/server/notification-providers/slack.js +++ b/server/notification-providers/slack.js @@ -1,7 +1,7 @@ const NotificationProvider = require("./notification-provider"); const axios = require("axios"); const { setSettings, setting } = require("../util-server"); -const { getMonitorRelativeURL } = require("../../src/util"); +const { getMonitorRelativeURL, UP } = require("../../src/util"); class Slack extends NotificationProvider { @@ -46,24 +46,31 @@ class Slack extends NotificationProvider { "channel": notification.slackchannel, "username": notification.slackusername, "icon_emoji": notification.slackiconemo, - "blocks": [{ - "type": "header", - "text": { - "type": "plain_text", - "text": "Uptime Kuma Alert", - }, - }, - { - "type": "section", - "fields": [{ - "type": "mrkdwn", - "text": "*Message*\n" + msg, - }, + "attachments": [ { - "type": "mrkdwn", - "text": "*Time (UTC)*\n" + time, - }], - }], + "color": (heartbeatJSON["status"] === UP) ? "#2eb886" : "#e01e5a", + "blocks": [ + { + "type": "header", + "text": { + "type": "plain_text", + "text": "Uptime Kuma Alert", + }, + }, + { + "type": "section", + "fields": [{ + "type": "mrkdwn", + "text": "*Message*\n" + msg, + }, + { + "type": "mrkdwn", + "text": "*Time (UTC)*\n" + time, + }], + } + ], + } + ] }; if (notification.slackbutton) { @@ -74,17 +81,19 @@ class Slack extends NotificationProvider { // Button if (baseURL) { - data.blocks.push({ - "type": "actions", - "elements": [{ - "type": "button", - "text": { - "type": "plain_text", - "text": "Visit Uptime Kuma", - }, - "value": "Uptime-Kuma", - "url": baseURL + getMonitorRelativeURL(monitorJSON.id), - }], + data.attachments.forEach(element => { + element.blocks.push({ + "type": "actions", + "elements": [{ + "type": "button", + "text": { + "type": "plain_text", + "text": "Visit Uptime Kuma", + }, + "value": "Uptime-Kuma", + "url": baseURL + getMonitorRelativeURL(monitorJSON.id), + }], + }); }); } From cd7e362b81b50eb17cd302957ca48058005b99d1 Mon Sep 17 00:00:00 2001 From: lionep Date: Mon, 2 Jan 2023 08:46:42 +0100 Subject: [PATCH 039/296] Improve french translation Set "Not available, please setup" translation more accurate, because it's in use in notifications and proxies page. --- src/languages/fr-FR.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/fr-FR.js b/src/languages/fr-FR.js index 5ad04bfe..aeb84731 100644 --- a/src/languages/fr-FR.js +++ b/src/languages/fr-FR.js @@ -99,7 +99,7 @@ export default { pushOptionalParams: "Paramètres facultatifs : {0}", Save: "Sauvegarder", Notifications: "Notifications", - "Not available, please setup.": "Pas de système de notification disponible, merci de le configurer.", + "Not available, please setup.": "Non disponible, merci de le configurer.", "Setup Notification": "Créer une notification", Light: "Clair", Dark: "Sombre", From 0cead837053e139e9046e58761804324ec331e7f Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Tue, 3 Jan 2023 14:50:29 +0800 Subject: [PATCH 040/296] Fix #2516 --- server/model/status_page.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/model/status_page.js b/server/model/status_page.js index 80b57699..0dabf5ab 100644 --- a/server/model/status_page.js +++ b/server/model/status_page.js @@ -281,7 +281,7 @@ class StatusPage extends BeanModel { let activeCondition = Maintenance.getActiveMaintenanceSQLCondition(); let maintenanceBeanList = R.convertToBeans("maintenance", await R.getAll(` - SELECT maintenance.* + SELECT DISTINCT maintenance.* FROM maintenance JOIN maintenance_status_page ON maintenance_status_page.maintenance_id = maintenance.id From b8e8c1b9dbb1cd74f6a5ba02c49367ead506370c Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Tue, 3 Jan 2023 18:05:19 +0800 Subject: [PATCH 041/296] Update to 1.19.3 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 18ae4770..c41b1701 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "uptime-kuma", - "version": "1.19.2", + "version": "1.19.3", "license": "MIT", "repository": { "type": "git", @@ -38,7 +38,7 @@ "build-docker-nightly-amd64": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:nightly-amd64 --target nightly . --push --progress plain", "build-docker-pr-test": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64 -t louislam/uptime-kuma:pr-test --target pr-test . --push", "upload-artifacts": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg VERSION --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain", - "setup": "git checkout 1.19.2 && npm ci --production && npm run download-dist", + "setup": "git checkout 1.19.3 && npm ci --production && npm run download-dist", "download-dist": "node extra/download-dist.js", "mark-as-nightly": "node extra/mark-as-nightly.js", "reset-password": "node extra/reset-password.js", From 942b55ca031b4a487d299c7e189052634fdb9c17 Mon Sep 17 00:00:00 2001 From: Nelson Chan Date: Tue, 3 Jan 2023 21:45:55 +0800 Subject: [PATCH 042/296] Fix: Add support for maintenance in badges --- server/config.js | 1 + server/routers/api-router.js | 36 +++++++++++++++++++++++++++++++++--- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/server/config.js b/server/config.js index d46f24b7..398ddbb1 100644 --- a/server/config.js +++ b/server/config.js @@ -5,6 +5,7 @@ const badgeConstants = { naColor: "#999", defaultUpColor: "#66c20a", defaultDownColor: "#c2290a", + defaultMaintenanceColor: "#1747f5", defaultPingColor: "blue", // as defined by badge-maker / shields.io defaultStyle: "flat", defaultPingValueSuffix: "ms", diff --git a/server/routers/api-router.js b/server/routers/api-router.js index bbecbced..45236d20 100644 --- a/server/routers/api-router.js +++ b/server/routers/api-router.js @@ -111,8 +111,10 @@ router.get("/api/badge/:id/status", cache("5 minutes"), async (request, response label, upLabel = "Up", downLabel = "Down", + maintenanceLabel = "Maintenance", upColor = badgeConstants.defaultUpColor, downColor = badgeConstants.defaultDownColor, + maintenanceColor = badgeConstants.defaultMaintenanceColor, style = badgeConstants.defaultStyle, value, // for demo purpose only } = request.query; @@ -139,11 +141,39 @@ router.get("/api/badge/:id/status", cache("5 minutes"), async (request, response badgeValues.color = badgeConstants.naColor; } else { const heartbeat = await Monitor.getPreviousHeartbeat(requestedMonitorId); - const state = overrideValue !== undefined ? overrideValue : heartbeat.status === 1; + const state = overrideValue !== undefined ? overrideValue : heartbeat.status; badgeValues.label = label ? label : ""; - badgeValues.color = state ? upColor : downColor; - badgeValues.message = label ?? state ? upLabel : downLabel; + switch (state) { + case 1: + badgeValues.color = upColor; + break; + case 3: + badgeValues.color = maintenanceColor; + break; + case 0: + badgeValues.color = downColor; + break; + default: + badgeValues.color = badgeConstants.naColor; + } + if (label !== undefined) { + badgeValues.message = label; + } else { + switch (state) { + case 1: + badgeValues.message = upLabel; + break; + case 3: + badgeValues.message = maintenanceLabel; + break; + case 0: + badgeValues.message = downLabel; + break; + default: + badgeValues.message = "N/A"; + } + } } // build the svg based on given values From 204792dd2d0b40f343d1fc04811d05556f032eb7 Mon Sep 17 00:00:00 2001 From: Nelson Chan Date: Tue, 3 Jan 2023 22:07:14 +0800 Subject: [PATCH 043/296] Fix: Fix incorrect handling for container down --- server/model/monitor.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/server/model/monitor.js b/server/model/monitor.js index 2c260e96..9f8c8300 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -514,7 +514,9 @@ class Monitor extends BeanModel { let res = await axios.request(options); if (res.data.State.Running) { bean.status = UP; - bean.msg = ""; + bean.msg = res.data.State.Status; + } else { + throw Error("Container State is " + res.data.State.Status); } } else if (this.type === "mqtt") { bean.msg = await mqttAsync(this.hostname, this.mqttTopic, this.mqttSuccessMessage, { From edd8fe2e226896aa1b0e978f512aacc17d50d3de Mon Sep 17 00:00:00 2001 From: Nelson Chan Date: Tue, 3 Jan 2023 22:18:45 +0800 Subject: [PATCH 044/296] Fix: Fix incorrect tag form validation --- src/components/TagsManager.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/TagsManager.vue b/src/components/TagsManager.vue index 2958babe..8481fdfe 100644 --- a/src/components/TagsManager.vue +++ b/src/components/TagsManager.vue @@ -204,7 +204,7 @@ export default { nameInvalid = false; valueInvalid = false; invalid = false; - } else if (this.existingTags.filter(tag => tag.name === this.newDraftTag.name).length > 0) { + } else if (this.existingTags.filter(tag => tag.name === this.newDraftTag.name).length > 0 && this.newDraftTag.select == null) { // Try to create new tag with existing name nameInvalid = true; invalid = true; From 2d3fd738e4691dfc03d06be3cffae9e2f55aa00f Mon Sep 17 00:00:00 2001 From: Joppe Koers Date: Tue, 3 Jan 2023 15:37:32 +0100 Subject: [PATCH 045/296] Fix small spelling mistake --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 90c8ad75..9b810015 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ Kuma is now running on http://localhost:3001 Required Tools: - [Node.js](https://nodejs.org/en/download/) >= 14 - [Git](https://git-scm.com/downloads) -- [pm2](https://pm2.keymetrics.io/) - For running kuma in the background +- [pm2](https://pm2.keymetrics.io/) - For running Uptime Kuma in the background ```bash # Update your npm to the latest version From 73835f3328224b498f231ef46f462ac538e22d3d Mon Sep 17 00:00:00 2001 From: Matthew Nickson Date: Tue, 3 Jan 2023 20:03:36 +0000 Subject: [PATCH 046/296] Changed from ping-lite to ping module Signed-off-by: Matthew Nickson #Fixes 2126 --- package-lock.json | 50 ++++++++++- package.json | 1 + server/ping-lite.js | 199 ------------------------------------------ server/util-server.js | 31 +++---- 4 files changed, 62 insertions(+), 219 deletions(-) delete mode 100644 server/ping-lite.js diff --git a/package-lock.json b/package-lock.json index d8b67781..0e99be12 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "uptime-kuma", - "version": "1.19.0", + "version": "1.19.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "uptime-kuma", - "version": "1.19.0", + "version": "1.19.3", "license": "MIT", "dependencies": { "@grpc/grpc-js": "~1.7.3", @@ -48,6 +48,7 @@ "password-hash": "~1.2.2", "pg": "~8.8.0", "pg-connection-string": "~2.5.0", + "ping": "^0.4.2", "prom-client": "~13.2.0", "prometheus-api-metrics": "~3.2.1", "protobufjs": "~7.1.1", @@ -13241,6 +13242,18 @@ "node": ">=0.10.0" } }, + "node_modules/ping": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/ping/-/ping-0.4.2.tgz", + "integrity": "sha512-1uAw0bzHtrPbPo2s6no06oZAzY6KqKclEJR1JRZKIHKXKlPdrz9N0/1MPPB+BbrvMjN3Mk0pcod3bfLNZFRo9w==", + "dependencies": { + "q": "1.x", + "underscore": "^1.12.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/pirates": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", @@ -13631,6 +13644,15 @@ "node": ">=6" } }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, "node_modules/qlobber": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/qlobber/-/qlobber-5.0.3.tgz", @@ -15854,6 +15876,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -26785,6 +26812,15 @@ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true }, + "ping": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/ping/-/ping-0.4.2.tgz", + "integrity": "sha512-1uAw0bzHtrPbPo2s6no06oZAzY6KqKclEJR1JRZKIHKXKlPdrz9N0/1MPPB+BbrvMjN3Mk0pcod3bfLNZFRo9w==", + "requires": { + "q": "1.x", + "underscore": "^1.12.0" + } + }, "pirates": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", @@ -27068,6 +27104,11 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" + }, "qlobber": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/qlobber/-/qlobber-5.0.3.tgz", @@ -28780,6 +28821,11 @@ "which-boxed-primitive": "^1.0.2" } }, + "underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" + }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", diff --git a/package.json b/package.json index c41b1701..f7ed288f 100644 --- a/package.json +++ b/package.json @@ -103,6 +103,7 @@ "password-hash": "~1.2.2", "pg": "~8.8.0", "pg-connection-string": "~2.5.0", + "ping": "^0.4.2", "prom-client": "~13.2.0", "prometheus-api-metrics": "~3.2.1", "protobufjs": "~7.1.1", diff --git a/server/ping-lite.js b/server/ping-lite.js deleted file mode 100644 index 05dff31d..00000000 --- a/server/ping-lite.js +++ /dev/null @@ -1,199 +0,0 @@ -// https://github.com/ben-bradley/ping-lite/blob/master/ping-lite.js -// Fixed on Windows -const net = require("net"); -const spawn = require("child_process").spawn; -const events = require("events"); -const fs = require("fs"); -const util = require("./util-server"); - -module.exports = Ping; - -/** - * Constructor for ping class - * @param {string} host Host to ping - * @param {object} [options] Options for the ping command - * @param {array|string} [options.args] - Arguments to pass to the ping command - */ -function Ping(host, options) { - if (!host) { - throw new Error("You must specify a host to ping!"); - } - - this._host = host; - this._options = options = (options || {}); - - events.EventEmitter.call(this); - - const timeout = 10; - - if (util.WIN) { - this._bin = "c:/windows/system32/ping.exe"; - this._args = (options.args) ? options.args : [ "-n", "1", "-w", timeout * 1000, host ]; - this._regmatch = /[><=]([0-9.]+?)ms/; - - } else if (util.LIN) { - this._bin = "/bin/ping"; - - const defaultArgs = [ "-n", "-w", timeout, "-c", "1", host ]; - - if (net.isIPv6(host) || options.ipv6) { - defaultArgs.unshift("-6"); - } - - this._args = (options.args) ? options.args : defaultArgs; - this._regmatch = /=([0-9.]+?) ms/; - - } else if (util.MAC) { - - if (net.isIPv6(host) || options.ipv6) { - this._bin = "/sbin/ping6"; - } else { - this._bin = "/sbin/ping"; - } - - this._args = (options.args) ? options.args : [ "-n", "-t", timeout, "-c", "1", host ]; - this._regmatch = /=([0-9.]+?) ms/; - - } else if (util.BSD) { - this._bin = "/sbin/ping"; - - const defaultArgs = [ "-n", "-t", timeout, "-c", "1", host ]; - - if (net.isIPv6(host) || options.ipv6) { - defaultArgs.unshift("-6"); - } - - this._args = (options.args) ? options.args : defaultArgs; - this._regmatch = /=([0-9.]+?) ms/; - - } else { - throw new Error("Could not detect your ping binary."); - } - - if (!fs.existsSync(this._bin)) { - throw new Error("Could not detect " + this._bin + " on your system"); - } - - this._i = 0; - - return this; -} - -Ping.prototype.__proto__ = events.EventEmitter.prototype; - -/** - * Callback for send - * @callback pingCB - * @param {any} err Any error encountered - * @param {number} ms Ping time in ms - */ - -/** - * Send a ping - * @param {pingCB} callback Callback to call with results - */ -Ping.prototype.send = function (callback) { - let self = this; - callback = callback || function (err, ms) { - if (err) { - return self.emit("error", err); - } - return self.emit("result", ms); - }; - - let _ended; - let _exited; - let _errored; - - this._ping = spawn(this._bin, this._args, { windowsHide: true }); // spawn the binary - - this._ping.on("error", function (err) { // handle binary errors - _errored = true; - callback(err); - }); - - this._ping.stdout.on("data", function (data) { // log stdout - if (util.WIN) { - data = convertOutput(data); - } - this._stdout = (this._stdout || "") + data; - }); - - this._ping.stdout.on("end", function () { - _ended = true; - if (_exited && !_errored) { - onEnd.call(self._ping); - } - }); - - this._ping.stderr.on("data", function (data) { // log stderr - if (util.WIN) { - data = convertOutput(data); - } - this._stderr = (this._stderr || "") + data; - }); - - this._ping.on("exit", function (code) { // handle complete - _exited = true; - if (_ended && !_errored) { - onEnd.call(self._ping); - } - }); - - /** - * @param {Function} callback - * - * Generated by Trelent - */ - function onEnd() { - let stdout = this.stdout._stdout; - let stderr = this.stderr._stderr; - let ms; - - if (stderr) { - return callback(new Error(stderr)); - } - - if (!stdout) { - return callback(new Error("No stdout detected")); - } - - ms = stdout.match(self._regmatch); // parse out the ##ms response - ms = (ms && ms[1]) ? Number(ms[1]) : ms; - - callback(null, ms, stdout); - } -}; - -/** - * Ping every interval - * @param {pingCB} callback Callback to call with results - */ -Ping.prototype.start = function (callback) { - let self = this; - this._i = setInterval(function () { - self.send(callback); - }, (self._options.interval || 5000)); - self.send(callback); -}; - -/** Stop sending pings */ -Ping.prototype.stop = function () { - clearInterval(this._i); -}; - -/** - * Try to convert to UTF-8 for Windows, as the ping's output on Windows is not UTF-8 and could be in other languages - * Thank @pemassi - * https://github.com/louislam/uptime-kuma/issues/570#issuecomment-941984094 - * @param {any} data - * @returns {string} - */ -function convertOutput(data) { - if (util.WIN) { - if (data) { - return util.convertToUTF8(data); - } - } - return data; -} diff --git a/server/util-server.js b/server/util-server.js index ffd171b4..72662136 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -1,5 +1,5 @@ const tcpp = require("tcp-ping"); -const Ping = require("./ping-lite"); +const ping = require("ping"); const { R } = require("redbean-node"); const { log, genSecret } = require("../src/util"); const passwordHash = require("./password-hash"); @@ -26,13 +26,6 @@ const { } = require("node-radius-utils"); const dayjs = require("dayjs"); -// From ping-lite -exports.WIN = /^win/.test(process.platform); -exports.LIN = /^linux/.test(process.platform); -exports.MAC = /^darwin/.test(process.platform); -exports.FBSD = /^freebsd/.test(process.platform); -exports.BSD = /bsd$/.test(process.platform); - /** * Init or reset JWT secret * @returns {Promise} @@ -105,18 +98,20 @@ exports.ping = async (hostname) => { */ exports.pingAsync = function (hostname, ipv6 = false) { return new Promise((resolve, reject) => { - const ping = new Ping(hostname, { - ipv6 - }); - - ping.send(function (err, ms, stdout) { - if (err) { - reject(err); - } else if (ms === null) { - reject(new Error(stdout)); + ping.promise.probe(hostname, { + v6: ipv6, + min_reply: 3 + }).then((res) => { + // If ping failed, it will set field to unknown + if (res.host === "unknown") { + reject(new Error("Name or service not known")); + } else if (res.time === "unknown") { + reject(new Error(res.output)); } else { - resolve(Math.round(ms)); + resolve(res.time); } + }).catch((err) => { + reject(err); }); }); }; From f99a64da67f98e063604f70eedd0fed060896d88 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Wed, 4 Jan 2023 15:48:09 +0800 Subject: [PATCH 047/296] Run `npm update` --- package-lock.json | 2079 +++++++++++++++++++++++++++------------------ 1 file changed, 1265 insertions(+), 814 deletions(-) diff --git a/package-lock.json b/package-lock.json index d8b67781..b4a7b755 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "uptime-kuma", - "version": "1.19.0", + "version": "1.19.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "uptime-kuma", - "version": "1.19.0", + "version": "1.19.3", "license": "MIT", "dependencies": { "@grpc/grpc-js": "~1.7.3", @@ -366,20 +366,20 @@ } }, "node_modules/@azure/msal-browser": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.32.0.tgz", - "integrity": "sha512-uDP0vNmIefM6+RjILGKu+zOiN+VGnEvxRfUIV5hOWOWLLkG7kcDPYG/v/EJMoG+R5DYW9jXA5nvZT76t5HdEAQ==", + "version": "2.32.1", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.32.1.tgz", + "integrity": "sha512-2G3B12ZEIpiimi6/Yqq7KLk4ud1zZWoHvVd2kJ2VthN1HjMsZjdMUxeHkwMWaQ6RzO6mv9rZiuKmRX64xkXW9g==", "dependencies": { - "@azure/msal-common": "^9.0.0" + "@azure/msal-common": "^9.0.1" }, "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-browser/node_modules/@azure/msal-common": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.0.tgz", - "integrity": "sha512-uiFiFKVNTsRpmKio5bcObTuHcaHHZB2GEsjJJN8rbJNmzoYuZzNioOoK+J0QK0jEasRBgAoR5A8hSty2iKRzIg==", + "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==", "engines": { "node": ">=0.8.0" } @@ -393,11 +393,11 @@ } }, "node_modules/@azure/msal-node": { - "version": "1.14.4", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.14.4.tgz", - "integrity": "sha512-j9GzZu5mTLWtuJ+cYN6e67UNymIS5OysblrOzH8lakt9XxH0GCPYjuqbOEKTP84r+Rbj3io+TuW1KS+0Xxuj/g==", + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.14.5.tgz", + "integrity": "sha512-NcVdMfn8Z3ogN+9RjOSF7uwf2Gki5DEJl0BdDSL83KUAgVAobtkZi5W8EqxbJLrTO/ET0jv5DregrcR5qg2pEA==", "dependencies": { - "@azure/msal-common": "^9.0.0", + "@azure/msal-common": "^9.0.1", "jsonwebtoken": "^8.5.1", "uuid": "^8.3.0" }, @@ -406,9 +406,9 @@ } }, "node_modules/@azure/msal-node/node_modules/@azure/msal-common": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.0.tgz", - "integrity": "sha512-uiFiFKVNTsRpmKio5bcObTuHcaHHZB2GEsjJJN8rbJNmzoYuZzNioOoK+J0QK0jEasRBgAoR5A8hSty2iKRzIg==", + "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==", "engines": { "node": ">=0.8.0" } @@ -426,30 +426,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", - "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", + "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", - "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.7.tgz", + "integrity": "sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.2", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-module-transforms": "^7.20.2", - "@babel/helpers": "^7.20.1", - "@babel/parser": "^7.20.2", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2", + "@babel/generator": "^7.20.7", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.20.7", + "@babel/helpers": "^7.20.7", + "@babel/parser": "^7.20.7", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -483,12 +483,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", - "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", + "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", "dev": true, "dependencies": { - "@babel/types": "^7.20.2", + "@babel/types": "^7.20.7", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -534,14 +534,15 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.20.0", + "@babel/compat-data": "^7.20.5", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", "semver": "^6.3.0" }, "engines": { @@ -552,17 +553,17 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", - "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.7.tgz", + "integrity": "sha512-LtoWbDXOaidEf50hmdDqn9g8VEzsorMexoWMQdQODbvmqYmaF23pBP5VNPAGIFHsFQCIeKokDiz3CH5Y2jlY6w==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-replace-supers": "^7.20.7", "@babel/helper-split-export-declaration": "^7.18.6" }, "engines": { @@ -573,13 +574,13 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" + "regexpu-core": "^5.2.1" }, "engines": { "node": ">=6.9.0" @@ -652,12 +653,12 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", + "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -676,9 +677,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", @@ -686,9 +687,9 @@ "@babel/helper-simple-access": "^7.20.2", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -734,16 +735,17 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -813,29 +815,29 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", - "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", "dev": true, "dependencies": { "@babel/helper-function-name": "^7.19.0", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", - "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", + "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", "dev": true, "dependencies": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.0" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -856,9 +858,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", - "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", + "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -883,14 +885,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", + "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -900,13 +902,13 @@ } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", - "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-remap-async-to-generator": "^7.18.9", "@babel/plugin-syntax-async-generators": "^7.8.4" }, @@ -934,13 +936,13 @@ } }, "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz", + "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -999,12 +1001,12 @@ } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1047,16 +1049,16 @@ } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", - "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.1" + "@babel/plugin-transform-parameters": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -1082,13 +1084,13 @@ } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", + "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -1115,14 +1117,14 @@ } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1380,12 +1382,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", + "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -1395,14 +1397,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz", + "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==", "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1427,9 +1429,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", - "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz", + "integrity": "sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.20.2" @@ -1442,18 +1444,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", - "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", + "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-compilation-targets": "^7.20.7", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", "@babel/helper-optimise-call-expression": "^7.18.6", "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-replace-supers": "^7.20.7", "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" }, @@ -1465,12 +1467,13 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", + "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/template": "^7.20.7" }, "engines": { "node": ">=6.9.0" @@ -1480,9 +1483,9 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", - "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", + "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.20.2" @@ -1604,13 +1607,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", - "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", + "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -1620,14 +1623,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", - "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", + "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-simple-access": "^7.19.4" + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-simple-access": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -1637,14 +1640,14 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", - "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", + "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-validator-identifier": "^7.19.1" }, "engines": { @@ -1671,13 +1674,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -1718,9 +1721,9 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", - "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", + "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.20.2" @@ -1748,13 +1751,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" }, "engines": { "node": ">=6.9.0" @@ -1794,13 +1797,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", + "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" }, "engines": { "node": ">=6.9.0" @@ -1991,53 +1994,53 @@ } }, "node_modules/@babel/runtime": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", - "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz", + "integrity": "sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==", "dependencies": { - "regenerator-runtime": "^0.13.10" + "regenerator-runtime": "^0.13.11" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/standalone": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.20.4.tgz", - "integrity": "sha512-27bv4h47jbaFZ7+e7gT1VEo9PNL1ynxqUX6/BERLz1qxm/5gzpbcHX+47VnSeYHyEyGZkRznpSOd8zPBhiz6tw==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.20.11.tgz", + "integrity": "sha512-WUPlwwXFk3iViGE7QFVVp423eVtT+eoXu1940Xu4QJgqgHBF6WWtlwO1Ip5rIWQnp7OHrGdwrwKLtLhUVfOZbA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", - "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.10.tgz", + "integrity": "sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.1", + "@babel/generator": "^7.20.7", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.1", - "@babel/types": "^7.20.0", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2046,9 +2049,9 @@ } }, "node_modules/@babel/types": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", - "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.19.4", @@ -2146,9 +2149,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.15.tgz", - "integrity": "sha512-JJjZjJi2eBL01QJuWjfCdZxcIgot+VoK6Fq7eKF9w4YHm9hwl7nhBR1o2Wnt/WcANk5l9SkpvrldW1PLuXxcbw==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", + "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", "cpu": [ "arm" ], @@ -2162,9 +2165,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.15.tgz", - "integrity": "sha512-lhz6UNPMDXUhtXSulw8XlFAtSYO26WmHQnCi2Lg2p+/TMiJKNLtZCYUxV4wG6rZMzXmr8InGpNwk+DLT2Hm0PA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", + "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", "cpu": [ "loong64" ], @@ -2178,15 +2181,15 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.4.0", - "globals": "^13.15.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -2201,9 +2204,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -2299,9 +2302,9 @@ } }, "node_modules/@grpc/proto-loader": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.3.tgz", - "integrity": "sha512-5dAvoZwna2Py3Ef96Ux9jIkp3iZ62TUsV00p3wVBPNX5K178UbNi8Q7gQVqwXT1Yq9RejIGG9G2IPEo93T6RcA==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.4.tgz", + "integrity": "sha512-MnWjkGwqQ3W8fx94/c1CwqLsNmHHv2t0CFn+9++6+cDphC1lolpg9M2OU0iebIjK//pBNX9e94ho+gjx6vz39w==", "dependencies": { "@types/long": "^4.0.1", "lodash.camelcase": "^4.3.0", @@ -3124,9 +3127,9 @@ } }, "node_modules/@js-joda/core": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/@js-joda/core/-/core-5.4.2.tgz", - "integrity": "sha512-QIDIZ9a0NfDStgD47VaTgwiPjlw1p4QPLwjOB/9+/DqIztoQopPNNAd+HdtQMHgE+ibP3dJacd8/TVL/A1RaaA==" + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@js-joda/core/-/core-5.5.1.tgz", + "integrity": "sha512-oTFmkyv5MhgkHdZhoe5lwRoKW0t4njPvK3g7ODvK/prkoC5bwylKcyQJMsmjvgHBXoy4u5iLnB5yQ7AljouHAA==" }, "node_modules/@louislam/sqlite3": { "version": "15.1.2", @@ -3169,6 +3172,17 @@ "node-pre-gyp": "bin/node-pre-gyp" } }, + "node_modules/@mapbox/node-pre-gyp/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@mapbox/node-pre-gyp/node_modules/semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -3183,6 +3197,11 @@ "node": ">=10" } }, + "node_modules/@mapbox/node-pre-gyp/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/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3403,9 +3422,9 @@ } }, "node_modules/@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", "dev": true }, "node_modules/@sideway/pinpoint": { @@ -3415,9 +3434,9 @@ "dev": true }, "node_modules/@sinonjs/commons": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.5.tgz", - "integrity": "sha512-rTpCA0wG1wUxglBSFdMMY0oTrKYvgf4fNgv/sXbfCVAdf+FnPBdKJR/7XbpTCwbCrvCbdPYnlWaUUYz4V2fPDA==", + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", "dev": true, "dependencies": { "type-detect": "4.0.8" @@ -3491,9 +3510,9 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz", - "integrity": "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", + "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", "dev": true, "dependencies": { "@babel/types": "^7.3.0" @@ -3547,9 +3566,12 @@ } }, "node_modules/@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" + "version": "2.8.13", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", + "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", + "dependencies": { + "@types/node": "*" + } }, "node_modules/@types/es-aggregate-error": { "version": "1.0.2", @@ -3560,20 +3582,20 @@ } }, "node_modules/@types/express": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", - "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.15.tgz", + "integrity": "sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==", "dependencies": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", + "@types/express-serve-static-core": "^4.17.31", "@types/qs": "*", "@types/serve-static": "*" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.31", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", - "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", + "version": "4.17.32", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz", + "integrity": "sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -3652,9 +3674,9 @@ } }, "node_modules/@types/lodash": { - "version": "4.14.190", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.190.tgz", - "integrity": "sha512-5iJ3FBJBvQHQ8sFhEhJfjUP+G+LalhavTkYyrAYqz5MEJG+erSv0k9KJLb6q7++17Lafk1scaTIFXcMJlwK8Mw==" + "version": "4.14.191", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz", + "integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==" }, "node_modules/@types/long": { "version": "4.0.2", @@ -3673,9 +3695,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==" + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", @@ -3690,9 +3712,9 @@ "dev": true }, "node_modules/@types/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", "dev": true }, "node_modules/@types/qs": { @@ -3733,9 +3755,9 @@ "dev": true }, "node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -5064,9 +5086,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001434", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz", - "integrity": "sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==", + "version": "1.0.30001441", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz", + "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==", "dev": true, "funding": [ { @@ -5240,10 +5262,16 @@ "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==" }, "node_modules/ci-info": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.0.tgz", - "integrity": "sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz", + "integrity": "sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "engines": { "node": ">=8" } @@ -5740,9 +5768,9 @@ } }, "node_modules/core-js-compat": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", - "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", + "version": "3.27.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.1.tgz", + "integrity": "sha512-Dg91JFeCDA17FKnneN7oCMz4BkQ4TcffkgHP4OWwp9yx3pi7ubqMDXXSacfNak1PQqjc95skyt+YBLHQJnkJwA==", "dev": true, "dependencies": { "browserslist": "^4.21.4" @@ -5991,9 +6019,9 @@ } }, "node_modules/cypress/node_modules/@types/node": { - "version": "14.18.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.33.tgz", - "integrity": "sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg==", + "version": "14.18.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", + "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==", "dev": true }, "node_modules/cypress/node_modules/ansi-styles": { @@ -6066,6 +6094,18 @@ "node": ">=8" } }, + "node_modules/cypress/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/cypress/node_modules/semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -6096,6 +6136,12 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/cypress/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -6136,9 +6182,9 @@ } }, "node_modules/dayjs": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.6.tgz", - "integrity": "sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ==" + "version": "1.11.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" }, "node_modules/debug": { "version": "4.3.4", @@ -6196,9 +6242,9 @@ } }, "node_modules/decimal.js": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz", - "integrity": "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", "dev": true }, "node_modules/dedent": { @@ -6637,9 +6683,9 @@ } }, "node_modules/es-abstract": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", - "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", + "version": "1.20.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz", + "integrity": "sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==", "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -6647,6 +6693,7 @@ "function.prototype.name": "^1.1.5", "get-intrinsic": "^1.1.3", "get-symbol-description": "^1.0.0", + "gopd": "^1.0.1", "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-symbols": "^1.0.3", @@ -6662,8 +6709,8 @@ "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.4.3", "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", "unbox-primitive": "^1.0.2" }, "engines": { @@ -6710,9 +6757,9 @@ } }, "node_modules/esbuild": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.15.tgz", - "integrity": "sha512-TEw/lwK4Zzld9x3FedV6jy8onOUHqcEX3ADFk4k+gzPUwrxn8nWV62tH0udo8jOtjFodlEfc4ypsqX3e+WWO6w==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", + "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", "dev": true, "hasInstallScript": true, "bin": { @@ -6722,34 +6769,34 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.15.15", - "@esbuild/linux-loong64": "0.15.15", - "esbuild-android-64": "0.15.15", - "esbuild-android-arm64": "0.15.15", - "esbuild-darwin-64": "0.15.15", - "esbuild-darwin-arm64": "0.15.15", - "esbuild-freebsd-64": "0.15.15", - "esbuild-freebsd-arm64": "0.15.15", - "esbuild-linux-32": "0.15.15", - "esbuild-linux-64": "0.15.15", - "esbuild-linux-arm": "0.15.15", - "esbuild-linux-arm64": "0.15.15", - "esbuild-linux-mips64le": "0.15.15", - "esbuild-linux-ppc64le": "0.15.15", - "esbuild-linux-riscv64": "0.15.15", - "esbuild-linux-s390x": "0.15.15", - "esbuild-netbsd-64": "0.15.15", - "esbuild-openbsd-64": "0.15.15", - "esbuild-sunos-64": "0.15.15", - "esbuild-windows-32": "0.15.15", - "esbuild-windows-64": "0.15.15", - "esbuild-windows-arm64": "0.15.15" + "@esbuild/android-arm": "0.15.18", + "@esbuild/linux-loong64": "0.15.18", + "esbuild-android-64": "0.15.18", + "esbuild-android-arm64": "0.15.18", + "esbuild-darwin-64": "0.15.18", + "esbuild-darwin-arm64": "0.15.18", + "esbuild-freebsd-64": "0.15.18", + "esbuild-freebsd-arm64": "0.15.18", + "esbuild-linux-32": "0.15.18", + "esbuild-linux-64": "0.15.18", + "esbuild-linux-arm": "0.15.18", + "esbuild-linux-arm64": "0.15.18", + "esbuild-linux-mips64le": "0.15.18", + "esbuild-linux-ppc64le": "0.15.18", + "esbuild-linux-riscv64": "0.15.18", + "esbuild-linux-s390x": "0.15.18", + "esbuild-netbsd-64": "0.15.18", + "esbuild-openbsd-64": "0.15.18", + "esbuild-sunos-64": "0.15.18", + "esbuild-windows-32": "0.15.18", + "esbuild-windows-64": "0.15.18", + "esbuild-windows-arm64": "0.15.18" } }, "node_modules/esbuild-android-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.15.tgz", - "integrity": "sha512-F+WjjQxO+JQOva3tJWNdVjouFMLK6R6i5gjDvgUthLYJnIZJsp1HlF523k73hELY20WPyEO8xcz7aaYBVkeg5Q==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", + "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", "cpu": [ "x64" ], @@ -6763,9 +6810,9 @@ } }, "node_modules/esbuild-android-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.15.tgz", - "integrity": "sha512-attlyhD6Y22jNyQ0fIIQ7mnPvDWKw7k6FKnsXlBvQE6s3z6s6cuEHcSgoirquQc7TmZgVCK5fD/2uxmRN+ZpcQ==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", + "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", "cpu": [ "arm64" ], @@ -6779,9 +6826,9 @@ } }, "node_modules/esbuild-darwin-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.15.tgz", - "integrity": "sha512-ohZtF8W1SHJ4JWldsPVdk8st0r9ExbAOSrBOh5L+Mq47i696GVwv1ab/KlmbUoikSTNoXEhDzVpxUR/WIO19FQ==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", + "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", "cpu": [ "x64" ], @@ -6795,9 +6842,9 @@ } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.15.tgz", - "integrity": "sha512-P8jOZ5zshCNIuGn+9KehKs/cq5uIniC+BeCykvdVhx/rBXSxmtj3CUIKZz4sDCuESMbitK54drf/2QX9QHG5Ag==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", + "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", "cpu": [ "arm64" ], @@ -6811,9 +6858,9 @@ } }, "node_modules/esbuild-freebsd-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.15.tgz", - "integrity": "sha512-KkTg+AmDXz1IvA9S1gt8dE24C8Thx0X5oM0KGF322DuP+P3evwTL9YyusHAWNsh4qLsR80nvBr/EIYs29VSwuA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", + "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", "cpu": [ "x64" ], @@ -6827,9 +6874,9 @@ } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.15.tgz", - "integrity": "sha512-FUcML0DRsuyqCMfAC+HoeAqvWxMeq0qXvclZZ/lt2kLU6XBnDA5uKTLUd379WYEyVD4KKFctqWd9tTuk8C/96g==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", + "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", "cpu": [ "arm64" ], @@ -6843,9 +6890,9 @@ } }, "node_modules/esbuild-linux-32": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.15.tgz", - "integrity": "sha512-q28Qn5pZgHNqug02aTkzw5sW9OklSo96b5nm17Mq0pDXrdTBcQ+M6Q9A1B+dalFeynunwh/pvfrNucjzwDXj+Q==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", + "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", "cpu": [ "ia32" ], @@ -6859,9 +6906,9 @@ } }, "node_modules/esbuild-linux-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.15.tgz", - "integrity": "sha512-217KPmWMirkf8liO+fj2qrPwbIbhNTGNVtvqI1TnOWJgcMjUWvd677Gq3fTzXEjilkx2yWypVnTswM2KbXgoAg==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", + "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", "cpu": [ "x64" ], @@ -6875,9 +6922,9 @@ } }, "node_modules/esbuild-linux-arm": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.15.tgz", - "integrity": "sha512-RYVW9o2yN8yM7SB1yaWr378CwrjvGCyGybX3SdzPHpikUHkME2AP55Ma20uNwkNyY2eSYFX9D55kDrfQmQBR4w==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", + "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", "cpu": [ "arm" ], @@ -6891,9 +6938,9 @@ } }, "node_modules/esbuild-linux-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.15.tgz", - "integrity": "sha512-/ltmNFs0FivZkYsTzAsXIfLQX38lFnwJTWCJts0IbCqWZQe+jjj0vYBNbI0kmXLb3y5NljiM5USVAO1NVkdh2g==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", + "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", "cpu": [ "arm64" ], @@ -6907,9 +6954,9 @@ } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.15.tgz", - "integrity": "sha512-PksEPb321/28GFFxtvL33yVPfnMZihxkEv5zME2zapXGp7fA1X2jYeiTUK+9tJ/EGgcNWuwvtawPxJG7Mmn86A==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", + "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", "cpu": [ "mips64el" ], @@ -6923,9 +6970,9 @@ } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.15.tgz", - "integrity": "sha512-ek8gJBEIhcpGI327eAZigBOHl58QqrJrYYIZBWQCnH3UnXoeWMrMZLeeZL8BI2XMBhP+sQ6ERctD5X+ajL/AIA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", + "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", "cpu": [ "ppc64" ], @@ -6939,9 +6986,9 @@ } }, "node_modules/esbuild-linux-riscv64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.15.tgz", - "integrity": "sha512-H5ilTZb33/GnUBrZMNJtBk7/OXzDHDXjIzoLXHSutwwsLxSNaLxzAaMoDGDd/keZoS+GDBqNVxdCkpuiRW4OSw==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", + "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", "cpu": [ "riscv64" ], @@ -6955,9 +7002,9 @@ } }, "node_modules/esbuild-linux-s390x": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.15.tgz", - "integrity": "sha512-jKaLUg78mua3rrtrkpv4Or2dNTJU7bgHN4bEjT4OX4GR7nLBSA9dfJezQouTxMmIW7opwEC5/iR9mpC18utnxQ==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", + "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", "cpu": [ "s390x" ], @@ -6971,9 +7018,9 @@ } }, "node_modules/esbuild-netbsd-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.15.tgz", - "integrity": "sha512-aOvmF/UkjFuW6F36HbIlImJTTx45KUCHJndtKo+KdP8Dhq3mgLRKW9+6Ircpm8bX/RcS3zZMMmaBLkvGY06Gvw==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", + "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", "cpu": [ "x64" ], @@ -6987,9 +7034,9 @@ } }, "node_modules/esbuild-openbsd-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.15.tgz", - "integrity": "sha512-HFFX+WYedx1w2yJ1VyR1Dfo8zyYGQZf1cA69bLdrHzu9svj6KH6ZLK0k3A1/LFPhcEY9idSOhsB2UyU0tHPxgQ==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", + "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", "cpu": [ "x64" ], @@ -7003,9 +7050,9 @@ } }, "node_modules/esbuild-sunos-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.15.tgz", - "integrity": "sha512-jOPBudffG4HN8yJXcK9rib/ZTFoTA5pvIKbRrt3IKAGMq1EpBi4xoVoSRrq/0d4OgZLaQbmkHp8RO9eZIn5atA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", + "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", "cpu": [ "x64" ], @@ -7019,9 +7066,9 @@ } }, "node_modules/esbuild-windows-32": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.15.tgz", - "integrity": "sha512-MDkJ3QkjnCetKF0fKxCyYNBnOq6dmidcwstBVeMtXSgGYTy8XSwBeIE4+HuKiSsG6I/mXEb++px3IGSmTN0XiA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", + "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", "cpu": [ "ia32" ], @@ -7035,9 +7082,9 @@ } }, "node_modules/esbuild-windows-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.15.tgz", - "integrity": "sha512-xaAUIB2qllE888SsMU3j9nrqyLbkqqkpQyWVkfwSil6BBPgcPk3zOFitTTncEKCLTQy3XV9RuH7PDj3aJDljWA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", + "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", "cpu": [ "x64" ], @@ -7051,9 +7098,9 @@ } }, "node_modules/esbuild-windows-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.15.tgz", - "integrity": "sha512-ttuoCYCIJAFx4UUKKWYnFdrVpoXa3+3WWkXVI6s09U+YjhnyM5h96ewTq/WgQj9LFSIlABQvadHSOQyAVjW5xQ==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", + "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", "cpu": [ "arm64" ], @@ -7242,6 +7289,18 @@ "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/eslint-plugin-vue/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/eslint-plugin-vue/node_modules/semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -7257,6 +7316,12 @@ "node": ">=10" } }, + "node_modules/eslint-plugin-vue/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -7390,9 +7455,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -7855,9 +7920,9 @@ } }, "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -8111,6 +8176,22 @@ "node": ">= 8" } }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-minipass/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/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -8436,6 +8517,17 @@ "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", "dev": true }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", @@ -8570,6 +8662,24 @@ "node": ">=10" } }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/html-encoding-sniffer": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", @@ -8634,9 +8744,9 @@ } }, "node_modules/http-graceful-shutdown": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/http-graceful-shutdown/-/http-graceful-shutdown-3.1.11.tgz", - "integrity": "sha512-tfOwKDZA8kJqDNBK2ur+o55HbhDHoflvDCDgjbmm5eAn0RhqhdlUjVygj8e258B5nn5kNsEFOl7DbXLskKrgGA==", + "version": "3.1.12", + "resolved": "https://registry.npmjs.org/http-graceful-shutdown/-/http-graceful-shutdown-3.1.12.tgz", + "integrity": "sha512-z3mH1HUwRESrauPjvjH5QuH2Ce4uLlWonPFgZnwAyxIFYROxIMcNNWwNltN+s8fHF/aGlsfQDOICHLXsabK43w==", "dependencies": { "debug": "^4.3.4" }, @@ -8741,9 +8851,9 @@ ] }, "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, "engines": { "node": ">= 4" @@ -8835,11 +8945,11 @@ } }, "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", + "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", "dependencies": { - "get-intrinsic": "^1.1.0", + "get-intrinsic": "^1.1.3", "has": "^1.0.3", "side-channel": "^1.0.4" }, @@ -10824,6 +10934,18 @@ "node": ">=8" } }, + "node_modules/jest-snapshot/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/jest-snapshot/node_modules/semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -10851,6 +10973,12 @@ "node": ">=8" } }, + "node_modules/jest-snapshot/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -11368,9 +11496,9 @@ "devOptional": true }, "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "bin": { "json5": "lib/cli.js" @@ -11956,14 +12084,12 @@ "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" }, "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "yallist": "^3.0.2" } }, "node_modules/magic-string": { @@ -12198,9 +12324,9 @@ } }, "node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", + "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", "dependencies": { "yallist": "^4.0.0" }, @@ -12208,6 +12334,11 @@ "node": ">=8" } }, + "node_modules/minipass/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/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", @@ -12220,6 +12351,22 @@ "node": ">= 8" } }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib/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/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -12287,6 +12434,17 @@ "process-nextick-args": "^2.0.1" } }, + "node_modules/mqtt/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/mqtt/node_modules/mqtt-packet": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-6.10.0.tgz", @@ -12297,6 +12455,11 @@ "process-nextick-args": "^2.0.1" } }, + "node_modules/mqtt/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/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -12347,6 +12510,22 @@ "node": ">= 8.0" } }, + "node_modules/mysql2/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mysql2/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/named-placeholders": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.2.tgz", @@ -12541,6 +12720,18 @@ "node": ">=0.10.0" } }, + "node_modules/node-gyp/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/node-gyp/node_modules/npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", @@ -12618,6 +12809,12 @@ "node": ">=0.10.0" } }, + "node_modules/node-gyp/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "optional": true + }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -12640,9 +12837,9 @@ "integrity": "sha512-i3Sf6khnenl0aXumo0whAlfPWTaBqHxEnVBBxpu3dZ7q69NkPPv71rvPjlDZ5wkeKCTNNUTECljerS5kcYQxRw==" }, "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", + "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", "dev": true }, "node_modules/nodemailer": { @@ -12682,6 +12879,18 @@ "node": ">=10" } }, + "node_modules/normalize-package-data/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/normalize-package-data/node_modules/semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -12697,6 +12906,12 @@ "node": ">=10" } }, + "node_modules/normalize-package-data/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -13280,9 +13495,9 @@ } }, "node_modules/postcss": { - "version": "8.4.19", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", - "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", + "version": "8.4.20", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz", + "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==", "dev": true, "funding": [ { @@ -13368,9 +13583,9 @@ } }, "node_modules/postcss-scss": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.5.tgz", - "integrity": "sha512-F7xpB6TrXyqUh3GKdyB4Gkp3QL3DDW1+uI+gxx/oJnUt/qXI4trj5OGlp9rOKdoABGULuqtqeG+3HEVQk4DjmA==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.6.tgz", + "integrity": "sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==", "dev": true, "funding": [ { @@ -13386,7 +13601,7 @@ "node": ">=12.0" }, "peerDependencies": { - "postcss": "^8.3.3" + "postcss": "^8.4.19" } }, "node_modules/postcss-selector-parser": { @@ -13983,9 +14198,9 @@ } }, "node_modules/redbean-node/node_modules/@types/node": { - "version": "14.18.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.33.tgz", - "integrity": "sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg==" + "version": "14.18.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", + "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==" }, "node_modules/redent": { "version": "3.0.0", @@ -14352,12 +14567,13 @@ } }, "node_modules/rollup-plugin-visualizer": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.8.3.tgz", - "integrity": "sha512-QGJk4Bqe4AOat5AjipOh8esZH1nck5X2KFpf4VytUdSUuuuSwvIQZjMGgjcxe/zXexltqaXp5Vx1V3LmnQH15Q==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.9.0.tgz", + "integrity": "sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==", "dev": true, "dependencies": { "open": "^8.4.0", + "picomatch": "^2.3.1", "source-map": "^0.7.4", "yargs": "^17.5.1" }, @@ -14526,9 +14742,9 @@ } }, "node_modules/rxjs": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", "dev": true, "dependencies": { "tslib": "^2.1.0" @@ -14892,6 +15108,7 @@ "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", "dev": true }, "node_modules/spawn-command": { @@ -15368,9 +15585,9 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", @@ -15440,13 +15657,13 @@ } }, "node_modules/tar": { - "version": "6.1.12", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", - "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==", + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", + "minipass": "^4.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" @@ -15455,6 +15672,11 @@ "node": ">=10" } }, + "node_modules/tar/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/tarn": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz", @@ -15601,9 +15823,9 @@ } }, "node_modules/throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", + "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", "dev": true }, "node_modules/throttleit": { @@ -16356,6 +16578,18 @@ "node": ">=4.0" } }, + "node_modules/vue-eslint-parser/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/vue-eslint-parser/node_modules/semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -16371,6 +16605,12 @@ "node": ">=10" } }, + "node_modules/vue-eslint-parser/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/vue-i18n": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.2.2.tgz", @@ -16849,9 +17089,10 @@ } }, "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true }, "node_modules/yaml": { "version": "1.10.2", @@ -17135,17 +17376,17 @@ } }, "@azure/msal-browser": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.32.0.tgz", - "integrity": "sha512-uDP0vNmIefM6+RjILGKu+zOiN+VGnEvxRfUIV5hOWOWLLkG7kcDPYG/v/EJMoG+R5DYW9jXA5nvZT76t5HdEAQ==", + "version": "2.32.1", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.32.1.tgz", + "integrity": "sha512-2G3B12ZEIpiimi6/Yqq7KLk4ud1zZWoHvVd2kJ2VthN1HjMsZjdMUxeHkwMWaQ6RzO6mv9rZiuKmRX64xkXW9g==", "requires": { - "@azure/msal-common": "^9.0.0" + "@azure/msal-common": "^9.0.1" }, "dependencies": { "@azure/msal-common": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.0.tgz", - "integrity": "sha512-uiFiFKVNTsRpmKio5bcObTuHcaHHZB2GEsjJJN8rbJNmzoYuZzNioOoK+J0QK0jEasRBgAoR5A8hSty2iKRzIg==" + "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==" } } }, @@ -17155,19 +17396,19 @@ "integrity": "sha512-XqfbglUTVLdkHQ8F9UQJtKseRr3sSnr9ysboxtoswvaMVaEfvyLtMoHv9XdKUfOc0qKGzNgRFd9yRjIWVepl6Q==" }, "@azure/msal-node": { - "version": "1.14.4", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.14.4.tgz", - "integrity": "sha512-j9GzZu5mTLWtuJ+cYN6e67UNymIS5OysblrOzH8lakt9XxH0GCPYjuqbOEKTP84r+Rbj3io+TuW1KS+0Xxuj/g==", + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.14.5.tgz", + "integrity": "sha512-NcVdMfn8Z3ogN+9RjOSF7uwf2Gki5DEJl0BdDSL83KUAgVAobtkZi5W8EqxbJLrTO/ET0jv5DregrcR5qg2pEA==", "requires": { - "@azure/msal-common": "^9.0.0", + "@azure/msal-common": "^9.0.1", "jsonwebtoken": "^8.5.1", "uuid": "^8.3.0" }, "dependencies": { "@azure/msal-common": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.0.tgz", - "integrity": "sha512-uiFiFKVNTsRpmKio5bcObTuHcaHHZB2GEsjJJN8rbJNmzoYuZzNioOoK+J0QK0jEasRBgAoR5A8hSty2iKRzIg==" + "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==" } } }, @@ -17181,27 +17422,27 @@ } }, "@babel/compat-data": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", - "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", + "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", "dev": true }, "@babel/core": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", - "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.7.tgz", + "integrity": "sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.2", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-module-transforms": "^7.20.2", - "@babel/helpers": "^7.20.1", - "@babel/parser": "^7.20.2", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2", + "@babel/generator": "^7.20.7", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.20.7", + "@babel/helpers": "^7.20.7", + "@babel/parser": "^7.20.7", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -17221,12 +17462,12 @@ } }, "@babel/generator": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", - "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", + "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", "dev": true, "requires": { - "@babel/types": "^7.20.2", + "@babel/types": "^7.20.7", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -17259,40 +17500,41 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.20.0", + "@babel/compat-data": "^7.20.5", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", - "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.7.tgz", + "integrity": "sha512-LtoWbDXOaidEf50hmdDqn9g8VEzsorMexoWMQdQODbvmqYmaF23pBP5VNPAGIFHsFQCIeKokDiz3CH5Y2jlY6w==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-replace-supers": "^7.20.7", "@babel/helper-split-export-declaration": "^7.18.6" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" + "regexpu-core": "^5.2.1" } }, "@babel/helper-define-polyfill-provider": { @@ -17344,12 +17586,12 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", + "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", "dev": true, "requires": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.20.7" } }, "@babel/helper-module-imports": { @@ -17362,9 +17604,9 @@ } }, "@babel/helper-module-transforms": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", @@ -17372,9 +17614,9 @@ "@babel/helper-simple-access": "^7.20.2", "@babel/helper-split-export-declaration": "^7.18.6", "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.2" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" } }, "@babel/helper-optimise-call-expression": { @@ -17405,16 +17647,17 @@ } }, "@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" } }, "@babel/helper-simple-access": { @@ -17463,26 +17706,26 @@ "dev": true }, "@babel/helper-wrap-function": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", - "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", "dev": true, "requires": { "@babel/helper-function-name": "^7.19.0", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" } }, "@babel/helpers": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", - "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", + "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", "dev": true, "requires": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.0" + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" } }, "@babel/highlight": { @@ -17497,9 +17740,9 @@ } }, "@babel/parser": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", - "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", + "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { @@ -17512,24 +17755,24 @@ } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", + "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.7" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", - "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-remap-async-to-generator": "^7.18.9", "@babel/plugin-syntax-async-generators": "^7.8.4" } @@ -17545,13 +17788,13 @@ } }, "@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz", + "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, @@ -17586,12 +17829,12 @@ } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, @@ -17616,16 +17859,16 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", - "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", "dev": true, "requires": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.1" + "@babel/plugin-transform-parameters": "^7.20.7" } }, "@babel/plugin-proposal-optional-catch-binding": { @@ -17639,13 +17882,13 @@ } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", + "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, @@ -17660,14 +17903,14 @@ } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, @@ -17844,23 +18087,23 @@ } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", + "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz", + "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9" } }, "@babel/plugin-transform-block-scoped-functions": { @@ -17873,44 +18116,45 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", - "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz", + "integrity": "sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-classes": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", - "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", + "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-compilation-targets": "^7.20.7", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", "@babel/helper-optimise-call-expression": "^7.18.6", "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-replace-supers": "^7.20.7", "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", + "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/template": "^7.20.7" } }, "@babel/plugin-transform-destructuring": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", - "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", + "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2" @@ -17984,35 +18228,35 @@ } }, "@babel/plugin-transform-modules-amd": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", - "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", + "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", - "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", + "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-simple-access": "^7.19.4" + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-simple-access": "^7.20.2" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", - "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", + "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-validator-identifier": "^7.19.1" } }, @@ -18027,13 +18271,13 @@ } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-new-target": { @@ -18056,9 +18300,9 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", - "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", + "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2" @@ -18074,13 +18318,13 @@ } }, "@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" } }, "@babel/plugin-transform-reserved-words": { @@ -18102,13 +18346,13 @@ } }, "@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", + "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" } }, "@babel/plugin-transform-sticky-regex": { @@ -18254,52 +18498,52 @@ } }, "@babel/runtime": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", - "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz", + "integrity": "sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==", "requires": { - "regenerator-runtime": "^0.13.10" + "regenerator-runtime": "^0.13.11" } }, "@babel/standalone": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.20.4.tgz", - "integrity": "sha512-27bv4h47jbaFZ7+e7gT1VEo9PNL1ynxqUX6/BERLz1qxm/5gzpbcHX+47VnSeYHyEyGZkRznpSOd8zPBhiz6tw==", + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.20.11.tgz", + "integrity": "sha512-WUPlwwXFk3iViGE7QFVVp423eVtT+eoXu1940Xu4QJgqgHBF6WWtlwO1Ip5rIWQnp7OHrGdwrwKLtLhUVfOZbA==", "dev": true }, "@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" } }, "@babel/traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", - "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", + "version": "7.20.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.10.tgz", + "integrity": "sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.1", + "@babel/generator": "^7.20.7", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.1", - "@babel/types": "^7.20.0", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", - "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", "dev": true, "requires": { "@babel/helper-string-parser": "^7.19.4", @@ -18386,29 +18630,29 @@ } }, "@esbuild/android-arm": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.15.tgz", - "integrity": "sha512-JJjZjJi2eBL01QJuWjfCdZxcIgot+VoK6Fq7eKF9w4YHm9hwl7nhBR1o2Wnt/WcANk5l9SkpvrldW1PLuXxcbw==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", + "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", "dev": true, "optional": true }, "@esbuild/linux-loong64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.15.tgz", - "integrity": "sha512-lhz6UNPMDXUhtXSulw8XlFAtSYO26WmHQnCi2Lg2p+/TMiJKNLtZCYUxV4wG6rZMzXmr8InGpNwk+DLT2Hm0PA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", + "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", "dev": true, "optional": true }, "@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.4.0", - "globals": "^13.15.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -18417,9 +18661,9 @@ }, "dependencies": { "globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -18482,9 +18726,9 @@ } }, "@grpc/proto-loader": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.3.tgz", - "integrity": "sha512-5dAvoZwna2Py3Ef96Ux9jIkp3iZ62TUsV00p3wVBPNX5K178UbNi8Q7gQVqwXT1Yq9RejIGG9G2IPEo93T6RcA==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.4.tgz", + "integrity": "sha512-MnWjkGwqQ3W8fx94/c1CwqLsNmHHv2t0CFn+9++6+cDphC1lolpg9M2OU0iebIjK//pBNX9e94ho+gjx6vz39w==", "requires": { "@types/long": "^4.0.1", "lodash.camelcase": "^4.3.0", @@ -19120,9 +19364,9 @@ } }, "@js-joda/core": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/@js-joda/core/-/core-5.4.2.tgz", - "integrity": "sha512-QIDIZ9a0NfDStgD47VaTgwiPjlw1p4QPLwjOB/9+/DqIztoQopPNNAd+HdtQMHgE+ibP3dJacd8/TVL/A1RaaA==" + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@js-joda/core/-/core-5.5.1.tgz", + "integrity": "sha512-oTFmkyv5MhgkHdZhoe5lwRoKW0t4njPvK3g7ODvK/prkoC5bwylKcyQJMsmjvgHBXoy4u5iLnB5yQ7AljouHAA==" }, "@louislam/sqlite3": { "version": "15.1.2", @@ -19151,6 +19395,14 @@ "tar": "^6.1.11" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -19158,6 +19410,11 @@ "requires": { "lru-cache": "^6.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } }, @@ -19362,9 +19619,9 @@ } }, "@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", "dev": true }, "@sideway/pinpoint": { @@ -19374,9 +19631,9 @@ "dev": true }, "@sinonjs/commons": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.5.tgz", - "integrity": "sha512-rTpCA0wG1wUxglBSFdMMY0oTrKYvgf4fNgv/sXbfCVAdf+FnPBdKJR/7XbpTCwbCrvCbdPYnlWaUUYz4V2fPDA==", + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", "dev": true, "requires": { "type-detect": "4.0.8" @@ -19447,9 +19704,9 @@ } }, "@types/babel__traverse": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz", - "integrity": "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", + "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", "dev": true, "requires": { "@babel/types": "^7.3.0" @@ -19503,9 +19760,12 @@ } }, "@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" + "version": "2.8.13", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", + "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", + "requires": { + "@types/node": "*" + } }, "@types/es-aggregate-error": { "version": "1.0.2", @@ -19516,20 +19776,20 @@ } }, "@types/express": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", - "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.15.tgz", + "integrity": "sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==", "requires": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", + "@types/express-serve-static-core": "^4.17.31", "@types/qs": "*", "@types/serve-static": "*" } }, "@types/express-serve-static-core": { - "version": "4.17.31", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", - "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", + "version": "4.17.32", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz", + "integrity": "sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==", "requires": { "@types/node": "*", "@types/qs": "*", @@ -19608,9 +19868,9 @@ } }, "@types/lodash": { - "version": "4.14.190", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.190.tgz", - "integrity": "sha512-5iJ3FBJBvQHQ8sFhEhJfjUP+G+LalhavTkYyrAYqz5MEJG+erSv0k9KJLb6q7++17Lafk1scaTIFXcMJlwK8Mw==" + "version": "4.14.191", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz", + "integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==" }, "@types/long": { "version": "4.0.2", @@ -19629,9 +19889,9 @@ "dev": true }, "@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==" + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" }, "@types/normalize-package-data": { "version": "2.4.1", @@ -19646,9 +19906,9 @@ "dev": true }, "@types/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", "dev": true }, "@types/qs": { @@ -19689,9 +19949,9 @@ "dev": true }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -20757,9 +21017,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001434", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz", - "integrity": "sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==", + "version": "1.0.30001441", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz", + "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==", "dev": true }, "caseless": { @@ -20886,9 +21146,9 @@ "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==" }, "ci-info": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.0.tgz", - "integrity": "sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz", + "integrity": "sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==", "dev": true }, "cjs-module-lexer": { @@ -21268,9 +21528,9 @@ "dev": true }, "core-js-compat": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", - "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", + "version": "3.27.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.1.tgz", + "integrity": "sha512-Dg91JFeCDA17FKnneN7oCMz4BkQ4TcffkgHP4OWwp9yx3pi7ubqMDXXSacfNak1PQqjc95skyt+YBLHQJnkJwA==", "dev": true, "requires": { "browserslist": "^4.21.4" @@ -21473,9 +21733,9 @@ }, "dependencies": { "@types/node": { - "version": "14.18.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.33.tgz", - "integrity": "sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg==", + "version": "14.18.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", + "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==", "dev": true }, "ansi-styles": { @@ -21529,6 +21789,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -21546,6 +21815,12 @@ "requires": { "has-flag": "^4.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, @@ -21576,9 +21851,9 @@ "dev": true }, "dayjs": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.6.tgz", - "integrity": "sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ==" + "version": "1.11.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" }, "debug": { "version": "4.3.4", @@ -21620,9 +21895,9 @@ } }, "decimal.js": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz", - "integrity": "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", "dev": true }, "dedent": { @@ -21944,9 +22219,9 @@ } }, "es-abstract": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", - "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", + "version": "1.20.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz", + "integrity": "sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==", "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -21954,6 +22229,7 @@ "function.prototype.name": "^1.1.5", "get-intrinsic": "^1.1.3", "get-symbol-description": "^1.0.0", + "gopd": "^1.0.1", "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-symbols": "^1.0.3", @@ -21969,8 +22245,8 @@ "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.4.3", "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", "unbox-primitive": "^1.0.2" } }, @@ -21999,172 +22275,172 @@ } }, "esbuild": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.15.tgz", - "integrity": "sha512-TEw/lwK4Zzld9x3FedV6jy8onOUHqcEX3ADFk4k+gzPUwrxn8nWV62tH0udo8jOtjFodlEfc4ypsqX3e+WWO6w==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", + "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", "dev": true, "requires": { - "@esbuild/android-arm": "0.15.15", - "@esbuild/linux-loong64": "0.15.15", - "esbuild-android-64": "0.15.15", - "esbuild-android-arm64": "0.15.15", - "esbuild-darwin-64": "0.15.15", - "esbuild-darwin-arm64": "0.15.15", - "esbuild-freebsd-64": "0.15.15", - "esbuild-freebsd-arm64": "0.15.15", - "esbuild-linux-32": "0.15.15", - "esbuild-linux-64": "0.15.15", - "esbuild-linux-arm": "0.15.15", - "esbuild-linux-arm64": "0.15.15", - "esbuild-linux-mips64le": "0.15.15", - "esbuild-linux-ppc64le": "0.15.15", - "esbuild-linux-riscv64": "0.15.15", - "esbuild-linux-s390x": "0.15.15", - "esbuild-netbsd-64": "0.15.15", - "esbuild-openbsd-64": "0.15.15", - "esbuild-sunos-64": "0.15.15", - "esbuild-windows-32": "0.15.15", - "esbuild-windows-64": "0.15.15", - "esbuild-windows-arm64": "0.15.15" + "@esbuild/android-arm": "0.15.18", + "@esbuild/linux-loong64": "0.15.18", + "esbuild-android-64": "0.15.18", + "esbuild-android-arm64": "0.15.18", + "esbuild-darwin-64": "0.15.18", + "esbuild-darwin-arm64": "0.15.18", + "esbuild-freebsd-64": "0.15.18", + "esbuild-freebsd-arm64": "0.15.18", + "esbuild-linux-32": "0.15.18", + "esbuild-linux-64": "0.15.18", + "esbuild-linux-arm": "0.15.18", + "esbuild-linux-arm64": "0.15.18", + "esbuild-linux-mips64le": "0.15.18", + "esbuild-linux-ppc64le": "0.15.18", + "esbuild-linux-riscv64": "0.15.18", + "esbuild-linux-s390x": "0.15.18", + "esbuild-netbsd-64": "0.15.18", + "esbuild-openbsd-64": "0.15.18", + "esbuild-sunos-64": "0.15.18", + "esbuild-windows-32": "0.15.18", + "esbuild-windows-64": "0.15.18", + "esbuild-windows-arm64": "0.15.18" } }, "esbuild-android-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.15.tgz", - "integrity": "sha512-F+WjjQxO+JQOva3tJWNdVjouFMLK6R6i5gjDvgUthLYJnIZJsp1HlF523k73hELY20WPyEO8xcz7aaYBVkeg5Q==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", + "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", "dev": true, "optional": true }, "esbuild-android-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.15.tgz", - "integrity": "sha512-attlyhD6Y22jNyQ0fIIQ7mnPvDWKw7k6FKnsXlBvQE6s3z6s6cuEHcSgoirquQc7TmZgVCK5fD/2uxmRN+ZpcQ==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", + "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", "dev": true, "optional": true }, "esbuild-darwin-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.15.tgz", - "integrity": "sha512-ohZtF8W1SHJ4JWldsPVdk8st0r9ExbAOSrBOh5L+Mq47i696GVwv1ab/KlmbUoikSTNoXEhDzVpxUR/WIO19FQ==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", + "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", "dev": true, "optional": true }, "esbuild-darwin-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.15.tgz", - "integrity": "sha512-P8jOZ5zshCNIuGn+9KehKs/cq5uIniC+BeCykvdVhx/rBXSxmtj3CUIKZz4sDCuESMbitK54drf/2QX9QHG5Ag==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", + "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", "dev": true, "optional": true }, "esbuild-freebsd-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.15.tgz", - "integrity": "sha512-KkTg+AmDXz1IvA9S1gt8dE24C8Thx0X5oM0KGF322DuP+P3evwTL9YyusHAWNsh4qLsR80nvBr/EIYs29VSwuA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", + "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", "dev": true, "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.15.tgz", - "integrity": "sha512-FUcML0DRsuyqCMfAC+HoeAqvWxMeq0qXvclZZ/lt2kLU6XBnDA5uKTLUd379WYEyVD4KKFctqWd9tTuk8C/96g==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", + "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", "dev": true, "optional": true }, "esbuild-linux-32": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.15.tgz", - "integrity": "sha512-q28Qn5pZgHNqug02aTkzw5sW9OklSo96b5nm17Mq0pDXrdTBcQ+M6Q9A1B+dalFeynunwh/pvfrNucjzwDXj+Q==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", + "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", "dev": true, "optional": true }, "esbuild-linux-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.15.tgz", - "integrity": "sha512-217KPmWMirkf8liO+fj2qrPwbIbhNTGNVtvqI1TnOWJgcMjUWvd677Gq3fTzXEjilkx2yWypVnTswM2KbXgoAg==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", + "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", "dev": true, "optional": true }, "esbuild-linux-arm": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.15.tgz", - "integrity": "sha512-RYVW9o2yN8yM7SB1yaWr378CwrjvGCyGybX3SdzPHpikUHkME2AP55Ma20uNwkNyY2eSYFX9D55kDrfQmQBR4w==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", + "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", "dev": true, "optional": true }, "esbuild-linux-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.15.tgz", - "integrity": "sha512-/ltmNFs0FivZkYsTzAsXIfLQX38lFnwJTWCJts0IbCqWZQe+jjj0vYBNbI0kmXLb3y5NljiM5USVAO1NVkdh2g==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", + "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", "dev": true, "optional": true }, "esbuild-linux-mips64le": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.15.tgz", - "integrity": "sha512-PksEPb321/28GFFxtvL33yVPfnMZihxkEv5zME2zapXGp7fA1X2jYeiTUK+9tJ/EGgcNWuwvtawPxJG7Mmn86A==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", + "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", "dev": true, "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.15.tgz", - "integrity": "sha512-ek8gJBEIhcpGI327eAZigBOHl58QqrJrYYIZBWQCnH3UnXoeWMrMZLeeZL8BI2XMBhP+sQ6ERctD5X+ajL/AIA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", + "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", "dev": true, "optional": true }, "esbuild-linux-riscv64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.15.tgz", - "integrity": "sha512-H5ilTZb33/GnUBrZMNJtBk7/OXzDHDXjIzoLXHSutwwsLxSNaLxzAaMoDGDd/keZoS+GDBqNVxdCkpuiRW4OSw==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", + "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", "dev": true, "optional": true }, "esbuild-linux-s390x": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.15.tgz", - "integrity": "sha512-jKaLUg78mua3rrtrkpv4Or2dNTJU7bgHN4bEjT4OX4GR7nLBSA9dfJezQouTxMmIW7opwEC5/iR9mpC18utnxQ==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", + "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", "dev": true, "optional": true }, "esbuild-netbsd-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.15.tgz", - "integrity": "sha512-aOvmF/UkjFuW6F36HbIlImJTTx45KUCHJndtKo+KdP8Dhq3mgLRKW9+6Ircpm8bX/RcS3zZMMmaBLkvGY06Gvw==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", + "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", "dev": true, "optional": true }, "esbuild-openbsd-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.15.tgz", - "integrity": "sha512-HFFX+WYedx1w2yJ1VyR1Dfo8zyYGQZf1cA69bLdrHzu9svj6KH6ZLK0k3A1/LFPhcEY9idSOhsB2UyU0tHPxgQ==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", + "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", "dev": true, "optional": true }, "esbuild-sunos-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.15.tgz", - "integrity": "sha512-jOPBudffG4HN8yJXcK9rib/ZTFoTA5pvIKbRrt3IKAGMq1EpBi4xoVoSRrq/0d4OgZLaQbmkHp8RO9eZIn5atA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", + "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", "dev": true, "optional": true }, "esbuild-windows-32": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.15.tgz", - "integrity": "sha512-MDkJ3QkjnCetKF0fKxCyYNBnOq6dmidcwstBVeMtXSgGYTy8XSwBeIE4+HuKiSsG6I/mXEb++px3IGSmTN0XiA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", + "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", "dev": true, "optional": true }, "esbuild-windows-64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.15.tgz", - "integrity": "sha512-xaAUIB2qllE888SsMU3j9nrqyLbkqqkpQyWVkfwSil6BBPgcPk3zOFitTTncEKCLTQy3XV9RuH7PDj3aJDljWA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", + "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", "dev": true, "optional": true }, "esbuild-windows-arm64": { - "version": "0.15.15", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.15.tgz", - "integrity": "sha512-ttuoCYCIJAFx4UUKKWYnFdrVpoXa3+3WWkXVI6s09U+YjhnyM5h96ewTq/WgQj9LFSIlABQvadHSOQyAVjW5xQ==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", + "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", "dev": true, "optional": true }, @@ -22350,9 +22626,9 @@ "dev": true }, "globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -22395,6 +22671,15 @@ "vue-eslint-parser": "^8.0.1" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -22403,6 +22688,12 @@ "requires": { "lru-cache": "^6.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, @@ -22752,9 +23043,9 @@ } }, "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -22957,6 +23248,21 @@ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "requires": { "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } } }, "fs.realpath": { @@ -23198,6 +23504,14 @@ "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", "dev": true }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", @@ -23292,6 +23606,23 @@ "dev": true, "requires": { "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } } }, "html-encoding-sniffer": { @@ -23339,9 +23670,9 @@ } }, "http-graceful-shutdown": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/http-graceful-shutdown/-/http-graceful-shutdown-3.1.11.tgz", - "integrity": "sha512-tfOwKDZA8kJqDNBK2ur+o55HbhDHoflvDCDgjbmm5eAn0RhqhdlUjVygj8e258B5nn5kNsEFOl7DbXLskKrgGA==", + "version": "3.1.12", + "resolved": "https://registry.npmjs.org/http-graceful-shutdown/-/http-graceful-shutdown-3.1.12.tgz", + "integrity": "sha512-z3mH1HUwRESrauPjvjH5QuH2Ce4uLlWonPFgZnwAyxIFYROxIMcNNWwNltN+s8fHF/aGlsfQDOICHLXsabK43w==", "requires": { "debug": "^4.3.4" } @@ -23414,9 +23745,9 @@ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true }, "import-fresh": { @@ -23478,11 +23809,11 @@ "dev": true }, "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", + "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", "requires": { - "get-intrinsic": "^1.1.0", + "get-intrinsic": "^1.1.3", "has": "^1.0.3", "side-channel": "^1.0.4" } @@ -24930,6 +25261,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -24947,6 +25287,12 @@ "requires": { "has-flag": "^4.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, @@ -25351,9 +25697,9 @@ "devOptional": true }, "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, "jsonfile": { @@ -25809,11 +26155,12 @@ "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" }, "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, "requires": { - "yallist": "^4.0.0" + "yallist": "^3.0.2" } }, "magic-string": { @@ -25980,11 +26327,18 @@ } }, "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", + "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", "requires": { "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==" + } } }, "minizlib": { @@ -25994,6 +26348,21 @@ "requires": { "minipass": "^3.0.0", "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } } }, "mkdirp": { @@ -26035,6 +26404,14 @@ "xtend": "^4.0.2" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, "mqtt-packet": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-6.10.0.tgz", @@ -26044,6 +26421,11 @@ "debug": "^4.1.1", "process-nextick-args": "^2.0.1" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } }, @@ -26096,6 +26478,21 @@ "named-placeholders": "^1.1.2", "seq-queue": "^0.0.5", "sqlstring": "^2.3.2" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } } }, "named-placeholders": { @@ -26261,6 +26658,15 @@ "number-is-nan": "^1.0.0" } }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "optional": true, + "requires": { + "yallist": "^4.0.0" + } + }, "npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", @@ -26325,6 +26731,12 @@ "requires": { "ansi-regex": "^2.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "optional": true } } }, @@ -26350,9 +26762,9 @@ "integrity": "sha512-i3Sf6khnenl0aXumo0whAlfPWTaBqHxEnVBBxpu3dZ7q69NkPPv71rvPjlDZ5wkeKCTNNUTECljerS5kcYQxRw==" }, "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", + "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", "dev": true }, "nodemailer": { @@ -26380,6 +26792,15 @@ "validate-npm-package-license": "^3.0.1" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -26388,6 +26809,12 @@ "requires": { "lru-cache": "^6.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, @@ -26812,9 +27239,9 @@ "dev": true }, "postcss": { - "version": "8.4.19", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", - "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", + "version": "8.4.20", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz", + "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==", "dev": true, "requires": { "nanoid": "^3.3.4", @@ -26870,9 +27297,9 @@ "dev": true }, "postcss-scss": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.5.tgz", - "integrity": "sha512-F7xpB6TrXyqUh3GKdyB4Gkp3QL3DDW1+uI+gxx/oJnUt/qXI4trj5OGlp9rOKdoABGULuqtqeG+3HEVQk4DjmA==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.6.tgz", + "integrity": "sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==", "dev": true }, "postcss-selector-parser": { @@ -27339,9 +27766,9 @@ }, "dependencies": { "@types/node": { - "version": "14.18.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.33.tgz", - "integrity": "sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg==" + "version": "14.18.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", + "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==" } } }, @@ -27628,12 +28055,13 @@ } }, "rollup-plugin-visualizer": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.8.3.tgz", - "integrity": "sha512-QGJk4Bqe4AOat5AjipOh8esZH1nck5X2KFpf4VytUdSUuuuSwvIQZjMGgjcxe/zXexltqaXp5Vx1V3LmnQH15Q==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.9.0.tgz", + "integrity": "sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==", "dev": true, "requires": { "open": "^8.4.0", + "picomatch": "^2.3.1", "source-map": "^0.7.4", "yargs": "^17.5.1" }, @@ -27739,9 +28167,9 @@ } }, "rxjs": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", "dev": true, "requires": { "tslib": "^2.1.0" @@ -28407,9 +28835,9 @@ }, "dependencies": { "ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -28462,16 +28890,23 @@ } }, "tar": { - "version": "6.1.12", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", - "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==", + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", "requires": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", + "minipass": "^4.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "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==" + } } }, "tarn": { @@ -28586,9 +29021,9 @@ "integrity": "sha512-OEI0IWCe+Dw46019YLl6V10Us5bi574EvlJEOcAkB29IzQ/mYD1A6RyNHLjZPiHCmuodxvgF6U+vZO1L15lxVA==" }, "throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", + "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", "dev": true }, "throttleit": { @@ -29204,6 +29639,15 @@ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -29212,6 +29656,12 @@ "requires": { "lru-cache": "^6.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, @@ -29513,9 +29963,10 @@ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" }, "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true }, "yaml": { "version": "1.10.2", From 4bf23fdd1a93d1796bdb8e3e4ca07f0693b1e511 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Wed, 4 Jan 2023 15:55:36 +0800 Subject: [PATCH 048/296] Update jsonwebtoken from ~8 to ~9 --- package-lock.json | 141 +++++++++++++++++++++++++++++++++++----------- package.json | 2 +- 2 files changed, 110 insertions(+), 33 deletions(-) diff --git a/package-lock.json b/package-lock.json index b4a7b755..1caf5095 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35,7 +35,7 @@ "https-proxy-agent": "~5.0.1", "iconv-lite": "~0.6.3", "jsesc": "~3.0.2", - "jsonwebtoken": "~8.5.1", + "jsonwebtoken": "~9.0.0", "jwt-decode": "~3.1.2", "limiter": "~2.1.0", "mqtt": "~4.3.7", @@ -413,6 +413,35 @@ "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", @@ -11520,34 +11549,50 @@ } }, "node_modules/jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", + "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", "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", + "lodash": "^4.17.21", "ms": "^2.1.1", - "semver": "^5.6.0" + "semver": "^7.3.8" }, "engines": { - "node": ">=4", - "npm": ">=1.4.28" + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/jsonwebtoken/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, + "node_modules/jsonwebtoken/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/jsprim": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", @@ -17409,6 +17454,28 @@ "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==" } } }, @@ -25713,26 +25780,36 @@ } }, "jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", + "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", "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", + "lodash": "^4.17.21", "ms": "^2.1.1", - "semver": "^5.6.0" + "semver": "^7.3.8" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } }, diff --git a/package.json b/package.json index c41b1701..702fda53 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,7 @@ "https-proxy-agent": "~5.0.1", "iconv-lite": "~0.6.3", "jsesc": "~3.0.2", - "jsonwebtoken": "~8.5.1", + "jsonwebtoken": "~9.0.0", "jwt-decode": "~3.1.2", "limiter": "~2.1.0", "mqtt": "~4.3.7", From e591647b606cca8aa4360e40ed697c35860ec806 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Furkan=20I=CC=87pek?= Date: Wed, 4 Jan 2023 16:35:48 +0300 Subject: [PATCH 049/296] Update tr-TR.js --- src/languages/tr-TR.js | 93 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) diff --git a/src/languages/tr-TR.js b/src/languages/tr-TR.js index 1bf94993..791fa68a 100644 --- a/src/languages/tr-TR.js +++ b/src/languages/tr-TR.js @@ -582,4 +582,97 @@ export default { 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' }; From 610b6248aa9f57eeb2500776bae71eef90555f75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Furkan=20I=CC=87pek?= Date: Wed, 4 Jan 2023 16:41:00 +0300 Subject: [PATCH 050/296] Update tr-TR.js --- src/languages/tr-TR.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/languages/tr-TR.js b/src/languages/tr-TR.js index 791fa68a..c84fa1f2 100644 --- a/src/languages/tr-TR.js +++ b/src/languages/tr-TR.js @@ -665,7 +665,7 @@ export default { 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", + "Enable TLS": "TLS'yi Etkinleştir", "Proto Service Name": "Proto Service İsmi", "Proto Method": "Proto Method", "Proto Content": "Proto İçeriği", @@ -674,5 +674,5 @@ export default { high: "Yüksek", "General Monitor Type": "Genel Monitör Tipi", "Passive Monitor Type": "Pasif Monitör Tipi", - "Specific Monitor Type": "Özel Monitör Tipi' + "Specific Monitor Type": "Özel Monitör Tipi", }; From 69e1880cd30507143cfa4ec704d32eff3da4cb60 Mon Sep 17 00:00:00 2001 From: Matthew Nickson Date: Wed, 4 Jan 2023 16:46:36 +0000 Subject: [PATCH 051/296] Added not active condition to prevent false error Added a check to see if the host is alive. This prevents failiures when the user specifies a hostname of `unknown`. Signed-off-by: Matthew Nickson --- 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 72662136..3549de80 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -103,7 +103,7 @@ exports.pingAsync = function (hostname, ipv6 = false) { min_reply: 3 }).then((res) => { // If ping failed, it will set field to unknown - if (res.host === "unknown") { + if (!res.alive && res.host === "unknown") { reject(new Error("Name or service not known")); } else if (res.time === "unknown") { reject(new Error(res.output)); From 49b5de7d40bc4ca062afdbeac72e7cd40e05bece Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Thu, 5 Jan 2023 00:48:49 +0800 Subject: [PATCH 052/296] Update Apprise to 1.2.1 --- docker/alpine-base.dockerfile | 2 +- docker/debian-base.dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/alpine-base.dockerfile b/docker/alpine-base.dockerfile index 1b8034f4..82bc7bb0 100644 --- a/docker/alpine-base.dockerfile +++ b/docker/alpine-base.dockerfile @@ -4,5 +4,5 @@ WORKDIR /app # Install apprise, iputils for non-root ping, setpriv RUN apk add --no-cache iputils setpriv dumb-init python3 py3-cryptography py3-pip py3-six py3-yaml py3-click py3-markdown py3-requests py3-requests-oauthlib && \ - pip3 --no-cache-dir install apprise==1.2.0 && \ + pip3 --no-cache-dir install apprise==1.2.1 && \ rm -rf /root/.cache diff --git a/docker/debian-base.dockerfile b/docker/debian-base.dockerfile index 5ca4a7ed..d94b4c7f 100644 --- a/docker/debian-base.dockerfile +++ b/docker/debian-base.dockerfile @@ -11,7 +11,7 @@ WORKDIR /app RUN apt update && \ apt --yes --no-install-recommends install python3 python3-pip python3-cryptography python3-six python3-yaml python3-click python3-markdown python3-requests python3-requests-oauthlib \ sqlite3 iputils-ping util-linux dumb-init && \ - pip3 --no-cache-dir install apprise==1.2.0 && \ + pip3 --no-cache-dir install apprise==1.2.1 && \ rm -rf /var/lib/apt/lists/* && \ apt --yes autoremove From 90a26682720a7a3fcc831d4fbce7deb69b5b24f2 Mon Sep 17 00:00:00 2001 From: Matthew Nickson Date: Wed, 4 Jan 2023 17:32:27 +0000 Subject: [PATCH 053/296] Restructured condition + ensure data is UTF-8 Signed-off-by: Matthew Nickson --- server/util-server.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/server/util-server.js b/server/util-server.js index 3549de80..3f55b3d7 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -103,12 +103,10 @@ exports.pingAsync = function (hostname, ipv6 = false) { min_reply: 3 }).then((res) => { // If ping failed, it will set field to unknown - if (!res.alive && res.host === "unknown") { - reject(new Error("Name or service not known")); - } else if (res.time === "unknown") { - reject(new Error(res.output)); - } else { + if (res.alive) { resolve(res.time); + } else { + reject(new Error(exports.convertToUTF8(res.output))); } }).catch((err) => { reject(err); From 554402b4847940b559320e17fcaa2cbf03f1dc0d Mon Sep 17 00:00:00 2001 From: DX Date: Thu, 5 Jan 2023 15:38:51 +0800 Subject: [PATCH 054/296] Updated zh-CN.js --- src/languages/zh-CN.js | 219 ++++++++++++++++++++++++++++------------- 1 file changed, 150 insertions(+), 69 deletions(-) diff --git a/src/languages/zh-CN.js b/src/languages/zh-CN.js index 5878758c..ba2a78ac 100644 --- a/src/languages/zh-CN.js +++ b/src/languages/zh-CN.js @@ -2,17 +2,35 @@ export default { 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: "确定要暂停吗?", @@ -34,7 +52,6 @@ export default { Theme: "主题", General: "常规", "Primary Base URL": "站点主 URL", - About: "关于", Version: "版本", "Check Update On GitHub": "检查 GitHub 上的更新", List: "列表", @@ -72,6 +89,7 @@ export default { "Heartbeat Interval": "心跳间隔", Retries: "重试次数", "Heartbeat Retry Interval": "心跳重试间隔", + "Resend Notification if Down X times consequently": "连续失败时重复发送通知的间隔次数", Advanced: "高级", "Upside Down Mode": "反转监控", "Max. Redirects": "最大重定向次数", @@ -125,7 +143,6 @@ export default { "Last Result": "上次结果", "Create your admin account": "创建管理员账户", "Repeat Password": "重复密码", - Backup: "备份", "Import Backup": "导入备份", "Export Backup": "导出备份", Export: "导出", @@ -160,7 +177,7 @@ export default { Token: "令牌", "Show URI": "显示 URI", Tags: "标签", - "Add New below or Select...": "在下面添加或选择...", + "Add New below or Select...": "在下面添加或选择…", "Tag with this name already exist.": "相同名称的标签已存在。", "Tag with this value already exist.": "相同内容的标签已存在。", color: "颜色", @@ -173,7 +190,7 @@ export default { Indigo: "靛蓝", Purple: "紫色", Pink: "粉色", - "Search...": "搜索...", + "Search...": "搜索…", "Avg. Ping": "平均 Ping", "Avg. Response": "平均响应", "Entry Page": "入口页面", @@ -192,6 +209,7 @@ export default { here: "这里", Required: "必填", telegram: "Telegram", + "ZohoCliq": "ZohoCliq", "Bot Token": "Bot Token", wayToGetTelegramToken: "您可以从 {0} 获取 Token。", "Chat ID": "Chat ID", @@ -204,6 +222,8 @@ export default { "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)", @@ -221,7 +241,8 @@ export default { "Hello @everyone is...": "{'@'}everyone,……", teams: "Microsoft Teams", "Webhook URL": "Webhook URL", - wayToGetTeamsURL: "您可以在 {0} 了解如何获取 Webhook URL。", + wayToGetTeamsURL: "您可以在{0}了解如何获取 Webhook URL。", + wayToGetZohoCliqURL: "您可以在{0}了解如何创建 Webhook URL。", signal: "Signal", Number: "号码", Recipients: "收件人", @@ -243,6 +264,7 @@ export default { "rocket.chat": "Rocket.Chat", pushover: "Pushover", pushy: "Pushy", + PushByTechulus: "Push by Techulus", octopush: "Octopush", promosms: "PromoSMS", clicksendsms: "ClickSend SMS", @@ -250,9 +272,10 @@ export default { apprise: "Apprise (支持 50+ 种通知服务)", GoogleChat: "Google Chat(仅 Google Workspace)", pushbullet: "Pushbullet", + AliyunSMS: "阿里云短信服务", Kook: "Kook", wayToGetKookBotToken: "在 {0} 创建应用并获取机器人 Token", - wayToGetKookGuildID: "在Kook设置中打开 ‘开发者模式’,然后右键频道可获取其 ID", + wayToGetKookGuildID: "在 Kook 设置中打开“开发者模式”,然后右键点击频道可获取其 ID", "Guild ID": "频道 ID", line: "Line Messenger", mattermost: "Mattermost", @@ -298,6 +321,7 @@ export default { 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", @@ -316,14 +340,18 @@ export default { "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...": "选择有效的状态码...", + "Pick a RR-Type...": "选择资源记录类型…", + "Pick Accepted Status Codes...": "选择有效的状态码…", Default: "默认", "HTTP Options": "HTTP 选项", "Create Incident": "创建事件", @@ -333,6 +361,8 @@ export default { info: "信息", warning: "警告", danger: "危险", + error: "错误", + critical: "关键", primary: "主要", light: "明亮", dark: "黑暗", @@ -360,7 +390,20 @@ export default { 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: "文档", @@ -370,16 +413,13 @@ export default { smtpDkimHashAlgo: "哈希算法(可选)", smtpDkimheaderFieldNames: "包含在哈希计算对象内的 Header 列表(可选)", smtpDkimskipFields: "不包含在哈希计算对象内的 Header 列表(可选)", - Feishu: "飞书", - AliyunSMS: "阿里云短信服务", - "Sms template must contain parameters: ": "短信模板必须包含以下变量:", - DingDing: "钉钉自定义机器人", - WebHookUrl: "钉钉自定义机器人 Webhook 地址", - SecretKey: "钉钉自定义机器人加签密钥", - "For safety, must use secret key": "出于安全考虑,必须使用加签密钥", - WeCom: "企业微信群机器人", - "WeCom Bot Key": "企业微信群机器人 Key", - PushByTechulus: "Push by Techulus", + 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 接入点", @@ -396,9 +436,6 @@ export default { proxyDescription: "代理必须配置到至少一个监控项后才会工作。", enableProxyDescription: "此代理必须启用才能对监控项的网络请求起作用。您可以通过修改激活状态,临时在所有监控项中禁用此代理。", setAsDefaultProxyDescription: "此代理会对新创建的监控项默认激活,您仍可以在监控项配置中单独禁用此代理。", - "Proxy Protocol": "代理协议", - "Proxy Server": "代理服务器", - "Server Address": "服务器地址", "Certificate Chain": "证书链", Valid: "有效", Invalid: "无效", @@ -407,9 +444,14 @@ export default { 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", @@ -418,21 +460,18 @@ export default { 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": "未运行", - "Message:": "信息:", - wayToGetCloudflaredURL: "(可从 {0} 下载 cloudflared)", - cloudflareWebsite: "Cloudflare 网站", - "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 访问网站,则停止可能会导致当前连接断开。您确定要停止吗?请输入密码以确认。", - "Other Software": "其他软件", - "For example: nginx, Apache and Traefik.": "例如:nginx、Apache 和 Traefik。", - "Please read": "请阅读", "Remove Token": "移除 Token", Start: "启动", Stop: "停止", @@ -450,6 +489,18 @@ export default { "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:": "剩余有效天数:", @@ -459,26 +510,28 @@ export default { "Domain Name Expiry Notification": "域名到期时通知", Proxy: "代理", "Date Created": "创建于", + HomeAssistant: "Home Assistant", onebotHttpAddress: "OneBot HTTP 地址", onebotMessageType: "OneBot 消息类型", onebotGroupMessage: "群聊", onebotPrivateMessage: "私聊", - onebotUserOrGroupId: "群组/用户ID", + onebotUserOrGroupId: "群组/用户 ID", onebotSafetyTips: "出于安全原因,请务必设置 AccessToken", - topic: "Topic", - topicExplanation: "MQTT 传递给监控的 Topic", - successMessage: "成功时消息", - successMessageExplanation: "MQTT 成功时所传递的消息", - Customize: "自定义", - "Custom Footer": "自定义底部", - "Custom CSS": "自定义 CSS", "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", + "API Username": "API Username", + "API Key": "API Key", "Recipient Number": "收件人手机号码", "From Name/Number": "发件人名称/手机号码", "Leave blank to use a shared sender number.": "留空以使用平台共享的发件人手机号码", @@ -526,38 +579,11 @@ export default { "Retype the address.": "重新输入地址;", "Go back to the previous page.": "返回到上一页面。", "Coming Soon": "即将推出", - wayToGetClickSendSMSToken: "您可以从 {0} 获取 API 凭证 Username 和 凭证 Key。", - signedInDisp: "当前用户: {0}", - signedInDispDisabled: "已禁用身份验证", - dnsPortDescription: "DNS 服务器端口,默认为 53,你可以在任何时候更改此端口.", - error: "错误", - critical: "关键", - 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": "自动标记为已解决", + wayToGetClickSendSMSToken: "您可以在{0}获取 API Username 和 API Key。", "Connection String": "连接字符串", Query: "查询语句", settingsCertificateExpiry: "TLS 证书过期通知", certificationExpiryDescription: "HTTPS 监控项发现被监控目标的 TLS 证书剩余有效期少于以下天数时将发出通知:", - "ntfy Topic": "ntfy 主题", - Domain: "域名", - Workstation: "工作站", - resendEveryXTimes: "每 {0} 次失败则重复发送一次", - resendDisabled: "为 0 时禁用重复发送", - "Resend Notification if Down X times consequently": "连续失败时重复发送通知的间隔次数", - "HTTP Headers": "HTTP 头", - "Trust Proxy": "可信的代理类字段", - HomeAssistant: "Home Assistant", - RadiusSecret: "Radius 共享机密", - RadiusSecretDescription: "客户端和服务器之间共享的密钥", - RadiusCalledStationId: "NAS 网络访问服务器号码(Called Station Id)", - RadiusCalledStationIdDescription: "所访问的服务器的标识", - RadiusCallingStationId: "呼叫方号码(Calling Station Id)", - RadiusCallingStationIdDescription: "发出请求的设备的标识", "Setup Docker Host": "配置 Docker 宿主信息", "Connection Type": "连接方式", "Docker Daemon": "Docker 守护进程", @@ -568,6 +594,9 @@ export default { "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", @@ -584,7 +613,7 @@ export default { "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!": "前端版本与后端版本不符!", + "Frontend Version do not match backend version!": "前端版本与后端版本不匹配!", "Base URL": "API 基础地址", goAlertInfo: "GoAlert 是一个用于呼叫调度、自动汇报和通知(如 SMS 或语音呼叫)的开源应用程序。在正确的时间以正确的方式自动让正确的人参与!{0}", goAlertIntegrationKeyInfo: "使用形如 aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee 的通用 API 集成密钥,通常是复制来的链接中的 token 参数值。", @@ -598,5 +627,57 @@ export default { "Gateway Type": "网关类型", SMSManager: "SMSManager", "You can divide numbers with": "可用的分隔符:", - "or": "或", + 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": "针对监控类型", }; From c196c34840f39bb97ba094dc8f642d6f77ce84e1 Mon Sep 17 00:00:00 2001 From: David Twigger Date: Thu, 5 Jan 2023 08:57:48 +0100 Subject: [PATCH 055/296] 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 ffd171b4..fb96abe7 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 c9d5ad2f..315d1e6c 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 4239cf4255b52b47c8788eba8ad1b20c61085e1d Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Thu, 5 Jan 2023 17:11:37 +0800 Subject: [PATCH 056/296] Pin dependency of `ping` --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0e99be12..6c09c89a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -48,7 +48,7 @@ "password-hash": "~1.2.2", "pg": "~8.8.0", "pg-connection-string": "~2.5.0", - "ping": "^0.4.2", + "ping": "~0.4.2", "prom-client": "~13.2.0", "prometheus-api-metrics": "~3.2.1", "protobufjs": "~7.1.1", diff --git a/package.json b/package.json index f7ed288f..7d48a929 100644 --- a/package.json +++ b/package.json @@ -103,7 +103,7 @@ "password-hash": "~1.2.2", "pg": "~8.8.0", "pg-connection-string": "~2.5.0", - "ping": "^0.4.2", + "ping": "~0.4.2", "prom-client": "~13.2.0", "prometheus-api-metrics": "~3.2.1", "protobufjs": "~7.1.1", From fc1914bccd802783a24a46ffb99b5004baf967f2 Mon Sep 17 00:00:00 2001 From: David Twigger Date: Thu, 5 Jan 2023 11:42:19 +0100 Subject: [PATCH 057/296] 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 fb96abe7..3a48b5ed 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 315d1e6c..ab477a7e 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 494c53971c449a125bbd1f2cbfbad25b5035b024 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Thu, 5 Jan 2023 19:22:15 +0800 Subject: [PATCH 058/296] Convert to UTF8 on Windows only --- server/util-server.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/server/util-server.js b/server/util-server.js index 3f55b3d7..99c9c932 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -26,6 +26,8 @@ const { } = require("node-radius-utils"); const dayjs = require("dayjs"); +const isWindows = process.platform === /^win/.test(process.platform); + /** * Init or reset JWT secret * @returns {Promise} @@ -106,7 +108,11 @@ exports.pingAsync = function (hostname, ipv6 = false) { if (res.alive) { resolve(res.time); } else { - reject(new Error(exports.convertToUTF8(res.output))); + if (isWindows) { + reject(new Error(exports.convertToUTF8(res.output))); + } else { + reject(new Error(res.output)); + } } }).catch((err) => { reject(err); From 7d9235156872c290c309bc3c07cc8ee21df455fc Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Thu, 5 Jan 2023 19:30:55 +0800 Subject: [PATCH 059/296] Match previous settings --- server/util-server.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/util-server.js b/server/util-server.js index 99c9c932..6b9ed339 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -102,7 +102,8 @@ exports.pingAsync = function (hostname, ipv6 = false) { return new Promise((resolve, reject) => { ping.promise.probe(hostname, { v6: ipv6, - min_reply: 3 + min_reply: 1, + timeout: 10000, }).then((res) => { // If ping failed, it will set field to unknown if (res.alive) { From 4c5e2ea237fa485cfbcdee8d49a9d47a29bb500b Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Thu, 5 Jan 2023 20:03:28 +0800 Subject: [PATCH 060/296] Update CONTRIBUTING.md --- CONTRIBUTING.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 12fd6ed4..a1a4a982 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -48,6 +48,7 @@ Here are some references: - UI/UX is not close to Uptime Kuma - Existing logic is completely modified or deleted for no reason - A function that is completely out of scope +- Convert existing code into other programming languages - Unnecessary large code changes (Hard to review, causes code conflicts to other pull requests) I will mark your pull request in the [milestones](https://github.com/louislam/uptime-kuma/milestones), if I am plan to review and merge it. From 0b959514f880f8e9dc6953375961d05a86b8fe36 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Thu, 5 Jan 2023 20:38:37 +0800 Subject: [PATCH 061/296] Fix timeout --- 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 6b9ed339..4a30017a 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -103,7 +103,7 @@ exports.pingAsync = function (hostname, ipv6 = false) { ping.promise.probe(hostname, { v6: ipv6, min_reply: 1, - timeout: 10000, + timeout: 10, }).then((res) => { // If ping failed, it will set field to unknown if (res.alive) { From 4ebf5a5f0736f648b87db0bf0c2fcfe250258671 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Thu, 5 Jan 2023 21:03:28 +0800 Subject: [PATCH 062/296] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9b810015..1f26da8b 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name upti ⚠️ Please use a **local volume** only. Other types such as NFS are not supported. -Kuma is now running on http://localhost:3001 +Uptime Kuma is now running on http://localhost:3001 ### 💪🏻 Non-Docker @@ -73,7 +73,7 @@ pm2 start server/server.js --name uptime-kuma ``` -Kuma is now running on http://localhost:3001 +Uptime Kuma is now running on http://localhost:3001 More useful PM2 Commands From 5362aab0e5648a942314fcf468c3e9f127e958fd Mon Sep 17 00:00:00 2001 From: David Twigger Date: Thu, 5 Jan 2023 14:06:13 +0100 Subject: [PATCH 063/296] 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 ab477a7e..302ec6fd 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 064/296] 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 302ec6fd..13e0be54 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 065/296] 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 13e0be54..124c9660 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 99038c8d..4b8f1624 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 066/296] 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 00000000..e82f24fe --- /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 7e88d126..364d9436 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 ebe305f9..e233af9e 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 2544f197..1ab1f441 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 9f8c8300..76a18520 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 4a30017a..f3d01b10 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 c9d5ad2f..6ae204ba 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -60,6 +60,9 @@ +

@@ -267,7 +270,13 @@ - + +
From fc5ec5f49249b79daf65caafc148cfa1e44683e2 Mon Sep 17 00:00:00 2001 From: Matthew Nickson Date: Thu, 5 Jan 2023 19:24:29 +0000 Subject: [PATCH 067/296] Fixed styling of clear data dropdown Fixed #2419 Signed-off-by: Matthew Nickson --- src/pages/Details.vue | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/pages/Details.vue b/src/pages/Details.vue index 6d6a8dd9..8325caa4 100644 --- a/src/pages/Details.vue +++ b/src/pages/Details.vue @@ -473,6 +473,12 @@ table { .dropdown-clear-data { float: right; + + ul { + width: 100%; + min-width: unset; + padding-left: 0; + } } .dark { From c7eb72e73b09ddf7f02f355086cbdbe29ceb66c3 Mon Sep 17 00:00:00 2001 From: Matthew Nickson Date: Thu, 5 Jan 2023 19:57:28 +0000 Subject: [PATCH 068/296] 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 df2cb40a..7abac5ef 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 41519b7c..74b9bad2 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 0f3f6346..f88c43fc 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 8036a456..16898331 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 376dbdd0..a6946dcb 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 238d2772..b970a380 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 d5c2ee5c..246e1c1c 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 65b7e7b0..880bc556 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 069/296] 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 3ce1a604..fd19b0e4 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 30136791..cc067f72 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 f9c7f86e..66a27606 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 d9be3427..45db63d1 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 2babe6bc..77643c2c 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 9f8c8300..e6332b8f 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 fbf99f80..d631c8e6 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 1473ab7a..aeba95f8 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 1347968f..d88a9cbf 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 06237562..14712176 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 070/296] 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 50ffa49c..fc9aea49 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 9daf31ac..723bd1be 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 330fe9ca..7d13ea90 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 4fa2fa83..5a282ad0 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 378af06a..0121eb15 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 d668d1ad..f0d87fe5 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 04c21691..0cf9283d 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 dd36c950..aaffbbf9 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 09e6d0ee..6b8f8f37 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 99038c8d..e8a2706e 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 7ad4392529160fc7dc10b1cad5026330baabda4a Mon Sep 17 00:00:00 2001 From: MrEddX <66828538+MrEddX@users.noreply.github.com> Date: Fri, 6 Jan 2023 09:00:45 +0200 Subject: [PATCH 071/296] Update bg-BG.js Translation Updated --- src/languages/bg-BG.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/languages/bg-BG.js b/src/languages/bg-BG.js index dfd11c67..d8a789f3 100644 --- a/src/languages/bg-BG.js +++ b/src/languages/bg-BG.js @@ -669,4 +669,10 @@ export default { "General Monitor Type": "Общ тип монитор", "Passive Monitor Type": "Пасивет тип монитор", "Specific Monitor Type": "Специфичен тип монитор", + ZohoCliq: "ZohoCliq", + wayToGetZohoCliqURL: "Можете да научите как се създава URL адрес за уеб кука {0}.", + Kook: "Kook", + wayToGetKookBotToken: "Създайте приложение и вземете вашия бот токен на {0}", + wayToGetKookGuildID: "Превключете в 'Developer Mode' в 'Kook' настройките, след което десен клик върху 'guild' за да вземете неговото 'ID'", + "Guild ID": "Guild ID", }; From e490ec6d29a88a10979656a877fb4a7e3eeda2ee Mon Sep 17 00:00:00 2001 From: David Twigger Date: Fri, 6 Jan 2023 11:00:20 +0100 Subject: [PATCH 072/296] 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 124c9660..2ab9acc7 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 3323f327..23b4ec95 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 4b8f1624..99038c8d 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 073/296] 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 14712176..faffb98b 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 074/296] 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 880bc556..f551db41 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 5d6770c0db4de6365b33c038aa880f9e2b85f264 Mon Sep 17 00:00:00 2001 From: Matthew Nickson Date: Fri, 6 Jan 2023 20:12:21 +0000 Subject: [PATCH 075/296] Removed excess space around function Signed-off-by: Matthew Nickson --- 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 69719d2f..d4001c00 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -82,7 +82,7 @@ exports.tcping = function (hostname, port) { */ exports.ping = async (hostname, size = 56) => { try { - return await exports.pingAsync(hostname, false, size ); + return await exports.pingAsync(hostname, false, size); } catch (e) { // If the host cannot be resolved, try again with ipv6 if (e.message.includes("service not known")) { From d6c91869af6ea265ff711153fb3afe3a8a685731 Mon Sep 17 00:00:00 2001 From: Matthew Nickson Date: Fri, 6 Jan 2023 20:15:16 +0000 Subject: [PATCH 076/296] Reverted changes to en.js Some changes were carried over in the merge Signed-off-by: Matthew Nickson --- src/languages/en.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/languages/en.js b/src/languages/en.js index 50b759a1..8ae4064d 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -590,9 +590,9 @@ export default { "Docker Host": "Docker Host", "Docker Hosts": "Docker Hosts", "ntfy Topic": "ntfy Topic", - "Domain": "Domain", - "Workstation": "Workstation", - disableCloudflaredNoAuthMsg: "You are in No Auth mode, password is not require.", + Domain: "Domain", + Workstation: "Workstation", + disableCloudflaredNoAuthMsg: "You are in No Auth mode, a password is not required.", "Packet Size": "Packet Size", 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}", From e8e4361e0940437a8ba858fa317aeb1af634d922 Mon Sep 17 00:00:00 2001 From: DimitriDR Date: Sat, 7 Jan 2023 13:10:25 +0100 Subject: [PATCH 077/296] 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 aeb84731..6a6323a9 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 221d1d40f57fbd21fab63dceb8e850e337f2ea0e Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Sun, 8 Jan 2023 00:32:13 +0800 Subject: [PATCH 078/296] Update CONTRIBUTING.md --- CONTRIBUTING.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a1a4a982..05987537 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -27,7 +27,7 @@ The frontend code build into "dist" directory. The server (express.js) exposes t ## Can I create a pull request for Uptime Kuma? -Yes or no, it depends on what you will try to do. Since I don't want to waste your time, be sure to **create an empty draft pull request or open an issue, so we can discuss first**. Especially for a large pull request or you don't know it will be merged or not. +Yes or no, it depends on what you will try to do. Since I don't want to waste your time, be sure to **create an empty draft pull request or open an issue, so we can have a discussion first**. Especially for a large pull request or you don't know it will be merged or not. Here are some references: @@ -51,6 +51,10 @@ Here are some references: - Convert existing code into other programming languages - Unnecessary large code changes (Hard to review, causes code conflicts to other pull requests) +The above cases cannot cover all situations. + +I (@louislam) have the final say. If your pull request does not meet my expectations, I will reject it, no matter how much time you spend on it. Therefore, it is essential to have a discussion beforehand. + I will mark your pull request in the [milestones](https://github.com/louislam/uptime-kuma/milestones), if I am plan to review and merge it. Also, please don't rush or ask for ETA, because I have to understand the pull request, make sure it is no breaking changes and stick to my vision of this project, especially for large pull requests. From 23a525e36a0dc3a9904ca227c60a2ea323b48407 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Sun, 8 Jan 2023 00:42:15 +0800 Subject: [PATCH 079/296] Update CONTRIBUTING.md --- CONTRIBUTING.md | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 05987537..5cfa93e2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Project Info -First of all, thank you everyone who made pull requests for Uptime Kuma, I never thought GitHub Community can be that nice! And also because of this, I also never thought other people actually read my code and edit my code. It is not structured and commented so well, lol. Sorry about that. +First of all, I want to thank everyone who made pull requests for Uptime Kuma. I never thought the GitHub Community would be so nice! Because of this, I also never thought that other people would actually read and edit my code. It is not very well structured or commented, sorry about that. The project was created with vite.js (vue3). Then I created a subdirectory called "server" for server part. Both frontend and backend share the same package.json. @@ -77,9 +77,9 @@ Before deep into coding, discussion first is preferred. Creating an empty pull r ## Project Styles -I personally do not like something need to learn so much and need to config so much before you can finally start the app. +I personally do not like it when something requires so much learning and configuration before you can finally start the app. -- Easy to install for non-Docker users, no native build dependency is needed (at least for x86_64), no extra config, no extra effort to get it run +- Easy to install for non-Docker users, no native build dependency is needed (at least for x86_64), no extra config, no extra effort required to get it running - Single container for Docker users, no very complex docker-compose file. Just map the volume and expose the port, then good to go - Settings should be configurable in the frontend. Environment variable is not encouraged, unless it is related to startup such as `DATA_DIR`. - Easy to use @@ -177,15 +177,11 @@ The data and socket logic are in `src/mixins/socket.js`. ## Unit Test -It is an end-to-end testing. It is using Jest and Puppeteer. - ```bash npm run build npm test ``` -By default, the Chromium window will be shown up during the test. Specifying `HEADLESS_TEST=1` for terminal environments. - ## Dependencies Both frontend and backend share the same package.json. However, the frontend dependencies are eventually not used in the production environment, because it is usually also baked into dist files. So: From 774d754b213e88e03cfa07e3e2b71b1d53662a00 Mon Sep 17 00:00:00 2001 From: Adam Spurgeon Date: Sun, 8 Jan 2023 21:22:36 +1300 Subject: [PATCH 080/296] Add GameDig monitor --- db/patch-add-gamedig-monitor.sql | 5 + package-lock.json | 756 ++++++++++++++++++++++++++++++- package.json | 1 + server/database.js | 1 + server/model/monitor.js | 16 + server/server.js | 1 + src/pages/EditMonitor.vue | 14 +- 7 files changed, 784 insertions(+), 10 deletions(-) create mode 100644 db/patch-add-gamedig-monitor.sql diff --git a/db/patch-add-gamedig-monitor.sql b/db/patch-add-gamedig-monitor.sql new file mode 100644 index 00000000..061bed30 --- /dev/null +++ b/db/patch-add-gamedig-monitor.sql @@ -0,0 +1,5 @@ +BEGIN TRANSACTION; + + ALTER TABLE monitor + ADD game VARCHAR(255); + COMMIT diff --git a/package-lock.json b/package-lock.json index 7e88d126..1c194e6b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,6 +30,7 @@ "express-basic-auth": "~1.2.1", "express-static-gzip": "~2.1.7", "form-data": "~4.0.0", + "gamedig": "^4.0.5", "http-graceful-shutdown": "~3.1.7", "http-proxy-agent": "~5.0.0", "https-proxy-agent": "~5.0.1", @@ -3463,6 +3464,17 @@ "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", "dev": true }, + "node_modules/@sindresorhus/is": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz", + "integrity": "sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, "node_modules/@sinonjs/commons": { "version": "1.8.6", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", @@ -3486,6 +3498,17 @@ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" }, + "node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, "node_modules/@tediousjs/connection-string": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@tediousjs/connection-string/-/connection-string-0.3.0.tgz", @@ -3646,6 +3669,11 @@ "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==" }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" + }, "node_modules/@types/http-errors": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", @@ -4226,6 +4254,14 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", + "engines": { + "node": ">=0.4.2" + } + }, "node_modules/anafanafo": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anafanafo/-/anafanafo-2.0.0.tgz", @@ -4278,6 +4314,11 @@ "node": ">=4" } }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -4713,6 +4754,35 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/barse": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/barse/-/barse-0.4.3.tgz", + "integrity": "sha512-UEpvriJqAn8zuVinYICuKoPttZy3XxXEoqX/V2uYAL4zzJRuNzCK3+20nAu3YUIa2U7G53kf90wfBIp9/A+Odw==", + "dependencies": { + "readable-stream": "~1.0.2" + } + }, + "node_modules/barse/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/barse/node_modules/readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/barse/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -5059,6 +5129,34 @@ "node": ">=10.6.0" } }, + "node_modules/cacheable-request": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.5.tgz", + "integrity": "sha512-5RwYYCfzjNPsyJxb/QpaM0bfzx+kw5/YpDhZPm9oMIDntHFQ9YXeyV47ZvzlTE0XrrrbyO2UITJH4GF9eRLdXQ==", + "dependencies": { + "@types/http-cache-semantics": "^4.0.1", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.0", + "keyv": "^4.5.2", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cachedir": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", @@ -5552,6 +5650,29 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/compressjs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/compressjs/-/compressjs-1.0.3.tgz", + "integrity": "sha512-jpKJjBTretQACTGLNuvnozP1JdP2ZLrjdGdBgk/tz1VfXlUcBhhSZW6vEsuThmeot/yjvSrPQKEgfF3X2Lpi8Q==", + "dependencies": { + "amdefine": "~1.0.0", + "commander": "~2.8.1" + }, + "bin": { + "compressjs": "bin/compressjs" + } + }, + "node_modules/compressjs/node_modules/commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha512-+pJLBFVk+9ZZdlAOB5WuIElVPPth47hILFkmGym57aq8kwxsowvByvB0DHs1vQAhyMZzdcpTtF0VDKGkSDR4ZQ==", + "dependencies": { + "graceful-readlink": ">= 1.0.0" + }, + "engines": { + "node": ">= 0.6.x" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -5813,8 +5934,7 @@ "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "devOptional": true + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" }, "node_modules/cors": { "version": "2.8.5", @@ -6277,6 +6397,31 @@ "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", "dev": true }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", @@ -6298,6 +6443,14 @@ "node": ">=0.10.0" } }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "engines": { + "node": ">=10" + } + }, "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -7653,6 +7806,12 @@ "node": ">= 0.6" } }, + "node_modules/event-to-promise": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/event-to-promise/-/event-to-promise-0.7.0.tgz", + "integrity": "sha512-VOBBfyaADfe378ZzG0tgkzmsvzUyeU5arehrFzNRt5yaASUDshgctTwSrPI17ocAwR3+YftsxRClHF+GBKFByQ==", + "deprecated": "Use promise-toolbox/fromEvent instead" + }, "node_modules/eventemitter2": { "version": "6.4.7", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", @@ -8130,6 +8289,14 @@ "node": ">= 6" } }, + "node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "engines": { + "node": ">= 14.17" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -8277,6 +8444,33 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/gamedig": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/gamedig/-/gamedig-4.0.5.tgz", + "integrity": "sha512-ROwljeTH8fcF44wi+NfTBdYSmiwtI5f1CJyGUx1DGVDvx7w2bfTxYSwR8FFFLCpNr78mtSwhsBONz1WZ5ucVig==", + "dependencies": { + "cheerio": "^1.0.0-rc.10", + "compressjs": "^1.0.2", + "gbxremote": "^0.2.1", + "got": "^12.0.3", + "iconv-lite": "^0.6.3", + "long": "^5.2.0", + "minimist": "^1.2.6", + "punycode": "^2.1.1", + "varint": "^6.0.0" + }, + "bin": { + "gamedig": "bin/gamedig.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/gamedig/node_modules/long": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", + "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==" + }, "node_modules/gauge": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", @@ -8296,6 +8490,21 @@ "node": ">=10" } }, + "node_modules/gbxremote": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/gbxremote/-/gbxremote-0.2.1.tgz", + "integrity": "sha512-SMehu6Y6ndq2Qgp9VxAb8Np3f+UUD+RWoW2SAMaxzGS96rWXyr4T1GGkecO0HHtxeH1m7pEh4FJWB8a/6aM2XQ==", + "dependencies": { + "any-promise": "^1.1.0", + "barse": "~0.4.2", + "event-to-promise": "^0.7.0", + "string-to-stream": "^1.0.1", + "xmlrpc": "^1.3.1" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/generate-function": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", @@ -8558,12 +8767,60 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/got": { + "version": "12.5.3", + "resolved": "https://registry.npmjs.org/got/-/got-12.5.3.tgz", + "integrity": "sha512-8wKnb9MGU8IPGRIo+/ukTy9XLJBwDiCpIf5TVzQ9Cpol50eMTpBq2GAuDsuDIz7hTYmZgMgC1e9ydr6kSDWs3w==", + "dependencies": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.1", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/got/node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/got/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "devOptional": true }, + "node_modules/graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==" + }, "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -8758,6 +9015,11 @@ "entities": "^4.3.0" } }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, "node_modules/http-errors": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", @@ -8811,6 +9073,29 @@ "node": ">=0.10" } }, + "node_modules/http2-wrapper": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/http2-wrapper/node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -9415,8 +9700,7 @@ "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "devOptional": true + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "node_modules/isemail": { "version": "3.2.0", @@ -11495,6 +11779,11 @@ "node": ">=6" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -11638,6 +11927,14 @@ "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" }, + "node_modules/keyv": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -12129,6 +12426,17 @@ "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" }, + "node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -12327,6 +12635,17 @@ "node": ">=6" } }, + "node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", @@ -12973,6 +13292,17 @@ "integrity": "sha512-dxvWdI8gw6eAvk9BlPffgEoGfM7AdijoCwOEJge3e3ulT2XLgmU7KvvxprOaCu05Q1uGRHmOhHe1r6emZoKyFw==", "dev": true }, + "node_modules/normalize-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/notp": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/notp/-/notp-2.0.3.tgz", @@ -13175,6 +13505,14 @@ "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", "dev": true }, + "node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "engines": { + "node": ">=12.20" + } + }, "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -14531,6 +14869,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, "node_modules/resolve-cwd": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", @@ -14570,6 +14913,20 @@ "node": ">=10" } }, + "node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -14860,6 +15217,11 @@ "node": ">=8.9.0" } }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, "node_modules/saxes": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", @@ -15354,6 +15716,37 @@ "node": ">=10" } }, + "node_modules/string-to-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string-to-stream/-/string-to-stream-1.1.1.tgz", + "integrity": "sha512-QySF2+3Rwq0SdO3s7BAp4x+c3qsClpPQ6abAmb0DGViiSBAkT5kL6JT2iyzEVP+T1SmzHrQD1TwlP9QAHCc+Sw==", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.1.0" + } + }, + "node_modules/string-to-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/string-to-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -16342,6 +16735,11 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/varint": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==" + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -17130,6 +17528,14 @@ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", "dev": true }, + "node_modules/xmlbuilder": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", + "integrity": "sha512-eKRAFz04jghooy8muekqzo8uCSVNeyRedbuJrp0fovbLIi7wlsYtdUn3vBAAPq2Y3/0xMz2WMEUQ8yhVVO9Stw==", + "engines": { + "node": ">=4.0" + } + }, "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", @@ -17144,6 +17550,19 @@ "node": ">=0.4.0" } }, + "node_modules/xmlrpc": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/xmlrpc/-/xmlrpc-1.3.2.tgz", + "integrity": "sha512-jQf5gbrP6wvzN71fgkcPPkF4bF/Wyovd7Xdff8d6/ihxYmgETQYSuTc+Hl+tsh/jmgPLro/Aro48LMFlIyEKKQ==", + "dependencies": { + "sax": "1.2.x", + "xmlbuilder": "8.2.x" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.0.0" + } + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -19724,6 +20143,11 @@ "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", "dev": true }, + "@sindresorhus/is": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz", + "integrity": "sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==" + }, "@sinonjs/commons": { "version": "1.8.6", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", @@ -19747,6 +20171,14 @@ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" }, + "@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "requires": { + "defer-to-connect": "^2.0.1" + } + }, "@tediousjs/connection-string": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@tediousjs/connection-string/-/connection-string-0.3.0.tgz", @@ -19904,6 +20336,11 @@ "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==" }, + "@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" + }, "@types/http-errors": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", @@ -20437,6 +20874,11 @@ "uri-js": "^4.2.2" } }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==" + }, "anafanafo": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anafanafo/-/anafanafo-2.0.0.tgz", @@ -20474,6 +20916,11 @@ "color-convert": "^1.9.0" } }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, "anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -20817,6 +21264,37 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "barse": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/barse/-/barse-0.4.3.tgz", + "integrity": "sha512-UEpvriJqAn8zuVinYICuKoPttZy3XxXEoqX/V2uYAL4zzJRuNzCK3+20nAu3YUIa2U7G53kf90wfBIp9/A+Odw==", + "requires": { + "readable-stream": "~1.0.2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + } + } + }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -21072,6 +21550,27 @@ "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.0.4.tgz", "integrity": "sha512-mbcDEZCkv2CZF4G01kr8eBd/5agkt9oCqz75tJMSIsquvRZ2sL6Hi5zGVKi/0OSC9oO1GHfJ2AV0ZIOY9vye0A==" }, + "cacheable-request": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.5.tgz", + "integrity": "sha512-5RwYYCfzjNPsyJxb/QpaM0bfzx+kw5/YpDhZPm9oMIDntHFQ9YXeyV47ZvzlTE0XrrrbyO2UITJH4GF9eRLdXQ==", + "requires": { + "@types/http-cache-semantics": "^4.0.1", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.0", + "keyv": "^4.5.2", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "dependencies": { + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + } + } + }, "cachedir": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", @@ -21447,6 +21946,25 @@ } } }, + "compressjs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/compressjs/-/compressjs-1.0.3.tgz", + "integrity": "sha512-jpKJjBTretQACTGLNuvnozP1JdP2ZLrjdGdBgk/tz1VfXlUcBhhSZW6vEsuThmeot/yjvSrPQKEgfF3X2Lpi8Q==", + "requires": { + "amdefine": "~1.0.0", + "commander": "~2.8.1" + }, + "dependencies": { + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha512-+pJLBFVk+9ZZdlAOB5WuIElVPPth47hILFkmGym57aq8kwxsowvByvB0DHs1vQAhyMZzdcpTtF0VDKGkSDR4ZQ==", + "requires": { + "graceful-readlink": ">= 1.0.0" + } + } + } + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -21633,8 +22151,7 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "devOptional": true + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" }, "cors": { "version": "2.8.5", @@ -21994,6 +22511,21 @@ "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", "dev": true }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "requires": { + "mimic-response": "^3.1.0" + }, + "dependencies": { + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + } + } + }, "dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", @@ -22012,6 +22544,11 @@ "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", "dev": true }, + "defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" + }, "define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -22903,6 +23440,11 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" }, + "event-to-promise": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/event-to-promise/-/event-to-promise-0.7.0.tgz", + "integrity": "sha512-VOBBfyaADfe378ZzG0tgkzmsvzUyeU5arehrFzNRt5yaASUDshgctTwSrPI17ocAwR3+YftsxRClHF+GBKFByQ==" + }, "eventemitter2": { "version": "6.4.7", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", @@ -23278,6 +23820,11 @@ "mime-types": "^2.1.12" } }, + "form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==" + }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -23398,6 +23945,29 @@ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" }, + "gamedig": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/gamedig/-/gamedig-4.0.5.tgz", + "integrity": "sha512-ROwljeTH8fcF44wi+NfTBdYSmiwtI5f1CJyGUx1DGVDvx7w2bfTxYSwR8FFFLCpNr78mtSwhsBONz1WZ5ucVig==", + "requires": { + "cheerio": "^1.0.0-rc.10", + "compressjs": "^1.0.2", + "gbxremote": "^0.2.1", + "got": "^12.0.3", + "iconv-lite": "^0.6.3", + "long": "^5.2.0", + "minimist": "^1.2.6", + "punycode": "^2.1.1", + "varint": "^6.0.0" + }, + "dependencies": { + "long": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", + "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==" + } + } + }, "gauge": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", @@ -23414,6 +23984,18 @@ "wide-align": "^1.1.2" } }, + "gbxremote": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/gbxremote/-/gbxremote-0.2.1.tgz", + "integrity": "sha512-SMehu6Y6ndq2Qgp9VxAb8Np3f+UUD+RWoW2SAMaxzGS96rWXyr4T1GGkecO0HHtxeH1m7pEh4FJWB8a/6aM2XQ==", + "requires": { + "any-promise": "^1.1.0", + "barse": "~0.4.2", + "event-to-promise": "^0.7.0", + "string-to-stream": "^1.0.1", + "xmlrpc": "^1.3.1" + } + }, "generate-function": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", @@ -23606,12 +24188,47 @@ "get-intrinsic": "^1.1.3" } }, + "got": { + "version": "12.5.3", + "resolved": "https://registry.npmjs.org/got/-/got-12.5.3.tgz", + "integrity": "sha512-8wKnb9MGU8IPGRIo+/ukTy9XLJBwDiCpIf5TVzQ9Cpol50eMTpBq2GAuDsuDIz7hTYmZgMgC1e9ydr6kSDWs3w==", + "requires": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.1", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "dependencies": { + "cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==" + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + } + } + }, "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "devOptional": true }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==" + }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -23751,6 +24368,11 @@ "entities": "^4.3.0" } }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, "http-errors": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", @@ -23792,6 +24414,22 @@ "sshpk": "^1.14.1" } }, + "http2-wrapper": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "dependencies": { + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + } + } + }, "https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -24198,8 +24836,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "devOptional": true + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "isemail": { "version": "3.2.0", @@ -25760,6 +26397,11 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==" }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, "json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -25881,6 +26523,14 @@ "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" }, + "keyv": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "requires": { + "json-buffer": "3.0.1" + } + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -26258,6 +26908,11 @@ "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" }, + "lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==" + }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -26400,6 +27055,11 @@ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, + "mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==" + }, "min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", @@ -26934,6 +27594,11 @@ "integrity": "sha512-dxvWdI8gw6eAvk9BlPffgEoGfM7AdijoCwOEJge3e3ulT2XLgmU7KvvxprOaCu05Q1uGRHmOhHe1r6emZoKyFw==", "dev": true }, + "normalize-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==" + }, "notp": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/notp/-/notp-2.0.3.tgz", @@ -27085,6 +27750,11 @@ "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", "dev": true }, + "p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==" + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -28099,6 +28769,11 @@ "supports-preserve-symlinks-flag": "^1.0.0" } }, + "resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, "resolve-cwd": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", @@ -28128,6 +28803,14 @@ "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", "dev": true }, + "responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "requires": { + "lowercase-keys": "^3.0.0" + } + }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -28327,6 +29010,11 @@ "chokidar": ">=3.0.0 <4.0.0" } }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, "saxes": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", @@ -28721,6 +29409,39 @@ "strip-ansi": "^6.0.0" } }, + "string-to-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string-to-stream/-/string-to-stream-1.1.1.tgz", + "integrity": "sha512-QySF2+3Rwq0SdO3s7BAp4x+c3qsClpPQ6abAmb0DGViiSBAkT5kL6JT2iyzEVP+T1SmzHrQD1TwlP9QAHCc+Sw==", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -29485,6 +30206,11 @@ "spdx-expression-parse": "^3.0.0" } }, + "varint": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==" + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -30064,6 +30790,11 @@ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", "dev": true }, + "xmlbuilder": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", + "integrity": "sha512-eKRAFz04jghooy8muekqzo8uCSVNeyRedbuJrp0fovbLIi7wlsYtdUn3vBAAPq2Y3/0xMz2WMEUQ8yhVVO9Stw==" + }, "xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", @@ -30075,6 +30806,15 @@ "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==" }, + "xmlrpc": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/xmlrpc/-/xmlrpc-1.3.2.tgz", + "integrity": "sha512-jQf5gbrP6wvzN71fgkcPPkF4bF/Wyovd7Xdff8d6/ihxYmgETQYSuTc+Hl+tsh/jmgPLro/Aro48LMFlIyEKKQ==", + "requires": { + "sax": "1.2.x", + "xmlbuilder": "8.2.x" + } + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/package.json b/package.json index ebe305f9..e51fd30e 100644 --- a/package.json +++ b/package.json @@ -85,6 +85,7 @@ "express-basic-auth": "~1.2.1", "express-static-gzip": "~2.1.7", "form-data": "~4.0.0", + "gamedig": "^4.0.5", "http-graceful-shutdown": "~3.1.7", "http-proxy-agent": "~5.0.0", "https-proxy-agent": "~5.0.1", diff --git a/server/database.js b/server/database.js index 2544f197..3b4b88f9 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-add-gamedig-monitor.sql": true, }; /** diff --git a/server/model/monitor.js b/server/model/monitor.js index 9f8c8300..f541a62b 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -16,6 +16,7 @@ const { CacheableDnsHttpAgent } = require("../cacheable-dns-http-agent"); const { DockerHost } = require("../docker"); const Maintenance = require("./maintenance"); const { UptimeCacheList } = require("../uptime-cache-list"); +const Gamedig = require("gamedig"); /** * status: @@ -107,6 +108,7 @@ class Monitor extends BeanModel { grpcEnableTls: this.getGrpcEnableTls(), radiusCalledStationId: this.radiusCalledStationId, radiusCallingStationId: this.radiusCallingStationId, + game: this.game, }; if (includeSensitiveData) { @@ -487,6 +489,20 @@ class Monitor extends BeanModel { } else { throw new Error("Server not found on Steam"); } + } else if (this.type === "gamedig") { + try { + const state = await Gamedig.query({ + type: this.game, + host: this.hostname, + port: this.port + }); + + bean.msg = state.name; + bean.status = UP; + bean.ping = state.ping; + } catch (e) { + throw new Error("Server is offline"); + } } else if (this.type === "docker") { log.debug(`[${this.name}] Prepare Options for Axios`); diff --git a/server/server.js b/server/server.js index 5473cecd..26e16c2d 100644 --- a/server/server.js +++ b/server/server.js @@ -689,6 +689,7 @@ let needSetup = false; bean.retryInterval = monitor.retryInterval; bean.resendInterval = monitor.resendInterval; bean.hostname = monitor.hostname; + bean.game = monitor.game; bean.maxretries = monitor.maxretries; bean.port = parseInt(monitor.port); bean.keyword = monitor.keyword; diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index c9d5ad2f..3bb022ed 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -45,6 +45,9 @@ + @@ -101,16 +104,23 @@
+ + +
+ + +
+ -
+
-
+
From dd82f36da3fa3b2852bd470e3f62374f27e8d8e2 Mon Sep 17 00:00:00 2001 From: Nelson Chan Date: Mon, 9 Jan 2023 00:16:18 +0800 Subject: [PATCH 081/296] Fix: Improve syntax & fix weird label logic --- server/routers/api-router.js | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/server/routers/api-router.js b/server/routers/api-router.js index 45236d20..41608a04 100644 --- a/server/routers/api-router.js +++ b/server/routers/api-router.js @@ -143,36 +143,23 @@ router.get("/api/badge/:id/status", cache("5 minutes"), async (request, response const heartbeat = await Monitor.getPreviousHeartbeat(requestedMonitorId); const state = overrideValue !== undefined ? overrideValue : heartbeat.status; - badgeValues.label = label ? label : ""; + badgeValues.label = label ?? ""; switch (state) { case 1: badgeValues.color = upColor; + badgeValues.message = upLabel; break; case 3: badgeValues.color = maintenanceColor; + badgeValues.message = maintenanceLabel; break; case 0: badgeValues.color = downColor; + badgeValues.message = downLabel; break; default: badgeValues.color = badgeConstants.naColor; - } - if (label !== undefined) { - badgeValues.message = label; - } else { - switch (state) { - case 1: - badgeValues.message = upLabel; - break; - case 3: - badgeValues.message = maintenanceLabel; - break; - case 0: - badgeValues.message = downLabel; - break; - default: - badgeValues.message = "N/A"; - } + badgeValues.message = "N/A"; } } From f8658d6160e280827fe6f35b6cc825bd771b73f5 Mon Sep 17 00:00:00 2001 From: SlothCroissant Date: Thu, 5 Jan 2023 10:53:41 -0600 Subject: [PATCH 082/296] 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 ebcb88c4..bafde56e 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 083/296] 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 0ec5ffa5..ed80b0f7 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 c78c6aaf..afcb7bc9 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 8481fdfe..b302cd20 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 00000000..347a6ef2 --- /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 7a48d0d0..d3588321 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 f2dd3475..f5d32e0e 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 38048826..b5b46c30 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 3323f327..3ff751ff 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 106/296] 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 50ffa49c..193b3012 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 107/296] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1f26da8b..b1a0928c 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 108/296] 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 e82f24fe..00000000 --- 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 1ab1f441..2544f197 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 76a18520..db1bca81 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 6ae204ba..b54b0a20 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 109/296] 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 f3d01b10..c443f859 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 110/296] 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 c443f859..8e1c33cb 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 111/296] 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 99ae9ef0..3396e97b 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 112/296] 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 182efcbf..2f6afbed 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 113/296] 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 3fed4f5b..fbfcebe6 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 8093bec5..b87eb0e2 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 114/296] 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 60d8baac..f66b1039 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 115/296] 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 a03e3956..c510233e 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 b3d1a656..276c4382 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 a28b99ad..a0ed03d7 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 116/296] 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 aff60c75..0a6874b6 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 00000000..2c4ce95f --- /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 00000000..4df2650e --- /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 00000000..9cd1a463 --- /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 00000000..c3e4d3d5 --- /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 00000000..e4472111 --- /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 00000000..c77d6158 --- /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 00000000..897b28f5 --- /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 00000000..9a40ee8b --- /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 00000000..f7a23a6c --- /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 00000000..9d667a58 --- /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 00000000..fc099bc4 --- /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 00000000..9da84bda --- /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 00000000..c8219ff5 --- /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 00000000..417b689e --- /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 00000000..78036a1f --- /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 00000000..59a06521 --- /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 00000000..4b8a8675 --- /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 00000000..7b2b07fb --- /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 00000000..2cb2131c --- /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 00000000..7af81299 --- /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 00000000..f32d5094 --- /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 00000000..319a3175 --- /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 00000000..1f951407 --- /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 00000000..d8fc793e --- /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 00000000..0c214b13 --- /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 00000000..062413a8 --- /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 00000000..95bf03f9 --- /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 00000000..25f69add --- /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 00000000..233a91f2 --- /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 00000000..7ad132f5 --- /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 00000000..8428dcf9 --- /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 00000000..fcd678a3 --- /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 00000000..8b527cce --- /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 00000000..a75b73fb --- /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 00000000..0bc07786 --- /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 00000000..142ebf2d --- /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 aca95149..7e36d158 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 117/296] 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 9da84bda..04819c8a 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 118/296] 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 00000000..410c913c --- /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 00000000..3082d32e --- /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 00000000..81493aa3 --- /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 2c4ce95f..6390a351 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 4df2650e..bc43337b 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 9cd1a463..18177f6f 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 c3e4d3d5..b39814f9 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 e4472111..938ab195 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 c77d6158..cbd6497d 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 897b28f5..74829884 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 9a40ee8b..2a3ae446 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 f7a23a6c..53ef8abd 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 9d667a58..d5e3f91c 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 fc099bc4..3809ec33 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 04819c8a..fe7b605b 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 c8219ff5..469e1d4d 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 417b689e..698b1afd 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 78036a1f..17645dbb 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 59a06521..b0903155 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 4b8a8675..c4c719e0 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 7b2b07fb..42ae45ee 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 2cb2131c..c2d7b880 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 7af81299..b215abd1 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 f32d5094..e16519fe 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 319a3175..5dd163ed 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 1f951407..3164702a 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 d8fc793e..454d5b07 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 0c214b13..a70c50c4 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 062413a8..d1476285 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 95bf03f9..ff92748f 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 25f69add..fcdb3316 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 233a91f2..29a47756 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 7ad132f5..33268010 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 8428dcf9..85340255 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 fcd678a3..018c45c9 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 8b527cce..022b5053 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 a75b73fb..fcc4310f 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 0bc07786..f1933f27 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 142ebf2d..1c168412 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 119/296] 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 6390a351..63806675 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 74829884..ce07e068 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 fe7b605b..4a3feb63 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 120/296] 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 bc43337b..2e2e52f7 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 ce07e068..e919a537 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 121/296] 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 b38bef3c..6cc997bb 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 d8e96aa8..9069aef7 100644 --- a/src/layouts/Layout.vue +++ b/src/layouts/Layout.vue @@ -63,6 +63,12 @@ +
  • + + {{ $t("Help") }} + +
  • +
  • + + + +

    Message Thread ID: Optional Unique identifier for the target message thread (topic) of the forum; for forum supergroups only

    +
    {{ $t("supportTelegramChatID") }} From 4323dee7815559ff22ff191ef56639c686015926 Mon Sep 17 00:00:00 2001 From: Haytham Salama Date: Sat, 4 Feb 2023 22:54:19 +0200 Subject: [PATCH 208/296] feat: add message thread id to lang --- src/lang/ar-SY.json | 1 + src/lang/bg-BG.json | 1 + src/lang/cs-CZ.json | 1 + src/lang/da-DK.json | 1 + src/lang/de-CH.json | 1 + src/lang/de-DE.json | 1 + src/lang/el-GR.json | 1 + src/lang/en.json | 1 + src/lang/nl-NL.json | 1 + src/lang/pl.json | 1 + src/lang/ru-RU.json | 1 + src/lang/sl-SI.json | 1 + src/lang/th-TH.json | 1 + src/lang/tr-TR.json | 1 + src/lang/uk-UA.json | 1 + src/lang/vi-VN.json | 1 + src/lang/zh-CN.json | 1 + src/lang/zh-HK.json | 1 + src/lang/zh-TW.json | 1 + 19 files changed, 19 insertions(+) diff --git a/src/lang/ar-SY.json b/src/lang/ar-SY.json index d852a690..98dacd5f 100644 --- a/src/lang/ar-SY.json +++ b/src/lang/ar-SY.json @@ -215,6 +215,7 @@ "Bot Token": "رمز الروبوت", "wayToGetTelegramToken": "يمكنك الحصول على رمز من {0}.", "Chat ID": "معرف الدردشة", + "Message Thread ID": "معرف المواضيع", "supportTelegramChatID": "دعم الدردشة المباشرة / معرف الدردشة للقناة", "wayToGetTelegramChatID": "يمكنك الحصول على معرف الدردشة الخاص بك عن طريق إرسال رسالة إلى الروبوت والانتقال إلى عنوان URL هذا لعرض Chat_id", "YOUR BOT TOKEN HERE": "رمز الروبوت الخاص بك هنا", diff --git a/src/lang/bg-BG.json b/src/lang/bg-BG.json index 3a5f532d..db81e21f 100644 --- a/src/lang/bg-BG.json +++ b/src/lang/bg-BG.json @@ -210,6 +210,7 @@ "Bot Token": "Бот токен", "wayToGetTelegramToken": "Можете да получите токен от {0}.", "Chat ID": "Чат ID", + "Message Thread ID": "Message Thread ID", "supportTelegramChatID": "Поддържа Direct Chat / Group / Channel's Chat ID", "wayToGetTelegramChatID": "Можете да получите вашето чат ID, като изпратите съобщение на бота, след което е нужно да посетите този URL адрес за да го видите:", "YOUR BOT TOKEN HERE": "ВАШИЯТ БОТ ТОКЕН ТУК", diff --git a/src/lang/cs-CZ.json b/src/lang/cs-CZ.json index c6b28312..6a0738da 100644 --- a/src/lang/cs-CZ.json +++ b/src/lang/cs-CZ.json @@ -215,6 +215,7 @@ "Bot Token": "Token robota", "wayToGetTelegramToken": "Token můžete získat od {0}.", "Chat ID": "ID chatu", + "Message Thread ID": "Message Thread ID", "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", diff --git a/src/lang/da-DK.json b/src/lang/da-DK.json index 679431c3..4cfc222c 100644 --- a/src/lang/da-DK.json +++ b/src/lang/da-DK.json @@ -208,6 +208,7 @@ "Bot Token": "Bot Token", "wayToGetTelegramToken": "Du kan få et token fra {0}.", "Chat ID": "Chat ID", + "Message Thread ID": "Message Thread 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", diff --git a/src/lang/de-CH.json b/src/lang/de-CH.json index 85da35e0..42cb3c9e 100644 --- a/src/lang/de-CH.json +++ b/src/lang/de-CH.json @@ -214,6 +214,7 @@ "Bot Token": "Bot Token", "wayToGetTelegramToken": "Hier kannst du einen Token erhalten {0}.", "Chat ID": "Chat ID", + "Message Thread ID": "Message Thread 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", diff --git a/src/lang/de-DE.json b/src/lang/de-DE.json index 45b5ae56..d4a023ec 100644 --- a/src/lang/de-DE.json +++ b/src/lang/de-DE.json @@ -214,6 +214,7 @@ "Bot Token": "Bot Token", "wayToGetTelegramToken": "Hier kannst du einen Token erhalten {0}.", "Chat ID": "Chat ID", + "Message Thread ID": "Message Thread 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", diff --git a/src/lang/el-GR.json b/src/lang/el-GR.json index c77d6158..7031290b 100644 --- a/src/lang/el-GR.json +++ b/src/lang/el-GR.json @@ -198,6 +198,7 @@ "Bot Token": "Διακριτικό Bot", "wayToGetTelegramToken": "Μπορείτε να πάρετε ένα διακριτικό από {0}.", "Chat ID": "Chat ID", + "Message Thread ID": "Message Thread ID", "supportTelegramChatID": "Support Direct Chat / Group / Channel's Chat ID", "wayToGetTelegramChatID": "Μπορείτε να λάβετε το αναγνωριστικό συνομιλίας σας στέλνοντας ένα μήνυμα στο bot και μεταβαίνοντας σε αυτήν τη διεύθυνση URL για να προβάλετε το chat_id:", "YOUR BOT TOKEN HERE": "ΤΟ BOT ΣΑΣ ΔΙΑΚΡΙΤΙΚΌ ΕΔΩ", diff --git a/src/lang/en.json b/src/lang/en.json index 8a195a2a..6e26612d 100644 --- a/src/lang/en.json +++ b/src/lang/en.json @@ -364,6 +364,7 @@ "Bot Token": "Bot Token", "wayToGetTelegramToken": "You can get a token from {0}.", "Chat ID": "Chat ID", + "Message Thread ID": "Message Thread 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", diff --git a/src/lang/nl-NL.json b/src/lang/nl-NL.json index 32c79545..e4c1da00 100644 --- a/src/lang/nl-NL.json +++ b/src/lang/nl-NL.json @@ -217,6 +217,7 @@ "Bot Token": "Bot Token", "wayToGetTelegramToken": "Je kunt een token krijgen van {0}.", "Chat ID": "Chat ID", + "Message Thread ID": "Message Thread 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", diff --git a/src/lang/pl.json b/src/lang/pl.json index ebc58797..50bb7fbf 100644 --- a/src/lang/pl.json +++ b/src/lang/pl.json @@ -189,6 +189,7 @@ "Bot Token": "Token bota", "wayToGetTelegramToken": "Token można uzyskać z {0}.", "Chat ID": "Identyfikator czatu", + "Message Thread ID": "Message Thread ID", "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", diff --git a/src/lang/ru-RU.json b/src/lang/ru-RU.json index 8395eedb..c38b6808 100644 --- a/src/lang/ru-RU.json +++ b/src/lang/ru-RU.json @@ -216,6 +216,7 @@ "Bot Token": "Токен бота", "wayToGetTelegramToken": "Вы можете взять токен здесь - {0}.", "Chat ID": "ID чата", + "Message Thread ID": "Message Thread ID", "supportTelegramChatID": "Поддерживаются ID чатов, групп и каналов", "wayToGetTelegramChatID": "Вы можете взять ID вашего чата, отправив сообщение боту и перейдя по этому URL для просмотра chat_id:", "YOUR BOT TOKEN HERE": "ВАШ ТОКЕН БОТА ЗДЕСЬ", diff --git a/src/lang/sl-SI.json b/src/lang/sl-SI.json index f4ca81bd..bf32cbed 100644 --- a/src/lang/sl-SI.json +++ b/src/lang/sl-SI.json @@ -193,6 +193,7 @@ "Bot Token": "Robotkov žetonček", "wayToGetTelegramToken": "Lahko dobiš žeton od {0}.", "Chat ID": "ID pogovora", + "Message Thread ID": "Message Thread ID", "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", diff --git a/src/lang/th-TH.json b/src/lang/th-TH.json index 7ad132f5..76c2afb3 100644 --- a/src/lang/th-TH.json +++ b/src/lang/th-TH.json @@ -194,6 +194,7 @@ "Bot Token": "กุญแจของบอท", "wayToGetTelegramToken": "คุณสามารถรับกุญแจได้จาก {0}.", "Chat ID": "ไอดีแชท", + "Message Thread ID": "Message Thread ID", "supportTelegramChatID": "รองรับ แชทส่วนตัว, แชทกลุ่ม, ไอดีแชท", "wayToGetTelegramChatID": "คุณสามารถรับ ID แชทของคุณได้โดยส่งข้อความไปยังบอทและไปที่ URL นี้เพื่อดู chat_id :", "YOUR BOT TOKEN HERE": "กุญแจของบอทของคุณที่นี่", diff --git a/src/lang/tr-TR.json b/src/lang/tr-TR.json index b9bc8adc..a9070df3 100644 --- a/src/lang/tr-TR.json +++ b/src/lang/tr-TR.json @@ -197,6 +197,7 @@ "Bot Token": "Bot Token", "wayToGetTelegramToken": "{0} adresinden bir token alabilirsiniz.", "Chat ID": "Chat ID", + "Message Thread ID": "Message Thread 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", diff --git a/src/lang/uk-UA.json b/src/lang/uk-UA.json index fcd678a3..9ad37b66 100644 --- a/src/lang/uk-UA.json +++ b/src/lang/uk-UA.json @@ -216,6 +216,7 @@ "Bot Token": "Токен бота", "wayToGetTelegramToken": "Ви можете взяти токен тут - {0}.", "Chat ID": "ID чату", + "Message Thread ID": "Message Thread ID", "supportTelegramChatID": "Підтримуються ID чатів, груп та каналів", "wayToGetTelegramChatID": "Ви можете взяти ID вашого чату, відправивши повідомлення боту і перейшовши по цьому URL для перегляду chat_id:", "YOUR BOT TOKEN HERE": "ВАШ ТОКЕН БОТА ТУТ", diff --git a/src/lang/vi-VN.json b/src/lang/vi-VN.json index 165bf1bb..4446a020 100644 --- a/src/lang/vi-VN.json +++ b/src/lang/vi-VN.json @@ -193,6 +193,7 @@ "Bot Token": "Bot Token", "wayToGetTelegramToken": "Bạn có thể lấy mã token từ", "Chat ID": "Chat ID", + "Message Thread ID": "Message Thread 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", diff --git a/src/lang/zh-CN.json b/src/lang/zh-CN.json index a3393bd1..f52fab92 100644 --- a/src/lang/zh-CN.json +++ b/src/lang/zh-CN.json @@ -213,6 +213,7 @@ "Bot Token": "机器人令牌", "wayToGetTelegramToken": "您可以从 {0} 获取 Token。", "Chat ID": "Chat ID", + "Message Thread ID": "Message Thread ID", "supportTelegramChatID": "支持对话/群组/频道的 Chat ID", "wayToGetTelegramChatID": "您可以发送一条消息给您的机器人,然后访问此链接来查看 chat_id:", "YOUR BOT TOKEN HERE": "这里替换成您的 BOT TOKEN", diff --git a/src/lang/zh-HK.json b/src/lang/zh-HK.json index 14f25b5e..3310c995 100644 --- a/src/lang/zh-HK.json +++ b/src/lang/zh-HK.json @@ -211,6 +211,7 @@ "Bot Token": "機器人權杖", "wayToGetTelegramToken": "您可以從 {0} 取得 Token。", "Chat ID": "聊天 ID", + "Message Thread ID": "Message Thread ID", "supportTelegramChatID": "支援 對話/群組/頻道的聊天 ID", "wayToGetTelegramChatID": "傳送訊息給機器人,並前往以下網址以取得您的 chat ID:", "YOUR BOT TOKEN HERE": "在此填入您的機器人權杖", diff --git a/src/lang/zh-TW.json b/src/lang/zh-TW.json index 5eb0a699..992a2a0d 100644 --- a/src/lang/zh-TW.json +++ b/src/lang/zh-TW.json @@ -212,6 +212,7 @@ "Bot Token": "機器人權杖", "wayToGetTelegramToken": "您可以從 {0} 取得權杖。", "Chat ID": "聊天 ID", + "Message Thread ID": "Message Thread ID", "supportTelegramChatID": "支援 對話/群組/頻道的聊天 ID", "wayToGetTelegramChatID": "傳送訊息給機器人,並前往以下網址以取得您的 chat ID:", "YOUR BOT TOKEN HERE": "在此填入您的機器人權杖", From c42e5503827b283ca2e76aee43f8029b1d371549 Mon Sep 17 00:00:00 2001 From: Haytham Salama Date: Sat, 4 Feb 2023 23:46:19 +0200 Subject: [PATCH 209/296] style: formats --- src/components/notifications/Telegram.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/notifications/Telegram.vue b/src/components/notifications/Telegram.vue index 3f446dc8..a1b74a8a 100644 --- a/src/components/notifications/Telegram.vue +++ b/src/components/notifications/Telegram.vue @@ -17,7 +17,6 @@
    -

    Message Thread ID: Optional Unique identifier for the target message thread (topic) of the forum; for forum supergroups only

    From 5fff63cd5979efc7445518627f37193df60104ac Mon Sep 17 00:00:00 2001 From: cyril59310 Date: Sun, 5 Feb 2023 01:07:20 +0100 Subject: [PATCH 210/296] add keys for translation --- src/lang/en.json | 5 ++++- src/pages/ManageMaintenance.vue | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/lang/en.json b/src/lang/en.json index 8a195a2a..d907f4e0 100644 --- a/src/lang/en.json +++ b/src/lang/en.json @@ -692,5 +692,8 @@ "PushDeer Key": "PushDeer Key", "wayToGetClickSendSMSToken": "You can get API Username and API Key from {0} .", "Custom Monitor Type": "Custom Monitor Type", - "Google Analytics ID": "Google Analytics ID" + "Google Analytics ID": "Google Analytics ID", + "Edit Tag": "Edit Tag", + "Server Address": "Server Address", + "Learn More": "Learn More" } diff --git a/src/pages/ManageMaintenance.vue b/src/pages/ManageMaintenance.vue index aaffbbf9..478927e8 100644 --- a/src/pages/ManageMaintenance.vue +++ b/src/pages/ManageMaintenance.vue @@ -62,7 +62,7 @@ From 271cca0d234914fc37a92088433b385ab05ac78e Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Mon, 6 Feb 2023 15:21:31 +0800 Subject: [PATCH 211/296] Add Romanian in the dropdown --- src/i18n.js | 1 + src/lang/ro.json | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 src/lang/ro.json diff --git a/src/i18n.js b/src/i18n.js index b6a7beee..f57408e4 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -38,6 +38,7 @@ const languageList = { "th-TH": "ไทย", "el-GR": "Ελληνικά", "yue": "繁體中文 (廣東話 / 粵語)", + "ro": "Limba română", }; let messages = { diff --git a/src/lang/ro.json b/src/lang/ro.json new file mode 100644 index 00000000..a659e0be --- /dev/null +++ b/src/lang/ro.json @@ -0,0 +1,3 @@ +{ + "languageName": "Limba română" +} From 0197778af12ba240aa0e1a29b660193410d45356 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Mon, 6 Feb 2023 22:35:56 +0800 Subject: [PATCH 212/296] Fix change language issue in the setup page --- src/pages/Setup.vue | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/pages/Setup.vue b/src/pages/Setup.vue index cba7f8fc..cd2d149c 100644 --- a/src/pages/Setup.vue +++ b/src/pages/Setup.vue @@ -14,7 +14,7 @@

    - @@ -59,9 +59,7 @@ export default { }; }, watch: { - "$i18n.locale"() { - localStorage.locale = this.$i18n.locale; - }, + }, mounted() { this.$root.getSocket().emit("needSetup", (needSetup) => { From e1f956879d4545e288ae5d769b4e876a441b265f Mon Sep 17 00:00:00 2001 From: Nelson Chan Date: Tue, 7 Feb 2023 05:01:53 +0800 Subject: [PATCH 213/296] Fix: Use .destroy() instead of .end() --- 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 a2f1aa46..edce2890 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -323,7 +323,7 @@ exports.mysqlQuery = function (connectionString, query) { reject(err); }) .finally(() => { - connection.end(); + connection.destroy(); }); }); }; From 36d160ad022706a4d4f29d22af7eb6c00df7c983 Mon Sep 17 00:00:00 2001 From: OidaTiftla Date: Thu, 9 Feb 2023 09:04:47 +0100 Subject: [PATCH 214/296] Rename "consequently" to "consecutively" as suggested by @skylarv https://github.com/louislam/uptime-kuma/pull/1212#issuecomment-1423373045 --- src/lang/ar-SY.json | 2 +- src/lang/bg-BG.json | 2 +- src/lang/cs-CZ.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/fr-FR.json | 2 +- src/lang/he-IL.json | 2 +- src/lang/hr-HR.json | 2 +- src/lang/id-ID.json | 2 +- src/lang/ko-KR.json | 2 +- src/lang/pl.json | 2 +- src/lang/pt-BR.json | 2 +- src/lang/th-TH.json | 2 +- src/lang/tr-TR.json | 2 +- src/lang/zh-CN.json | 2 +- src/lang/zh-HK.json | 2 +- src/lang/zh-TW.json | 2 +- src/pages/EditMonitor.vue | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/lang/ar-SY.json b/src/lang/ar-SY.json index d852a690..fe2910dd 100644 --- a/src/lang/ar-SY.json +++ b/src/lang/ar-SY.json @@ -90,7 +90,7 @@ "Heartbeat Interval": "فاصل نبضات القلب", "Retries": "يحاول مجدداً", "Heartbeat Retry Interval": "الفاصل الزمني لإعادة محاكمة نبضات القلب", - "Resend Notification if Down X times consequently": "إعادة تقديم الإخطار إذا انخفض x مرات بالتالي", + "Resend Notification if Down X times consecutively": "إعادة تقديم الإخطار إذا انخفض x مرات بالتالي", "Advanced": "متقدم", "Upside Down Mode": "وضع أسفل أسفل", "Max. Redirects": "الأعلى. إعادة التوجيه", diff --git a/src/lang/bg-BG.json b/src/lang/bg-BG.json index 3a5f532d..5bbebf9c 100644 --- a/src/lang/bg-BG.json +++ b/src/lang/bg-BG.json @@ -539,7 +539,7 @@ "wayToGetLineNotifyToken": "Може да получите токен код за достъп от {0}", "resendEveryXTimes": "Изпращай повторно на всеки {0} пъти", "resendDisabled": "Повторното изпращане е изключено", - "Resend Notification if Down X times consequently": "Повторно изпращане на известие, ако е недостъпен X пъти последователно", + "Resend Notification if Down X times consecutively": "Повторно изпращане на известие, ако е недостъпен X пъти последователно", "Bark Group": "Bark група", "Bark Sound": "Bark звук", "HTTP Headers": "HTTP хедъри", diff --git a/src/lang/cs-CZ.json b/src/lang/cs-CZ.json index c6b28312..28ca79ee 100644 --- a/src/lang/cs-CZ.json +++ b/src/lang/cs-CZ.json @@ -90,7 +90,7 @@ "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", + "Resend Notification if Down X times consecutively": "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í", diff --git a/src/lang/de-CH.json b/src/lang/de-CH.json index 85da35e0..d8a46562 100644 --- a/src/lang/de-CH.json +++ b/src/lang/de-CH.json @@ -165,7 +165,7 @@ "Pink": "Pink", "Search...": "Suchen…", "Heartbeat Retry Interval": "Überprüfungsintervall", - "Resend Notification if Down X times consequently": "Benachrichtigung erneut senden, wenn Inaktiv X mal hintereinander", + "Resend Notification if Down X times consecutively": "Benachrichtigung erneut senden, wenn Inaktiv X mal hintereinander", "retryCheckEverySecond": "Alle {0} Sekunden neu versuchen", "resendEveryXTimes": "Erneut versenden alle {0} mal", "resendDisabled": "Erneut versenden deaktiviert", diff --git a/src/lang/de-DE.json b/src/lang/de-DE.json index 45b5ae56..f6671598 100644 --- a/src/lang/de-DE.json +++ b/src/lang/de-DE.json @@ -165,7 +165,7 @@ "Pink": "Pink", "Search...": "Suchen…", "Heartbeat Retry Interval": "Überprüfungsintervall", - "Resend Notification if Down X times consequently": "Benachrichtigung erneut senden, wenn Inaktiv X mal hintereinander", + "Resend Notification if Down X times consecutively": "Benachrichtigung erneut senden, wenn Inaktiv X mal hintereinander", "retryCheckEverySecond": "Alle {0} Sekunden neu versuchen", "resendEveryXTimes": "Erneut versenden alle {0} mal", "resendDisabled": "Erneut versenden deaktiviert", diff --git a/src/lang/el-GR.json b/src/lang/el-GR.json index c77d6158..fbd8a369 100644 --- a/src/lang/el-GR.json +++ b/src/lang/el-GR.json @@ -74,7 +74,7 @@ "Heartbeat Interval": "Διάστημα καρδιακών παλμών", "Retries": "Επαναλήψεις", "Heartbeat Retry Interval": "Διάστημα επανάληψης παλμών καρδιάς", - "Resend Notification if Down X times consequently": "Αποστολή νέας ειδοποίησης εάν κατω X φορές κατά συνέχεια", + "Resend Notification if Down X times consecutively": "Αποστολή νέας ειδοποίησης εάν κατω X φορές κατά συνέχεια", "Advanced": "Προχωρημένα", "Upside Down Mode": "Ανάποδη λειτουργία", "Max. Redirects": "Μέγιστη. Ανακατευθύνσεις", diff --git a/src/lang/en.json b/src/lang/en.json index d907f4e0..0fed82c0 100644 --- a/src/lang/en.json +++ b/src/lang/en.json @@ -55,7 +55,7 @@ "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", + "Resend Notification if Down X times consecutively": "Resend Notification if Down X times consecutively", "Advanced": "Advanced", "checkEverySecond": "Check every {0} seconds", "retryCheckEverySecond": "Retry every {0} seconds", diff --git a/src/lang/es-ES.json b/src/lang/es-ES.json index 8fa80158..a9c8e34f 100644 --- a/src/lang/es-ES.json +++ b/src/lang/es-ES.json @@ -304,7 +304,7 @@ "General Monitor Type": "Monitor Tipo General", "Specific Monitor Type": "Monitor Tipo Específico", "Monitor": "Monitores", - "Resend Notification if Down X times consequently": "Reenviar Notificación si Caído X veces consecutivas", + "Resend Notification if Down X times consecutively": "Reenviar Notificación si Caído X veces consecutivas", "resendEveryXTimes": "Reenviar cada {0} veces", "resendDisabled": "Reenvío deshabilitado", "needPushEvery": "Debe llamar a esta URL cada {0} segundos.", diff --git a/src/lang/fr-FR.json b/src/lang/fr-FR.json index ae39af3c..3580cca1 100644 --- a/src/lang/fr-FR.json +++ b/src/lang/fr-FR.json @@ -89,7 +89,7 @@ "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", + "Resend Notification if Down X times consecutively": "Renvoyer une notification si hors ligne X fois", "Advanced": "Avancé", "Upside Down Mode": "Mode inversé", "Max. Redirects": "Nombre maximum de redirections", diff --git a/src/lang/he-IL.json b/src/lang/he-IL.json index c8219ff5..c61ad77c 100644 --- a/src/lang/he-IL.json +++ b/src/lang/he-IL.json @@ -89,7 +89,7 @@ "Heartbeat Interval": "מרווח פעימות", "Retries": "נסיונות חוזרים", "Heartbeat Retry Interval": "מרווח נסיונות חוזר של פעימות", - "Resend Notification if Down X times consequently": "שלח שוב הודעה אם ירד X פעמים כתוצאה מכך", + "Resend Notification if Down X times consecutively": "שלח שוב הודעה אם ירד X פעמים כתוצאה מכך", "Advanced": "מתקדם", "Upside Down Mode": "מצב הפוך", "Max. Redirects": "מקסימום הפניות מחדש", diff --git a/src/lang/hr-HR.json b/src/lang/hr-HR.json index 417b689e..b909ed55 100644 --- a/src/lang/hr-HR.json +++ b/src/lang/hr-HR.json @@ -378,7 +378,7 @@ "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", + "Resend Notification if Down X times consecutively": "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", diff --git a/src/lang/id-ID.json b/src/lang/id-ID.json index 59a06521..ecd50672 100644 --- a/src/lang/id-ID.json +++ b/src/lang/id-ID.json @@ -74,7 +74,7 @@ "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", + "Resend Notification if Down X times consecutively": "Kirim Ulang Notifikasi jika Tidak Aktif X kali", "Advanced": "Tingkat Lanjut", "Upside Down Mode": "Mode Terbalik", "Max. Redirects": "Maksimal Pengalihan", diff --git a/src/lang/ko-KR.json b/src/lang/ko-KR.json index 2c2297c6..079c9f58 100644 --- a/src/lang/ko-KR.json +++ b/src/lang/ko-KR.json @@ -680,7 +680,7 @@ "Passive Monitor Type": "수동 모니터링", "Specific Monitor Type": "특정 모니터링", "Monitor": "모니터", - "Resend Notification if Down X times consequently": "X번 중단될 경우 알림 다시 보내기", + "Resend Notification if Down X times consecutively": "X번 중단될 경우 알림 다시 보내기", "Schedule maintenance": "점검 예약하기", "Affected Monitors": "영향을 받는 모니터링", "Pick Affected Monitors...": "영향을 받는 모니터링 선택하기…", diff --git a/src/lang/pl.json b/src/lang/pl.json index ebc58797..27b5d72b 100644 --- a/src/lang/pl.json +++ b/src/lang/pl.json @@ -494,7 +494,7 @@ "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", + "Resend Notification if Down X times consecutively": "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}", diff --git a/src/lang/pt-BR.json b/src/lang/pt-BR.json index b7ebdbd4..a0c6d1fd 100644 --- a/src/lang/pt-BR.json +++ b/src/lang/pt-BR.json @@ -249,7 +249,7 @@ "enabled": "Ativado", "setAsDefault": "Definir como padrão", "Primary Base URL": "URL base principal", - "Resend Notification if Down X times consequently": "Reenviar notificação se OFFLINE X vezes consecutivamente", + "Resend Notification if Down X times consecutively": "Reenviar notificação se OFFLINE X vezes consecutivamente", "pushOptionalParams": "Parâmetros opcionais: {0}", "webhookFormDataDesc": "{multipart} é bom para PHP. O JSON precisará ser analisado com {decodeFunction}", "HeadersInvalidFormat": "Os cabeçalhos da solicitação não são um JSON válidos: ", diff --git a/src/lang/th-TH.json b/src/lang/th-TH.json index 7ad132f5..1895a153 100644 --- a/src/lang/th-TH.json +++ b/src/lang/th-TH.json @@ -522,7 +522,7 @@ "resendEveryXTimes": "ส่งซ้ำทุก {0} ครั้ง", "resendDisabled": "การส่งซ้ำถูกปิดใช้งาน", "dnsPortDescription": "พอร์ตของเซิร์ฟเวอร์ DNS, ค่าเริ่มต้นคือ 53, คุณสามารถเปลี่ยนพอร์ตตอนไหนก็ได้", - "Resend Notification if Down X times consequently": "ส่งการแจ้งเตือนซ้ำถ้าออฟไลน์ครบ X ครั้ง", + "Resend Notification if Down X times consecutively": "ส่งการแจ้งเตือนซ้ำถ้าออฟไลน์ครบ X ครั้ง", "error": "เกิดข้อผิดพลาด", "critical": "วิกฤต", "wayToGetPagerDutyKey": "คุณสามารถรับคีย์ได้โดยการไปที่ Service -> Service Directory -> (Select a service) -> Integrations -> Add integration, และค้นหา \"Events API V2\", สำหรับข้อมูลเพิ่มเติม {0}", diff --git a/src/lang/tr-TR.json b/src/lang/tr-TR.json index b9bc8adc..13ddd373 100644 --- a/src/lang/tr-TR.json +++ b/src/lang/tr-TR.json @@ -74,7 +74,7 @@ "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", + "Resend Notification if Down X times consecutively": "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", diff --git a/src/lang/zh-CN.json b/src/lang/zh-CN.json index a3393bd1..45529c6d 100644 --- a/src/lang/zh-CN.json +++ b/src/lang/zh-CN.json @@ -89,7 +89,7 @@ "Heartbeat Interval": "心跳间隔", "Retries": "重试次数", "Heartbeat Retry Interval": "心跳重试间隔", - "Resend Notification if Down X times consequently": "连续失败时重复发送通知的间隔次数", + "Resend Notification if Down X times consecutively": "连续失败时重复发送通知的间隔次数", "Advanced": "高级", "Upside Down Mode": "反转监控", "Max. Redirects": "最大重定向次数", diff --git a/src/lang/zh-HK.json b/src/lang/zh-HK.json index 14f25b5e..024781a3 100644 --- a/src/lang/zh-HK.json +++ b/src/lang/zh-HK.json @@ -397,7 +397,7 @@ "affectedStatusPages": "在已選取的狀態頁中顯示此維護訊息", "Primary Base URL": "主要 Base URL", "Passive Monitor Type": "被動監測器類型", - "Resend Notification if Down X times consequently": "若 X 次心跳皆離線,重新傳送通知", + "Resend Notification if Down X times consecutively": "若 X 次心跳皆離線,重新傳送通知", "Game": "遊戲", "Specific Monitor Type": "特定監測器類型", "Monitor": "監測器 | 監測器", diff --git a/src/lang/zh-TW.json b/src/lang/zh-TW.json index 5eb0a699..3e208215 100644 --- a/src/lang/zh-TW.json +++ b/src/lang/zh-TW.json @@ -89,7 +89,7 @@ "Heartbeat Interval": "心跳間隔", "Retries": "重試次數", "Heartbeat Retry Interval": "心跳重試間隔", - "Resend Notification if Down X times consequently": "若 X 次心跳皆離線,重新傳送通知", + "Resend Notification if Down X times consecutively": "若 X 次心跳皆離線,重新傳送通知", "Advanced": "進階", "Upside Down Mode": "顛倒模式", "Max. Redirects": "最大重新導向次數", diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index e9cbd824..297759c5 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -340,7 +340,7 @@
    From 3439074835d1f40dd56ca2b6531dcbbec53071b0 Mon Sep 17 00:00:00 2001 From: Nelson Chan Date: Thu, 9 Feb 2023 17:42:02 +0800 Subject: [PATCH 215/296] Feat: Use message to improve errror status code --- server/routers/api-router.js | 14 +++++++------- server/routers/status-page-router.js | 18 ++++++------------ server/util-server.js | 24 ++++++++++++++++++------ 3 files changed, 31 insertions(+), 25 deletions(-) diff --git a/server/routers/api-router.js b/server/routers/api-router.js index 665163ae..2d5f9661 100644 --- a/server/routers/api-router.js +++ b/server/routers/api-router.js @@ -1,5 +1,5 @@ let express = require("express"); -const { allowDevAllOrigin, allowAllOrigin, percentageToColor, filterAndJoin, send403 } = require("../util-server"); +const { allowDevAllOrigin, allowAllOrigin, percentageToColor, filterAndJoin, sendHttpError } = require("../util-server"); const { R } = require("redbean-node"); const apicache = require("../modules/apicache"); const Monitor = require("../model/monitor"); @@ -175,7 +175,7 @@ router.get("/api/badge/:id/status", cache("5 minutes"), async (request, response response.type("image/svg+xml"); response.send(svg); } catch (error) { - send403(response, error.message); + sendHttpError(response, error.message); } }); @@ -242,7 +242,7 @@ router.get("/api/badge/:id/uptime/:duration?", cache("5 minutes"), async (reques response.type("image/svg+xml"); response.send(svg); } catch (error) { - send403(response, error.message); + sendHttpError(response, error.message); } }); @@ -303,7 +303,7 @@ router.get("/api/badge/:id/ping/:duration?", cache("5 minutes"), async (request, response.type("image/svg+xml"); response.send(svg); } catch (error) { - send403(response, error.message); + sendHttpError(response, error.message); } }); @@ -373,7 +373,7 @@ router.get("/api/badge/:id/avg-response/:duration?", cache("5 minutes"), async ( response.type("image/svg+xml"); response.send(svg); } catch (error) { - send403(response, error.message); + sendHttpError(response, error.message); } }); @@ -464,7 +464,7 @@ router.get("/api/badge/:id/cert-exp", cache("5 minutes"), async (request, respon response.type("image/svg+xml"); response.send(svg); } catch (error) { - send403(response, error.message); + sendHttpError(response, error.message); } }); @@ -536,7 +536,7 @@ router.get("/api/badge/:id/response", cache("5 minutes"), async (request, respon response.type("image/svg+xml"); response.send(svg); } catch (error) { - send403(response, error.message); + sendHttpError(response, error.message); } }); diff --git a/server/routers/status-page-router.js b/server/routers/status-page-router.js index de075db8..28cf5f4c 100644 --- a/server/routers/status-page-router.js +++ b/server/routers/status-page-router.js @@ -2,7 +2,7 @@ let express = require("express"); const apicache = require("../modules/apicache"); const { UptimeKumaServer } = require("../uptime-kuma-server"); const StatusPage = require("../model/status_page"); -const { allowDevAllOrigin, send403 } = require("../util-server"); +const { allowDevAllOrigin, sendHttpError } = require("../util-server"); const { R } = require("redbean-node"); const Monitor = require("../model/monitor"); @@ -44,10 +44,7 @@ router.get("/api/status-page/:slug", cache("5 minutes"), async (request, respons let statusPageData = await StatusPage.getStatusPageData(statusPage); if (!statusPageData) { - response.statusCode = 404; - response.json({ - msg: "Not Found" - }); + sendHttpError(response, "Not Found"); return; } @@ -55,7 +52,7 @@ router.get("/api/status-page/:slug", cache("5 minutes"), async (request, respons response.json(statusPageData); } catch (error) { - send403(response, error.message); + sendHttpError(response, error.message); } }); @@ -103,7 +100,7 @@ router.get("/api/status-page/heartbeat/:slug", cache("1 minutes"), async (reques }); } catch (error) { - send403(response, error.message); + sendHttpError(response, error.message); } }); @@ -119,10 +116,7 @@ router.get("/api/status-page/:slug/manifest.json", cache("1440 minutes"), async ]); if (!statusPage) { - response.statusCode = 404; - response.json({ - msg: "Not Found" - }); + sendHttpError(response, "Not Found"); return; } @@ -141,7 +135,7 @@ router.get("/api/status-page/:slug/manifest.json", cache("1440 minutes"), async }); } catch (error) { - send403(response, error.message); + sendHttpError(response, error.message); } }); diff --git a/server/util-server.js b/server/util-server.js index edce2890..c83c8cd1 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -730,15 +730,27 @@ exports.filterAndJoin = (parts, connector = "") => { }; /** - * Send a 403 response + * Send an Error response * @param {Object} res Express response object * @param {string} [msg=""] Message to send */ -module.exports.send403 = (res, msg = "") => { - res.status(403).json({ - "status": "fail", - "msg": msg, - }); +module.exports.sendHttpError = (res, msg = "") => { + if (msg.includes("SQLITE_BUSY") || msg.includes("SQLITE_LOCKED")) { + res.status(503).json({ + "status": "fail", + "msg": msg, + }); + } else if (msg.toLowerCase().includes("not found")) { + res.status(404).json({ + "status": "fail", + "msg": msg, + }); + } else { + res.status(403).json({ + "status": "fail", + "msg": msg, + }); + } }; function timeObjectConvertTimezone(obj, timezone, timeObjectToUTC = true) { From c12b06348b500834d3f6ae9b242d180f062d59d3 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Fri, 10 Feb 2023 17:29:32 +0800 Subject: [PATCH 216/296] Fix parsing issues of status page's og tags --- server/model/status_page.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/server/model/status_page.js b/server/model/status_page.js index d7185a2e..84af99e8 100644 --- a/server/model/status_page.js +++ b/server/model/status_page.js @@ -60,8 +60,11 @@ class StatusPage extends BeanModel { } // OG Meta Tags - head.append(``); - head.append(``); + let ogTitle = $("").attr("content", statusPage.title); + head.append(ogTitle); + + let ogDescription = $("").attr("content", description155); + head.append(ogDescription); // Preload data // Add jsesc, fix https://github.com/louislam/uptime-kuma/issues/2186 From cb953361b149397ba0b5ad168d963fc4a9079bad Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Fri, 10 Feb 2023 17:46:44 +0800 Subject: [PATCH 217/296] Update SECURITY.md --- SECURITY.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/SECURITY.md b/SECURITY.md index 657aa3eb..c30e5f4f 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -6,6 +6,10 @@ Please report security issues to https://github.com/louislam/uptime-kuma/securit Do not use the public issue tracker or discuss it in the public as it will cause more damage. +## Do you accept other 3rd-party bug bounty platforms? + +At this moment, I DO NOT accept other bug bounty platforms, because I am not familiar with these platforms and someone have tried to send a phishing link to me by this already. To minimize my own risk, please report through GitHub Advisories only. I will ignore all 3rd-party bug bounty platforms emails. + ## Supported Versions ### Uptime Kuma Versions From c30e88ece2a654c27248b7d18709801d5ed479ba Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Fri, 10 Feb 2023 17:52:08 +0800 Subject: [PATCH 218/296] Update dependencies --- package-lock.json | 3184 ++++++++++++++++++++++++--------------------- 1 file changed, 1693 insertions(+), 1491 deletions(-) diff --git a/package-lock.json b/package-lock.json index fec23fe9..5d172288 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "uptime-kuma", - "version": "1.19.6", + "version": "1.20.0-beta.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "uptime-kuma", - "version": "1.19.6", + "version": "1.20.0-beta.0", "license": "MIT", "dependencies": { "@grpc/grpc-js": "~1.7.3", @@ -176,9 +176,9 @@ } }, "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==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", + "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", "optional": true, "dependencies": { "tslib": "^1.11.1" @@ -191,16 +191,16 @@ "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==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", + "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", "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-crypto/ie11-detection": "^3.0.0", + "@aws-crypto/sha256-js": "^3.0.0", + "@aws-crypto/supports-web-crypto": "^3.0.0", + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-locate-window": "^3.0.0", "@aws-sdk/util-utf8-browser": "^3.0.0", "tslib": "^1.11.1" @@ -213,13 +213,13 @@ "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==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", + "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", "optional": true, "dependencies": { - "@aws-crypto/util": "^2.0.0", - "@aws-sdk/types": "^3.1.0", + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", "tslib": "^1.11.1" } }, @@ -230,9 +230,9 @@ "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==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", + "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", "optional": true, "dependencies": { "tslib": "^1.11.1" @@ -245,12 +245,12 @@ "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==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", "optional": true, "dependencies": { - "@aws-sdk/types": "^3.110.0", + "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-utf8-browser": "^3.0.0", "tslib": "^1.11.1" } @@ -262,12 +262,12 @@ "optional": true }, "node_modules/@aws-sdk/abort-controller": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.226.0.tgz", - "integrity": "sha512-cJVzr1xxPBd08voknXvR0RLgtZKGKt6WyDpH/BaPCu3rfSqWCDZKzwqe940eqosjmKrxC6pUZNKASIqHOQ8xxQ==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.267.0.tgz", + "integrity": "sha512-5R7OSnHFV/f+qQpMf1RuSQoVdXroK94Vl6naWjMOAhMyofHykVhEok9hmFPac86AVx8rVX/vuA7u9GKI6/EE7g==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -275,46 +275,45 @@ } }, "node_modules/@aws-sdk/client-cognito-identity": { - "version": "3.245.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.245.0.tgz", - "integrity": "sha512-c5briTS05rAioO5b84bVng9M1KyAXcxJtDHeuoeAAZBuU+Dd0Scg3vyXyAFlGI+TsNyxqHAqqRdAoG4WNxJo/Q==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.267.0.tgz", + "integrity": "sha512-jEE5aw7wp7VhiaU0vCbNQbEIhiaNZnBhRj+vJVCd2HQBI9IVLVXAoyExWxLruAXKEO+A1w1df+fwZAOo0M7aQQ==", "optional": true, "dependencies": { - "@aws-crypto/sha256-browser": "2.0.0", - "@aws-crypto/sha256-js": "2.0.0", - "@aws-sdk/client-sts": "3.245.0", - "@aws-sdk/config-resolver": "3.234.0", - "@aws-sdk/credential-provider-node": "3.245.0", - "@aws-sdk/fetch-http-handler": "3.226.0", - "@aws-sdk/hash-node": "3.226.0", - "@aws-sdk/invalid-dependency": "3.226.0", - "@aws-sdk/middleware-content-length": "3.226.0", - "@aws-sdk/middleware-endpoint": "3.226.0", - "@aws-sdk/middleware-host-header": "3.226.0", - "@aws-sdk/middleware-logger": "3.226.0", - "@aws-sdk/middleware-recursion-detection": "3.226.0", - "@aws-sdk/middleware-retry": "3.235.0", - "@aws-sdk/middleware-serde": "3.226.0", - "@aws-sdk/middleware-signing": "3.226.0", - "@aws-sdk/middleware-stack": "3.226.0", - "@aws-sdk/middleware-user-agent": "3.226.0", - "@aws-sdk/node-config-provider": "3.226.0", - "@aws-sdk/node-http-handler": "3.226.0", - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/smithy-client": "3.234.0", - "@aws-sdk/types": "3.226.0", - "@aws-sdk/url-parser": "3.226.0", + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.267.0", + "@aws-sdk/config-resolver": "3.267.0", + "@aws-sdk/credential-provider-node": "3.267.0", + "@aws-sdk/fetch-http-handler": "3.267.0", + "@aws-sdk/hash-node": "3.267.0", + "@aws-sdk/invalid-dependency": "3.267.0", + "@aws-sdk/middleware-content-length": "3.267.0", + "@aws-sdk/middleware-endpoint": "3.267.0", + "@aws-sdk/middleware-host-header": "3.267.0", + "@aws-sdk/middleware-logger": "3.267.0", + "@aws-sdk/middleware-recursion-detection": "3.267.0", + "@aws-sdk/middleware-retry": "3.267.0", + "@aws-sdk/middleware-serde": "3.267.0", + "@aws-sdk/middleware-signing": "3.267.0", + "@aws-sdk/middleware-stack": "3.267.0", + "@aws-sdk/middleware-user-agent": "3.267.0", + "@aws-sdk/node-config-provider": "3.267.0", + "@aws-sdk/node-http-handler": "3.267.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/smithy-client": "3.267.0", + "@aws-sdk/types": "3.267.0", + "@aws-sdk/url-parser": "3.267.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.234.0", - "@aws-sdk/util-defaults-mode-node": "3.234.0", - "@aws-sdk/util-endpoints": "3.245.0", - "@aws-sdk/util-retry": "3.229.0", - "@aws-sdk/util-user-agent-browser": "3.226.0", - "@aws-sdk/util-user-agent-node": "3.226.0", - "@aws-sdk/util-utf8-browser": "3.188.0", - "@aws-sdk/util-utf8-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.267.0", + "@aws-sdk/util-defaults-mode-node": "3.267.0", + "@aws-sdk/util-endpoints": "3.267.0", + "@aws-sdk/util-retry": "3.267.0", + "@aws-sdk/util-user-agent-browser": "3.267.0", + "@aws-sdk/util-user-agent-node": "3.267.0", + "@aws-sdk/util-utf8": "3.254.0", "tslib": "^2.3.1" }, "engines": { @@ -322,43 +321,42 @@ } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.245.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.245.0.tgz", - "integrity": "sha512-dxzRwRo55ZNQ4hQigC+cishxLSWlBrbr3iszG0FLviavLDOlnVG5UUxWpOIGvwr8pYiSfM4jnfMxiwYwiCLg1g==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.267.0.tgz", + "integrity": "sha512-/475/mT0gYhimpCdK4iZW+eX0DT6mkTgVk5P9ARpQGzEblFM6i2pE7GQnlGeLyHVOtA0cNAyGrWUuj2pyigUaA==", "optional": true, "dependencies": { - "@aws-crypto/sha256-browser": "2.0.0", - "@aws-crypto/sha256-js": "2.0.0", - "@aws-sdk/config-resolver": "3.234.0", - "@aws-sdk/fetch-http-handler": "3.226.0", - "@aws-sdk/hash-node": "3.226.0", - "@aws-sdk/invalid-dependency": "3.226.0", - "@aws-sdk/middleware-content-length": "3.226.0", - "@aws-sdk/middleware-endpoint": "3.226.0", - "@aws-sdk/middleware-host-header": "3.226.0", - "@aws-sdk/middleware-logger": "3.226.0", - "@aws-sdk/middleware-recursion-detection": "3.226.0", - "@aws-sdk/middleware-retry": "3.235.0", - "@aws-sdk/middleware-serde": "3.226.0", - "@aws-sdk/middleware-stack": "3.226.0", - "@aws-sdk/middleware-user-agent": "3.226.0", - "@aws-sdk/node-config-provider": "3.226.0", - "@aws-sdk/node-http-handler": "3.226.0", - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/smithy-client": "3.234.0", - "@aws-sdk/types": "3.226.0", - "@aws-sdk/url-parser": "3.226.0", + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/config-resolver": "3.267.0", + "@aws-sdk/fetch-http-handler": "3.267.0", + "@aws-sdk/hash-node": "3.267.0", + "@aws-sdk/invalid-dependency": "3.267.0", + "@aws-sdk/middleware-content-length": "3.267.0", + "@aws-sdk/middleware-endpoint": "3.267.0", + "@aws-sdk/middleware-host-header": "3.267.0", + "@aws-sdk/middleware-logger": "3.267.0", + "@aws-sdk/middleware-recursion-detection": "3.267.0", + "@aws-sdk/middleware-retry": "3.267.0", + "@aws-sdk/middleware-serde": "3.267.0", + "@aws-sdk/middleware-stack": "3.267.0", + "@aws-sdk/middleware-user-agent": "3.267.0", + "@aws-sdk/node-config-provider": "3.267.0", + "@aws-sdk/node-http-handler": "3.267.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/smithy-client": "3.267.0", + "@aws-sdk/types": "3.267.0", + "@aws-sdk/url-parser": "3.267.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.234.0", - "@aws-sdk/util-defaults-mode-node": "3.234.0", - "@aws-sdk/util-endpoints": "3.245.0", - "@aws-sdk/util-retry": "3.229.0", - "@aws-sdk/util-user-agent-browser": "3.226.0", - "@aws-sdk/util-user-agent-node": "3.226.0", - "@aws-sdk/util-utf8-browser": "3.188.0", - "@aws-sdk/util-utf8-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.267.0", + "@aws-sdk/util-defaults-mode-node": "3.267.0", + "@aws-sdk/util-endpoints": "3.267.0", + "@aws-sdk/util-retry": "3.267.0", + "@aws-sdk/util-user-agent-browser": "3.267.0", + "@aws-sdk/util-user-agent-node": "3.267.0", + "@aws-sdk/util-utf8": "3.254.0", "tslib": "^2.3.1" }, "engines": { @@ -366,43 +364,42 @@ } }, "node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.245.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.245.0.tgz", - "integrity": "sha512-0pGPA00kEsu2Yq1Ul+OwftHxws5YVllm4iZrPtGnqmXr7wmf6B9lOtrMQF44y7Tfw53po6+bKz08OKTEWkkjUA==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.267.0.tgz", + "integrity": "sha512-Jdq0v0mJSJbG/CKLfHC1L0cjCot48Y6lLMQV1lfkYE65xD0ZSs8Gl7P/T391ZH7cLO6ifVoPdsYnwzhi1ZPXSQ==", "optional": true, "dependencies": { - "@aws-crypto/sha256-browser": "2.0.0", - "@aws-crypto/sha256-js": "2.0.0", - "@aws-sdk/config-resolver": "3.234.0", - "@aws-sdk/fetch-http-handler": "3.226.0", - "@aws-sdk/hash-node": "3.226.0", - "@aws-sdk/invalid-dependency": "3.226.0", - "@aws-sdk/middleware-content-length": "3.226.0", - "@aws-sdk/middleware-endpoint": "3.226.0", - "@aws-sdk/middleware-host-header": "3.226.0", - "@aws-sdk/middleware-logger": "3.226.0", - "@aws-sdk/middleware-recursion-detection": "3.226.0", - "@aws-sdk/middleware-retry": "3.235.0", - "@aws-sdk/middleware-serde": "3.226.0", - "@aws-sdk/middleware-stack": "3.226.0", - "@aws-sdk/middleware-user-agent": "3.226.0", - "@aws-sdk/node-config-provider": "3.226.0", - "@aws-sdk/node-http-handler": "3.226.0", - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/smithy-client": "3.234.0", - "@aws-sdk/types": "3.226.0", - "@aws-sdk/url-parser": "3.226.0", + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/config-resolver": "3.267.0", + "@aws-sdk/fetch-http-handler": "3.267.0", + "@aws-sdk/hash-node": "3.267.0", + "@aws-sdk/invalid-dependency": "3.267.0", + "@aws-sdk/middleware-content-length": "3.267.0", + "@aws-sdk/middleware-endpoint": "3.267.0", + "@aws-sdk/middleware-host-header": "3.267.0", + "@aws-sdk/middleware-logger": "3.267.0", + "@aws-sdk/middleware-recursion-detection": "3.267.0", + "@aws-sdk/middleware-retry": "3.267.0", + "@aws-sdk/middleware-serde": "3.267.0", + "@aws-sdk/middleware-stack": "3.267.0", + "@aws-sdk/middleware-user-agent": "3.267.0", + "@aws-sdk/node-config-provider": "3.267.0", + "@aws-sdk/node-http-handler": "3.267.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/smithy-client": "3.267.0", + "@aws-sdk/types": "3.267.0", + "@aws-sdk/url-parser": "3.267.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.234.0", - "@aws-sdk/util-defaults-mode-node": "3.234.0", - "@aws-sdk/util-endpoints": "3.245.0", - "@aws-sdk/util-retry": "3.229.0", - "@aws-sdk/util-user-agent-browser": "3.226.0", - "@aws-sdk/util-user-agent-node": "3.226.0", - "@aws-sdk/util-utf8-browser": "3.188.0", - "@aws-sdk/util-utf8-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.267.0", + "@aws-sdk/util-defaults-mode-node": "3.267.0", + "@aws-sdk/util-endpoints": "3.267.0", + "@aws-sdk/util-retry": "3.267.0", + "@aws-sdk/util-user-agent-browser": "3.267.0", + "@aws-sdk/util-user-agent-node": "3.267.0", + "@aws-sdk/util-utf8": "3.254.0", "tslib": "^2.3.1" }, "engines": { @@ -410,46 +407,45 @@ } }, "node_modules/@aws-sdk/client-sts": { - "version": "3.245.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.245.0.tgz", - "integrity": "sha512-E+7v2sy34TLni/Dmz6bTU20NWvbHYH9sVUHKQ9kHhmFopUWrs4Nt77f85PbuiKJz/irjUh9ppT5q1odJNRKRVQ==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.267.0.tgz", + "integrity": "sha512-bJ+SwJZAP3DuDUgToDV89HsB80IhSfB1rhzLG9csqs6h7uMLO8H1/fymElYKT4VMMAA+rpWJ3pznyGiCK7w28A==", "optional": true, "dependencies": { - "@aws-crypto/sha256-browser": "2.0.0", - "@aws-crypto/sha256-js": "2.0.0", - "@aws-sdk/config-resolver": "3.234.0", - "@aws-sdk/credential-provider-node": "3.245.0", - "@aws-sdk/fetch-http-handler": "3.226.0", - "@aws-sdk/hash-node": "3.226.0", - "@aws-sdk/invalid-dependency": "3.226.0", - "@aws-sdk/middleware-content-length": "3.226.0", - "@aws-sdk/middleware-endpoint": "3.226.0", - "@aws-sdk/middleware-host-header": "3.226.0", - "@aws-sdk/middleware-logger": "3.226.0", - "@aws-sdk/middleware-recursion-detection": "3.226.0", - "@aws-sdk/middleware-retry": "3.235.0", - "@aws-sdk/middleware-sdk-sts": "3.226.0", - "@aws-sdk/middleware-serde": "3.226.0", - "@aws-sdk/middleware-signing": "3.226.0", - "@aws-sdk/middleware-stack": "3.226.0", - "@aws-sdk/middleware-user-agent": "3.226.0", - "@aws-sdk/node-config-provider": "3.226.0", - "@aws-sdk/node-http-handler": "3.226.0", - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/smithy-client": "3.234.0", - "@aws-sdk/types": "3.226.0", - "@aws-sdk/url-parser": "3.226.0", + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/config-resolver": "3.267.0", + "@aws-sdk/credential-provider-node": "3.267.0", + "@aws-sdk/fetch-http-handler": "3.267.0", + "@aws-sdk/hash-node": "3.267.0", + "@aws-sdk/invalid-dependency": "3.267.0", + "@aws-sdk/middleware-content-length": "3.267.0", + "@aws-sdk/middleware-endpoint": "3.267.0", + "@aws-sdk/middleware-host-header": "3.267.0", + "@aws-sdk/middleware-logger": "3.267.0", + "@aws-sdk/middleware-recursion-detection": "3.267.0", + "@aws-sdk/middleware-retry": "3.267.0", + "@aws-sdk/middleware-sdk-sts": "3.267.0", + "@aws-sdk/middleware-serde": "3.267.0", + "@aws-sdk/middleware-signing": "3.267.0", + "@aws-sdk/middleware-stack": "3.267.0", + "@aws-sdk/middleware-user-agent": "3.267.0", + "@aws-sdk/node-config-provider": "3.267.0", + "@aws-sdk/node-http-handler": "3.267.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/smithy-client": "3.267.0", + "@aws-sdk/types": "3.267.0", + "@aws-sdk/url-parser": "3.267.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.234.0", - "@aws-sdk/util-defaults-mode-node": "3.234.0", - "@aws-sdk/util-endpoints": "3.245.0", - "@aws-sdk/util-retry": "3.229.0", - "@aws-sdk/util-user-agent-browser": "3.226.0", - "@aws-sdk/util-user-agent-node": "3.226.0", - "@aws-sdk/util-utf8-browser": "3.188.0", - "@aws-sdk/util-utf8-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.267.0", + "@aws-sdk/util-defaults-mode-node": "3.267.0", + "@aws-sdk/util-endpoints": "3.267.0", + "@aws-sdk/util-retry": "3.267.0", + "@aws-sdk/util-user-agent-browser": "3.267.0", + "@aws-sdk/util-user-agent-node": "3.267.0", + "@aws-sdk/util-utf8": "3.254.0", "fast-xml-parser": "4.0.11", "tslib": "^2.3.1" }, @@ -458,15 +454,15 @@ } }, "node_modules/@aws-sdk/config-resolver": { - "version": "3.234.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.234.0.tgz", - "integrity": "sha512-uZxy4wzllfvgCQxVc+Iqhde0NGAnfmV2hWR6ejadJaAFTuYNvQiRg9IqJy3pkyDPqXySiJ8Bom5PoJfgn55J/A==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.267.0.tgz", + "integrity": "sha512-UMvJY548xOkamU9ZuZk336VX9r3035CAbttagiPJ/FXy9S8jcQ7N722PAovtxs69nNBQf56cmWsnOHphLCGG9w==", "optional": true, "dependencies": { - "@aws-sdk/signature-v4": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/signature-v4": "3.267.0", + "@aws-sdk/types": "3.267.0", "@aws-sdk/util-config-provider": "3.208.0", - "@aws-sdk/util-middleware": "3.226.0", + "@aws-sdk/util-middleware": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -474,14 +470,14 @@ } }, "node_modules/@aws-sdk/credential-provider-cognito-identity": { - "version": "3.245.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.245.0.tgz", - "integrity": "sha512-DkiPv7Yb9iw3yAzvWUAkXrI23F1+kV8grdXzlSzob5suqv/dVON5pFXK9Siz62WwWsa2FeCEpgEF7RA0mrWLtA==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.267.0.tgz", + "integrity": "sha512-H97VsbiTcb4tbY/LQMZNglJIHt7CHso7RtGgctmdsEA7Rha79fV/egF0Vqo2OQHDgEEpgQDWCeHbXO1P5ibR/A==", "optional": true, "dependencies": { - "@aws-sdk/client-cognito-identity": "3.245.0", - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/client-cognito-identity": "3.267.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -489,13 +485,13 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.226.0.tgz", - "integrity": "sha512-sd8uK1ojbXxaZXlthzw/VXZwCPUtU3PjObOfr3Evj7MPIM2IH8h29foOlggx939MdLQGboJf9gKvLlvKDWtJRA==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.267.0.tgz", + "integrity": "sha512-oiem2UtaFe4CQHscUCImJjPhYWd4iF8fqXhlq6BqHs1wsO6A0vnIUGh+Srut/2q7Xeegl/SRU34HK0hh8JCbxg==", "optional": true, "dependencies": { - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -503,15 +499,15 @@ } }, "node_modules/@aws-sdk/credential-provider-imds": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.226.0.tgz", - "integrity": "sha512-//z/COQm2AjYFI1Lb0wKHTQSrvLFTyuKLFQGPJsKS7DPoxGOCKB7hmYerlbl01IDoCxTdyL//TyyPxbZEOQD5Q==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.267.0.tgz", + "integrity": "sha512-Afd5+LdJ9QyeI5L4iyVmI4MLV+0JBtRLmRy0LdinwJaP0DyKyv9+uaIaorKfWihQpe8hwjEfQWTlTz2A3JMJtw==", "optional": true, "dependencies": { - "@aws-sdk/node-config-provider": "3.226.0", - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/types": "3.226.0", - "@aws-sdk/url-parser": "3.226.0", + "@aws-sdk/node-config-provider": "3.267.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/types": "3.267.0", + "@aws-sdk/url-parser": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -519,19 +515,19 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.245.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.245.0.tgz", - "integrity": "sha512-1SjfVc5Wg0lLRUvwMrfjGgFkl+zfxn74gnkPr6by1QyMAoTzmeUkalPLAIqd+uHtFom9e3K633BQtX7zVPZ5XQ==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.267.0.tgz", + "integrity": "sha512-pHHlqZqZXA4cTssTyRmbYtrjxS2BEy2KFYHEEHNUrd82pUHnj70n+lrpVnT5pRhPPDacpNzxq0KZGeNgmETpbw==", "optional": true, "dependencies": { - "@aws-sdk/credential-provider-env": "3.226.0", - "@aws-sdk/credential-provider-imds": "3.226.0", - "@aws-sdk/credential-provider-process": "3.226.0", - "@aws-sdk/credential-provider-sso": "3.245.0", - "@aws-sdk/credential-provider-web-identity": "3.226.0", - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/shared-ini-file-loader": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/credential-provider-env": "3.267.0", + "@aws-sdk/credential-provider-imds": "3.267.0", + "@aws-sdk/credential-provider-process": "3.267.0", + "@aws-sdk/credential-provider-sso": "3.267.0", + "@aws-sdk/credential-provider-web-identity": "3.267.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/shared-ini-file-loader": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -539,20 +535,20 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.245.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.245.0.tgz", - "integrity": "sha512-Dwv8zmRLTDLeEkGrK/sLNFZSC+ahXZxr07CuID054QKACIdUEvkqYlnalRiTeXngiHGQ54u8wU7f0D32R2oL0g==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.267.0.tgz", + "integrity": "sha512-uo8VyZ/L8HBXskYZC65bR1ZUJ5mBn8JarrGHt6vMG2A+uM7AuryTsKn2wdhPfuCUGKuQLXmix5K4VW/wzq11kQ==", "optional": true, "dependencies": { - "@aws-sdk/credential-provider-env": "3.226.0", - "@aws-sdk/credential-provider-imds": "3.226.0", - "@aws-sdk/credential-provider-ini": "3.245.0", - "@aws-sdk/credential-provider-process": "3.226.0", - "@aws-sdk/credential-provider-sso": "3.245.0", - "@aws-sdk/credential-provider-web-identity": "3.226.0", - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/shared-ini-file-loader": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/credential-provider-env": "3.267.0", + "@aws-sdk/credential-provider-imds": "3.267.0", + "@aws-sdk/credential-provider-ini": "3.267.0", + "@aws-sdk/credential-provider-process": "3.267.0", + "@aws-sdk/credential-provider-sso": "3.267.0", + "@aws-sdk/credential-provider-web-identity": "3.267.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/shared-ini-file-loader": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -560,14 +556,14 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.226.0.tgz", - "integrity": "sha512-iUDMdnrTvbvaCFhWwqyXrhvQ9+ojPqPqXhwZtY1X/Qaz+73S9gXBPJHZaZb2Ke0yKE1Ql3bJbKvmmxC/qLQMng==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.267.0.tgz", + "integrity": "sha512-pd1OOB1Mm+QdPv3sPfO+1G8HBaPAAYXxjLcOK5z/myBeZAsLR12Xcaft4RR1XWwXXKEQqq42cbAINWQdyVykqQ==", "optional": true, "dependencies": { - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/shared-ini-file-loader": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/shared-ini-file-loader": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -575,16 +571,16 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.245.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.245.0.tgz", - "integrity": "sha512-txWrJc0WNBhXMi7q+twjx7cs/qzgTfbQ+vbag5idRmdoUeiR8rfLvihCab2NaGg50xhh+TaoUCXrgJp3E/XjYQ==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.267.0.tgz", + "integrity": "sha512-JqwxelzeRhVdloNi+VUUXhJdziTtNrrwMuhds9wj4KPfl1S2EIzkRxHSjwDz1wtSyuIPOOo6pPJiaVbwvLpkVg==", "optional": true, "dependencies": { - "@aws-sdk/client-sso": "3.245.0", - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/shared-ini-file-loader": "3.226.0", - "@aws-sdk/token-providers": "3.245.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/client-sso": "3.267.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/shared-ini-file-loader": "3.267.0", + "@aws-sdk/token-providers": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -592,13 +588,13 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.226.0.tgz", - "integrity": "sha512-CCpv847rLB0SFOHz2igvUMFAzeT2fD3YnY4C8jltuJoEkn0ITn1Hlgt13nTJ5BUuvyti2mvyXZHmNzhMIMrIlw==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.267.0.tgz", + "integrity": "sha512-za5UsQmj3sYRhd4h5eStj3GCHHfAAjfx2x5FmgQ9ldOp+s0wHEqSL1g+OL9v6o8otf9JnWha+wfUYq3yVGfufQ==", "optional": true, "dependencies": { - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -606,25 +602,25 @@ } }, "node_modules/@aws-sdk/credential-providers": { - "version": "3.245.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.245.0.tgz", - "integrity": "sha512-6Uhsxk6MOuWplejhPJf7XDhegHmcZfj8hwnF4mXFJ6u4b2RxWPQCnqPcA0+VoAzIMUqbjqvkSzmVjQelGFtjNg==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.267.0.tgz", + "integrity": "sha512-Og70E1eHGcxShMbrmm8lOepF82Hg5Fe7WXv0pnUKFFUxr+pf89bCjxGwktZIDM7ZMMXGIyladeIgTjsJkhpjRQ==", "optional": true, "dependencies": { - "@aws-sdk/client-cognito-identity": "3.245.0", - "@aws-sdk/client-sso": "3.245.0", - "@aws-sdk/client-sts": "3.245.0", - "@aws-sdk/credential-provider-cognito-identity": "3.245.0", - "@aws-sdk/credential-provider-env": "3.226.0", - "@aws-sdk/credential-provider-imds": "3.226.0", - "@aws-sdk/credential-provider-ini": "3.245.0", - "@aws-sdk/credential-provider-node": "3.245.0", - "@aws-sdk/credential-provider-process": "3.226.0", - "@aws-sdk/credential-provider-sso": "3.245.0", - "@aws-sdk/credential-provider-web-identity": "3.226.0", - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/shared-ini-file-loader": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/client-cognito-identity": "3.267.0", + "@aws-sdk/client-sso": "3.267.0", + "@aws-sdk/client-sts": "3.267.0", + "@aws-sdk/credential-provider-cognito-identity": "3.267.0", + "@aws-sdk/credential-provider-env": "3.267.0", + "@aws-sdk/credential-provider-imds": "3.267.0", + "@aws-sdk/credential-provider-ini": "3.267.0", + "@aws-sdk/credential-provider-node": "3.267.0", + "@aws-sdk/credential-provider-process": "3.267.0", + "@aws-sdk/credential-provider-sso": "3.267.0", + "@aws-sdk/credential-provider-web-identity": "3.267.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/shared-ini-file-loader": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -632,26 +628,27 @@ } }, "node_modules/@aws-sdk/fetch-http-handler": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.226.0.tgz", - "integrity": "sha512-JewZPMNEBXfi1xVnRa7pVtK/zgZD8/lQ/YnD8pq79WuMa2cwyhDtr8oqCoqsPW+WJT5ScXoMtuHxN78l8eKWgg==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.267.0.tgz", + "integrity": "sha512-u8v8OvWvLVfifmETCAj+DCTot900AsdO1b+N+O8nXiTm2v99rtEoNRJW+no/5vJKNqR+95OAz4NWjFep8nzseg==", "optional": true, "dependencies": { - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/querystring-builder": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/querystring-builder": "3.267.0", + "@aws-sdk/types": "3.267.0", "@aws-sdk/util-base64": "3.208.0", "tslib": "^2.3.1" } }, "node_modules/@aws-sdk/hash-node": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.226.0.tgz", - "integrity": "sha512-MdlJhJ9/Espwd0+gUXdZRsHuostB2WxEVAszWxobP0FTT9PnicqnfK7ExmW+DUAc0ywxtEbR3e0UND65rlSTVw==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.267.0.tgz", + "integrity": "sha512-N3xeChdJg4V4jh2vrRN521EMJYxjUOo/LpvpisFyQHE/p31AfcOLb05upYFoYLvyeder9RHBIyNsvvnMYYoCsA==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "@aws-sdk/util-buffer-from": "3.208.0", + "@aws-sdk/util-utf8": "3.254.0", "tslib": "^2.3.1" }, "engines": { @@ -659,12 +656,12 @@ } }, "node_modules/@aws-sdk/invalid-dependency": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.226.0.tgz", - "integrity": "sha512-QXOYFmap8g9QzRjumcRCIo2GEZkdCwd7ePQW0OABWPhKHzlJ74vvBxywjU3s39EEBEluWXtZ7Iufg6GxZM4ifw==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.267.0.tgz", + "integrity": "sha512-I95IR/eDLC54+9qrL6uh64nhpLVHwxxbBhhEUZKDACp86eXulO8T/DOwUX31ps4+2lI7tbEhQT7f9WDOO3fN8Q==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, @@ -681,13 +678,13 @@ } }, "node_modules/@aws-sdk/middleware-content-length": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.226.0.tgz", - "integrity": "sha512-ksUzlHJN2JMuyavjA46a4sctvnrnITqt2tbGGWWrAuXY1mel2j+VbgnmJUiwHKUO6bTFBBeft5Vd1TSOb4JmiA==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.267.0.tgz", + "integrity": "sha512-b6MBIK12iwcATKnWIhsh50xWVMmZOXZFIo9D4io6D+JM6j/U+GZrSWqxhHzb3SjavuwVgA2hwq4mUCh2WJPJKA==", "optional": true, "dependencies": { - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -695,18 +692,18 @@ } }, "node_modules/@aws-sdk/middleware-endpoint": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.226.0.tgz", - "integrity": "sha512-EvLFafjtUxTT0AC9p3aBQu1/fjhWdIeK58jIXaNFONfZ3F8QbEYUPuF/SqZvJM6cWfOO9qwYKkRDbCSTYhprIg==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.267.0.tgz", + "integrity": "sha512-pGICM/qlQVfixtfKZt8zHq54KvLG2MmOAgNWj2MXB7oirPs/3rC9Kz9ITFXJgjlRFyfssgP/feKhs2yZkI8lhw==", "optional": true, "dependencies": { - "@aws-sdk/middleware-serde": "3.226.0", - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/signature-v4": "3.226.0", - "@aws-sdk/types": "3.226.0", - "@aws-sdk/url-parser": "3.226.0", + "@aws-sdk/middleware-serde": "3.267.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/signature-v4": "3.267.0", + "@aws-sdk/types": "3.267.0", + "@aws-sdk/url-parser": "3.267.0", "@aws-sdk/util-config-provider": "3.208.0", - "@aws-sdk/util-middleware": "3.226.0", + "@aws-sdk/util-middleware": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -714,13 +711,13 @@ } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.226.0.tgz", - "integrity": "sha512-haVkWVh6BUPwKgWwkL6sDvTkcZWvJjv8AgC8jiQuSl8GLZdzHTB8Qhi3IsfFta9HAuoLjxheWBE5Z/L0UrfhLA==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.267.0.tgz", + "integrity": "sha512-D8TfjMeuQXTsB7Ni8liMmNqb3wz+T6t/tYUHtsMo0j++94KAPPj1rhkkTAjR4Rc+IYGCS4YyyCuCXjGB6gkjnA==", "optional": true, "dependencies": { - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -728,12 +725,12 @@ } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.226.0.tgz", - "integrity": "sha512-m9gtLrrYnpN6yckcQ09rV7ExWOLMuq8mMPF/K3DbL/YL0TuILu9i2T1W+JuxSX+K9FMG2HrLAKivE/kMLr55xA==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.267.0.tgz", + "integrity": "sha512-wnLeZYWbgGCuNmRl0Pmky0cSXBWmMTaQBgq90WfwyM0V8wzcoeaovTWA5/qe8oJzusOgUMFoVia4Ew20k3lu8w==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -741,13 +738,13 @@ } }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.226.0.tgz", - "integrity": "sha512-mwRbdKEUeuNH5TEkyZ5FWxp6bL2UC1WbY+LDv6YjHxmSMKpAoOueEdtU34PqDOLrpXXxIGHDFmjeGeMfktyEcA==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.267.0.tgz", + "integrity": "sha512-NCBkTLxaW7XtfQoVBqQCaQZqec5XDtEylkw7g0tGjYDcl934fzu3ciH9MsJ34QFe9slYM6g4v+eC9f1w9K/19g==", "optional": true, "dependencies": { - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -755,16 +752,16 @@ } }, "node_modules/@aws-sdk/middleware-retry": { - "version": "3.235.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.235.0.tgz", - "integrity": "sha512-50WHbJGpD3SNp9763MAlHqIhXil++JdQbKejNpHg7HsJne/ao3ub+fDOfx//mMBjpzBV25BGd5UlfL6blrClSg==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.267.0.tgz", + "integrity": "sha512-MiiNtddZXVhtSAnJFyChwNxnhzMYmv6qWl8qgSjuIOw9SczkHPCoANTfUdRlzG6RfPYhgYtzMGqqnrficJ6mVg==", "optional": true, "dependencies": { - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/service-error-classification": "3.229.0", - "@aws-sdk/types": "3.226.0", - "@aws-sdk/util-middleware": "3.226.0", - "@aws-sdk/util-retry": "3.229.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/service-error-classification": "3.267.0", + "@aws-sdk/types": "3.267.0", + "@aws-sdk/util-middleware": "3.267.0", + "@aws-sdk/util-retry": "3.267.0", "tslib": "^2.3.1", "uuid": "^8.3.2" }, @@ -773,16 +770,16 @@ } }, "node_modules/@aws-sdk/middleware-sdk-sts": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.226.0.tgz", - "integrity": "sha512-NN9T/qoSD1kZvAT+VLny3NnlqgylYQcsgV3rvi/8lYzw/G/2s8VS6sm/VTWGGZhx08wZRv20MWzYu3bftcyqUg==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.267.0.tgz", + "integrity": "sha512-JLDNNvV7Hr0CQrf1vSmflvPbfDFIx5lFf8tY7DZwYWEE920ZzbJTfUsTW9iZHJGeIe8dAQX1tmfYL68+++nvEQ==", "optional": true, "dependencies": { - "@aws-sdk/middleware-signing": "3.226.0", - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/signature-v4": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/middleware-signing": "3.267.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/signature-v4": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -790,12 +787,12 @@ } }, "node_modules/@aws-sdk/middleware-serde": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.226.0.tgz", - "integrity": "sha512-nPuOOAkSfx9TxzdKFx0X2bDlinOxGrqD7iof926K/AEflxGD1DBdcaDdjlYlPDW2CVE8LV/rAgbYuLxh/E/1VA==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.267.0.tgz", + "integrity": "sha512-9qspxiZs+JShukzKMAameBSubfvtUOGZviu9GT5OfRekY2dBbwWcfchP2WvlwxZ/CcC+GwO1HcPqKDCMGsNoow==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -803,16 +800,16 @@ } }, "node_modules/@aws-sdk/middleware-signing": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.226.0.tgz", - "integrity": "sha512-E6HmtPcl+IjYDDzi1xI2HpCbBq2avNWcjvCriMZWuTAtRVpnA6XDDGW5GY85IfS3A8G8vuWqEVPr8JcYUcjfew==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.267.0.tgz", + "integrity": "sha512-thkFEBiFW0M/73dIzl7hQmyAONb8zyD2ZYUFyGm7cIM60sRDUKejPHV6Izonll+HbBZgiBdwUi42uu8O+LfFGQ==", "optional": true, "dependencies": { - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/signature-v4": "3.226.0", - "@aws-sdk/types": "3.226.0", - "@aws-sdk/util-middleware": "3.226.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/signature-v4": "3.267.0", + "@aws-sdk/types": "3.267.0", + "@aws-sdk/util-middleware": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -820,9 +817,9 @@ } }, "node_modules/@aws-sdk/middleware-stack": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.226.0.tgz", - "integrity": "sha512-85wF29LvPvpoed60fZGDYLwv1Zpd/cM0C22WSSFPw1SSJeqO4gtFYyCg2squfT3KI6kF43IIkOCJ+L7GtryPug==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.267.0.tgz", + "integrity": "sha512-52uH3JO3ceI15dgzt8gU7lpJf59qbRUQYJ7pAmTMiHtyEawZ39Puv6sGheY3fAffhqd/aQvup6wn18Q1fRIQUA==", "optional": true, "dependencies": { "tslib": "^2.3.1" @@ -832,13 +829,13 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.226.0.tgz", - "integrity": "sha512-N1WnfzCW1Y5yWhVAphf8OPGTe8Df3vmV7/LdsoQfmpkCZgLZeK2o0xITkUQhRj1mbw7yp8tVFLFV3R2lMurdAQ==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.267.0.tgz", + "integrity": "sha512-eaReMnoB1Cx3OY8WDSiUMNDz/EkdAo4w/m3d5CizckKQNmB29gUrgyFs7g7sHTcShQAduZzlsfRPzc6NmKYaWQ==", "optional": true, "dependencies": { - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -846,14 +843,14 @@ } }, "node_modules/@aws-sdk/node-config-provider": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.226.0.tgz", - "integrity": "sha512-B8lQDqiRk7X5izFEUMXmi8CZLOKCTWQJU9HQf3ako+sF0gexo4nHN3jhoRWyLtcgC5S3on/2jxpAcqtm7kuY3w==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.267.0.tgz", + "integrity": "sha512-wNX+Cu0x+kllng253j5dvmLm4opDRr7YehJ0rNGAV24X+UPJPluN9HrBFly+z4+bH16TpJEPKx7AayiWZGFE1w==", "optional": true, "dependencies": { - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/shared-ini-file-loader": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/shared-ini-file-loader": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -861,15 +858,15 @@ } }, "node_modules/@aws-sdk/node-http-handler": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.226.0.tgz", - "integrity": "sha512-xQCddnZNMiPmjr3W7HYM+f5ir4VfxgJh37eqZwX6EZmyItFpNNeVzKUgA920ka1VPz/ZUYB+2OFGiX3LCLkkaA==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.267.0.tgz", + "integrity": "sha512-wtt3O+e8JEKaLFtmQd74HSZj2TyiApPkwMJ3R50hyboVswt8RcdMWdFbzLnPVpT1AqskG3fMECSKbu8AC/xvBQ==", "optional": true, "dependencies": { - "@aws-sdk/abort-controller": "3.226.0", - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/querystring-builder": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/abort-controller": "3.267.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/querystring-builder": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -877,12 +874,12 @@ } }, "node_modules/@aws-sdk/property-provider": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.226.0.tgz", - "integrity": "sha512-TsljjG+Sg0LmdgfiAlWohluWKnxB/k8xenjeozZfzOr5bHmNHtdbWv6BtNvD/R83hw7SFXxbJHlD5H4u9p2NFg==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.267.0.tgz", + "integrity": "sha512-/BD1Zar9PCQSV8VZTAWOJmtojAeMIl16ljZX3Kix84r45qqNNxuPST2AhNVN+p97Js4x9kBFCHkdFOpW94wr4Q==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -890,12 +887,12 @@ } }, "node_modules/@aws-sdk/protocol-http": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.226.0.tgz", - "integrity": "sha512-zWkVqiTA9RXL6y0hhfZc9bcU4DX2NI6Hw9IhQmSPeM59mdbPjJlY4bLlMr5YxywqO3yQ/ylNoAfrEzrDjlOSRg==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.267.0.tgz", + "integrity": "sha512-8HhOZXMCZ0nsJC/FoifX7YrTYGP91tCpSxIHkr7HxQcTdBMI7QakMtIIWK9Qjsy6tUI98aAdEo5PNCbzdpozmQ==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -903,12 +900,12 @@ } }, "node_modules/@aws-sdk/querystring-builder": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.226.0.tgz", - "integrity": "sha512-LVurypuNeotO4lmirKXRC4NYrZRAyMJXuwO0f2a5ZAUJCjauwYrifKue6yCfU7bls7gut7nfcR6B99WBYpHs3g==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.267.0.tgz", + "integrity": "sha512-SKo8V3oPV1wZy4r4lccH7R2LT0PUK/WGaXkKR30wyrtDjJRWVJDYef9ysOpRP+adCTt3G5XO0SzyPQUW5dXYVA==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "@aws-sdk/util-uri-escape": "3.201.0", "tslib": "^2.3.1" }, @@ -917,12 +914,12 @@ } }, "node_modules/@aws-sdk/querystring-parser": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.226.0.tgz", - "integrity": "sha512-FzB+VrQ47KAFxiPt2YXrKZ8AOLZQqGTLCKHzx4bjxGmwgsjV8yIbtJiJhZLMcUQV4LtGeIY9ixIqQhGvnZHE4A==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.267.0.tgz", + "integrity": "sha512-Krq36GXqEfRfzJ9wOzkkzpbb4SWjgSYydTIgK6KtKapme0HPcB24kmmsjsUVuHzKuQMCHHDRWm+b47iBmHGpSQ==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -930,21 +927,21 @@ } }, "node_modules/@aws-sdk/service-error-classification": { - "version": "3.229.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.229.0.tgz", - "integrity": "sha512-dnzWWQ0/NoWMUZ5C0DW3dPm0wC1O76Y/SpKbuJzWPkx1EYy6r8p32Ly4D9vUzrKDbRGf48YHIF2kOkBmu21CLg==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.267.0.tgz", + "integrity": "sha512-fOWg7bcItmJqD/YQbGvN9o03ucoBzvWNTQEB81mLKMSKr1Cf/ms0f8oa94LlImgqjjfjvAqHh6rUBTpSmSEyaw==", "optional": true, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/shared-ini-file-loader": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.226.0.tgz", - "integrity": "sha512-661VQefsARxVyyV2FX9V61V+nNgImk7aN2hYlFKla6BCwZfMng+dEtD0xVGyg1PfRw0qvEv5LQyxMVgHcUSevA==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.267.0.tgz", + "integrity": "sha512-Jz9R5hXKSk+aRoBKi4Bnf6T/FZUBYrIibbLnhiNxpQ1FY9mTggJR/rxuIdOE23LtfW+CRqqEYOtAtmC1oYE6tw==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -952,16 +949,17 @@ } }, "node_modules/@aws-sdk/signature-v4": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.226.0.tgz", - "integrity": "sha512-/R5q5agdPd7HJB68XMzpxrNPk158EHUvkFkuRu5Qf3kkkHebEzWEBlWoVpUe6ss4rP9Tqcue6xPuaftEmhjpYw==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.267.0.tgz", + "integrity": "sha512-Je1e7rum2zvxa3jWfwq4E+fyBdFJmSJAwGtWYz3+/rWipwXFlSAPeSVqtNjHdfzakgabvzLp7aesG4yQTrO2YQ==", "optional": true, "dependencies": { "@aws-sdk/is-array-buffer": "3.201.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "@aws-sdk/util-hex-encoding": "3.201.0", - "@aws-sdk/util-middleware": "3.226.0", + "@aws-sdk/util-middleware": "3.267.0", "@aws-sdk/util-uri-escape": "3.201.0", + "@aws-sdk/util-utf8": "3.254.0", "tslib": "^2.3.1" }, "engines": { @@ -969,13 +967,13 @@ } }, "node_modules/@aws-sdk/smithy-client": { - "version": "3.234.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.234.0.tgz", - "integrity": "sha512-8AtR/k4vsFvjXeQbIzq/Wy7Nbk48Ou0wUEeVYPHWHPSU8QamFWORkOwmKtKMfHAyZvmqiAPeQqHFkq+UJhWyyQ==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.267.0.tgz", + "integrity": "sha512-WdgXHqKmFQIkAWETO/I5boX9u6QbMLC4X74OVSBaBLhRjqYmvolMFtNrQzvSKGB3FaxAN9Do41amC0mGoeLC8A==", "optional": true, "dependencies": { - "@aws-sdk/middleware-stack": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/middleware-stack": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -983,15 +981,15 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.245.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.245.0.tgz", - "integrity": "sha512-m/spXR/vEXGb+zMqRUMQYVMwFZSTdK5RkddYqamYkNhIoLm60EYeRu57JsMMs5djKi8dBRSKiXwVHx0l2rXMjg==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.267.0.tgz", + "integrity": "sha512-CGayGrPl4ONG4RuGbNv+QS4oVuItx4hK2FCbFS7d6V7h53rkDrcFd34NsvbicQ2KVFobE7fKs6ZaripJbJbLHA==", "optional": true, "dependencies": { - "@aws-sdk/client-sso-oidc": "3.245.0", - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/shared-ini-file-loader": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/client-sso-oidc": "3.267.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/shared-ini-file-loader": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -999,9 +997,9 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.226.0.tgz", - "integrity": "sha512-MmmNHrWeO4man7wpOwrAhXlevqtOV9ZLcH4RhnG5LmRce0RFOApx24HoKENfFCcOyCm5LQBlsXCqi0dZWDWU0A==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.267.0.tgz", + "integrity": "sha512-fICTbSeIfXlTHnciQgDt37R0kXoKxgh0a3prnLWVvTcmf7NFujdZmg5YTAZT3KJJ7SuKsIgnI8azBYioVY8BVQ==", "optional": true, "dependencies": { "tslib": "^2.3.1" @@ -1011,13 +1009,13 @@ } }, "node_modules/@aws-sdk/url-parser": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.226.0.tgz", - "integrity": "sha512-p5RLE0QWyP0OcTOLmFcLdVgUcUEzmEfmdrnOxyNzomcYb0p3vUagA5zfa1HVK2azsQJFBv28GfvMnba9bGhObg==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.267.0.tgz", + "integrity": "sha512-xoQ5Fd11moiE82QTL9GGE6e73SFuD0Wi73tA75TAwKuY12OP5vDJ4oBC86A1G2T+OzeHJQmYyqiA5j48CzqB6A==", "optional": true, "dependencies": { - "@aws-sdk/querystring-parser": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/querystring-parser": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, @@ -1081,13 +1079,13 @@ } }, "node_modules/@aws-sdk/util-defaults-mode-browser": { - "version": "3.234.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.234.0.tgz", - "integrity": "sha512-IHMKXjTbOD8XMz5+2oCOsVP94BYb9YyjXdns0aAXr2NAo7k2+RCzXQ2DebJXppGda1F6opFutoKwyVSN0cmbMw==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.267.0.tgz", + "integrity": "sha512-MgrqpedA58HVR8RpT2A42//5Lb3M0JwEiYlDaA7EvIVsMx1NzO+cng4MDJi03YBAP5hwCVQmO9Sf5Au4dm+m0g==", "optional": true, "dependencies": { - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/types": "3.267.0", "bowser": "^2.11.0", "tslib": "^2.3.1" }, @@ -1096,16 +1094,16 @@ } }, "node_modules/@aws-sdk/util-defaults-mode-node": { - "version": "3.234.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.234.0.tgz", - "integrity": "sha512-UGjQ+OjBYYhxFVtUY+jtr0ZZgzZh6OHtYwRhFt8IHewJXFCfZTyfsbX20szBj5y1S4HRIUJ7cwBLIytTqMbI5w==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.267.0.tgz", + "integrity": "sha512-JyFk95T77sGM4q386id/mDt9/7HvoQySAygPyv/lj//WEJJIRKiefB277CKKJPT8nRAsO4mIyAT+YO/xGCxkQA==", "optional": true, "dependencies": { - "@aws-sdk/config-resolver": "3.234.0", - "@aws-sdk/credential-provider-imds": "3.226.0", - "@aws-sdk/node-config-provider": "3.226.0", - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/config-resolver": "3.267.0", + "@aws-sdk/credential-provider-imds": "3.267.0", + "@aws-sdk/node-config-provider": "3.267.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -1113,12 +1111,12 @@ } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.245.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.245.0.tgz", - "integrity": "sha512-UNOFquB1tKx+8RT8n82Zb5tIwDyZHVPBg/m0LB0RsLETjr6krien5ASpqWezsXKIR1hftN9uaxN4bvf2dZrWHg==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.267.0.tgz", + "integrity": "sha512-c6miY83Eo0erqXY+YiS2sOg3izURqvaWHd9przJzBQea9XRCN4ANT2P8AhoC0BPIORutaaOSoCSp/crHG0XLLg==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -1150,9 +1148,9 @@ } }, "node_modules/@aws-sdk/util-middleware": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.226.0.tgz", - "integrity": "sha512-B96CQnwX4gRvQdaQkdUtqvDPkrptV5+va6FVeJOocU/DbSYMAScLxtR3peMS8cnlOT6nL1Eoa42OI9AfZz1VwQ==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.267.0.tgz", + "integrity": "sha512-7nvqBZVz3RdwYv6lU958g6sWI2Qt8lzxDVn0uwfnPH+fAiX7Ln1Hen2A0XeW5cL5uYUJy6wNM5cyfTzFZosE0A==", "optional": true, "dependencies": { "tslib": "^2.3.1" @@ -1162,12 +1160,12 @@ } }, "node_modules/@aws-sdk/util-retry": { - "version": "3.229.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.229.0.tgz", - "integrity": "sha512-0zKTqi0P1inD0LzIMuXRIYYQ/8c1lWMg/cfiqUcIAF1TpatlpZuN7umU0ierpBFud7S+zDgg0oemh+Nj8xliJw==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.267.0.tgz", + "integrity": "sha512-ZXo1ICG2HgxkIZWlnPteh2R90kwmhRwvbP282CwrrYgTKuMZmW2R/+o6vqhWyPkjoNFN/pno0FxuDA3IYau3Sw==", "optional": true, "dependencies": { - "@aws-sdk/service-error-classification": "3.229.0", + "@aws-sdk/service-error-classification": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -1187,24 +1185,24 @@ } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.226.0.tgz", - "integrity": "sha512-PhBIu2h6sPJPcv2I7ELfFizdl5pNiL4LfxrasMCYXQkJvVnoXztHA1x+CQbXIdtZOIlpjC+6BjDcE0uhnpvfcA==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.267.0.tgz", + "integrity": "sha512-SmI6xInnPPa0gFhCqhtWOUMTxLeRbm7X5HXzeprhK1d8aNNlUVyALAV7K8ovIjnv3a97lIJSekyb78oTuYITCA==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "bowser": "^2.11.0", "tslib": "^2.3.1" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.226.0.tgz", - "integrity": "sha512-othPc5Dz/pkYkxH+nZPhc1Al0HndQT8zHD4e9h+EZ+8lkd8n+IsnLfTS/mSJWrfiC6UlNRVw55cItstmJyMe/A==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.267.0.tgz", + "integrity": "sha512-nfmyffA1yIypJ30CIMO6Tc16t8dFJzdztzoowjmnfb8/LzTZECERM3GICq0DvZDPfSo+jbuz634VtS2K7tVZjA==", "optional": true, "dependencies": { - "@aws-sdk/node-config-provider": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/node-config-provider": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" }, "engines": { @@ -1219,19 +1217,10 @@ } } }, - "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==", + "node_modules/@aws-sdk/util-utf8": { + "version": "3.254.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.254.0.tgz", + "integrity": "sha512-14Kso/eIt5/qfIBmhEL9L1IfyUqswjSTqO2mY7KOzUZ9SZbwn3rpxmtkhmATkRjD7XIlLKaxBkI7tU9Zjzj8Kw==", "optional": true, "dependencies": { "@aws-sdk/util-buffer-from": "3.208.0", @@ -1241,6 +1230,15 @@ "node": ">=14.0.0" } }, + "node_modules/@aws-sdk/util-utf8-browser": { + "version": "3.259.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", + "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", + "optional": true, + "dependencies": { + "tslib": "^2.3.1" + } + }, "node_modules/@azure/abort-controller": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", @@ -1265,9 +1263,9 @@ } }, "node_modules/@azure/core-client": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.6.1.tgz", - "integrity": "sha512-mZ1MSKhZBYoV8GAWceA+PEJFWV2VpdNSpxxcj1wjIAOi00ykRuIQChT99xlQGZWLY3/NApWhSImlFwsmCEs4vA==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.7.1.tgz", + "integrity": "sha512-85igXpc5V7ns6rvMEpLmIcBDftjUgTWD+0tmYPyQEfPfkAwpPTs1X5rhCDsfqvUZGA8Ksid1hdZGu62r6XXeHg==", "dependencies": { "@azure/abort-controller": "^1.0.0", "@azure/core-auth": "^1.4.0", @@ -1278,7 +1276,7 @@ "tslib": "^2.2.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" } }, "node_modules/@azure/core-http-compat": { @@ -1295,22 +1293,22 @@ } }, "node_modules/@azure/core-lro": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.4.0.tgz", - "integrity": "sha512-F65+rYkll1dpw3RGm8/SSiSj+/QkMeYDanzS/QKlM1dmuneVyXbO46C88V1MRHluLGdMP6qfD3vDRYALn0z0tQ==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.5.1.tgz", + "integrity": "sha512-JHQy/bA3NOz2WuzOi5zEk6n/TJdAropupxUT521JIJvW7EXV2YN2SFYZrf/2RHeD28QAClGdynYadZsbmP+nyQ==", "dependencies": { "@azure/abort-controller": "^1.0.0", "@azure/logger": "^1.0.0", "tslib": "^2.2.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" } }, "node_modules/@azure/core-paging": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.4.0.tgz", - "integrity": "sha512-tabFtZTg8D9XqZKEfNUOGh63SuYeOxmvH4GDcOJN+R1bZWZ1FZskctgY9Pmuwzhn+0Xvq9rmimK9hsvtLkeBsw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.5.0.tgz", + "integrity": "sha512-zqWdVIt+2Z+3wqxEOGzR5hXFZ8MGKK52x4vFLw8n58pR6ZfKRx3EXYTxTaYxYHc/PexPUTyimcTWFJbji9Z6Iw==", "dependencies": { "tslib": "^2.2.0" }, @@ -1319,9 +1317,9 @@ } }, "node_modules/@azure/core-rest-pipeline": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.10.0.tgz", - "integrity": "sha512-m6c4iAalfaf6sytOOQhLKFprEHSkSjQuRgkW7MTMnAN+GENDDL4XZJp7WKFnq9VpKUE+ggq+rp5xX9GI93lumw==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.10.1.tgz", + "integrity": "sha512-Kji9k6TOFRDB5ZMTw8qUf2IJ+CeJtsuMdAHox9eqpTf1cefiNMpzrfnF6sINEBZJsaVaWgQ0o48B6kcUH68niA==", "dependencies": { "@azure/abort-controller": "^1.0.0", "@azure/core-auth": "^1.4.0", @@ -1439,20 +1437,20 @@ } }, "node_modules/@azure/msal-browser": { - "version": "2.32.1", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.32.1.tgz", - "integrity": "sha512-2G3B12ZEIpiimi6/Yqq7KLk4ud1zZWoHvVd2kJ2VthN1HjMsZjdMUxeHkwMWaQ6RzO6mv9rZiuKmRX64xkXW9g==", + "version": "2.33.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.33.0.tgz", + "integrity": "sha512-c7CVh1tfUfxiWkEIhoIb11hL4PGo4hz0M+gMy34ATagAKdLK7qyEu/5AXJWAf5lz5eE+vQhm7+LKiuETrcXXGw==", "dependencies": { - "@azure/msal-common": "^9.0.1" + "@azure/msal-common": "^10.0.0" }, "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-browser/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": "10.0.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-10.0.0.tgz", + "integrity": "sha512-/LghpT93jsZLy55QzTsRZWMx6R1Mjc1Aktwps8sKSGE3WbrGwbSsh2uhDlpl6FMcKChYjJ0ochThWwwOodrQNg==", "engines": { "node": ">=0.8.0" } @@ -1466,11 +1464,11 @@ } }, "node_modules/@azure/msal-node": { - "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==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.15.0.tgz", + "integrity": "sha512-fwC5M0c8pxOAzmScPbpx7j28YVTDebUaizlVF7bR0xvlU0r3VWW5OobCcr9ybqKS6wGyO7u4EhXJS9rjRWAuwA==", "dependencies": { - "@azure/msal-common": "^9.0.2", + "@azure/msal-common": "^10.0.0", "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" }, @@ -1479,9 +1477,9 @@ } }, "node_modules/@azure/msal-node/node_modules/@azure/msal-common": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.2.tgz", - "integrity": "sha512-qzwxuF8kZAp+rNUactMCgJh8fblq9D4lSqrrIxMDzLjgSZtjN32ix7r/HBe8QdOr76II9SVVPcMkX4sPzPfQ7w==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-10.0.0.tgz", + "integrity": "sha512-/LghpT93jsZLy55QzTsRZWMx6R1Mjc1Aktwps8sKSGE3WbrGwbSsh2uhDlpl6FMcKChYjJ0ochThWwwOodrQNg==", "engines": { "node": ">=0.8.0" } @@ -1499,34 +1497,34 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.20.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", - "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", + "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz", + "integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.7.tgz", - "integrity": "sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==", + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", + "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", "@babel/generator": "^7.20.7", "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.20.7", + "@babel/helper-module-transforms": "^7.20.11", "@babel/helpers": "^7.20.7", "@babel/parser": "^7.20.7", "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", + "@babel/traverse": "^7.20.12", "@babel/types": "^7.20.7", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", + "json5": "^2.2.2", "semver": "^6.3.0" }, "engines": { @@ -1556,9 +1554,9 @@ } }, "node_modules/@babel/generator": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", - "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", + "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz", + "integrity": "sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==", "dev": true, "dependencies": { "@babel/types": "^7.20.7", @@ -1626,9 +1624,9 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.7.tgz", - "integrity": "sha512-LtoWbDXOaidEf50hmdDqn9g8VEzsorMexoWMQdQODbvmqYmaF23pBP5VNPAGIFHsFQCIeKokDiz3CH5Y2jlY6w==", + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz", + "integrity": "sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -1637,6 +1635,7 @@ "@babel/helper-member-expression-to-functions": "^7.20.7", "@babel/helper-optimise-call-expression": "^7.18.6", "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", "@babel/helper-split-export-declaration": "^7.18.6" }, "engines": { @@ -1903,13 +1902,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", - "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", + "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==", "dev": true, "dependencies": { "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", + "@babel/traverse": "^7.20.13", "@babel/types": "^7.20.7" }, "engines": { @@ -1931,9 +1930,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", - "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", + "version": "7.20.15", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz", + "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -2502,9 +2501,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz", - "integrity": "sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==", + "version": "7.20.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.15.tgz", + "integrity": "sha512-Vv4DMZ6MiNOhu/LdaZsT/bsLRxgL94d269Mv4R/9sp6+Mp++X/JqypZYypJXLlM4mlL352/Egzbzr98iABH1CA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.20.2" @@ -3066,10 +3065,16 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, "node_modules/@babel/runtime": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz", - "integrity": "sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", + "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", "dependencies": { "regenerator-runtime": "^0.13.11" }, @@ -3078,9 +3083,9 @@ } }, "node_modules/@babel/standalone": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.20.11.tgz", - "integrity": "sha512-WUPlwwXFk3iViGE7QFVVp423eVtT+eoXu1940Xu4QJgqgHBF6WWtlwO1Ip5rIWQnp7OHrGdwrwKLtLhUVfOZbA==", + "version": "7.20.15", + "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.20.15.tgz", + "integrity": "sha512-B3LmZ1NHlTb2eFEaw8rftZc730Wh9MlmsH8ubb6IjsNoIk9+SQ2aAA0nrm/1806+PftPRAACPClmKTu8PG7Tew==", "dev": true, "engines": { "node": ">=6.9.0" @@ -3101,9 +3106,9 @@ } }, "node_modules/@babel/traverse": { - "version": "7.20.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.10.tgz", - "integrity": "sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", + "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", @@ -3112,7 +3117,7 @@ "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.7", + "@babel/parser": "^7.20.13", "@babel/types": "^7.20.7", "debug": "^4.1.0", "globals": "^11.1.0" @@ -3160,9 +3165,9 @@ } }, "node_modules/@cypress/request": { - "version": "2.88.10", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", - "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==", + "version": "2.88.11", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.11.tgz", + "integrity": "sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w==", "dev": true, "dependencies": { "aws-sign2": "~0.7.0", @@ -3178,7 +3183,7 @@ "json-stringify-safe": "~5.0.1", "mime-types": "~2.1.19", "performance-now": "^2.1.0", - "qs": "~6.5.2", + "qs": "~6.10.3", "safe-buffer": "^5.1.2", "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", @@ -3277,9 +3282,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.19.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", - "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -3353,9 +3358,9 @@ } }, "node_modules/@fortawesome/vue-fontawesome": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.2.tgz", - "integrity": "sha512-xHVtVY8ASUeEvgcA/7vULUesENhD+pi/EirRHdMBqooHlXBqK+yrV6d8tUye1m5UKQKVgYAHMhUBfOnoiwvc8Q==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.3.tgz", + "integrity": "sha512-KCPHi9QemVXGMrfuwf3nNnNo129resAIQWut9QTAMXmXqL2ErABC6ohd2yY5Ipq0CLWNbKHk8TMdTXL/Zf3ZhA==", "dev": true, "peerDependencies": { "@fortawesome/fontawesome-svg-core": "~1 || ~6", @@ -4200,9 +4205,9 @@ } }, "node_modules/@js-joda/core": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@js-joda/core/-/core-5.5.1.tgz", - "integrity": "sha512-oTFmkyv5MhgkHdZhoe5lwRoKW0t4njPvK3g7ODvK/prkoC5bwylKcyQJMsmjvgHBXoy4u5iLnB5yQ7AljouHAA==" + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@js-joda/core/-/core-5.5.2.tgz", + "integrity": "sha512-retLUN4TwCJ0QJDi9OCJwYVaXAz93NeOkEtEQL98M2bykBOxmURlP0YlfsuE46kItOOVZIWRYC3KsSLhQ1R2Qw==" }, "node_modules/@louislam/ping": { "version": "0.4.2-mod.1", @@ -4644,13 +4649,13 @@ } }, "node_modules/@types/babel__core": { - "version": "7.1.20", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz", - "integrity": "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", + "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", "dev": true, "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" @@ -4748,20 +4753,20 @@ } }, "node_modules/@types/express": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.15.tgz", - "integrity": "sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==", + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", "dependencies": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.31", + "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "*" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.32", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz", - "integrity": "sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==", + "version": "4.17.33", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz", + "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -4769,9 +4774,9 @@ } }, "node_modules/@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", "dev": true, "dependencies": { "@types/node": "*" @@ -4866,9 +4871,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.11.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", - "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" + "version": "18.13.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.13.0.tgz", + "integrity": "sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==" }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", @@ -4998,39 +5003,39 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz", - "integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==", + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.47.tgz", + "integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==", "dev": true, "dependencies": { "@babel/parser": "^7.16.4", - "@vue/shared": "3.2.45", + "@vue/shared": "3.2.47", "estree-walker": "^2.0.2", "source-map": "^0.6.1" } }, "node_modules/@vue/compiler-dom": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz", - "integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==", + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz", + "integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==", "dev": true, "dependencies": { - "@vue/compiler-core": "3.2.45", - "@vue/shared": "3.2.45" + "@vue/compiler-core": "3.2.47", + "@vue/shared": "3.2.47" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz", - "integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==", + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz", + "integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==", "dev": true, "dependencies": { "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.45", - "@vue/compiler-dom": "3.2.45", - "@vue/compiler-ssr": "3.2.45", - "@vue/reactivity-transform": "3.2.45", - "@vue/shared": "3.2.45", + "@vue/compiler-core": "3.2.47", + "@vue/compiler-dom": "3.2.47", + "@vue/compiler-ssr": "3.2.47", + "@vue/reactivity-transform": "3.2.47", + "@vue/shared": "3.2.47", "estree-walker": "^2.0.2", "magic-string": "^0.25.7", "postcss": "^8.1.10", @@ -5047,19 +5052,19 @@ } }, "node_modules/@vue/compiler-ssr": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz", - "integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==", + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz", + "integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==", "dev": true, "dependencies": { - "@vue/compiler-dom": "3.2.45", - "@vue/shared": "3.2.45" + "@vue/compiler-dom": "3.2.47", + "@vue/shared": "3.2.47" } }, "node_modules/@vue/devtools-api": { - "version": "6.4.5", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.4.5.tgz", - "integrity": "sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz", + "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==", "dev": true }, "node_modules/@vue/reactivity": { @@ -5072,14 +5077,14 @@ } }, "node_modules/@vue/reactivity-transform": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz", - "integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==", + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz", + "integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==", "dev": true, "dependencies": { "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.45", - "@vue/shared": "3.2.45", + "@vue/compiler-core": "3.2.47", + "@vue/shared": "3.2.47", "estree-walker": "^2.0.2", "magic-string": "^0.25.7" } @@ -5184,9 +5189,9 @@ "dev": true }, "node_modules/@vue/shared": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz", - "integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==", + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz", + "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==", "dev": true }, "node_modules/@vuepic/vue-datepicker": { @@ -5228,9 +5233,9 @@ } }, "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -5577,6 +5582,17 @@ "node": ">= 4.0.0" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/await-lock": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz", @@ -5592,9 +5608,9 @@ } }, "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", "devOptional": true }, "node_modules/axios": { @@ -5889,11 +5905,6 @@ "readable-stream": "~1.0.2" } }, - "node_modules/barse/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" - }, "node_modules/barse/node_modules/readable-stream": { "version": "1.0.34", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", @@ -6150,9 +6161,9 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", "dev": true, "funding": [ { @@ -6165,10 +6176,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" }, "bin": { "browserslist": "cli.js" @@ -6274,13 +6285,13 @@ } }, "node_modules/cacheable-request": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.5.tgz", - "integrity": "sha512-5RwYYCfzjNPsyJxb/QpaM0bfzx+kw5/YpDhZPm9oMIDntHFQ9YXeyV47ZvzlTE0XrrrbyO2UITJH4GF9eRLdXQ==", + "version": "10.2.7", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.7.tgz", + "integrity": "sha512-I4SA6mKgDxcxVbSt/UmIkb9Ny8qSkg6ReBHtAAXnZHk7KOSx5g3DTiAOaYzcHCs6oOdHn+bip9T48E6tMvK9hw==", "dependencies": { "@types/http-cache-semantics": "^4.0.1", "get-stream": "^6.0.1", - "http-cache-semantics": "^4.1.0", + "http-cache-semantics": "^4.1.1", "keyv": "^4.5.2", "mimic-response": "^4.0.0", "normalize-url": "^8.0.0", @@ -6357,10 +6368,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/camelcase-keys/node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/caniuse-lite": { - "version": "1.0.30001441", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz", - "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==", + "version": "1.0.30001451", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001451.tgz", + "integrity": "sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w==", "dev": true, "funding": [ { @@ -7032,9 +7052,9 @@ ] }, "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "engines": { "node": ">= 0.6" } @@ -7070,9 +7090,9 @@ } }, "node_modules/core-js-compat": { - "version": "3.27.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.1.tgz", - "integrity": "sha512-Dg91JFeCDA17FKnneN7oCMz4BkQ4TcffkgHP4OWwp9yx3pi7ubqMDXXSacfNak1PQqjc95skyt+YBLHQJnkJwA==", + "version": "3.27.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.2.tgz", + "integrity": "sha512-welaYuF7ZtbYKGrIy7y3eb40d37rG1FvzEOfe7hSLd2iD6duMDqUhRfSvCGyC46HhR6Y8JXXdZ2lnRUMkPBpvg==", "dev": true, "dependencies": { "browserslist": "^4.21.4" @@ -7586,9 +7606,9 @@ "dev": true }, "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", + "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", "dev": true, "engines": { "node": ">=0.10.0" @@ -7865,9 +7885,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "version": "1.4.294", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.294.tgz", + "integrity": "sha512-PuHZB3jEN7D8WPPjLmBQAsqQz8tWHlkkB4n0E2OYw8RwVdmBYV0Wn+rUFH8JqYyIRb4HQhhedgxlZL163wqLrQ==", "dev": true }, "node_modules/emittery": { @@ -7962,9 +7982,9 @@ } }, "node_modules/engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz", + "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==", "engines": { "node": ">=10.0.0" } @@ -8031,26 +8051,32 @@ } }, "node_modules/es-abstract": { - "version": "1.20.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz", - "integrity": "sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==", + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", + "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", "dependencies": { + "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "function.prototype.name": "^1.1.5", "get-intrinsic": "^1.1.3", "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", "gopd": "^1.0.1", "has": "^1.0.3", "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", + "internal-slot": "^1.0.4", + "is-array-buffer": "^3.0.1", "is-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", "is-weakref": "^1.0.2", "object-inspect": "^1.12.2", "object-keys": "^1.1.1", @@ -8059,7 +8085,9 @@ "safe-regex-test": "^1.0.0", "string.prototype.trimend": "^1.0.6", "string.prototype.trimstart": "^1.0.6", - "unbox-primitive": "^1.0.2" + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" }, "engines": { "node": ">= 0.4" @@ -8088,6 +8116,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -8803,9 +8844,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.19.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", - "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -9448,6 +9489,14 @@ } } }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -9504,6 +9553,12 @@ "readable-stream": "^2.0.0" } }, + "node_modules/from2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, "node_modules/from2/node_modules/readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -9626,9 +9681,9 @@ } }, "node_modules/gamedig": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/gamedig/-/gamedig-4.0.5.tgz", - "integrity": "sha512-ROwljeTH8fcF44wi+NfTBdYSmiwtI5f1CJyGUx1DGVDvx7w2bfTxYSwR8FFFLCpNr78mtSwhsBONz1WZ5ucVig==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/gamedig/-/gamedig-4.0.6.tgz", + "integrity": "sha512-h0k9n/e5vNrd9Mh2wyFUp2Vo7ABWbDkdBxKC6FNJLOZiU5d9Z29bntGeYbXtOkcRWoV6Q63wSAJ3jLWxYQkpZw==", "dependencies": { "cheerio": "^1.0.0-rc.10", "compressjs": "^1.0.2", @@ -9720,9 +9775,9 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -10080,6 +10135,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -10204,9 +10270,9 @@ } }, "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" }, "node_modules/http-errors": { "version": "1.8.1", @@ -10273,17 +10339,6 @@ "node": ">=10.19.0" } }, - "node_modules/http2-wrapper/node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -10314,9 +10369,9 @@ } }, "node_modules/hyperid": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/hyperid/-/hyperid-3.0.1.tgz", - "integrity": "sha512-I+tl7TS5nsoVhkxqX1rS3Qmqlq44eoPUcgPthW8v3IW8CvWL7lwtd6HQbkDUMrBKJTG0vgEaRsjT35imW/D+9Q==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/hyperid/-/hyperid-3.1.1.tgz", + "integrity": "sha512-RveV33kIksycSf7HLkq1sHB5wW0OwuX8ot8MYnY++gaaPXGFfKpBncHrAWxdpuEeRlazUMGWefwP1w6o6GaumA==", "dev": true, "dependencies": { "uuid": "^8.3.2", @@ -10448,11 +10503,11 @@ } }, "node_modules/internal-slot": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", - "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", "dependencies": { - "get-intrinsic": "^1.1.3", + "get-intrinsic": "^1.2.0", "has": "^1.0.3", "side-channel": "^1.0.4" }, @@ -10481,6 +10536,19 @@ "node": ">= 0.10" } }, + "node_modules/is-array-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", + "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -10834,6 +10902,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -10886,9 +10972,9 @@ } }, "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" }, "node_modules/isemail": { "version": "3.2.0", @@ -12810,9 +12896,13 @@ "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==" }, "node_modules/js-sdsl": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz", - "integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==" + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } }, "node_modules/js-tokens": { "version": "4.0.0", @@ -13142,9 +13232,9 @@ } }, "node_modules/knex": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/knex/-/knex-2.4.0.tgz", - "integrity": "sha512-i0GWwqYp1Hs2yvc2rlDO6nzzkLhwdyOZKRdsMTB8ZxOs2IXQyL5rBjSbS1krowCh6V65T4X9CJaKtuIfkaPGSA==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/knex/-/knex-2.4.2.tgz", + "integrity": "sha512-tMI1M7a+xwHhPxjbl/H9K1kHX+VncEYcvCx5K00M16bWvpYPKAZd6QrCu68PtHAdIZNQPWZn0GVhqVBEthGWCg==", "dependencies": { "colorette": "2.0.19", "commander": "^9.1.0", @@ -13822,9 +13912,9 @@ } }, "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -13844,21 +13934,13 @@ } }, "node_modules/minipass": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", - "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", - "dependencies": { - "yallist": "^4.0.0" - }, + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.3.tgz", + "integrity": "sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw==", "engines": { "node": ">=8" } }, - "node_modules/minipass/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/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", @@ -14062,9 +14144,9 @@ } }, "node_modules/mssql/node_modules/commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "engines": { "node": "^12.20.0 || >=14" } @@ -14104,30 +14186,24 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/named-placeholders": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.2.tgz", - "integrity": "sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", + "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", "dependencies": { - "lru-cache": "^4.1.3" + "lru-cache": "^7.14.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=12.0.0" } }, "node_modules/named-placeholders/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "engines": { + "node": ">=12" } }, - "node_modules/named-placeholders/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" - }, "node_modules/nanoclone": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz", @@ -14165,9 +14241,9 @@ } }, "node_modules/node-abort-controller": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.0.1.tgz", - "integrity": "sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==" }, "node_modules/node-addon-api": { "version": "4.3.0", @@ -14183,9 +14259,9 @@ } }, "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -14297,6 +14373,12 @@ "node": ">=0.10.0" } }, + "node_modules/node-gyp/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "optional": true + }, "node_modules/node-gyp/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -14414,9 +14496,9 @@ "integrity": "sha512-i3Sf6khnenl0aXumo0whAlfPWTaBqHxEnVBBxpu3dZ7q69NkPPv71rvPjlDZ5wkeKCTNNUTECljerS5kcYQxRw==" }, "node_modules/node-releases": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", - "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", "dev": true }, "node_modules/nodemailer": { @@ -14558,12 +14640,12 @@ } }, "node_modules/number-allocator": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.12.tgz", - "integrity": "sha512-sGB0qoQGmKimery9JubBQ9pQUr1V/LixJAk3Ygp7obZf6mpSXime8d7XHEobbIimkdZpgjkNlLt6G7LPEWFYWg==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.14.tgz", + "integrity": "sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==", "dependencies": { "debug": "^4.3.1", - "js-sdsl": "4.1.4" + "js-sdsl": "4.3.0" } }, "node_modules/number-is-nan": { @@ -14604,9 +14686,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -14679,9 +14761,9 @@ } }, "node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.1.tgz", + "integrity": "sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg==", "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -14990,9 +15072,9 @@ } }, "node_modules/pg-protocol": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz", - "integrity": "sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", + "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" }, "node_modules/pg-types": { "version": "2.2.0", @@ -15091,9 +15173,9 @@ } }, "node_modules/postcss": { - "version": "8.4.20", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz", - "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==", + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", "dev": true, "funding": [ { @@ -15130,9 +15212,9 @@ } }, "node_modules/postcss-html/node_modules/js-tokens": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-8.0.0.tgz", - "integrity": "sha512-PC7MzqInq9OqKyTXfIvQNcjMkODJYC8A17kAaQgeW79yfhqTWSOfjHYQ2mDDcwJ96Iibtwkfh0C7R/OvqPlgVA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-8.0.1.tgz", + "integrity": "sha512-3AGrZT6tuMm1ZWWn9mLXh7XMfi2YtiLNPALCVxBCiUVq0LD1OQMxV/AdS/s7rLJU5o9i/jBZw/N4vXXL5dm29A==", "dev": true }, "node_modules/postcss-media-query-parser": { @@ -15414,11 +15496,6 @@ "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", "dev": true }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" - }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -15435,9 +15512,9 @@ } }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "engines": { "node": ">=6" } @@ -15578,12 +15655,18 @@ } }, "node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "devOptional": true, + "version": "6.10.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", + "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, "engines": { "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/querystringify": { @@ -15613,12 +15696,14 @@ ] }, "node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true, + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/radius": { @@ -15894,14 +15979,14 @@ } }, "node_modules/regexpu-core": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", - "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.0.tgz", + "integrity": "sha512-ZdhUQlng0RoscyW7jADnUZ25F5eVtHdMyXSb2PiwafvteRAOJUjFoUPEYZSIfP99fBIs3maLIRfpEddT78wAAQ==", "dev": true, "dependencies": { + "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" @@ -15910,12 +15995,6 @@ "node": ">=4" } }, - "node_modules/regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, "node_modules/regjsparser": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", @@ -16027,6 +16106,15 @@ "node": ">=0.6.0" } }, + "node_modules/request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "optional": true, + "engines": { + "node": ">=0.6" + } + }, "node_modules/request/node_modules/uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", @@ -16118,9 +16206,9 @@ } }, "node_modules/resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", + "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", "dev": true, "engines": { "node": ">=10" @@ -16554,9 +16642,9 @@ } }, "node_modules/shell-quote": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", - "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", + "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -16687,9 +16775,9 @@ } }, "node_modules/socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.2.tgz", + "integrity": "sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" @@ -16959,6 +17047,11 @@ "readable-stream": "^2.1.0" } }, + "node_modules/string-to-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, "node_modules/string-to-stream/node_modules/readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -17659,9 +17752,9 @@ } }, "node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" }, "node_modules/tunnel": { "version": "0.0.6", @@ -17735,6 +17828,19 @@ "node": ">= 0.6" } }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -18349,9 +18455,9 @@ } }, "node_modules/vue-multiselect": { - "version": "3.0.0-alpha.2", - "resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-3.0.0-alpha.2.tgz", - "integrity": "sha512-Xp9fGJECns45v+v8jXbCIsAkCybYkEg0lNwr7Z6HDUSMyx2TEIK2giipPE+qXiShEc1Ipn+ZtttH2iq9hwXP4Q==", + "version": "3.0.0-beta.1", + "resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-3.0.0-beta.1.tgz", + "integrity": "sha512-V+jpydtjyHcQ+yjHsEWEBrDAopOx/pufNkSAXNVDAGQ+ESDEJ7wYejNd9H1RiCnFOYK4yf1XSGqE+Mp3HJXmdg==", "dev": true, "engines": { "node": ">= 4.0.0", @@ -18555,15 +18661,15 @@ } }, "node_modules/wait-on/node_modules/joi": { - "version": "17.7.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz", - "integrity": "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==", + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.1.tgz", + "integrity": "sha512-teoLhIvWE298R6AeJywcjR4sX2hHjB3/xJX4qPjg+gTg+c0mzUDsziYlqPmLomq9gVsfaMcgPaGc7VxtD/9StA==", "dev": true, "dependencies": { "@hapi/hoek": "^9.0.0", "@hapi/topo": "^5.0.0", "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.0", + "@sideway/formula": "^3.0.1", "@sideway/pinpoint": "^2.0.0" } }, @@ -18662,6 +18768,25 @@ "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", "dev": true }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -18944,9 +19069,9 @@ } }, "@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==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", + "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", "optional": true, "requires": { "tslib": "^1.11.1" @@ -18961,16 +19086,16 @@ } }, "@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==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", + "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", "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-crypto/ie11-detection": "^3.0.0", + "@aws-crypto/sha256-js": "^3.0.0", + "@aws-crypto/supports-web-crypto": "^3.0.0", + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-locate-window": "^3.0.0", "@aws-sdk/util-utf8-browser": "^3.0.0", "tslib": "^1.11.1" @@ -18985,13 +19110,13 @@ } }, "@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==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", + "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", "optional": true, "requires": { - "@aws-crypto/util": "^2.0.0", - "@aws-sdk/types": "^3.1.0", + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", "tslib": "^1.11.1" }, "dependencies": { @@ -19004,9 +19129,9 @@ } }, "@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==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", + "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", "optional": true, "requires": { "tslib": "^1.11.1" @@ -19021,12 +19146,12 @@ } }, "@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==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", "optional": true, "requires": { - "@aws-sdk/types": "^3.110.0", + "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-utf8-browser": "^3.0.0", "tslib": "^1.11.1" }, @@ -19040,361 +19165,358 @@ } }, "@aws-sdk/abort-controller": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.226.0.tgz", - "integrity": "sha512-cJVzr1xxPBd08voknXvR0RLgtZKGKt6WyDpH/BaPCu3rfSqWCDZKzwqe940eqosjmKrxC6pUZNKASIqHOQ8xxQ==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.267.0.tgz", + "integrity": "sha512-5R7OSnHFV/f+qQpMf1RuSQoVdXroK94Vl6naWjMOAhMyofHykVhEok9hmFPac86AVx8rVX/vuA7u9GKI6/EE7g==", "optional": true, "requires": { - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/client-cognito-identity": { - "version": "3.245.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.245.0.tgz", - "integrity": "sha512-c5briTS05rAioO5b84bVng9M1KyAXcxJtDHeuoeAAZBuU+Dd0Scg3vyXyAFlGI+TsNyxqHAqqRdAoG4WNxJo/Q==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.267.0.tgz", + "integrity": "sha512-jEE5aw7wp7VhiaU0vCbNQbEIhiaNZnBhRj+vJVCd2HQBI9IVLVXAoyExWxLruAXKEO+A1w1df+fwZAOo0M7aQQ==", "optional": true, "requires": { - "@aws-crypto/sha256-browser": "2.0.0", - "@aws-crypto/sha256-js": "2.0.0", - "@aws-sdk/client-sts": "3.245.0", - "@aws-sdk/config-resolver": "3.234.0", - "@aws-sdk/credential-provider-node": "3.245.0", - "@aws-sdk/fetch-http-handler": "3.226.0", - "@aws-sdk/hash-node": "3.226.0", - "@aws-sdk/invalid-dependency": "3.226.0", - "@aws-sdk/middleware-content-length": "3.226.0", - "@aws-sdk/middleware-endpoint": "3.226.0", - "@aws-sdk/middleware-host-header": "3.226.0", - "@aws-sdk/middleware-logger": "3.226.0", - "@aws-sdk/middleware-recursion-detection": "3.226.0", - "@aws-sdk/middleware-retry": "3.235.0", - "@aws-sdk/middleware-serde": "3.226.0", - "@aws-sdk/middleware-signing": "3.226.0", - "@aws-sdk/middleware-stack": "3.226.0", - "@aws-sdk/middleware-user-agent": "3.226.0", - "@aws-sdk/node-config-provider": "3.226.0", - "@aws-sdk/node-http-handler": "3.226.0", - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/smithy-client": "3.234.0", - "@aws-sdk/types": "3.226.0", - "@aws-sdk/url-parser": "3.226.0", + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.267.0", + "@aws-sdk/config-resolver": "3.267.0", + "@aws-sdk/credential-provider-node": "3.267.0", + "@aws-sdk/fetch-http-handler": "3.267.0", + "@aws-sdk/hash-node": "3.267.0", + "@aws-sdk/invalid-dependency": "3.267.0", + "@aws-sdk/middleware-content-length": "3.267.0", + "@aws-sdk/middleware-endpoint": "3.267.0", + "@aws-sdk/middleware-host-header": "3.267.0", + "@aws-sdk/middleware-logger": "3.267.0", + "@aws-sdk/middleware-recursion-detection": "3.267.0", + "@aws-sdk/middleware-retry": "3.267.0", + "@aws-sdk/middleware-serde": "3.267.0", + "@aws-sdk/middleware-signing": "3.267.0", + "@aws-sdk/middleware-stack": "3.267.0", + "@aws-sdk/middleware-user-agent": "3.267.0", + "@aws-sdk/node-config-provider": "3.267.0", + "@aws-sdk/node-http-handler": "3.267.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/smithy-client": "3.267.0", + "@aws-sdk/types": "3.267.0", + "@aws-sdk/url-parser": "3.267.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.234.0", - "@aws-sdk/util-defaults-mode-node": "3.234.0", - "@aws-sdk/util-endpoints": "3.245.0", - "@aws-sdk/util-retry": "3.229.0", - "@aws-sdk/util-user-agent-browser": "3.226.0", - "@aws-sdk/util-user-agent-node": "3.226.0", - "@aws-sdk/util-utf8-browser": "3.188.0", - "@aws-sdk/util-utf8-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.267.0", + "@aws-sdk/util-defaults-mode-node": "3.267.0", + "@aws-sdk/util-endpoints": "3.267.0", + "@aws-sdk/util-retry": "3.267.0", + "@aws-sdk/util-user-agent-browser": "3.267.0", + "@aws-sdk/util-user-agent-node": "3.267.0", + "@aws-sdk/util-utf8": "3.254.0", "tslib": "^2.3.1" } }, "@aws-sdk/client-sso": { - "version": "3.245.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.245.0.tgz", - "integrity": "sha512-dxzRwRo55ZNQ4hQigC+cishxLSWlBrbr3iszG0FLviavLDOlnVG5UUxWpOIGvwr8pYiSfM4jnfMxiwYwiCLg1g==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.267.0.tgz", + "integrity": "sha512-/475/mT0gYhimpCdK4iZW+eX0DT6mkTgVk5P9ARpQGzEblFM6i2pE7GQnlGeLyHVOtA0cNAyGrWUuj2pyigUaA==", "optional": true, "requires": { - "@aws-crypto/sha256-browser": "2.0.0", - "@aws-crypto/sha256-js": "2.0.0", - "@aws-sdk/config-resolver": "3.234.0", - "@aws-sdk/fetch-http-handler": "3.226.0", - "@aws-sdk/hash-node": "3.226.0", - "@aws-sdk/invalid-dependency": "3.226.0", - "@aws-sdk/middleware-content-length": "3.226.0", - "@aws-sdk/middleware-endpoint": "3.226.0", - "@aws-sdk/middleware-host-header": "3.226.0", - "@aws-sdk/middleware-logger": "3.226.0", - "@aws-sdk/middleware-recursion-detection": "3.226.0", - "@aws-sdk/middleware-retry": "3.235.0", - "@aws-sdk/middleware-serde": "3.226.0", - "@aws-sdk/middleware-stack": "3.226.0", - "@aws-sdk/middleware-user-agent": "3.226.0", - "@aws-sdk/node-config-provider": "3.226.0", - "@aws-sdk/node-http-handler": "3.226.0", - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/smithy-client": "3.234.0", - "@aws-sdk/types": "3.226.0", - "@aws-sdk/url-parser": "3.226.0", + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/config-resolver": "3.267.0", + "@aws-sdk/fetch-http-handler": "3.267.0", + "@aws-sdk/hash-node": "3.267.0", + "@aws-sdk/invalid-dependency": "3.267.0", + "@aws-sdk/middleware-content-length": "3.267.0", + "@aws-sdk/middleware-endpoint": "3.267.0", + "@aws-sdk/middleware-host-header": "3.267.0", + "@aws-sdk/middleware-logger": "3.267.0", + "@aws-sdk/middleware-recursion-detection": "3.267.0", + "@aws-sdk/middleware-retry": "3.267.0", + "@aws-sdk/middleware-serde": "3.267.0", + "@aws-sdk/middleware-stack": "3.267.0", + "@aws-sdk/middleware-user-agent": "3.267.0", + "@aws-sdk/node-config-provider": "3.267.0", + "@aws-sdk/node-http-handler": "3.267.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/smithy-client": "3.267.0", + "@aws-sdk/types": "3.267.0", + "@aws-sdk/url-parser": "3.267.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.234.0", - "@aws-sdk/util-defaults-mode-node": "3.234.0", - "@aws-sdk/util-endpoints": "3.245.0", - "@aws-sdk/util-retry": "3.229.0", - "@aws-sdk/util-user-agent-browser": "3.226.0", - "@aws-sdk/util-user-agent-node": "3.226.0", - "@aws-sdk/util-utf8-browser": "3.188.0", - "@aws-sdk/util-utf8-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.267.0", + "@aws-sdk/util-defaults-mode-node": "3.267.0", + "@aws-sdk/util-endpoints": "3.267.0", + "@aws-sdk/util-retry": "3.267.0", + "@aws-sdk/util-user-agent-browser": "3.267.0", + "@aws-sdk/util-user-agent-node": "3.267.0", + "@aws-sdk/util-utf8": "3.254.0", "tslib": "^2.3.1" } }, "@aws-sdk/client-sso-oidc": { - "version": "3.245.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.245.0.tgz", - "integrity": "sha512-0pGPA00kEsu2Yq1Ul+OwftHxws5YVllm4iZrPtGnqmXr7wmf6B9lOtrMQF44y7Tfw53po6+bKz08OKTEWkkjUA==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.267.0.tgz", + "integrity": "sha512-Jdq0v0mJSJbG/CKLfHC1L0cjCot48Y6lLMQV1lfkYE65xD0ZSs8Gl7P/T391ZH7cLO6ifVoPdsYnwzhi1ZPXSQ==", "optional": true, "requires": { - "@aws-crypto/sha256-browser": "2.0.0", - "@aws-crypto/sha256-js": "2.0.0", - "@aws-sdk/config-resolver": "3.234.0", - "@aws-sdk/fetch-http-handler": "3.226.0", - "@aws-sdk/hash-node": "3.226.0", - "@aws-sdk/invalid-dependency": "3.226.0", - "@aws-sdk/middleware-content-length": "3.226.0", - "@aws-sdk/middleware-endpoint": "3.226.0", - "@aws-sdk/middleware-host-header": "3.226.0", - "@aws-sdk/middleware-logger": "3.226.0", - "@aws-sdk/middleware-recursion-detection": "3.226.0", - "@aws-sdk/middleware-retry": "3.235.0", - "@aws-sdk/middleware-serde": "3.226.0", - "@aws-sdk/middleware-stack": "3.226.0", - "@aws-sdk/middleware-user-agent": "3.226.0", - "@aws-sdk/node-config-provider": "3.226.0", - "@aws-sdk/node-http-handler": "3.226.0", - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/smithy-client": "3.234.0", - "@aws-sdk/types": "3.226.0", - "@aws-sdk/url-parser": "3.226.0", + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/config-resolver": "3.267.0", + "@aws-sdk/fetch-http-handler": "3.267.0", + "@aws-sdk/hash-node": "3.267.0", + "@aws-sdk/invalid-dependency": "3.267.0", + "@aws-sdk/middleware-content-length": "3.267.0", + "@aws-sdk/middleware-endpoint": "3.267.0", + "@aws-sdk/middleware-host-header": "3.267.0", + "@aws-sdk/middleware-logger": "3.267.0", + "@aws-sdk/middleware-recursion-detection": "3.267.0", + "@aws-sdk/middleware-retry": "3.267.0", + "@aws-sdk/middleware-serde": "3.267.0", + "@aws-sdk/middleware-stack": "3.267.0", + "@aws-sdk/middleware-user-agent": "3.267.0", + "@aws-sdk/node-config-provider": "3.267.0", + "@aws-sdk/node-http-handler": "3.267.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/smithy-client": "3.267.0", + "@aws-sdk/types": "3.267.0", + "@aws-sdk/url-parser": "3.267.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.234.0", - "@aws-sdk/util-defaults-mode-node": "3.234.0", - "@aws-sdk/util-endpoints": "3.245.0", - "@aws-sdk/util-retry": "3.229.0", - "@aws-sdk/util-user-agent-browser": "3.226.0", - "@aws-sdk/util-user-agent-node": "3.226.0", - "@aws-sdk/util-utf8-browser": "3.188.0", - "@aws-sdk/util-utf8-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.267.0", + "@aws-sdk/util-defaults-mode-node": "3.267.0", + "@aws-sdk/util-endpoints": "3.267.0", + "@aws-sdk/util-retry": "3.267.0", + "@aws-sdk/util-user-agent-browser": "3.267.0", + "@aws-sdk/util-user-agent-node": "3.267.0", + "@aws-sdk/util-utf8": "3.254.0", "tslib": "^2.3.1" } }, "@aws-sdk/client-sts": { - "version": "3.245.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.245.0.tgz", - "integrity": "sha512-E+7v2sy34TLni/Dmz6bTU20NWvbHYH9sVUHKQ9kHhmFopUWrs4Nt77f85PbuiKJz/irjUh9ppT5q1odJNRKRVQ==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.267.0.tgz", + "integrity": "sha512-bJ+SwJZAP3DuDUgToDV89HsB80IhSfB1rhzLG9csqs6h7uMLO8H1/fymElYKT4VMMAA+rpWJ3pznyGiCK7w28A==", "optional": true, "requires": { - "@aws-crypto/sha256-browser": "2.0.0", - "@aws-crypto/sha256-js": "2.0.0", - "@aws-sdk/config-resolver": "3.234.0", - "@aws-sdk/credential-provider-node": "3.245.0", - "@aws-sdk/fetch-http-handler": "3.226.0", - "@aws-sdk/hash-node": "3.226.0", - "@aws-sdk/invalid-dependency": "3.226.0", - "@aws-sdk/middleware-content-length": "3.226.0", - "@aws-sdk/middleware-endpoint": "3.226.0", - "@aws-sdk/middleware-host-header": "3.226.0", - "@aws-sdk/middleware-logger": "3.226.0", - "@aws-sdk/middleware-recursion-detection": "3.226.0", - "@aws-sdk/middleware-retry": "3.235.0", - "@aws-sdk/middleware-sdk-sts": "3.226.0", - "@aws-sdk/middleware-serde": "3.226.0", - "@aws-sdk/middleware-signing": "3.226.0", - "@aws-sdk/middleware-stack": "3.226.0", - "@aws-sdk/middleware-user-agent": "3.226.0", - "@aws-sdk/node-config-provider": "3.226.0", - "@aws-sdk/node-http-handler": "3.226.0", - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/smithy-client": "3.234.0", - "@aws-sdk/types": "3.226.0", - "@aws-sdk/url-parser": "3.226.0", + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/config-resolver": "3.267.0", + "@aws-sdk/credential-provider-node": "3.267.0", + "@aws-sdk/fetch-http-handler": "3.267.0", + "@aws-sdk/hash-node": "3.267.0", + "@aws-sdk/invalid-dependency": "3.267.0", + "@aws-sdk/middleware-content-length": "3.267.0", + "@aws-sdk/middleware-endpoint": "3.267.0", + "@aws-sdk/middleware-host-header": "3.267.0", + "@aws-sdk/middleware-logger": "3.267.0", + "@aws-sdk/middleware-recursion-detection": "3.267.0", + "@aws-sdk/middleware-retry": "3.267.0", + "@aws-sdk/middleware-sdk-sts": "3.267.0", + "@aws-sdk/middleware-serde": "3.267.0", + "@aws-sdk/middleware-signing": "3.267.0", + "@aws-sdk/middleware-stack": "3.267.0", + "@aws-sdk/middleware-user-agent": "3.267.0", + "@aws-sdk/node-config-provider": "3.267.0", + "@aws-sdk/node-http-handler": "3.267.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/smithy-client": "3.267.0", + "@aws-sdk/types": "3.267.0", + "@aws-sdk/url-parser": "3.267.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.234.0", - "@aws-sdk/util-defaults-mode-node": "3.234.0", - "@aws-sdk/util-endpoints": "3.245.0", - "@aws-sdk/util-retry": "3.229.0", - "@aws-sdk/util-user-agent-browser": "3.226.0", - "@aws-sdk/util-user-agent-node": "3.226.0", - "@aws-sdk/util-utf8-browser": "3.188.0", - "@aws-sdk/util-utf8-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.267.0", + "@aws-sdk/util-defaults-mode-node": "3.267.0", + "@aws-sdk/util-endpoints": "3.267.0", + "@aws-sdk/util-retry": "3.267.0", + "@aws-sdk/util-user-agent-browser": "3.267.0", + "@aws-sdk/util-user-agent-node": "3.267.0", + "@aws-sdk/util-utf8": "3.254.0", "fast-xml-parser": "4.0.11", "tslib": "^2.3.1" } }, "@aws-sdk/config-resolver": { - "version": "3.234.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.234.0.tgz", - "integrity": "sha512-uZxy4wzllfvgCQxVc+Iqhde0NGAnfmV2hWR6ejadJaAFTuYNvQiRg9IqJy3pkyDPqXySiJ8Bom5PoJfgn55J/A==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.267.0.tgz", + "integrity": "sha512-UMvJY548xOkamU9ZuZk336VX9r3035CAbttagiPJ/FXy9S8jcQ7N722PAovtxs69nNBQf56cmWsnOHphLCGG9w==", "optional": true, "requires": { - "@aws-sdk/signature-v4": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/signature-v4": "3.267.0", + "@aws-sdk/types": "3.267.0", "@aws-sdk/util-config-provider": "3.208.0", - "@aws-sdk/util-middleware": "3.226.0", + "@aws-sdk/util-middleware": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/credential-provider-cognito-identity": { - "version": "3.245.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.245.0.tgz", - "integrity": "sha512-DkiPv7Yb9iw3yAzvWUAkXrI23F1+kV8grdXzlSzob5suqv/dVON5pFXK9Siz62WwWsa2FeCEpgEF7RA0mrWLtA==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.267.0.tgz", + "integrity": "sha512-H97VsbiTcb4tbY/LQMZNglJIHt7CHso7RtGgctmdsEA7Rha79fV/egF0Vqo2OQHDgEEpgQDWCeHbXO1P5ibR/A==", "optional": true, "requires": { - "@aws-sdk/client-cognito-identity": "3.245.0", - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/client-cognito-identity": "3.267.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/credential-provider-env": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.226.0.tgz", - "integrity": "sha512-sd8uK1ojbXxaZXlthzw/VXZwCPUtU3PjObOfr3Evj7MPIM2IH8h29foOlggx939MdLQGboJf9gKvLlvKDWtJRA==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.267.0.tgz", + "integrity": "sha512-oiem2UtaFe4CQHscUCImJjPhYWd4iF8fqXhlq6BqHs1wsO6A0vnIUGh+Srut/2q7Xeegl/SRU34HK0hh8JCbxg==", "optional": true, "requires": { - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/credential-provider-imds": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.226.0.tgz", - "integrity": "sha512-//z/COQm2AjYFI1Lb0wKHTQSrvLFTyuKLFQGPJsKS7DPoxGOCKB7hmYerlbl01IDoCxTdyL//TyyPxbZEOQD5Q==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.267.0.tgz", + "integrity": "sha512-Afd5+LdJ9QyeI5L4iyVmI4MLV+0JBtRLmRy0LdinwJaP0DyKyv9+uaIaorKfWihQpe8hwjEfQWTlTz2A3JMJtw==", "optional": true, "requires": { - "@aws-sdk/node-config-provider": "3.226.0", - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/types": "3.226.0", - "@aws-sdk/url-parser": "3.226.0", + "@aws-sdk/node-config-provider": "3.267.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/types": "3.267.0", + "@aws-sdk/url-parser": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/credential-provider-ini": { - "version": "3.245.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.245.0.tgz", - "integrity": "sha512-1SjfVc5Wg0lLRUvwMrfjGgFkl+zfxn74gnkPr6by1QyMAoTzmeUkalPLAIqd+uHtFom9e3K633BQtX7zVPZ5XQ==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.267.0.tgz", + "integrity": "sha512-pHHlqZqZXA4cTssTyRmbYtrjxS2BEy2KFYHEEHNUrd82pUHnj70n+lrpVnT5pRhPPDacpNzxq0KZGeNgmETpbw==", "optional": true, "requires": { - "@aws-sdk/credential-provider-env": "3.226.0", - "@aws-sdk/credential-provider-imds": "3.226.0", - "@aws-sdk/credential-provider-process": "3.226.0", - "@aws-sdk/credential-provider-sso": "3.245.0", - "@aws-sdk/credential-provider-web-identity": "3.226.0", - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/shared-ini-file-loader": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/credential-provider-env": "3.267.0", + "@aws-sdk/credential-provider-imds": "3.267.0", + "@aws-sdk/credential-provider-process": "3.267.0", + "@aws-sdk/credential-provider-sso": "3.267.0", + "@aws-sdk/credential-provider-web-identity": "3.267.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/shared-ini-file-loader": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/credential-provider-node": { - "version": "3.245.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.245.0.tgz", - "integrity": "sha512-Dwv8zmRLTDLeEkGrK/sLNFZSC+ahXZxr07CuID054QKACIdUEvkqYlnalRiTeXngiHGQ54u8wU7f0D32R2oL0g==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.267.0.tgz", + "integrity": "sha512-uo8VyZ/L8HBXskYZC65bR1ZUJ5mBn8JarrGHt6vMG2A+uM7AuryTsKn2wdhPfuCUGKuQLXmix5K4VW/wzq11kQ==", "optional": true, "requires": { - "@aws-sdk/credential-provider-env": "3.226.0", - "@aws-sdk/credential-provider-imds": "3.226.0", - "@aws-sdk/credential-provider-ini": "3.245.0", - "@aws-sdk/credential-provider-process": "3.226.0", - "@aws-sdk/credential-provider-sso": "3.245.0", - "@aws-sdk/credential-provider-web-identity": "3.226.0", - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/shared-ini-file-loader": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/credential-provider-env": "3.267.0", + "@aws-sdk/credential-provider-imds": "3.267.0", + "@aws-sdk/credential-provider-ini": "3.267.0", + "@aws-sdk/credential-provider-process": "3.267.0", + "@aws-sdk/credential-provider-sso": "3.267.0", + "@aws-sdk/credential-provider-web-identity": "3.267.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/shared-ini-file-loader": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/credential-provider-process": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.226.0.tgz", - "integrity": "sha512-iUDMdnrTvbvaCFhWwqyXrhvQ9+ojPqPqXhwZtY1X/Qaz+73S9gXBPJHZaZb2Ke0yKE1Ql3bJbKvmmxC/qLQMng==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.267.0.tgz", + "integrity": "sha512-pd1OOB1Mm+QdPv3sPfO+1G8HBaPAAYXxjLcOK5z/myBeZAsLR12Xcaft4RR1XWwXXKEQqq42cbAINWQdyVykqQ==", "optional": true, "requires": { - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/shared-ini-file-loader": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/shared-ini-file-loader": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/credential-provider-sso": { - "version": "3.245.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.245.0.tgz", - "integrity": "sha512-txWrJc0WNBhXMi7q+twjx7cs/qzgTfbQ+vbag5idRmdoUeiR8rfLvihCab2NaGg50xhh+TaoUCXrgJp3E/XjYQ==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.267.0.tgz", + "integrity": "sha512-JqwxelzeRhVdloNi+VUUXhJdziTtNrrwMuhds9wj4KPfl1S2EIzkRxHSjwDz1wtSyuIPOOo6pPJiaVbwvLpkVg==", "optional": true, "requires": { - "@aws-sdk/client-sso": "3.245.0", - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/shared-ini-file-loader": "3.226.0", - "@aws-sdk/token-providers": "3.245.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/client-sso": "3.267.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/shared-ini-file-loader": "3.267.0", + "@aws-sdk/token-providers": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/credential-provider-web-identity": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.226.0.tgz", - "integrity": "sha512-CCpv847rLB0SFOHz2igvUMFAzeT2fD3YnY4C8jltuJoEkn0ITn1Hlgt13nTJ5BUuvyti2mvyXZHmNzhMIMrIlw==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.267.0.tgz", + "integrity": "sha512-za5UsQmj3sYRhd4h5eStj3GCHHfAAjfx2x5FmgQ9ldOp+s0wHEqSL1g+OL9v6o8otf9JnWha+wfUYq3yVGfufQ==", "optional": true, "requires": { - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/credential-providers": { - "version": "3.245.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.245.0.tgz", - "integrity": "sha512-6Uhsxk6MOuWplejhPJf7XDhegHmcZfj8hwnF4mXFJ6u4b2RxWPQCnqPcA0+VoAzIMUqbjqvkSzmVjQelGFtjNg==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.267.0.tgz", + "integrity": "sha512-Og70E1eHGcxShMbrmm8lOepF82Hg5Fe7WXv0pnUKFFUxr+pf89bCjxGwktZIDM7ZMMXGIyladeIgTjsJkhpjRQ==", "optional": true, "requires": { - "@aws-sdk/client-cognito-identity": "3.245.0", - "@aws-sdk/client-sso": "3.245.0", - "@aws-sdk/client-sts": "3.245.0", - "@aws-sdk/credential-provider-cognito-identity": "3.245.0", - "@aws-sdk/credential-provider-env": "3.226.0", - "@aws-sdk/credential-provider-imds": "3.226.0", - "@aws-sdk/credential-provider-ini": "3.245.0", - "@aws-sdk/credential-provider-node": "3.245.0", - "@aws-sdk/credential-provider-process": "3.226.0", - "@aws-sdk/credential-provider-sso": "3.245.0", - "@aws-sdk/credential-provider-web-identity": "3.226.0", - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/shared-ini-file-loader": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/client-cognito-identity": "3.267.0", + "@aws-sdk/client-sso": "3.267.0", + "@aws-sdk/client-sts": "3.267.0", + "@aws-sdk/credential-provider-cognito-identity": "3.267.0", + "@aws-sdk/credential-provider-env": "3.267.0", + "@aws-sdk/credential-provider-imds": "3.267.0", + "@aws-sdk/credential-provider-ini": "3.267.0", + "@aws-sdk/credential-provider-node": "3.267.0", + "@aws-sdk/credential-provider-process": "3.267.0", + "@aws-sdk/credential-provider-sso": "3.267.0", + "@aws-sdk/credential-provider-web-identity": "3.267.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/shared-ini-file-loader": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/fetch-http-handler": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.226.0.tgz", - "integrity": "sha512-JewZPMNEBXfi1xVnRa7pVtK/zgZD8/lQ/YnD8pq79WuMa2cwyhDtr8oqCoqsPW+WJT5ScXoMtuHxN78l8eKWgg==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.267.0.tgz", + "integrity": "sha512-u8v8OvWvLVfifmETCAj+DCTot900AsdO1b+N+O8nXiTm2v99rtEoNRJW+no/5vJKNqR+95OAz4NWjFep8nzseg==", "optional": true, "requires": { - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/querystring-builder": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/querystring-builder": "3.267.0", + "@aws-sdk/types": "3.267.0", "@aws-sdk/util-base64": "3.208.0", "tslib": "^2.3.1" } }, "@aws-sdk/hash-node": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.226.0.tgz", - "integrity": "sha512-MdlJhJ9/Espwd0+gUXdZRsHuostB2WxEVAszWxobP0FTT9PnicqnfK7ExmW+DUAc0ywxtEbR3e0UND65rlSTVw==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.267.0.tgz", + "integrity": "sha512-N3xeChdJg4V4jh2vrRN521EMJYxjUOo/LpvpisFyQHE/p31AfcOLb05upYFoYLvyeder9RHBIyNsvvnMYYoCsA==", "optional": true, "requires": { - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "@aws-sdk/util-buffer-from": "3.208.0", + "@aws-sdk/util-utf8": "3.254.0", "tslib": "^2.3.1" } }, "@aws-sdk/invalid-dependency": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.226.0.tgz", - "integrity": "sha512-QXOYFmap8g9QzRjumcRCIo2GEZkdCwd7ePQW0OABWPhKHzlJ74vvBxywjU3s39EEBEluWXtZ7Iufg6GxZM4ifw==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.267.0.tgz", + "integrity": "sha512-I95IR/eDLC54+9qrL6uh64nhpLVHwxxbBhhEUZKDACp86eXulO8T/DOwUX31ps4+2lI7tbEhQT7f9WDOO3fN8Q==", "optional": true, "requires": { - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, @@ -19408,274 +19530,275 @@ } }, "@aws-sdk/middleware-content-length": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.226.0.tgz", - "integrity": "sha512-ksUzlHJN2JMuyavjA46a4sctvnrnITqt2tbGGWWrAuXY1mel2j+VbgnmJUiwHKUO6bTFBBeft5Vd1TSOb4JmiA==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.267.0.tgz", + "integrity": "sha512-b6MBIK12iwcATKnWIhsh50xWVMmZOXZFIo9D4io6D+JM6j/U+GZrSWqxhHzb3SjavuwVgA2hwq4mUCh2WJPJKA==", "optional": true, "requires": { - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/middleware-endpoint": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.226.0.tgz", - "integrity": "sha512-EvLFafjtUxTT0AC9p3aBQu1/fjhWdIeK58jIXaNFONfZ3F8QbEYUPuF/SqZvJM6cWfOO9qwYKkRDbCSTYhprIg==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.267.0.tgz", + "integrity": "sha512-pGICM/qlQVfixtfKZt8zHq54KvLG2MmOAgNWj2MXB7oirPs/3rC9Kz9ITFXJgjlRFyfssgP/feKhs2yZkI8lhw==", "optional": true, "requires": { - "@aws-sdk/middleware-serde": "3.226.0", - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/signature-v4": "3.226.0", - "@aws-sdk/types": "3.226.0", - "@aws-sdk/url-parser": "3.226.0", + "@aws-sdk/middleware-serde": "3.267.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/signature-v4": "3.267.0", + "@aws-sdk/types": "3.267.0", + "@aws-sdk/url-parser": "3.267.0", "@aws-sdk/util-config-provider": "3.208.0", - "@aws-sdk/util-middleware": "3.226.0", + "@aws-sdk/util-middleware": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/middleware-host-header": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.226.0.tgz", - "integrity": "sha512-haVkWVh6BUPwKgWwkL6sDvTkcZWvJjv8AgC8jiQuSl8GLZdzHTB8Qhi3IsfFta9HAuoLjxheWBE5Z/L0UrfhLA==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.267.0.tgz", + "integrity": "sha512-D8TfjMeuQXTsB7Ni8liMmNqb3wz+T6t/tYUHtsMo0j++94KAPPj1rhkkTAjR4Rc+IYGCS4YyyCuCXjGB6gkjnA==", "optional": true, "requires": { - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/middleware-logger": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.226.0.tgz", - "integrity": "sha512-m9gtLrrYnpN6yckcQ09rV7ExWOLMuq8mMPF/K3DbL/YL0TuILu9i2T1W+JuxSX+K9FMG2HrLAKivE/kMLr55xA==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.267.0.tgz", + "integrity": "sha512-wnLeZYWbgGCuNmRl0Pmky0cSXBWmMTaQBgq90WfwyM0V8wzcoeaovTWA5/qe8oJzusOgUMFoVia4Ew20k3lu8w==", "optional": true, "requires": { - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/middleware-recursion-detection": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.226.0.tgz", - "integrity": "sha512-mwRbdKEUeuNH5TEkyZ5FWxp6bL2UC1WbY+LDv6YjHxmSMKpAoOueEdtU34PqDOLrpXXxIGHDFmjeGeMfktyEcA==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.267.0.tgz", + "integrity": "sha512-NCBkTLxaW7XtfQoVBqQCaQZqec5XDtEylkw7g0tGjYDcl934fzu3ciH9MsJ34QFe9slYM6g4v+eC9f1w9K/19g==", "optional": true, "requires": { - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/middleware-retry": { - "version": "3.235.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.235.0.tgz", - "integrity": "sha512-50WHbJGpD3SNp9763MAlHqIhXil++JdQbKejNpHg7HsJne/ao3ub+fDOfx//mMBjpzBV25BGd5UlfL6blrClSg==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.267.0.tgz", + "integrity": "sha512-MiiNtddZXVhtSAnJFyChwNxnhzMYmv6qWl8qgSjuIOw9SczkHPCoANTfUdRlzG6RfPYhgYtzMGqqnrficJ6mVg==", "optional": true, "requires": { - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/service-error-classification": "3.229.0", - "@aws-sdk/types": "3.226.0", - "@aws-sdk/util-middleware": "3.226.0", - "@aws-sdk/util-retry": "3.229.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/service-error-classification": "3.267.0", + "@aws-sdk/types": "3.267.0", + "@aws-sdk/util-middleware": "3.267.0", + "@aws-sdk/util-retry": "3.267.0", "tslib": "^2.3.1", "uuid": "^8.3.2" } }, "@aws-sdk/middleware-sdk-sts": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.226.0.tgz", - "integrity": "sha512-NN9T/qoSD1kZvAT+VLny3NnlqgylYQcsgV3rvi/8lYzw/G/2s8VS6sm/VTWGGZhx08wZRv20MWzYu3bftcyqUg==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.267.0.tgz", + "integrity": "sha512-JLDNNvV7Hr0CQrf1vSmflvPbfDFIx5lFf8tY7DZwYWEE920ZzbJTfUsTW9iZHJGeIe8dAQX1tmfYL68+++nvEQ==", "optional": true, "requires": { - "@aws-sdk/middleware-signing": "3.226.0", - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/signature-v4": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/middleware-signing": "3.267.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/signature-v4": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/middleware-serde": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.226.0.tgz", - "integrity": "sha512-nPuOOAkSfx9TxzdKFx0X2bDlinOxGrqD7iof926K/AEflxGD1DBdcaDdjlYlPDW2CVE8LV/rAgbYuLxh/E/1VA==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.267.0.tgz", + "integrity": "sha512-9qspxiZs+JShukzKMAameBSubfvtUOGZviu9GT5OfRekY2dBbwWcfchP2WvlwxZ/CcC+GwO1HcPqKDCMGsNoow==", "optional": true, "requires": { - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/middleware-signing": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.226.0.tgz", - "integrity": "sha512-E6HmtPcl+IjYDDzi1xI2HpCbBq2avNWcjvCriMZWuTAtRVpnA6XDDGW5GY85IfS3A8G8vuWqEVPr8JcYUcjfew==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.267.0.tgz", + "integrity": "sha512-thkFEBiFW0M/73dIzl7hQmyAONb8zyD2ZYUFyGm7cIM60sRDUKejPHV6Izonll+HbBZgiBdwUi42uu8O+LfFGQ==", "optional": true, "requires": { - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/signature-v4": "3.226.0", - "@aws-sdk/types": "3.226.0", - "@aws-sdk/util-middleware": "3.226.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/signature-v4": "3.267.0", + "@aws-sdk/types": "3.267.0", + "@aws-sdk/util-middleware": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/middleware-stack": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.226.0.tgz", - "integrity": "sha512-85wF29LvPvpoed60fZGDYLwv1Zpd/cM0C22WSSFPw1SSJeqO4gtFYyCg2squfT3KI6kF43IIkOCJ+L7GtryPug==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.267.0.tgz", + "integrity": "sha512-52uH3JO3ceI15dgzt8gU7lpJf59qbRUQYJ7pAmTMiHtyEawZ39Puv6sGheY3fAffhqd/aQvup6wn18Q1fRIQUA==", "optional": true, "requires": { "tslib": "^2.3.1" } }, "@aws-sdk/middleware-user-agent": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.226.0.tgz", - "integrity": "sha512-N1WnfzCW1Y5yWhVAphf8OPGTe8Df3vmV7/LdsoQfmpkCZgLZeK2o0xITkUQhRj1mbw7yp8tVFLFV3R2lMurdAQ==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.267.0.tgz", + "integrity": "sha512-eaReMnoB1Cx3OY8WDSiUMNDz/EkdAo4w/m3d5CizckKQNmB29gUrgyFs7g7sHTcShQAduZzlsfRPzc6NmKYaWQ==", "optional": true, "requires": { - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/node-config-provider": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.226.0.tgz", - "integrity": "sha512-B8lQDqiRk7X5izFEUMXmi8CZLOKCTWQJU9HQf3ako+sF0gexo4nHN3jhoRWyLtcgC5S3on/2jxpAcqtm7kuY3w==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.267.0.tgz", + "integrity": "sha512-wNX+Cu0x+kllng253j5dvmLm4opDRr7YehJ0rNGAV24X+UPJPluN9HrBFly+z4+bH16TpJEPKx7AayiWZGFE1w==", "optional": true, "requires": { - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/shared-ini-file-loader": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/shared-ini-file-loader": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/node-http-handler": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.226.0.tgz", - "integrity": "sha512-xQCddnZNMiPmjr3W7HYM+f5ir4VfxgJh37eqZwX6EZmyItFpNNeVzKUgA920ka1VPz/ZUYB+2OFGiX3LCLkkaA==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.267.0.tgz", + "integrity": "sha512-wtt3O+e8JEKaLFtmQd74HSZj2TyiApPkwMJ3R50hyboVswt8RcdMWdFbzLnPVpT1AqskG3fMECSKbu8AC/xvBQ==", "optional": true, "requires": { - "@aws-sdk/abort-controller": "3.226.0", - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/querystring-builder": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/abort-controller": "3.267.0", + "@aws-sdk/protocol-http": "3.267.0", + "@aws-sdk/querystring-builder": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/property-provider": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.226.0.tgz", - "integrity": "sha512-TsljjG+Sg0LmdgfiAlWohluWKnxB/k8xenjeozZfzOr5bHmNHtdbWv6BtNvD/R83hw7SFXxbJHlD5H4u9p2NFg==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.267.0.tgz", + "integrity": "sha512-/BD1Zar9PCQSV8VZTAWOJmtojAeMIl16ljZX3Kix84r45qqNNxuPST2AhNVN+p97Js4x9kBFCHkdFOpW94wr4Q==", "optional": true, "requires": { - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/protocol-http": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.226.0.tgz", - "integrity": "sha512-zWkVqiTA9RXL6y0hhfZc9bcU4DX2NI6Hw9IhQmSPeM59mdbPjJlY4bLlMr5YxywqO3yQ/ylNoAfrEzrDjlOSRg==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.267.0.tgz", + "integrity": "sha512-8HhOZXMCZ0nsJC/FoifX7YrTYGP91tCpSxIHkr7HxQcTdBMI7QakMtIIWK9Qjsy6tUI98aAdEo5PNCbzdpozmQ==", "optional": true, "requires": { - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/querystring-builder": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.226.0.tgz", - "integrity": "sha512-LVurypuNeotO4lmirKXRC4NYrZRAyMJXuwO0f2a5ZAUJCjauwYrifKue6yCfU7bls7gut7nfcR6B99WBYpHs3g==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.267.0.tgz", + "integrity": "sha512-SKo8V3oPV1wZy4r4lccH7R2LT0PUK/WGaXkKR30wyrtDjJRWVJDYef9ysOpRP+adCTt3G5XO0SzyPQUW5dXYVA==", "optional": true, "requires": { - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "@aws-sdk/util-uri-escape": "3.201.0", "tslib": "^2.3.1" } }, "@aws-sdk/querystring-parser": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.226.0.tgz", - "integrity": "sha512-FzB+VrQ47KAFxiPt2YXrKZ8AOLZQqGTLCKHzx4bjxGmwgsjV8yIbtJiJhZLMcUQV4LtGeIY9ixIqQhGvnZHE4A==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.267.0.tgz", + "integrity": "sha512-Krq36GXqEfRfzJ9wOzkkzpbb4SWjgSYydTIgK6KtKapme0HPcB24kmmsjsUVuHzKuQMCHHDRWm+b47iBmHGpSQ==", "optional": true, "requires": { - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/service-error-classification": { - "version": "3.229.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.229.0.tgz", - "integrity": "sha512-dnzWWQ0/NoWMUZ5C0DW3dPm0wC1O76Y/SpKbuJzWPkx1EYy6r8p32Ly4D9vUzrKDbRGf48YHIF2kOkBmu21CLg==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.267.0.tgz", + "integrity": "sha512-fOWg7bcItmJqD/YQbGvN9o03ucoBzvWNTQEB81mLKMSKr1Cf/ms0f8oa94LlImgqjjfjvAqHh6rUBTpSmSEyaw==", "optional": true }, "@aws-sdk/shared-ini-file-loader": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.226.0.tgz", - "integrity": "sha512-661VQefsARxVyyV2FX9V61V+nNgImk7aN2hYlFKla6BCwZfMng+dEtD0xVGyg1PfRw0qvEv5LQyxMVgHcUSevA==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.267.0.tgz", + "integrity": "sha512-Jz9R5hXKSk+aRoBKi4Bnf6T/FZUBYrIibbLnhiNxpQ1FY9mTggJR/rxuIdOE23LtfW+CRqqEYOtAtmC1oYE6tw==", "optional": true, "requires": { - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/signature-v4": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.226.0.tgz", - "integrity": "sha512-/R5q5agdPd7HJB68XMzpxrNPk158EHUvkFkuRu5Qf3kkkHebEzWEBlWoVpUe6ss4rP9Tqcue6xPuaftEmhjpYw==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.267.0.tgz", + "integrity": "sha512-Je1e7rum2zvxa3jWfwq4E+fyBdFJmSJAwGtWYz3+/rWipwXFlSAPeSVqtNjHdfzakgabvzLp7aesG4yQTrO2YQ==", "optional": true, "requires": { "@aws-sdk/is-array-buffer": "3.201.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "@aws-sdk/util-hex-encoding": "3.201.0", - "@aws-sdk/util-middleware": "3.226.0", + "@aws-sdk/util-middleware": "3.267.0", "@aws-sdk/util-uri-escape": "3.201.0", + "@aws-sdk/util-utf8": "3.254.0", "tslib": "^2.3.1" } }, "@aws-sdk/smithy-client": { - "version": "3.234.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.234.0.tgz", - "integrity": "sha512-8AtR/k4vsFvjXeQbIzq/Wy7Nbk48Ou0wUEeVYPHWHPSU8QamFWORkOwmKtKMfHAyZvmqiAPeQqHFkq+UJhWyyQ==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.267.0.tgz", + "integrity": "sha512-WdgXHqKmFQIkAWETO/I5boX9u6QbMLC4X74OVSBaBLhRjqYmvolMFtNrQzvSKGB3FaxAN9Do41amC0mGoeLC8A==", "optional": true, "requires": { - "@aws-sdk/middleware-stack": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/middleware-stack": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/token-providers": { - "version": "3.245.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.245.0.tgz", - "integrity": "sha512-m/spXR/vEXGb+zMqRUMQYVMwFZSTdK5RkddYqamYkNhIoLm60EYeRu57JsMMs5djKi8dBRSKiXwVHx0l2rXMjg==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.267.0.tgz", + "integrity": "sha512-CGayGrPl4ONG4RuGbNv+QS4oVuItx4hK2FCbFS7d6V7h53rkDrcFd34NsvbicQ2KVFobE7fKs6ZaripJbJbLHA==", "optional": true, "requires": { - "@aws-sdk/client-sso-oidc": "3.245.0", - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/shared-ini-file-loader": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/client-sso-oidc": "3.267.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/shared-ini-file-loader": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/types": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.226.0.tgz", - "integrity": "sha512-MmmNHrWeO4man7wpOwrAhXlevqtOV9ZLcH4RhnG5LmRce0RFOApx24HoKENfFCcOyCm5LQBlsXCqi0dZWDWU0A==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.267.0.tgz", + "integrity": "sha512-fICTbSeIfXlTHnciQgDt37R0kXoKxgh0a3prnLWVvTcmf7NFujdZmg5YTAZT3KJJ7SuKsIgnI8azBYioVY8BVQ==", "optional": true, "requires": { "tslib": "^2.3.1" } }, "@aws-sdk/url-parser": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.226.0.tgz", - "integrity": "sha512-p5RLE0QWyP0OcTOLmFcLdVgUcUEzmEfmdrnOxyNzomcYb0p3vUagA5zfa1HVK2azsQJFBv28GfvMnba9bGhObg==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.267.0.tgz", + "integrity": "sha512-xoQ5Fd11moiE82QTL9GGE6e73SFuD0Wi73tA75TAwKuY12OP5vDJ4oBC86A1G2T+OzeHJQmYyqiA5j48CzqB6A==", "optional": true, "requires": { - "@aws-sdk/querystring-parser": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/querystring-parser": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, @@ -19727,38 +19850,38 @@ } }, "@aws-sdk/util-defaults-mode-browser": { - "version": "3.234.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.234.0.tgz", - "integrity": "sha512-IHMKXjTbOD8XMz5+2oCOsVP94BYb9YyjXdns0aAXr2NAo7k2+RCzXQ2DebJXppGda1F6opFutoKwyVSN0cmbMw==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.267.0.tgz", + "integrity": "sha512-MgrqpedA58HVR8RpT2A42//5Lb3M0JwEiYlDaA7EvIVsMx1NzO+cng4MDJi03YBAP5hwCVQmO9Sf5Au4dm+m0g==", "optional": true, "requires": { - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/types": "3.267.0", "bowser": "^2.11.0", "tslib": "^2.3.1" } }, "@aws-sdk/util-defaults-mode-node": { - "version": "3.234.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.234.0.tgz", - "integrity": "sha512-UGjQ+OjBYYhxFVtUY+jtr0ZZgzZh6OHtYwRhFt8IHewJXFCfZTyfsbX20szBj5y1S4HRIUJ7cwBLIytTqMbI5w==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.267.0.tgz", + "integrity": "sha512-JyFk95T77sGM4q386id/mDt9/7HvoQySAygPyv/lj//WEJJIRKiefB277CKKJPT8nRAsO4mIyAT+YO/xGCxkQA==", "optional": true, "requires": { - "@aws-sdk/config-resolver": "3.234.0", - "@aws-sdk/credential-provider-imds": "3.226.0", - "@aws-sdk/node-config-provider": "3.226.0", - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/config-resolver": "3.267.0", + "@aws-sdk/credential-provider-imds": "3.267.0", + "@aws-sdk/node-config-provider": "3.267.0", + "@aws-sdk/property-provider": "3.267.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, "@aws-sdk/util-endpoints": { - "version": "3.245.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.245.0.tgz", - "integrity": "sha512-UNOFquB1tKx+8RT8n82Zb5tIwDyZHVPBg/m0LB0RsLETjr6krien5ASpqWezsXKIR1hftN9uaxN4bvf2dZrWHg==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.267.0.tgz", + "integrity": "sha512-c6miY83Eo0erqXY+YiS2sOg3izURqvaWHd9przJzBQea9XRCN4ANT2P8AhoC0BPIORutaaOSoCSp/crHG0XLLg==", "optional": true, "requires": { - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "tslib": "^2.3.1" } }, @@ -19781,21 +19904,21 @@ } }, "@aws-sdk/util-middleware": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.226.0.tgz", - "integrity": "sha512-B96CQnwX4gRvQdaQkdUtqvDPkrptV5+va6FVeJOocU/DbSYMAScLxtR3peMS8cnlOT6nL1Eoa42OI9AfZz1VwQ==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.267.0.tgz", + "integrity": "sha512-7nvqBZVz3RdwYv6lU958g6sWI2Qt8lzxDVn0uwfnPH+fAiX7Ln1Hen2A0XeW5cL5uYUJy6wNM5cyfTzFZosE0A==", "optional": true, "requires": { "tslib": "^2.3.1" } }, "@aws-sdk/util-retry": { - "version": "3.229.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.229.0.tgz", - "integrity": "sha512-0zKTqi0P1inD0LzIMuXRIYYQ/8c1lWMg/cfiqUcIAF1TpatlpZuN7umU0ierpBFud7S+zDgg0oemh+Nj8xliJw==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.267.0.tgz", + "integrity": "sha512-ZXo1ICG2HgxkIZWlnPteh2R90kwmhRwvbP282CwrrYgTKuMZmW2R/+o6vqhWyPkjoNFN/pno0FxuDA3IYau3Sw==", "optional": true, "requires": { - "@aws-sdk/service-error-classification": "3.229.0", + "@aws-sdk/service-error-classification": "3.267.0", "tslib": "^2.3.1" } }, @@ -19809,46 +19932,46 @@ } }, "@aws-sdk/util-user-agent-browser": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.226.0.tgz", - "integrity": "sha512-PhBIu2h6sPJPcv2I7ELfFizdl5pNiL4LfxrasMCYXQkJvVnoXztHA1x+CQbXIdtZOIlpjC+6BjDcE0uhnpvfcA==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.267.0.tgz", + "integrity": "sha512-SmI6xInnPPa0gFhCqhtWOUMTxLeRbm7X5HXzeprhK1d8aNNlUVyALAV7K8ovIjnv3a97lIJSekyb78oTuYITCA==", "optional": true, "requires": { - "@aws-sdk/types": "3.226.0", + "@aws-sdk/types": "3.267.0", "bowser": "^2.11.0", "tslib": "^2.3.1" } }, "@aws-sdk/util-user-agent-node": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.226.0.tgz", - "integrity": "sha512-othPc5Dz/pkYkxH+nZPhc1Al0HndQT8zHD4e9h+EZ+8lkd8n+IsnLfTS/mSJWrfiC6UlNRVw55cItstmJyMe/A==", + "version": "3.267.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.267.0.tgz", + "integrity": "sha512-nfmyffA1yIypJ30CIMO6Tc16t8dFJzdztzoowjmnfb8/LzTZECERM3GICq0DvZDPfSo+jbuz634VtS2K7tVZjA==", "optional": true, "requires": { - "@aws-sdk/node-config-provider": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/node-config-provider": "3.267.0", + "@aws-sdk/types": "3.267.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-utf8": { + "version": "3.254.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.254.0.tgz", + "integrity": "sha512-14Kso/eIt5/qfIBmhEL9L1IfyUqswjSTqO2mY7KOzUZ9SZbwn3rpxmtkhmATkRjD7XIlLKaxBkI7tU9Zjzj8Kw==", + "optional": true, + "requires": { + "@aws-sdk/util-buffer-from": "3.208.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==", + "version": "3.259.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", + "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", "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", @@ -19867,9 +19990,9 @@ } }, "@azure/core-client": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.6.1.tgz", - "integrity": "sha512-mZ1MSKhZBYoV8GAWceA+PEJFWV2VpdNSpxxcj1wjIAOi00ykRuIQChT99xlQGZWLY3/NApWhSImlFwsmCEs4vA==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.7.1.tgz", + "integrity": "sha512-85igXpc5V7ns6rvMEpLmIcBDftjUgTWD+0tmYPyQEfPfkAwpPTs1X5rhCDsfqvUZGA8Ksid1hdZGu62r6XXeHg==", "requires": { "@azure/abort-controller": "^1.0.0", "@azure/core-auth": "^1.4.0", @@ -19891,9 +20014,9 @@ } }, "@azure/core-lro": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.4.0.tgz", - "integrity": "sha512-F65+rYkll1dpw3RGm8/SSiSj+/QkMeYDanzS/QKlM1dmuneVyXbO46C88V1MRHluLGdMP6qfD3vDRYALn0z0tQ==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.5.1.tgz", + "integrity": "sha512-JHQy/bA3NOz2WuzOi5zEk6n/TJdAropupxUT521JIJvW7EXV2YN2SFYZrf/2RHeD28QAClGdynYadZsbmP+nyQ==", "requires": { "@azure/abort-controller": "^1.0.0", "@azure/logger": "^1.0.0", @@ -19901,17 +20024,17 @@ } }, "@azure/core-paging": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.4.0.tgz", - "integrity": "sha512-tabFtZTg8D9XqZKEfNUOGh63SuYeOxmvH4GDcOJN+R1bZWZ1FZskctgY9Pmuwzhn+0Xvq9rmimK9hsvtLkeBsw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.5.0.tgz", + "integrity": "sha512-zqWdVIt+2Z+3wqxEOGzR5hXFZ8MGKK52x4vFLw8n58pR6ZfKRx3EXYTxTaYxYHc/PexPUTyimcTWFJbji9Z6Iw==", "requires": { "tslib": "^2.2.0" } }, "@azure/core-rest-pipeline": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.10.0.tgz", - "integrity": "sha512-m6c4iAalfaf6sytOOQhLKFprEHSkSjQuRgkW7MTMnAN+GENDDL4XZJp7WKFnq9VpKUE+ggq+rp5xX9GI93lumw==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.10.1.tgz", + "integrity": "sha512-Kji9k6TOFRDB5ZMTw8qUf2IJ+CeJtsuMdAHox9eqpTf1cefiNMpzrfnF6sINEBZJsaVaWgQ0o48B6kcUH68niA==", "requires": { "@azure/abort-controller": "^1.0.0", "@azure/core-auth": "^1.4.0", @@ -20013,17 +20136,17 @@ } }, "@azure/msal-browser": { - "version": "2.32.1", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.32.1.tgz", - "integrity": "sha512-2G3B12ZEIpiimi6/Yqq7KLk4ud1zZWoHvVd2kJ2VthN1HjMsZjdMUxeHkwMWaQ6RzO6mv9rZiuKmRX64xkXW9g==", + "version": "2.33.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.33.0.tgz", + "integrity": "sha512-c7CVh1tfUfxiWkEIhoIb11hL4PGo4hz0M+gMy34ATagAKdLK7qyEu/5AXJWAf5lz5eE+vQhm7+LKiuETrcXXGw==", "requires": { - "@azure/msal-common": "^9.0.1" + "@azure/msal-common": "^10.0.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==" + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-10.0.0.tgz", + "integrity": "sha512-/LghpT93jsZLy55QzTsRZWMx6R1Mjc1Aktwps8sKSGE3WbrGwbSsh2uhDlpl6FMcKChYjJ0ochThWwwOodrQNg==" } } }, @@ -20033,19 +20156,19 @@ "integrity": "sha512-XqfbglUTVLdkHQ8F9UQJtKseRr3sSnr9ysboxtoswvaMVaEfvyLtMoHv9XdKUfOc0qKGzNgRFd9yRjIWVepl6Q==" }, "@azure/msal-node": { - "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==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.15.0.tgz", + "integrity": "sha512-fwC5M0c8pxOAzmScPbpx7j28YVTDebUaizlVF7bR0xvlU0r3VWW5OobCcr9ybqKS6wGyO7u4EhXJS9rjRWAuwA==", "requires": { - "@azure/msal-common": "^9.0.2", + "@azure/msal-common": "^10.0.0", "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" }, "dependencies": { "@azure/msal-common": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.2.tgz", - "integrity": "sha512-qzwxuF8kZAp+rNUactMCgJh8fblq9D4lSqrrIxMDzLjgSZtjN32ix7r/HBe8QdOr76II9SVVPcMkX4sPzPfQ7w==" + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-10.0.0.tgz", + "integrity": "sha512-/LghpT93jsZLy55QzTsRZWMx6R1Mjc1Aktwps8sKSGE3WbrGwbSsh2uhDlpl6FMcKChYjJ0ochThWwwOodrQNg==" } } }, @@ -20059,31 +20182,31 @@ } }, "@babel/compat-data": { - "version": "7.20.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz", - "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==", + "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz", + "integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==", "dev": true }, "@babel/core": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.7.tgz", - "integrity": "sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==", + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", + "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", "@babel/generator": "^7.20.7", "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.20.7", + "@babel/helper-module-transforms": "^7.20.11", "@babel/helpers": "^7.20.7", "@babel/parser": "^7.20.7", "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", + "@babel/traverse": "^7.20.12", "@babel/types": "^7.20.7", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", + "json5": "^2.2.2", "semver": "^6.3.0" } }, @@ -20099,9 +20222,9 @@ } }, "@babel/generator": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", - "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", + "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz", + "integrity": "sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==", "dev": true, "requires": { "@babel/types": "^7.20.7", @@ -20150,9 +20273,9 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.7.tgz", - "integrity": "sha512-LtoWbDXOaidEf50hmdDqn9g8VEzsorMexoWMQdQODbvmqYmaF23pBP5VNPAGIFHsFQCIeKokDiz3CH5Y2jlY6w==", + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz", + "integrity": "sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -20161,6 +20284,7 @@ "@babel/helper-member-expression-to-functions": "^7.20.7", "@babel/helper-optimise-call-expression": "^7.18.6", "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", "@babel/helper-split-export-declaration": "^7.18.6" } }, @@ -20355,13 +20479,13 @@ } }, "@babel/helpers": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz", - "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", + "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==", "dev": true, "requires": { "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", + "@babel/traverse": "^7.20.13", "@babel/types": "^7.20.7" } }, @@ -20377,9 +20501,9 @@ } }, "@babel/parser": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", - "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", + "version": "7.20.15", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz", + "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { @@ -20753,9 +20877,9 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.11.tgz", - "integrity": "sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==", + "version": "7.20.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.15.tgz", + "integrity": "sha512-Vv4DMZ6MiNOhu/LdaZsT/bsLRxgL94d269Mv4R/9sp6+Mp++X/JqypZYypJXLlM4mlL352/Egzbzr98iABH1CA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2" @@ -21134,18 +21258,24 @@ "esutils": "^2.0.2" } }, + "@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, "@babel/runtime": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz", - "integrity": "sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", + "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", "requires": { "regenerator-runtime": "^0.13.11" } }, "@babel/standalone": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.20.11.tgz", - "integrity": "sha512-WUPlwwXFk3iViGE7QFVVp423eVtT+eoXu1940Xu4QJgqgHBF6WWtlwO1Ip5rIWQnp7OHrGdwrwKLtLhUVfOZbA==", + "version": "7.20.15", + "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.20.15.tgz", + "integrity": "sha512-B3LmZ1NHlTb2eFEaw8rftZc730Wh9MlmsH8ubb6IjsNoIk9+SQ2aAA0nrm/1806+PftPRAACPClmKTu8PG7Tew==", "dev": true }, "@babel/template": { @@ -21160,9 +21290,9 @@ } }, "@babel/traverse": { - "version": "7.20.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.10.tgz", - "integrity": "sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", + "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", @@ -21171,7 +21301,7 @@ "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.7", + "@babel/parser": "^7.20.13", "@babel/types": "^7.20.7", "debug": "^4.1.0", "globals": "^11.1.0" @@ -21207,9 +21337,9 @@ "optional": true }, "@cypress/request": { - "version": "2.88.10", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", - "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==", + "version": "2.88.11", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.11.tgz", + "integrity": "sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -21225,7 +21355,7 @@ "json-stringify-safe": "~5.0.1", "mime-types": "~2.1.19", "performance-now": "^2.1.0", - "qs": "~6.5.2", + "qs": "~6.10.3", "safe-buffer": "^5.1.2", "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", @@ -21298,9 +21428,9 @@ }, "dependencies": { "globals": { - "version": "13.19.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", - "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -21348,9 +21478,9 @@ } }, "@fortawesome/vue-fontawesome": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.2.tgz", - "integrity": "sha512-xHVtVY8ASUeEvgcA/7vULUesENhD+pi/EirRHdMBqooHlXBqK+yrV6d8tUye1m5UKQKVgYAHMhUBfOnoiwvc8Q==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.3.tgz", + "integrity": "sha512-KCPHi9QemVXGMrfuwf3nNnNo129resAIQWut9QTAMXmXqL2ErABC6ohd2yY5Ipq0CLWNbKHk8TMdTXL/Zf3ZhA==", "dev": true }, "@grpc/grpc-js": { @@ -22001,9 +22131,9 @@ } }, "@js-joda/core": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@js-joda/core/-/core-5.5.1.tgz", - "integrity": "sha512-oTFmkyv5MhgkHdZhoe5lwRoKW0t4njPvK3g7ODvK/prkoC5bwylKcyQJMsmjvgHBXoy4u5iLnB5yQ7AljouHAA==" + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@js-joda/core/-/core-5.5.2.tgz", + "integrity": "sha512-retLUN4TwCJ0QJDi9OCJwYVaXAz93NeOkEtEQL98M2bykBOxmURlP0YlfsuE46kItOOVZIWRYC3KsSLhQ1R2Qw==" }, "@louislam/ping": { "version": "0.4.2-mod.1", @@ -22374,13 +22504,13 @@ } }, "@types/babel__core": { - "version": "7.1.20", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz", - "integrity": "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", + "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", "dev": true, "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" @@ -22478,20 +22608,20 @@ } }, "@types/express": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.15.tgz", - "integrity": "sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==", + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", "requires": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.31", + "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "*" } }, "@types/express-serve-static-core": { - "version": "4.17.32", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz", - "integrity": "sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==", + "version": "4.17.33", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz", + "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==", "requires": { "@types/node": "*", "@types/qs": "*", @@ -22499,9 +22629,9 @@ } }, "@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", "dev": true, "requires": { "@types/node": "*" @@ -22596,9 +22726,9 @@ "dev": true }, "@types/node": { - "version": "18.11.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", - "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" + "version": "18.13.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.13.0.tgz", + "integrity": "sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==" }, "@types/normalize-package-data": { "version": "2.4.1", @@ -22714,39 +22844,39 @@ "dev": true }, "@vue/compiler-core": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz", - "integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==", + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.47.tgz", + "integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==", "dev": true, "requires": { "@babel/parser": "^7.16.4", - "@vue/shared": "3.2.45", + "@vue/shared": "3.2.47", "estree-walker": "^2.0.2", "source-map": "^0.6.1" } }, "@vue/compiler-dom": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz", - "integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==", + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz", + "integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==", "dev": true, "requires": { - "@vue/compiler-core": "3.2.45", - "@vue/shared": "3.2.45" + "@vue/compiler-core": "3.2.47", + "@vue/shared": "3.2.47" } }, "@vue/compiler-sfc": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz", - "integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==", + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz", + "integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==", "dev": true, "requires": { "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.45", - "@vue/compiler-dom": "3.2.45", - "@vue/compiler-ssr": "3.2.45", - "@vue/reactivity-transform": "3.2.45", - "@vue/shared": "3.2.45", + "@vue/compiler-core": "3.2.47", + "@vue/compiler-dom": "3.2.47", + "@vue/compiler-ssr": "3.2.47", + "@vue/reactivity-transform": "3.2.47", + "@vue/shared": "3.2.47", "estree-walker": "^2.0.2", "magic-string": "^0.25.7", "postcss": "^8.1.10", @@ -22765,19 +22895,19 @@ } }, "@vue/compiler-ssr": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz", - "integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==", + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz", + "integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==", "dev": true, "requires": { - "@vue/compiler-dom": "3.2.45", - "@vue/shared": "3.2.45" + "@vue/compiler-dom": "3.2.47", + "@vue/shared": "3.2.47" } }, "@vue/devtools-api": { - "version": "6.4.5", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.4.5.tgz", - "integrity": "sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz", + "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==", "dev": true }, "@vue/reactivity": { @@ -22798,14 +22928,14 @@ } }, "@vue/reactivity-transform": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz", - "integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==", + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz", + "integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==", "dev": true, "requires": { "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.45", - "@vue/shared": "3.2.45", + "@vue/compiler-core": "3.2.47", + "@vue/shared": "3.2.47", "estree-walker": "^2.0.2", "magic-string": "^0.25.7" }, @@ -22909,9 +23039,9 @@ } }, "@vue/shared": { - "version": "3.2.45", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz", - "integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==", + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz", + "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==", "dev": true }, "@vuepic/vue-datepicker": { @@ -22944,9 +23074,9 @@ } }, "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true }, "acorn-globals": { @@ -23207,6 +23337,11 @@ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + }, "await-lock": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz", @@ -23219,9 +23354,9 @@ "devOptional": true }, "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", "devOptional": true }, "axios": { @@ -23462,11 +23597,6 @@ "readable-stream": "~1.0.2" }, "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" - }, "readable-stream": { "version": "1.0.34", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", @@ -23676,15 +23806,15 @@ "dev": true }, "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" } }, "bser": { @@ -23755,13 +23885,13 @@ "integrity": "sha512-mbcDEZCkv2CZF4G01kr8eBd/5agkt9oCqz75tJMSIsquvRZ2sL6Hi5zGVKi/0OSC9oO1GHfJ2AV0ZIOY9vye0A==" }, "cacheable-request": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.5.tgz", - "integrity": "sha512-5RwYYCfzjNPsyJxb/QpaM0bfzx+kw5/YpDhZPm9oMIDntHFQ9YXeyV47ZvzlTE0XrrrbyO2UITJH4GF9eRLdXQ==", + "version": "10.2.7", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.7.tgz", + "integrity": "sha512-I4SA6mKgDxcxVbSt/UmIkb9Ny8qSkg6ReBHtAAXnZHk7KOSx5g3DTiAOaYzcHCs6oOdHn+bip9T48E6tMvK9hw==", "requires": { "@types/http-cache-semantics": "^4.0.1", "get-stream": "^6.0.1", - "http-cache-semantics": "^4.1.0", + "http-cache-semantics": "^4.1.1", "keyv": "^4.5.2", "mimic-response": "^4.0.0", "normalize-url": "^8.0.0", @@ -23811,12 +23941,20 @@ "camelcase": "^5.3.1", "map-obj": "^4.0.0", "quick-lru": "^4.0.1" + }, + "dependencies": { + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + } } }, "caniuse-lite": { - "version": "1.0.30001441", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz", - "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==", + "version": "1.0.30001451", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001451.tgz", + "integrity": "sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w==", "dev": true }, "caseless": { @@ -24321,9 +24459,9 @@ } }, "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" }, "convert-source-map": { "version": "1.9.0", @@ -24348,9 +24486,9 @@ "dev": true }, "core-js-compat": { - "version": "3.27.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.1.tgz", - "integrity": "sha512-Dg91JFeCDA17FKnneN7oCMz4BkQ4TcffkgHP4OWwp9yx3pi7ubqMDXXSacfNak1PQqjc95skyt+YBLHQJnkJwA==", + "version": "3.27.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.2.tgz", + "integrity": "sha512-welaYuF7ZtbYKGrIy7y3eb40d37rG1FvzEOfe7hSLd2iD6duMDqUhRfSvCGyC46HhR6Y8JXXdZ2lnRUMkPBpvg==", "dev": true, "requires": { "browserslist": "^4.21.4" @@ -24747,9 +24885,9 @@ "dev": true }, "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", + "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", "dev": true }, "defer-to-connect": { @@ -24956,9 +25094,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "version": "1.4.294", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.294.tgz", + "integrity": "sha512-PuHZB3jEN7D8WPPjLmBQAsqQz8tWHlkkB4n0E2OYw8RwVdmBYV0Wn+rUFH8JqYyIRb4HQhhedgxlZL163wqLrQ==", "dev": true }, "emittery": { @@ -25035,9 +25173,9 @@ } }, "engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==" + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz", + "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==" }, "enquirer": { "version": "2.3.6", @@ -25069,26 +25207,32 @@ } }, "es-abstract": { - "version": "1.20.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz", - "integrity": "sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==", + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", + "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", "requires": { + "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "function.prototype.name": "^1.1.5", "get-intrinsic": "^1.1.3", "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", "gopd": "^1.0.1", "has": "^1.0.3", "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", + "internal-slot": "^1.0.4", + "is-array-buffer": "^3.0.1", "is-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", "is-weakref": "^1.0.2", "object-inspect": "^1.12.2", "object-keys": "^1.1.1", @@ -25097,7 +25241,9 @@ "safe-regex-test": "^1.0.0", "string.prototype.trimend": "^1.0.6", "string.prototype.trimstart": "^1.0.6", - "unbox-primitive": "^1.0.2" + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" } }, "es-aggregate-error": { @@ -25114,6 +25260,16 @@ "has-property-descriptors": "^1.0.0" } }, + "es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + } + }, "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -25476,9 +25632,9 @@ "dev": true }, "globals": { - "version": "13.19.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", - "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -26032,6 +26188,14 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -26073,6 +26237,12 @@ "readable-stream": "^2.0.0" }, "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -26174,9 +26344,9 @@ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" }, "gamedig": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/gamedig/-/gamedig-4.0.5.tgz", - "integrity": "sha512-ROwljeTH8fcF44wi+NfTBdYSmiwtI5f1CJyGUx1DGVDvx7w2bfTxYSwR8FFFLCpNr78mtSwhsBONz1WZ5ucVig==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/gamedig/-/gamedig-4.0.6.tgz", + "integrity": "sha512-h0k9n/e5vNrd9Mh2wyFUp2Vo7ABWbDkdBxKC6FNJLOZiU5d9Z29bntGeYbXtOkcRWoV6Q63wSAJ3jLWxYQkpZw==", "requires": { "cheerio": "^1.0.0-rc.10", "compressjs": "^1.0.2", @@ -26249,9 +26419,9 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -26510,6 +26680,11 @@ "get-intrinsic": "^1.1.1" } }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -26601,9 +26776,9 @@ } }, "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" }, "http-errors": { "version": "1.8.1", @@ -26653,13 +26828,6 @@ "requires": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.2.0" - }, - "dependencies": { - "quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" - } } }, "https-proxy-agent": { @@ -26686,9 +26854,9 @@ "dev": true }, "hyperid": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/hyperid/-/hyperid-3.0.1.tgz", - "integrity": "sha512-I+tl7TS5nsoVhkxqX1rS3Qmqlq44eoPUcgPthW8v3IW8CvWL7lwtd6HQbkDUMrBKJTG0vgEaRsjT35imW/D+9Q==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/hyperid/-/hyperid-3.1.1.tgz", + "integrity": "sha512-RveV33kIksycSf7HLkq1sHB5wW0OwuX8ot8MYnY++gaaPXGFfKpBncHrAWxdpuEeRlazUMGWefwP1w6o6GaumA==", "dev": true, "requires": { "uuid": "^8.3.2", @@ -26773,11 +26941,11 @@ "dev": true }, "internal-slot": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", - "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", "requires": { - "get-intrinsic": "^1.1.3", + "get-intrinsic": "^1.2.0", "has": "^1.0.3", "side-channel": "^1.0.4" } @@ -26797,6 +26965,16 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, + "is-array-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", + "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-typed-array": "^1.1.10" + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -27029,6 +27207,18 @@ "has-symbols": "^1.0.2" } }, + "is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -27066,9 +27256,9 @@ } }, "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" }, "isemail": { "version": "3.2.0", @@ -28505,9 +28695,9 @@ "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==" }, "js-sdsl": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz", - "integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==" + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==" }, "js-tokens": { "version": "4.0.0", @@ -28776,9 +28966,9 @@ "dev": true }, "knex": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/knex/-/knex-2.4.0.tgz", - "integrity": "sha512-i0GWwqYp1Hs2yvc2rlDO6nzzkLhwdyOZKRdsMTB8ZxOs2IXQyL5rBjSbS1krowCh6V65T4X9CJaKtuIfkaPGSA==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/knex/-/knex-2.4.2.tgz", + "integrity": "sha512-tMI1M7a+xwHhPxjbl/H9K1kHX+VncEYcvCx5K00M16bWvpYPKAZd6QrCu68PtHAdIZNQPWZn0GVhqVBEthGWCg==", "requires": { "colorette": "2.0.19", "commander": "^9.1.0", @@ -29273,9 +29463,9 @@ } }, "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" }, "minimist-options": { "version": "4.1.0", @@ -29289,19 +29479,9 @@ } }, "minipass": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", - "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", - "requires": { - "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==" - } - } + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.3.tgz", + "integrity": "sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw==" }, "minizlib": { "version": "2.1.2", @@ -29466,9 +29646,9 @@ }, "dependencies": { "commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==" + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==" } } }, @@ -29503,26 +29683,17 @@ } }, "named-placeholders": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.2.tgz", - "integrity": "sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", + "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", "requires": { - "lru-cache": "^4.1.3" + "lru-cache": "^7.14.1" }, "dependencies": { "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==" } } }, @@ -29554,9 +29725,9 @@ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" }, "node-abort-controller": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.0.1.tgz", - "integrity": "sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==" }, "node-addon-api": { "version": "4.3.0", @@ -29572,9 +29743,9 @@ } }, "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", "requires": { "whatwg-url": "^5.0.0" }, @@ -29665,6 +29836,12 @@ "number-is-nan": "^1.0.0" } }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "optional": true + }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -29769,9 +29946,9 @@ "integrity": "sha512-i3Sf6khnenl0aXumo0whAlfPWTaBqHxEnVBBxpu3dZ7q69NkPPv71rvPjlDZ5wkeKCTNNUTECljerS5kcYQxRw==" }, "node-releases": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", - "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", "dev": true }, "nodemailer": { @@ -29876,12 +30053,12 @@ } }, "number-allocator": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.12.tgz", - "integrity": "sha512-sGB0qoQGmKimery9JubBQ9pQUr1V/LixJAk3Ygp7obZf6mpSXime8d7XHEobbIimkdZpgjkNlLt6G7LPEWFYWg==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.14.tgz", + "integrity": "sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==", "requires": { "debug": "^4.3.1", - "js-sdsl": "4.1.4" + "js-sdsl": "4.3.0" } }, "number-is-nan": { @@ -29913,9 +30090,9 @@ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" }, "object-keys": { "version": "1.1.1", @@ -29964,9 +30141,9 @@ } }, "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.1.tgz", + "integrity": "sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg==", "requires": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -30180,9 +30357,9 @@ "integrity": "sha512-His3Fh17Z4eg7oANLob6ZvH8xIVen3phEZh2QuyrIl4dQSDVEabNducv6ysROKpDNPSD+12tONZVWfSgMvDD9w==" }, "pg-protocol": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz", - "integrity": "sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", + "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" }, "pg-types": { "version": "2.2.0", @@ -30256,9 +30433,9 @@ "dev": true }, "postcss": { - "version": "8.4.20", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz", - "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==", + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", "dev": true, "requires": { "nanoid": "^3.3.4", @@ -30279,9 +30456,9 @@ }, "dependencies": { "js-tokens": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-8.0.0.tgz", - "integrity": "sha512-PC7MzqInq9OqKyTXfIvQNcjMkODJYC8A17kAaQgeW79yfhqTWSOfjHYQ2mDDcwJ96Iibtwkfh0C7R/OvqPlgVA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-8.0.1.tgz", + "integrity": "sha512-3AGrZT6tuMm1ZWWn9mLXh7XMfi2YtiLNPALCVxBCiUVq0LD1OQMxV/AdS/s7rLJU5o9i/jBZw/N4vXXL5dm29A==", "dev": true } } @@ -30487,11 +30664,6 @@ "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", "dev": true }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" - }, "psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -30508,9 +30680,9 @@ } }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" }, "q": { "version": "1.5.1", @@ -30619,10 +30791,13 @@ } }, "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "devOptional": true + "version": "6.10.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", + "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } }, "querystringify": { "version": "2.2.0", @@ -30637,10 +30812,9 @@ "dev": true }, "quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" }, "radius": { "version": "1.1.4", @@ -30863,25 +31037,19 @@ "dev": true }, "regexpu-core": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", - "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.0.tgz", + "integrity": "sha512-ZdhUQlng0RoscyW7jADnUZ25F5eVtHdMyXSb2PiwafvteRAOJUjFoUPEYZSIfP99fBIs3maLIRfpEddT78wAAQ==", "dev": true, "requires": { + "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" } }, - "regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, "regjsparser": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", @@ -30966,6 +31134,12 @@ "verror": "1.10.0" } }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "optional": true + }, "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", @@ -31045,9 +31219,9 @@ "dev": true }, "resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", + "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", "dev": true }, "responselike": { @@ -31364,9 +31538,9 @@ "dev": true }, "shell-quote": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", - "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", + "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==", "dev": true }, "side-channel": { @@ -31468,9 +31642,9 @@ } }, "socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.2.tgz", + "integrity": "sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==", "requires": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" @@ -31683,6 +31857,11 @@ "readable-stream": "^2.1.0" }, "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -32239,9 +32418,9 @@ "dev": true }, "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" }, "tunnel": { "version": "0.0.6", @@ -32294,6 +32473,16 @@ "mime-types": "~2.1.24" } }, + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -32807,9 +32996,9 @@ } }, "vue-multiselect": { - "version": "3.0.0-alpha.2", - "resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-3.0.0-alpha.2.tgz", - "integrity": "sha512-Xp9fGJECns45v+v8jXbCIsAkCybYkEg0lNwr7Z6HDUSMyx2TEIK2giipPE+qXiShEc1Ipn+ZtttH2iq9hwXP4Q==", + "version": "3.0.0-beta.1", + "resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-3.0.0-beta.1.tgz", + "integrity": "sha512-V+jpydtjyHcQ+yjHsEWEBrDAopOx/pufNkSAXNVDAGQ+ESDEJ7wYejNd9H1RiCnFOYK4yf1XSGqE+Mp3HJXmdg==", "dev": true }, "vue-prism-editor": { @@ -32893,15 +33082,15 @@ } }, "joi": { - "version": "17.7.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz", - "integrity": "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==", + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.1.tgz", + "integrity": "sha512-teoLhIvWE298R6AeJywcjR4sX2hHjB3/xJX4qPjg+gTg+c0mzUDsziYlqPmLomq9gVsfaMcgPaGc7VxtD/9StA==", "dev": true, "requires": { "@hapi/hoek": "^9.0.0", "@hapi/topo": "^5.0.0", "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.0", + "@sideway/formula": "^3.0.1", "@sideway/pinpoint": "^2.0.0" } } @@ -32986,6 +33175,19 @@ "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", "dev": true }, + "which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + } + }, "wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", From 8092640e2078bb6c85519f973d4cd3f1eb2a2bb8 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Mon, 13 Feb 2023 00:33:37 +0800 Subject: [PATCH 219/296] Update security report guide (#2762) --- .github/ISSUE_TEMPLATE/security.md | 19 +++++++++++++++++++ SECURITY.md | 3 ++- 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 .github/ISSUE_TEMPLATE/security.md diff --git a/.github/ISSUE_TEMPLATE/security.md b/.github/ISSUE_TEMPLATE/security.md new file mode 100644 index 00000000..26450ed3 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/security.md @@ -0,0 +1,19 @@ +--- + +name: "Security Issue" +about: "Just for alerting @louislam, do not provide any details here" +title: "Security Issue" +ref: "main" +labels: + +- security + +--- + +DO NOT PROVIDE ANY DETAILS HERE. Please privately report to https://github.com/louislam/uptime-kuma/security/advisories/new. + + +Why need this issue? It is because GitHub Advisory do not send a notification to @louislam, it is a workaround to do so. + +Your GitHub Advisory URL: + diff --git a/SECURITY.md b/SECURITY.md index c30e5f4f..43dc7654 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -2,7 +2,8 @@ ## Reporting a Vulnerability -Please report security issues to https://github.com/louislam/uptime-kuma/security/advisories/new. +1. Please report security issues to https://github.com/louislam/uptime-kuma/security/advisories/new. +1. Please also create a empty security issues for alerting me, as GitHub Advisory do not send a notification, I probably will miss without this. https://github.com/louislam/uptime-kuma/issues/new?assignees=&labels=help&template=security.md Do not use the public issue tracker or discuss it in the public as it will cause more damage. From f1bac7ce8ae0cc0f22ee89d98949568e7c000300 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Mon, 13 Feb 2023 16:26:45 +0800 Subject: [PATCH 220/296] Add a script that deploy to the demo server --- CONTRIBUTING.md | 2 +- extra/deploy-demo-server.js | 54 ++++++++++++ package-lock.json | 167 ++++++++++++++++++++++++++++++++++++ package.json | 6 +- 4 files changed, 226 insertions(+), 3 deletions(-) create mode 100644 extra/deploy-demo-server.js diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3f455092..09c94e71 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -240,7 +240,7 @@ https://github.com/louislam/uptime-kuma/issues?q=sort%3Aupdated-desc 5. `git push` 6. Publish the release note as 1.X.X 7. Press any key to continue -8. SSH to demo site server and update to 1.X.X +8. Deploy to the demo server: `npm run deploy-demo-server` Checking: diff --git a/extra/deploy-demo-server.js b/extra/deploy-demo-server.js new file mode 100644 index 00000000..210270f2 --- /dev/null +++ b/extra/deploy-demo-server.js @@ -0,0 +1,54 @@ +require("dotenv").config(); +const { NodeSSH } = require("node-ssh"); +const readline = require("readline"); +const rl = readline.createInterface({ input: process.stdin, + output: process.stdout }); +const prompt = (query) => new Promise((resolve) => rl.question(query, resolve)); + +(async () => { + try { + console.log("SSH to demo server"); + const ssh = new NodeSSH(); + await ssh.connect({ + host: process.env.UPTIME_KUMA_DEMO_HOST, + port: process.env.UPTIME_KUMA_DEMO_PORT, + username: process.env.UPTIME_KUMA_DEMO_USERNAME, + privateKeyPath: process.env.UPTIME_KUMA_DEMO_PRIVATE_KEY_PATH + }); + + let cwd = process.env.UPTIME_KUMA_DEMO_CWD; + let result; + + const version = await prompt("Enter Version: "); + + result = await ssh.execCommand("git fetch --all", { + cwd, + }); + console.log(result.stdout + result.stderr); + + await prompt("Press any key to continue..."); + + result = await ssh.execCommand(`git checkout ${version} --force`, { + cwd, + }); + console.log(result.stdout + result.stderr); + + result = await ssh.execCommand("npm install --production", { + cwd, + }); + console.log(result.stdout + result.stderr); + + result = await ssh.execCommand("pm2 restart 1", { + cwd, + }); + console.log(result.stdout + result.stderr); + + } catch (e) { + console.log(e); + } finally { + rl.close(); + } +})(); + +// When done reading prompt, exit program +rl.on("close", () => process.exit(0)); diff --git a/package-lock.json b/package-lock.json index 5d172288..273cb480 100644 --- a/package-lock.json +++ b/package-lock.json @@ -95,6 +95,7 @@ "favico.js": "~0.3.10", "jest": "~27.2.5", "marked": "~4.2.5", + "node-ssh": "^13.0.1", "postcss-html": "~1.5.0", "postcss-rtlcss": "~3.7.2", "postcss-scss": "~4.0.4", @@ -6258,6 +6259,16 @@ "node": ">=4" } }, + "node_modules/buildcheck": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.3.tgz", + "integrity": "sha512-pziaA+p/wdVImfcbsZLNF32EiWyujlQLwolMqUQE8xpKNOH7KmZQaY8sXN7DGOEzPAElo9QTaeNRfGnf3iOJbA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/bulk-write-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/bulk-write-stream/-/bulk-write-stream-2.0.1.tgz", @@ -7135,6 +7146,21 @@ "node": ">=10" } }, + "node_modules/cpu-features": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.4.tgz", + "integrity": "sha512-fKiZ/zp1mUwQbnzb9IghXtHtDoTMtNeb8oYGx6kX2SYfhnG0HNdBEBIzB9b5KlXu5DQPhfy3mInbBxFcgwAr3A==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "buildcheck": "0.0.3", + "nan": "^2.15.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/cron-validate": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/cron-validate/-/cron-validate-1.4.5.tgz", @@ -14204,6 +14230,13 @@ "node": ">=12" } }, + "node_modules/nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true, + "optional": true + }, "node_modules/nanoclone": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz", @@ -14501,6 +14534,23 @@ "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", "dev": true }, + "node_modules/node-ssh": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/node-ssh/-/node-ssh-13.0.1.tgz", + "integrity": "sha512-prGXb9KXXtrienVBPiyOCm7F8KSsQciN8VCgrkZeJAlSEtF8HsXa/0uVE5a6MgwIBPa0etTgwiyj/lfiFdVK1Q==", + "dev": true, + "dependencies": { + "is-stream": "^2.0.0", + "make-dir": "^3.1.0", + "sb-promise-queue": "^2.1.0", + "sb-scandir": "^3.1.0", + "shell-escape": "^0.2.0", + "ssh2": "^1.5.0" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/nodemailer": { "version": "6.6.5", "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.6.5.tgz", @@ -16547,6 +16597,27 @@ "node": ">=10" } }, + "node_modules/sb-promise-queue": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sb-promise-queue/-/sb-promise-queue-2.1.0.tgz", + "integrity": "sha512-zwq4YuP1FQFkGx2Q7GIkZYZ6PqWpV+bg0nIO1sJhWOyGyhqbj0MsTvK6lCFo5TQwX5pZr6SCQ75e8PCDCuNvkg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/sb-scandir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/sb-scandir/-/sb-scandir-3.1.0.tgz", + "integrity": "sha512-70BVm2xz9jn94zSQdpvYrEG101/UV9TVGcfWr9T5iob3QhCK4lYXeculfBqPGFv3XTeKgx4dpWyYIDeZUqo4kg==", + "dev": true, + "dependencies": { + "sb-promise-queue": "^2.1.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -16641,6 +16712,12 @@ "node": ">=8" } }, + "node_modules/shell-escape": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/shell-escape/-/shell-escape-0.2.0.tgz", + "integrity": "sha512-uRRBT2MfEOyxuECseCZd28jC1AJ8hmqqneWQ4VWUTgCAFvb3wKU1jLqj6egC4Exrr88ogg3dp+zroH4wJuaXzw==", + "dev": true + }, "node_modules/shell-quote": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", @@ -16930,6 +17007,24 @@ "node": ">= 0.6" } }, + "node_modules/ssh2": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.11.0.tgz", + "integrity": "sha512-nfg0wZWGSsfUe/IBJkXVll3PEZ//YH2guww+mP88gTpuSU4FtZN7zu9JoeTGOyCNx2dTDtT9fOpWwlzyj4uOOw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "asn1": "^0.2.4", + "bcrypt-pbkdf": "^1.0.2" + }, + "engines": { + "node": ">=10.16.0" + }, + "optionalDependencies": { + "cpu-features": "~0.0.4", + "nan": "^2.16.0" + } + }, "node_modules/sshpk": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", @@ -23864,6 +23959,13 @@ "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" }, + "buildcheck": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.3.tgz", + "integrity": "sha512-pziaA+p/wdVImfcbsZLNF32EiWyujlQLwolMqUQE8xpKNOH7KmZQaY8sXN7DGOEzPAElo9QTaeNRfGnf3iOJbA==", + "dev": true, + "optional": true + }, "bulk-write-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/bulk-write-stream/-/bulk-write-stream-2.0.1.tgz", @@ -24521,6 +24623,17 @@ "yaml": "^1.10.0" } }, + "cpu-features": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.4.tgz", + "integrity": "sha512-fKiZ/zp1mUwQbnzb9IghXtHtDoTMtNeb8oYGx6kX2SYfhnG0HNdBEBIzB9b5KlXu5DQPhfy3mInbBxFcgwAr3A==", + "dev": true, + "optional": true, + "requires": { + "buildcheck": "0.0.3", + "nan": "^2.15.0" + } + }, "cron-validate": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/cron-validate/-/cron-validate-1.4.5.tgz", @@ -29697,6 +29810,13 @@ } } }, + "nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true, + "optional": true + }, "nanoclone": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz", @@ -29951,6 +30071,20 @@ "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", "dev": true }, + "node-ssh": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/node-ssh/-/node-ssh-13.0.1.tgz", + "integrity": "sha512-prGXb9KXXtrienVBPiyOCm7F8KSsQciN8VCgrkZeJAlSEtF8HsXa/0uVE5a6MgwIBPa0etTgwiyj/lfiFdVK1Q==", + "dev": true, + "requires": { + "is-stream": "^2.0.0", + "make-dir": "^3.1.0", + "sb-promise-queue": "^2.1.0", + "sb-scandir": "^3.1.0", + "shell-escape": "^0.2.0", + "ssh2": "^1.5.0" + } + }, "nodemailer": { "version": "6.6.5", "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.6.5.tgz", @@ -31454,6 +31588,21 @@ "xmlchars": "^2.2.0" } }, + "sb-promise-queue": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sb-promise-queue/-/sb-promise-queue-2.1.0.tgz", + "integrity": "sha512-zwq4YuP1FQFkGx2Q7GIkZYZ6PqWpV+bg0nIO1sJhWOyGyhqbj0MsTvK6lCFo5TQwX5pZr6SCQ75e8PCDCuNvkg==", + "dev": true + }, + "sb-scandir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/sb-scandir/-/sb-scandir-3.1.0.tgz", + "integrity": "sha512-70BVm2xz9jn94zSQdpvYrEG101/UV9TVGcfWr9T5iob3QhCK4lYXeculfBqPGFv3XTeKgx4dpWyYIDeZUqo4kg==", + "dev": true, + "requires": { + "sb-promise-queue": "^2.1.0" + } + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -31537,6 +31686,12 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, + "shell-escape": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/shell-escape/-/shell-escape-0.2.0.tgz", + "integrity": "sha512-uRRBT2MfEOyxuECseCZd28jC1AJ8hmqqneWQ4VWUTgCAFvb3wKU1jLqj6egC4Exrr88ogg3dp+zroH4wJuaXzw==", + "dev": true + }, "shell-quote": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", @@ -31774,6 +31929,18 @@ "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==" }, + "ssh2": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.11.0.tgz", + "integrity": "sha512-nfg0wZWGSsfUe/IBJkXVll3PEZ//YH2guww+mP88gTpuSU4FtZN7zu9JoeTGOyCNx2dTDtT9fOpWwlzyj4uOOw==", + "dev": true, + "requires": { + "asn1": "^0.2.4", + "bcrypt-pbkdf": "^1.0.2", + "cpu-features": "~0.0.4", + "nan": "^2.16.0" + } + }, "sshpk": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", diff --git a/package.json b/package.json index d5d1c5fd..3d370aea 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,8 @@ "cy:run": "npx cypress run --browser chrome --headless --config-file ./config/cypress.config.js", "cy:run:unit": "npx cypress run --browser chrome --headless --config-file ./config/cypress.frontend.config.js", "cypress-open": "concurrently -k -r \"node test/prepare-test-server.js && node server/server.js --port=3002 --data-dir=./data/test/\" \"cypress open --config-file ./config/cypress.config.js\"", - "build-healthcheck-armv7": "cross-env GOOS=linux GOARCH=arm GOARM=7 go build -x -o ./extra/healthcheck-armv7 ./extra/healthcheck.go" + "build-healthcheck-armv7": "cross-env GOOS=linux GOARCH=arm GOARM=7 go build -x -o ./extra/healthcheck-armv7 ./extra/healthcheck.go", + "depoly-demo-server": "node extra/deploy-demo-server.js" }, "dependencies": { "@grpc/grpc-js": "~1.7.3", @@ -150,8 +151,9 @@ "eslint": "~8.14.0", "eslint-plugin-vue": "~8.7.1", "favico.js": "~0.3.10", - "marked": "~4.2.5", "jest": "~27.2.5", + "marked": "~4.2.5", + "node-ssh": "~13.0.1", "postcss-html": "~1.5.0", "postcss-rtlcss": "~3.7.2", "postcss-scss": "~4.0.4", From 29976d8a034427dbb2d0b28d7b3f92b79c1b0e7c Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Mon, 13 Feb 2023 16:35:12 +0800 Subject: [PATCH 221/296] minor --- docker/dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/dockerfile b/docker/dockerfile index 775cec59..1799044a 100644 --- a/docker/dockerfile +++ b/docker/dockerfile @@ -71,7 +71,7 @@ RUN npm ci EXPOSE 3000 3001 VOLUME ["/app/data"] -HEALTHCHECK --interval=60s --timeout=30s --start-period=180s --retries=5 CMD node extra/healthcheck.js +HEALTHCHECK --interval=60s --timeout=30s --start-period=180s --retries=5 CMD extra/healthcheck CMD ["npm", "run", "start-pr-test"] ############################################ From c5ff0106692d3ceadbc5174248628db2e973b816 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Mon, 13 Feb 2023 16:48:05 +0800 Subject: [PATCH 222/296] Add loose dependency `qs` which is used by `aliyun-sms.js` --- package-lock.json | 5 ++--- package.json | 1 + 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 273cb480..baf9f4f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -55,6 +55,7 @@ "prom-client": "~13.2.0", "prometheus-api-metrics": "~3.2.1", "protobufjs": "~7.1.1", + "qs": "~6.10.0", "redbean-node": "~0.2.0", "redis": "~4.5.1", "socket.io": "~4.5.3", @@ -95,7 +96,7 @@ "favico.js": "~0.3.10", "jest": "~27.2.5", "marked": "~4.2.5", - "node-ssh": "^13.0.1", + "node-ssh": "~13.0.1", "postcss-html": "~1.5.0", "postcss-rtlcss": "~3.7.2", "postcss-scss": "~4.0.4", @@ -15708,7 +15709,6 @@ "version": "6.10.4", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", - "dev": true, "dependencies": { "side-channel": "^1.0.4" }, @@ -30928,7 +30928,6 @@ "version": "6.10.4", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", - "dev": true, "requires": { "side-channel": "^1.0.4" } diff --git a/package.json b/package.json index 3d370aea..5093e5d6 100644 --- a/package.json +++ b/package.json @@ -113,6 +113,7 @@ "prom-client": "~13.2.0", "prometheus-api-metrics": "~3.2.1", "protobufjs": "~7.1.1", + "qs": "~6.10.4", "redbean-node": "~0.2.0", "redis": "~4.5.1", "socket.io": "~4.5.3", From 8f78c54ca28702a6ade3f0eacea3c3b090d28636 Mon Sep 17 00:00:00 2001 From: Federico Lazcano Date: Mon, 13 Feb 2023 08:59:25 +0000 Subject: [PATCH 223/296] Translated using Weblate (Spanish) Currently translated at 96.8% (670 of 692 strings) Co-authored-by: Federico Lazcano Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/es/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/es-ES.json | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/lang/es-ES.json b/src/lang/es-ES.json index 8fa80158..44f28869 100644 --- a/src/lang/es-ES.json +++ b/src/lang/es-ES.json @@ -655,5 +655,28 @@ "gorush": "Gorush", "squadcast": "Squadcast", "Maintenance Time Window of a Day": "Ventana de tiempo de mantenimiento de un día", - "Effective Date Range": "Rango de Fecha Efectivo" + "Effective Date Range": "Rango de Fecha Efectivo", + "Free Mobile User Identifier": "Identificador de Usuario de Free Mobile", + "Gateway Type": "Tipo de Puerta de Enlace", + "SMSManager": "SMSManager", + "goAlertInfo": "GoAlert es una aplicación de código abierto para la programación de guardias, escaladas automatizadas y notificaciones (como SMS o llamadas de voz). ¡Involucre automáticamente a la persona adecuada, de la manera correcta y en el momento adecuado! {0}", + "Free Mobile API Key": "Clave API de Free Mobile", + "high": "arriba", + "SMSManager API Docs": "Documentación API de SMSManager ", + "smseagleContact": "Nombre(s) de contacto de Guía Telefónica", + "smseagleToken": "Token de Acceso a la API", + "smseagleUrl": "URL del dispositivo SMSEagle", + "Legacy Octopush-DM": "Octopush-DM heredado", + "HomeAssistant": "Home Assistant", + "goAlertIntegrationKeyInfo": "Obtenga la clave de integración API genérica para el servicio en este formato \"aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\", generalmente el valor del parámetro token de la URL copiada.", + "Topic": "Tema", + "matrix": "Matrix", + "Feishu WebHookUrl": "WebHookURL de Feishu", + "wayToGetPagerDutyKey": "Puede obtener esto yendo a Servicio -> Directorio de servicios -> (Seleccione un servicio) -> Integraciones -> Agregar integración. Aquí puede buscar \"API de eventos V2\". Más información {0}", + "alertaApiKey": "Clave API", + "alertaAlertState": "Estado de Alerta", + "alertaRecoverState": "Estado de Recuperación", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "Nombre de usuario de API (inc. webapi_ prefix)", + "smseagleGroup": "Nombre(s) de grupo de Guía Telefónica" } From 7984a529293aa4ff019250f0623955cef974b73a Mon Sep 17 00:00:00 2001 From: Giuseppe Monaco Date: Mon, 13 Feb 2023 08:59:25 +0000 Subject: [PATCH 224/296] Translated using Weblate (Italian) Currently translated at 53.1% (368 of 692 strings) Co-authored-by: Giuseppe Monaco Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/it/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/it-IT.json | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/lang/it-IT.json b/src/lang/it-IT.json index ccb8132f..ebf0f495 100644 --- a/src/lang/it-IT.json +++ b/src/lang/it-IT.json @@ -28,7 +28,7 @@ "confirmDisableTwoFAMsg": "Sei sicuro di voler disabilitare l'autenticazione a due fattori?", "Settings": "Impostazioni", "Dashboard": "Dashboard", - "New Update": "Nuovo aggiornamento disponibile!", + "New Update": "Nuovo aggiornamento disponibile", "Language": "Lingua", "Appearance": "Aspetto", "Theme": "Tema", @@ -55,7 +55,7 @@ "Delete": "Elimina", "Current": "Corrente", "Uptime": "Tempo di attività", - "Cert Exp.": "Scadenza certificato", + "Cert Exp.": "Scadenza Certificato", "day": "giorno | giorni", "-day": "-giorni", "hour": "ora", @@ -363,5 +363,13 @@ "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)" + "GoogleChat": "Google Chat (solo per Google Workspace)", + "Help": "Aiuto", + "Maintenance": "Manutenzione", + "statusMaintenance": "In manutenzione", + "General Monitor Type": "Monitor Generico", + "Game": "Gioco", + "Passive Monitor Type": "Monitor Passivo", + "Specific Monitor Type": "Monitor Specifico", + "Monitor": "Monitor | Monitor" } From e10ea1049d32f1ede69fe4c7d01810eea378fb55 Mon Sep 17 00:00:00 2001 From: Adam Stachowicz Date: Mon, 13 Feb 2023 08:59:25 +0000 Subject: [PATCH 225/296] Translated using Weblate (Polish) Currently translated at 100.0% (697 of 697 strings) Translated using Weblate (Polish) Currently translated at 100.0% (697 of 697 strings) Translated using Weblate (Polish) Currently translated at 100.0% (693 of 693 strings) Translated using Weblate (Polish) Currently translated at 100.0% (692 of 692 strings) Co-authored-by: Adam Stachowicz Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/pl/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/pl.json | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/lang/pl.json b/src/lang/pl.json index ebc58797..6d802185 100644 --- a/src/lang/pl.json +++ b/src/lang/pl.json @@ -208,7 +208,7 @@ "smtpBCC": "UDW", "discord": "Discord", "Discord Webhook URL": "URL webhook Discorda", - "wayToGetDiscordURL": "Możesz go uzyskać, przechodząc do Ustawienia serwera -> Integracje -> Tworzenie webhooka", + "wayToGetDiscordURL": "Możesz go uzyskać, przechodząc do Ustawienia serwera -> Integracje -> Webhooki -> Tworzenie webhooka", "Bot Display Name": "Wyświetlana nazwa bota", "Prefix Custom Message": "Własny początek wiadomości", "Hello @everyone is...": "Hej {'@'}everyone…", @@ -686,9 +686,11 @@ "Packet Size": "Rozmiar pakietu", "uninstalling": "Odinstalowywanie", "loadingError": "Nie można pobrać danych, proszę spróbować ponownie później.", - "plugin": "Wtyczka | Wtyczki", + "plugin": "Plugin | Pluginy", "install": "Instaluj", "installing": "Instalowanie", "uninstall": "Odinstaluj", - "confirmUninstallPlugin": "Czy na pewno chcesz odinstalować tę wtyczkę?" + "confirmUninstallPlugin": "Czy na pewno chcesz odinstalować tę wtyczkę?", + "Custom Monitor Type": "Własny typ monitora", + "markdownSupported": "Obsługiwana składnia Markdown" } From 46413a57e89f0a61d43306e89f3dd4e5e41075d5 Mon Sep 17 00:00:00 2001 From: MrEddX Date: Mon, 13 Feb 2023 08:59:25 +0000 Subject: [PATCH 226/296] Translated using Weblate (Bulgarian) Currently translated at 99.8% (696 of 697 strings) Translated using Weblate (Bulgarian) Currently translated at 100.0% (694 of 694 strings) Translated using Weblate (Bulgarian) Currently translated at 100.0% (693 of 693 strings) Co-authored-by: MrEddX Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/bg/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/bg-BG.json | 45 +++++++++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/src/lang/bg-BG.json b/src/lang/bg-BG.json index 3a5f532d..66ce48fe 100644 --- a/src/lang/bg-BG.json +++ b/src/lang/bg-BG.json @@ -227,7 +227,7 @@ "smtpCC": "Явно копие до имейл адрес:", "smtpBCC": "Скрито копие до имейл адрес:", "Discord Webhook URL": "Discord URL адрес на уеб кука", - "wayToGetDiscordURL": "Може да създадете, от меню \"Настройки на сървъра\" -> \"Интеграции\" -> \"Уеб куки\" -> \"Нова уеб кука\"", + "wayToGetDiscordURL": "Можете да създадете, от меню \"Настройки на сървъра\" -> \"Интеграции\" -> \"Уеб куки\" -> \"Нова уеб кука\"", "Bot Display Name": "Име на бота, което да се показва", "Prefix Custom Message": "Модифицирано обръщение", "Hello @everyone is...": "Здравейте, {'@'}everyone е…", @@ -236,8 +236,8 @@ "Number": "Номер", "Recipients": "Получатели", "needSignalAPI": "Необходимо е да разполагате със Signal клиент с REST API.", - "wayToCheckSignalURL": "Може да посетите този URL адрес, ако се нуждаете от помощ при настройването:", - "signalImportant": "ВАЖНО: Не може да смесвате \"Групи\" и \"Номера\" в поле \"Получатели\"!", + "wayToCheckSignalURL": "Можете да посетите този URL адрес, ако се нуждаете от помощ при настройването:", + "signalImportant": "ВАЖНО: Не можете да смесвате \"Групи\" и \"Номера\" в поле \"Получатели\"!", "Application Token": "Токен код за приложението", "Server URL": "URL адрес на сървъра", "Priority": "Приоритет", @@ -278,21 +278,21 @@ "Basic Settings": "Основни настройки", "User ID": "Потребител ID", "Messaging API": "API за съобщаване", - "wayToGetLineChannelToken": "Необходимо е първо да посетите {0}, за да създадете (Messaging API) за доставчик и канал, след което може да вземете токен кода за канал и потребителско ID от споменатите по-горе елементи на менюто.", + "wayToGetLineChannelToken": "Необходимо е първо да посетите {0}, за да създадете (Messaging API) за доставчик и канал, след което можете да вземете токен кода за канал и потребителско ID от споменатите по-горе елементи на менюто.", "Icon URL": "URL адрес за иконка", - "aboutIconURL": "Може да предоставите линк към картинка в поле \"URL Адрес за иконка\" за да отмените картинката на профила по подразбиране. Няма да се използва, ако вече сте настроили емотикон.", - "aboutMattermostChannelName": "Може да замените канала по подразбиране, към който публикува уеб куката, като въведете името на канала в полето \"Канал име\". Трябва да бъде активирано в настройките за уеб кука на Mattermost. Например: #other-channel", + "aboutIconURL": "Можете да предоставите линк към картинка в поле \"URL Адрес за иконка\" за да отмените картинката на профила по подразбиране. Няма да се използва, ако вече сте настроили емотикон.", + "aboutMattermostChannelName": "Можете да замените канала по подразбиране, към който публикува уеб куката, като въведете името на канала в полето \"Канал име\". Трябва да бъде активирано в настройките за уеб кука на Mattermost. Например: #other-channel", "matrix": "Matrix", "promosmsTypeEco": "SMS ECO - евтин, но бавен. Често е претоварен. Само за получатели от Полша.", "promosmsTypeFlash": "SMS FLASH - Съобщението автоматично се показва на устройството на получателя. Само за получатели от Полша.", - "promosmsTypeFull": "SMS FULL - Високо ниво на SMS услуга. Може да използвате Вашето име като подател (Необходимо е първо да регистрирате името). Надежден метод за съобщения тип тревога.", + "promosmsTypeFull": "SMS FULL - Високо ниво на SMS услуга. Можете да използвате Вашето име като подател (Необходимо е първо да регистрирате името). Надежден метод за съобщения тип тревога.", "promosmsTypeSpeed": "SMS SPEED - Най-висок приоритет в системата. Много бърза и надеждна, но същевременно скъпа услуга. (Около два пъти по-висока цена в сравнение с SMS FULL).", - "promosmsPhoneNumber": "Телефонен номер (за получатели от Полша, може да пропуснете въвеждането на код за населено място)", + "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.", + "matrixDesc1": "Можете да намерите \"ID на вътрешна стая\" в разширените настройки на стаята във вашия Matrix клиент. Примерен изглед: !QMdRCpUIfLwsfjxye6:home.server.", "matrixDesc2": "Силно препоръчваме да създадете НОВ потребител и да НЕ използвате токен кодът на вашия личен Matrix потребител, т.к. той позволява пълен достъп до вашия акаунт и всички стаи към които сте се присъединили. Вместо това създайте нов потребител и го поканете само в стаята, където желаете да получавате известията. Токен код за достъп ще получите изпълнявайки {0}", "Method": "Метод", "Body": "Съобщение", @@ -304,7 +304,7 @@ "clearDataOlderThan": "Ще се съхранява за {0} дни.", "records": "записа", "One record": "Един запис", - "steamApiKeyDescription": "За да мониторирате Steam Gameserver се нуждаете от Steam Web-API ключ. Може да регистрирате Вашия API ключ тук: ", + "steamApiKeyDescription": "За да мониторирате Steam Game Server се нуждаете от Steam Web-API ключ. Можете да регистрирате Вашия API ключ тук: ", "clicksendsms": "ClickSend SMS", "apiCredentials": "API удостоверяване", "PasswordsDoNotMatch": "Паролите не съвпадат.", @@ -379,8 +379,8 @@ "setAsDefault": "Зададен по подразбиране", "deleteProxyMsg": "Сигурни ли сте, че желаете да изтриете това прокси за всички монитори?", "proxyDescription": "За да функционират трябва да бъдат зададени към монитор.", - "enableProxyDescription": "Това прокси няма да има ефект върху заявките за мониторинг, докато не бъде активирано. Може да контролирате временното деактивиране на проксито от всички монитори чрез статуса на активиране.", - "setAsDefaultProxyDescription": "Това прокси ще бъде активно по подразбиране за новите монитори. Може да го изключите по отделно за всеки един монитор.", + "enableProxyDescription": "Това прокси няма да има ефект върху заявките за мониторинг, докато не бъде активирано. Можете да контролирате временното деактивиране на проксито от всички монитори чрез статуса на активиране.", + "setAsDefaultProxyDescription": "Това прокси ще бъде активно по подразбиране за новите монитори. Можете да го изключвате отделно за всеки един монитор.", "Certificate Chain": "Верига на сертификата", "Valid": "Валиден", "Invalid": "Невалиден", @@ -435,7 +435,7 @@ "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\". Сигурни ли сте, че желаете да го спрете? Въведете Вашата текуща парола за да потвърдите.", + "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": "Моля, прочетете", @@ -513,15 +513,15 @@ "Most likely causes:": "Най-вероятни причини:", "The resource is no longer available.": "Ресурсът вече не е наличен.", "There might be a typing error in the address.": "Възможно е да е допусната грешка при изписването на адреса.", - "What you can try:": "Може да опитате:", + "What you can try:": "Какво можете да опитате:", "Retype the address.": "Повторно въвеждане на адреса.", "Go back to the previous page.": "Да се върнете към предишната страница.", "Coming Soon": "Очаквайте скоро", - "wayToGetClickSendSMSToken": "Може да получите API потребителско име и API ключ от {0} .", - "dnsPortDescription": "DNS порт на сървъра. По подразбиране е 53, но може да бъде променен по всяко време.", + "wayToGetClickSendSMSToken": "Можете да получите API потребителско име и API ключ от {0} .", + "dnsPortDescription": "DNS порт на сървъра. По подразбиране е 53. Можете да го промените по всяко време.", "error": "грешка", "critical": "критично", - "wayToGetPagerDutyKey": "Може да го получите като посетите Service -> Service Directory -> (Select a service) -> Integrations -> Add integration. Тук трябва да потърсите \"Events API V2\". Повече информация {0}", + "wayToGetPagerDutyKey": "Можете да го получите като посетите Service -> Service Directory -> (Select a service) -> Integrations -> Add integration. Тук трябва да потърсите \"Events API V2\". Повече информация {0}", "Integration Key": "Ключ за интегриране", "Integration URL": "URL адрес за интеграция", "Auto resolve or acknowledged": "Автоматично разрешаване или потвърждаване", @@ -536,7 +536,7 @@ "Domain": "Домейн", "Workstation": "Работна станция", "disableCloudflaredNoAuthMsg": "Тъй като сте в режим \"No Auth mode\", парола не се изисква.", - "wayToGetLineNotifyToken": "Може да получите токен код за достъп от {0}", + "wayToGetLineNotifyToken": "Можете да получите токен код за достъп от {0}", "resendEveryXTimes": "Изпращай повторно на всеки {0} пъти", "resendDisabled": "Повторното изпращане е изключено", "Resend Notification if Down X times consequently": "Повторно изпращане на известие, ако е недостъпен X пъти последователно", @@ -601,7 +601,7 @@ "SMSManager API Docs": "SMSManager API Документация ", "Gateway Type": "Тип на шлюза", "SMSManager": "SMSManager", - "You can divide numbers with": "Може да разделяте числата с", + "You can divide numbers with": "Можете да разделяте числата с", "or": "или", "recurringInterval": "Интервал", "Recurring": "Повтаряне", @@ -691,5 +691,10 @@ "installing": "Инсталиране", "uninstall": "Деинсталирай", "uninstalling": "Деинсталиране", - "confirmUninstallPlugin": "Сигурни ли сте, че желаете да деинсталирате този плъгин?" + "confirmUninstallPlugin": "Сигурни ли сте, че желаете да деинсталирате този плъгин?", + "markdownSupported": "Поддържа се Markdown синтаксис", + "Google Analytics ID": "Google Analytics ID", + "Edit Tag": "Редактиране на таг", + "Learn More": "Научете повече", + "Server Address": "Сървър адрес" } From a16ea4c6f34dccfdfa6255de69d58a33c69522a5 Mon Sep 17 00:00:00 2001 From: Michal Date: Mon, 13 Feb 2023 08:59:25 +0000 Subject: [PATCH 227/296] Translated using Weblate (Czech) Currently translated at 100.0% (697 of 697 strings) Translated using Weblate (Czech) Currently translated at 99.8% (696 of 697 strings) Translated using Weblate (Czech) Currently translated at 100.0% (697 of 697 strings) Translated using Weblate (Czech) Currently translated at 100.0% (694 of 694 strings) Translated using Weblate (Czech) Currently translated at 100.0% (693 of 693 strings) Co-authored-by: Michal Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/cs/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/cs-CZ.json | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/lang/cs-CZ.json b/src/lang/cs-CZ.json index c6b28312..18a3d333 100644 --- a/src/lang/cs-CZ.json +++ b/src/lang/cs-CZ.json @@ -90,7 +90,7 @@ "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", + "Resend Notification if Down X times consequently": "Zaslat oznámení znovu, 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í", @@ -212,7 +212,7 @@ "Required": "Vyžadováno", "telegram": "Telegram", "ZohoCliq": "ZohoCliq", - "Bot Token": "Token robota", + "Bot Token": "Token bota", "wayToGetTelegramToken": "Token můžete získat od {0}.", "Chat ID": "ID chatu", "supportTelegramChatID": "Podpora přímého chatu / skupiny / ID chatu kanálu", @@ -237,7 +237,7 @@ "smtpBCC": "Skrytá kopie", "discord": "Discord", "Discord Webhook URL": "URL Webhooku Discord", - "wayToGetDiscordURL": "Získáte tak, že přejdete do Nastavení serveru - > Integrace - > Vytvořit Webhook", + "wayToGetDiscordURL": "Získáte tak, že přejdete do Nastavení serveru - > Integrace - > Zobrazi webhooky -> Nový webhook", "Bot Display Name": "Zobrazované jméno robota", "Prefix Custom Message": "Předpona vlastní zprávy", "Hello @everyone is...": "Dobrý den, {'@'}všichni jsou…", @@ -332,7 +332,7 @@ "Body": "Tělo", "Headers": "Hlavičky", "PushUrl": "Push URL", - "HeadersInvalidFormat": "Hlaviča žádosti není platný JSON: ", + "HeadersInvalidFormat": "Hlavičky žádosti nejsou platný JSON: ", "BodyInvalidFormat": "Text žádosti není platný JSON: ", "Monitor History": "Historie dohledu", "clearDataOlderThan": "Historie dohledu bude uchovávána po dobu {0} dní.", @@ -691,5 +691,10 @@ "installing": "Instaluji", "uninstall": "Odinstalace", "uninstalling": "Odinstalování", - "Packet Size": "Velikost paketu" + "Packet Size": "Velikost paketu", + "markdownSupported": "Markdown syntaxe podporována", + "Google Analytics ID": "ID Google Analytics", + "Edit Tag": "Upravit štítek", + "Server Address": "Adresa serveru", + "Learn More": "Zjistěte více" } From 727de9838b88f60de5a7c39cb420a2cdc2f55596 Mon Sep 17 00:00:00 2001 From: BlackScreen Date: Mon, 13 Feb 2023 08:59:25 +0000 Subject: [PATCH 228/296] Translated using Weblate (German) Currently translated at 100.0% (693 of 693 strings) Co-authored-by: BlackScreen Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/de/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/de-DE.json | 69 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 59 insertions(+), 10 deletions(-) diff --git a/src/lang/de-DE.json b/src/lang/de-DE.json index 45b5ae56..f1ffd8fd 100644 --- a/src/lang/de-DE.json +++ b/src/lang/de-DE.json @@ -135,7 +135,7 @@ "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", + "twoFAVerifyLabel": "Bitte trage deinen Token ein, um zu verifizieren, dass 2FA funktioniert:", "Verify Token": "Token verifizieren", "Setup 2FA": "2FA einrichten", "Enable 2FA": "2FA aktivieren", @@ -206,7 +206,7 @@ "mattermost": "Mattermost", "Primary Base URL": "Primäre Basis-URL", "Push URL": "Push URL", - "needPushEvery": "Du solltest diese URL alle {0} Sekunden aufrufen", + "needPushEvery": "Du solltest diese URL alle {0} Sekunden aufrufen.", "pushOptionalParams": "Optionale Parameter: {0}", "defaultNotificationName": "Mein {notification} Alarm ({number})", "here": "hier", @@ -215,7 +215,7 @@ "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.", + "wayToGetTelegramChatID": "Du kannst deine 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", @@ -298,9 +298,9 @@ "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", + "Method": "Methode", "Body": "Body", - "Headers": "Headers", + "Headers": "Header", "PushUrl": "Push URL", "HeadersInvalidFormat": "Der Header ist kein gültiges JSON: ", "BodyInvalidFormat": "Der Body ist kein gültiges JSON: ", @@ -315,7 +315,7 @@ "Done": "Fertig", "Info": "Info", "Security": "Sicherheit", - "Steam API Key": "Steam API Key", + "Steam API Key": "Steam API-Schlüssel", "Shrink Database": "Datenbank verkleinern", "Pick a RR-Type...": "Wähle ein RR-Typ aus…", "Pick Accepted Status Codes...": "Wähle akzeptierte Statuscodes aus…", @@ -560,7 +560,7 @@ "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.", + "trustProxyDescription": "Vertraue 'X-Forwarded-*' Headern. Wenn man die richtige Client-IP haben möchte und Uptime Kuma hinter einem Proxy wie Nginx oder Apache läuft, sollte dies aktiviert werden.", "wayToGetLineNotifyToken": "Du kannst hier ein Token erhalten: {0}", "Examples": "Beispiele", "Home Assistant URL": "Home Assistant URL", @@ -593,7 +593,7 @@ "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.", + "backupOutdatedWarning": "Veraltet: Da viele Funktionen hinzugefügt wurden und diese Sicherungsfunktion nicht mehr gepflegt wird, kann keine vollständige Sicherung erstellen oder wiederherstellen werden.", "backupRecommend": "Bitte sichere stattdessen das Volume oder den Datenordner (./data/) direkt.", "Optional": "Optional", "squadcast": "Squadcast", @@ -641,7 +641,56 @@ "Help": "Hilfe", "Game": "Spiel", "Custom": "Benutzerdefiniert", - "Enable DNS Cache": "DNS Cache aktivieren", + "Enable DNS Cache": "DNS-Cache aktivieren", "Enable": "Aktivieren", - "Disable": "Deaktivieren" + "Disable": "Deaktivieren", + "Custom Monitor Type": "Benutzerdefinierter Monitortyp", + "webhookAdditionalHeadersDesc": "Legt zusätzliche Header fest, die mit der Webhook gesendet wurden.", + "dnsCacheDescription": "In einigen IPv6-Umgebungen funktioniert diese Einstellung möglicherweise nicht. Deaktivieren, wenn es Probleme gibt.", + "loadingError": "Die Daten konnten nicht abgerufen werden, bitte später noch einmal versuchen.", + "confirmUninstallPlugin": "Möchten Sie dieses Plugin wirklich deinstallieren?", + "grpcMethodDescription": "Der Name der Methode wird in das \"cammelCase \"-Format konvertiert (z.B. sayHello, check, etc.)", + "Passive Monitor Type": "Passiver Monitortyp", + "Specific Monitor Type": "Spezifischer Monitortyp", + "webhookAdditionalHeadersTitle": "Zusätzliche Header", + "Packet Size": "Paketgröße", + "IconUrl": "Icon-URL", + "wayToGetZohoCliqURL": "Erfahren Sie, wie Sie eine Webhook-URL {0} erstellen.", + "dataRetentionTimeError": "Die Aufbewahrungsfrist muss 0 oder größer sein", + "infiniteRetention": "Für unendliche Speicherung auf 0 setzen.", + "confirmDeleteTagMsg": "Sind Sie sicher, dass Sie diesen Tag löschen möchten? Monitore, die mit diesem Tag verknüpft sind, werden nicht gelöscht.", + "enableGRPCTls": "Erlaube das Senden von gRPC-Anfragen mit TLS-Verbindung", + "ZohoCliq": "ZohoCliq", + "Monitor": "Monitor | Monitore", + "plugin": "Plugin | Plugins", + "install": "Installieren", + "installing": "Installiere", + "uninstall": "Deinstallieren", + "uninstalling": "Deinstallation", + "markdownSupported": "Markdown-Syntax unterstützt", + "wayToGetKookBotToken": "Anwendung erstellen und den Bot-Token {0} abrufen", + "wayToGetKookGuildID": "Schalten Sie den \"Entwicklermodus\" in den Kook-Einstellungen ein und klicken Sie mit der rechten Maustaste auf die Gilde, um ihre ID zu erhalten.", + "Guild ID": "Gilden-ID", + "Free Mobile User Identifier": "Kostenlose mobile Benutzerkennung", + "Free Mobile API Key": "Kostenloser Mobile API-Schlüssel", + "Enable TLS": "Aktiviere TLS", + "Proto Service Name": "Proto Service Name", + "Proto Method": "Proto Methode", + "Proto Content": "Proto Inhalt", + "Economy": "Economy-Modus", + "Lowcost": "Lowcost-Modus", + "high": "High-Modus", + "promosmsAllowLongSMS": "Erlaube lange SMS", + "General Monitor Type": "Allgemeiner Monitortyp", + "smseagle": "SMSEagle", + "smseagleTo": "Telefonnummer(n)", + "smseagleGroup": "Telefonbuch Gruppenname(n)", + "smseagleContact": "Telefonbuch Kontaktname(n)", + "smseagleRecipientType": "Empfängertyp", + "smseagleRecipient": "Empfänger (mehrere müssen mit Komma getrennt werden)", + "smseagleToken": "API-Zugriffstoken", + "smseagleUrl": "Deine SMSEagle-Geräte-URL", + "Kook": "Kook", + "smseagleEncoding": "Als Unicode senden", + "smseaglePriority": "Nachrichtenpriorität (0-9, Standard = 0)" } From 48d89d8e61de1b5cc0e562d658d7b8f7d556adc3 Mon Sep 17 00:00:00 2001 From: Edoardo Ridolfi Date: Mon, 13 Feb 2023 08:59:25 +0000 Subject: [PATCH 229/296] Translated using Weblate (Italian) Currently translated at 60.3% (418 of 693 strings) Translated using Weblate (Italian) Currently translated at 55.4% (384 of 693 strings) Co-authored-by: Edoardo Ridolfi Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/it/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/it-IT.json | 48 ++++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/src/lang/it-IT.json b/src/lang/it-IT.json index ebf0f495..5b7da198 100644 --- a/src/lang/it-IT.json +++ b/src/lang/it-IT.json @@ -1,15 +1,15 @@ { "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.", + "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", + "keywordDescription": "Cerca la parola chiave nella risposta in HTML o JSON. Distingue 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?", @@ -70,7 +70,7 @@ "Port": "Porta", "Heartbeat Interval": "Intervallo di controllo", "Retries": "Tentativi", - "Heartbeat Retry Interval": "Intervallo tra i tentativo di controllo", + "Heartbeat Retry Interval": "Intervallo tra i tentativi di controllo", "Advanced": "Avanzate", "Upside Down Mode": "Modalità invertita", "Max. Redirects": "Reindirizzamenti massimi", @@ -105,7 +105,7 @@ "Please use this option carefully!": "Utilizzare con attenzione!", "Logout": "Esci", "Leave": "Annulla", - "I understand, please disable": "Lo capisco, disabilitare l'autenticazione.", + "I understand, please disable": "Lo capisco, disabilitare l'autenticazione", "Confirm": "Conferma", "Yes": "Sì", "No": "No", @@ -114,7 +114,7 @@ "Remember me": "Ricorda credenziali", "Login": "Accesso", "No Monitors, please": "Nessun monitor presente,", - "add one": "aggiungine uno!", + "add one": "aggiungine uno", "Notification Type": "Servizio di notifica", "Email": "E-mail", "Test": "Fai una prova", @@ -138,8 +138,8 @@ "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!", + "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", @@ -158,7 +158,7 @@ "Token": "Token", "Show URI": "Mostra URI", "Tags": "Etichette", - "Add New below or Select...": "Aggiungi oppure scegli...", + "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", @@ -171,7 +171,7 @@ "Indigo": "Indaco", "Purple": "Viola", "Pink": "Rosa", - "Search...": "Cerca...", + "Search...": "Cerca…", "Avg. Ping": "Tempo medio di risposta al ping", "Avg. Response": "Tempo medio di risposta", "Entry Page": "Pagina Principale", @@ -193,7 +193,7 @@ "Bot Token": "Token del bot", "wayToGetTelegramToken": "Puoi ottenere il token da {0}.", "Chat ID": "ID Chat", - "supportTelegramChatID": "Supporta chat private, gruppi e canali.", + "supportTelegramChatID": "Supporta ID di 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", @@ -216,7 +216,7 @@ "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 ...", + "Hello @everyone is...": "Ciao a {'@'}everyone …", "teams": "Microsoft Teams", "Webhook URL": "URL Webhook", "wayToGetTeamsURL": "È possibile imparare a creare un URL Webhook {0}.", @@ -287,7 +287,7 @@ "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.", + "promosmsTypeFull": "SMS FULL - Premium, È possibile utilizzare il proprio nome 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", @@ -304,7 +304,7 @@ "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!", + "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: ", @@ -315,8 +315,8 @@ "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...", + "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", @@ -340,8 +340,8 @@ "Hide Tags": "Nascondi etichette", "Description": "Descrizione", "No monitors available.": "Nessun monitor disponibile.", - "Add one": "Aggiungine uno!", - "No Monitors": "Nessun monitor presente.", + "Add one": "Aggiungine uno", + "No Monitors": "Nessun monitor presente", "Untitled Group": "Gruppo senza titolo", "Services": "Servizi", "Discard": "Scarta modifiche", @@ -371,5 +371,13 @@ "Game": "Gioco", "Passive Monitor Type": "Monitor Passivo", "Specific Monitor Type": "Monitor Specifico", - "Monitor": "Monitor | Monitor" + "Monitor": "Monitor | Monitor", + "Topic": "Argomento", + "markdownSupported": "Sintassi markdown supportata", + "Proxy Server": "Server Proxy", + "Select status pages...": "Seleziona pagine di stato…", + "Schedule maintenance": "Pianifica manutenzione", + "Start of maintenance": "Inizio della manutenzione", + "All Status Pages": "Tutte le pagine di stato", + "webhookAdditionalHeadersTitle": "Headers aggiuntivi" } From 73f85f4861c2cb92a2be84dc7e76128e0330f242 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Giuffr=C3=A9?= Date: Mon, 13 Feb 2023 08:59:25 +0000 Subject: [PATCH 230/296] Translated using Weblate (Italian) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 60.3% (418 of 693 strings) Translated using Weblate (Italian) Currently translated at 55.4% (384 of 693 strings) Co-authored-by: Francesco Giuffré Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/it/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/it-IT.json | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/src/lang/it-IT.json b/src/lang/it-IT.json index 5b7da198..cc6a397b 100644 --- a/src/lang/it-IT.json +++ b/src/lang/it-IT.json @@ -379,5 +379,42 @@ "Schedule maintenance": "Pianifica manutenzione", "Start of maintenance": "Inizio della manutenzione", "All Status Pages": "Tutte le pagine di stato", - "webhookAdditionalHeadersTitle": "Headers aggiuntivi" + "webhookAdditionalHeadersTitle": "Headers aggiuntivi", + "resendEveryXTimes": "Reinvia ogni {0} volte", + "resendDisabled": "Reinvio disabilitato", + "Resend Notification if Down X times consequently": "Reinvia la notifica se Down X volte di seguito", + "Add New Status Page": "Aggiungi nuova pagina di stato", + "webhookAdditionalHeadersDesc": "Imposta gli header aggiuntivi inviati nel webhook.", + "topicExplanation": "MQTT topic da controllare", + "successMessage": "Messaggio con successo", + "successMessageExplanation": "Messaggio MQTT considerato come successo", + "error": "errore", + "critical": "critico", + "Customize": "Personalizza", + "Custom Footer": "Piè di pagina personalizzato", + "Custom CSS": "CSS personalizzato", + "deleteStatusPageMsg": "Confermi la cancellazione di questa pagina di stato?", + "default": "Predefinito", + "enabled": "Abilitato", + "setAsDefault": "Imposta come predefinito", + "deleteProxyMsg": "Confermi la cancellazione di questo proxy per tutti i monitoraggi?", + "proxyDescription": "I proxy devono essere assegnati ad un monitoraggio per essere operativi.", + "setAsDefaultProxyDescription": "Questo proxy sarà abilitato come predefinito per tutti i nuovi monitoraggi. E' possibile disabilitare il proxy in modo indipendente per ogni singolo monitoraggio.", + "Certificate Chain": "Catena di certificati", + "Invalid": "Non valido", + "User": "Utente", + "Installed": "Installato", + "Not installed": "Non installato", + "Running": "In esecuzione", + "Not running": "Fermo", + "Remove Token": "Rimuovere token", + "Start": "Avvio", + "Next": "Prossimo", + "No Proxy": "Nessun proxy", + "Authentication": "Autenticazione", + "New Status Page": "Nuova pagina di stato", + "Page Not Found": "Pagina non trovata", + "Affected Monitors": "Monitoraggi interessati", + "Pick Affected Monitors...": "Seleziona i monitoraggi interessati…", + "Valid": "Valido" } From 0b9c5c70b2dd8b0660a2c725c5fff6acb1257458 Mon Sep 17 00:00:00 2001 From: Nikita Ganzikov Date: Mon, 13 Feb 2023 08:59:25 +0000 Subject: [PATCH 231/296] Translated using Weblate (Russian) Currently translated at 84.7% (587 of 693 strings) Co-authored-by: Nikita Ganzikov Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/ru/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/ru-RU.json | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/lang/ru-RU.json b/src/lang/ru-RU.json index 8395eedb..5caf74d6 100644 --- a/src/lang/ru-RU.json +++ b/src/lang/ru-RU.json @@ -208,7 +208,7 @@ "mattermost": "Mattermost", "Primary Base URL": "Основной URL", "Push URL": "URL пуша", - "needPushEvery": "К этому URL необходимо обращаться каждые {0} секунд", + "needPushEvery": "К этому URL необходимо обращаться каждые {0} секунд.", "pushOptionalParams": "Опциональные параметры: {0}", "defaultNotificationName": "Моё уведомление {notification} ({number})", "here": "здесь", @@ -596,5 +596,13 @@ "resendEveryXTimes": "Повторная отправка каждые {0} раз", "resendDisabled": "Повторная отправка отключена", "deleteMaintenanceMsg": "Вы действительно хотите удалить это обслуживание?", - "critical": "критично" + "critical": "критично", + "Custom Monitor Type": "Собственный тип монитора", + "markdownSupported": "Поддерживает синтаксис Markdown", + "Passive Monitor Type": "Пассивный тип монитора", + "Specific Monitor Type": "Специфичный тип монитора", + "Help": "Помощь", + "Game": "Игра", + "Resend Notification if Down X times consequently": "Повторно отправить уведомление, если не работает X раз подряд", + "General Monitor Type": "Основной тип монитора" } From 6bda8d0b5518e41d9696dd3990db2935aeba223f Mon Sep 17 00:00:00 2001 From: UfukArt Date: Mon, 13 Feb 2023 08:59:25 +0000 Subject: [PATCH 232/296] Translated using Weblate (Turkish) Currently translated at 100.0% (693 of 693 strings) Co-authored-by: UfukArt Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/tr/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/tr-TR.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lang/tr-TR.json b/src/lang/tr-TR.json index b9bc8adc..e7927e4b 100644 --- a/src/lang/tr-TR.json +++ b/src/lang/tr-TR.json @@ -448,7 +448,7 @@ "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", + "HTTP Headers": "HTTP Başlıkları", "Trust Proxy": "Trust Proxy", "Other Software": "Diğer Yazılımlar", "For example: nginx, Apache and Traefik.": "Örneğin: nginx, Apache ve Traefik.", @@ -691,5 +691,6 @@ "promosms": "PromoSMS", "lunasea": "LunaSea", "line": "Line Messenger", - "mattermost": "Mattermost" + "mattermost": "Mattermost", + "markdownSupported": "Markdown yazım formatı desteklenir" } From 34b1169ad694096790530d3c93f266145cb602ac Mon Sep 17 00:00:00 2001 From: 401Unauthorized Date: Mon, 13 Feb 2023 08:59:25 +0000 Subject: [PATCH 233/296] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (697 of 697 strings) Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (694 of 694 strings) Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (693 of 693 strings) Co-authored-by: 401Unauthorized Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/zh_Hans/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/zh-CN.json | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/lang/zh-CN.json b/src/lang/zh-CN.json index a3393bd1..043a2523 100644 --- a/src/lang/zh-CN.json +++ b/src/lang/zh-CN.json @@ -3,7 +3,7 @@ "checkEverySecond": "检测频率 {0} 秒", "retryCheckEverySecond": "重试间隔 {0} 秒", "resendEveryXTimes": "每 {0} 次失败则重复发送一次", - "resendDisabled": "为 0 时禁用重复发送", + "resendDisabled": "禁用重复发送", "retriesDescription": "服务被标记为故障并发送通知之前的最大重试次数", "ignoreTLSError": "忽略 HTTPS 站点的 TLS/SSL 错误", "upsideDownModeDescription": "反转状态监控,如果服务可访问,则认为是故障。", @@ -60,7 +60,7 @@ "Quick Stats": "状态速览", "Up": "正常", "Down": "故障", - "Pending": "正在检测", + "Pending": "检测中", "Unknown": "未知", "Pause": "暂停", "Name": "名称", @@ -85,13 +85,13 @@ "Friendly Name": "显示名称", "URL": "URL", "Hostname": "主机名", - "Port": "端口号", + "Port": "端口", "Heartbeat Interval": "心跳间隔", "Retries": "重试次数", "Heartbeat Retry Interval": "心跳重试间隔", "Resend Notification if Down X times consequently": "连续失败时重复发送通知的间隔次数", "Advanced": "高级", - "Upside Down Mode": "反转监控", + "Upside Down Mode": "反转模式", "Max. Redirects": "最大重定向次数", "Accepted Status Codes": "有效状态码", "Push URL": "推送 URL", @@ -679,7 +679,7 @@ "high": "高价", "General Monitor Type": "常规监控类型", "Passive Monitor Type": "被动监控类型", - "Specific Monitor Type": "针对监控类型", + "Specific Monitor Type": "特殊监控类型", "dataRetentionTimeError": "保留期必须为0或更大", "Monitor": "监控项 | 监控项", "Custom": "自定义", @@ -696,5 +696,9 @@ "uninstall": "卸载", "uninstalling": "正在卸载", "confirmUninstallPlugin": "您确定要卸载此插件吗?", - "Custom Monitor Type": "自定义监控类型" + "Custom Monitor Type": "自定义监控类型", + "markdownSupported": "支持 Markdown 语法", + "Google Analytics ID": "Google Analytics(分析)ID", + "Learn More": "了解更多", + "Edit Tag": "编辑标签" } From 050c388bc3e2a8e21a570770bd3e941be133fb40 Mon Sep 17 00:00:00 2001 From: Savvas Mantzouranidis Date: Mon, 13 Feb 2023 08:59:26 +0000 Subject: [PATCH 234/296] Translated using Weblate (Greek) Currently translated at 99.8% (696 of 697 strings) Translated using Weblate (Greek) Currently translated at 99.4% (689 of 693 strings) Co-authored-by: Savvas Mantzouranidis Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/el/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/el-GR.json | 160 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 136 insertions(+), 24 deletions(-) diff --git a/src/lang/el-GR.json b/src/lang/el-GR.json index c77d6158..49a3da60 100644 --- a/src/lang/el-GR.json +++ b/src/lang/el-GR.json @@ -25,8 +25,8 @@ "confirmClearStatisticsMsg": "Είστε βέβαιοι ότι θέλετε να διαγράψετε ΟΛΑ τα στατιστικά στοιχεία;?", "importHandleDescription": "Επιλέξτε «Παράλειψη υπάρχοντος» εάν θέλετε να παραλείψετε κάθε παρακολούθηση ή ειδοποίηση με το ίδιο όνομα. Το 'Overwrite' θα διαγράψει κάθε υπάρχουσα παρακολούθηση και ειδοποίηση.", "confirmImportMsg": "Είστε βέβαιοι ότι θέλετε να εισαγάγετε το αντίγραφο ασφαλείας; Επαληθεύστε ότι έχετε επιλέξει τη σωστή επιλογή.", - "twoFAVerifyLabel": "Εισαγάγετε το 2FA κωδικό για να επαληθεύσετε: ", - "tokenValidSettingsMsg": "Ο κωδικός 2FA είναι έγκυρο! Τώρα μπορείτε να αποθηκεύσετε τις ρυθμίσεις 2FA", + "twoFAVerifyLabel": "Εισαγάγετε το 2FA κωδικό για να επαληθεύσετε:", + "tokenValidSettingsMsg": "Ο κωδικός 2FA είναι έγκυρος! Τώρα μπορείτε να αποθηκεύσετε τις ρυθμίσεις 2FA.", "confirmEnableTwoFAMsg": "Είστε βέβαιοι ότι θέλετε να ενεργοποιήσετε το 2FA;", "confirmDisableTwoFAMsg": "Είστε βέβαιοι ότι θέλετε να απενεργοποιήσετε το 2FA;", "Settings": "Ρυθμίσεις", @@ -56,9 +56,9 @@ "Resume": "Συνέχιση", "Edit": "Επεξεργασία", "Delete": "Διαγράφη", - "Current": "Current", + "Current": "Τρέχον", "Uptime": "Χρόνος λειτουργίας", - "Cert Exp.": "Cert Exp.", + "Cert Exp.": "Λήξη Πιστοπ.", "day": "ημέρα | ημέρες", "-day": "-ημέρα", "hour": "ώρα", @@ -162,11 +162,11 @@ "Token": "Token", "Show URI": "Εμφάνιση URI", "Tags": "Ετικέτες", - "Add New below or Select...": "Προσθήκη νέου παρακάτω ή Επιλέξτε...", + "Add New below or Select...": "Προσθήκη νέου παρακάτω ή Επιλέξτε…", "Tag with this name already exist.": "Υπάρχει ήδη η ετικέτα με αυτό το όνομα.", "Tag with this value already exist.": "Υπάρχει ήδη ετικέτα με αυτό το value.", "color": "χρώμα", - "value (optional)": "value (optional)", + "value (optional)": "τιμή (προαιρετικό)", "Gray": "Γκρί", "Red": "Κόκκινο", "Orange": "Πορτοκάλι", @@ -175,7 +175,7 @@ "Indigo": "Indigo", "Purple": "Μωβ", "Pink": "Ροζ", - "Search...": "Αναζήτηση...", + "Search...": "Αναζήτηση…", "Avg. Ping": "Μέσo.Ping", "Avg. Response": "Μέσo. Aπάντηση", "Entry Page": "Σελίδα εισαγωγής", @@ -218,10 +218,10 @@ "smtpBCC": "BCC", "discord": "Discord", "Discord Webhook URL": "Discord Webhook URL", - "wayToGetDiscordURL": "Μπορείτε να το αποκτήσετε μεταβαίνοντας στις Ρυθμίσεις διακομιστή -> Ενσωματώσεις -> Δημιουργία Webhook", + "wayToGetDiscordURL": "Μπορείτε να το αποκτήσετε μεταβαίνοντας στις Ρυθμίσεις διακομιστή -> Ενσωματώσεις -> Προβολή των Webhooks -> Νέο Webhook", "Bot Display Name": "Εμφανιζόμενο όνομα bot", "Prefix Custom Message": "Προσαρμοσμένο μήνυμα", - "Hello @everyone is...": "Γεια {'@'}everyone ειναι...", + "Hello @everyone is...": "Γεια {'@'}everyone είναι…", "teams": "Microsoft Teams", "Webhook URL": "Webhook URL", "wayToGetTeamsURL": "Μπορείτε να μάθετε πώς να δημιουργείτε μια διεύθυνση URL webhook {0}.", @@ -271,7 +271,7 @@ "apiCredentials": "API credentials", "octopushLegacyHint": "Χρησιμοποιείτε την παλαιού τύπου έκδοση του Octopush (2011-2020) ή τη νέα έκδοση;", "Check octopush prices": "Ελέγξτε τις τιμές OctoPush {0}.", - "octopushPhoneNumber": "Αριθμός τηλεφώνου (διεθνής μορφή, π.χ.: +30694345678)", + "octopushPhoneNumber": "Αριθμός τηλεφώνου (διεθνής μορφή, π.χ.: +30694345678) ", "octopushSMSSender": "Όνομα αποστολέα SMS: 3-11 αλφαριθμητικοί χαρακτήρες και διάστημα (a-zA-Z0-9)", "LunaSea Device ID": "LunaSea Device ID", "Apprise URL": "Apprise URL", @@ -306,10 +306,10 @@ "matrixDesc2": "Συνιστάται ανεπιφύλακτα να δημιουργήσετε έναν νέο χρήστη και να μην χρησιμοποιήσετε το διακριτικό πρόσβασης του χρήστη Matrix, καθώς θα επιτρέψει την πλήρη πρόσβαση στον λογαριασμό σας και σε όλα τα δωμάτια στα οποία συμμετέχετε. Αντίθετα, δημιουργήστε έναν νέο χρήστη και προσκαλέστε τον μόνο στο δωμάτιο στο οποίο θέλετε να λαμβάνετε την ειδοποίηση. Μπορείτε να λάβετε το access token εκτελώντας {0}", "Method": "Μέθοδος", "Body": "Σώμα", - "Headers": "Headers", + "Headers": "Κεφαλίδες", "PushUrl": "Push URL", - "HeadersInvalidFormat": "The request headers are not valid JSON: ", - "BodyInvalidFormat": "The request body is not valid JSON: ", + "HeadersInvalidFormat": "Οι κεφαλίδες του αιτήματος δεν αποτελούν έγκυρο JSON: ", + "BodyInvalidFormat": "Το περιεχόμενο/σώμα του αιτήματος δεν αποτελεί έγκυρο JSON: ", "Monitor History": "Ιστορικο Παρακολούθησης", "clearDataOlderThan": "Διατηρήστε τα δεδομένα ιστορικού παρακολούθησης για {0} ημέρες.", "PasswordsDoNotMatch": "Οι κωδικοί πρόσβασης δεν ταιριάζουν.", @@ -327,8 +327,8 @@ "Security": "Ασφάλεια", "Steam API Key": "Steam API Key", "Shrink Database": "Συρρίκνωση βάσης δεδομένων", - "Pick a RR-Type...": "Επιλέξτε έναν τύπο RR...", - "Pick Accepted Status Codes...": "Επιλέξτε Αποδεκτούς κωδικούς κατάστασης...", + "Pick a RR-Type...": "Επιλέξτε έναν τύπο RR…", + "Pick Accepted Status Codes...": "Επιλέξτε Αποδεκτούς κωδικούς κατάστασης…", "Default": "Προκαθορισμένο", "HTTP Options": "Επιλογές HTTP", "Create Incident": "Δημιουργία περιστατικού", @@ -340,9 +340,9 @@ "danger": "κίνδυνος", "error": "σφάλμα", "critical": "κριτικό", - "primary": "primary", - "light": "light", - "dark": "dark", + "primary": "κύριο", + "light": "φωτεινό", + "dark": "σκοτεινό", "Post": "Δημοσίευση", "Please input title and content": "Παρακαλούμε εισαγάγετε τίτλο και περιεχόμενο", "Created": "Δημιουργήθηκε", @@ -403,7 +403,7 @@ "proxyDescription": "Πρέπει να εκχωρηθούν proxies σε μια οθπαρακολουθή για να λειτουργήσουν..", "enableProxyDescription": "Το proxy δεν θα επηρεάσει τα αιτήματα της παρακολουθήσεις μέχρι να ενεργοποιηθεί. Μπορείτε να ελέγξετε την προσωρινή απενεργοποίηση του proxy από όλες τις παρακολουθήσεις βάσει κατάστασης ενεργοποίησης.", "setAsDefaultProxyDescription": "Αυτός το proxy θα είναι ενεργοποιημένο από προεπιλογή για νέες παρακολουθήσεις. Μπορείτε ακόμα να απενεργοποιήσετε το proxy ξεχωριστά για κάθε οθόνη.", - "Certificate Chain": "Certificate Chain", + "Certificate Chain": "Αλυσίδα Πιστοποιητικών", "Valid": "Εγκυρο", "Invalid": "Μη έγκυρο", "AccessKeyId": "AccessKey ID", @@ -460,7 +460,7 @@ "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", + "HTTP Headers": "Κεφαλίδες HTTP", "Trust Proxy": "Εμπιστοσύνη του Proxy", "Other Software": "Other Software", "For example: nginx, Apache and Traefik.": "Για παράδειγμα: nginx, Apache και Traefik.", @@ -562,11 +562,11 @@ "Domain": "Domain", "Workstation": "Workstation", "disableCloudflaredNoAuthMsg": "Βρίσκεστε σε λειτουργία No Auth, δεν απαιτείται κωδικός πρόσβασης.", - "trustProxyDescription": "Εμπιστευτείτε τις κεφαλίδες 'X-Forwarded-*'. Εάν θέλετε να λάβετε τη σωστή IP πελάτη και το Uptime Kuma σας βρίσκεται πίσω το Nginx ή το Apache, θα πρέπει να το ενεργοποιήσετε.", + "trustProxyDescription": "Εμπιστευτείτε τις κεφαλίδες 'X-Forwarded-*'. Εάν θέλετε να λάβετε τη σωστή IP πελάτη και το Uptime Kuma σας βρίσκεται πίσω κάποιος proxy όπως το 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": "Μακράς-Διάρκειας Κλειδί Τόκεν", "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": "προεπιλογή: ειδοποίηση όλων των συσκευών", @@ -582,6 +582,118 @@ "goAlertInfo": "Το GoAlert είναι μια εφαρμογή ανοιχτού κώδικα για προγραμματισμό κλήσεων, αυτοματοποιημένες κλιμακώσεις και ειδοποιήσεις (όπως SMS ή φωνητικές κλήσεις). Αλληλεπιδράστε αυτόματα με το σωστό άτομο, με τον σωστό τρόπο και τη σωστή στιγμή! {0}", "goAlertIntegrationKeyInfo": "Λάβετε το generic API integration key για την υπηρεσία σε αυτήν τη μορφή \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" συνήθως την τιμή της παραμέτρου διακριτικού της αντιγραμμένης διεύθυνσης URL.", "goAlert": "GoAlert", - "backupOutdatedWarning": "Καταργήθηκε: Επειδή προστέθηκαν πολλές δυνατότητες και αυτή η δυνατότητα δημιουργίας αντιγράφων ασφαλείας δεν διατηρείται πολη, δεν μπορεί να δημιουργήσει ή να επαναφέρει ένα πλήρες αντίγραφο ασφαλείας.", - "backupRecommend": "Παρακαλούμε δημιουργήστε αντίγραφα ασφαλείας του volume ή του φακέλου δεδομένων (./data/) απευθείας." + "backupOutdatedWarning": "Καταργήθηκε: Επειδή προστέθηκαν πολλές δυνατότητες και αυτή η δυνατότητα δημιουργίας αντιγράφων ασφαλείας δεν διατηρείται, δεν μπορεί να δημιουργήσει ή να επαναφέρει ένα πλήρες αντίγραφο ασφαλείας.", + "backupRecommend": "Παρακαλούμε δημιουργήστε αντίγραφα ασφαλείας του volume ή του φακέλου δεδομένων (./data/) απευθείας.", + "Maintenance": "Συντήρηση", + "General Monitor Type": "Επόπτης Γενικού Τύπου", + "maintenanceStatus-under-maintenance": "Υπό Συντήρηση", + "dnsCacheDescription": "Μπορεί να μη λειτουργεί σε κάποια IPv6 περιβάλλοντα, απενεργοποιήστε αν συναντήσετε προβλήματα.", + "uninstalling": "Γίνεται απεγκατάσταση", + "confirmUninstallPlugin": "Θέλετε σίγουρα να απεγκαταστήσετε αυτό το πρόσθετο;", + "smseagle": "SMSEagle", + "smseagleRecipientType": "Τύπος παραλήπτη", + "smseagleUrl": "Το URL της SMSEagle συσκευής σας", + "Start of maintenance": "Έναρξη συντήρησης", + "All Status Pages": "Όλες οι Σελίδες Κατάστασης", + "Select status pages...": "Επιλέξτε σελίδες κατάστασης…", + "Optional": "Προαιρετικό", + "weekdayShortMon": "Δευ", + "weekdayShortTue": "Τρι", + "weekdayShortWed": "Τετ", + "weekdayShortThu": "Πεμ", + "weekdayShortFri": "Παρ", + "weekdayShortSat": "Σαβ", + "Help": "Βοήθεια", + "Game": "Παιχνίδι", + "Specific Monitor Type": "Επόπτης Συγκεκριμένου Τύπου", + "Passive Monitor Type": "Επόπτης Παθητικού Τύπου", + "Monitor": "Επόπτης | Επόπτες", + "Schedule maintenance": "Προγραμματισμός συντήρησης", + "Affected Monitors": "Επηρεαζόμενοι Επόπτες", + "Pick Affected Monitors...": "Διαλέξτε Επηρεαζόμενους Επόπτες…", + "webhookAdditionalHeadersTitle": "Επιπρόσθετες Κεφαλίδες", + "webhookAdditionalHeadersDesc": "Ορίζει επιπρόσθετες κεφαλίδες που θα σταλθούν με το webhook.", + "weekdayShortSun": "Κυρ", + "dayOfWeek": "Ημέρα της Εβδομάδας", + "dayOfMonth": "Ημέρα του Μήνα", + "lastDay1": "Τελευταία Μέρα του Μήνα", + "lastDay2": "2η Τελευταία Μέρα του Μήνα", + "lastDay3": "3η Τελευταία Μέρα του Μήνα", + "lastDay4": "4η Τελευταία Μέρα του Μήνα", + "lastDay": "Τελευταία Μέρα", + "No Maintenance": "Όχι Συντήρηση", + "pauseMaintenanceMsg": "Είστε σίγουροι για την παύση;", + "maintenanceStatus-inactive": "Ανενεργό", + "maintenanceStatus-scheduled": "Προγραμματισμένο", + "maintenanceStatus-ended": "Ολοκληρωμένο", + "maintenanceStatus-unknown": "Άγνωστο", + "Display Timezone": "Προβολή Ζώνης Ώρας", + "Server Timezone": "Ζώνη Ώρας του Server", + "statusPageMaintenanceEndDate": "Λήξη", + "Custom": "Προσαρμοσμένο", + "Economy": "Οικονομία", + "loadingError": "Αδύνατη συλλογή δεδομένων, προσπαθήστε ξανά αργότερα.", + "SendKey": "SendKey", + "SMSManager API Docs": "API βιβλιογραφία του SMSManager ", + "Kook": "Kook", + "statusMaintenance": "Συντήρηση", + "markdownSupported": "Υποστήριξη markdown συντακτικού", + "Packet Size": "Μέγεθος Πακέτου", + "or": "ή", + "recurringInterval": "Χρονικό Διάστημα", + "Recurring": "Επαναλαμβανόμενο", + "strategyManual": "Ενεργό/Ανενεργό Χειροκίνητα", + "warningTimezone": "Χρησιμοποιεί την ζώνη ώρας του server", + "squadcast": "Squadcast", + "IconUrl": "URL εικονιδίου", + "Enable DNS Cache": "Ενεργοποίηση DNS Cache", + "Enable": "Ενεργοποίηση", + "Disable": "Απενεργοποίηση", + "Single Maintenance Window": "Μονό Παράθυρο Συντήρησης", + "Maintenance Time Window of a Day": "Ημερίσιο πρόγραμμα Συντήρησης", + "Effective Date Range": "Ημερομηνιακό Διάστημα Εφαρμογής", + "Schedule Maintenance": "Προγραμματισμός Συντήρησης", + "Date and Time": "Ημερομηνία και Ώρα", + "DateTime Range": "Ημερομηνιακό Πλαίσιο", + "plugin": "Πρόσθετο | Πρόσθετα", + "install": "Εγκατάσταση", + "installing": "Γίνεται εγκατάσταση", + "uninstall": "Απεγκατάσταση", + "dataRetentionTimeError": "Η περίοδος διατήρησης πρέπει να είναι 0 ή μεγαλύτερο", + "infiniteRetention": "Ορίστε 0 για μόνιμη διατήρηση.", + "confirmDeleteTagMsg": "Θέλετε σίγουρα να διαγράψετε αυτήν την ετικέτα; Οι επόπτες που σχετίζονται με αυτήν την ετικέτα δεν θα διαγραφούν.", + "enableGRPCTls": "Επιτρέψτε την αποστολή gRPC αιτημάτων μέσω TLS συνδέσεων", + "grpcMethodDescription": "Το όνομα της μεθόδου μετατρέπεται σε cammelCase μορφή όπως π.χ. sayHello, check, κλπ.", + "deleteMaintenanceMsg": "Θέλετε σίγουρα να διαγράψετε αυτή την συντήρηση;", + "recurringIntervalMessage": "Εκτέλεση μια φορά την ημέρα | Εκτέλεση μία φορά ανά {0} ημέρες", + "affectedMonitorsDescription": "Επιλέξτε τους επόπτες που επηρεάζονται από την τωρινή συντήρηση", + "affectedStatusPages": "Προβολή αυτού του μηνύματος συντήρησης σε επιλεγμένες σελίδες κατάστασης", + "atLeastOneMonitor": "Επιλέξτε τουλάχιστον έναν επηρεασμένο επόπτη", + "wayToGetKookBotToken": "Δημιουργήστε εφαρμογή και πάρτε το bot token στο {0}", + "wayToGetKookGuildID": "Ενεργοποιήστε την 'Λειτουργία Προγραμματιστή' στις ρυθμίσεις Kook, και κάντε δεξί κλικ στο guild για να πάρετε το ID του", + "Guild ID": "Guild ID", + "Strategy": "Στρατηγική", + "Enable TLS": "Ενεργοποίηση TLS", + "Proto Service Name": "Όνομα Υπηρεσίας Proto", + "Proto Method": "Μέθοδος Proto", + "Proto Content": "Περιεχόμενο Proto", + "Lowcost": "Χαμηλό κόστος", + "high": "υψηλό", + "Gateway Type": "Τύπος Πύλης", + "SMSManager": "SMSManager", + "You can divide numbers with": "Μπορείτε να διαιρέσετε αριθμούς με", + "promosmsAllowLongSMS": "Επέτρεψε SMS μεγάλου μεγέθους", + "smseagleTo": "Αριθμός(οί) τηλεφώνου", + "smseagleGroup": "Όνομα/Ονόματα γκρουπ καταλόγων", + "smseagleContact": "Όνομα/Ονόματα επαφών καταλόγου", + "smseagleRecipient": "Παραλήπτης(ες) (πολλαπλοί πρέπει να διαχωρίζονται με κόμμα)", + "smseagleToken": "API Κλειδί τόκεν", + "smseagleEncoding": "Αποστολή ως Unicode", + "Custom Monitor Type": "Προσαρμοσμένος Τύπος Επόπτη", + "Edit Tag": "Επεξεργασία Ετικέτας", + "Server Address": "Διεύθυνση Διακομιστή", + "Learn More": "Μάθετε περισσότερα", + "Free Mobile User Identifier": "Free Mobile User Identifier", + "Free Mobile API Key": "Free Mobile API Key", + "smseaglePriority": "Προτεραιότητα μηνύματος (0-9, προεπιλογή = 0)" } From 25d50e7660952fa338de08e1b6b1920170b4468b Mon Sep 17 00:00:00 2001 From: Cyril59310 Date: Mon, 13 Feb 2023 08:59:26 +0000 Subject: [PATCH 235/296] Translated using Weblate (French) Currently translated at 100.0% (693 of 693 strings) Co-authored-by: Cyril59310 Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/fr/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/fr-FR.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lang/fr-FR.json b/src/lang/fr-FR.json index ae39af3c..4bf755d3 100644 --- a/src/lang/fr-FR.json +++ b/src/lang/fr-FR.json @@ -691,5 +691,6 @@ "uninstall": "Désinstaller", "uninstalling": "Désinstallation", "confirmUninstallPlugin": "Voulez-vous vraiment désinstaller ce plugin ?", - "Custom Monitor Type": "Type de sonde personnalisé" + "Custom Monitor Type": "Type de sonde personnalisé", + "markdownSupported": "Syntaxe Markdown prise en charge" } From c70ccd1183e73641626e8a5f13e081d0ff43bfff Mon Sep 17 00:00:00 2001 From: Andriy Skoropad Date: Mon, 13 Feb 2023 08:59:26 +0000 Subject: [PATCH 236/296] Translated using Weblate (Ukrainian) Currently translated at 78.0% (541 of 693 strings) Co-authored-by: Andriy Skoropad Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/uk/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/uk-UA.json | 43 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/src/lang/uk-UA.json b/src/lang/uk-UA.json index fcd678a3..ad8e6936 100644 --- a/src/lang/uk-UA.json +++ b/src/lang/uk-UA.json @@ -45,9 +45,9 @@ "Uptime": "Аптайм", "Cert Exp.": "Сертифікат спливає", "day": "день | днів", - "-day": " днів", + "-day": "днів", "hour": "година", - "-hour": " години", + "-hour": "години", "Response": "Відповідь", "Ping": "Пінг", "Monitor Type": "Тип монітора", @@ -74,7 +74,7 @@ "Bottom": "Знизу", "None": "Відсутня", "Timezone": "Часовий пояс", - "Search Engine Visibility": "Індексація пошуковими системами:", + "Search Engine Visibility": "Видимість для пошукових систем", "Allow indexing": "Дозволити індексування", "Discourage search engines from indexing site": "Заборонити індексування", "Change Password": "Змінити пароль", @@ -86,7 +86,7 @@ "Enable Auth": "Увімкнути авторизацію", "disableauth.message1": "Ви впевнені, що бажаєте вимкнути авторизацію?", "disableauth.message2": "Це підходить для тих, у кого встановлена інша авторизація пееред відкриттям Uptime Kuma, наприклад Cloudflare Access.", - "Please use this option carefully!": "Будь ласка, використовуйте з обережністю.", + "Please use this option carefully!": "Будь ласка, використовуйте з обережністю!", "Logout": "Вийти", "Leave": "Відміна", "I understand, please disable": "Я розумію, все одно відключити", @@ -208,8 +208,8 @@ "mattermost": "Mattermost", "Primary Base URL": "Основна URL", "Push URL": "URL пуша", - "needPushEvery": "До цієї URL необхідно звертатися кожні {0} секунд", - "pushOptionalParams": "Опціональні параметри: {0}", + "needPushEvery": "Цю URL необхідно викликати кожні {0} секунд", + "pushOptionalParams": "Додаткові параметри: {0}", "defaultNotificationName": "Моє сповіщення {notification} ({number})", "here": "тут", "Required": "Потрібно", @@ -526,5 +526,34 @@ "ntfy Topic": "ntfy Тема", "Domain": "Домен", "Workstation": "Робоча станція", - "disableCloudflaredNoAuthMsg": "Ви перебуваєте в режимі без авторизації, пароль не потрібен." + "disableCloudflaredNoAuthMsg": "Ви перебуваєте в режимі без авторизації, пароль не потрібен.", + "Schedule maintenance": "Графік обслуговування", + "Affected Monitors": "Задіяні монітори", + "HomeAssistant": "Home Assistant", + "smseaglePriority": "Пріоритет повідомлення (0-9, за замовчуванням = 0)", + "smseagleRecipient": "Отримувач(і) (декілька отримувачів повинні бути відокремлені комами)", + "markdownSupported": "Підтримується синтаксис розмітки", + "Resend Notification if Down X times consequently": "Повторно надсилати сповіщення, якщо падіння відбулося X разів підряд", + "resendEveryXTimes": "Повторно відправляти кожні {0} разів", + "resendDisabled": "Повторне надсилання вимкнено", + "Start of maintenance": "Початок обслуговування", + "Select status pages...": "Вибери сторінку стану…", + "All Status Pages": "Всі сторінки станів", + "Passive Monitor Type": "Пасивний моніторинг", + "Specific Monitor Type": "Специфічний моніторинг", + "Monitor": "Монітор | Монітори", + "smseagle": "SMSEagle", + "smseagleEncoding": "Надсилати в Unicode", + "smseagleUrl": "URL-адреса пристрою SMSEagle", + "smseagleToken": "Токен доступу API", + "smseagleRecipientType": "Тип одержувача", + "smseagleContact": "Телефонний контакт(и)", + "smseagleGroup": "Телефонна група(и)", + "smseagleTo": "Телефонний номер(и)", + "Help": "Допомога", + "Game": "Гра", + "Pick Affected Monitors...": "Виберіть задіяні монітори…", + "statusMaintenance": "Обслуговування", + "Maintenance": "Обслуговування", + "General Monitor Type": "Основний моніторинг" } From b9dd04ab05e2e3528c40256dae89a942cd7274be Mon Sep 17 00:00:00 2001 From: Dim Date: Mon, 13 Feb 2023 08:59:26 +0000 Subject: [PATCH 237/296] Translated using Weblate (French) Currently translated at 100.0% (697 of 697 strings) Translated using Weblate (French) Currently translated at 100.0% (693 of 693 strings) Co-authored-by: Dim Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/fr/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/fr-FR.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/lang/fr-FR.json b/src/lang/fr-FR.json index 4bf755d3..f89cd0a4 100644 --- a/src/lang/fr-FR.json +++ b/src/lang/fr-FR.json @@ -4,7 +4,7 @@ "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.", + "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.", @@ -23,7 +23,7 @@ "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", + "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", @@ -40,7 +40,7 @@ "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.", + "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) ?", @@ -264,7 +264,7 @@ "rocket.chat": "Rocket.chat", "pushover": "Pushover", "pushy": "Pushy", - "PushByTechulus": "Push by Techulus", + "PushByTechulus": "Push par Techulus", "octopush": "Octopush", "promosms": "PromoSMS", "clicksendsms": "ClickSend SMS", @@ -292,7 +292,7 @@ "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)", + "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", @@ -442,7 +442,7 @@ "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 : ", + "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", @@ -501,7 +501,7 @@ "Days Remaining:": "Jours restants : ", "Issuer:": "Émetteur : ", "Fingerprint:": "Empreinte : ", - "No status pages": "Aucune page de statut.", + "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", @@ -600,7 +600,7 @@ "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", + "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 : ", @@ -618,7 +618,7 @@ "Optional": "Optionnel", "squadcast": "Squadcast", "SendKey": "SendKey", - "SMSManager API Docs": "Documentations de l'API SMSManager ", + "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", @@ -692,5 +692,5 @@ "uninstalling": "Désinstallation", "confirmUninstallPlugin": "Voulez-vous vraiment désinstaller ce plugin ?", "Custom Monitor Type": "Type de sonde personnalisé", - "markdownSupported": "Syntaxe Markdown prise en charge" + "markdownSupported": "Syntaxe Markdown supportée" } From cb563950e5189b73c76e622598c50b19a246f7fa Mon Sep 17 00:00:00 2001 From: David F Date: Mon, 13 Feb 2023 08:59:26 +0000 Subject: [PATCH 238/296] Translated using Weblate (Hebrew (Israel)) Currently translated at 99.8% (692 of 693 strings) Co-authored-by: David F Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/he_IL/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/he-IL.json | 44 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/src/lang/he-IL.json b/src/lang/he-IL.json index c8219ff5..37c1a10e 100644 --- a/src/lang/he-IL.json +++ b/src/lang/he-IL.json @@ -15,10 +15,10 @@ "statusMaintenance": "תחזוקה", "Schedule maintenance": "תחזוקה מתוכננת", "Affected Monitors": "מוניטורים מושפעים", - "Pick Affected Monitors...": "בחר המוניטרים מושפעים...", + "Pick Affected Monitors...": "בחר המוניטריים המושפעים…", "Start of maintenance": "תחילת תחזוקה", "All Status Pages": "כל דפי הסטטוס", - "Select status pages...": "בחר דפי סטטוס...", + "Select status pages...": "בחר דפי סטטוס…", "recurringIntervalMessage": "רוץ פעם ביום | הפעל אחת ל-{0} ימים", "affectedMonitorsDescription": "בחר מוניטורים שמושפעים מהתחזוקה הנוכחית", "affectedStatusPages": "הצג הודעת תחזוקה זו בדפי סטטוס שנבחרו", @@ -177,7 +177,7 @@ "Token": "אסימון", "Show URI": "הצג URI", "Tags": "תגים", - "Add New below or Select...": "הוסף חדש למטה או בחר...", + "Add New below or Select...": "הוסף חדש למטה או בחר…", "Tag with this name already exist.": "תג בשם זה כבר קיים.", "Tag with this value already exist.": "תג עם ערך זה כבר קיים.", "color": "צבע", @@ -190,7 +190,7 @@ "Indigo": "כחול כהה", "Purple": "סגול", "Pink": "כתום", - "Search...": "לחפש...", + "Search...": "לחפש…", "Avg. Ping": "פינג ממוצע", "Avg. Response": "ממוצע תגובה", "Entry Page": "דף כניסה", @@ -237,7 +237,7 @@ "wayToGetDiscordURL": "אתה יכול לקבל זאת על ידי מעבר להגדרות שרת -> אינטגרציות -> צור Webhook", "Bot Display Name": "שם תצוגה של בוט", "Prefix Custom Message": "קידומת הודעה מותאמת אישית", - "Hello @everyone is...": "שלום {'@'}כולם...", + "Hello @everyone is...": "שלום {'@'}כולם…", "teams": "Microsoft Teams", "Webhook URL": "כתובת האתר של Webhook", "wayToGetTeamsURL": "אתה יכול ללמוד כיצד ליצור כתובת אתר ל-webhook {0}.", @@ -342,8 +342,8 @@ "Security": "אבטחה", "Steam API Key": "מפתח API Steam", "Shrink Database": "מסד נתונים מכווץ", - "Pick a RR-Type...": "בחר סוג RR ...", - "Pick Accepted Status Codes...": "בחר קודי סטטוס מקובלים ...", + "Pick a RR-Type...": "בחר סוג RR…", + "Pick Accepted Status Codes...": "בחר קודי סטטוס מקובלים…", "Default": "בְּרִירַת מֶחדָל", "HTTP Options": "אפשרויות HTTP", "Create Incident": "ליצור אירוע", @@ -587,7 +587,7 @@ "Domain": "תְחוּם", "Workstation": "עמדת עבודה", "disableCloudflaredNoAuthMsg": "אתה לא נמצא במצב AUTH, אין צורך בסיסמה.", - "trustProxyDescription": "סמוך על כותרות 'x-forwarded-*'.אם אתה רוצה להשיג את ה- IP של הלקוח הנכון וה- Uptime Kuma שלך מאחור כמו Nginx או Apache, עליך לאפשר זאת.", + "trustProxyDescription": "סמוך על הכותרות 'X-Forwarded-*'. אם אתה רוצה לקבל את כתובת ה-IP של הלקוח וה- Uptime Kuma שלך עומד מאחורי פרוקסי כגון Nginx או Apache, עליך להפעיל זאת.", "wayToGetLineNotifyToken": "אתה יכול לקבל אסימון גישה מ- {0}", "Examples": "דוגמאות", "Home Assistant URL": "כתובת URL עוזרת ביתית", @@ -607,7 +607,7 @@ "goAlertInfo": "SAETRERT הוא יישום קוד פתוח לתזמון שיחה, הסלמות והודעות אוטומטיות (כמו SMS או שיחות קוליות).לעסוק אוטומטית את האדם הנכון, בדרך הנכונה ובזמן הנכון!{0}", "goAlertIntegrationKeyInfo": "קבל מפתח אינטגרציה של API גנרי לשירות בפורמט זה \"AAAAAAAA-BBB-CCCC-DDDD-EEEEEEEEEEE \" בדרך כלל הערך של פרמטר האסימון של URL שהועתק.", "goAlert": "GoAlert", - "backupOutdatedWarning": "מיושם: מכיוון שהרבה תכונות שנוספו ותכונת הגיבוי הזו מעט לא מצומצמת, היא לא יכולה לייצר או לשחזר גיבוי שלם.", + "backupOutdatedWarning": "הוצא משימוש: מכיוון שנוספו הרבה תכונות ותכונת הגיבוי הזו קצת לא מתוחזקת, היא לא יכולה ליצור או לשחזר גיבוי מלא.", "backupRecommend": "אנא גבה את עוצמת הקול או את תיקיית הנתונים (./data/) ישירות במקום.", "Optional": "אופציונאלי", "squadcast": "Squadcast", @@ -668,5 +668,29 @@ "high": "גבוהה", "General Monitor Type": "מוניטור כללי", "Passive Monitor Type": "מוניטור פסיבי", - "Specific Monitor Type": "סוג מוניטור ספציפי" + "Specific Monitor Type": "סוג מוניטור ספציפי", + "Custom Monitor Type": "סוג צג מותאם אישית", + "Monitor": "מוניטור | מוניטרים", + "promosmsAllowLongSMS": "אפשר SMS ארוך", + "loadingError": "לא ניתן לאחזר את הנתונים, אנא נסה שוב מאוחר יותר.", + "plugin": "תוסף | תוספים", + "install": "להתקין", + "installing": "מתקין", + "uninstall": "הסר את ההתקנה", + "uninstalling": "מסיר התקנה", + "confirmUninstallPlugin": "האם אתה בטוח שברצונך להסיר את התוסף הזה?", + "Help": "עזרה", + "Game": "משחק", + "Packet Size": "גודל חבילה", + "markdownSupported": "תחביר סימון נתמך (Markdown )", + "Custom": "מותאם אישית", + "ZohoCliq": "זוהו קליק", + "wayToGetZohoCliqURL": "אתה יכול ללמוד כיצד ליצור כתובת אתר ל-webhook {0}.", + "dataRetentionTimeError": "תקופת השמירה חייבת להיות 0 או יותר", + "infiniteRetention": "הגדר ל-0 לשמירה אינסופית.", + "confirmDeleteTagMsg": "האם אתה בטוח שברצונך למחוק תג זה? צגים המשויכים לתג זה לא יימחקו.", + "Kook": "קוק", + "wayToGetKookBotToken": "צור יישום וקבל את אסימון הבוט שלך ב-{0}", + "wayToGetKookGuildID": "הפעל את 'מצב מפתח' בהגדרת קוק, ולחץ לחיצה ימנית על הגילדה כדי לקבל את המזהה שלה", + "Guild ID": "מזהה גילד" } From fe66a24f00feb74a61759832abdd451f2a0e7d09 Mon Sep 17 00:00:00 2001 From: Rachatat Bunpat Date: Mon, 13 Feb 2023 08:59:26 +0000 Subject: [PATCH 239/296] Translated using Weblate (Thai) Currently translated at 86.7% (601 of 693 strings) Co-authored-by: Rachatat Bunpat Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/th/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/th-TH.json | 49 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 37 insertions(+), 12 deletions(-) diff --git a/src/lang/th-TH.json b/src/lang/th-TH.json index 7ad132f5..9ae9a373 100644 --- a/src/lang/th-TH.json +++ b/src/lang/th-TH.json @@ -102,7 +102,7 @@ "Disable Auth": "ปิดใช้งานการตรวจสอบสิทธิ์", "Enable Auth": "เปิดใช้งานการตรวจสอบสิทธิ์", "disableauth.message1": "คุณต้องการที่จะ ปิดใช้งานระบบรับรองความถูกต้องใช่หรือไม่?", - "disableauth.message2": "ระบบนี้ถูกออกแบบมาเพื่อการใช้งานกับระบบรับรองความถูกต้องของบุคคลที่สามเช่น Cloudflare Access, Authelia หรือวิธีการอื่น ๆ", + "disableauth.message2": "ระบบนี้ถูกออกแบบมาเพื่อการใช้งานกับระบบรับรองความถูกต้องของบุคคลที่สามเช่น Cloudflare Access, Authelia หรือวิธีการอื่นๆ", "Please use this option carefully!": "โปรดใช้ความระมัดระวังในการเลือกใช้งานระบบนี้ !", "Logout": "ออกจากระบบ", "Leave": "ออก", @@ -159,7 +159,7 @@ "Token": "กุญแจ", "Show URI": "แสดง URI", "Tags": "แท็ก", - "Add New below or Select...": "เพิ่มใหม่ด้านล่างหรือเลือก...", + "Add New below or Select...": "เพิ่มใหม่ด้านล่างหรือเลือก…", "Tag with this name already exist.": "แท็กที่มีชื่อนี้มีอยู่แล้ว", "Tag with this value already exist.": "แท็กที่มีข้อมูลนี้มีอยู่แล้ว", "color": "สี", @@ -172,7 +172,7 @@ "Indigo": "ม่วง", "Purple": "ม่วง", "Pink": "ชมพู", - "Search...": "ค้นหา...", + "Search...": "ค้นหา…", "Avg. Ping": "ค่า Ping เฉลี่ย", "Avg. Response": "ค่า Response เฉลี่ย", "Entry Page": "หน้าต้อนรับ", @@ -217,7 +217,7 @@ "wayToGetDiscordURL": "คุณสามารถรับได้โดยการไปที่ Server Settings -> Integrations -> Create Webhook", "Bot Display Name": "ชื่อบอท", "Prefix Custom Message": "คำนำหน้าข้อความที่กำหนดเอง", - "Hello @everyone is...": "สวัสดี {'@'}everyone นี่...", + "Hello @everyone is...": "สวัสดี {'@'}everyone นี่…", "teams": "Microsoft Teams", "Webhook URL": "Webhook URL", "wayToGetTeamsURL": "คุณสามารถเรียนรู้วิธีการสร้าง Webhook URL {0}", @@ -303,7 +303,7 @@ "Body": "เนื้อหา", "Headers": "ส่วนหัว", "PushUrl": "Push URL", - "HeadersInvalidFormat": "เนื้อหาคำขอส่วนหัวไม่ใช่ JSON ที่ถูกต้อง :", + "HeadersInvalidFormat": "เนื้อหาคำขอส่วนหัวไม่ใช่ JSON ที่ถูกต้อง: ", "BodyInvalidFormat": "เนื้อหาคำขอไม่ใช่ JSON ที่ถูกต้อง : ", "Monitor History": "ประวัติมอนิเตอร์", "clearDataOlderThan": "เก็บข้อมูลมอนิเตอร์ {0} วัน", @@ -323,7 +323,7 @@ "Steam API Key": "Steam API Key", "Shrink Database": "ย่อฐานข้อมูล", "Pick a RR-Type...": "เลือกชนิด DNS Record", - "Pick Accepted Status Codes...": "เลือกสถานะที่ยอมรับ...", + "Pick Accepted Status Codes...": "เลือกเลขสถานะที่ยอมรับ…", "Default": "ค่าเริ่มต้น", "HTTP Options": "ตัวเลือก HTTP", "Create Incident": "สร้างเหตุการณ์", @@ -441,9 +441,9 @@ "wayToGetCloudflaredURL": "(ดาวโหลด cloudflared จาก {0})", "cloudflareWebsite": "เว็บไซต์ Cloudflare", "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.": "การเชื่อมต่อปัจุบันอาจขาดหายหากคุณกำลังเชื่อมต่อ Cloudflare Tunnel คุณแน่ใจหรือไม่ที่จะหยุด, พิมรหัสผ่านของคุณเพื่อยืนยัน", - "Other Software": "ซอฟต์แวร์อื่นๆ ", + "Other Software": "ซอฟต์แวร์อื่นๆ", "For example: nginx, Apache and Traefik.": "เช่น: nginx, Apache และ Traefik", "Please read": "กรุณาอ่าน", "Subject:": "เรื่อง :", @@ -455,7 +455,7 @@ "Domain Name Expiry Notification": "แจ้งเตือนการหมดอายุของโดเมน", "Proxy": "Proxy", "Date Created": "วันที่สร้าง", - "onebotHttpAddress": "ที่อยู่ HTTP OneBot ", + "onebotHttpAddress": "ที่อยู่ HTTP OneBot", "onebotMessageType": "ชนิดข้อความ OneBot", "onebotGroupMessage": "กลุ่ม", "onebotPrivateMessage": "ส่วนตัว", @@ -562,11 +562,11 @@ "Domain": "โดเมน", "Workstation": "Workstation", "disableCloudflaredNoAuthMsg": "คุณอยู่ในโหมดไม่มีการตรวจสอบสิทธิ์, ไม่จำเป็นต้องมีรหัสผ่าน", - "trustProxyDescription": "เชื่อ Header 'X-Forwarded-*' ถ้าคุณต้องการไอพีที่ถูกต้องและ Uptime Kuma อยู่ข้างหลัง Nginx หรือ Apache, คุณควรเปิดใช้งาน", + "trustProxyDescription": "เชื่อ Header 'X-Forwarded-*', คุณควรเปิดใช้งาน ถ้าคุณต้องการ IP ของผู้ใช้ที่ถูกต้องและ 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\"", + "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\" เพื่อหาชื่ออุปกรณ์หรือชื่อโทรศัพท์", @@ -576,5 +576,30 @@ "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 !" + "Frontend Version do not match backend version!": "เวอร์ชั่น Frontend ไม่ตรงกับ Backend !", + "webhookAdditionalHeadersTitle": "Header เพิ่มเติม", + "webhookAdditionalHeadersDesc": "กำหนด Header ที่จะส่งไปหร้อมกับ Webhook", + "Start of maintenance": "เริ่มการซ่อมบำรุง", + "All Status Pages": "หน้าสถานะทั้งหมด", + "Custom": "กำหนดเอง", + "Game": "เกม", + "statusMaintenance": "การซ่อมบำรุง", + "Maintenance": "การซ่อมบำรุง", + "Monitor": "มอนิเตอร์ | มอนิเตอร์", + "Select status pages...": "เลือกหน้าสถานะ", + "Schedule maintenance": "กำหนดเวลาบำรุงรักษา", + "Affected Monitors": "มอนิเตอร์ที่ได้รับผลกระทบ", + "markdownSupported": "รองรับ Markdown", + "Help": "ช่วยเหลือ", + "Pick Affected Monitors...": "เลือกมอนิเตอร์ที่ได้รับผลกระทบ", + "Packet Size": "ขนาดของ Packet", + "ZohoCliq": "ZohoCliq", + "backupOutdatedWarning": "ไม่ได้รับการพัฒนาแล้ว : ไม่สามารถสร้างหรือกูข้อมูลสำรองได้สมบูรณ์ เนื่องจากมีฟีเจอร์ใหม่เพิ่มขึ้นมากและการแบ็คอัพไม่ได้ถูกพัฒนา", + "backupRecommend": "กรุณาแบ็คอัพข้อมูลทั้งหมดหรือโฟลเดอร์ Data (./data/) โดยตรงแทน", + "Optional": "ไม่จำเป็น", + "squadcast": "Squadcast", + "or": "หรือ", + "recurringInterval": "ช่วงเวลา", + "Recurring": "ทำซ้ำ", + "General Monitor Type": "ชนิดมอนิเตอร์ทั่วไป" } From 06d1309d78186eec47591b90908f9147fde4739c Mon Sep 17 00:00:00 2001 From: Cyril59310 Date: Mon, 13 Feb 2023 08:59:26 +0000 Subject: [PATCH 240/296] Translated using Weblate (French) Currently translated at 100.0% (697 of 697 strings) Translated using Weblate (French) Currently translated at 100.0% (697 of 697 strings) Translated using Weblate (French) Currently translated at 100.0% (697 of 697 strings) Translated using Weblate (French) Currently translated at 100.0% (694 of 694 strings) Co-authored-by: Cyril59310 Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/fr/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/fr-FR.json | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/lang/fr-FR.json b/src/lang/fr-FR.json index f89cd0a4..4ab908b3 100644 --- a/src/lang/fr-FR.json +++ b/src/lang/fr-FR.json @@ -73,7 +73,7 @@ "Delete": "Supprimer", "Current": "Actuellement", "Uptime": "Disponibilité", - "Cert Exp.": "Expiration SSL", + "Cert Exp.": "Expiration SSL.", "day": "jour | jours", "-day": " jours", "hour": "heure", @@ -89,7 +89,7 @@ "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", + "Resend Notification if Down X times consequently": "Renvoyer la notification si en panne X fois consécutivement", "Advanced": "Avancé", "Upside Down Mode": "Mode inversé", "Max. Redirects": "Nombre maximum de redirections", @@ -235,7 +235,7 @@ "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 »", + "wayToGetDiscordURL": "Vous pouvez l'obtenir en allant dans « Paramètres du serveur » -> « Intégrations » -> « Consulter les webhooks» -> « Nouveau Webhook »", "Bot Display Name": "Nom du robot (affiché)", "Prefix Custom Message": "Préfixe du message personnalisé", "Hello @everyone is...": "Bonjour {'@'}everyone il…", @@ -692,5 +692,9 @@ "uninstalling": "Désinstallation", "confirmUninstallPlugin": "Voulez-vous vraiment désinstaller ce plugin ?", "Custom Monitor Type": "Type de sonde personnalisé", - "markdownSupported": "Syntaxe Markdown supportée" + "markdownSupported": "Syntaxe Markdown supportée", + "Google Analytics ID": "Identifiant Google Analytics", + "Server Address": "Adresse du serveur", + "Learn More": "En savoir plus", + "Edit Tag": "Modifier l'étiquette" } From bcac18cc2b2c1d726eb927eb7e80709db305c3df Mon Sep 17 00:00:00 2001 From: Jason Houk Date: Mon, 13 Feb 2023 08:59:26 +0000 Subject: [PATCH 241/296] Translated using Weblate (Japanese) Currently translated at 25.2% (175 of 694 strings) Co-authored-by: Jason Houk Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/ja/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/ja.json | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/lang/ja.json b/src/lang/ja.json index 76ca4c23..3de54074 100644 --- a/src/lang/ja.json +++ b/src/lang/ja.json @@ -21,7 +21,7 @@ "Language": "言語", "Appearance": "外観", "Theme": "テーマ", - "General": "General", + "General": "全般的", "Version": "バージョン", "Check Update On GitHub": "GitHubでアップデートを確認する", "List": "一覧", @@ -167,5 +167,14 @@ "Edit Status Page": "ステータスページ編集", "Go to Dashboard": "ダッシュボード", "Status Page": "ステータスページ", - "Status Pages": "ステータスページ" + "Status Pages": "ステータスページ", + "Shrink Database": "データベースの縮小", + "Start": "始める", + "Retry": "リトライ", + "Please read": "読んでください", + "Orange": "橙", + "Gateway Type": "ゲートウェイの種類", + "Game": "ゲーム", + "Help": "ヘルプ", + "Maintenance": "メンテナンス" } From 5f71515253bbbbdfabfcca77b8eb6e3bf42f0b9a Mon Sep 17 00:00:00 2001 From: Eduard Dev Date: Mon, 13 Feb 2023 08:59:26 +0000 Subject: [PATCH 242/296] Translated using Weblate (Romanian) Currently translated at 80.3% (560 of 697 strings) Translated using Weblate (English) Currently translated at 100.0% (697 of 697 strings) Co-authored-by: Eduard Dev Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/en/ Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/ro/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/en.json | 2 +- src/lang/ro.json | 562 ++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 562 insertions(+), 2 deletions(-) diff --git a/src/lang/en.json b/src/lang/en.json index d907f4e0..9cf4c1e8 100644 --- a/src/lang/en.json +++ b/src/lang/en.json @@ -446,7 +446,7 @@ "smtpCC": "CC", "smtpBCC": "BCC", "Discord Webhook URL": "Discord Webhook URL", - "wayToGetDiscordURL": "You can get this by going to Server Settings -> Integrations -> Create Webhook", + "wayToGetDiscordURL": "You can get this by going to Server Settings -> Integrations -> View Webhooks -> New Webhook", "Bot Display Name": "Bot Display Name", "Prefix Custom Message": "Prefix Custom Message", "Hello @everyone is...": "Hello {'@'}everyone is…", diff --git a/src/lang/ro.json b/src/lang/ro.json index a659e0be..066d1ed5 100644 --- a/src/lang/ro.json +++ b/src/lang/ro.json @@ -1,3 +1,563 @@ { - "languageName": "Limba română" + "languageName": "Română", + "Dashboard": "Panou de Control", + "Help": "Ajutor", + "Appearance": "Aspect", + "Theme": "Temă", + "General": "General", + "Version": "Versiune", + "Check Update On GitHub": "Verifică Actualitatea pe GitHub", + "Quick Stats": "Statistici Rapide", + "Up": "Sus", + "Down": "Jos", + "statusMaintenance": "Mentenanță", + "Maintenance": "Mentenanță", + "General Monitor Type": "Monitor de Tip General", + "Passive Monitor Type": "Monitor de Tip Pasiv", + "markdownSupported": "Limbaj Markdown Acceptat", + "Pause": "Pauză", + "Name": "Nume", + "Status": "Status", + "DateTime": "DatăOră", + "Message": "Mesaj", + "No important events": "Niciun eveniment important", + "Resume": "Reia", + "Delete": "Șterge", + "Uptime": "Timpul de funcționare", + "Cert Exp.": "Expirarea Certificatului", + "Monitor": "Monitor | Monitoare", + "day": "zi | zile", + "-day": "-zi", + "hour": "oră", + "Edit": "Modifică", + "Ping": "Ping", + "Monitor Type": "Tipul Monitorului", + "Keyword": "Cuvânt Cheie", + "Friendly Name": "Nume Ușor de Recunoscut", + "URL": "URL", + "Hostname": "Hostname", + "Port": "Port", + "Retries": "Reîncercări", + "Heartbeat Retry Interval": "Intervalul Reîncercării Heartbeat-ului", + "Advanced": "Avansat", + "checkEverySecond": "Verifică la fiecare {0} secunde", + "retryCheckEverySecond": "Reîncearcă la fiecare {0} secunde", + "resendEveryXTimes": "Retrimite de {0} ori", + "resendDisabled": "Retrimiterea dezactivată", + "ignoreTLSError": "Ignoră erorile TLS/SSL pentru site-urile HTTPS", + "upsideDownModeDescription": "Întoarce statusul cu susul în jos. Dacă serviciul este contactabil, este OFFLINE.", + "Upside Down Mode": "Modul cu Susul in Jos", + "Max. Redirects": "Nr. Max. de Redirecționări", + "Accepted Status Codes": "Coduri de Status Acceptate", + "Push URL": "Împinge URL", + "needPushEvery": "Acest URL trebuie să fie contactat la fiecare {0} secunde.", + "pushOptionalParams": "Parametrii opționali: {0}", + "Save": "Salvează", + "Notifications": "Notificări", + "Not available, please setup.": "Indisponibil, trebuie configurat.", + "Setup Notification": "Configurare Notificări", + "Light": "Luminos", + "Dark": "Întunecat", + "Auto": "Automat", + "Normal": "Normal", + "Bottom": "Fund", + "None": "Nimic", + "Timezone": "Fus Orar", + "Search Engine Visibility": "Vizibilitate în Motoarele de Căutare", + "Allow indexing": "Permite Indexarea", + "Change Password": "Schimbă Parola", + "Current Password": "Parola Curentă", + "New Password": "Parolă Nouă", + "Repeat New Password": "Repetă Parola Nouă", + "Update Password": "Actualizează Parola", + "Disable Auth": "Dezactivează Autentificarea", + "Enable Auth": "Activează Autentificarea", + "disableauth.message1": "Ești sigur că vrei să dezactivezi autentificarea?", + "Please use this option carefully!": "Utilizează Această Opțiune cu Grijă!", + "Logout": "Delogare", + "Leave": "Părăsește", + "I understand, please disable": "Am luat la cunoștință, dezactivează", + "Confirm": "Confirmă", + "Yes": "Da", + "No": "Nu", + "Username": "Nume de Utilizator", + "Password": "Parolă", + "Remember me": "Ține-mă Minte", + "No Monitors, please": "Niciun monitor, te rog", + "add one": "adaugă unul", + "Resource Record Type": "Tipul de Înregistrare a Resurselor", + "Create your admin account": "Crează un Cont de Administrator", + "Repeat Password": "Repetă Parola", + "Import Backup": "Importează Backup-ul", + "Export Backup": "Exporta Backup-ul", + "Export": "Exportează", + "Import": "Importă", + "respTime": "Timp de Răspuns (ms)", + "Apply on all existing monitors": "Aplică pentru toate monitoarele existente", + "Clear Data": "Șterge Datele", + "Events": "Evenimente", + "Heartbeats": "Heartbeat-uri", + "Auto Get": "Obține Automat", + "Affected Monitors": "Monitoare Afectate", + "Pick Affected Monitors...": "Alege Monitoarele Afectate…", + "Start of maintenance": "Începerea Mentenanței", + "All Status Pages": "Toate Paginile de Status", + "Skip existing": "Sari Existente", + "Overwrite": "Suprascrie", + "Options": "Opțiuni", + "Keep both": "Păstrează Ambele", + "Verify Token": "Verifică Token-ul", + "Enable 2FA": "Activează Autentificarea în Doi Pași", + "Disable 2FA": "Dezactivează Autentificarea în Doi Pași", + "2FA Settings": "Setări Autentificare în Doi Pași", + "Active": "Activ", + "Token": "Token", + "Show URI": "Arată URI", + "Tags": "Etichete", + "Tag with this name already exist.": "Deja Există o Etichetă cu Acest Nume.", + "Tag with this value already exist.": "Deja Există o Etichetă cu Această Valoare.", + "color": "Culoare", + "value (optional)": "valoare (opțional)", + "Gray": "Gri", + "Red": "Roșu", + "Orange": "Portocaliu", + "Green": "Verde", + "Blue": "Albastru", + "Indigo": "Indigo", + "Purple": "Violet", + "Custom": "Personalizat", + "Entry Page": "Pagina de Implicită", + "No Services": "Niciun Serviciu", + "All Systems Operational": "Toate Sistemele Operaționale", + "Partially Degraded Service": "Servicii Parțial Degradate", + "Degraded Service": "Servicii Degradate", + "Add Group": "Adaugă Grup", + "Add a monitor": "Adaugă Monitor", + "Edit Status Page": "Modifică Pagina de Status", + "Status Page": "Pagina de Status", + "Status Pages": "Pagini de Status", + "defaultNotificationName": "A mea {notification} Alertă ({number})", + "here": "aici", + "Required": "Necesar", + "webhook": "Webhook", + "Post URL": "Postează URL", + "Content Type": "Tipul Conținutului", + "webhookFormDataDesc": "{multipart} este bun pentru PHP. JSON-ul va fi analizat cu {decodeFunction}", + "webhookAdditionalHeadersTitle": "Antete adiționale", + "Webhook URL": "URL-ul Webhook-ului", + "Application Token": "Token-ul Aplicației", + "Server URL": "URL-ul Server-ului", + "Priority": "Prioritate", + "emojiCheatSheet": "Emoji-uri: {0}", + "Read more": "Vezi Mai Mult", + "appriseInstalled": "Apprise instalat.", + "appriseNotInstalled": "Apprise Neinstalat. {0}", + "Method": "Metodă", + "Body": "Corp", + "Headers": "Antete", + "PushUrl": "Împinge URL", + "BodyInvalidFormat": "Formatul corpului de request nu este valid: ", + "Monitor History": "Istoricul Monitorului", + "PasswordsDoNotMatch": "Parolele nu sunt la fel.", + "One record": "O înregistrare", + "Current User": "Utilizatorul Curent", + "topic": "Subiect", + "topicExplanation": "Subiectul MQTT către monitor", + "successMessage": "Mesaj de Succes", + "successMessageExplanation": "Mesajul MQTT care va fi considerat un succes", + "Done": "Terminat", + "Info": "Informații", + "Security": "Securitate", + "Shrink Database": "Miceste Baza de Date", + "Default": "Implicit", + "HTTP Options": "Opțiuni HTTP", + "Title": "Titlu", + "Content": "Conținut", + "Style": "Stil", + "info": "informații", + "warning": "avertizare", + "danger": "pericol", + "error": "eroare", + "critical": "critic", + "dark": "întunecat", + "Post": "Postează", + "Last Updated": "Actualizat", + "Unpin": "Desprinde", + "Switch to Light Theme": "Schimbă la Tema Luminoasă", + "Show Tags": "Arată Etichetele", + "Hide Tags": "Ascunde Etichetele", + "Description": "Descriere", + "No monitors available.": "Niciun monitor disponibil.", + "Discard": "Elimină", + "Cancel": "Anulează", + "Powered by": "Cu ajutorul", + "Customize": "Personalizează", + "Custom Footer": "Subsol Personalizat", + "Custom CSS": "CSS Personalizat", + "deleteStatusPageMsg": "Ești sigur că vrei să ștergi această pagină de status?", + "Proxies": "Proxy-uri", + "default": "Implicit", + "enabled": "Activat", + "setAsDefault": "Setează ca Implicit", + "deleteProxyMsg": "Ești sigur că vrei să ștergi acest proxy pentru toate monitoarele?", + "Certificate Chain": "Lanț-ul Certificatului", + "Valid": "Valid", + "Invalid": "Invalid", + "User": "Utilizator", + "Installed": "Instalat", + "Running": "Operează", + "Not running": "Nu operează", + "Remove Token": "Elimină token-ul", + "Start": "Start", + "Stop": "Stop", + "Add New Status Page": "Adaugă o Pagină de Status Nouă", + "Slug": "Slug", + "startOrEndWithOnly": "Începe sau termină doar cu {0}", + "No consecutive dashes": "Fără cratime consecutive", + "Next": "Înainte", + "No Proxy": "Niciun Proxy", + "Authentication": "Autentificate", + "HTTP Basic Auth": "HTTP Basic Auth", + "New Status Page": "Pagină de Status Nouă", + "Page Not Found": "Pagină Negăsită", + "Backup": "Backup", + "About": "Despre", + "wayToGetCloudflaredURL": "(Cloudflared a fost descărcat de la {0})", + "cloudflareWebsite": "Website-ul Cloudflare", + "Message:": "Mesaj:", + "HTTP Headers": "Antete HTTP", + "Trust Proxy": "Ai încredere în Proxy", + "Other Software": "Alt Software", + "For example: nginx, Apache and Traefik.": "De exemplu: nginx, Apache și Traefik.", + "Please read": "Te rog citește", + "Subject:": "Subiect:", + "Valid To:": "Valid Pâna la:", + "Days Remaining:": "Zile rămase:", + "Issuer:": "Emitent:", + "Fingerprint:": "Amprentă:", + "No status pages": "Nicio pagină de status", + "Domain Name Expiry Notification": "Notificare cu Privire la Expirarea Numelui de Domeniu", + "Proxy": "Proxy", + "Date Created": "Data Creării", + "Footer Text": "Text-ul pentru subsol", + "Show Powered By": "Arată ”Cu ajutorul”", + "Reverse Proxy": "Proxy invers", + "Domain Names": "Nume de domeniu", + "signedInDisp": "Autentificat ca {0}", + "signedInDispDisabled": "Autentificare Dezactivată.", + "RadiusSecret": "Secret Radius", + "RadiusSecretDescription": "Secret împărtășit cu client-ul și server-ul", + "RadiusCalledStationId": "ID-ul Stației Contactate", + "RadiusCalledStationIdDescription": "Identificatorul serviciului apelat", + "RadiusCallingStationId": "ID-ul Stației Contactante", + "RadiusCallingStationIdDescription": "Identificatorul dispozitivului contactant", + "API Username": "Nume de utilizator al API-ului", + "API Key": "Cheie API", + "Also check beta release": "Verifică și actualizările beta", + "Using a Reverse Proxy?": "Folosești un Proxy Invers?", + "Check how to config it for WebSocket": "Află cum să îl configurezi pentru WebSocket", + "Steam Game Server": "Server de Joc Steam", + "Most likely causes:": "Cea mai probabilă cauză:", + "There might be a typing error in the address.": "Ar putea exista o eroare de scriere în adresă.", + "What you can try:": "Ce poți încerca:", + "Retype the address.": "Rescrie adresa.", + "Go back to the previous page.": "Mergi la pagina precedentă.", + "Coming Soon": "În curând.", + "Connection String": "Connection String", + "Query": "Query", + "settingsCertificateExpiry": "Expirarea certificatului TLS", + "Setup Docker Host": "Configurează Docker Host", + "Connection Type": "Tipul Conexiunii", + "Docker Daemon": "Docker Daemon", + "deleteDockerHostMsg": "Ești sigur că vrei să ștergi acest docker host pentru toate montoarele?", + "socket": "Socket", + "tcp": "TCP / HTTP", + "Docker Container": "Container Docker", + "Container Name / ID": "Numele Container-ului / ID", + "Docker Host": "Docker Host", + "Domain": "Domeniu", + "Workstation": "Stație de lucru", + "Packet Size": "Mărime Pachet", + "telegram": "Telegram", + "ZohoCliq": "ZohoCliq", + "Bot Token": "Token Robot", + "wayToGetTelegramToken": "Poți obține un token de la {0}.", + "Chat ID": "ID-ul Chat-ului", + "YOUR BOT TOKEN HERE": "TOKEN-UL TĂU DE ROBOT", + "chatIDNotFound": "ID-ul Chat-ului nu a fost găsit; te rog întâi trimite un mesaj către robot", + "disableCloudflaredNoAuthMsg": "Ești în modul fără autentificare, nu ai nevoie de o parola.", + "wayToGetLineNotifyToken": "Poți obține un token de acces de la {0}", + "Examples": "Exemple", + "Home Assistant URL": "URL-ul de la Home Assistant", + "Long-Lived Access Token": "Token de acces cu durata de viață mare", + "default: notify all devices": "implicit: notifică toate dispozitivele", + "Automations can optionally be triggered in Home Assistant:": "Automatizările pot fi declanșate opțional în Home Assistant:", + "Trigger type:": "Tipul Declanșatorului:", + "Event type:": "Tipul Evenimentului:", + "Event data:": "Datele Evenimentului:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Apoi alege o acțiune, de exemplu, schimbă un LED RGB în roșu.", + "Frontend Version": "Versiunea Frontend-ului", + "Frontend Version do not match backend version!": "Versiunea Frontend-ului nu este aceeași cu cea a backend-ului!", + "backupRecommend": "Te rog fă o copie a directorului (./data/) în loc.", + "Optional": "Opțional", + "squadcast": "Squadcast", + "or": "sau", + "recurringInterval": "Interval", + "Recurring": "Recurentă", + "strategyManual": "Activ/Inactiv Manual", + "warningTimezone": "Folosește fusul orar al server-ului", + "weekdayShortMon": "Luni", + "weekdayShortTue": "Marți", + "weekdayShortWed": "Miercuri", + "weekdayShortThu": "Joi", + "weekdayShortFri": "Vineri", + "weekdayShortSat": "Sâmbătă", + "weekdayShortSun": "Duminică", + "dayOfWeek": "Ziua săptămânii", + "dayOfMonth": "Ziua lunii", + "lastDay": "Ultima zi", + "lastDay1": "Ultima zi a Lunii", + "lastDay2": "Penultima zi a Lunii", + "lastDay3": "Antepenultima zi a Lunii", + "No Maintenance": "Fără mentenanță", + "pauseMaintenanceMsg": "Ești sigur că vrei sa pui pe pauză?", + "maintenanceStatus-under-maintenance": "În mentenanță", + "maintenanceStatus-inactive": "Inactiv", + "maintenanceStatus-scheduled": "Planificat", + "maintenanceStatus-ended": "Terminat", + "maintenanceStatus-unknown": "Necunoscut", + "Server Timezone": "Fusul Orar al Server-ului", + "statusPageMaintenanceEndDate": "Sfârșit", + "IconUrl": "URL-ul pictogramei", + "Enable DNS Cache": "Activează DNS Cache", + "Enable": "Activează", + "Disable": "Dezactivează", + "Effective Date Range": "Interval în care se aplică", + "Schedule Maintenance": "Planifică Mentenanță", + "Date and Time": "Dată și Oră", + "DateTime Range": "Interval DatăOră", + "loadingError": "Nu se pot obține datele, te rog încearcă mai târziu.", + "plugin": "Plugin | Plugin-uri", + "install": "Instalează", + "installing": "Instalare", + "uninstall": "Dezinstalează", + "confirmUninstallPlugin": "Ești sigur că vrei să dezinstalezi acest plugin?", + "smtp": "Email (SMTP)", + "secureOptionNone": "Niciunul / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (456)", + "From Email": "De la Email", + "emailCustomSubject": "Subiect Personalizat", + "To Email": "La Email", + "smtpCC": "CC", + "smtpBCC": "BCC", + "Discord Webhook URL": "URL-ul Webhook-ului Discord", + "Bot Display Name": "Numele Robotului", + "Prefix Custom Message": "Prefix Personalizat", + "Hello @everyone is...": "Salut {'@'}everyone sunt…", + "wayToGetTeamsURL": "Poți învăța cum să creezi un URL webhook {0}.", + "wayToGetZohoCliqURL": "Poți învăța cum să creezi un URL webhook {0}.", + "needSignalAPI": "Trebuie să ai un client signal cu API-ul REST.", + "Number": "Număr", + "Recipients": "Destinatari", + "Access Token": "Token de acces", + "Channel access token": "Token de acces al canalului", + "Line Developers Console": "Consola Dezvoltatorilor Line", + "lineDevConsoleTo": "Consola Dezvoltatorilor Line - {0}", + "Basic Settings": "Setări de Bază", + "User ID": "ID-ul Utilizatorului", + "Messaging API": "API-ul pentru Mesagerie", + "Icon URL": "URL-ul Pictogramei", + "dataRetentionTimeError": "Perioada de renenție trebuie să fie 0 sau mai mare", + "infiniteRetention": "Setează la „0” pentru retenție pe perioadă nedeterminată.", + "confirmDeleteTagMsg": "Ești sigur că vrei să ștergi această etichetă? Monitoarele asociate cu această etichetă nu vor fi șterse.", + "enableGRPCTls": "Permite trimiterea cererilor gRPC cu conexiune TLS", + "grpcMethodDescription": "Numele metodei este convert to cammelCase format cum ar fi sayHello, check, etc.", + "deleteMonitorMsg": "Ești sigur că vrei să ștergi acest monitor?", + "deleteMaintenanceMsg": "Ești sigur că vrei să ștergi această mentenanță?", + "dnsPortDescription": "Port-ul server-ului DNS. Este implicit 53. Poți schimba acest port oricând.", + "resolverserverDescription": "Cloudflare este server-ul implicit. Poți schimba asta oricând.", + "rrtypeDescription": "Selectează tipul RR pe care vrei să îl monitorizezi", + "pauseMonitorMsg": "Ești sigur că vrei să pui pe pauză?", + "clearEventsMsg": "Ești sigur că vrei să ștergi toate evenimentele asociate cu acest monitor?", + "clearHeartbeatsMsg": "Ești sigur că vrei să ștergi toate heartbeat-urile asociate cu acest monitor?", + "confirmClearStatisticsMsg": "Ești sigur că vrei să ștergi TOATE statisticile?", + "confirmImportMsg": "Ești sigur că vrei să importezi backup-ul? Te rog verifică dacă ai selectat varianta corectă de importare.", + "twoFAVerifyLabel": "Te rog introdu token-ul pentru a verifica Autentificarea în Doi Pași:", + "tokenValidSettingsMsg": "Token-ul este valid! Acum poți salva setările legate de Autentificarea în Doi Pași.", + "confirmEnableTwoFAMsg": "Ești sigur că vrei să activezi Autentificarea în Doi Pași?", + "recurringIntervalMessage": "Rulează o dată pe zi | Rulează o dată la {0} zile", + "affectedMonitorsDescription": "Selectează monitoarele afectate de această mentenanță", + "atLeastOneMonitor": "Selectează cel puțin un monitor afectat", + "passwordNotMatchMsg": "Parolele nu se potrivesc.", + "notificationDescription": "Notificările trebuie atribuite unui monitor pentru a funcționa.", + "backupDescription": "Acum poți face backup la toate monitoarele și notificările într-un fișier JSON.", + "backupDescription2": "Notă: istoricul și datele evenimentelor nu sunt incluse.", + "endpoint": "Punct final", + "octopushAPIKey": "„Cheia API” din credențialele HTTP API în panoul de control", + "octopushLogin": "„Logare” din credențialele HTTP API în panoul de control", + "promosmsLogin": "Numele de Login API", + "promosmsPassword": "Parola API", + "pushoversounds pushover": "Pushover (implicit)", + "pushoversounds bike": "Bicicletă", + "pushoversounds bugle": "Goarnă", + "pushoversounds cashregister": "Casă de marcat", + "pushoversounds classical": "Clasic", + "pushoversounds cosmic": "Cosmic", + "pushoversounds falling": "Cădere", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Sosire", + "pushoversounds intermission": "Pauză", + "pushoversounds magic": "Magie", + "pushoversounds mechanical": "Mecanic", + "pushoversounds tugboat": "Remorcher", + "pushoversounds alien": "Alarmă Extraterestră (lung)", + "pushoversounds climb": "Urcare (lung)", + "pushoversounds echo": "Ecou Pushover (lung)", + "pushoversounds updown": "Sus Jos (lung)", + "pushoversounds vibrate": "Doar Vibrații", + "pushoversounds none": "Niciunul (silențios)", + "pushyAPIKey": "Cheie API secretă", + "pushyToken": "Token dispozitiv", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "slack": "Slack", + "rocket.chat": "Rocket.Chat", + "pushover": "Pushover", + "pushy": "Pushy", + "PushByTechulus": "Pushy by Techulus", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Suportă 50+ Servicii de Notificare)", + "GoogleChat": "Google Chat (Doar Google Workspace)", + "pushbullet": "Pushbullet", + "Kook": "Kook", + "Guild ID": "ID-ul Breslei (Guild-ului)", + "line": "Line Messenger", + "mattermost": "Mattermost", + "User Key": "Cheie Utilizator", + "Device": "Dispozitiv", + "Message Title": "Titlu Mesaj", + "Notification Sound": "Sunet Notificare", + "More info on:": "Mai multe informații la: {0}", + "pushoverDesc2": "Dacă vrei să trimiți notificări la dispozitive diferite, completează câmpul „Dispozitiv”", + "Settings": "Setări", + "New Update": "Update Nou", + "Language": "Limbă", + "Game": "Joc", + "Primary Base URL": "URL-ul de Bază", + "List": "Listă", + "Add": "Adaugă", + "Add New Monitor": "Adaugă Monitor Nou", + "Pending": "În așteptare", + "Unknown": "Necunoscut", + "Specific Monitor Type": "Monitor de Tip Specific", + "pauseDashboardHome": "Pauză", + "Current": "Curent", + "-hour": "-oră", + "Response": "Răspuns", + "Heartbeat Interval": "Interval Heartbeat", + "Resend Notification if Down X times consequently": "Retrimite Notificarea dacă se Întâmpină Eroarea de X ori consecutiv", + "retriesDescription": "Numărul Maxim de Reîncercări înainte ca serviciul să fie marcat offline și să se trimită o notificare", + "maxRedirectDescription": "Numărul maxim de redirecționări permise. Setează la „0” pentru a dezactiva redirecționările.", + "Theme - Heartbeat Bar": "Temă - Bara de Heartbeat", + "Discourage search engines from indexing site": "Descurajează Motoarele de Căutare din a Indexa Acest Site", + "disableauth.message2": "Este proiectat pentru scenarii în care intenționezi să implementezi soluții terțe de autentificare în fața Uptime Kuma, cum ar fi Cloudflare Access, Authelia, sau alt mecanism de autentificare.", + "Login": "Logare", + "Notification Type": "Tipul Notificării", + "Email": "Email", + "Test": "Test", + "Certificate Info": "Informațiile Certificatului", + "Resolver Server": "Server-ul de Rezolvare", + "Last Result": "Ultimul Rezultat", + "notAvailableShort": "N/A", + "Default enabled": "Implicit activat", + "Create": "Creează", + "Schedule maintenance": "Programează Mentenanță", + "Select status pages...": "Selectează pagina de status…", + "alertNoFile": "Te rog selectează un fișier de importat.", + "alertWrongFileType": "Te rog selectează un fișier de tip JSON.", + "Clear all statistics": "Șterge toate Statisticile", + "Setup 2FA": "Configurează Autentificarea în Doi Pași", + "Two Factor Authentication": "Autentificare în Doi Pași", + "Inactive": "Inactiv", + "Add New below or Select...": "Adaugă Nou Mai Jos sau Selectează…", + "Pink": "Roz", + "Search...": "Caută…", + "Avg. Ping": "Ping Mediu", + "Avg. Response": "Timp de Răspuns Mediu", + "statusPageNothing": "Nimic aici, te rog adaugă un grup sau un monitor.", + "Go to Dashboard": "Mergi la Panoul de Control", + "webhookJsonDesc": "{0} este bun pentru orice server HTTP modern cum ar fi Express.js", + "webhookAdditionalHeadersDesc": "Setează antete adiționale trimise împreună cu webhook-ul.", + "HeadersInvalidFormat": "Formatul header-urilor de request nu este valid: ", + "clearDataOlderThan": "Păstrează istoricul monitorului pentru {0} zile.", + "records": "înregistrări", + "steamApiKeyDescription": "Pentru a monitoriza un server de joc Steam, ai nevoie de un o cheie pentru „Web-API„-ul Steam. Poți înregistra o astfel de cheie aici: ", + "recent": "Recent", + "Steam API Key": "Cheia API Steam", + "Pick a RR-Type...": "Alege un Tip-RR…", + "Pick Accepted Status Codes...": "Alege Codurile de Status Acceptate…", + "Create Incident": "Creează un Incident", + "primary": "implicit", + "light": "luminos", + "Please input title and content": "Te rog adaugă un titlu și conținut", + "Created": "Creat", + "Switch to Dark Theme": "Schimbă la Tema Întunecată", + "Add one": "Adaugă unul", + "No Monitors": "Niciun monitor", + "Untitled Group": "Grup fără nume", + "Services": "Servicii", + "shrinkDatabaseDescription": "Declanșează database VACUUM pentru SQLite. Dacă baza ta de date a fost creată după 1.10.0, AUTO_VACUUM este deja activat și această acțiune nu este necesară.", + "proxyDescription": "Proxy-urile trebuie să fie atribuite unui monitor pentru a funcționa.", + "enableProxyDescription": "Acest proxy nu va afecta cererile monitoarelor până este activat. Poți dezactiva temporar proxy-ul pentru toate monitoarele.", + "setAsDefaultProxyDescription": "Acest proxy va fi activat implicit pentru toate monitoarele noi. Poți totuși să îl dezactivezi separat pentru fiecare monitor.", + "Not installed": "Neinstalat", + "Accept characters:": "Acceptă caractere:", + "The slug is already taken. Please choose another slug.": "Acest slug este deja luat. Te rog alege alt slug.", + "Don't know how to get the token? Please read the guide:": "Nu știi cum să obții token-ul? Te rog citește acest ghid:", + "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.": "Conexiunea curentă s-ar putea pierde dacă ești în proces de conectare printr-un tunel Cloudflare. Ești sigur că vrei să îl oprești? Tastează-ți parola curentă pentru a confirma.", + "Certificate Expiry Notification": "Notificare cu privire la expirarea certificatului", + "Show update if available": "Arată actualizarea dacă e disponibilă", + "The resource is no longer available.": "Această resursă nu mai este disponibilă.", + "certificationExpiryDescription": "Monitoarele HTTPS declanșează notificarea când certificatul TLS expiră în:", + "Docker Hosts": "Docker Hosts", + "supportTelegramChatID": "Suport Mesaje Directe / Grup / ID-ul Canalului de Text", + "wayToGetTelegramChatID": "Poți obține ID-ul chat-ului prin trimiterea unui mesaj către robot și mergând la acest URL pentru a vedea chat_id:", + "trustProxyDescription": "Ai incredere in antetele 'X-Forwarded-*'. Dacă vrei să obții IP-ul corect al client-ului și Uptime Kuma este în spatele unui proxy, cum ar fi Nginx sau Apache, trebuie să activezi asta.", + "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-ul de acces cu durată de viață mare poate fi creat dacă dai click pe numele tău de profil (stânga jos) și prin derularea până la capătul paginii și click pe „Creează Token”. ", + "Notification Service": "Serviciu de Notificări", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "O listă cu serviciile de notificare poate fi găsită în Home Assistant sub „Opțiuni Dezvoltator > Servicii” caută „notificare” pentru a găsi numele dispozitivului/telefonului.", + "backupOutdatedWarning": "Depășit: Pentru că au fost adăugate multe funcționalități, iar această funcție de backup este neîntreținută, nu poate genera sau restaura un backup complet.", + "lastDay4": "Răsantepenultima zi a Lunii", + "Display Timezone": "Afișează Fusul Orar", + "dnsCacheDescription": "Nu funcționează in anumite medii IPv6, dezactivează dacă întâmpini probleme.", + "Single Maintenance Window": "Fereastră unică de timp pentru mentennanță", + "Maintenance Time Window of a Day": "Fereastra de timp alocată pentru mentenanță dintr-o zi", + "uninstalling": "Dezinstalare", + "Ignore TLS Error": "Ignoră erorile TLS", + "wayToGetDiscordURL": "Poți obține asta mergând în Setări Server -> Integrări -> Vezi Webhook-urile -> Webhook nou", + "wayToCheckSignalURL": "Poți verifica acest URL pentru a vizualiza cum să configurezi unul:", + "wayToGetLineChannelToken": "Pentru început, accesează {0}, creează un furnizor și canal (API-ul Mesageriei), apoi poți obține token-ul de acces al canalului si ID-ul utilizatorului din itemii de meniu mentionati mai sus.", + "aboutIconURL": "Poți furniza un link către o pictogramă la secțiunea „URL-ul Pictogramei” pentru a suprascrie imaginea de profil implicită. Nu va fi folosită dacă există un emoticon configurat deja.", + "Channel Name": "Nume Canal", + "aboutMattermostChannelName": "Poți suprascrie canalul implicit pe care Webhook-ul îl folosește prin introducerea numelui canalului în câmpul „Nume Canal”. Acesta trebuie să fie activat în setările Webhook-ului Mattermost. Ex: #alt-canal", + "acceptedStatusCodesDescription": "Selectează codurile de status care sunt considerate un răspuns de succes.", + "deleteNotificationMsg": "Ești sigur că vrei să ștergi această notificare pentru toate monitoarele?", + "enableDefaultNotificationDescription": "Această notificare va fi activată implicit pentru toate monitoarele noi. Poți totuși să o dezactivezi individual pentru fiecare monitor.", + "importHandleDescription": "Alege „Sari Existente” dacă vrei să sari peste fiecare monitor sau notificare cu același nume. „Suprascrie” va șterge toate monitoarele și notificările existente.", + "confirmDisableTwoFAMsg": "Ești sigur că vrei să dezactivezi Autentificarea în Doi Pași?", + "affectedStatusPages": "Afișează acest mesaj de mentenanță pe paginile de status selectate", + "keywordDescription": "Caută cuvântul cheie în HTML simplu sau JSON. Această căutare ține cont de majuscule.", + "backupDescription3": "Datele importante, cum ar fi token-urile notificărilor sunt incluse în fișierul exportat; te rog stochează-l în siguranță.", + "pushoversounds pianobar": "Pian", + "pushoversounds siren": "Sirenă", + "pushoversounds spacealarm": "Alarmă Spațială", + "pushoversounds persistent": "Persistent (lung)", + "gotify": "Gotify", + "clicksendsms": "ClickSend SMS", + "wayToGetKookBotToken": "Creează o aplicație și obține token-ul robot la {0}", + "wayToGetKookGuildID": "Activează „Modul Dezvoltator” în setările Kook și dă click pe breaslă (guild) pentru a-i obține ID-ul", + "pushoverDesc1": "Prioritate de urgență (2) are o pauză implicită de 30 de secunde între reîncercări și expiră după o oră." } From db918be12605d0ff95fdd3b0428249c8bcd51a0a Mon Sep 17 00:00:00 2001 From: Alex Javadi Date: Mon, 13 Feb 2023 08:59:26 +0000 Subject: [PATCH 243/296] Translated using Weblate (Persian) Currently translated at 28.1% (196 of 697 strings) Co-authored-by: Alex Javadi Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/fa/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/fa.json | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/lang/fa.json b/src/lang/fa.json index 16effc34..b05d99e7 100644 --- a/src/lang/fa.json +++ b/src/lang/fa.json @@ -154,7 +154,7 @@ "Token": "توکن", "Show URI": "نمایش آدرس (URI) ", "Tags": "برچسب‌ها", - "Add New below or Select...": "یک مورد جدید اضافه کنید و یا از لیست انتخاب کنید...", + "Add New below or Select...": "یک مورد جدید اضافه کنید و یا از لیست انتخاب کنید…", "Tag with this name already exist.": "یک برچسب با این «نام» از قبل وجود دارد", "Tag with this value already exist.": "یک برچسب با این «مقدار» از قبل وجود دارد.", "color": "رنگ", @@ -187,5 +187,15 @@ "One record": "یک مورد", "Info": "اطلاعات", "Powered by": "نیرو گرفته از", - "apprise": "Apprise (Support 50+ Notification services)" + "apprise": "Apprise (Support 50+ Notification services)", + "Monitor": "مانیتور | مانتیور ها", + "Help": "کمک", + "Game": "بازی", + "Primary Base URL": "آدرس URL اصلی", + "Passive Monitor Type": "حالت مانیتور غیرفعال", + "Specific Monitor Type": "حالت مانیتور شخصی", + "statusMaintenance": "در دست تعمیر", + "Maintenance": "در حال تعمیر", + "General Monitor Type": "حالت مانیتور عمومی", + "markdownSupported": "شیوه نگارشی Markdown پشتیبانی می شود" } From 90d6fbd20b3bef72bd92df42758cbc22a63433e0 Mon Sep 17 00:00:00 2001 From: Tomasz Ad Date: Mon, 13 Feb 2023 08:59:26 +0000 Subject: [PATCH 244/296] Translated using Weblate (Polish) Currently translated at 99.8% (696 of 697 strings) Co-authored-by: Tomasz Ad Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/pl/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/pl.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/lang/pl.json b/src/lang/pl.json index 6d802185..de0acca2 100644 --- a/src/lang/pl.json +++ b/src/lang/pl.json @@ -508,7 +508,7 @@ "Bark Sound": "Dźwięk Bark", "HTTP Headers": "Nagłówki HTTP", "Trust Proxy": "Ufaj proxy", - "HomeAssistant": "Home Assistant", + "HomeAssistant": "Asystent domowy", "RadiusSecret": "Sekretny klucz Radius", "RadiusSecretDescription": "Współdzielony sekretny klucz pomiędzy klientem a serwerem", "RadiusCalledStationId": "Id stacji wywoływanej", @@ -692,5 +692,9 @@ "uninstall": "Odinstaluj", "confirmUninstallPlugin": "Czy na pewno chcesz odinstalować tę wtyczkę?", "Custom Monitor Type": "Własny typ monitora", - "markdownSupported": "Obsługiwana składnia Markdown" + "markdownSupported": "Obsługiwana składnia Markdown", + "Google Analytics ID": "Google Analytics ID", + "Edit Tag": "Edytuj Tag", + "Server Address": "Adres Serwera", + "Learn More": "Dowiedz się więcej" } From 49396e2ccc392c83ca246d2461f94473e690e758 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96mer=20Faruk=20Gen=C3=A7?= Date: Mon, 13 Feb 2023 08:59:26 +0000 Subject: [PATCH 245/296] Translated using Weblate (Turkish) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (697 of 697 strings) Co-authored-by: Ömer Faruk Genç Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/tr/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/tr-TR.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/lang/tr-TR.json b/src/lang/tr-TR.json index e7927e4b..7091de1a 100644 --- a/src/lang/tr-TR.json +++ b/src/lang/tr-TR.json @@ -217,7 +217,7 @@ "smtpBCC": "BCC", "discord": "Discord", "Discord Webhook URL": "Discord Webhook URL", - "wayToGetDiscordURL": "Bunu Sunucu Ayarları -> Entegrasyonlar -> Webhook Oluştur'a giderek alabilirsiniz.", + "wayToGetDiscordURL": "Bunu Sunucu Ayarları -> Entegrasyonlar -> Webhookları Görüntüle -> Yeni Webhook Oluştur adımını izleyerek alabilirsiniz.", "Bot Display Name": "Botun Görünecek Adı", "Prefix Custom Message": "Önek Özel Mesaj", "Hello @everyone is...": "Merhaba {'@'}everyone…", @@ -692,5 +692,9 @@ "lunasea": "LunaSea", "line": "Line Messenger", "mattermost": "Mattermost", - "markdownSupported": "Markdown yazım formatı desteklenir" + "markdownSupported": "Markdown yazım formatı desteklenir", + "Google Analytics ID": "Google Analytics ID", + "Edit Tag": "Etiketi Düzenle", + "Learn More": "Daha fazla bilgi edin", + "Server Address": "Sunucu Adresi" } From 36c32c36363f300edcccdea3398d970ba6cff3e9 Mon Sep 17 00:00:00 2001 From: AnnAngela Date: Mon, 13 Feb 2023 08:59:27 +0000 Subject: [PATCH 246/296] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (697 of 697 strings) Co-authored-by: AnnAngela Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/zh_Hans/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/zh-CN.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lang/zh-CN.json b/src/lang/zh-CN.json index 043a2523..ed962ca1 100644 --- a/src/lang/zh-CN.json +++ b/src/lang/zh-CN.json @@ -681,7 +681,7 @@ "Passive Monitor Type": "被动监控类型", "Specific Monitor Type": "特殊监控类型", "dataRetentionTimeError": "保留期必须为0或更大", - "Monitor": "监控项 | 监控项", + "Monitor": "监控项", "Custom": "自定义", "promosmsAllowLongSMS": "允许长的短信", "confirmDeleteTagMsg": "你确定你要删除这个标签?与此标签关联的监视器不会被删除。", From 971977b29546edd925ad00d939135d291101c8bb Mon Sep 17 00:00:00 2001 From: Marcos Date: Mon, 13 Feb 2023 08:59:27 +0000 Subject: [PATCH 247/296] Translated using Weblate (Spanish) Currently translated at 96.4% (672 of 697 strings) Co-authored-by: Marcos Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/es/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/es-ES.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/lang/es-ES.json b/src/lang/es-ES.json index 44f28869..36502911 100644 --- a/src/lang/es-ES.json +++ b/src/lang/es-ES.json @@ -678,5 +678,8 @@ "alertaRecoverState": "Estado de Recuperación", "serwersms": "SerwerSMS.pl", "serwersmsAPIUser": "Nombre de usuario de API (inc. webapi_ prefix)", - "smseagleGroup": "Nombre(s) de grupo de Guía Telefónica" + "smseagleGroup": "Nombre(s) de grupo de Guía Telefónica", + "Unpin": "Quitar de destacados", + "Prefix Custom Message": "Prefijo personalizado", + "markdownSupported": "Soporta sintaxis Markdown" } From d8a517e84390e4f1298a002ba18570462f0bfc46 Mon Sep 17 00:00:00 2001 From: Julien Millau Date: Mon, 13 Feb 2023 08:59:27 +0000 Subject: [PATCH 248/296] Translated using Weblate (French) Currently translated at 100.0% (697 of 697 strings) Co-authored-by: Julien Millau Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/fr/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/fr-FR.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lang/fr-FR.json b/src/lang/fr-FR.json index 4ab908b3..27ebddb6 100644 --- a/src/lang/fr-FR.json +++ b/src/lang/fr-FR.json @@ -75,9 +75,9 @@ "Uptime": "Disponibilité", "Cert Exp.": "Expiration SSL.", "day": "jour | jours", - "-day": " jours", + "-day": "-jour", "hour": "heure", - "-hour": " heure", + "-hour": "-heure", "Response": "Temps de réponse", "Ping": "Ping", "Monitor Type": "Type de sonde", From 51860261e98b3b6d9574b19376996e0f865a5b35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Dyhr?= Date: Mon, 13 Feb 2023 08:59:27 +0000 Subject: [PATCH 249/296] Translated using Weblate (Danish) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 50.6% (353 of 697 strings) Co-authored-by: René Dyhr Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/da/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/da-DK.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/lang/da-DK.json b/src/lang/da-DK.json index 679431c3..9d6f0574 100644 --- a/src/lang/da-DK.json +++ b/src/lang/da-DK.json @@ -350,5 +350,13 @@ "serwersmsAPIUser": "API Brugernavn (inkl. webapi_ prefix)", "serwersmsAPIPassword": "API Adgangskode", "serwersmsPhoneNumber": "Telefonnummer", - "serwersmsSenderName": "SMS Afsender Navn (registreret via kundeportal)" + "serwersmsSenderName": "SMS Afsender Navn (registreret via kundeportal)", + "statusMaintenance": "Vedligeholdelse", + "Maintenance": "Vedligeholdelse", + "No Maintenance": "Ingen vedligeholdelse", + "Examples": "Eksempler", + "High": "Høj", + "Recipient Number": "Modtager Nummer", + "From Name/Number": "Fra Navn/Nummer", + "Help": "Hjælp" } From 3816c696cd646e76ee3a97c62b3235426778f3aa Mon Sep 17 00:00:00 2001 From: Ferenc Date: Mon, 13 Feb 2023 08:59:27 +0000 Subject: [PATCH 250/296] Translated using Weblate (German) Currently translated at 100.0% (697 of 697 strings) Co-authored-by: Ferenc Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/de/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/de-DE.json | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/lang/de-DE.json b/src/lang/de-DE.json index f1ffd8fd..2d4c0e30 100644 --- a/src/lang/de-DE.json +++ b/src/lang/de-DE.json @@ -231,7 +231,7 @@ "smtpCC": "CC", "smtpBCC": "BCC", "Discord Webhook URL": "Discord Webhook URL", - "wayToGetDiscordURL": "Du kannst diese erhalten, indem du zu den Servereinstellungen gehst -> Integrationen -> Neuer Webhook", + "wayToGetDiscordURL": "Du kannst diese erhalten, indem du zu den Servereinstellungen gehst -> Integrationen -> WebHooks anzeigen -> Neuer WebHook", "Bot Display Name": "Bot-Anzeigename", "Prefix Custom Message": "Benutzerdefinierter Nachrichten Präfix", "Hello @everyone is...": "Hallo {'@'}everyone ist…", @@ -277,9 +277,9 @@ "appriseNotInstalled": "Apprise ist nicht installiert. {0}", "Access Token": "Access Token", "Channel access token": "Channel access token", - "Line Developers Console": "Line Developers Console", + "Line Developers Console": "Zeile Entwickler Konsole", "lineDevConsoleTo": "Line Developers Console - {0}", - "Basic Settings": "Basic Settings", + "Basic Settings": "Grundeinstellungen", "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.", @@ -560,7 +560,7 @@ "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 oder Apache läuft, sollte dies aktiviert werden.", + "trustProxyDescription": "Vertraue 'X-Forwarded-*' headern. Wenn man die richtige Client IP haben möchte und Uptime Kuma hinter einem Proxy wie Nginx oder Apache läuft, sollte dies aktiviert werden.", "wayToGetLineNotifyToken": "Du kannst hier ein Token erhalten: {0}", "Examples": "Beispiele", "Home Assistant URL": "Home Assistant URL", @@ -646,7 +646,7 @@ "Disable": "Deaktivieren", "Custom Monitor Type": "Benutzerdefinierter Monitortyp", "webhookAdditionalHeadersDesc": "Legt zusätzliche Header fest, die mit der Webhook gesendet wurden.", - "dnsCacheDescription": "In einigen IPv6-Umgebungen funktioniert diese Einstellung möglicherweise nicht. Deaktivieren, wenn es Probleme gibt.", + "dnsCacheDescription": "In einigen IPv6-Umgebungen funktioniert es möglicherweise nicht. Deaktivieren Sie es, wenn Sie auf Probleme stoßen.", "loadingError": "Die Daten konnten nicht abgerufen werden, bitte später noch einmal versuchen.", "confirmUninstallPlugin": "Möchten Sie dieses Plugin wirklich deinstallieren?", "grpcMethodDescription": "Der Name der Methode wird in das \"cammelCase \"-Format konvertiert (z.B. sayHello, check, etc.)", @@ -654,14 +654,14 @@ "Specific Monitor Type": "Spezifischer Monitortyp", "webhookAdditionalHeadersTitle": "Zusätzliche Header", "Packet Size": "Paketgröße", - "IconUrl": "Icon-URL", + "IconUrl": "Symbol-URL", "wayToGetZohoCliqURL": "Erfahren Sie, wie Sie eine Webhook-URL {0} erstellen.", - "dataRetentionTimeError": "Die Aufbewahrungsfrist muss 0 oder größer sein", - "infiniteRetention": "Für unendliche Speicherung auf 0 setzen.", - "confirmDeleteTagMsg": "Sind Sie sicher, dass Sie diesen Tag löschen möchten? Monitore, die mit diesem Tag verknüpft sind, werden nicht gelöscht.", + "dataRetentionTimeError": "Aufbewahrungszeit muss 0 oder größer sein", + "infiniteRetention": "Für unendliche Aufbewahrung auf 0 setzen.", + "confirmDeleteTagMsg": "Möchten Sie dieses Tag wirklich löschen? Mit diesem Tag verknüpfte Monitore werden nicht gelöscht.", "enableGRPCTls": "Erlaube das Senden von gRPC-Anfragen mit TLS-Verbindung", "ZohoCliq": "ZohoCliq", - "Monitor": "Monitor | Monitore", + "Monitor": "Überwachung | Monitore", "plugin": "Plugin | Plugins", "install": "Installieren", "installing": "Installiere", @@ -692,5 +692,9 @@ "smseagleUrl": "Deine SMSEagle-Geräte-URL", "Kook": "Kook", "smseagleEncoding": "Als Unicode senden", - "smseaglePriority": "Nachrichtenpriorität (0-9, Standard = 0)" + "smseaglePriority": "Nachrichtenpriorität (0-9, Standard = 0)", + "Google Analytics ID": "Google Analytics ID", + "Edit Tag": "bearbeite Tag", + "Server Address": "Server Adresse", + "Learn More": "Erfahre mehr" } From fea33a6475d0fa650be95c88bdcb177ec8882092 Mon Sep 17 00:00:00 2001 From: Leonardo Lope Date: Mon, 13 Feb 2023 08:59:27 +0000 Subject: [PATCH 251/296] Translated using Weblate (Portuguese (Portugal)) Currently translated at 63.2% (441 of 697 strings) Co-authored-by: Leonardo Lope Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/pt_PT/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/pt-PT.json | 278 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 268 insertions(+), 10 deletions(-) diff --git a/src/lang/pt-PT.json b/src/lang/pt-PT.json index e3ce55e9..3fd370b9 100644 --- a/src/lang/pt-PT.json +++ b/src/lang/pt-PT.json @@ -1,7 +1,7 @@ { "languageName": "Português (Portugal)", - "checkEverySecond": "Verificar a cada {0} segundos.", - "retryCheckEverySecond": "Tentar novamente a cada {0} segundos.", + "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.", @@ -72,7 +72,7 @@ "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.", + "Max. Redirects": "Max. Redirecionamentos", "Accepted Status Codes": "Status Code Aceitáveis", "Save": "Guardar", "Notifications": "Notificações", @@ -131,7 +131,7 @@ "Create": "Criar", "Clear Data": "Limpar Dados", "Events": "Eventos", - "Heartbeats": "Heartbeats", + "Heartbeats": "Pings", "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.", @@ -147,14 +147,14 @@ "Setup 2FA": "Configurar 2FA", "Enable 2FA": "Ativar 2FA", "Disable 2FA": "Desativar 2FA", - "2FA Settings": "Configurações do 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 ...", + "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", @@ -167,9 +167,9 @@ "Indigo": "Índigo", "Purple": "Roxo", "Pink": "Rosa", - "Search...": "Pesquisa...", - "Avg. Ping": "Ping Médio.", - "Avg. Response": "Resposta Média. ", + "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", @@ -181,5 +181,263 @@ "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" + "Go to Dashboard": "Ir para o dashboard", + "backupOutdatedWarning": "Depreciado: Uma vez que muitas funcionalidades foram adicionadas e esta funcionalidade de backup é um pouco desmanchada, não pode gerar ou restaurar um backup completo.", + "Schedule maintenance": "Agendar manutenção", + "Affected Monitors": "Monitores Afetados", + "Pick Affected Monitors...": "Escolher Monitores Afetados…", + "All Status Pages": "Todas as Páginas de Status", + "Select status pages...": "Selecionar Páginas de Status…", + "defaultNotificationName": "Meu alerta de {notification} ({number})", + "here": "aqui", + "Required": "Obrigatório", + "Post URL": "Post URL", + "Content Type": "Tipo de Conteúdo", + "webhookFormDataDesc": "{multipart} é bom para PHP. O JSON precisará ser analisado com {decodeFunction}", + "webhookAdditionalHeadersTitle": "Headers Adicionais", + "Webhook URL": "URL do Webhook", + "Application Token": "Token do Aplicativo", + "Server URL": "URL do Servidor", + "Priority": "Prioridade", + "emojiCheatSheet": "Folha de dicas de emojis: {0}", + "Read more": "Ler Mais", + "Method": "Método", + "Body": "Body", + "Headers": "Headers", + "PushUrl": "Enviar URL", + "HeadersInvalidFormat": "Os headers da solicitação não são JSON válidos: ", + "BodyInvalidFormat": "O body da solicitação não é um JSON válido: ", + "Monitor History": "Histórico do Monitor", + "clearDataOlderThan": "Mantenha os dados do histórico do monitor por {0} dias.", + "PasswordsDoNotMatch": "As passwords não coincidem.", + "records": "registros", + "One record": "Um registro", + "steamApiKeyDescription": "Para monitorar um Steam Game Server, você precisa de uma chave Steam Web-API. Pode registrar a chave da API aqui: ", + "Current User": "Usuário Atual", + "topicExplanation": "Tópico MQTT para monitorar", + "successMessage": "Mensagem de Sucesso", + "recent": "Recente", + "Done": "Feito", + "Info": "Informações", + "Security": "Segurança", + "Steam API Key": "Steam API Key", + "Shrink Database": "Encolher Base de Dados", + "Pick a RR-Type...": "Escolha um tipo RR…", + "Pick Accepted Status Codes...": "Escolha Códigos de Status Aceitos…", + "HTTP Options": "Opções HTTP", + "Create Incident": "Criar Incidente", + "Content": "Conteúdo", + "Style": "Estilo", + "info": "informações", + "warning": "aviso", + "danger": "perigo", + "critical": "crítico", + "primary": "primário", + "light": "luz", + "dark": "escuro", + "Post": "Post", + "Created": "Criado", + "Last Updated": "Ultima Atualização", + "Unpin": "Desmarcar", + "Switch to Light Theme": "Alterar para Tema Claro", + "Switch to Dark Theme": "Alterar para Tema Escuro", + "Show Tags": "Mostrar Tags", + "appriseInstalled": "Apprise está instalado.", + "appriseNotInstalled": "Apprise não está instalado. {0}", + "No monitors available.": "Nenhum monitor disponível.", + "Add one": "Adicione um", + "No Monitors": "Sem Monitores", + "Untitled Group": "Grupo sem Título", + "Services": "Serviços", + "Discard": "Descartar", + "Cancel": "Cancelar", + "Powered by": "Powered by", + "Customize": "Customizar", + "Custom CSS": "CSS Customizado", + "Custom Footer": "Footer Customizado", + "deleteStatusPageMsg": "Tem certeza de que deseja excluir esta página de status?", + "Proxies": "Proxies", + "default": "Padrão", + "enabled": "Ativar", + "setAsDefault": "Definir como Padrão", + "deleteProxyMsg": "Tem a certeza que quer excluir este proxy para todos os monitores?", + "setAsDefaultProxyDescription": "Este proxy será ativado por padrão para novos monitores. Você ainda pode desabilitar o proxy separadamente para cada monitor.", + "Valid": "Válido", + "Invalid": "Inválido", + "Remove Token": "Remover Token", + "Running": "Em Execução", + "Not running": "Não está em execução", + "Start": "Iniciar", + "Stop": "Parar", + "Add New Status Page": "Adicionar Nova Página de Status", + "Next": "Próximo", + "No consecutive dashes": "Sem traços consecutivos", + "Slug": "URL", + "Accept characters:": "Caracteres aceites:", + "startOrEndWithOnly": "Iniciar ou terminar apenas com {0}", + "The slug is already taken. Please choose another slug.": "URL já existe. Por favor escolha outro URL.", + "No Proxy": "Sem Proxy", + "Authentication": "Autenticação", + "HTTP Basic Auth": "Autenticação Básica HTTP", + "New Status Page": "Nova Página de Status", + "Page Not Found": "Página Não Encontrada", + "Reverse Proxy": "Proxy Reverso", + "Backup": "Backup", + "About": "Sobre", + "wayToGetCloudflaredURL": "(Download cloudflared de {0})", + "cloudflareWebsite": "Site da Cloudflare", + "Message:": "Mensagem:", + "HTTP Headers": "Headers HTTP", + "Trust Proxy": "Proxy de Confiança", + "Other Software": "Outro Software", + "For example: nginx, Apache and Traefik.": "Por exemplo: nginx, Apache e Traefik.", + "Please read": "Por favor leia", + "Subject:": "Assunto:", + "Valid To:": "Valido para:", + "Days Remaining:": "Dias Restantes:", + "Issuer:": "Emissor:", + "Fingerprint:": "Impressão Digital:", + "No status pages": "Nenhuma página de status", + "Domain Name Expiry Notification": "Notificação de Expiração de Nome de Domínio", + "Proxy": "Proxy", + "Date Created": "Data da Criação", + "Footer Text": "Texto do Footer", + "Show Powered By": "Mostrar Powered By", + "Domain Names": "Nomes de Domínio", + "signedInDisp": "Conectado como {0}", + "signedInDispDisabled": "Autenticação Desativada.", + "RadiusSecret": "Radius Secret", + "RadiusSecretDescription": "Secret compartilhado entre cliente e servidor", + "RadiusCallingStationIdDescription": "Identificador do dispositivo de chamada", + "Certificate Expiry Notification": "Notificação de Expiração do Certificado", + "API Username": "Nome de utilizador da API", + "API Key": "Chave API", + "Using a Reverse Proxy?": "Utilizando um Proxy Reverso?", + "Check how to config it for WebSocket": "Verifique como configurá-lo para WebSocket", + "Steam Game Server": "Steam Game Server", + "Most likely causes:": "Causas mais prováveis:", + "The resource is no longer available.": "O recurso já não está disponível.", + "There might be a typing error in the address.": "Pode haver um erro de digitação no endereço.", + "What you can try:": "O que pode tentar:", + "Retype the address.": "Volte a escrever o endereço.", + "Go back to the previous page.": "Voltar à página anterior.", + "Coming Soon": "Em Breve", + "Connection String": "Linha de Conexão", + "Query": "Query", + "settingsCertificateExpiry": "Validade do Certificado TLS", + "certificationExpiryDescription": "Os monitores HTTPS ativam a notificação quando o certificado TLS expira:", + "Setup Docker Host": "Configuração do Docker Host", + "Connection Type": "Tipo de conexão", + "Docker Daemon": "Docker Daemon", + "deleteDockerHostMsg": "Tem a certeza de querer apagar este docker host para todos os monitores?", + "socket": "Socket", + "tcp": "TCP / HTTP", + "Docker Host": "Docker Host", + "Docker Hosts": "Docker Hosts", + "Domain": "Domínio", + "Workstation": "Estação de trabalho", + "Packet Size": "Tamanho do pacote", + "ZohoCliq": "ZohoCliq", + "Bot Token": "Token do Bot", + "wayToGetTelegramToken": "Pode obter o token a partir de {0}.", + "Chat ID": "ID do Chat", + "wayToGetTelegramChatID": "Pode obter o seu ID de chat enviando uma mensagem para o bot e indo a este URL para ver o chat_id:", + "YOUR BOT TOKEN HERE": "O TOKEN DO BOT AQUI", + "disableCloudflaredNoAuthMsg": "Está no modo Sem Autenticação, não é necessária uma palavra-passe.", + "Examples": "Exemplos", + "Long-Lived Access Token": "Token de Acesso de Longa Duração", + "wayToGetLineNotifyToken": "Pode obter o código de acesso a partir de {0}", + "Notification Service": "Serviço de Notificação", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Uma lista de Serviços de Notificação pode ser encontrada em Home Assistant em \"Developer Tools > Services\" pesquisa por \"notificação\" para encontrar o seu dispositivo/nome do telefone.", + "Home Assistant URL": "URL do Home Assistant", + "Event type:": "Tipo de evento:", + "Event data:": "Dados do evento:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Depois de escolher uma ação, por exemplo mudar a cena para onde uma luz RGB é vermelha.", + "Frontend Version": "Versão Frontend", + "Frontend Version do not match backend version!": "Versão Frontend não corresponde à versão backend!", + "backupRecommend": "Por favor, faça o backup do volume ou da pasta de dados (./data/) diretamente.", + "Optional": "Opcional", + "squadcast": "Squadcast", + "recurringInterval": "Intervalo", + "Recurring": "Recurrente", + "strategyManual": "Ativar/Desativar Manualmente", + "warningTimezone": "Está a utilizar o fuso horário do servidor", + "weekdayShortMon": "Segunda", + "weekdayShortTue": "Terça", + "weekdayShortWed": "Quarta", + "weekdayShortThu": "Quinta", + "weekdayShortFri": "Sexta", + "weekdayShortSat": "Sábado", + "weekdayShortSun": "Domingo", + "dayOfWeek": "Dia da Semana", + "dayOfMonth": "Dia do Mês", + "lastDay": "Último Dia", + "lastDay2": "2º Último Dia do Mês", + "lastDay3": "3º Último Dia do Mês", + "lastDay4": "4º Último Dia do Mês", + "No Maintenance": "Nenhuma Manutenção", + "maintenanceStatus-under-maintenance": "Em Manutenção", + "maintenanceStatus-inactive": "Inativo", + "maintenanceStatus-scheduled": "Agendado", + "maintenanceStatus-ended": "Terminado", + "Display Timezone": "Mostrar Fuso horário", + "Server Timezone": "Fuso horário do Servidor", + "statusPageMaintenanceEndDate": "Acabou", + "Maintenance": "Manutenção", + "Specific Monitor Type": "Tipo de Monitor Específico", + "Resend Notification if Down X times consequently": "Reenviar notificação se Off X vezes consequentemente", + "resendEveryXTimes": "Reenviar a cada {0} vezes", + "resendDisabled": "Reenviar desativado", + "Push URL": "Enviar URL", + "webhook": "Webhook", + "topic": "Tema", + "RadiusCalledStationIdDescription": "Identificador do dispositivo chamado", + "Automations can optionally be triggered in Home Assistant:": "As automatizações podem opcionalmente ser ativadas em Home Assistant:", + "or": "ou", + "markdownSupported": "Sintaxe de redução suportada", + "Start of maintenance": "Início da manutenção", + "webhookJsonDesc": "{0} é bom para qualquer servidor HTTP moderno, como Express.js", + "webhookAdditionalHeadersDesc": "Define headers adicionais enviados com o webhook.", + "successMessageExplanation": "Mensagem MQTT que será considerada como sucesso", + "error": "erro", + "Please input title and content": "Por favor insira o título e o conteúdo", + "Hide Tags": "Ocultar Tags", + "Description": "Descrição", + "shrinkDatabaseDescription": "Acionar banco de dados VACUUM para SQLite. Se seu banco de dados for criado após 1.10.0, AUTO_VACUUM já está ativado e esta ação não é necessária.", + "proxyDescription": "Os proxies devem ser atribuídos a um monitor para funcionar.", + "enableProxyDescription": "Este proxy não afetará as solicitações do monitor até que seja ativado. Você pode controlar temporariamente a desativação do proxy de todos os monitores pelo status de ativação.", + "Don't know how to get the token? Please read the guide:": "Não sabe como obter o token? Por favor, leia o guia:", + "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.": "A conexão atual pode ser perdida se estiver conectando via Cloudflare Tunnel. Tem certeza de que deseja pará-lo? Digite sua senha atual para confirmar.", + "Docker Container": "Contentor Docker", + "Container Name / ID": "Nome / ID do Contentor", + "supportTelegramChatID": "Chat de Apoio Direto / Grupo / ID do Chat do Canal", + "chatIDNotFound": "O ID do Chat não é encontrado; por favor envie uma mensagem a este bot primeiro", + "trustProxyDescription": "Confiar nos headers 'X-Forwarded-*'. Se quiser obter o IP correto do cliente e o seu Uptime Kuma está por detrás de um proxy como o Nginx ou Apache, deve activá-lo.", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "O Token de Acesso de Longa Duração pode ser criado clicando no nome do seu perfil (em baixo à esquerda) e descendo para o fundo da pagina e depois clicando em Criar Token. ", + "lastDay1": "Último Dia do Mês", + "pauseMaintenanceMsg": "Quer mesmo colocar em pausa?", + "maintenanceStatus-unknown": "Desconhecido", + "needPushEvery": "Deve chamar este URL a cada {0} segundos.", + "pushOptionalParams": "Parâmetros opcionais: {0}", + "Title": "Título", + "User": "Utilizador", + "Installed": "Instalado", + "Not installed": "Não instalado", + "RadiusCalledStationId": "Id da estação chamada", + "RadiusCallingStationId": "Id da estação de chamada", + "default: notify all devices": "padrão: notificar todos os dispositivos", + "Trigger type:": "Tipo de gatilho:", + "telegram": "Telegram", + "Help": "Ajuda", + "Game": "Jogo", + "Monitor": "Monitor | Monitores", + "Default": "Padrão", + "Certificate Chain": "Certificate Chain", + "Show update if available": "Mostrar atualização se disponível", + "Also check beta release": "Verifique também a versão beta", + "Primary Base URL": "URL Base Principal", + "statusMaintenance": "Manutenção", + "Passive Monitor Type": "Tipo de Monitor Passivo", + "Custom": "Personalizar", + "General Monitor Type": "Tipo de Monitor Geral" } From 2ef98c1b1027e38d55ce1d33881a4cac168cc754 Mon Sep 17 00:00:00 2001 From: Super Admin Date: Mon, 13 Feb 2023 08:59:27 +0000 Subject: [PATCH 252/296] Translated using Weblate (English) Currently translated at 100.0% (697 of 697 strings) Co-authored-by: Super Admin Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/en/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lang/en.json b/src/lang/en.json index 9cf4c1e8..15edee93 100644 --- a/src/lang/en.json +++ b/src/lang/en.json @@ -55,7 +55,7 @@ "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", + "Resend Notification if Down X times consequently": "Resend Notification if Down X times consecutively", "Advanced": "Advanced", "checkEverySecond": "Check every {0} seconds", "retryCheckEverySecond": "Retry every {0} seconds", From a6f68a2e06e3d674ac3d2345159d2ca502222b05 Mon Sep 17 00:00:00 2001 From: Asdrubal Duarte Date: Mon, 13 Feb 2023 08:59:27 +0000 Subject: [PATCH 253/296] Translated using Weblate (Hungarian) Currently translated at 58.8% (410 of 697 strings) Translated using Weblate (Spanish) Currently translated at 96.9% (676 of 697 strings) Co-authored-by: Asdrubal Duarte Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/es/ Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/hu/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/es-ES.json | 10 +++++++--- src/lang/hu.json | 6 +++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/lang/es-ES.json b/src/lang/es-ES.json index 36502911..5adca7b7 100644 --- a/src/lang/es-ES.json +++ b/src/lang/es-ES.json @@ -304,7 +304,7 @@ "General Monitor Type": "Monitor Tipo General", "Specific Monitor Type": "Monitor Tipo Específico", "Monitor": "Monitores", - "Resend Notification if Down X times consequently": "Reenviar Notificación si Caído X veces consecutivas", + "Resend Notification if Down X times consequently": "Reenviar Notificación si Caído X veces consecutivamente", "resendEveryXTimes": "Reenviar cada {0} veces", "resendDisabled": "Reenvío deshabilitado", "needPushEvery": "Debe llamar a esta URL cada {0} segundos.", @@ -392,7 +392,7 @@ "webhookAdditionalHeadersDesc": "Establece encabezados adicionales enviados con el webhook.", "appriseInstalled": "Apprise está instalado.", "successMessage": "Mensaje de éxito", - "Pick Accepted Status Codes...": "Elija códigos de estado aceptados…", + "Pick Accepted Status Codes...": "Seleccione Códigos de Estado Aceptados…", "Post": "Post", "shrinkDatabaseDescription": "Activar ASPIRADORA para SQLite. Si tu base de datos fue creada después 1.10.0, AUTO_ASPIRADORA ya está habilitada y esta acción no es necesaria.", "deleteStatusPageMsg": "¿Estas seguro que quieres eliminar esta página de estado?", @@ -681,5 +681,9 @@ "smseagleGroup": "Nombre(s) de grupo de Guía Telefónica", "Unpin": "Quitar de destacados", "Prefix Custom Message": "Prefijo personalizado", - "markdownSupported": "Soporta sintaxis Markdown" + "markdownSupported": "Soporta sintaxis Markdown", + "Server Address": "Dirección del Servidor", + "Learn More": "Aprende Más", + "Pick a RR-Type...": "Seleccione un Tipo RR", + "onebotHttpAddress": "Dirección HTTP OneBot" } diff --git a/src/lang/hu.json b/src/lang/hu.json index a6424a0f..bc2ded73 100644 --- a/src/lang/hu.json +++ b/src/lang/hu.json @@ -410,5 +410,9 @@ "IconUrl": "Ikon URL", "successMessage": "Sikeres üzenet", "lastDay1": "A hónap utolsó napja", - "Guild ID": "Guild ID" + "Guild ID": "Guild ID", + "Help": "Súgó", + "statusMaintenance": "Karbantartás", + "Maintenance": "Karbantartás", + "Game": "Játék" } From 9d53db1504d6775a3b3883260aa30ac1c546d682 Mon Sep 17 00:00:00 2001 From: Marchel Fahrezi Date: Mon, 13 Feb 2023 08:59:27 +0000 Subject: [PATCH 254/296] Translated using Weblate (Indonesian) Currently translated at 82.3% (574 of 697 strings) Co-authored-by: Marchel Fahrezi Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/id/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/id-ID.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lang/id-ID.json b/src/lang/id-ID.json index 59a06521..220567f9 100644 --- a/src/lang/id-ID.json +++ b/src/lang/id-ID.json @@ -581,5 +581,7 @@ "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." + "backupRecommend": "Harap cadangkan volume atau folder data (./data/) secara langsung.", + "Help": "Bantuan", + "Game": "Gim/Permainan" } From f1aa567a505623c111d2b66a42a2d710dfcc156b Mon Sep 17 00:00:00 2001 From: Istratov Dmitrii Date: Mon, 13 Feb 2023 08:59:27 +0000 Subject: [PATCH 255/296] Translated using Weblate (Russian) Currently translated at 86.6% (604 of 697 strings) Co-authored-by: Istratov Dmitrii Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/ru/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/ru-RU.json | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/lang/ru-RU.json b/src/lang/ru-RU.json index 5caf74d6..bed58a54 100644 --- a/src/lang/ru-RU.json +++ b/src/lang/ru-RU.json @@ -604,5 +604,24 @@ "Help": "Помощь", "Game": "Игра", "Resend Notification if Down X times consequently": "Повторно отправить уведомление, если не работает X раз подряд", - "General Monitor Type": "Основной тип монитора" + "General Monitor Type": "Основной тип монитора", + "weekdayShortWed": "Ср", + "weekdayShortThu": "Чт", + "weekdayShortFri": "Пт", + "weekdayShortSat": "Сб", + "weekdayShortSun": "Вс", + "dayOfMonth": "День месяца", + "Pick Affected Monitors...": "Выберите затронутые мониторы…", + "Custom": "Пользовательский", + "successMessage": "Сообщение об успехе", + "successMessageExplanation": "Сообщение MQTT, которое может рассматриваться как успешное", + "Custom CSS": "Пользовательские CSS", + "weekdayShortTue": "Вт", + "dayOfWeek": "День недели", + "confirmDeleteTagMsg": "Вы уверены, что хотите удалить этот тег? Мониторы с этим тегом удалены не будут.", + "loadingError": "Не удаётся получить данные, пожалуйста попробуйте позже.", + "Packet Size": "Размер пакета", + "warningTimezone": "Используется часовой пояс сервера", + "weekdayShortMon": "Пн", + "ZohoCliq": "ZohoCliq" } From 9268ad2f2cbec609e87c0cd44e2c372a21d3b9c6 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Mon, 13 Feb 2023 08:59:27 +0000 Subject: [PATCH 256/296] Translated using Weblate (Chinese (Traditional, Hong Kong)) Currently translated at 82.0% (572 of 697 strings) Co-authored-by: Louis Lam Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/zh_Hant_HK/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/zh-HK.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lang/zh-HK.json b/src/lang/zh-HK.json index 14f25b5e..7069f95b 100644 --- a/src/lang/zh-HK.json +++ b/src/lang/zh-HK.json @@ -573,5 +573,6 @@ "Maintenance Time Window of a Day": "每日維護時段", "Proxy": "Proxy", "backupOutdatedWarning": "過時:由於備份功能未顧及新功能的增加,因此備份功能無法產生或復原完整的備份。", - "Optional": "可選填" + "Optional": "可選填", + "markdownSupported": "支援 Markdown" } From e9876986ebffb72a5c256ac5f92ac01ff6769a21 Mon Sep 17 00:00:00 2001 From: hamx01 Date: Mon, 13 Feb 2023 08:59:27 +0000 Subject: [PATCH 257/296] Translated using Weblate (Ukrainian) Currently translated at 78.6% (548 of 697 strings) Translated using Weblate (Russian) Currently translated at 94.4% (658 of 697 strings) Translated using Weblate (Polish) Currently translated at 100.0% (697 of 697 strings) Co-authored-by: hamx01 Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/pl/ Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/ru/ Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/uk/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/pl.json | 30 ++++++++-------- src/lang/ru-RU.json | 84 +++++++++++++++++++++++++++++++++------------ src/lang/uk-UA.json | 18 +++++++--- 3 files changed, 91 insertions(+), 41 deletions(-) diff --git a/src/lang/pl.json b/src/lang/pl.json index de0acca2..e971a5ff 100644 --- a/src/lang/pl.json +++ b/src/lang/pl.json @@ -388,8 +388,8 @@ "alertaApiEndpoint": "Punkt końcowy API", "alertaEnvironment": "Środowisko", "alertaApiKey": "Klucz API", - "alertaAlertState": "Alert State", - "alertaRecoverState": "Recover State", + "alertaAlertState": "Stan alarmowy", + "alertaRecoverState": "Stan odzyskania", "deleteStatusPageMsg": "Jesteś pewien, że chcesz usunąć tę stronę statusów?", "Proxies": "Proxy", "default": "Domyślny", @@ -402,7 +402,7 @@ "Certificate Chain": "Łańcuch certyfikatów", "Valid": "Ważny", "Invalid": "Nieważny", - "AccessKeyId": "AccessKey ID", + "AccessKeyId": "ID klucza dostępu", "SecretAccessKey": "AccessKey Sekret", "PhoneNumbers": "Numery telefonów", "TemplateCode": "Kod szablonu", @@ -494,7 +494,7 @@ "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", + "Resend Notification if Down X times consequently": "Wyślij ponownie powiadomienie, jeśli nie działa X razy z rzędu", "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}", @@ -529,21 +529,21 @@ "promosmsLogin": "Nazwa logowania API", "promosmsPassword": "Hasło API", "pushoversounds pushover": "Pushover (domyślny)", - "pushoversounds bike": "Bike", - "pushoversounds bugle": "Bugle", - "pushoversounds cashregister": "Cash Register", + "pushoversounds bike": "Rower", + "pushoversounds bugle": "chrząszcz", + "pushoversounds cashregister": "Kasa fiskalna", "pushoversounds classical": "Classical", - "pushoversounds cosmic": "Cosmic", - "pushoversounds falling": "Falling", + "pushoversounds cosmic": "Kosmiczny", + "pushoversounds falling": "Spadek", "pushoversounds gamelan": "Gamelan", "pushoversounds incoming": "Incoming", "pushoversounds intermission": "Intermission", - "pushoversounds magic": "Magic", - "pushoversounds mechanical": "Mechanical", + "pushoversounds magic": "Magia", + "pushoversounds mechanical": "Mechaniczny", "pushoversounds pianobar": "Piano Bar", - "pushoversounds siren": "Siren", - "pushoversounds spacealarm": "Space Alarm", - "pushoversounds tugboat": "Tug Boat", + "pushoversounds siren": "Syrena", + "pushoversounds spacealarm": "Alarm kosmiczny", + "pushoversounds tugboat": "Holownik", "pushoversounds alien": "Alien Alarm (długie)", "pushoversounds climb": "Climb (długie)", "pushoversounds persistent": "Persistent (długie)", @@ -693,7 +693,7 @@ "confirmUninstallPlugin": "Czy na pewno chcesz odinstalować tę wtyczkę?", "Custom Monitor Type": "Własny typ monitora", "markdownSupported": "Obsługiwana składnia Markdown", - "Google Analytics ID": "Google Analytics ID", + "Google Analytics ID": "Identyfikator Google Analytics", "Edit Tag": "Edytuj Tag", "Server Address": "Adres Serwera", "Learn More": "Dowiedz się więcej" diff --git a/src/lang/ru-RU.json b/src/lang/ru-RU.json index bed58a54..7ea1f643 100644 --- a/src/lang/ru-RU.json +++ b/src/lang/ru-RU.json @@ -43,7 +43,7 @@ "Delete": "Удалить", "Current": "Текущий", "Uptime": "Аптайм", - "Cert Exp.": "Сертификат истекает", + "Cert Exp.": "Сертификат истекает.", "day": "день | дней", "-day": " дней", "hour": "час", @@ -74,7 +74,7 @@ "Bottom": "Снизу", "None": "Отсутствует", "Timezone": "Часовой пояс", - "Search Engine Visibility": "Индексация поисковыми системами:", + "Search Engine Visibility": "Индексация поисковыми системами", "Allow indexing": "Разрешить индексирование", "Discourage search engines from indexing site": "Запретить индексирование", "Change Password": "Сменить пароль", @@ -86,7 +86,7 @@ "Enable Auth": "Включить авторизацию", "disableauth.message1": "Вы уверены, что хотите отключить авторизацию?", "disableauth.message2": "Это подходит для тех, у кого стоит другая авторизация перед открытием Uptime Kuma, например Cloudflare Access.", - "Please use this option carefully!": "Пожалуйста, используйте с осторожностью.", + "Please use this option carefully!": "Пожалуйста, используйте с осторожностью!", "Logout": "Выйти", "Leave": "Отмена", "I understand, please disable": "Я понимаю, всё равно отключить", @@ -156,7 +156,7 @@ "Options": "Опции", "Keep both": "Не проверять", "Tags": "Теги", - "Add New below or Select...": "Добавить новый или выбрать...", + "Add New below or Select...": "Добавить новый или выбрать…", "Tag with this name already exist.": "Такой тег уже существует.", "Tag with this value already exist.": "Тег с таким значением уже существует.", "color": "цвет", @@ -169,7 +169,7 @@ "Indigo": "Индиго", "Purple": "Пурпурный", "Pink": "Розовый", - "Search...": "Поиск...", + "Search...": "Поиск…", "Avg. Ping": "Среднее значение пинга", "Avg. Response": "Среднее время ответа", "Entry Page": "Главная страница", @@ -233,12 +233,12 @@ "smtpCC": "Копия", "smtpBCC": "Скрытая копия", "Discord Webhook URL": "Discord вебхук URL", - "wayToGetDiscordURL": "Вы можете создать его в Параметрах сервера -> Интеграции -> Создать вебхук", + "wayToGetDiscordURL": "Вы можете создать его в \"Настройки -> Интеграции -> Создать Вебхук\"", "Bot Display Name": "Отображаемое имя бота", "Prefix Custom Message": "Свой префикс сообщения", - "Hello @everyone is...": "Привет {'@'}everyone это...", + "Hello @everyone is...": "Привет {'@'} всем это…", "Webhook URL": "URL вебхука", - "wayToGetTeamsURL": "Как создать URL вебхука вы можете узнать здесь - {0}.", + "wayToGetTeamsURL": "Как создать URL Вебхука вы можете узнать здесь - {0}.", "Number": "Номер", "Recipients": "Получатели", "needSignalAPI": "Вам необходим клиент Signal с поддержкой REST API.", @@ -270,7 +270,7 @@ "octopushPhoneNumber": "Номер телефона (межд. формат, например: +79831234567) ", "octopushSMSSender": "Имя отправителя SMS: 3-11 символов алвафита, цифр и пробелов (a-zA-Z0-9)", "LunaSea Device ID": "ID устройства LunaSea", - "Apprise URL": "Apprise URL", + "Apprise URL": "Ссылка Уведомления", "Example:": "Пример: {0}", "Read more:": "Подробнее: {0}", "Status:": "Статус: {0}", @@ -286,7 +286,7 @@ "Messaging API": "API сообщений", "wayToGetLineChannelToken": "Сначала зайдите в {0}, создайте провайдера и канал (API сообщений), затем вы сможете получить токен доступа канала и ID пользователя из вышеупомянутых пунктов меню.", "Icon URL": "URL иконки", - "aboutIconURL": "Вы можете предоставить ссылку на иконку в поле \"URL иконки\" чтобы переопределить картинку профиля по умолчанию. Не используется, если задана иконка Emoji.", + "aboutIconURL": "Вы можете вставить ссылку на иконку в поле \"URL иконки\" чтобы изменить картинку профиля по умолчанию. Не используется, если задана иконка Emoji.", "aboutMattermostChannelName": "Вы можете переопределить канал по умолчанию, в который вебхук пишет, введя имя канала в поле \"Имя канала\". Это необходимо включить в настройках вебхука Mattermost. Например: #other-channel", "matrix": "Matrix", "promosmsTypeEco": "SMS ECO - дёшево и медленно, часто перегружен. Только для получателей из Польши.", @@ -315,8 +315,8 @@ "Certificate Chain": "Цепочка сертификатов", "Valid": "Действительный", "Hide Tags": "Скрыть тэги", - "Title": "Название инцидента:", - "Content": "Содержание инцидента:", + "Title": "Название инцидента", + "Content": "Содержание инцидента", "Post": "Опубликовать", "Cancel": "Отмена", "Created": "Создано", @@ -327,7 +327,7 @@ "6h": "6 часов", "24h": "24 часа", "1w": "1 неделя", - "No monitors available.": "Нет доступных мониторов", + "No monitors available.": "Нет доступных мониторов.", "Add one": "Добавить новый", "Backup": "Резервная копия", "Security": "Безопасность", @@ -363,8 +363,8 @@ "Done": "Готово", "Info": "Инфо", "Steam API Key": "Steam API-Ключ", - "Pick a RR-Type...": "Выберите RR-Тип...", - "Pick Accepted Status Codes...": "Выберите принятые коды состояния...", + "Pick a RR-Type...": "Выберите RR-Тип…", + "Pick Accepted Status Codes...": "Выберите принятые коды состояния…", "Default": "По умолчанию", "Please input title and content": "Пожалуйста, введите название и содержание", "Last Updated": "Последнее Обновление", @@ -417,7 +417,7 @@ "Bark Group": "Bark Group", "Bark Sound": "Bark Sound", "WebHookUrl": "WebHookUrl", - "SecretKey": "SecretKey", + "SecretKey": "Секретный Ключ", "For safety, must use secret key": "В целях безопасности необходимо использовать секретный ключ", "Device Token": "Токен устройства", "Platform": "Платформа", @@ -556,7 +556,7 @@ "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.", + "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:": "Тип события:", @@ -592,8 +592,8 @@ "Affected Monitors": "Затронутые мониторы", "Start of maintenance": "Начало обслуживания", "All Status Pages": "Все страницы статусов", - "Select status pages...": "Выберите страницу статуса...", - "resendEveryXTimes": "Повторная отправка каждые {0} раз", + "Select status pages...": "Выберите страницу статуса…", + "resendEveryXTimes": "Повтор каждые {0} раз", "resendDisabled": "Повторная отправка отключена", "deleteMaintenanceMsg": "Вы действительно хотите удалить это обслуживание?", "critical": "критично", @@ -619,9 +619,51 @@ "weekdayShortTue": "Вт", "dayOfWeek": "День недели", "confirmDeleteTagMsg": "Вы уверены, что хотите удалить этот тег? Мониторы с этим тегом удалены не будут.", - "loadingError": "Не удаётся получить данные, пожалуйста попробуйте позже.", + "loadingError": "Невозможно получить данные, пожалуйста попробуйте позже.", "Packet Size": "Размер пакета", "warningTimezone": "Используется часовой пояс сервера", "weekdayShortMon": "Пн", - "ZohoCliq": "ZohoCliq" + "ZohoCliq": "ZohoCliq", + "strategyManual": "Активен/Неактивен Вручную", + "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": "Отключить", + "Single Maintenance Window": "Единое Окно Обслуживания", + "Schedule Maintenance": "Запланировать обслуживание", + "Date and Time": "Дата и Время", + "DateTime Range": "Промежуток Даты и Времени", + "uninstalling": "Удаляется", + "dataRetentionTimeError": "Период хранения должен быть равен 0 или больше", + "infiniteRetention": "Установите 0 для бессрочного хранения.", + "enableGRPCTls": "Разрешить отправлять gRPC запрос через TLS соединение", + "Free Mobile API Key": "API ключ Free Mobile", + "Edit Tag": "Редактировать тэг", + "webhookAdditionalHeadersDesc": "Устанавливает дополнительные заголовки, отправляемые с помощью веб-хука.", + "topic": "Тема", + "Customize": "Персонализировать", + "Custom Footer": "Пользовательский footer", + "dnsCacheDescription": "Это может не работать на некоторых IPv6 окружениях, отключите это, если у вас возникают проблемы.", + "confirmUninstallPlugin": "Вы уверены, что хотите удалить этот плагин?", + "plugin": "Плагин | Плагины", + "install": "Установить", + "installing": "Устанавливается", + "uninstall": "Удалить", + "Recurring": "Повторяющийся", + "recurringInterval": "Интервал" } diff --git a/src/lang/uk-UA.json b/src/lang/uk-UA.json index ad8e6936..9a63cfe0 100644 --- a/src/lang/uk-UA.json +++ b/src/lang/uk-UA.json @@ -156,7 +156,7 @@ "Options": "Опції", "Keep both": "Не перевіряти", "Tags": "Теги", - "Add New below or Select...": "Додати новий або вибрати...", + "Add New below or Select...": "Додати новий або вибрати…", "Tag with this name already exist.": "Такий тег вже існує.", "Tag with this value already exist.": "Тег із таким значенням вже існує.", "color": "колір", @@ -169,7 +169,7 @@ "Indigo": "Індиго", "Purple": "Пурпурний", "Pink": "Рожевий", - "Search...": "Пошук...", + "Search...": "Пошук…", "Avg. Ping": "Середній пінг", "Avg. Response": "Середній час відповіді", "Entry Page": "Головна сторінка", @@ -362,8 +362,8 @@ "Done": "Готово", "Info": "Інфо", "Steam API Key": "Steam API-Ключ", - "Pick a RR-Type...": "Виберіть RR-тип...", - "Pick Accepted Status Codes...": "Виберіть прийняті коди стану...", + "Pick a RR-Type...": "Виберіть RR-тип…", + "Pick Accepted Status Codes...": "Виберіть прийняті коди стану…", "Default": "За замовчуванням", "Please input title and content": "Будь ласка, введіть назву та зміст", "Last Updated": "Останнє Оновлення", @@ -555,5 +555,13 @@ "Pick Affected Monitors...": "Виберіть задіяні монітори…", "statusMaintenance": "Обслуговування", "Maintenance": "Обслуговування", - "General Monitor Type": "Основний моніторинг" + "General Monitor Type": "Основний моніторинг", + "error": "Помилка", + "webhookAdditionalHeadersTitle": "Додаткові заголовки", + "webhookAdditionalHeadersDesc": "Задати додаткові заголовки, що за допомогою вебхука.", + "critical": "Критичний", + "Custom": "Нестандартний", + "successMessage": "Повідомлення про успіх", + "Customize": "Налаштувати", + "topic": "Тема" } From b49e3b65c122759967e954014178522849f7c6ec Mon Sep 17 00:00:00 2001 From: Jonne Saloranta Date: Mon, 13 Feb 2023 08:59:27 +0000 Subject: [PATCH 258/296] Translated using Weblate (Finnish) Currently translated at 15.2% (106 of 697 strings) Added translation using Weblate (Finnish) Co-authored-by: Jonne Saloranta Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/fi/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/fi.json | 108 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 src/lang/fi.json diff --git a/src/lang/fi.json b/src/lang/fi.json new file mode 100644 index 00000000..193a95c8 --- /dev/null +++ b/src/lang/fi.json @@ -0,0 +1,108 @@ +{ + "Dashboard": "Kojetaulu", + "Help": "Apua", + "New Update": "Uusi Päivitys", + "Language": "Kieli", + "Appearance": "Ulkonäkö", + "Theme": "Teema", + "General": "Yleinen", + "Game": "Peli", + "Version": "Versio", + "List": "Lista", + "Add": "Lisää", + "Add New Monitor": "Lisää uusi seurain", + "Quick Stats": "Nopeat tilastot", + "Up": "Ylös", + "Down": "Alas", + "Pending": "Odottaa", + "statusMaintenance": "Huolto", + "Maintenance": "Huolto", + "Unknown": "Tuntematon", + "General Monitor Type": "Yleinen seuranta tyyppi", + "Passive Monitor Type": "Passiivinen seuranta tyyppi", + "markdownSupported": "Markdown-syntaksi tuettu", + "pauseDashboardHome": "Tauko", + "Pause": "Tauko", + "Name": "Nimi", + "Status": "Tila", + "DateTime": "Päivämäärä", + "Message": "Viesti", + "No important events": "Ei tärkeitä tapahtumia", + "Resume": "Jatka", + "Edit": "Muokkaa", + "Delete": "Poista", + "Current": "Nykyinen", + "Uptime": "Päälläoloaika", + "Monitor": "Seurain | Seuraimet", + "day": "Päivä | Päivää", + "-day": "-päivä", + "hour": "Tunti", + "-hour": "-tunti", + "Response": "Vastaus", + "Ping": "Signaali", + "Monitor Type": "Seurain tyyppi", + "Keyword": "Avainsana", + "URL": "URL", + "Hostname": "Isäntänimi", + "Heartbeat Interval": "Sydämensyke intervalli", + "Retries": "Uusintayrityksiä", + "Resend Notification if Down X times consequently": "Uudelleen lähetä ilmoitus jos ei vastausta X määrä peräkkäin", + "Advanced": "Edistynyt", + "checkEverySecond": "Tarkista jokainen {0} sekuntti", + "retryCheckEverySecond": "Yritä uudelleen jokainen {0} sekuntti", + "resendEveryXTimes": "Uudelleen lähetä jokainen {0} kerta", + "ignoreTLSError": "Älä huomioi TLS/SSL virhettä HTTPS nettisivuilla", + "upsideDownModeDescription": "Pyöräytä tila ylösalaisin. Jos palvelu on saavutettavissa, merkitse se SAMMUNEEKSI.", + "maxRedirectDescription": "Maksimi määrä uudelleen ohjauksia joita seurata. Aseta 0 estääksesi uudelleenohjaukset.", + "Upside Down Mode": "Ylösalaisin-moodi", + "Max. Redirects": "Maksimi määrä uudelleenohjauksia", + "Accepted Status Codes": "Sallitut tila koodit", + "Push URL": "Työnnä URL", + "Save": "Tallenna", + "Notifications": "Ilmoitukset", + "Setup Notification": "Määritä ilmoitukset", + "Light": "Vaalea", + "Dark": "Tumma", + "Auto": "Automaattinen", + "Theme - Heartbeat Bar": "Teema - Sydänlyönti palkki", + "Normal": "Normaali", + "Bottom": "Pohja", + "None": "Ei mitään", + "Timezone": "Aikavyöhyke", + "Search Engine Visibility": "Hakukone näkyvyys", + "Allow indexing": "Salli indeksointi", + "Change Password": "Vaihda salasana", + "Current Password": "Nykyinen salasana", + "New Password": "Uusi salasana", + "Repeat New Password": "Toista uusi salasana", + "Update Password": "Päivätä salasana", + "Disable Auth": "Poista todennus käytöstä", + "Enable Auth": "Ota todennus käyttöön", + "Logout": "Kirjaudu ulos", + "Leave": "Poistu", + "I understand, please disable": "Ymmärrän, poista käytöstä", + "Confirm": "Hyväksy", + "Yes": "Kyllä", + "No": "Ei", + "Username": "Käyttäjänimi", + "Password": "Salasana", + "Login": "Kirjaudu", + "add one": "Lisää yksi", + "Notification Type": "Ilmoitus tyyppi", + "Email": "Sähköposti", + "Test": "Testi", + "Certificate Info": "Sertifikaatti tiedot", + "Settings": "Asetukset", + "Check Update On GitHub": "Tarkista päivitys GitHub:ssa", + "Specific Monitor Type": "Tietty seuranta tyyppi", + "Cert Exp.": "Sertifikaatti vanh.", + "Friendly Name": "Ystävällinen nimi", + "Port": "Portti", + "Heartbeat Retry Interval": "Sydämensyke uudelleen yritys intervalli", + "resendDisabled": "Uudelleen lähetys poissa käytöstä", + "retriesDescription": "Maksimi määrä uudelleen yrityksiä ennen kuin palvelu merkitään sammuneeksi ja ilmoitus lähetetään", + "Discourage search engines from indexing site": "Estä hakukoneita indeksoimasta sivua", + "disableauth.message1": "Oletko varma että haluat poistaa todennuksen käytöstä?", + "Please use this option carefully!": "Käytä tätä vaihtoehtoa varoen!", + "Remember me": "Muista minut" +} From aeea1ff03f6e6544780413665185be121aac02de Mon Sep 17 00:00:00 2001 From: aditya wahyudi Date: Mon, 13 Feb 2023 08:59:28 +0000 Subject: [PATCH 259/296] Translated using Weblate (Indonesian) Currently translated at 83.3% (581 of 697 strings) Co-authored-by: aditya wahyudi Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/id/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/id-ID.json | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/lang/id-ID.json b/src/lang/id-ID.json index 220567f9..2538b977 100644 --- a/src/lang/id-ID.json +++ b/src/lang/id-ID.json @@ -1,7 +1,7 @@ { "languageName": "Bahasa Indonesia (Indonesian)", - "checkEverySecond": "Cek Setiap {0} detik.", - "retryCheckEverySecond": "Coba lagi setiap {0} detik.", + "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", @@ -71,9 +71,9 @@ "URL": "URL", "Hostname": "Hostname", "Port": "Port", - "Heartbeat Interval": "Jarak Waktu Heartbeat ", + "Heartbeat Interval": "Jarak Waktu Heartbeat", "Retries": "Coba lagi", - "Heartbeat Retry Interval": "Jarak Waktu Heartbeat Mencoba kembali ", + "Heartbeat Retry Interval": "Jeda Pengulangan Heartbeat", "Resend Notification if Down X times consequently": "Kirim Ulang Notifikasi jika Tidak Aktif X kali", "Advanced": "Tingkat Lanjut", "Upside Down Mode": "Mode Terbalik", @@ -583,5 +583,12 @@ "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.", "Help": "Bantuan", - "Game": "Gim/Permainan" + "Game": "Gim/Permainan", + "markdownSupported": "Dukungan sintaks markdown", + "statusMaintenance": "Pemeliharaan", + "Maintenance": "Pemeliharaan", + "General Monitor Type": "Tipe Monitor Umum", + "Passive Monitor Type": "Tipe Monitor Pasif", + "Specific Monitor Type": "Tipe Monitor Spesifik", + "Monitor": "Monitor" } From 1bcca60574de15e883878645bcd2ebe9621f2286 Mon Sep 17 00:00:00 2001 From: Nelson Chan Date: Mon, 13 Feb 2023 08:59:28 +0000 Subject: [PATCH 260/296] Translated using Weblate (Chinese (Traditional, Hong Kong)) Currently translated at 93.9% (655 of 697 strings) Co-authored-by: Nelson Chan Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/zh_Hant_HK/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/zh-HK.json | 104 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 93 insertions(+), 11 deletions(-) diff --git a/src/lang/zh-HK.json b/src/lang/zh-HK.json index 7069f95b..abf49727 100644 --- a/src/lang/zh-HK.json +++ b/src/lang/zh-HK.json @@ -102,9 +102,9 @@ "deleteNotificationMsg": "是否確定刪除這個通知設定?如監測器啟用了這個通知,將會收不到通知。", "Resolver Server": "DNS 伺服器", "Resource Record Type": "DNS 記錄類型", - "resolverserverDescription": "預設值為 Cloudflare DNS 伺服器,你可以轉用其他 DNS 伺服器。", + "resolverserverDescription": "預設為 Cloudflare DNS 伺服器,你可以轉用其他 DNS 伺服器。", "rrtypeDescription": "請選擇 DNS 記錄類型", - "pauseMonitorMsg": "是否確定暫停?", + "pauseMonitorMsg": "是否確定要暫停?", "Last Result": "最後結果", "Create your admin account": "建立管理員帳號", "Repeat Password": "重複密碼", @@ -128,10 +128,10 @@ "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?", + "twoFAVerifyLabel": "請輸入 Token 以確認 2FA:", + "tokenValidSettingsMsg": "Token 有效!您現在可以儲存 2FA 設定。", + "confirmEnableTwoFAMsg": "您確定要啟用 2FA 嗎?", + "confirmDisableTwoFAMsg": "您確定要停用 2FA 嗎?", "Apply on all existing monitors": "套用至目前所有監測器", "Verify Token": "驗証 Token", "Setup 2FA": "設定 2FA", @@ -145,8 +145,8 @@ "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.", + "importHandleDescription": "\"略過已存在的\" 會跳過所有相同名稱的監測器或通知。 '覆蓋' 將刪除所有現有的監測器及通知。", + "confirmImportMsg": "您確定要匯入備份嗎?請確認你已選擇正確的匯入設定。", "Heartbeat Retry Interval": "Heartbeat Retry Interval", "Import Backup": "匯入備份", "Export Backup": "匯出備份", @@ -360,7 +360,7 @@ "smtpDkimDesc": "請參考 Nodemailer DKIM {0} 使用方式。", "documentation": "文件", "smtpDkimDomain": "網域名稱", - "smtpDkimKeySelector": "DKIM 選取器", + "smtpDkimKeySelector": "Key Selector", "smtpDkimPrivateKey": "私密金鑰", "smtpDkimHashAlgo": "雜湊演算法 (選填)", "smtpDkimheaderFieldNames": "要簽署的郵件標頭 (選填)", @@ -397,7 +397,7 @@ "affectedStatusPages": "在已選取的狀態頁中顯示此維護訊息", "Primary Base URL": "主要 Base URL", "Passive Monitor Type": "被動監測器類型", - "Resend Notification if Down X times consequently": "若 X 次心跳皆離線,重新傳送通知", + "Resend Notification if Down X times consequently": "每 X 次心跳皆離線,重新傳送通知", "Game": "遊戲", "Specific Monitor Type": "特定監測器類型", "Monitor": "監測器 | 監測器", @@ -574,5 +574,87 @@ "Proxy": "Proxy", "backupOutdatedWarning": "過時:由於備份功能未顧及新功能的增加,因此備份功能無法產生或復原完整的備份。", "Optional": "可選填", - "markdownSupported": "支援 Markdown" + "markdownSupported": "支援 Markdown", + "Custom Monitor Type": "自訂監測器", + "Google Analytics ID": "Google Analytics ID", + "Learn More": "了解更多", + "Server Address": "Server 地址", + "Edit Tag": "編輯標籤", + "confirmDeleteTagMsg": "你確定你要刪除此標籤?相關的監測器不會被刪除。", + "pushoversounds pushover": "Pushover (預設)", + "pushoversounds tugboat": "Tug Boat", + "pushyToken": "裝置 Token", + "Proto Content": "Proto 內容", + "onebotHttpAddress": "OneBot HTTP 地址", + "HomeAssistant": "Home Assistant", + "Leave blank to use a shared sender number.": "留空以使用平台共享的發送人號碼。", + "auto acknowledged": "自動標記已讀", + "wayToGetPagerDutyKey": "您可以前往 Service -> Service Directory -> (Select a service) -> Integrations -> Add integration 以取得。您可以搜尋 \"Events API V2\"。詳細資訊 {0}", + "Kook": "Kook", + "wayToGetKookBotToken": "到 {0} 創建應用並取得 Bot Token", + "grpcMethodDescription": "Method 名稱將被轉換成 cammelCase 命名,如 sayHello、check 等。", + "deleteMaintenanceMsg": "您確定要刪除此維護嗎?", + "dnsPortDescription": "DNS 伺服器 port。預設為 53。您可以隨時變更 port。", + "atLeastOneMonitor": "選擇至少一個受影響的監測器", + "endpoint": "endpoint", + "octopushAPIKey": "在控制台的 HTTP API 憑證取得的 \"API Key\"", + "octopushLogin": "在控制台的 HTTP API 憑證取得的 \"Login\"", + "promosmsLogin": "API 登入名稱", + "promosmsPassword": "API 密碼", + "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 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", + "Guild ID": "Guild ID", + "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 方式", + "onebotGroupMessage": "群組", + "onebotMessageType": "OneBot 訊息類型", + "ntfy Topic": "ntfy Topic", + "Legacy Octopush-DM": "舊版 Octopush-DM", + "Octopush API Version": "Octopush API 版本", + "From Name/Number": "發送人名稱/號碼", + "Recipient Number": "收件人號碼", + "smseaglePriority": "訊息優先度 (0-9,預設 = 0)", + "smseagleEncoding": "以 Unicode 傳送", + "smseagleUrl": "您的 SMSEagle 裝置 URL", + "smseagleToken": "API 存取 Token", + "smseagleRecipient": "收件者 (以逗號分隔)", + "smseagleRecipientType": "收件者類型", + "smseagleContact": "聯絡人名稱", + "smseagleGroup": "群組名稱", + "smseagleTo": "電話號碼", + "smseagle": "SMSEagle", + "auto resolve": "自動解決", + "do nothing": "不進行任何操作", + "Auto resolve or acknowledged": "自動解決或標記已讀", + "Integration URL": "Integration URL", + "Integration Key": "Integration Key", + "wayToGetClickSendSMSToken": "您可以到 {0} 取得 API 使用者名稱和 API Key。", + "PushDeer Key": "PushDeer Key", + "onebotSafetyTips": "為了安全起見,必須設置存取 Token", + "onebotUserOrGroupId": "群組/使用者 ID", + "onebotPrivateMessage": "私人" } From 76bdb62a5b2a3f1dd53444a860615d1115f27d80 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Mon, 13 Feb 2023 17:23:55 +0800 Subject: [PATCH 261/296] Update to 1.20.0 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 5093e5d6..5d4652d6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "uptime-kuma", - "version": "1.20.0-beta.0", + "version": "1.20.0", "license": "MIT", "repository": { "type": "git", @@ -39,7 +39,7 @@ "build-docker-nightly-amd64": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:nightly-amd64 --target nightly . --push --progress plain", "build-docker-pr-test": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64 -t louislam/uptime-kuma:pr-test --target pr-test . --push", "upload-artifacts": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg VERSION --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain", - "setup": "git checkout 1.19.6 && npm ci --production && npm run download-dist", + "setup": "git checkout 1.20.0 && npm ci --production && npm run download-dist", "download-dist": "node extra/download-dist.js", "mark-as-nightly": "node extra/mark-as-nightly.js", "reset-password": "node extra/reset-password.js", From 5bf00fbe0b754575f317211867edb0472e34a553 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Mon, 13 Feb 2023 17:40:25 +0800 Subject: [PATCH 262/296] Fix deploy-demo-server.js do not download the dist --- extra/deploy-demo-server.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/extra/deploy-demo-server.js b/extra/deploy-demo-server.js index 210270f2..d5a517f9 100644 --- a/extra/deploy-demo-server.js +++ b/extra/deploy-demo-server.js @@ -33,6 +33,11 @@ const prompt = (query) => new Promise((resolve) => rl.question(query, resolve)); }); console.log(result.stdout + result.stderr); + result = await ssh.execCommand("npm run download-dist", { + cwd, + }); + console.log(result.stdout + result.stderr); + result = await ssh.execCommand("npm install --production", { cwd, }); From 6048bc5dfc253f6cbd411170e6bf035ee1124dad Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Tue, 14 Feb 2023 00:46:22 +0800 Subject: [PATCH 263/296] Revert #2083's change of healthcheck.js --- extra/healthcheck.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extra/healthcheck.js b/extra/healthcheck.js index 40691418..9b95cf26 100644 --- a/extra/healthcheck.js +++ b/extra/healthcheck.js @@ -19,17 +19,17 @@ if (sslKey && sslCert) { // If host is omitted, the server will accept connections on the unspecified IPv6 address (::) when IPv6 is available and the unspecified IPv4 address (0.0.0.0) otherwise. // Dual-stack support for (::) -let hostname = process.env.UPTIME_KUMA_SERVICE_HOST || process.env.UPTIME_KUMA_HOST || "::"; +let hostname = process.env.UPTIME_KUMA_HOST; // Also read HOST if not *BSD, as HOST is a system environment variable in FreeBSD if (!hostname && !FBSD) { hostname = process.env.HOST; } -const port = parseInt(process.env.UPTIME_KUMA_SERVICE_PORT || process.env.UPTIME_KUMA_PORT || process.env.PORT || 3001); +const port = parseInt(process.env.UPTIME_KUMA_PORT || process.env.PORT || 3001); let options = { - host: hostname, + host: hostname || "127.0.0.1", port: port, timeout: 28 * 1000, }; From d9316f43ac26ff757680152aab5187959cf6b119 Mon Sep 17 00:00:00 2001 From: Nelson Chan Date: Tue, 14 Feb 2023 08:51:55 +0800 Subject: [PATCH 264/296] Update README: Add npm as requirement (#2773) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index cdefe6a0..a67007ce 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,7 @@ Uptime Kuma is now running on http://localhost:3001 Required Tools: - [Node.js](https://nodejs.org/en/download/) >= 14 +- [npm](https://docs.npmjs.com/cli/) >= 7 - [Git](https://git-scm.com/downloads) - [pm2](https://pm2.keymetrics.io/) - For running Uptime Kuma in the background From c19dcdba44002f74c0aa1451f511df18fec24cfd Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Tue, 14 Feb 2023 12:31:19 +0800 Subject: [PATCH 265/296] Add reminder to keep healthcheck.js --- extra/healthcheck.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/extra/healthcheck.js b/extra/healthcheck.js index 9b95cf26..5e06c212 100644 --- a/extra/healthcheck.js +++ b/extra/healthcheck.js @@ -1,4 +1,8 @@ /* + * ⚠️ ⚠️ ⚠️ ⚠️ Due to the weird issue in Portainer that the healthcheck script is still pointing to this script for unknown reason. + * IT CANNOT BE DROPPED, even though it looks like it is not used. + * See more: https://github.com/louislam/uptime-kuma/issues/2774#issuecomment-1429092359 + * * ⚠️ Deprecated: Changed to healthcheck.go, it will be deleted in the future. * This script should be run after a period of time (180s), because the server may need some time to prepare. */ From cd18b96f69a24fc7ea98306d6f5867c9694e0dd3 Mon Sep 17 00:00:00 2001 From: Matthew Nickson Date: Tue, 14 Feb 2023 16:43:40 +0000 Subject: [PATCH 266/296] Added check to ensure backup exists when restoring (#2779) A check to ensure that the backup database exists before deleting the current database. Fixes #2778 Signed-off-by: Matthew Nickson --- server/database.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/server/database.js b/server/database.js index 19c09a00..449f16d5 100644 --- a/server/database.js +++ b/server/database.js @@ -496,6 +496,16 @@ class Database { const shmPath = Database.path + "-shm"; const walPath = Database.path + "-wal"; + // Make sure we have a backup to restore before deleting old db + if ( + !fs.existsSync(this.backupPath) + && !fs.existsSync(shmPath) + && !fs.existsSync(walPath) + ) { + log.error("db", "Backup file not found! Leaving database in failed state."); + process.exit(1); + } + // Delete patch failed db try { if (fs.existsSync(Database.path)) { From aad087caac48d5615676531d64de8bd4225406ac Mon Sep 17 00:00:00 2001 From: Jonne Saloranta <72470168+JonneSaloranta@users.noreply.github.com> Date: Tue, 14 Feb 2023 20:34:00 +0200 Subject: [PATCH 267/296] Added Finnish language translation (#2770) * Added Finnish language translation * Changed fi-FI to fi --- src/i18n.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/i18n.js b/src/i18n.js index f57408e4..c0c07797 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -15,6 +15,7 @@ const languageList = { "fa": "Farsi", "pt-PT": "Português (Portugal)", "pt-BR": "Português (Brasileiro)", + "fi": "Suomi", "fr-FR": "Français (France)", "hu": "Magyar", "hr-HR": "Hrvatski", From d1175ff471ff814e652f48cb97132dae51939037 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Wed, 15 Feb 2023 02:50:49 +0800 Subject: [PATCH 268/296] Fix #2777 --- server/util-server.js | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/server/util-server.js b/server/util-server.js index edce2890..e099f673 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -292,14 +292,23 @@ exports.postgresQuery = function (connectionString, query) { client.end(); } else { // Connected here - client.query(query, (err, res) => { - if (err) { - reject(err); - } else { - resolve(res); + try { + // No query provided by user, use SELECT 1 + if (!query || (typeof query === "string" && query.trim() === "")) { + query = "SELECT 1"; } - client.end(); - }); + + client.query(query, (err, res) => { + if (err) { + reject(err); + } else { + resolve(res); + } + client.end(); + }); + } catch (e) { + reject(e); + } } }); From 7d363ea1469bb651de4ffaf641d8053fa98629be Mon Sep 17 00:00:00 2001 From: darkslash#2558 Date: Tue, 14 Feb 2023 19:08:51 +0000 Subject: [PATCH 269/296] Translated using Weblate (Japanese) Currently translated at 28.1% (196 of 697 strings) Added translation using Weblate (Chinese (Literary)) Added translation using Weblate (Mongolian) Co-authored-by: darkslash#2558 Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/ja/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/ja.json | 23 ++++++++++++++++++++++- src/lang/lzh.json | 1 + src/lang/mn.json | 1 + 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 src/lang/lzh.json create mode 100644 src/lang/mn.json diff --git a/src/lang/ja.json b/src/lang/ja.json index 3de54074..06f0d3c3 100644 --- a/src/lang/ja.json +++ b/src/lang/ja.json @@ -176,5 +176,26 @@ "Gateway Type": "ゲートウェイの種類", "Game": "ゲーム", "Help": "ヘルプ", - "Maintenance": "メンテナンス" + "Maintenance": "メンテナンス", + "resendDisabled": "再送信不可", + "Schedule maintenance": "メンテナンスのスケジュール", + "Affected Monitors": "影響を受けるモニター", + "Pick Affected Monitors...": "影響を受けるモニターを選択…", + "Start of maintenance": "メンテナンス開始", + "General Monitor Type": "汎用モニタータイプ", + "resendEveryXTimes": "{0}回ごとに再送信", + "markdownSupported": "マークダウン構文がサポートされています", + "All Status Pages": "すべてのステータス ページ", + "Monitor": "モニター |モニター", + "Resend Notification if Down X times consequently": "ダウンX回連続で通知再送", + "Push URL": "プッシュ URL", + "needPushEvery": "{0} 秒ごとにこの URL を呼び出す必要があります。", + "pushOptionalParams": "オプションのパラメーター: {0}", + "disableauth.message1": "認証を無効にしてもよろしいですか?", + "disableauth.message2": "これは、Cloudflare Access、Authelia、またはその他の認証メカニズムなど、Uptime Kuma の前にサードパーティ認証を実装するシナリオ向けに設計されています。", + "Please use this option carefully!": "このオプションは慎重に使用してください。", + "Primary Base URL": "プライマリ ベース URL", + "statusMaintenance": "メンテナンス", + "Passive Monitor Type": "パッシブモニタータイプ", + "Specific Monitor Type": "特定のモニターの種類" } diff --git a/src/lang/lzh.json b/src/lang/lzh.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/src/lang/lzh.json @@ -0,0 +1 @@ +{} diff --git a/src/lang/mn.json b/src/lang/mn.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/src/lang/mn.json @@ -0,0 +1 @@ +{} From a518188e6f9dcb87c49382ed4fe3b4c68609c3c3 Mon Sep 17 00:00:00 2001 From: victorpahuus Date: Tue, 14 Feb 2023 19:08:52 +0000 Subject: [PATCH 270/296] Translated using Weblate (Danish) Currently translated at 62.9% (439 of 697 strings) Co-authored-by: victorpahuus Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/da/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/da-DK.json | 90 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 88 insertions(+), 2 deletions(-) diff --git a/src/lang/da-DK.json b/src/lang/da-DK.json index 9d6f0574..1b0fe210 100644 --- a/src/lang/da-DK.json +++ b/src/lang/da-DK.json @@ -29,7 +29,7 @@ "Delete": "Slet", "Current": "Aktuelt", "Uptime": "Oppetid", - "Cert Exp.": "Certifikatets udløb", + "Cert Exp.": "Certifikatets udløb.", "day": "Dag | Dage", "-day": "-Dage", "hour": "Timer", @@ -358,5 +358,91 @@ "High": "Høj", "Recipient Number": "Modtager Nummer", "From Name/Number": "Fra Navn/Nummer", - "Help": "Hjælp" + "Help": "Hjælp", + "Please use this option carefully!": "Brug venligst denne funktion med forsigtighed!", + "disableauth.message1": "Er du sikker på, at du vil deaktivere authentication?", + "successMessage": "Succesmeddelelse", + "error": "fejl", + "critical": "kritisk", + "Customize": "Tilpas", + "Custom Footer": "Brugerdefineret Footer", + "Custom CSS": "Brugerdefineret CSS", + "deleteStatusPageMsg": "Er du sikker på, at du vil slette denne statusside?", + "Proxies": "Proxies", + "default": "Standard", + "enabled": "Aktiveret", + "setAsDefault": "Indstil som standard", + "Certificate Chain": "Certificate Chain", + "Days Remaining:": "Dage tilbage:", + "No status pages": "Ingen statussider", + "Proxy": "Proxy", + "default: notify all devices": "standard: underretter alle enheder", + "Automations can optionally be triggered in Home Assistant:": "Automatiseringer kan valgfrit udløses i Home Assistant:", + "Trigger type:": "Trigger type:", + "Event type:": "Event type:", + "Event data:": "Event data:", + "Frontend Version": "Frontend Version", + "or": "eller", + "Notification Service": "Notifikationstjeneste", + "Domain": "Domæne", + "Google Analytics ID": "Google Analytics ID", + "Edit Tag": "Ændre Tag", + "Learn More": "Lær mere", + "Schedule maintenance": "Planlæg vedligeholdelse", + "Invalid": "Ugyldig", + "User": "Bruger", + "Installed": "Installeret", + "Not installed": "Ikke installeret", + "Running": "Køre", + "Not running": "Køre ikke", + "Remove Token": "Fjern Token", + "Start": "Start", + "Stop": "Stop", + "Add New Status Page": "Tilføj ny statusside", + "Next": "Næste", + "No Proxy": "Ingen proxy", + "New Status Page": "Ny statusside", + "Page Not Found": "Side blev ikke fundet", + "Reverse Proxy": "Reverse Proxy", + "Backup": "Backup", + "About": "Om", + "cloudflareWebsite": "Cloudflare hjemmeside", + "Message:": "Besked:", + "HTTP Headers": "HTTP Headers", + "Trust Proxy": "Trust Proxy", + "For example: nginx, Apache and Traefik.": "For eksempel: nginx, Apache og Traefik.", + "Please read": "Læs venligst", + "Show Powered By": "Vis Powered By", + "Domain Names": "Domænenavne", + "signedInDisp": "Logget ind som {0}", + "Certificate Expiry Notification": "Meddelelse om udløbsdato for certifikatet", + "API Username": "API Brugernavn", + "API Key": "API Key", + "Steam Game Server": "Steam Game Server", + "What you can try:": "Hvad du kan prøve:", + "Go back to the previous page.": "Gå tilbage til forrige side.", + "Coming Soon": "Kommer snart", + "settingsCertificateExpiry": "Udløb af TLS-certifikat", + "Setup Docker Host": "Opsæt Docker Host", + "Connection Type": "Forbindelsestype", + "Docker Daemon": "Docker Daemon", + "socket": "Socket", + "tcp": "TCP / HTTP", + "Docker Container": "Docker Container", + "Container Name / ID": "Container Navn / ID", + "Packet Size": "Pakke størrelse", + "Home Assistant URL": "Home Assistant URL", + "Frontend Version do not match backend version!": "Frontend versionen stemmer ikke overens med backend versionen!", + "Optional": "Valgfri", + "HomeAssistant": "Home Assistant", + "disableauth.message2": "Den er beregnet til scenarier hvor du har tænkt dig at implementere tredjepartsgodkendelse foran Uptime Kuma, f.eks. Cloudflare Access, Authelia eller andre godkendelsesmekanismer.", + "deleteProxyMsg": "Er du sikker på, at du vil slette denne proxy for alle monitors?", + "Valid": "Gyldig", + "Don't know how to get the token? Please read the guide:": "Ved du ikke, hvordan du får fat i din Token? Læs venligst guiden:", + "Subject:": "Emne:", + "Footer Text": "Footer tekst", + "Using a Reverse Proxy?": "Bruger du en Reverse Proxy?", + "deleteDockerHostMsg": "Er du sikker på, at du vil slette denne docker host for alle monitors?", + "Docker Host": "Docker Host", + "Docker Hosts": "Docker Hosts" } From 379d54e5209913b31c3b66ac714e76e2854372d9 Mon Sep 17 00:00:00 2001 From: Denys Konovalov Date: Tue, 14 Feb 2023 19:08:52 +0000 Subject: [PATCH 271/296] Translated using Weblate (German) Currently translated at 100.0% (697 of 697 strings) Co-authored-by: Denys Konovalov Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/de/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/de-DE.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/lang/de-DE.json b/src/lang/de-DE.json index 2d4c0e30..a4081c4b 100644 --- a/src/lang/de-DE.json +++ b/src/lang/de-DE.json @@ -165,7 +165,7 @@ "Pink": "Pink", "Search...": "Suchen…", "Heartbeat Retry Interval": "Überprüfungsintervall", - "Resend Notification if Down X times consequently": "Benachrichtigung erneut senden, wenn Inaktiv X mal hintereinander", + "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", @@ -275,7 +275,7 @@ "Read more": "Weiterlesen", "appriseInstalled": "Apprise ist installiert.", "appriseNotInstalled": "Apprise ist nicht installiert. {0}", - "Access Token": "Access Token", + "Access Token": "Zugriffstoken", "Channel access token": "Channel access token", "Line Developers Console": "Zeile Entwickler Konsole", "lineDevConsoleTo": "Line Developers Console - {0}", @@ -553,9 +553,9 @@ "socket": "Socket", "tcp": "TCP / HTTP", "Docker Container": "Docker Container", - "Container Name / ID": "Container Name / ID", - "Docker Host": "Docker Host", - "Docker Hosts": "Docker Hosts", + "Container Name / ID": "Container-Bezeichnung / ID", + "Docker Host": "Docker-Host", + "Docker Hosts": "Docker-Hosts", "ntfy Topic": "ntfy Thema", "Domain": "Domain", "Workstation": "Workstation", @@ -574,7 +574,7 @@ "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": "Frontend-Version", "Frontend Version do not match backend version!": "Die Frontend Version stimmt nicht mit der backend version überein!", "Maintenance": "Wartung", "statusMaintenance": "Wartung", From 31fa074ffcf473fbd5e54159a685a4a36a74f594 Mon Sep 17 00:00:00 2001 From: Luiz Felipe Arcos Campos Date: Tue, 14 Feb 2023 19:08:52 +0000 Subject: [PATCH 272/296] Translated using Weblate (Portuguese (Brazil)) Currently translated at 38.8% (271 of 697 strings) Co-authored-by: Luiz Felipe Arcos Campos Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/pt_BR/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/pt-BR.json | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/lang/pt-BR.json b/src/lang/pt-BR.json index b7ebdbd4..56c8f4f4 100644 --- a/src/lang/pt-BR.json +++ b/src/lang/pt-BR.json @@ -249,7 +249,7 @@ "enabled": "Ativado", "setAsDefault": "Definir como padrão", "Primary Base URL": "URL base principal", - "Resend Notification if Down X times consequently": "Reenviar notificação se OFFLINE X vezes consecutivamente", + "Resend Notification if Down X times consequently": "Reenviar Notificação se OFFLINE X vezes consecutivamente", "pushOptionalParams": "Parâmetros opcionais: {0}", "webhookFormDataDesc": "{multipart} é bom para PHP. O JSON precisará ser analisado com {decodeFunction}", "HeadersInvalidFormat": "Os cabeçalhos da solicitação não são um JSON válidos: ", @@ -269,5 +269,16 @@ "Start of maintenance": "Iniciar manutenção", "All Status Pages": "Todas as Status Pages", "Method": "Método", - "General Monitor Type": "Tipo de monitoramento geral" + "General Monitor Type": "Tipo de monitoramento geral", + "markdownSupported": "Sintaxe Markdown suportada", + "emojiCheatSheet": "Folha de dicas de emojis: {0}", + "topic": "Tema", + "topicExplanation": "Tópico MQTT para monitorar", + "successMessageExplanation": "Mensagem MQTT que será considerada como sucesso", + "Content Type": "Tipo de Conteúdo", + "Shrink Database": "Encolher Banco de Dados", + "Content": "Conteúdo", + "Pick a RR-Type...": "Escolha um tipo RR…", + "Pick Accepted Status Codes...": "Escolha Códigos de Status Aceitos…", + "Pick Affected Monitors...": "Escolher Monitores Afetados…" } From 8afc55db4e659e5d9b402327f3061576dd5dde61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96mer=20Faruk=20Gen=C3=A7?= Date: Tue, 14 Feb 2023 19:08:52 +0000 Subject: [PATCH 273/296] Translated using Weblate (Turkish) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (697 of 697 strings) Co-authored-by: Ömer Faruk Genç Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/tr/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/tr-TR.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lang/tr-TR.json b/src/lang/tr-TR.json index 7091de1a..7fbf2948 100644 --- a/src/lang/tr-TR.json +++ b/src/lang/tr-TR.json @@ -74,7 +74,7 @@ "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", + "Resend Notification if Down X times consequently": "Art arda X kez düşerse bildirimi yeniden gönder", "Advanced": "Gelişmiş", "Upside Down Mode": "Ters/Düz Modu", "Max. Redirects": "Maksimum Yönlendirme", From e3573ced65d40a2798db14dfe79a7f5c4f39f670 Mon Sep 17 00:00:00 2001 From: eltionb Date: Tue, 14 Feb 2023 19:08:52 +0000 Subject: [PATCH 274/296] Translated using Weblate (Albanian) Currently translated at 3.2% (23 of 697 strings) Added translation using Weblate (Albanian) Co-authored-by: eltionb Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/sq/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/sq.json | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/lang/sq.json diff --git a/src/lang/sq.json b/src/lang/sq.json new file mode 100644 index 00000000..a513329a --- /dev/null +++ b/src/lang/sq.json @@ -0,0 +1,25 @@ +{ + "Settings": "Opsione", + "Dashboard": "FaqeKryesore", + "Help": "Ndihma", + "Language": "Gjuha", + "Appearance": "Paraqitja", + "Theme": "Theme", + "General": "Te pergjithshme", + "Game": "Loje", + "Primary Base URL": "ULR Baze Primare", + "List": "List", + "Add": "Shto", + "Add New Monitor": "Shto Monitor te Ri", + "Quick Stats": "Statistika Flash", + "Up": "Lart", + "Down": "Poshte", + "Pending": "Ne Pritje", + "statusMaintenance": "Mirembatje", + "Maintenance": "Mirembajtje", + "Unknown": "Panjohur", + "languageName": "Shqip", + "New Update": "Update i ri", + "Version": "Version", + "Check Update On GitHub": "Kontrollo Update ne GitHub" +} From fb2f7179e99069751fff747b0312e2efb9cfce81 Mon Sep 17 00:00:00 2001 From: Jonne Saloranta Date: Tue, 14 Feb 2023 19:08:52 +0000 Subject: [PATCH 275/296] Translated using Weblate (Finnish) Currently translated at 100.0% (697 of 697 strings) Co-authored-by: Jonne Saloranta Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/fi/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/fi.json | 593 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 592 insertions(+), 1 deletion(-) diff --git a/src/lang/fi.json b/src/lang/fi.json index 193a95c8..32454526 100644 --- a/src/lang/fi.json +++ b/src/lang/fi.json @@ -104,5 +104,596 @@ "Discourage search engines from indexing site": "Estä hakukoneita indeksoimasta sivua", "disableauth.message1": "Oletko varma että haluat poistaa todennuksen käytöstä?", "Please use this option carefully!": "Käytä tätä vaihtoehtoa varoen!", - "Remember me": "Muista minut" + "Remember me": "Muista minut", + "languageName": "Englanti", + "Primary Base URL": "Ensisijainen perus-URL-osoite", + "pushOptionalParams": "Valinnaiset parametrit: {0}", + "Not available, please setup.": "Ei saatavilla, määritä ensin.", + "needPushEvery": "Sinun pitäisi kutsua tätä URL joka {0} sekuntti.", + "disableauth.message2": "Se on suunniteltu tilanteisiin jossa aiot käyttää kolmannen osapuolen todennnusta Uptime Kuma:n edessä, kuten Cloudflare Access, Authelia tai jotain muuta todennus mekanismia.", + "No Monitors, please": "Ei seuraimia, kiitos", + "Resolver Server": "Ratkaisija palvelin", + "Resource Record Type": "Resusrssi tallenne tyyppi", + "Last Result": "Viimeinen tulos", + "Create your admin account": "Luo sinun järjestelmänvalvoja käyttäjä", + "Repeat Password": "Toista salasana", + "Import Backup": "Tuo varmuuskopio", + "Export Backup": "Vie varmuuskopio", + "Export": "Vie", + "Import": "Tuo", + "respTime": "Vast. aika (ms)", + "notAvailableShort": "Ei käytössä", + "Default enabled": "Oletus käytössä", + "Apply on all existing monitors": "Aseta jokaiselle olemassa olevaan seuraimeen", + "Create": "Luo", + "Clear Data": "Tyhjennä data", + "Events": "Tapahtumat", + "Heartbeats": "Sydämensyke", + "Auto Get": "Automaattinen haku", + "Schedule maintenance": "Ajoita huolto", + "Affected Monitors": "Vaikutetut seuraimet", + "Pick Affected Monitors...": "Poimi vaikutetut seuraimet…", + "Start of maintenance": "Huollon aloitus", + "All Status Pages": "Kaikki tilanne sivut", + "Select status pages...": "Valitse tilanne sivu…", + "alertNoFile": "Valitse tuotava tiedosto.", + "alertWrongFileType": "Valitse JSON tiedosto.", + "Clear all statistics": "Tyhjennä kaikki tilastot", + "Skip existing": "Ohita olemassa oleva", + "Overwrite": "Päälle kirjoita", + "Options": "Vaihtoehdot", + "Keep both": "Pidä molemmat", + "Verify Token": "Vahvista tunnus", + "Setup 2FA": "Määritä 2FA", + "Enable 2FA": "Ota 2FA käyttöön", + "Disable 2FA": "Poista 2FA käytöstä", + "2FA Settings": "2FA asetukset", + "Two Factor Authentication": "kaksivaiheinen tunnistautuminen", + "Active": "Aktiivinen", + "Token": "Tokeni", + "Show URI": "Näytä URI", + "Tags": "Tunnisteet", + "Tag with this name already exist.": "Tunniste tällä nimellä on jo olemassa.", + "Tag with this value already exist.": "Tunniste tällä arvolla on jo olemassa.", + "color": "Väri", + "value (optional)": "Arvo (valinnainen)", + "Gray": "Harmaa", + "Red": "Punainen", + "Orange": "Oranssi", + "Green": "Vihreä", + "Indigo": "Indigo", + "Purple": "Purppura", + "Pink": "Vaaleanpunainen", + "Custom": "Mukautettu", + "Search...": "Etsi…", + "Avg. Ping": "kesk.arv. viive", + "Entry Page": "Sisääntulosivu", + "statusPageNothing": "Täällä ei ole mitään. Lisää ryhmä tai seurain.", + "No Services": "Ei palveluita", + "Partially Degraded Service": "Osittain heikentynyt palvelu", + "Degraded Service": "Heikentynyt palvelu", + "Add Group": "Lisää ryhmä", + "Add a monitor": "Lisää seurain", + "Edit Status Page": "Muokkaa tilanne sivua", + "Go to Dashboard": "Mene kojelaudalle", + "Status Page": "Tilanne sivu", + "Status Pages": "Tilanne sivut", + "here": "täällä", + "Required": "Vaadittu", + "webhook": "Webhookki", + "Post URL": "Lähetys URL", + "Content Type": "Sisältö tyyppi", + "webhookJsonDesc": "{0} on hyvä jokaisille modernilleille HTTP palvelimille kuten Express.js", + "webhookAdditionalHeadersTitle": "Lisä otsakkeet", + "webhookAdditionalHeadersDesc": "Asettaa lisäpäätteet, jotka on lähetetty webhookilla.", + "Webhook URL": "Webhookin URL", + "Application Token": "Sovellus tokeni", + "Server URL": "Palvelin URL", + "Priority": "Prioriteetti", + "emojiCheatSheet": "Emoji lunttilappu: {0}", + "Read more": "Lue lisää", + "appriseInstalled": "Apprise on asennettu.", + "appriseNotInstalled": "Apprisea ei ole asennettu. {0}", + "Method": "Menetelmä", + "Body": "Runko", + "Headers": "Otsikot", + "PushUrl": "Työntö URL", + "BodyInvalidFormat": "Pyynnön runko ei ole kelvollinen JSON: ", + "Monitor History": "Seuraa historiaa", + "PasswordsDoNotMatch": "Salasanat eivät täsmää.", + "records": "tallenteet", + "One record": "Yksi tallenne", + "Current User": "Nykyinen käyttäjä", + "topic": "Aihe", + "topicExplanation": "MQTT seurattava aihe", + "successMessage": "Onnistumis viesti", + "successMessageExplanation": "MQTT-viesti, jota pidetään onnistuneena", + "recent": "Viimeaikainen", + "Done": "Tehty", + "Info": "Tiedot", + "Security": "Turvallisuus", + "Steam API Key": "Steam API-avain", + "Shrink Database": "Pienennä tietokanta", + "Pick a RR-Type...": "Valitse RR-tyyppi…", + "Pick Accepted Status Codes...": "Valitse hyväksytyt tilakoodit…", + "Default": "Oletus", + "HTTP Options": "HTTP-asetukset", + "Create Incident": "Luo tapaus", + "Title": "Otsikko", + "Content": "Sisältö", + "Style": "Tyyli", + "info": "Tiedot", + "warning": "Varoitus", + "danger": "vaara", + "error": "virhe", + "critical": "kriittinen", + "primary": "ensisijainen", + "dark": "Tumma", + "Post": "Lähetä", + "Please input title and content": "Syötä otsikko ja sisältö", + "Created": "Luo", + "Last Updated": "Viimeksi päivitetty", + "Unpin": "Irroita", + "Switch to Dark Theme": "Vaihda tummaan teemaan", + "Show Tags": "Näytä tunnisteet", + "Hide Tags": "Piilota tunnisteet", + "Description": "Kuvaus", + "No monitors available.": "Ei seuraimia saatavilla.", + "Add one": "Lisää yksi", + "No Monitors": "Ei seuraimia", + "Untitled Group": "Nimetön ryhmä", + "Services": "Palvelut", + "Discard": "Hävitä", + "Cancel": "Peruuttaa", + "Customize": "Mukauta", + "Custom Footer": "Mukautettu alatunniste", + "Custom CSS": "Mukautettu CSS", + "deleteStatusPageMsg": "Haluatko varmasti poistaa tämän tilasivun?", + "Proxies": "Välityspalvelimet", + "default": "Oletus", + "enabled": "Käytössä", + "setAsDefault": "Oletusasetuksena", + "deleteProxyMsg": "Haluatko varmasti poistaa tämän välityspalvelimen kaikista seuraimista?", + "proxyDescription": "Välityspalvelimet on määritettävä seuraimelle toimiakseen.", + "enableProxyDescription": "Tämä välityspalvelin ei vaikuta valvontapyyntöihin ennen kuin se on aktivoitu. Voit hallita välityspalvelimen väliaikaista poistamista käytöstä kaikista seuraimista aktivointitilan perusteella.", + "setAsDefaultProxyDescription": "Tämä välityspalvelin on oletuksena käytössä uusissa seuraimissa. Voit silti poistaa välityspalvelimen käytöstä erikseen jokaisesta seuraimesta.", + "Certificate Chain": "Sertifikaattiketju", + "Valid": "Voimassa oleva", + "Invalid": "Pätemätön", + "User": "Käyttäjä", + "Installed": "Asennettu", + "Not installed": "Ei asennettu", + "Running": "Käynnissä", + "Not running": "Ei käynnissä", + "Remove Token": "Poista token", + "Start": "Käynnistä", + "Stop": "Pysäytä", + "Add New Status Page": "Lisää uusi tilasivu", + "Slug": "Slug", + "startOrEndWithOnly": "Aloita tai lopeta vain {0}", + "No consecutive dashes": "Ei peräkkäisiä viivoja", + "Next": "Seuraava", + "No Proxy": "Ei välityspalvelinta", + "Authentication": "Todennus", + "HTTP Basic Auth": "HTTP-perustodennus", + "Page Not Found": "Sivua ei löydetty", + "Reverse Proxy": "Käänteinen välityspalvelin", + "Backup": "Varmuuskopio", + "About": "Tietoja", + "cloudflareWebsite": "Cloudflare verkkosivusto", + "Message:": "Viesti:", + "Don't know how to get the token? Please read the guide:": "Etkö tiedä kuinka saada tunnus? Ole hyvä ja lue opas:", + "HTTP Headers": "HTTP-otsikot", + "Trust Proxy": "Luota välityspalvelimeen", + "Other Software": "Muut ohjelmistot", + "For example: nginx, Apache and Traefik.": "Esimerkiksi: nginx, Apache ja Traefik.", + "Please read": "Ole hyvä ja lue", + "Subject:": "Aihe:", + "Valid To:": "Voimassa:", + "Days Remaining:": "Päiviä jäljellä:", + "Issuer:": "Myöntäjä:", + "Fingerprint:": "Sormenjälki:", + "No status pages": "Ei tilasivuja", + "Domain Name Expiry Notification": "Verkkotunnuksen vanhenemisilmoitus", + "Proxy": "Välityspalvelin", + "Date Created": "Luomis päivämäärä", + "Footer Text": "Alatunnisteen teksti", + "Show Powered By": "Näytä \"voimanlähteenä\"", + "Domain Names": "Verkkotunnus nimet", + "signedInDisp": "Kirjautunut sisään käyttäjänä {0}", + "signedInDispDisabled": "Todennus poistettu käytöstä.", + "RadiusSecretDescription": "Asiakkaan ja palvelimen välinen yhteinen salaisuus", + "RadiusCalledStationIdDescription": "Kutsutun laitteen tunniste", + "RadiusCallingStationId": "Kutsuaseman tunnus", + "Certificate Expiry Notification": "Varmenteen vanhenemisilmoitus", + "API Username": "API-käyttäjänimi", + "API Key": "API-avain", + "Show update if available": "Näytä päivitys, jos saatavilla", + "Also check beta release": "Tarkista myös betaversio", + "Using a Reverse Proxy?": "Käytätkö käänteistä välityspalvelinta?", + "The slug is already taken. Please choose another slug.": "Slug on jo otettu. Ole hyvä ja valitse toinen slug.", + "RadiusSecret": "Radius Secret", + "RadiusCalledStationId": "Kutsuttu aseman tunnus", + "Steam Game Server": "Steam pelipalvelin", + "Most likely causes:": "todennäköisimmät syyt:", + "The resource is no longer available.": "Resurssi ei ole enää saatavilla.", + "There might be a typing error in the address.": "Osoitteessa saattaa olla kirjoitusvirhe.", + "What you can try:": "Mitä voit kokeilla:", + "Retype the address.": "Kirjoita osoite uudelleen.", + "Go back to the previous page.": "Palaa edelliselle sivulle.", + "Coming Soon": "Tulossa pian", + "Connection String": "Yhteysmerkkijono", + "Query": "Tiedustelu", + "settingsCertificateExpiry": "TLS-sertifikaatin vanheneminen", + "certificationExpiryDescription": "HTTPS-seuraimet käynnistävät ilmoituksen, kun TLS-varmenne vanhenee:", + "Setup Docker Host": "Asenna Docker-isäntä", + "Connection Type": "Yhteystyyppi", + "tcp": "TCP / HTTP", + "Docker Container": "Docker-kontti", + "Container Name / ID": "Säilön nimi/tunnus", + "Docker Host": "Docker-isäntä", + "Docker Hosts": "Docker-isännät", + "Domain": "Verkkotunnus", + "Workstation": "Työasema", + "socket": "kanta", + "Packet Size": "Paketin koko", + "telegram": "Telegram", + "ZohoCliq": "ZohoCliq", + "Bot Token": "Botti tokeni", + "wayToGetTelegramToken": "Voit saada tunnuksen osoitteesta {0}.", + "Chat ID": "Chat-tunnus", + "wayToGetTelegramChatID": "Saat chat-tunnuksesi lähettämällä viestin botille ja siirtymällä tähän URL-osoitteeseen nähdäksesi chat_id:", + "YOUR BOT TOKEN HERE": "BOT TOKENISI TÄHÄN", + "chatIDNotFound": "Chat ID:tä ei löydy; lähetä ensin viesti tälle botille", + "disableCloudflaredNoAuthMsg": "Olet No Auth -tilassa, salasanaa ei tarvita.", + "trustProxyDescription": "Luota \"X-Forwarded-*\"-otsikoihin. Jos haluat saada oikean asiakas-IP:n ja Uptime Kumasi on välityspalvelimen, kuten Nginx tai Apache, takana, sinun tulee ottaa tämä käyttöön.", + "wayToGetLineNotifyToken": "Voit saada käyttötunnuksen osoitteesta {0}", + "Examples": "Esimerkkejä", + "Home Assistant URL": "Home Assistantin URL-osoite", + "Long-Lived Access Token": "Pitkäikäinen pääsytunnus", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Pitkäikäinen pääsytunnus voidaan luoda napsauttamalla profiilisi nimeä (vasemmalla alareunassa) ja vierittämällä alas ja napsauttamalla sitten Luo tunnus. ", + "Notification Service": "Ilmoituspalvelu", + "default: notify all devices": "oletus: Ilmoita kaikille laitteille", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Luettelo ilmoituspalveluista löytyy Home Assistantin kohdasta \"Kehittäjätyökalut > Palvelut\". Hae hakusanalla \"ilmoitus\" löytääksesi laitteesi/puhelimesi nimen.", + "Automations can optionally be triggered in Home Assistant:": "Automaatiot voidaan vaihtoehtoisesti laukaista Home Assistantissa:", + "Trigger type:": "Triggerin tyyppi:", + "Event type:": "Tapahtumatyyppi:", + "Frontend Version": "Käyttöliittymän versio", + "Frontend Version do not match backend version!": "Käyttöliittymän versio ei vastaa taustaversiota!", + "backupRecommend": "Varmuuskopioi asema tai tietokansio (./data/) suoraan sen sijaan.", + "Optional": "Vapaaehtoinen", + "squadcast": "Squadcast", + "or": "tai", + "recurringInterval": "Aikaväli", + "Recurring": "Toistuva", + "strategyManual": "Aktiivinen/ei-aktiivinen manuaalisesti", + "warningTimezone": "Se käyttää palvelimen aikavyöhykettä", + "weekdayShortMon": "Ma", + "weekdayShortTue": "Ti", + "weekdayShortWed": "Ke", + "weekdayShortThu": "To", + "weekdayShortFri": "Pe", + "weekdayShortSat": "La", + "weekdayShortSun": "Su", + "dayOfWeek": "Viikonpäivä", + "dayOfMonth": "Kuukauden päivä", + "lastDay": "Viimeinen päivä", + "lastDay1": "Kuukauden viimeinen päivä", + "lastDay2": "Kuukauden toiseksi viimeinen päivä", + "lastDay3": "Kuukauden 3. viimeinen päivä", + "No Maintenance": "Ei huoltoa", + "pauseMaintenanceMsg": "Haluatko varmasti keskeyttää?", + "maintenanceStatus-under-maintenance": "Huollossa", + "maintenanceStatus-inactive": "Epäaktiivinen", + "maintenanceStatus-scheduled": "Aikataulutettu", + "maintenanceStatus-ended": "Päättyi", + "maintenanceStatus-unknown": "Tuntematon", + "Display Timezone": "Näytä aikavyöhyke", + "Server Timezone": "Palvelimen aikavyöhyke", + "statusPageMaintenanceEndDate": "Loppu", + "Enable": "Ota käyttöön", + "Disable": "Poista käytöstä", + "Single Maintenance Window": "Yksi huoltoikkuna", + "Maintenance Time Window of a Day": "Päivän huoltoaikaikkuna", + "Effective Date Range": "Voimassa oleva ajanjakso", + "Schedule Maintenance": "Ajoita huolto", + "Date and Time": "Päivämäärä ja aika", + "DateTime Range": "Päivämäärä-aika-alue", + "loadingError": "Tietoja ei voi noutaa, yritä myöhemmin uudelleen.", + "plugin": "Lisäosa | Lisäosat", + "install": "Asenna", + "installing": "Asennetaan", + "uninstall": "Poista asennus", + "uninstalling": "Poistetaan asennusta", + "smtp": "Sähköposti (SMTP)", + "secureOptionNone": "Ei mitään / STARTTLS (25 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Ohita TLS-virhe", + "From Email": "Sähköpostista", + "emailCustomSubject": "Mukautettu aihe", + "To Email": "Sähköpostiin", + "smtpCC": "CC", + "smtpBCC": "BCC", + "Discord Webhook URL": "Discord Webhookin URL-osoite", + "Bot Display Name": "Botin näyttönimi", + "Prefix Custom Message": "Mukautetun viestin etuliite", + "Hello @everyone is...": "Hei {'@'}kaikki ovat…", + "wayToGetTeamsURL": "Voit oppia luomaan webhookin URL-osoitteen {0}.", + "wayToGetZohoCliqURL": "Voit oppia luomaan webhookin URL-osoitteen {0}.", + "wayToCheckSignalURL": "Voit tarkistaa tämän URL-osoitteen nähdäksesi, kuinka se määritetään:", + "Number": "Numero", + "Recipients": "Vastaanottajat", + "Access Token": "Käyttöoikeustunnus", + "Channel access token": "Kanavan käyttöoikeustunnus", + "Basic Settings": "Perus asetukset", + "User ID": "käyttäjätunnus", + "Messaging API": "Viestintä API", + "Line Developers Console": "Line Developers Console", + "lineDevConsoleTo": "Line Developers Console - {0}", + "dataRetentionTimeError": "Säilytysajan on oltava 0 tai suurempi", + "infiniteRetention": "Aseta arvoon 0, jos haluat loputtoman säilytyksen.", + "confirmDeleteTagMsg": "Haluatko varmasti poistaa tämän tunnisteen? Tähän tunnisteeseen liittyviä näyttöjä ei poisteta.", + "enableGRPCTls": "Salli lähettää gRPC-pyyntö TLS-yhteydellä", + "grpcMethodDescription": "Menetelmän nimi muunnetaan cammelCase-muotoon, kuten sayHello, check jne.", + "acceptedStatusCodesDescription": "Valitse tilakoodit, jotka katsotaan onnistuneeksi vastaukseksi.", + "deleteMonitorMsg": "Haluatko varmasti poistaa tämän seuraimen?", + "deleteMaintenanceMsg": "Haluatko varmasti poistaa tämän huollon?", + "deleteNotificationMsg": "Haluatko varmasti poistaa tämän ilmoituksen kaikista seuraimista?", + "dnsPortDescription": "DNS-palvelimen portti. Oletusarvo on 53. Voit vaihtaa porttia milloin tahansa.", + "rrtypeDescription": "Valitse valvottava RR-tyyppi", + "pauseMonitorMsg": "Haluatko varmasti keskeyttää?", + "clearHeartbeatsMsg": "Haluatko varmasti poistaa kaikki tämän seuraimen sydämenlyönnit?", + "confirmImportMsg": "Haluatko varmasti tuoda varmuuskopion? Varmista, että olet valinnut oikean tuontivaihtoehdon.", + "twoFAVerifyLabel": "Anna tunnuksesi vahvistaaksesi 2FA:", + "tokenValidSettingsMsg": "Token on voimassa! Voit nyt tallentaa 2FA-asetukset.", + "confirmEnableTwoFAMsg": "Haluatko varmasti ottaa 2FA:n käyttöön?", + "confirmDisableTwoFAMsg": "Haluatko varmasti poistaa 2FA:n käytöstä?", + "recurringIntervalMessage": "Juokse kerran päivässä | Suorita kerran {0} päivässä", + "affectedMonitorsDescription": "Valitse seuraimet, joihin nykyinen huolto vaikuttaa", + "affectedStatusPages": "Näytä tämä huoltoviesti valituilla tilasivuilla", + "atLeastOneMonitor": "Valitse vähintään yksi seurain, johon vaikuttaa", + "notificationDescription": "Ilmoitukset on määritettävä seuraimelle toimiakseen.", + "keywordDescription": "Hae avainsanaa tavallisessa HTML- tai JSON-vastauksessa. Haussa kirjainkoolla on merkitystä.", + "backupDescription": "Voit varmuuskopioida kaikki näytöt ja ilmoitukset JSON-tiedostoon.", + "backupDescription2": "Huomaa: historia- ja tapahtumatiedot eivät sisälly.", + "octopushLogin": "\"Kirjaudu\" ohjauspaneelin HTTP API -tunnistetiedoista", + "promosmsLogin": "API-kirjautumisnimi", + "promosmsPassword": "API-salasana", + "pushoversounds pushover": "Työnnä yli (oletus)", + "pushoversounds bike": "Pyörä", + "pushoversounds bugle": "Merkkitorvi", + "pushoversounds cashregister": "Kassakone", + "pushoversounds classical": "Klassinen", + "pushoversounds cosmic": "Kosminen", + "pushoversounds falling": "Putoaminen", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Saapuva", + "pushoversounds intermission": "Väliaika", + "pushoversounds magic": "Taika", + "pushoversounds mechanical": "Mekaaninen", + "pushoversounds pianobar": "Piano Baari", + "pushoversounds spacealarm": "Avaruushälytys", + "pushoversounds tugboat": "Hinaaja", + "pushoversounds alien": "Avaruusolio hälytys (pitkä)", + "pushoversounds climb": "Kiipeily (pitkä)", + "pushoversounds persistent": "Pysyvä (pitkä)", + "pushoversounds updown": "Ylös Alas (pitkä)", + "pushoversounds vibrate": "Vain värinä", + "pushoversounds none": "Ei mitään (hiljainen)", + "pushyAPIKey": "Salainen API-avain", + "pushyToken": "Laitteen tunnus", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.Chat", + "pushy": "Päällekäyvä", + "PushByTechulus": "Techuluksen työntö", + "octopush": "Mustekala", + "promosms": "PromoSMS", + "clicksendsms": "ClickSend SMS", + "lunasea": "LunaSea", + "GoogleChat": "Google Chat (vain Google Workspace)", + "Kook": "Kook", + "wayToGetKookGuildID": "Ota 'Kehittäjätila' käyttöön Kook-asetuksissa ja napsauta kiltaa hiiren kakkospainikkeella saadaksesi sen tunnuksen", + "Guild ID": "Killan tunnus", + "line": "Line Messenger", + "mattermost": "Mattermost", + "User Key": "Käyttäjäavain", + "Device": "Laite", + "Message Title": "Viestin otsikko", + "More info on:": "Lisätietoja: {0}", + "pushoverDesc2": "Jos haluat lähettää ilmoituksia eri laitteille, täytä Laite-kenttä.", + "SMS Type": "SMS-tyyppi", + "octopushTypePremium": "Premium (nopea - suositellaan hälytykseen)", + "octopushTypeLowCost": "Alhaiset kustannukset (hidas - joskus operaattori estää)", + "checkPrice": "Tarkista kohteen {0} hinnat:", + "apiCredentials": "API-tunnistetiedot", + "Check octopush prices": "Tarkista octopush hinnat {0}.", + "octopushPhoneNumber": "Puhelinnumero (Intl-muoto, esim.: +33612345678) ", + "octopushSMSSender": "Tekstiviestin lähettäjän nimi: 3-11 aakkosnumeerista merkkiä ja välilyönti (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea laitetunnus", + "Apprise URL": "Apprise URL-osoite", + "Example:": "Esimerkki: {0}", + "Read more:": "Lue lisää: {0}", + "Status:": "Tila: {0}", + "Strategy": "strategia", + "Free Mobile User Identifier": "Ilmainen mobiilikäyttäjätunnus", + "Enable TLS": "Ota TLS käyttöön", + "Proto Service Name": "Proto-palvelun nimi", + "Proto Method": "Proto-menetelmä", + "Proto Content": "Proto-sisältö", + "Economy": "Talous", + "Lowcost": "Halpa", + "high": "korkea", + "SendKey": "LähetäAvain", + "SMSManager API Docs": "SMSManager API Dokumentointi ", + "Gateway Type": "Yhdyskäytävän tyyppi", + "SMSManager": "SMSManager", + "Base URL": "Perus-URL-osoite", + "goAlertIntegrationKeyInfo": "Hanki yleinen API-integrointiavain palvelulle tässä muodossa \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" yleensä kopioidun URL-osoitteen tunnusparametrin arvona.", + "goAlert": "GoAlert", + "AccessKeyId": "Pääsyn avaimen tunnus", + "SecretAccessKey": "Pääsyn avaimen salaisuus", + "PhoneNumbers": "PuhelinNumerot", + "TemplateCode": "Mallikoodi", + "SignName": "AllekirjoitusNimi", + "Sms template must contain parameters: ": "Tekstiviestimallin tulee sisältää parametrit: ", + "Bark Group": "Bark ryhmä", + "Bark Sound": "Bark ääni", + "WebHookUrl": "WebHookUrl-osoite", + "SecretKey": "Salainen avain", + "For safety, must use secret key": "Turvallisuuden vuoksi on käytettävä salaista avainta", + "Device Token": "Laitteen tunnus", + "Platform": "Alusta", + "iOS": "iOS", + "Bark Endpoint": "Bark päätepiste", + "Huawei": "Huawei", + "High": "Korkea", + "Topic": "Aihe", + "WeCom Bot Key": "WeCom-bottiavain", + "Setup Proxy": "Asenna välityspalvelin", + "Proxy Protocol": "Välityspalvelinprotokolla", + "Proxy Server": "Välityspalvelin", + "matrix": "Matriisi", + "promosmsTypeFlash": "SMS FLASH - Viesti näkyy automaattisesti vastaanottajan laitteessa. Rajoitettu vain puolalaisille vastaanottajille.", + "promosmsTypeSpeed": "SMS SPEED - Järjestelmän korkein prioriteetti. Erittäin nopea ja luotettava, mutta kallis (noin kaksi kertaa SMS TÄYSI hinta).", + "promosmsPhoneNumber": "Puhelinnumero (puolalaiselle vastaanottajalle voit ohittaa suuntanumerot)", + "promosmsSMSSender": "Tekstiviestin lähettäjän nimi: Esirekisteröity nimi tai jokin oletusasetuksista: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "promosmsAllowLongSMS": "Salli pitkät tekstiviestit", + "Feishu WebHookUrl": "Feishu WebHookURL-osoite", + "Internal Room Id": "Huoneen sisäinen tunnus", + "Android": "Android", + "Channel Name": "Kanavan nimi", + "Uptime Kuma URL": "Uptime Kuma URL-osoite", + "Icon Emoji": "Ikoni Emoji", + "signalImportant": "TÄRKEÄÄ: Et voi sekoittaa ryhmiä ja numeroita vastaanottajissa!", + "aboutWebhooks": "Lisätietoja Webhooksista osoitteessa: {0}", + "aboutChannelName": "Kirjoita kanavan nimi {0} Kanavan nimi -kenttään, jos haluat ohittaa Webhook-kanavan. Esimerkki: #muu-kanava", + "aboutKumaURL": "Jos jätät Uptime Kuma URL -kentän tyhjäksi, se on oletuksena Project GitHub -sivu.", + "smtpDkimSettings": "DKIM-asetukset", + "smtpDkimDesc": "Katso Nodemailer DKIM {0} -sovelluksen käytöstä.", + "documentation": "dokumentointi", + "smtpDkimDomain": "Verkkotunnus nimi", + "smtpDkimKeySelector": "Näppäinvalitsin", + "smtpDkimPrivateKey": "Yksityinen avain", + "smtpDkimHashAlgo": "Hash-algoritmi (valinnainen)", + "smtpDkimheaderFieldNames": "Allekirjoitettavat otsikkoavaimet (valinnainen)", + "smtpDkimskipFields": "Otsikkonäppäimet, joita ei allekirjoiteta (valinnainen)", + "Integration Key": "Integrointiavain", + "Integration URL": "Integroinnin URL-osoite", + "Auto resolve or acknowledged": "Automaattinen ratkaisu tai kuittaus", + "do nothing": "Älä tee mitään", + "auto acknowledged": "automaattisesti kuitattu", + "auto resolve": "automaattinen ratkaisu", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API-päätepiste", + "alertaEnvironment": "Ympäristö", + "alertaApiKey": "API-avain", + "alertaRecoverState": "Palautustila", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API-käyttäjänimi (sis. webapi_-etuliite)", + "serwersmsAPIPassword": "API-salasana", + "serwersmsPhoneNumber": "Puhelinnumero", + "smseagle": "SMSEagle", + "smseagleTo": "Puhelinnumero(t)", + "smseagleGroup": "Puhelinmuistioryhmän nimi/nimet", + "smseagleContact": "Puhelinmuistion yhteyshenkilön nimet", + "smseagleRecipientType": "Vastaanottajan tyyppi", + "smseagleRecipient": "Vastaanottaja(t) (jos useita, ne on erotettava pilkulla)", + "smseagleToken": "API-käyttöoikeustunnus", + "smseagleUrl": "SMSEagle-laitteesi URL-osoite", + "smseagleEncoding": "Lähetä Unicodena", + "smseaglePriority": "Viestin prioriteetti (0-9, oletus = 0)", + "stackfield": "Stackfield", + "Recipient Number": "Vastaanottajan numero", + "From Name/Number": "Nimestä/numerosta", + "Leave blank to use a shared sender number.": "Jätä tyhjäksi, jos haluat käyttää jaettua lähettäjän numeroa.", + "Octopush API Version": "Octopush API -versio", + "Legacy Octopush-DM": "Legacy Octopush-DM", + "ntfy Topic": "ntfy aihe", + "HomeAssistant": "Home Assistant", + "onebotHttpAddress": "OneBot HTTP-osoite", + "onebotGroupMessage": "Ryhmä", + "onebotPrivateMessage": "Yksityinen", + "onebotUserOrGroupId": "Ryhmä/käyttäjätunnus", + "onebotSafetyTips": "Käyttöoikeustunnus on asetettava turvallisuuden vuoksi", + "PushDeer Key": "PushDeer avain", + "wayToGetClickSendSMSToken": "Voit saada API-käyttäjänimen ja API-avaimen osoitteesta {0}.", + "Custom Monitor Type": "Mukautettu seurain tyyppi", + "Google Analytics ID": "Google Analytics -tunnus", + "Edit Tag": "Muokkaa tunnistetta", + "Server Address": "Palvelimen osoite", + "Learn More": "Lisätietoja", + "Inactive": "Epäaktiivinen", + "Add New below or Select...": "Lisää uusi alapuolella tai valitse…", + "Blue": "Sininen", + "Avg. Response": "Kesk.arv. vastaus", + "All Systems Operational": "Kaikki järjestelmät toiminnassa", + "defaultNotificationName": "Minun {ilmoitus} Hälytys ({numero})", + "webhookFormDataDesc": "{multipart} on hyvä PHP:lle. JSON pitää parsia {decodeFunction} avulla", + "HeadersInvalidFormat": "Pyynnön otsikot eivät ole kelvollisia JSON-tiedostoja: ", + "clearDataOlderThan": "Säilytä seuraimen historiatiedot {0} päivää.", + "steamApiKeyDescription": "Steam peli palveliment valvontaa varten tarvitset Steam Web-API -avaimen. Voit rekisteröidä API-avaimesi täällä: ", + "light": "Vaalea", + "Switch to Light Theme": "Vaihda vaaleaan teemaan", + "Powered by": "Voimanlähteenä", + "shrinkDatabaseDescription": "Käynnistä tietokanta VACUUM SQLitelle. Jos tietokanta on luotu 1.10.0:n jälkeen, AUTO_VACUUM on jo käytössä eikä tätä toimintoa tarvita.", + "Accept characters:": "Hyväksy merkit:", + "New Status Page": "Uusi tilasivu", + "wayToGetCloudflaredURL": "(Lataa cloudflared osoitteesta {0})", + "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.": "Nykyinen yhteys saattaa katketa, jos muodostat parhaillaan yhteyttä Cloudflare-tunnelin kautta. Haluatko varmasti lopettaa sen? Vahvista se kirjoittamalla nykyinen salasanasi.", + "RadiusCallingStationIdDescription": "Kutsu laitteen tunniste", + "Check how to config it for WebSocket": "Tarkista, kuinka se määritetään WebSocketille", + "Docker Daemon": "Docker taustatoiminta", + "deleteDockerHostMsg": "Haluatko varmasti poistaa tämän docker-isännän kaikista seuraimista?", + "supportTelegramChatID": "Tukee suoraa chattia / ryhmää / kanavan chat-tunnusta", + "Event data:": "Tapahtumatyyppi:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Valitse sitten toiminto, esimerkiksi vaihda kohtaus sellaiseen, jossa RGB-valo on punainen.", + "backupOutdatedWarning": "Vanhentunut: Koska monia ominaisuuksia lisättiin ja tätä varmuuskopiointitoimintoa ei ole ylläpidetty, se ei voi luoda tai palauttaa täydellistä varmuuskopiota.", + "lastDay4": "Kuukauden 4. viimeinen päivä", + "IconUrl": "Kuvakkeen URL-osoite", + "Enable DNS Cache": "Ota DNS-välimuisti käyttöön", + "dnsCacheDescription": "Se ei ehkä toimi joissakin IPv6-ympäristöissä, poista se käytöstä, jos kohtaat ongelmia.", + "confirmUninstallPlugin": "Haluatko varmasti poistaa tämän laajennuksen?", + "wayToGetDiscordURL": "Saat tämän siirtymällä kohtaan Palvelinasetukset -> Integraatiot -> Näytä Webhookit -> Uusi Webhook", + "needSignalAPI": "Sinulla on oltava signaaliasiakas, jossa on REST API.", + "wayToGetLineChannelToken": "Avaa ensin {0}, luo palveluntarjoaja ja kanava (Viestintä API), sitten saat kanavan käyttö tokenin ja käyttäjätunnuksen yllä mainituista valikon kohdista.", + "Icon URL": "Kuvakkeen URL-osoite", + "aboutIconURL": "Voit ohittaa oletusprofiilikuvan antamalla linkin kuvaan kohdassa \"kuvakeen URL\". Ei käytetä, jos kuvake emoji on asetettu.", + "aboutMattermostChannelName": "Voit ohittaa oletuskanavan, jolle Webhook lähettää viestejä, kirjoittamalla kanavan nimen Kanavan nimi -kenttään. Tämä on otettava käyttöön Mattermost Webhook -asetuksissa. Esimerkki: #muu-kanava", + "resolverserverDescription": "Cloudflare on oletuspalvelin. Voit vaihtaa ratkaisijapalvelinta milloin tahansa.", + "enableDefaultNotificationDescription": "Tämä ilmoitus on oletuksena käytössä uusissa seuraimissa. Voit silti poistaa ilmoituksen käytöstä erikseen jokaiselta seuraimelta.", + "clearEventsMsg": "Haluatko varmasti poistaa kaikki tämän seuraimen tapahtumat?", + "confirmClearStatisticsMsg": "Haluatko varmasti poistaa KAIKKI tilastot?", + "importHandleDescription": "Valitse \"Ohita olemassa oleva\", jos haluat ohittaa jokaisen samannimisen seuraimen tai ilmoituksen. \"Korvaa\" poistaa kaikki olemassa olevat seuraimet ja ilmoitukset.", + "passwordNotMatchMsg": "Toistettu salasana ei täsmää.", + "backupDescription3": "Arkaluonteiset tiedot, kuten ilmoitustunnukset, sisältyvät vientitiedostoon. säilytä vienti turvallisesti.", + "endpoint": "päätepiste", + "octopushAPIKey": "\"API-avain\" ohjauspaneelin HTTP API -tunnistetiedoista", + "pushoversounds siren": "Sireeni", + "pushoversounds echo": "Ylityöntö kaiku (pitkä)", + "pushover": "Ylityöntö", + "apprise": "Apprise (tukee yli 50 ilmoituspalvelua)", + "pushbullet": "Pushbullet", + "wayToGetKookBotToken": "Luo sovellus ja hanki bot-tunnus osoitteessa {0}", + "Notification Sound": "Ilmoitusääni", + "pushoverDesc1": "Hätäprioriteetilla (2) on oletusarvoisesti 30 sekunnin aikakatkaisu uudelleenyritysten välillä, ja se vanhenee 1 tunnin kuluttua.", + "octopushLegacyHint": "Käytätkö Octopushin (2011-2020) vanhaa versiota vai uutta versiota?", + "Free Mobile API Key": "Ilmainen mobiilisovellusliittymäavain", + "You can divide numbers with": "Voit jakaa numerot", + "goAlertInfo": "GoAlert on avoimen lähdekoodin sovellus päivystykseen, automatisoituihin eskalaatioihin ja ilmoituksiin (kuten tekstiviestit tai äänipuhelut). Ota automaattisesti mukaan oikea henkilö, oikealla tavalla ja oikeaan aikaan! {0}", + "Retry": "Yritä uudelleen", + "Proxy server has authentication": "Välityspalvelimella on todennus", + "promosmsTypeEco": "SMS ECO - halpa mutta hidas ja usein ylikuormitettu. Rajoitettu vain puolalaisille vastaanottajille.", + "promosmsTypeFull": "SMS FULL - Premium-tason tekstiviestit, voit käyttää lähettäjän nimeäsi (sinun on rekisteröitävä nimi ensin). Luotettava hälytyksiä varten.", + "matrixHomeserverURL": "Kotipalvelimen URL-osoite (http(s):// ja valinnaisesti portti)", + "matrixDesc1": "Löydät sisäisen huonetunnuksen katsomalla Matrix-asiakasohjelman huoneasetusten lisäosaa. Sen pitäisi näyttää tältä: !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "On erittäin suositeltavaa, että luot uuden käyttäjän etkä käytä omaa Matrix-käyttäjätunnustasi, koska se antaa täyden pääsyn tilillesi ja kaikkiin huoneisiin, joihin liityit. Luo sen sijaan uusi käyttäjä ja kutsu se vain siihen huoneeseen, josta haluat saada ilmoituksen. Saat käyttöoikeustunnuksen suorittamalla {0}", + "wayToGetPagerDutyKey": "Saat tämän siirtymällä kohtaan Palvelu -> Palveluhakemisto -> (Valitse palvelu) -> Integraatiot -> Lisää integraatio. Täältä voit etsiä \"Events API V2\". Lisätietoja {0}", + "alertaAlertState": "Varoitustila", + "serwersmsSenderName": "Tekstiviestin lähettäjän nimi (rekisteröity asiakasportaalin kautta)", + "onebotMessageType": "OneBot-viestityyppi" } From 11b45dd274faca74fcd134402746ddace58e29a8 Mon Sep 17 00:00:00 2001 From: AmadeusGraves Date: Tue, 14 Feb 2023 19:08:52 +0000 Subject: [PATCH 276/296] Translated using Weblate (Spanish) Currently translated at 97.7% (681 of 697 strings) Co-authored-by: AmadeusGraves Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/es/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/es-ES.json | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/lang/es-ES.json b/src/lang/es-ES.json index 5adca7b7..429582de 100644 --- a/src/lang/es-ES.json +++ b/src/lang/es-ES.json @@ -534,7 +534,7 @@ "smtpCC": "CC", "smtpBCC": "CCO", "Discord Webhook URL": "URL Webhook de Discord", - "wayToGetDiscordURL": "Puede obtener esto yendo a Configuración del servidor -> Integraciones -> Crear webhook", + "wayToGetDiscordURL": "Puede obtener esto yendo a Configuración del servidor -> Integraciones -> Ver Webhooks -> Crear Webhook", "Bot Display Name": "Nombre para mostrar del Bot", "Hello @everyone is...": "Hola {'@'}todos están…", "wayToGetTeamsURL": "Puedes aprender cómo crear una URL webhook {0}.", @@ -591,7 +591,7 @@ "Kook": "Kook", "wayToGetKookBotToken": "Crea aplicación y obtén tu token de bot en {0}", "wayToGetKookGuildID": "Activa 'Modo Desarrollador' en los ajustes de Kook, y haz click derecho en la unión para obtener su ID", - "Guild ID": "", + "Guild ID": "ID de Gremio", "User Key": "Key de Usuario", "octopushTypePremium": "Premium (Rápido - recomendado para alertas)", "octopushTypeLowCost": "Bajo Coste (Lento - algunas veces bloqueado por operador)", @@ -661,7 +661,7 @@ "SMSManager": "SMSManager", "goAlertInfo": "GoAlert es una aplicación de código abierto para la programación de guardias, escaladas automatizadas y notificaciones (como SMS o llamadas de voz). ¡Involucre automáticamente a la persona adecuada, de la manera correcta y en el momento adecuado! {0}", "Free Mobile API Key": "Clave API de Free Mobile", - "high": "arriba", + "high": "alto", "SMSManager API Docs": "Documentación API de SMSManager ", "smseagleContact": "Nombre(s) de contacto de Guía Telefónica", "smseagleToken": "Token de Acceso a la API", @@ -685,5 +685,8 @@ "Server Address": "Dirección del Servidor", "Learn More": "Aprende Más", "Pick a RR-Type...": "Seleccione un Tipo RR", - "onebotHttpAddress": "Dirección HTTP OneBot" + "onebotHttpAddress": "Dirección HTTP OneBot", + "SendKey": "SendKey", + "octopushAPIKey": "\"Clave API\" de las credenciales HTTP API en el panel de control", + "octopushLogin": "\"Inicio de Sesión\" a partir de las credenciales API HTTP en el panel de control" } From 32ddff4e643706200559850d1441354652fa5fce Mon Sep 17 00:00:00 2001 From: MrEddX Date: Tue, 14 Feb 2023 19:08:52 +0000 Subject: [PATCH 277/296] Translated using Weblate (Bulgarian) Currently translated at 100.0% (697 of 697 strings) Co-authored-by: MrEddX Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/bg/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/bg-BG.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lang/bg-BG.json b/src/lang/bg-BG.json index 66ce48fe..eb6ec700 100644 --- a/src/lang/bg-BG.json +++ b/src/lang/bg-BG.json @@ -676,7 +676,7 @@ "wayToGetKookGuildID": "Превключете в 'Developer Mode' в 'Kook' настройките, след което десен клик върху 'guild' за да вземете неговото 'ID'", "Guild ID": "Guild ID", "Help": "Помощ", - "Game": "игрови", + "Game": "Игра", "Custom": "Потребителски", "infiniteRetention": "Задайте стойност 0 за безкрайно съхранение.", "Monitor": "Монитор | Монитори", From 609a61e6007c49a4d20bc46dcb7ea05652b75e44 Mon Sep 17 00:00:00 2001 From: Michal Date: Tue, 14 Feb 2023 19:08:52 +0000 Subject: [PATCH 278/296] Translated using Weblate (Czech) Currently translated at 100.0% (697 of 697 strings) Co-authored-by: Michal Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/cs/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/cs-CZ.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lang/cs-CZ.json b/src/lang/cs-CZ.json index 18a3d333..afcb6f1b 100644 --- a/src/lang/cs-CZ.json +++ b/src/lang/cs-CZ.json @@ -674,7 +674,7 @@ "Proto Content": "Proto obsah", "Economy": "Úsporná", "Lowcost": "Nízkonákladová", - "high": "high", + "high": "vysoká", "General Monitor Type": "Obecný typ dohledu", "Passive Monitor Type": "Pasivní typ dohledu", "Specific Monitor Type": "Konkrétní typ dohledu", From 1877b90b3ac592fbd7a5b7fbfb4876451aad504b Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Tue, 14 Feb 2023 19:08:52 +0000 Subject: [PATCH 279/296] Translated using Weblate (Finnish) Currently translated at 100.0% (697 of 697 strings) Co-authored-by: Louis Lam Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/fi/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/fi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lang/fi.json b/src/lang/fi.json index 32454526..5a7ce409 100644 --- a/src/lang/fi.json +++ b/src/lang/fi.json @@ -105,7 +105,7 @@ "disableauth.message1": "Oletko varma että haluat poistaa todennuksen käytöstä?", "Please use this option carefully!": "Käytä tätä vaihtoehtoa varoen!", "Remember me": "Muista minut", - "languageName": "Englanti", + "languageName": "Suomi", "Primary Base URL": "Ensisijainen perus-URL-osoite", "pushOptionalParams": "Valinnaiset parametrit: {0}", "Not available, please setup.": "Ei saatavilla, määritä ensin.", From e04a8203dcf8c1cf905f56e0ad834343e152c7ed Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Wed, 15 Feb 2023 03:20:40 +0800 Subject: [PATCH 280/296] Fix npm issue for deploy script --- extra/beta/update-version.js | 3 ++- extra/update-version.js | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/extra/beta/update-version.js b/extra/beta/update-version.js index 7abac5ef..3dafbe8d 100644 --- a/extra/beta/update-version.js +++ b/extra/beta/update-version.js @@ -22,7 +22,8 @@ if (! exists) { fs.writeFileSync("package.json", JSON.stringify(pkg, null, 4) + "\n"); // Also update package-lock.json - childProcess.spawnSync("npm", [ "install" ]); + const npm = /^win/.test(process.platform) ? "npm.cmd" : "npm"; + childProcess.spawnSync(npm, [ "install" ]); commit(version); tag(version); diff --git a/extra/update-version.js b/extra/update-version.js index 246e1c1c..8d78f17d 100644 --- a/extra/update-version.js +++ b/extra/update-version.js @@ -26,7 +26,8 @@ if (! exists) { fs.writeFileSync("package.json", JSON.stringify(pkg, null, 4) + "\n"); // Also update package-lock.json - childProcess.spawnSync("npm", [ "install" ]); + const npm = /^win/.test(process.platform) ? "npm.cmd" : "npm"; + childProcess.spawnSync(npm, [ "install" ]); commit(newVersion); tag(newVersion); From fdc3b2d57a9037c4415d18fe01762e7960a7fd43 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Wed, 15 Feb 2023 03:23:59 +0800 Subject: [PATCH 281/296] Update to 1.20.1 --- package-lock.json | 6 +++--- package.json | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index baf9f4f2..5e57a932 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "uptime-kuma", - "version": "1.20.0-beta.0", + "version": "1.20.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "uptime-kuma", - "version": "1.20.0-beta.0", + "version": "1.20.1", "license": "MIT", "dependencies": { "@grpc/grpc-js": "~1.7.3", @@ -55,7 +55,7 @@ "prom-client": "~13.2.0", "prometheus-api-metrics": "~3.2.1", "protobufjs": "~7.1.1", - "qs": "~6.10.0", + "qs": "~6.10.4", "redbean-node": "~0.2.0", "redis": "~4.5.1", "socket.io": "~4.5.3", diff --git a/package.json b/package.json index 5d4652d6..a3f6066b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "uptime-kuma", - "version": "1.20.0", + "version": "1.20.1", "license": "MIT", "repository": { "type": "git", @@ -39,7 +39,7 @@ "build-docker-nightly-amd64": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:nightly-amd64 --target nightly . --push --progress plain", "build-docker-pr-test": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64 -t louislam/uptime-kuma:pr-test --target pr-test . --push", "upload-artifacts": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg VERSION --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain", - "setup": "git checkout 1.20.0 && npm ci --production && npm run download-dist", + "setup": "git checkout 1.20.1 && npm ci --production && npm run download-dist", "download-dist": "node extra/download-dist.js", "mark-as-nightly": "node extra/mark-as-nightly.js", "reset-password": "node extra/reset-password.js", From dd1d71530fc3eeb435e669b2c31cc6daf7710a38 Mon Sep 17 00:00:00 2001 From: Luke Hamburg <1992842+luckman212@users.noreply.github.com> Date: Wed, 15 Feb 2023 14:06:29 -0500 Subject: [PATCH 282/296] sorted tags on dashboard see https://github.com/louislam/uptime-kuma/issues/2785 --- server/model/monitor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/model/monitor.js b/server/model/monitor.js index 4cbb56e1..bbeb0da0 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -143,7 +143,7 @@ class Monitor extends BeanModel { * @returns {Promise[]>} */ async getTags() { - return await R.getAll("SELECT mt.*, tag.name, tag.color FROM monitor_tag mt JOIN tag ON mt.tag_id = tag.id WHERE mt.monitor_id = ?", [ this.id ]); + return await R.getAll("SELECT mt.*, tag.name, tag.color FROM monitor_tag mt JOIN tag ON mt.tag_id = tag.id WHERE mt.monitor_id = ? ORDER BY tag.name", [ this.id ]); } /** From cf32b8bc64b866c9d050aa1747a123bc78d81e9e Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Mon, 20 Feb 2023 20:26:53 +0800 Subject: [PATCH 283/296] Read latest version from website and add `Run when system starts` --- extra/exe-builder/.gitignore | 1 + extra/exe-builder/App.config | 26 ++++- extra/exe-builder/DownloadForm.cs | 14 ++- extra/exe-builder/FodyWeavers.xml | 3 + extra/exe-builder/FodyWeavers.xsd | 141 ++++++++++++++++++++++++++++ extra/exe-builder/Program.cs | 28 +++++- extra/exe-builder/UptimeKuma.csproj | 104 +++++++++++++++++++- extra/exe-builder/Version.cs | 9 ++ extra/exe-builder/packages.config | 52 ++++++++++ 9 files changed, 373 insertions(+), 5 deletions(-) create mode 100644 extra/exe-builder/.gitignore create mode 100644 extra/exe-builder/FodyWeavers.xml create mode 100644 extra/exe-builder/FodyWeavers.xsd create mode 100644 extra/exe-builder/Version.cs create mode 100644 extra/exe-builder/packages.config diff --git a/extra/exe-builder/.gitignore b/extra/exe-builder/.gitignore new file mode 100644 index 00000000..d52874b6 --- /dev/null +++ b/extra/exe-builder/.gitignore @@ -0,0 +1 @@ +packages/ diff --git a/extra/exe-builder/App.config b/extra/exe-builder/App.config index 09265d8b..e1ab3695 100644 --- a/extra/exe-builder/App.config +++ b/extra/exe-builder/App.config @@ -1,4 +1,4 @@ - + @@ -7,4 +7,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extra/exe-builder/DownloadForm.cs b/extra/exe-builder/DownloadForm.cs index f16af422..aed8bd29 100644 --- a/extra/exe-builder/DownloadForm.cs +++ b/extra/exe-builder/DownloadForm.cs @@ -8,6 +8,7 @@ using System.Net; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; +using Newtonsoft.Json; namespace UptimeKuma { public partial class DownloadForm : Form { @@ -23,9 +24,18 @@ namespace UptimeKuma { webClient.DownloadProgressChanged += DownloadProgressChanged; webClient.DownloadFileCompleted += DownloadFileCompleted; + label.Text = "Reading latest version..."; + + // Read json from https://uptime.kuma.pet/version + var versionObj = JsonConvert.DeserializeObject(new WebClient().DownloadString("https://uptime.kuma.pet/version")); + + + var nodeVersion = versionObj.nodejs; + var uptimeKumaVersion = versionObj.latest; + if (!Directory.Exists("node")) { downloadQueue.Enqueue(new DownloadItem { - URL = "https://nodejs.org/dist/v16.17.1/node-v16.17.1-win-x64.zip", + URL = $"https://nodejs.org/dist/v{nodeVersion}/node-v{nodeVersion}-win-x64.zip", Filename = "node.zip", TargetFolder = "node" }); @@ -33,7 +43,7 @@ namespace UptimeKuma { if (!Directory.Exists("node")) { downloadQueue.Enqueue(new DownloadItem { - URL = "https://github.com/louislam/uptime-kuma/archive/refs/tags/1.18.3.zip", + URL = $"https://github.com/louislam/uptime-kuma/archive/refs/tags/{uptimeKumaVersion}.zip", Filename = "core.zip", TargetFolder = "core" }); diff --git a/extra/exe-builder/FodyWeavers.xml b/extra/exe-builder/FodyWeavers.xml new file mode 100644 index 00000000..f1dea8fc --- /dev/null +++ b/extra/exe-builder/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/extra/exe-builder/FodyWeavers.xsd b/extra/exe-builder/FodyWeavers.xsd new file mode 100644 index 00000000..ff119f71 --- /dev/null +++ b/extra/exe-builder/FodyWeavers.xsd @@ -0,0 +1,141 @@ + + + + + + + + + + + + A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks + + + + + A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks. + + + + + A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks + + + + + A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks. + + + + + A list of unmanaged 32 bit assembly names to include, delimited with line breaks. + + + + + A list of unmanaged 64 bit assembly names to include, delimited with line breaks. + + + + + The order of preloaded assemblies, delimited with line breaks. + + + + + + This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file. + + + + + Controls if .pdbs for reference assemblies are also embedded. + + + + + Controls if runtime assemblies are also embedded. + + + + + Controls whether the runtime assemblies are embedded with their full path or only with their assembly name. + + + + + Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option. + + + + + As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off. + + + + + Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code. + + + + + Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior. + + + + + A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with | + + + + + A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |. + + + + + A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with | + + + + + A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with |. + + + + + A list of unmanaged 32 bit assembly names to include, delimited with |. + + + + + A list of unmanaged 64 bit assembly names to include, delimited with |. + + + + + The order of preloaded assemblies, delimited with |. + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/extra/exe-builder/Program.cs b/extra/exe-builder/Program.cs index 82c76b05..27e345b7 100644 --- a/extra/exe-builder/Program.cs +++ b/extra/exe-builder/Program.cs @@ -8,6 +8,7 @@ using System.Reflection; using System.Runtime.InteropServices; using System.Threading.Tasks; using System.Windows.Forms; +using Microsoft.Win32; using UptimeKuma.Properties; namespace UptimeKuma { @@ -25,17 +26,27 @@ namespace UptimeKuma { public class UptimeKumaApplicationContext : ApplicationContext { + const string appName = "Uptime Kuma"; + private NotifyIcon trayIcon; private Process process; + private MenuItem runWhenStarts; + + private RegistryKey registryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); + public UptimeKumaApplicationContext() { trayIcon = new NotifyIcon(); + runWhenStarts = new MenuItem("Run when system starts", RunWhenStarts); + runWhenStarts.Checked = registryKey.GetValue(appName) != null; + trayIcon.Icon = Icon.ExtractAssociatedIcon(Assembly.GetExecutingAssembly().Location); trayIcon.ContextMenu = new ContextMenu(new MenuItem[] { new("Open", Open), //new("Debug Console", DebugConsole), + runWhenStarts, new("Check for Update...", CheckForUpdate), new("Visit GitHub...", VisitGitHub), new("About", About), @@ -59,6 +70,21 @@ namespace UptimeKuma { form.Show(); } + private void RunWhenStarts(object sender, EventArgs e) { + if (registryKey == null) { + MessageBox.Show("Error: Unable to set startup registry key."); + return; + } + + if (runWhenStarts.Checked) { + registryKey.DeleteValue(appName, false); + runWhenStarts.Checked = false; + } else { + registryKey.SetValue(appName, Application.ExecutablePath); + runWhenStarts.Checked = true; + } + } + void StartProcess() { var startInfo = new ProcessStartInfo { FileName = "node/node.exe", @@ -103,7 +129,7 @@ namespace UptimeKuma { void About(object sender, EventArgs e) { - MessageBox.Show("Uptime Kuma v1.0.0" + Environment.NewLine + "© 2022 Louis Lam", "Info"); + MessageBox.Show("Uptime Kuma Windows Runtime v1.0.0" + Environment.NewLine + "© 2023 Louis Lam", "Info"); } void Exit(object sender, EventArgs e) diff --git a/extra/exe-builder/UptimeKuma.csproj b/extra/exe-builder/UptimeKuma.csproj index 2ad857b2..3f55649e 100644 --- a/extra/exe-builder/UptimeKuma.csproj +++ b/extra/exe-builder/UptimeKuma.csproj @@ -1,5 +1,6 @@  + Debug @@ -38,18 +39,104 @@ COPY "$(SolutionDir)bin\Debug\uptime-kuma.exe" "%UserProfile%\Desktop\uptime-kuma-win64\" + + packages\Costura.Fody.5.7.0\lib\netstandard1.0\Costura.dll + + + packages\Microsoft.Win32.Primitives.4.3.0\lib\net46\Microsoft.Win32.Primitives.dll + + + + packages\Newtonsoft.Json.13.0.2\lib\net45\Newtonsoft.Json.dll + + + packages\System.AppContext.4.3.0\lib\net463\System.AppContext.dll + + + + packages\System.Console.4.3.0\lib\net46\System.Console.dll + + + packages\System.Diagnostics.DiagnosticSource.4.3.0\lib\net46\System.Diagnostics.DiagnosticSource.dll + + + packages\System.Diagnostics.Tracing.4.3.0\lib\net462\System.Diagnostics.Tracing.dll + + + packages\System.Globalization.Calendars.4.3.0\lib\net46\System.Globalization.Calendars.dll + + + packages\System.IO.4.3.0\lib\net462\System.IO.dll + + + packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll + + + packages\System.IO.Compression.ZipFile.4.3.0\lib\net46\System.IO.Compression.ZipFile.dll + + + packages\System.IO.FileSystem.4.3.0\lib\net46\System.IO.FileSystem.dll + + + packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll + + + packages\System.Linq.4.3.0\lib\net463\System.Linq.dll + + + packages\System.Linq.Expressions.4.3.0\lib\net463\System.Linq.Expressions.dll + + + packages\System.Net.Http.4.3.0\lib\net46\System.Net.Http.dll + + + packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll + + + + packages\System.Reflection.4.3.0\lib\net462\System.Reflection.dll + + + packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll + + + packages\System.Runtime.Extensions.4.3.0\lib\net462\System.Runtime.Extensions.dll + + + packages\System.Runtime.InteropServices.4.3.0\lib\net463\System.Runtime.InteropServices.dll + + + packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll + + + packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll + + + packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll + + + packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll + + + packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll + + + packages\System.Text.RegularExpressions.4.3.0\lib\net463\System.Text.RegularExpressions.dll + - + + packages\System.Xml.ReaderWriter.4.3.0\lib\net46\System.Xml.ReaderWriter.dll + @@ -60,6 +147,7 @@ + DownloadForm.cs @@ -75,6 +163,7 @@ favicon.ico + SettingsSingleFileGenerator Settings.Designer.cs @@ -88,5 +177,18 @@ + + + + + + + This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105.The missing file is {0}. + + + + + + \ No newline at end of file diff --git a/extra/exe-builder/Version.cs b/extra/exe-builder/Version.cs new file mode 100644 index 00000000..896c7a24 --- /dev/null +++ b/extra/exe-builder/Version.cs @@ -0,0 +1,9 @@ +namespace UptimeKuma { + public class Version { + public string latest { get; set; } + public string slow { get; set; } + public string beta { get; set; } + public string nodejs { get; set; } + public string exe { get; set; } + } +} diff --git a/extra/exe-builder/packages.config b/extra/exe-builder/packages.config new file mode 100644 index 00000000..82dd7c3b --- /dev/null +++ b/extra/exe-builder/packages.config @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 372c6b90783ec3fdc7ac0ebbd7a58f6a0de2ecdd Mon Sep 17 00:00:00 2001 From: Andreas Brett Date: Mon, 20 Feb 2023 16:09:17 +0100 Subject: [PATCH 284/296] add markdown support for description --- src/pages/StatusPage.vue | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/pages/StatusPage.vue b/src/pages/StatusPage.vue index dcee15e7..f4a6eb76 100644 --- a/src/pages/StatusPage.vue +++ b/src/pages/StatusPage.vue @@ -20,6 +20,9 @@
    +
    + {{ $t("markdownSupported") }} +
    @@ -258,7 +261,9 @@ {{ $t("Description") }}: - + + +
    @@ -500,6 +505,10 @@ export default { return DOMPurify.sanitize(marked(this.incident.content)); }, + descriptionHTML() { + return DOMPurify.sanitize(marked(this.config.description)); + }, + footerHTML() { return DOMPurify.sanitize(marked(this.config.footerText)); }, From 4642f9be0af92e6e8cde9a67b8c460541b665ffa Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Mon, 20 Feb 2023 23:15:49 +0800 Subject: [PATCH 285/296] Fix download-dist.js do not exit sometimes --- extra/download-dist.js | 1 + 1 file changed, 1 insertion(+) diff --git a/extra/download-dist.js b/extra/download-dist.js index b04beec7..a854ca8b 100644 --- a/extra/download-dist.js +++ b/extra/download-dist.js @@ -47,6 +47,7 @@ function download(url) { }); } console.log("Done"); + process.exit(0); }); tarStream.on("error", () => { From 22902139d2885fea7ee3d985f6755835f5f095a8 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Tue, 21 Feb 2023 02:50:25 +0800 Subject: [PATCH 286/296] Implement update --- extra/exe-builder/DownloadForm.cs | 39 ++++++++++++++++++++++-------- extra/exe-builder/Program.cs | 40 +++++++++++++++++++++++++++++-- 2 files changed, 67 insertions(+), 12 deletions(-) diff --git a/extra/exe-builder/DownloadForm.cs b/extra/exe-builder/DownloadForm.cs index aed8bd29..28a57c52 100644 --- a/extra/exe-builder/DownloadForm.cs +++ b/extra/exe-builder/DownloadForm.cs @@ -27,11 +27,12 @@ namespace UptimeKuma { label.Text = "Reading latest version..."; // Read json from https://uptime.kuma.pet/version - var versionObj = JsonConvert.DeserializeObject(new WebClient().DownloadString("https://uptime.kuma.pet/version")); - + var versionJson = new WebClient().DownloadString("https://uptime.kuma.pet/version"); + var versionObj = JsonConvert.DeserializeObject(versionJson); var nodeVersion = versionObj.nodejs; var uptimeKumaVersion = versionObj.latest; + var hasUpdateFile = File.Exists("update"); if (!Directory.Exists("node")) { downloadQueue.Enqueue(new DownloadItem { @@ -41,12 +42,30 @@ namespace UptimeKuma { }); } - if (!Directory.Exists("node")) { + if (!Directory.Exists("core") || hasUpdateFile) { + + // It is update, rename the core folder to core.old + if (Directory.Exists("core")) { + // Remove the old core.old folder + if (Directory.Exists("core.old")) { + Directory.Delete("core.old", true); + } + + Directory.Move("core", "core.old"); + } + downloadQueue.Enqueue(new DownloadItem { URL = $"https://github.com/louislam/uptime-kuma/archive/refs/tags/{uptimeKumaVersion}.zip", Filename = "core.zip", TargetFolder = "core" }); + + File.WriteAllText("version.json", versionJson); + + // Delete the update file + if (hasUpdateFile) { + File.Delete("update"); + } } DownloadNextFile(); @@ -75,9 +94,12 @@ namespace UptimeKuma { void npmSetup() { labelData.Text = ""; + var npm = "..\\node\\npm.cmd"; + var cmd = $"{npm} ci --production & {npm} run download-dist & exit"; + var startInfo = new ProcessStartInfo { FileName = "cmd.exe", - Arguments = "run setup", + Arguments = $"/k \"{cmd}\"", RedirectStandardOutput = false, RedirectStandardError = false, RedirectStandardInput = true, @@ -89,11 +111,11 @@ namespace UptimeKuma { var process = new Process(); process.StartInfo = startInfo; process.EnableRaisingEvents = true; - process.Exited += (object _, EventArgs e) => { + process.Exited += (_, e) => { progressBar.Value = 100; if (process.ExitCode == 0) { - Task.Delay(2000).ContinueWith((task) => { + Task.Delay(2000).ContinueWith(_ => { Application.Restart(); }); label.Text = "Done"; @@ -105,10 +127,7 @@ namespace UptimeKuma { process.Start(); label.Text = "Installing dependencies and download dist files"; progressBar.Value = 50; - - process.StandardInput.WriteLine("\"../node/npm\" ci --production"); - process.StandardInput.WriteLine("\"../node/npm\" run download-dist"); - process.StandardInput.WriteLine("exit"); + process.WaitForExit(); } void DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) { diff --git a/extra/exe-builder/Program.cs b/extra/exe-builder/Program.cs index 27e345b7..1385e830 100644 --- a/extra/exe-builder/Program.cs +++ b/extra/exe-builder/Program.cs @@ -4,11 +4,13 @@ using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; +using System.Net; using System.Reflection; using System.Runtime.InteropServices; using System.Threading.Tasks; using System.Windows.Forms; using Microsoft.Win32; +using Newtonsoft.Json; using UptimeKuma.Properties; namespace UptimeKuma { @@ -56,7 +58,9 @@ namespace UptimeKuma { trayIcon.MouseDoubleClick += new MouseEventHandler(Open); trayIcon.Visible = true; - if (Directory.Exists("core") && Directory.Exists("node") && Directory.Exists("core/node_modules") && Directory.Exists("core/dist")) { + var hasUpdateFile = File.Exists("update"); + + if (!hasUpdateFile && Directory.Exists("core") && Directory.Exists("node") && Directory.Exists("core/node_modules") && Directory.Exists("core/dist")) { // Go go go StartProcess(); } else { @@ -110,6 +114,10 @@ namespace UptimeKuma { } } + void StopProcess() { + process?.Kill(); + } + void Open(object sender, EventArgs e) { Process.Start("http://localhost:3001"); } @@ -119,7 +127,35 @@ namespace UptimeKuma { } void CheckForUpdate(object sender, EventArgs e) { - Process.Start("https://github.com/louislam/uptime-kuma/releases"); + var needUpdate = false; + + // Check version.json exists + if (File.Exists("version.json")) { + // Load version.json and compare with the latest version from GitHub + var currentVersionObj = JsonConvert.DeserializeObject(File.ReadAllText("version.json")); + + var versionJson = new WebClient().DownloadString("https://uptime.kuma.pet/version"); + var latestVersionObj = JsonConvert.DeserializeObject(versionJson); + + // Compare version, if the latest version is newer, then update + if (new System.Version(latestVersionObj.latest).CompareTo(new System.Version(currentVersionObj.latest)) > 0) { + var result = MessageBox.Show("A new version is available. Do you want to update?", "Update", MessageBoxButtons.YesNo); + if (result == DialogResult.Yes) { + // Create a empty file `update`, so the app will download the core files again at startup + File.Create("update").Close(); + + trayIcon.Visible = false; + process?.Kill(); + + // Restart the app, it will download the core files again at startup + Application.Restart(); + } + } else { + MessageBox.Show("You are using the latest version."); + } + } + + } void VisitGitHub(object sender, EventArgs e) From 0e38391454f012c6f0e87ab0e768b6aa15ab0ee8 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Tue, 21 Feb 2023 03:11:29 +0800 Subject: [PATCH 287/296] Fix dpi issue using app.manifest --- extra/exe-builder/App.config | 5 +- extra/exe-builder/UptimeKuma.csproj | 390 ++++++++++++++-------------- extra/exe-builder/app.manifest | 28 ++ 3 files changed, 226 insertions(+), 197 deletions(-) create mode 100644 extra/exe-builder/app.manifest diff --git a/extra/exe-builder/App.config b/extra/exe-builder/App.config index e1ab3695..2514085c 100644 --- a/extra/exe-builder/App.config +++ b/extra/exe-builder/App.config @@ -1,12 +1,9 @@  - + - - - diff --git a/extra/exe-builder/UptimeKuma.csproj b/extra/exe-builder/UptimeKuma.csproj index 3f55649e..6b7534af 100644 --- a/extra/exe-builder/UptimeKuma.csproj +++ b/extra/exe-builder/UptimeKuma.csproj @@ -1,194 +1,198 @@ - - - - - - Debug - AnyCPU - {2DB53988-1D93-4AC0-90C4-96ADEAAC5C04} - WinExe - UptimeKuma - uptime-kuma - v4.7.2 - 512 - true - true - ..\..\public\favicon.ico - 9 - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - COPY "$(SolutionDir)bin\Debug\uptime-kuma.exe" "%UserProfile%\Desktop\uptime-kuma-win64\" - - - - packages\Costura.Fody.5.7.0\lib\netstandard1.0\Costura.dll - - - packages\Microsoft.Win32.Primitives.4.3.0\lib\net46\Microsoft.Win32.Primitives.dll - - - - packages\Newtonsoft.Json.13.0.2\lib\net45\Newtonsoft.Json.dll - - - - packages\System.AppContext.4.3.0\lib\net463\System.AppContext.dll - - - - packages\System.Console.4.3.0\lib\net46\System.Console.dll - - - - packages\System.Diagnostics.DiagnosticSource.4.3.0\lib\net46\System.Diagnostics.DiagnosticSource.dll - - - packages\System.Diagnostics.Tracing.4.3.0\lib\net462\System.Diagnostics.Tracing.dll - - - packages\System.Globalization.Calendars.4.3.0\lib\net46\System.Globalization.Calendars.dll - - - packages\System.IO.4.3.0\lib\net462\System.IO.dll - - - packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll - - - - packages\System.IO.Compression.ZipFile.4.3.0\lib\net46\System.IO.Compression.ZipFile.dll - - - packages\System.IO.FileSystem.4.3.0\lib\net46\System.IO.FileSystem.dll - - - packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll - - - packages\System.Linq.4.3.0\lib\net463\System.Linq.dll - - - packages\System.Linq.Expressions.4.3.0\lib\net463\System.Linq.Expressions.dll - - - packages\System.Net.Http.4.3.0\lib\net46\System.Net.Http.dll - - - packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll - - - - packages\System.Reflection.4.3.0\lib\net462\System.Reflection.dll - - - packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll - - - packages\System.Runtime.Extensions.4.3.0\lib\net462\System.Runtime.Extensions.dll - - - packages\System.Runtime.InteropServices.4.3.0\lib\net463\System.Runtime.InteropServices.dll - - - packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll - - - packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll - - - packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll - - - packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll - - - packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll - - - packages\System.Text.RegularExpressions.4.3.0\lib\net463\System.Text.RegularExpressions.dll - - - - - - - - - - - packages\System.Xml.ReaderWriter.4.3.0\lib\net46\System.Xml.ReaderWriter.dll - - - - - Form - - - DownloadForm.cs - - - - - - DownloadForm.cs - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - - - favicon.ico - - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - - - - - - - - - - - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105.The missing file is {0}. - - - - - - + + + + + + Debug + AnyCPU + {2DB53988-1D93-4AC0-90C4-96ADEAAC5C04} + WinExe + UptimeKuma + uptime-kuma + v4.7.2 + 512 + true + true + ..\..\public\favicon.ico + 9 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + app.manifest + + + COPY "$(SolutionDir)bin\Debug\uptime-kuma.exe" "%UserProfile%\Desktop\uptime-kuma-win64\" + + + + packages\Costura.Fody.5.7.0\lib\netstandard1.0\Costura.dll + + + packages\Microsoft.Win32.Primitives.4.3.0\lib\net46\Microsoft.Win32.Primitives.dll + + + + packages\Newtonsoft.Json.13.0.2\lib\net45\Newtonsoft.Json.dll + + + + packages\System.AppContext.4.3.0\lib\net463\System.AppContext.dll + + + + packages\System.Console.4.3.0\lib\net46\System.Console.dll + + + + packages\System.Diagnostics.DiagnosticSource.4.3.0\lib\net46\System.Diagnostics.DiagnosticSource.dll + + + packages\System.Diagnostics.Tracing.4.3.0\lib\net462\System.Diagnostics.Tracing.dll + + + packages\System.Globalization.Calendars.4.3.0\lib\net46\System.Globalization.Calendars.dll + + + packages\System.IO.4.3.0\lib\net462\System.IO.dll + + + packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll + + + + packages\System.IO.Compression.ZipFile.4.3.0\lib\net46\System.IO.Compression.ZipFile.dll + + + packages\System.IO.FileSystem.4.3.0\lib\net46\System.IO.FileSystem.dll + + + packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll + + + packages\System.Linq.4.3.0\lib\net463\System.Linq.dll + + + packages\System.Linq.Expressions.4.3.0\lib\net463\System.Linq.Expressions.dll + + + packages\System.Net.Http.4.3.0\lib\net46\System.Net.Http.dll + + + packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll + + + + packages\System.Reflection.4.3.0\lib\net462\System.Reflection.dll + + + packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll + + + packages\System.Runtime.Extensions.4.3.0\lib\net462\System.Runtime.Extensions.dll + + + packages\System.Runtime.InteropServices.4.3.0\lib\net463\System.Runtime.InteropServices.dll + + + packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll + + + packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll + + + packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll + + + packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll + + + packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll + + + packages\System.Text.RegularExpressions.4.3.0\lib\net463\System.Text.RegularExpressions.dll + + + + + + + + + + + packages\System.Xml.ReaderWriter.4.3.0\lib\net46\System.Xml.ReaderWriter.dll + + + + + Form + + + DownloadForm.cs + + + + + + DownloadForm.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + favicon.ico + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105.The missing file is {0}. + + + + + + \ No newline at end of file diff --git a/extra/exe-builder/app.manifest b/extra/exe-builder/app.manifest new file mode 100644 index 00000000..4a48528f --- /dev/null +++ b/extra/exe-builder/app.manifest @@ -0,0 +1,28 @@ + + + + + true + PerMonitorV2 + + + + + + + + + + + From 02ddb58686a56146aa3545307067350a45eb2de5 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Tue, 21 Feb 2023 15:16:54 +0800 Subject: [PATCH 288/296] Fix cwd issues --- extra/exe-builder/FS.cs | 65 +++++++++++++++++++++++++++++ extra/exe-builder/UptimeKuma.csproj | 1 + 2 files changed, 66 insertions(+) create mode 100644 extra/exe-builder/FS.cs diff --git a/extra/exe-builder/FS.cs b/extra/exe-builder/FS.cs new file mode 100644 index 00000000..99a63694 --- /dev/null +++ b/extra/exe-builder/FS.cs @@ -0,0 +1,65 @@ +using System.IO; +using System.Reflection; + +namespace UptimeKuma { + + /** + * Current Directory using App location + */ + public class Directory { + private static string baseDir; + + public static string FullPath(string path) { + return Path.Combine(GetBaseDir(), path); + } + + public static string GetBaseDir() { + if (baseDir == null) { + baseDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + } + return baseDir; + } + + public static bool Exists(string path) { + return System.IO.Directory.Exists(FullPath(path)); + } + + public static void Delete(string path, bool recursive) { + System.IO.Directory.Delete(FullPath(path), recursive); + } + + public static void Move(string src, string dest) { + System.IO.Directory.Move(FullPath(src), FullPath(dest)); + } + + public static string[] GetDirectories(string path) { + return System.IO.Directory.GetDirectories(FullPath(path)); + } + } + + public class File { + + private static string FullPath(string path) { + return Directory.FullPath(path); + } + public static bool Exists(string path) { + return System.IO.File.Exists(FullPath(path)); + } + + public static FileStream Create(string path) { + return System.IO.File.Create(FullPath(path)); + } + + public static string ReadAllText(string path) { + return System.IO.File.ReadAllText(FullPath(path)); + } + + public static void Delete(string path) { + System.IO.File.Delete(FullPath(path)); + } + + public static void WriteAllText(string path, string content) { + System.IO.File.WriteAllText(FullPath(path), content); + } + } +} diff --git a/extra/exe-builder/UptimeKuma.csproj b/extra/exe-builder/UptimeKuma.csproj index 6b7534af..1b484d7a 100644 --- a/extra/exe-builder/UptimeKuma.csproj +++ b/extra/exe-builder/UptimeKuma.csproj @@ -148,6 +148,7 @@ DownloadForm.cs + From dad21065cf3e6045bd3a6fcf6a2b5d20f0b9d08b Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Tue, 21 Feb 2023 15:45:18 +0800 Subject: [PATCH 289/296] Update release procedures --- CONTRIBUTING.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 09c94e71..4c6a5587 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -235,6 +235,7 @@ https://github.com/louislam/uptime-kuma/issues?q=sort%3Aupdated-desc 1. Draft a release note 2. Make sure the repo is cleared +3. If the healthcheck is updated, remember to re-compile it: `npm run build-docker-builder-go` 3. `npm run release-final with env vars: `VERSION` and `GITHUB_TOKEN` 4. Wait until the `Press any key to continue` 5. `git push` From 2c62d197a08462fa7fb044f23395eb1464e9a031 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Tue, 21 Feb 2023 16:03:41 +0800 Subject: [PATCH 290/296] [exe] Update dependencies --- extra/exe-builder/App.config | 6 +++- extra/exe-builder/UptimeKuma.csproj | 48 +++++++++++++++++++---------- extra/exe-builder/packages.config | 30 ++++++++++-------- 3 files changed, 53 insertions(+), 31 deletions(-) diff --git a/extra/exe-builder/App.config b/extra/exe-builder/App.config index 2514085c..97eb34af 100644 --- a/extra/exe-builder/App.config +++ b/extra/exe-builder/App.config @@ -20,12 +20,16 @@ - + + + + + diff --git a/extra/exe-builder/UptimeKuma.csproj b/extra/exe-builder/UptimeKuma.csproj index 1b484d7a..bd4e0dea 100644 --- a/extra/exe-builder/UptimeKuma.csproj +++ b/extra/exe-builder/UptimeKuma.csproj @@ -56,13 +56,16 @@ packages\System.AppContext.4.3.0\lib\net463\System.AppContext.dll + + packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll + - - packages\System.Console.4.3.0\lib\net46\System.Console.dll + + packages\System.Console.4.3.1\lib\net46\System.Console.dll - - packages\System.Diagnostics.DiagnosticSource.4.3.0\lib\net46\System.Diagnostics.DiagnosticSource.dll + + packages\System.Diagnostics.DiagnosticSource.7.0.1\lib\net462\System.Diagnostics.DiagnosticSource.dll packages\System.Diagnostics.Tracing.4.3.0\lib\net462\System.Diagnostics.Tracing.dll @@ -92,21 +95,30 @@ packages\System.Linq.Expressions.4.3.0\lib\net463\System.Linq.Expressions.dll - - packages\System.Net.Http.4.3.0\lib\net46\System.Net.Http.dll + + packages\System.Memory.4.5.5\lib\net461\System.Memory.dll + + + packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll + + packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll + packages\System.Reflection.4.3.0\lib\net462\System.Reflection.dll - - packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll + + packages\System.Runtime.4.3.1\lib\net462\System.Runtime.dll - - packages\System.Runtime.Extensions.4.3.0\lib\net462\System.Runtime.Extensions.dll + + packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll + + + packages\System.Runtime.Extensions.4.3.1\lib\net462\System.Runtime.Extensions.dll packages\System.Runtime.InteropServices.4.3.0\lib\net463\System.Runtime.InteropServices.dll @@ -115,7 +127,7 @@ packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll - packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll + packages\System.Security.Cryptography.Algorithms.4.3.1\lib\net463\System.Security.Cryptography.Algorithms.dll packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll @@ -123,11 +135,11 @@ packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll - - packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll + + packages\System.Security.Cryptography.X509Certificates.4.3.2\lib\net461\System.Security.Cryptography.X509Certificates.dll - packages\System.Text.RegularExpressions.4.3.0\lib\net463\System.Text.RegularExpressions.dll + packages\System.Text.RegularExpressions.4.3.1\lib\net463\System.Text.RegularExpressions.dll @@ -138,7 +150,7 @@ - packages\System.Xml.ReaderWriter.4.3.0\lib\net46\System.Xml.ReaderWriter.dll + packages\System.Xml.ReaderWriter.4.3.1\lib\net46\System.Xml.ReaderWriter.dll @@ -186,14 +198,16 @@ - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105.The missing file is {0}. - + + + + \ No newline at end of file diff --git a/extra/exe-builder/packages.config b/extra/exe-builder/packages.config index 82dd7c3b..aca26d67 100644 --- a/extra/exe-builder/packages.config +++ b/extra/exe-builder/packages.config @@ -1,17 +1,27 @@  - - + + - + + + + + + + + + + + + + - - @@ -23,30 +33,24 @@ - - + - - + - - - - \ No newline at end of file From de7df46aa801c725426489a951d5f777d9ef55c7 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Wed, 22 Feb 2023 04:27:12 +0800 Subject: [PATCH 291/296] Sort the notification list by name and remove translation keys of brand names or product names --- src/components/NotificationDialog.vue | 74 +++++++++++++++++++++++-- src/components/notifications/Gorush.vue | 2 +- src/lang/en.json | 29 ---------- src/lang/zh-CN.json | 2 - 4 files changed, 71 insertions(+), 36 deletions(-) diff --git a/src/components/NotificationDialog.vue b/src/components/NotificationDialog.vue index 0ca95c22..02ddce80 100644 --- a/src/components/NotificationDialog.vue +++ b/src/components/NotificationDialog.vue @@ -13,7 +13,7 @@
    @@ -67,7 +67,7 @@ -