diff --git a/README.md b/README.md index 75ee8b237..ef92cf47e 100644 --- a/README.md +++ b/README.md @@ -17,17 +17,20 @@ Try it! https://demo.uptime.kuma.pet -It is a 5 minutes live demo, all data will be deleted after that. The server is located at Tokyo, if you live far away from here, it may affact your experience. I suggest that you should install to try it. +It is a 10 minutes live demo, all data will be deleted after that. The server is located at Tokyo, if you live far away from here, it may affact your experience. I suggest that you should install to try it. VPS is sponsored by Uptime Kuma sponsors on [Open Collective](https://opencollective.com/uptime-kuma)! Thank you so much! ## โญ Features -* Monitoring uptime for HTTP(s) / TCP / Ping / DNS Record. +* Monitoring uptime for HTTP(s) / TCP / Ping / DNS Record / Push. * Fancy, Reactive, Fast UI/UX. -* Notifications via Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP), and [70+ notification services, click here for the full list](https://github.com/louislam/uptime-kuma/issues/284). +* Notifications via Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP), and [70+ notification services, click here for the full list](https://github.com/louislam/uptime-kuma/tree/master/src/components/notifications). * 20 seconds interval. * [Multi Languages](https://github.com/louislam/uptime-kuma/tree/master/src/languages) +* Simple Status Page +* Ping Chart +* Certificate Info ## ๐Ÿ”ง How to Install diff --git a/ecosystem.config.js b/ecosystem.config.js new file mode 100644 index 000000000..5f4034007 --- /dev/null +++ b/ecosystem.config.js @@ -0,0 +1,6 @@ +module.exports = { + apps: [{ + name: "uptime-kuma", + script: "./server/server.js", + }] +} diff --git a/server/notification-providers/feishu.js b/server/notification-providers/feishu.js new file mode 100644 index 000000000..a3e340301 --- /dev/null +++ b/server/notification-providers/feishu.js @@ -0,0 +1,83 @@ +const NotificationProvider = require("./notification-provider"); +const axios = require("axios"); +const { DOWN, UP } = require("../../src/util"); + +class Feishu extends NotificationProvider { + name = "Feishu"; + + async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { + let okMsg = "Sent Successfully."; + let feishuWebHookUrl = notification.feishuWebHookUrl; + + try { + if (heartbeatJSON == null) { + let testdata = { + msg_type: "text", + content: { + text: msg, + }, + }; + await axios.post(feishuWebHookUrl, testdata); + return okMsg; + } + + if (heartbeatJSON["status"] == DOWN) { + let downdata = { + msg_type: "post", + content: { + post: { + zh_cn: { + title: "UptimeKuma Alert: " + monitorJSON["name"], + content: [ + [ + { + tag: "text", + text: + "[Down] " + + heartbeatJSON["msg"] + + "\nTime (UTC): " + + heartbeatJSON["time"], + }, + ], + ], + }, + }, + }, + }; + await axios.post(feishuWebHookUrl, downdata); + return okMsg; + } + + if (heartbeatJSON["status"] == UP) { + let updata = { + msg_type: "post", + content: { + post: { + zh_cn: { + title: "UptimeKuma Alert: " + monitorJSON["name"], + content: [ + [ + { + tag: "text", + text: + "[Up] " + + heartbeatJSON["msg"] + + "\nTime (UTC): " + + heartbeatJSON["time"], + }, + ], + ], + }, + }, + }, + }; + await axios.post(feishuWebHookUrl, updata); + return okMsg; + } + } catch (error) { + this.throwGeneralAxiosError(error); + } + } +} + +module.exports = Feishu; diff --git a/server/notification.js b/server/notification.js index 5b104bf8a..41a0063c3 100644 --- a/server/notification.js +++ b/server/notification.js @@ -18,6 +18,7 @@ const SMTP = require("./notification-providers/smtp"); const Teams = require("./notification-providers/teams"); const Telegram = require("./notification-providers/telegram"); const Webhook = require("./notification-providers/webhook"); +const Feishu = require("./notification-providers/feishu"); class Notification { @@ -35,6 +36,7 @@ class Notification { new Gotify(), new Line(), new LunaSea(), + new Feishu(), new Mattermost(), new Matrix(), new Octopush(), diff --git a/src/components/notifications/Feishu.vue b/src/components/notifications/Feishu.vue new file mode 100644 index 000000000..18dc26422 --- /dev/null +++ b/src/components/notifications/Feishu.vue @@ -0,0 +1,15 @@ + diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index 7d70eea17..140c1180c 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -12,6 +12,7 @@ import Pushy from "./Pushy.vue"; import Octopush from "./Octopush.vue"; import PromoSMS from "./PromoSMS.vue"; import LunaSea from "./LunaSea.vue"; +import Feishu from "./Feishu.vue"; import Apprise from "./Apprise.vue"; import Pushbullet from "./Pushbullet.vue"; import Line from "./Line.vue"; @@ -38,6 +39,7 @@ const NotificationFormList = { "octopush": Octopush, "promosms": PromoSMS, "lunasea": LunaSea, + "Feishu": Feishu, "apprise": Apprise, "pushbullet": Pushbullet, "line": Line, diff --git a/src/languages/en.js b/src/languages/en.js index 119b558e0..d93714f66 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -280,5 +280,6 @@ export default { 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", // End notification form }; diff --git a/src/languages/fr-FR.js b/src/languages/fr-FR.js index 6d65f375c..bcba1f869 100644 --- a/src/languages/fr-FR.js +++ b/src/languages/fr-FR.js @@ -15,15 +15,15 @@ export default { 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.", resoverserverDescription: "Le DNS de cloudflare est utilisรฉ par dรฉfaut, mais vous pouvez le changer si vous le souhaitez.", rrtypeDescription: "Veuillez sรฉlรฉctionner un type d'enregistrement DNS", - pauseMonitorMsg: "Etes vous sur de vouloir mettre en pause cette sonde ?", + 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 tous les vรฉrifications pour cette sonde ?", confirmClearStatisticsMsg: "รŠtes-vous sรปr de vouloir supprimer tous les statistiques ?", - importHandleDescription: "Choisissez 'Ignorer l'existant' si vous voulez ignorer chaque sonde ou notification portant le mรชme nom. L'option 'ร‰craser' supprime tous les sondes et notifications existantes.", - confirmImportMsg: "รŠtes-vous sรปr d'importer la sauvegarde ? Veuillez vous assurer que vous avez sรฉlectionnรฉ la bonne option d'importation.", + 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 2FA.", + tokenValidSettingsMsg: "Le jeton est valide ; Vous pouvez maintenant sauvegarder les paramรจtres 2FA.", confirmEnableTwoFAMsg: "รŠtes-vous sรปr de vouloir activer le 2FA ?", confirmDisableTwoFAMsg: "รŠtes-vous sรปr de vouloir dรฉsactiver le 2FA ?", Settings: "Paramรจtres", @@ -130,13 +130,13 @@ export default { "Clear Data": "Effacer les donnรฉes", Events: "Evรฉnements", Heartbeats: "Vรฉrfications", - "Auto Get": "Auto Get", + "Auto Get": "Rรฉcuperer 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 touutes les statistiques", + "Clear all statistics": "Effacer toutes les statistiques", "Skip existing": "Sauter l'existant", Overwrite: "Ecraser", Options: "Options", @@ -152,11 +152,11 @@ export default { Token: "Jeton", "Show URI": "Afficher l'URI", Tags: "ร‰tiquettes", - "Add New below or Select...": "Ajouter nouveau ci-dessous ou sรฉlectionner...", + "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)", + color: "Couleur", + "value (optional)": "Valeur (facultatif)", Gray: "Gris", Red: "Rouge", Orange: "Orange", @@ -185,17 +185,17 @@ export default { "Required": "Requis", "telegram": "Telegram", "Bot Token": "Bot Token", - "You can get a token from": "Vous pouvez avoir un token depuis", + "You can get a token from": "Vous pouvez obtenir un token depuis", "Chat ID": "Chat ID", supportTelegramChatID: "Supporte les messages privรฉs / en groupe / l'ID du salon", - wayToGetTelegramChatID: "Vous pouvez obtenir l'ID du chat en envoyant un message avec le bot puis en rรฉcupรฉrant l'URL pour voir l'ID du salon:", + wayToGetTelegramChatID: "Vous pouvez obtenir l'ID du chat en envoyant un message avec le bot puis en rรฉcupรฉrant l'URL pour voir l'ID du salon :", "YOUR BOT TOKEN HERE": "VOTRE TOKEN BOT ICI", chatIDNotFound: "ID du salon introuvable, envoyez un message via le bot avant", "webhook": "Webhook", "Post URL": "Post URL", "Content Type": "Content Type", - webhookJsonDesc: "{0} est bon pour tous les serveurs HTTP modernes comme express.js", - webhookFormDataDesc: "{multipart} est bon pour du PHP, vous avez juste besoin de mettre le json via {decodeFunction}", + webhookJsonDesc: "{0} est bien/bon pour tous les serveurs HTTP modernes comme express.js", + webhookFormDataDesc: "{multipart} est bien/bon pour du PHP, vous avez juste besoin de mettre le json via/depuis {decodeFunction}", "smtp": "Email (SMTP)", secureOptionNone: "Aucun / STARTTLS (25, 587)", secureOptionTLS: "TLS (465)", @@ -217,8 +217,8 @@ export default { "Number": "Numรฉro", "Recipients": "Destinataires", needSignalAPI: "Vous avez besoin d'un client Signal avec l'API REST.", - wayToCheckSignalURL: "Vous pouvez regarder l'URL sur comment le mettre en place:", - signalImportant: "IMPORTANT: Vous ne pouvez pas mixer les groupes et les numรฉros en destinataires!", + wayToCheckSignalURL: "Vous pouvez regarder l'URL sur comment le mettre en place :", + signalImportant: "IMPORTANT: Vous ne pouvez pas mixer les groupes et les numรฉros en destinataires !", "gotify": "Gotify", "Application Token": "Application Token", "Server URL": "Server URL", @@ -228,9 +228,9 @@ export default { "Channel Name": "Nom du salon", "Uptime Kuma URL": "Uptime Kuma URL", aboutWebhooks: "Plus d'informations sur les Webhooks ici: {0}", - aboutChannelName: "Mettez le nom du salon dans {0} dans Channel Name si vous voulez bypass le salon Webhook. Ex: #autre-salon", + aboutChannelName: "Mettez le nom du salon dans {0} dans 'Channel Name' si vous voulez bypass 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: "Emoji cheat sheet: {0}", + emojiCheatSheet: "Emoji cheat sheet : {0}", "rocket.chat": "Rocket.chat", pushover: "Pushover", pushy: "Pushy", @@ -251,14 +251,14 @@ export default { "SMS Type": "SMS Type", octopushTypePremium: "Premium (Rapide - recommandรฉ pour les alertes)", octopushTypeLowCost: "A bas prix (Lent, bloquรฉ de temps en temps par l'opรฉrateur)", - "Check octopush prices": "Vรฉrifiez les prix d'octopush {0}.", + "Check octopush prices": "Vรฉrifier les prix d'octopush {0}.", octopushPhoneNumber: "Numรฉro de tรฉlรฉphone (format intรฉrn., ex : +33612345678) ", octopushSMSSender: "Nom de l'envoyer : 3-11 caractรจres alphanumรฉriques avec espace (a-zA-Z0-9)", "LunaSea Device ID": "LunaSea Device ID", "Apprise URL": "Apprise URL", - "Example:": "Exemple: {0}", - "Read more:": "En savoir plus: {0}", - "Status:": "Status: {0}", + "Example:": "Exemple : {0}", + "Read more:": "En savoir plus : {0}", + "Status:": "Status : {0}", "Read more": "En savoir plus", appriseInstalled: "Apprise est intallรฉ.", appriseNotInstalled: "Apprise n'est pas intallรฉ. {0}", @@ -272,9 +272,9 @@ export default { wayToGetLineChannelToken: "Premiรจrement accรฉder ร  {0}, crรฉez un Provider et un Salon (Messaging API), puis vous pourrez avoir le Token d'accรจs du salon ainsi que l'Identifiant utilisateur depuis le mรชme menu.", "Icon URL": "Icon URL", aboutIconURL: "Vous pouvez mettre un lien vers l'image dans \"Icon URL\" pour remplacer l'image de profil par dรฉfaut. Ne sera pas utilisรฉ si Icon Emoji est dรฉfini.", - aboutMattermostChannelName: "Vous pouvez remplacer le salon par dรฉfaut que le Webhook utilise en mettant le nom du salon dans le champ \"Channel Name\". Vous aurez besoin de l'activer depuis les paramรจtres de Mattermost. Ex: #autre-salon", + aboutMattermostChannelName: "Vous pouvez remplacer le salon par dรฉfaut que le Webhook utilise en mettant le nom du salon dans le champ \"Channel Name\". Vous aurez besoin de l'activer depuis les paramรจtres de Mattermost. Ex : #autre-salon", "matrix": "Matrix", - promosmsTypeEco: "SMS ECO - Pas chรจre mais lent et souvent surchargรฉ. Limitรฉ uniquement aux dรฉstinataires Polonais.", + promosmsTypeEco: "SMS ECO - Pas cher mais lent et souvent surchargรฉ. Limitรฉ uniquement aux dรฉstinataires Polonais.", promosmsTypeFlash: "SMS FLASH - Le message sera automatiquement affichรฉ sur l'appareil du destinataire. Limitรฉ uniquement aux dรฉstinataires Polonais.", promosmsTypeFull: "SMS FULL - Version Premium des SMS, Vous pouvez mettre le nom de l'expรฉditeur (Vous devez vous enregistrer avant). Fiable pour les alertes.", promosmsTypeSpeed: "SMS SPEED - La plus haute des prioritรฉs dans le systรจme. Trรจs rapide et fiable mais cher (environ le double du prix d'un SMS FULL).", diff --git a/src/languages/ko-KR.js b/src/languages/ko-KR.js index d04ff050a..aef3bf590 100644 --- a/src/languages/ko-KR.js +++ b/src/languages/ko-KR.js @@ -4,18 +4,18 @@ export default { retryCheckEverySecond: "{0}์ดˆ๋งˆ๋‹ค ๋‹ค์‹œ ํ™•์ธํ•ด์š”.", retriesDescription: "์„œ๋น„์Šค๊ฐ€ ์ค‘๋‹จ๋œ ํ›„ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๊ธฐ ์ „ ์ตœ๋Œ€ ์žฌ์‹œ๋„ ํšŸ์ˆ˜", ignoreTLSError: "HTTPS ์›น์‚ฌ์ดํŠธ์—์„œ TLS/SSL ์—๋Ÿฌ ๋ฌด์‹œํ•˜๊ธฐ", - upsideDownModeDescription: "์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ๋ฐ˜๋Œ€๋กœ ํ‘œ์‹œํ•ด์š”. ์„œ๋ฒ„๊ฐ€ ์ž‘๋™ํ•˜๋ฉด ์˜คํ”„๋ผ์ธ์œผ๋กœ ํ‘œ์‹œํ•  ๊ฑฐ์—์š”.", - maxRedirectDescription: "์ตœ๋Œ€ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ํšŸ์ˆ˜์—์š”. 0์„ ์ž…๋ ฅํ•˜๋ฉด ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋ฅผ ๊บผ์š”.", + upsideDownModeDescription: "์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ๋ฐ˜๋Œ€๋กœ ํ‘œ์‹œํ•ด์š”. ์„œ๋ฒ„๊ฐ€ ์ž‘๋™ํ•˜๋ฉด ์˜คํ”„๋ผ์ธ์œผ๋กœ ํ‘œ์‹œํ•  ๊ฑฐ์˜ˆ์š”.", + maxRedirectDescription: "์ตœ๋Œ€ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ํšŸ์ˆ˜์˜ˆ์š”. 0์„ ์ž…๋ ฅํ•˜๋ฉด ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋ฅผ ๊บผ์š”.", acceptedStatusCodesDescription: "์‘๋‹ต ์„ฑ๊ณต์œผ๋กœ ๊ฐ„์ฃผํ•  ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ์ •ํ•ด์š”.", passwordNotMatchMsg: "๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์ž…๋ ฅ์ด ์ผ์น˜ํ•˜์ง€ ์•Š์•„์š”.", notificationDescription: "๋ชจ๋‹ˆํ„ฐ๋ง์— ์•Œ๋ฆผ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”.", - keywordDescription: "Html ์ด๋‚˜ JSON์—์„œ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ด ํ‚ค์›Œ๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•ด์š”.", + keywordDescription: "HTML ์ด๋‚˜ JSON์—์„œ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ด ํ‚ค์›Œ๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•ด์š”.", pauseDashboardHome: "์ผ์‹œ ์ •์ง€", deleteMonitorMsg: "์ •๋ง ์ด ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์‚ญ์ œํ• ๊นŒ์š”?", deleteNotificationMsg: "์ •๋ง ์ด ์•Œ๋ฆผ์„ ๋ชจ๋“  ๋ชจ๋‹ˆํ„ฐ๋ง์—์„œ ์‚ญ์ œํ• ๊นŒ์š”?", - resoverserverDescription: "Cloudflare๊ฐ€ ๊ธฐ๋ณธ ์„œ๋ฒ„์—์š”, ์›ํ•œ๋‹ค๋ฉด ์–ธ์ œ๋‚˜ ๋‹ค๋ฅธ resolver ์„œ๋ฒ„๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์–ด์š”.", + resoverserverDescription: "Cloudflare๊ฐ€ ๊ธฐ๋ณธ ์„œ๋ฒ„์˜ˆ์š”, ์›ํ•œ๋‹ค๋ฉด ์–ธ์ œ๋‚˜ ๋‹ค๋ฅธ Resolver ์„œ๋ฒ„๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์–ด์š”.", rrtypeDescription: "๋ชจ๋‹ˆํ„ฐ๋งํ•  RR-Type์„ ์„ ํƒํ•ด์š”.", - pauseMonitorMsg: "์ •๋ง ์ด ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์ผ์‹œ ์ •์ง€ ํ• ๊นŒ์š”?", + pauseMonitorMsg: "์ •๋ง ์ด ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์ผ์‹œ ์ •์ง€ํ• ๊นŒ์š”?", enableDefaultNotificationDescription: "์ƒˆ๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ๋ชจ๋“  ๋ชจ๋‹ˆํ„ฐ๋ง์— ์ด ์•Œ๋ฆผ์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”ํ•ด์š”. ๊ฐ ๋ชจ๋‹ˆํ„ฐ์— ๋Œ€ํ•ด ๋ณ„๋„๋กœ ์•Œ๋ฆผ์„ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์–ด์š”.", clearEventsMsg: "์ •๋ง ์ด ๋ชจ๋‹ˆํ„ฐ๋ง์— ๋Œ€ํ•œ ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ์‚ญ์ œํ• ๊นŒ์š”?", clearHeartbeatsMsg: "์ •๋ง ์ด ๋ชจ๋‹ˆํ„ฐ๋ง์— ๋Œ€ํ•œ ๋ชจ๋“  ํ•˜ํŠธ๋น„ํŠธ๋ฅผ ์‚ญ์ œํ• ๊นŒ์š”?", @@ -24,8 +24,8 @@ export default { confirmImportMsg: "์ •๋ง ๋ฐฑ์—…์„ ๊ฐ€์ ธ์˜ฌ๊นŒ์š”? ๊ฐ€์ ธ์˜ค๊ธฐ ์˜ต์…˜์„ ์ œ๋Œ€๋กœ ์„ค์ •ํ–ˆ๋Š”์ง€ ๋‹ค์‹œ ํ™•์ธํ•ด์ฃผ์„ธ์š”.", twoFAVerifyLabel: "ํ† ํฐ์„ ์ž…๋ ฅํ•ด 2๋‹จ๊ณ„ ์ธ์ฆ์ด ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ด์ฃผ์„ธ์š”.", tokenValidSettingsMsg: "ํ† ํฐ์ด ์œ ํšจํ•ด์š”! ์ด์ œ 2๋‹จ๊ณ„ ์ธ์ฆ ์„ค์ •์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์–ด์š”.", - confirmEnableTwoFAMsg: "์ •๋ง 2๋‹จ๊ณ„ ์ธ์ฆ์„ ํ™œ์„ฑํ™” ํ• ๊นŒ์š”?", - confirmDisableTwoFAMsg: "์ •๋ง 2๋‹จ๊ณ„ ์ธ์ฆ์„ ๋น„ํ™œ์„ฑํ™” ํ• ๊นŒ์š”?", + confirmEnableTwoFAMsg: "์ •๋ง 2๋‹จ๊ณ„ ์ธ์ฆ์„ ํ™œ์„ฑํ™”ํ• ๊นŒ์š”?", + confirmDisableTwoFAMsg: "์ •๋ง 2๋‹จ๊ณ„ ์ธ์ฆ์„ ๋น„ํ™œ์„ฑํ™”ํ• ๊นŒ์š”?", Settings: "์„ค์ •", Dashboard: "๋Œ€์‹œ๋ณด๋“œ", "New Update": "์ƒˆ๋กœ์šด ์—…๋ฐ์ดํŠธ", @@ -77,7 +77,7 @@ export default { "Accepted Status Codes": "์‘๋‹ต ์„ฑ๊ณต ์ƒํƒœ ์ฝ”๋“œ", Save: "์ €์žฅ", Notifications: "์•Œ๋ฆผ", - "Not available, please setup.": "์กด์žฌํ•˜์ง€ ์•Š์•„์š”, ์ƒˆ๋กœ์šด๊ฑฐ ํ•˜๋‚˜ ๋งŒ๋“œ๋Š”๊ฑด ์–ด๋•Œ์š”?", + "Not available, please setup.": "์กด์žฌํ•˜์ง€ ์•Š์•„์š”, ์ƒˆ๋กœ์šด ๊ฑฐ ํ•˜๋‚˜ ๋งŒ๋“œ๋Š” ๊ฑด ์–ด๋•Œ์š”?", "Setup Notification": "์•Œ๋ฆผ ์„ค์ •", Light: "๋ผ์ดํŠธ", Dark: "๋‹คํฌ", @@ -158,10 +158,10 @@ export default { color: "์ƒ‰์ƒ", "value (optional)": "๊ฐ’ (์„ ํƒ)", Gray: "ํšŒ์ƒ‰", - Red: "๋นจ๊ฐ•์ƒ‰", + Red: "๋นจ๊ฐ„์ƒ‰", Orange: "์ฃผํ™ฉ์ƒ‰", Green: "์ดˆ๋ก์ƒ‰", - Blue: "ํŒŒ๋ž‘์ƒ‰", + Blue: "ํŒŒ๋ž€์ƒ‰", Indigo: "๋‚จ์ƒ‰", Purple: "๋ณด๋ผ์ƒ‰", Pink: "ํ•‘ํฌ์ƒ‰", @@ -175,9 +175,9 @@ export default { "Partially Degraded Service": "์ผ๋ถ€ ์‹œ์Šคํ…œ ๋น„์ •์ƒ", "Degraded Service": "๋ชจ๋“  ์‹œ์Šคํ…œ ๋น„์ •์ƒ", "Add Group": "๊ทธ๋ฃน ์ถ”๊ฐ€", - "Add a monitor": "๋ชจ๋‹ˆํ„ฐ๋ง ์ถ”๊ฐ€r", + "Add a monitor": "๋ชจ๋‹ˆํ„ฐ๋ง ์ถ”๊ฐ€", "Edit Status Page": "์ƒํƒœ ํŽ˜์ด์ง€ ์ˆ˜์ •", - "Go to Dashboard": "๋Œ€์‰ฌ๋ณด๋“œ๋กœ ๊ฐ€๊ธฐ", + "Go to Dashboard": "๋Œ€์‹œ๋ณด๋“œ๋กœ ๊ฐ€๊ธฐ", "Status Page": "์ƒํƒœ ํŽ˜์ด์ง€", defaultNotificationName: "๋‚ด {notification} ์•Œ๋ฆผ ({number})", here: "์—ฌ๊ธฐ", @@ -190,11 +190,11 @@ export default { wayToGetTelegramChatID: "๋ด‡์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด ์ฑ„ํŒ… ID๋ฅผ ์–ป๊ณ  ๋ฐ‘์— URL๋กœ ์ด๋™ํ•ด chat_id๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”.", "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", chatIDNotFound: "์ฑ„ํŒ… ID๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์–ด์š”. ๋จผ์ € ๋ด‡์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด์ฃผ์„ธ์š”.", - webhook: "์›นํ›…", + webhook: "Webhook", "Post URL": "Post URL", "Content Type": "Content Type", webhookJsonDesc: "{0}์€ express.js์™€ ๊ฐ™์€ ์ตœ์‹  HTTP ์„œ๋ฒ„์— ์ ํ•ฉํ•ด์š”.", - webhookFormDataDesc: "{multipart}์€ PHP์— ์ ํ•ฉํ•ด์š”. {decodeFunction}๋ฅผ ๊ธฐ์ค€์œผ๋กœ json์„ ๋””์ฝ”๋”ฉํ•˜๋ฉด ๋˜์–ด์š”.", + webhookFormDataDesc: "{multipart}์€ PHP์— ์ ํ•ฉํ•ด์š”. {decodeFunction}๋ฅผ ๊ธฐ์ค€์œผ๋กœ json์„ ๋””์ฝ”๋”ฉํ•˜๋ฉด ๋ผ์š”.", smtp: "Email (SMTP)", secureOptionNone: "์—†์Œ / STARTTLS (25, 587)", secureOptionTLS: "TLS (465)", @@ -204,14 +204,14 @@ export default { smtpCC: "์ฐธ์กฐ", smtpBCC: "์ˆจ์€ ์ฐธ์กฐ", discord: "Discord", - "Discord Webhook URL": "Discord ์›นํ›… URL", + "Discord Webhook URL": "Discord Webhook URL", wayToGetDiscordURL: "์„œ๋ฒ„ ์„ค์ • -> ์—ฐ๋™ -> ์›นํ›„ํฌ ๋ณด๊ธฐ -> ์ƒˆ ์›นํ›„ํฌ์—์„œ ์–ป์„ ์ˆ˜ ์žˆ์–ด์š”.", "Bot Display Name": "ํ‘œ์‹œ ์ด๋ฆ„", "Prefix Custom Message": "์ ‘๋‘์‚ฌ ๋ฉ”์‹œ์ง€", "Hello @everyone is...": "{'@'}everyone ์„œ๋ฒ„ ์ƒํƒœ ์•Œ๋ฆผ์ด์—์š”...", teams: "Microsoft Teams", - "Webhook URL": "์›นํ›… URL", - wayToGetTeamsURL: "{0}์—์„œ ์›นํ›…์„ ์–ด๋–ป๊ฒŒ ๋งŒ๋“œ๋Š”์ง€ ์•Œ์•„๋ด์š”.", + "Webhook URL": "Webhook URL", + wayToGetTeamsURL: "{0}์—์„œ Webhook์„ ์–ด๋–ป๊ฒŒ ๋งŒ๋“œ๋Š”์ง€ ์•Œ์•„๋ด์š”.", signal: "Signal", Number: "์ˆซ์ž", Recipients: "๋ฐ›๋Š” ์‚ฌ๋žŒ", @@ -226,8 +226,8 @@ export default { "Icon Emoji": "์•„์ด์ฝ˜ ์ด๋ชจ์ง€", "Channel Name": "์ฑ„๋„ ์ด๋ฆ„", "Uptime Kuma URL": "Uptime Kuma URL", - aboutWebhooks: "์›นํ›…์— ๋Œ€ํ•œ ์„ค๋ช…: {0}", - aboutChannelName: "์›นํ›… ์ฑ„๋„์„ ์šฐํšŒํ•˜๋ ค๋ฉด {0} ์ฑ„๋„ ์ด๋ฆ„์นธ์— ์ฑ„๋„ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”. ์˜ˆ: #๊ธฐํƒ€-์ฑ„๋„", + aboutWebhooks: "Webhook์— ๋Œ€ํ•œ ์„ค๋ช…: {0}", + aboutChannelName: "Webhook ์ฑ„๋„์„ ์šฐํšŒํ•˜๋ ค๋ฉด {0} ์ฑ„๋„ ์ด๋ฆ„์นธ์— ์ฑ„๋„ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”. ์˜ˆ: #๊ธฐํƒ€-์ฑ„๋„", aboutKumaURL: "Uptime Kuma URL์นธ์„ ๊ณต๋ฐฑ์œผ๋กœ ๋‘๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ Project Github ํŽ˜์ด์ง€๋กœ ์„ค์ •ํ•ด์š”.", emojiCheatSheet: "์ด๋ชจ์ง€ ๋ชฉ๋ก ์‹œํŠธ: {0}", "rocket.chat": "Rocket.chat", @@ -245,38 +245,38 @@ export default { "Message Title": "๋ฉ”์‹œ์ง€ ์ œ๋ชฉ", "Notification Sound": "์•Œ๋ฆผ์Œ", "More info on:": "์ž์„ธํ•œ ์ •๋ณด: {0}", - pushoverDesc1: "๊ธด๊ธ‰ ์šฐ์„  ์ˆœ์œ„ (2)๋Š” ์žฌ์‹œ๋„ ์‚ฌ์ด์— ๊ธฐ๋ณธ์ ์œผ๋กœ 30์ดˆ์˜ ํƒ€์ž„์•„์›ƒ์ด ์žˆ๊ณ , 1์‹œ๊ฐ„ ํ›„์— ๋งŒ๋ฃŒ๋˜์–ด์š”.", + pushoverDesc1: "๊ธด๊ธ‰ ์šฐ์„  ์ˆœ์œ„ (2)๋Š” ์žฌ์‹œ๋„ ์‚ฌ์ด์— ๊ธฐ๋ณธ์ ์œผ๋กœ 30์ดˆ์˜ ํƒ€์ž„์•„์›ƒ์ด ์žˆ๊ณ , 1์‹œ๊ฐ„ ํ›„์— ๋งŒ๋ฃŒ๋ผ์š”.", pushoverDesc2: "๋‹ค๋ฅธ ์žฅ์น˜์— ์•Œ๋ฆผ์„ ๋ณด๋‚ด๋ ค๋ฉด ์žฅ์น˜์นธ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.", "SMS Type": "SMS ์ข…๋ฅ˜", octopushTypePremium: "ํ”„๋ฆฌ๋ฏธ์—„ (๋น ๋ฆ„) - ์•Œ๋ฆผ ๊ธฐ๋Šฅ์— ์ ํ•ฉํ•ด์š”)", - octopushTypeLowCost: "์ €๋ ดํ•œ ์š”๊ธˆ (๋Š๋ฆผ, ๊ฐ€๋” ์ฐจ๋‹จ๋  ์ˆ˜ ์žˆ์–ด์š”)", - "Check octopush prices": "{0}์—์„œ octopush ๊ฐ€๊ฒฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.", + octopushTypeLowCost: "์ €๋ ดํ•œ ์š”๊ธˆ (๋Š๋ฆผ) - ๊ฐ€๋” ์ฐจ๋‹จ๋  ์ˆ˜ ์žˆ์–ด์š”)", + "Check octopush prices": "{0}์—์„œ Octopush ๊ฐ€๊ฒฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.", octopushPhoneNumber: "ํœด๋Œ€์ „ํ™” ๋ฒˆํ˜ธ (intl format, eg : +33612345678) ", - octopushSMSSender: "๋ณด๋‚ด๋Š” ์‚ฌ๋žŒ ์ด๋ฆ„ : 3-11๊ฐœ์˜ ์˜์ˆซ์ž ๋ฐ ์—ฌ๋ฐฑ๊ณต๊ฐ„ (a-z, A-Z, 0-9", + 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}", + appriseInstalled: "Apprise๊ฐ€ ์„ค์น˜๋˜์–ด์žˆ์–ด์š”.", + appriseNotInstalled: "Apprise๊ฐ€ ์„ค์น˜๋˜์–ด์žˆ์ง€ ์•Š์•„์š”. {0}", "Access Token": "์•ก์„ธ์Šค ํ† ํฐ", - "Channel access token": "์ฑ„๋„ ์—‘์„ธ์Šค ํ† ํฐ", + "Channel access token": "์ฑ„๋„ ์•ก์„ธ์Šค ํ† ํฐ", "Line Developers Console": "Line ๊ฐœ๋ฐœ์ž ์ฝ˜์†”", lineDevConsoleTo: "Line ๊ฐœ๋ฐœ์ž ์ฝ˜์†” - {0}", - "Basic Settings": "Basic Settings ๋ฉ”๋‰ด", + "Basic Settings": "๊ธฐ๋ณธ ์„ค์ • ๋ฉ”๋‰ด", "User ID": "์‚ฌ์šฉ์ž ID", "Messaging API": "Messaging API ๋ฉ”๋‰ด", - wayToGetLineChannelToken: "๋จผ์ € {0}์— ์—‘์„ธ์Šคํ•˜๊ณ , ๊ณต๊ธ‰์ž ๋ฐ ์ฑ„๋„ (๋ฉ”์‹œ์ง• API)์„ ๋งŒ๋“  ๋‹ค์Œ, ๊ฐ ๋ฉ”๋‰ด ๋ฐ‘์— ์–ธ๊ธ‰๋œ ๋ฉ”๋‰ด์—์„œ ์ฑ„๋„ ์•ก์„ธ์Šค ํ† ํฐ๊ณผ ์‚ฌ์šฉ์ž ID๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์–ด์š”.", + wayToGetLineChannelToken: "๋จผ์ € {0}์— ์•ก์„ธ์Šคํ•˜๊ณ , ๊ณต๊ธ‰์ž ๋ฐ ์ฑ„๋„ (Messaging API)์„ ๋งŒ๋“  ๋‹ค์Œ, ๊ฐ ๋ฉ”๋‰ด ๋ฐ‘์— ์–ธ๊ธ‰๋œ ๋ฉ”๋‰ด์—์„œ ์ฑ„๋„ ์•ก์„ธ์Šค ํ† ํฐ๊ณผ ์‚ฌ์šฉ์ž ID๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์–ด์š”.", "Icon URL": "์•„์ด์ฝ˜ URL", - aboutIconURL: "\"Icon URL\"์— ์‚ฌ์ง„ ๋งํฌ๋ฅผ ์ž…๋ ฅํ•ด ํ”„๋กœํ•„ ์‚ฌ์ง„์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”. ์•„์ด์ฝ˜ ์ด๋ชจ์ง€๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉด ์ ์šฉ๋˜์ง€ ์•Š์„๊ฑฐ์—์š”.", - aboutMattermostChannelName: "์ฑ„๋„ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๋ฉด ์›นํ›…์ด ๊ฒŒ์‹œํ•  ๊ธฐ๋ณธ ์ฑ„๋„์„ ์žฌ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”. ์ด ์„ค์ •์€ Mattermost ์›นํ›… ์„ค์ •์—์„œ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ด์š”. ์˜ˆ: #๊ธฐํƒ€-์ฑ„๋„", + aboutIconURL: "\"Icon URL\"์— ์‚ฌ์ง„ ๋งํฌ๋ฅผ ์ž…๋ ฅํ•ด ํ”„๋กœํ•„ ์‚ฌ์ง„์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”. ์•„์ด์ฝ˜ ์ด๋ชจ์ง€๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉด ์ ์šฉ๋˜์ง€ ์•Š์„ ๊ฑฐ์˜ˆ์š”.", + aboutMattermostChannelName: "์ฑ„๋„ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๋ฉด Webhook์ด ๊ฒŒ์‹œํ•  ๊ธฐ๋ณธ ์ฑ„๋„์„ ์žฌ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”. ์ด ์„ค์ •์€ Mattermost ์›นํ›… ์„ค์ •์—์„œ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ด์š”. ์˜ˆ: #๊ธฐํƒ€-์ฑ„๋„", matrix: "๋งคํŠธ๋ฆญ์Šค", promosmsTypeEco: "SMS ECO - ์ €๋ ดํ•˜์ง€๋งŒ ๋Š๋ฆฌ๊ณ  ๊ฐ€๋” ๊ณผ๋ถ€ํ•˜์— ๊ฑธ๋ ค์š”. ํด๋ž€๋“œ ์ˆ˜์‹ ์ž๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”. ", - promosmsTypeFlash: "SMS FLASH - ๋ฉ”์‹œ์ง€๊ฐ€ ๋ฐ›๋Š” ์‚ฌ๋žŒ ์žฅ์น˜์— ์ž๋™์œผ๋กœ ํ‘œ์‹œ๋˜์–ด์š”. ํด๋ž€๋“œ ์ˆ˜์‹ ์ž๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”.", + promosmsTypeFlash: "SMS FLASH - ๋ฉ”์‹œ์ง€๊ฐ€ ๋ฐ›๋Š” ์‚ฌ๋žŒ ์žฅ์น˜์— ์ž๋™์œผ๋กœ ํ‘œ์‹œ๋ผ์š”. ํด๋ž€๋“œ ์ˆ˜์‹ ์ž๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”.", promosmsTypeFull: "SMS FULL - SMS ํ”„๋ฆฌ๋ฏธ์—„ ํ‹ฐ์–ด, ๋ณด๋‚ด๋Š” ์‚ฌ๋žŒ ์ด๋ฆ„์„ ๋จผ์ € ๋“ฑ๋กํ•ด์•ผ ํ•ด์š”. ์•Œ๋ฆผ ๊ธฐ๋Šฅ์— ์ ํ•ฉํ•ด์š”.", - promosmsTypeSpeed: "SMS SPEED - ์‹œ์Šคํ…œ์—์„œ ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„์—์š”. ๋งค์šฐ ๋น ๋ฅด๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋น„์šฉ์ด ๋งŽ์ด ๋“ค์–ด์š” (SMS ์ „์ฒด ๊ฐ€๊ฒฉ์˜ ์•ฝ ๋‘ ๋ฐฐ).", + promosmsTypeSpeed: "SMS SPEED - ์‹œ์Šคํ…œ์—์„œ ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„์˜ˆ์š”. ๋งค์šฐ ๋น ๋ฅด๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋น„์šฉ์ด ๋งŽ์ด ๋“ค์–ด์š” (SMS ์ „์ฒด ๊ฐ€๊ฒฉ์˜ ์•ฝ ๋‘ ๋ฐฐ).", promosmsPhoneNumber: "์ „ํ™” ๋ฒˆํ˜ธ (ํด๋ž€๋“œ ์ˆ˜์‹ ์ž๋ผ๋ฉด ์ง€์—ญ๋ฒˆํ˜ธ๋ฅผ ์ ์ง€ ์•Š์•„๋„ ๋ผ์š”.)", - promosmsSMSSender: "SMS ๋ณด๋‚ด๋Š” ์‚ฌ๋žŒ ์ด๋ฆ„ : ๋ฏธ๋ฆฌ ๋“ฑ๋ก๋œ ์ด๋ฆ„ ํ˜น์€ ๊ธฐ๋ณธ๊ฐ’ ์ค‘ ํ•˜๋‚˜์—์š”: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + promosmsSMSSender: "SMS ๋ณด๋‚ด๋Š” ์‚ฌ๋žŒ ์ด๋ฆ„ : ๋ฏธ๋ฆฌ ๋“ฑ๋ก๋œ ์ด๋ฆ„ ํ˜น์€ ๊ธฐ๋ณธ๊ฐ’ ์ค‘ ํ•˜๋‚˜์˜ˆ์š”: InfoSMS, SMS Info, MaxSMS, INFO, SMS", }; diff --git a/src/languages/pl.js b/src/languages/pl.js index f6a32dc67..7202f540b 100644 --- a/src/languages/pl.js +++ b/src/languages/pl.js @@ -10,7 +10,7 @@ export default { 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: "Wstrzymaj", + pauseDashboardHome: "Wstrzymane", deleteMonitorMsg: "Czy na pewno chcesz usunฤ…ฤ‡ ten monitor?", deleteNotificationMsg: "Czy na pewno chcesz usunฤ…ฤ‡ to powiadomienie dla wszystkich monitorรณw?", resoverserverDescription: "Cloudflare jest domyล›lnym serwerem, moลผesz zmieniฤ‡ serwer resolver w kaลผdej chwili.", @@ -43,7 +43,7 @@ export default { Down: "Offline", Pending: "Oczekuje", Unknown: "Nieznane", - Pause: "Wstrzymane", + Pause: "Wstrzymaj", Name: "Nazwa", Status: "Status", DateTime: "Data i godzina", @@ -100,7 +100,7 @@ export default { Logout: "Wyloguj", Leave: "Zostaw", "I understand, please disable": "Rozumiem, proszฤ™ wyล‚ฤ…czyฤ‡", - Confirm: "Potiwerdลบ", + Confirm: "Potwierdลบ", Yes: "Tak", No: "Nie", Username: "Nazwa uลผytkownika", diff --git a/src/languages/zh-CN.js b/src/languages/zh-CN.js index a7f81950a..1028d577e 100644 --- a/src/languages/zh-CN.js +++ b/src/languages/zh-CN.js @@ -198,4 +198,5 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", + "Feishu WebHookUrl": "้ฃžไนฆ WebHook ๅœฐๅ€", };